<?php
defined('TYPO3') || die();

(static function() {
    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'Courses',
        'Course',
        [
            \Medienreaktor\Courses\Controller\CourseController::class => 'list'
        ],
        // non-cacheable actions
        [
//            \Medienreaktor\Courses\Controller\CourseController::class => 'list'
        ]
    );

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'Courses',
        'Coursedetail',
        [
            \Medienreaktor\Courses\Controller\CourseController::class => 'show'
        ],
        // non-cacheable actions
        [
            \Medienreaktor\Courses\Controller\CourseController::class => '',
            \Medienreaktor\Courses\Controller\SubjectController::class => '',
            \Medienreaktor\Courses\Controller\WorkshopController::class => ''
        ]
    );

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'Courses',
        'Coursehighlight',
        [
            \Medienreaktor\Courses\Controller\CourseController::class => 'highlight'
        ],
        // non-cacheable actions
        [
            \Medienreaktor\Courses\Controller\CourseController::class => 'highlight'
        ]
    );

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'Courses',
        'Subjectlist',
        [
            \Medienreaktor\Courses\Controller\SubjectController::class => 'list'
        ],
        // non-cacheable actions
        [
            \Medienreaktor\Courses\Controller\SubjectController::class => 'list'
        ]
    );

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'Courses',
        'Courseslistbytype',
        [
            \Medienreaktor\Courses\Controller\CourseController::class => 'coursetype'
        ],
        // non-cacheable actions
        [
            \Medienreaktor\Courses\Controller\CourseController::class => 'coursetype'
        ]
    );

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'Courses',
        'Courseworkshopform',
        [
            \Medienreaktor\Courses\Controller\CourseController::class => 'courseworkshopform'
        ],
        // non-cacheable actions
        [
            \Medienreaktor\Courses\Controller\CourseController::class => 'courseworkshopform'
        ]
    );

    // wizards
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(
        'mod {
            wizards.newContentElement.wizardItems.plugins {
                elements {
                    course {
                        iconIdentifier = courses-plugin-course
                        title = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_course.name
                        description = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_course.description
                        tt_content_defValues {
                            CType = list
                            list_type = courses_course
                        }
                    }
                    coursedetail {
                        iconIdentifier = courses-plugin-coursedetail
                        title = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_coursedetail.name
                        description = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_coursedetail.description
                        tt_content_defValues {
                            CType = list
                            list_type = courses_coursedetail
                        }
                    }
                    coursehighlight {
                        iconIdentifier = courses-plugin-coursehighlight
                        title = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_coursehighlight.name
                        description = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_coursehighlight.description
                        tt_content_defValues {
                            CType = list
                            list_type = courses_coursehighlight
                        }
                    }
                    subjectlist {
                        iconIdentifier = courses-plugin-subjectlist
                        title = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_subjectlist.name
                        description = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_subjectlist.description
                        tt_content_defValues {
                            CType = list
                            list_type = courses_subjectlist
                        }
                    }
                    courseslistbytype {
                        iconIdentifier = courses-plugin-courseslistbytype
                        title = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_courseslistbytype.name
                        description = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_courseslistbytype.description
                        tt_content_defValues {
                            CType = list
                            list_type = courses_courseslistbytype
                        }
                    }
                    courseworkshopform {
                        iconIdentifier = courses-plugin-courseworkshopform
                        title = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_courseworkshopform.name
                        description = LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_courseworkshopform.description
                        tt_content_defValues {
                            CType = list
                            list_type = courses_courseworkshopform
                        }
                    }
                }
                show = *
            }
       }'
    );

    $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
    $iconRegistry->registerIcon(
        'courses-plugin-course',
        \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
        ['source' => 'EXT:courses/Resources/Public/Icons/user_plugin_course.svg']
    );
    $iconRegistry->registerIcon(
        'courses-plugin-coursedetail',
        \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
        ['source' => 'EXT:courses/Resources/Public/Icons/user_plugin_coursedetail.svg']
    );
    $iconRegistry->registerIcon(
        'courses-plugin-coursehighlight',
        \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
        ['source' => 'EXT:courses/Resources/Public/Icons/user_plugin_coursehighlight.svg']
    );
    $iconRegistry->registerIcon(
        'courses-plugin-subjectlist',
        \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
        ['source' => 'EXT:courses/Resources/Public/Icons/user_plugin_subjectlist.svg']
    );
    $iconRegistry->registerIcon(
        'courses-plugin-courseslistbytype',
        \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
        ['source' => 'EXT:courses/Resources/Public/Icons/user_plugin_courseslistbytype.svg']
    );
    $iconRegistry->registerIcon(
        'courses-plugin-courseworkshopform',
        \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
        ['source' => 'EXT:courses/Resources/Public/Icons/user_plugin_courseworkshopform.svg']
    );
})();
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][\Medienreaktor\Courses\Task\CourseImportTask::class] = array(
    'extension' => 'courses',
    'title' => 'Course Import',
    'description' => 'Imports courses from the ILearn API.',
);

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(trim('
   config.pageTitleProviders {
     own {
       provider = Medienreaktor\Courses\PageTitle\CoursesPageTitleProvider
       before = record
       after = altPageTitle
     }
   }
 '));