[TASK] Extract "taskcenter" and "sys_action" to TER/composer 02/59502/3
authorChristian Kuhn <lolli@schwarzbu.ch>
Sun, 20 Jan 2019 14:03:30 +0000 (15:03 +0100)
committerAnja Leichsenring <aleichsenring@ab-softlab.de>
Sun, 20 Jan 2019 19:07:42 +0000 (20:07 +0100)
This is the last round of planned extension extractions
from the main core repository.

Both the extensions 'taskcenter' and its add-on extension
'sys_action' did not receive much love over the years. They
are rarely used and their approach is clumsy to say the least.

They are both dropped from main core repository with core v10
now. A fresh approach for a cool new dashboard is in the works
already that may eventually find its way into the core later.

The patch removes both extensions with have been released as
'taskcenter' and 'sys_action' to TER and as
'friendsoftypo3/taskcenter' and 'friendsoftypo3/sys_action'
to composer.

Extension 'impexp' registered a task for the taskcenter which
is now within 'taskcenter' directly.

Resolves: #87499
Releases: master
Change-Id: I86e0292f13247bbd1f2060214f4f6d8e2aefe6c0
Reviewed-on: https://review.typo3.org/59502
Tested-by: TYPO3com <noreply@typo3.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
82 files changed:
Build/Gruntfile.js
Build/tsconfig.json
composer.json
composer.lock
typo3/sysext/core/Documentation/Changelog/master/Breaking-87193-DeprecatedFunctionalityRemoved.rst
typo3/sysext/impexp/Classes/Task/ImportExportTask.php [deleted file]
typo3/sysext/impexp/Resources/Private/Language/locallang_csh.xlf
typo3/sysext/impexp/Resources/Public/Images/export.gif [deleted file]
typo3/sysext/impexp/ext_localconf.php
typo3/sysext/install/Classes/Updates/SysActionExtractionUpdate.php [new file with mode: 0644]
typo3/sysext/install/Classes/Updates/TaskcenterExtractionUpdate.php [new file with mode: 0644]
typo3/sysext/install/ext_localconf.php
typo3/sysext/sys_action/.gitattributes [deleted file]
typo3/sysext/sys_action/Classes/ActionList.php [deleted file]
typo3/sysext/sys_action/Classes/ActionTask.php [deleted file]
typo3/sysext/sys_action/Classes/Backend/ToolbarItems/ActionToolbarItem.php [deleted file]
typo3/sysext/sys_action/Configuration/TCA/sys_action.php [deleted file]
typo3/sysext/sys_action/Documentation/.gitignore [deleted file]
typo3/sysext/sys_action/Documentation/Images/CreateBackendUserAction.gif [deleted file]
typo3/sysext/sys_action/Documentation/Images/CreateSqlQuery.gif [deleted file]
typo3/sysext/sys_action/Documentation/Images/RecordListAction.gif [deleted file]
typo3/sysext/sys_action/Documentation/Images/SqlQueryAction.gif [deleted file]
typo3/sysext/sys_action/Documentation/Includes.txt [deleted file]
typo3/sysext/sys_action/Documentation/Index.rst [deleted file]
typo3/sysext/sys_action/Documentation/Introduction/Index.rst [deleted file]
typo3/sysext/sys_action/Documentation/Settings.cfg [deleted file]
typo3/sysext/sys_action/Documentation/Targets.rst [deleted file]
typo3/sysext/sys_action/Documentation/UsersManual/CreateBackendUser/Index.rst [deleted file]
typo3/sysext/sys_action/Documentation/UsersManual/EditRecords/Index.rst [deleted file]
typo3/sysext/sys_action/Documentation/UsersManual/InGeneral/Index.rst [deleted file]
typo3/sysext/sys_action/Documentation/UsersManual/Index.rst [deleted file]
typo3/sysext/sys_action/Documentation/UsersManual/NewRecord/Index.rst [deleted file]
typo3/sysext/sys_action/Documentation/UsersManual/RecordList/Index.rst [deleted file]
typo3/sysext/sys_action/Documentation/UsersManual/SqlQuery/Index.rst [deleted file]
typo3/sysext/sys_action/LICENSE.txt [deleted file]
typo3/sysext/sys_action/Resources/Private/Language/locallang.xlf [deleted file]
typo3/sysext/sys_action/Resources/Private/Language/locallang_csh_sysaction.xlf [deleted file]
typo3/sysext/sys_action/Resources/Private/Language/locallang_tca.xlf [deleted file]
typo3/sysext/sys_action/Resources/Private/Templates/ToolbarItems/DropDown.html [deleted file]
typo3/sysext/sys_action/Resources/Private/Templates/ToolbarItems/ToolbarItem.html [deleted file]
typo3/sysext/sys_action/Resources/Public/Icons/Extension.png [deleted file]
typo3/sysext/sys_action/Resources/Public/Images/x-sys_action.png [deleted file]
typo3/sysext/sys_action/Resources/Public/JavaScript/ActionTask.js [deleted file]
typo3/sysext/sys_action/Tests/Functional/Tca/ActionVisibleFieldsTest.php [deleted file]
typo3/sysext/sys_action/composer.json [deleted file]
typo3/sysext/sys_action/ext_emconf.php [deleted file]
typo3/sysext/sys_action/ext_localconf.php [deleted file]
typo3/sysext/sys_action/ext_tables.php [deleted file]
typo3/sysext/sys_action/ext_tables.sql [deleted file]
typo3/sysext/taskcenter/.gitattributes [deleted file]
typo3/sysext/taskcenter/Classes/Controller/TaskModuleController.php [deleted file]
typo3/sysext/taskcenter/Classes/Controller/TaskStatusController.php [deleted file]
typo3/sysext/taskcenter/Classes/TaskInterface.php [deleted file]
typo3/sysext/taskcenter/Configuration/Backend/AjaxRoutes.php [deleted file]
typo3/sysext/taskcenter/Documentation/.gitignore [deleted file]
typo3/sysext/taskcenter/Documentation/Administration/Index.rst [deleted file]
typo3/sysext/taskcenter/Documentation/DevelopersGuide/CreatingANewTask/Index.rst [deleted file]
typo3/sysext/taskcenter/Documentation/DevelopersGuide/Index.rst [deleted file]
typo3/sysext/taskcenter/Documentation/DevelopersGuide/TaskcenterApi/Index.rst [deleted file]
typo3/sysext/taskcenter/Documentation/Images/ExampleScreenshot.gif [deleted file]
typo3/sysext/taskcenter/Documentation/Includes.txt [deleted file]
typo3/sysext/taskcenter/Documentation/Index.rst [deleted file]
typo3/sysext/taskcenter/Documentation/Introduction/Index.rst [deleted file]
typo3/sysext/taskcenter/Documentation/Settings.cfg [deleted file]
typo3/sysext/taskcenter/Documentation/Targets.rst [deleted file]
typo3/sysext/taskcenter/LICENSE.txt [deleted file]
typo3/sysext/taskcenter/Resources/Private/Language/locallang.xlf [deleted file]
typo3/sysext/taskcenter/Resources/Private/Language/locallang_mod.xlf [deleted file]
typo3/sysext/taskcenter/Resources/Private/Language/locallang_task.xlf [deleted file]
typo3/sysext/taskcenter/Resources/Private/Partials/Description.html [deleted file]
typo3/sysext/taskcenter/Resources/Private/Partials/UrlInIframe.html [deleted file]
typo3/sysext/taskcenter/Resources/Private/Templates/InformationContent.html [deleted file]
typo3/sysext/taskcenter/Resources/Private/Templates/ListMenu.html [deleted file]
typo3/sysext/taskcenter/Resources/Private/Templates/ModuleContent.html [deleted file]
typo3/sysext/taskcenter/Resources/Public/Icons/Extension.png [deleted file]
typo3/sysext/taskcenter/Resources/Public/Icons/module-taskcenter.svg [deleted file]
typo3/sysext/taskcenter/Resources/Public/Images/list-item-act.gif [deleted file]
typo3/sysext/taskcenter/Resources/Public/Images/list-item.gif [deleted file]
typo3/sysext/taskcenter/Resources/Public/JavaScript/Taskcenter.js [deleted file]
typo3/sysext/taskcenter/composer.json [deleted file]
typo3/sysext/taskcenter/ext_emconf.php [deleted file]
typo3/sysext/taskcenter/ext_tables.php [deleted file]

index 039719a..6fe0bcb 100644 (file)
@@ -353,10 +353,6 @@ module.exports = function (grunt) {
             src: '<%= paths.t3icons %>module/module-setup.svg'
           },
           {
-            dest: '<%= paths.sysext %>taskcenter/Resources/Public/Icons/module-taskcenter.svg',
-            src: '<%= paths.t3icons %>module/module-taskcenter.svg'
-          },
-          {
             dest: '<%= paths.sysext %>tstemplate/Resources/Public/Icons/module-tstemplate.svg',
             src: '<%= paths.t3icons %>module/module-tstemplate.svg'
           },
index fd135cb..546f510 100644 (file)
                 "../typo3/sysext/scheduler/Resources/Public/JavaScript/*",
                 "../typo3/sysext/scheduler/Resources/Private/TypeScript/*"
             ],
-            "TYPO3/CMS/SysAction/*": [
-                "../typo3/sysext/sys_action/Resources/Public/JavaScript/*",
-                "../typo3/sysext/sys_action/Resources/Private/TypeScript/*"
-            ],
             "TYPO3/CMS/T3editor/*": [
                 "../typo3/sysext/t3editor/Resources/Public/JavaScript/*",
                 "../typo3/sysext/t3editor/Resources/Private/TypeScript/*"
             ],
-            "TYPO3/CMS/Taskcenter/*": [
-                "../typo3/sysext/taskcenter/Resources/Public/JavaScript/*",
-                "../typo3/sysext/taskcenter/Resources/Private/TypeScript/*"
-            ],
             "TYPO3/CMS/Tstemplate/*": [
                 "../typo3/sysext/tstemplate/Resources/Public/JavaScript/*",
                 "../typo3/sysext/tstemplate/Resources/Private/TypeScript/*"
index 317b781..938aef1 100644 (file)
                "typo3/cms-scheduler": "self.version",
                "typo3/cms-seo": "self.version",
                "typo3/cms-setup": "self.version",
-               "typo3/cms-sys-action": "self.version",
                "typo3/cms-sys-note": "self.version",
                "typo3/cms-t3editor": "self.version",
-               "typo3/cms-taskcenter": "self.version",
                "typo3/cms-tstemplate": "self.version",
                "typo3/cms-viewpage": "self.version",
                "typo3/cms-workspaces": "self.version"
                        "TYPO3\\CMS\\Scheduler\\": "typo3/sysext/scheduler/Classes/",
                        "TYPO3\\CMS\\Seo\\": "typo3/sysext/seo/Classes/",
                        "TYPO3\\CMS\\Setup\\": "typo3/sysext/setup/Classes/",
-                       "TYPO3\\CMS\\SysAction\\": "typo3/sysext/sys_action/Classes/",
                        "TYPO3\\CMS\\SysNote\\": "typo3/sysext/sys_note/Classes/",
                        "TYPO3\\CMS\\T3editor\\": "typo3/sysext/t3editor/Classes/",
-                       "TYPO3\\CMS\\Taskcenter\\": "typo3/sysext/taskcenter/Classes/",
                        "TYPO3\\CMS\\Tstemplate\\": "typo3/sysext/tstemplate/Classes/",
                        "TYPO3\\CMS\\Viewpage\\": "typo3/sysext/viewpage/Classes/",
                        "TYPO3\\CMS\\Workspaces\\": "typo3/sysext/workspaces/Classes/"
                        "TYPO3\\CMS\\Scheduler\\Tests\\": "typo3/sysext/scheduler/Tests/",
                        "TYPO3\\CMS\\Seo\\Tests\\": "typo3/sysext/seo/Tests/",
                        "TYPO3\\CMS\\Setup\\Tests\\": "typo3/sysext/setup/Tests/",
-                       "TYPO3\\CMS\\SysAction\\Tests\\": "typo3/sysext/sys_action/Tests/",
                        "TYPO3\\CMS\\SysNote\\Tests\\": "typo3/sysext/sys_note/Tests/",
                        "TYPO3\\CMS\\Workspaces\\Tests\\": "typo3/sysext/workspaces/Tests/",
                        "TYPO3\\CMS\\Recycler\\Tests\\": "typo3/sysext/recycler/Tests/",
index 1796733..1ae7dc3 100644 (file)
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "407b2339e5d199266689061eda7ac8a4",
+    "content-hash": "0ccb2f77366c2d29e6984218945f7a69",
     "packages": [
         {
             "name": "cogpowered/finediff",
index fd240b9..9778938 100644 (file)
@@ -1361,6 +1361,7 @@ The following features have been removed:
   users need their password being manually recovered or reset.
 * Extension :php:`rsaauth` has been dropped from core
 * Extension :php:`feedit` has been dropped from core
+* The extension :php:`taskcenter` and its add-on extension :php:`sys_action` have been dropped from core
 * Translation :php:`locallang` references :php:`EXT:lang` to removed extension "lang" do not work any longer
 
 
diff --git a/typo3/sysext/impexp/Classes/Task/ImportExportTask.php b/typo3/sysext/impexp/Classes/Task/ImportExportTask.php
deleted file mode 100644 (file)
index 141503f..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-<?php
-namespace TYPO3\CMS\Impexp\Task;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Core\Database\ConnectionPool;
-use TYPO3\CMS\Core\Messaging\FlashMessage;
-use TYPO3\CMS\Core\Messaging\FlashMessageService;
-use TYPO3\CMS\Core\Resource\Exception;
-use TYPO3\CMS\Core\Type\Bitmask\Permission;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Taskcenter\Controller\TaskModuleController;
-use TYPO3\CMS\Taskcenter\TaskInterface;
-
-/**
- * This class provides a textarea to save personal notes
- * @internal this is a internal TYPO3 Backend implementation and solely used for EXT:impexp and not part of TYPO3's Core API.
- */
-class ImportExportTask implements TaskInterface
-{
-    /**
-     * Back-reference to the calling reports module
-     *
-     * @var TaskModuleController $taskObject
-     */
-    protected $taskObject;
-
-    /**
-     * URL to task module
-     *
-     * @var string
-     */
-    protected $moduleUrl;
-
-    /**
-     * Constructor
-     *
-     * @param TaskModuleController $taskObject
-     */
-    public function __construct(TaskModuleController $taskObject)
-    {
-        /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-        $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-        $this->moduleUrl = (string)$uriBuilder->buildUriFromRoute('user_task');
-        $this->taskObject = $taskObject;
-        $this->getLanguageService()->includeLLFile('EXT:impexp/Resources/Private/Language/locallang_csh.xlf');
-    }
-
-    /**
-     * This method renders the report
-     *
-     * @return string The status report as HTML
-     */
-    public function getTask()
-    {
-        return $this->main();
-    }
-
-    /**
-     * Render an optional additional information for the 1st view in taskcenter.
-     * Empty for this task
-     *
-     * @return string Overview as HTML
-     */
-    public function getOverview()
-    {
-        return '';
-    }
-
-    /**
-     * Main Task center module
-     *
-     * @return string HTML content.
-     */
-    public function main()
-    {
-        $content = '';
-        $id = (int)GeneralUtility::_GP('display');
-        /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-        $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-        // If a preset is found, it is rendered using an iframe
-        if ($id > 0) {
-            $url = (string)$uriBuilder->buildUriFromRoute(
-                'xMOD_tximpexp',
-                [
-                    'tx_impexp[action]' => 'export',
-                    'preset[load]' => 1,
-                    'preset[select]' => $id,
-                    'returnUrl' => $this->moduleUrl
-                ]
-            );
-            \TYPO3\CMS\Core\Utility\HttpUtility::redirect($url);
-        } else {
-            // Header
-            $lang = $this->getLanguageService();
-            $content .= $this->taskObject->description($lang->getLL('.alttitle'), $lang->getLL('.description'));
-            $clause = $this->getBackendUser()->getPagePermsClause(Permission::PAGE_SHOW);
-            $usernames = BackendUtility::getUserNames();
-            // Create preset links:
-            $presets = $this->getPresets();
-            // If any presets found
-            if (is_array($presets) && !empty($presets)) {
-                $lines = [];
-                foreach ($presets as $key => $presetCfg) {
-                    $configuration = unserialize($presetCfg['preset_data'], ['allowed_classes' => false]);
-                    $title = strlen($presetCfg['title']) ? $presetCfg['title'] : '[' . $presetCfg['uid'] . ']';
-                    $icon = 'EXT:impexp/Resources/Public/Images/export.gif';
-                    $description = [];
-                    // Is public?
-                    if ($presetCfg['public']) {
-                        $description[] = $lang->getLL('task.public') . ': ' . $lang->sL('LLL:EXT:core/Resources/Private/Language/locallang_common.xlf:yes');
-                    }
-                    // Owner
-                    $description[] = $lang->getLL('task.owner') . ': '
-                        . (
-                            $presetCfg['user_uid'] === $GLOBALS['BE_USER']->user['uid']
-                            ? $lang->getLL('task.own')
-                            : '[' . htmlspecialchars($usernames[$presetCfg['user_uid']]['username']) . ']'
-                        );
-                    // Page & path
-                    if ($configuration['pagetree']['id']) {
-                        $description[] = $lang->getLL('task.page') . ': ' . $configuration['pagetree']['id'];
-                        $description[] = $lang->getLL('task.path') . ': ' . htmlspecialchars(
-                            BackendUtility::getRecordPath($configuration['pagetree']['id'], $clause, 20)
-                        );
-                    } else {
-                        $description[] = $lang->getLL('single-record');
-                    }
-                    // Meta information
-                    if ($configuration['meta']['title'] || $configuration['meta']['description'] || $configuration['meta']['notes']) {
-                        $metaInformation = '';
-                        if ($configuration['meta']['title']) {
-                            $metaInformation .= '<strong>' . htmlspecialchars($configuration['meta']['title']) . '</strong><br />';
-                        }
-                        if ($configuration['meta']['description']) {
-                            $metaInformation .= htmlspecialchars($configuration['meta']['description']);
-                        }
-                        if ($configuration['meta']['notes']) {
-                            $metaInformation .= '<br /><br />
-                                                                                               <strong>' . $lang->getLL('notes') . ': </strong>
-                                                                                               <em>' . htmlspecialchars($configuration['meta']['notes']) . '</em>';
-                        }
-                        $description[] = '<br />' . $metaInformation;
-                    }
-                    // Collect all preset information
-                    $lines[$key] = [
-                        'uid' => 'impexp' . $key,
-                        'icon' => $icon,
-                        'title' => $title,
-                        'descriptionHtml' => implode('<br />', $description),
-                        'link' => (string)$uriBuilder->buildUriFromRoute('user_task') . '&SET[function]=impexp.TYPO3\\CMS\\Impexp\\Task\\ImportExportTask&display=' . $presetCfg['uid']
-                    ];
-                }
-                // Render preset list
-                $content .= $this->taskObject->renderListMenu($lines);
-            } else {
-                // No presets found
-                $flashMessage = GeneralUtility::makeInstance(
-                    FlashMessage::class,
-                    $lang->getLL('no-presets'),
-                    $lang->getLL('.alttitle'),
-                    FlashMessage::NOTICE
-                );
-                /** @var \TYPO3\CMS\Core\Messaging\FlashMessageService $flashMessageService */
-                $flashMessageService = GeneralUtility::makeInstance(FlashMessageService::class);
-                /** @var \TYPO3\CMS\Core\Messaging\FlashMessageQueue $defaultFlashMessageQueue */
-                $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
-                $defaultFlashMessageQueue->enqueue($flashMessage);
-            }
-        }
-        return $content;
-    }
-
-    /**
-     * Select presets for this user
-     *
-     * @return array|bool Array of preset records
-     */
-    protected function getPresets()
-    {
-        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
-            ->getQueryBuilderForTable('tx_impexp_presets');
-
-        return $queryBuilder->select('*')
-            ->from('tx_impexp_presets')
-            ->where(
-                $queryBuilder->expr()->orX(
-                    $queryBuilder->expr()->gt(
-                        'public',
-                        $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
-                    ),
-                    $queryBuilder->expr()->eq(
-                        'user_uid',
-                        $queryBuilder->createNamedParameter($this->getBackendUser()->user['uid'], \PDO::PARAM_INT)
-                    )
-                )
-            )
-            ->orderBy('item_uid', 'DESC')
-            ->addOrderBy('title')
-            ->execute()
-            ->fetchAll();
-    }
-
-    /**
-     * Returns a \TYPO3\CMS\Core\Resource\Folder object for saving export files
-     * to the server and is also used for uploading import files.
-     *
-     * @throws \InvalidArgumentException
-     * @return \TYPO3\CMS\Core\Resource\Folder|null
-     */
-    protected function getDefaultImportExportFolder()
-    {
-        $defaultImportExportFolder = null;
-
-        $defaultTemporaryFolder = $this->getBackendUser()->getDefaultUploadTemporaryFolder();
-        if ($defaultTemporaryFolder !== null) {
-            $importExportFolderName = 'importexport';
-            $createFolder = !$defaultTemporaryFolder->hasFolder($importExportFolderName);
-            if ($createFolder === true) {
-                try {
-                    $defaultImportExportFolder = $defaultTemporaryFolder->createFolder($importExportFolderName);
-                } catch (Exception $folderAccessException) {
-                }
-            } else {
-                $defaultImportExportFolder = $defaultTemporaryFolder->getSubfolder($importExportFolderName);
-            }
-        }
-
-        return $defaultImportExportFolder;
-    }
-
-    /**
-     * @return \TYPO3\CMS\Core\Authentication\BackendUserAuthentication
-     */
-    protected function getBackendUser()
-    {
-        return $GLOBALS['BE_USER'];
-    }
-
-    /**
-     * @return mixed
-     */
-    protected function getLanguageService()
-    {
-        return $GLOBALS['LANG'];
-    }
-}
index 5188d9f..63b1c50 100644 (file)
@@ -216,8 +216,7 @@ To save a preset, simply enter a title in the title box and press "Save". This w
 To delete old presets, simply select it and press "Delete".
 
 The checkbox "Public" can be set if you want to share your preset with other users of the system. Otherwise they are personal to you.
-
-In the Taskcenter you can see a list of your presets and jump directly to them.</source>
+</source>
                        </trans-unit>
                        <trans-unit id="_presets.image" xml:space="preserve">
                                <source>EXT:impexp/Resources/Public/Images/cshimages/impexp_misc1.png,
@@ -225,8 +224,7 @@ EXT:impexp/Resources/Public/Images/cshimages/impexp_misc2.png</source>
                                <note from="developer">This string contains an internal text, which must not be changed. Just copy the original text into the translation field. For more information have a look at the Tutorial.</note>
                        </trans-unit>
                        <trans-unit id="presets.image_descr" xml:space="preserve">
-                               <source>The preset selector in the export interface.
-Presets from the task center.</source>
+                               <source>The preset selector in the export interface.</source>
                        </trans-unit>
                        <trans-unit id="metadata.alttitle">
                                <source>Meta data setting</source>
@@ -371,39 +369,6 @@ Before importing make sure you change any editable soft references that are show
                        <trans-unit id="upload.details">
                                <source>Notice that there are usually limits set by the server (PHP) to the size of uploaded files. If hit, upload fails and an error message is shown.</source>
                        </trans-unit>
-                       <trans-unit id="task.title">
-                               <source>Preset title</source>
-                       </trans-unit>
-                       <trans-unit id="task.icon">
-                               <source>Icon</source>
-                       </trans-unit>
-                       <trans-unit id="task.public">
-                               <source>Public</source>
-                       </trans-unit>
-                       <trans-unit id="task.owner">
-                               <source>Owner</source>
-                       </trans-unit>
-                       <trans-unit id="task.page">
-                               <source>Page</source>
-                       </trans-unit>
-                       <trans-unit id="task.path">
-                               <source>Path</source>
-                       </trans-unit>
-                       <trans-unit id="task.meta">
-                               <source>Meta data</source>
-                       </trans-unit>
-                       <trans-unit id="task.own">
-                               <source>Own</source>
-                       </trans-unit>
-                       <trans-unit id="notes">
-                               <source>Notes</source>
-                       </trans-unit>
-                       <trans-unit id="single-record">
-                               <source>Single record</source>
-                       </trans-unit>
-                       <trans-unit id="no-presets">
-                               <source>No presets found!</source>
-                       </trans-unit>
                </body>
        </file>
 </xliff>
diff --git a/typo3/sysext/impexp/Resources/Public/Images/export.gif b/typo3/sysext/impexp/Resources/Public/Images/export.gif
deleted file mode 100644 (file)
index 8320d3b..0000000
Binary files a/typo3/sysext/impexp/Resources/Public/Images/export.gif and /dev/null differ
index 2447648..d26be3b 100644 (file)
@@ -2,9 +2,4 @@
 defined('TYPO3_MODE') or die();
 
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/backend.php']['constructPostProcess'][] = \TYPO3\CMS\Impexp\Hook\BackendControllerHook::class . '->addJavaScript';
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['taskcenter']['impexp'][\TYPO3\CMS\Impexp\Task\ImportExportTask::class] = [
-    'title' => 'LLL:EXT:impexp/Resources/Private/Language/locallang_csh.xlf:.alttitle',
-    'description' => 'LLL:EXT:impexp/Resources/Private/Language/locallang_csh.xlf:.description',
-    'icon' => 'EXT:impexp/Resources/Public/Images/export.gif'
-];
 $GLOBALS['TYPO3_CONF_VARS']['BE']['ContextMenu']['ItemProviders'][1486418735] = \TYPO3\CMS\Impexp\ContextMenu\ItemProvider::class;
diff --git a/typo3/sysext/install/Classes/Updates/SysActionExtractionUpdate.php b/typo3/sysext/install/Classes/Updates/SysActionExtractionUpdate.php
new file mode 100644 (file)
index 0000000..d422c2a
--- /dev/null
@@ -0,0 +1,118 @@
+<?php
+namespace TYPO3\CMS\Install\Updates;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
+
+/**
+ * Installs and downloads EXT:sys_action if requested
+ * @internal This class is only meant to be used within EXT:install and is not part of the TYPO3 Core API.
+ */
+class SysActionExtractionUpdate extends AbstractDownloadExtensionUpdate
+{
+    /**
+     * @var \TYPO3\CMS\Install\Updates\ExtensionModel
+     */
+    protected $extension;
+
+    /**
+     * @var \TYPO3\CMS\Install\Updates\Confirmation
+     */
+    protected $confirmation;
+
+    public function __construct()
+    {
+        $this->extension = new ExtensionModel(
+            'sys_action',
+            'Deprecated sys_action extension',
+            '10.0.0',
+            'friendsoftypo3/sys-action',
+            'Allows running configured admin tasks in the taskcenter'
+        );
+
+        $this->confirmation = new Confirmation(
+            'Are you sure?',
+            'This extension has not been used very often and is only useful if properly configured and in combination with the "taskcenter" extension. ' . $this->extension->getDescription(),
+            false
+        );
+    }
+
+    /**
+     * Return a confirmation message instance
+     *
+     * @return \TYPO3\CMS\Install\Updates\Confirmation
+     */
+    public function getConfirmation(): Confirmation
+    {
+        return $this->confirmation;
+    }
+
+    /**
+     * Return the identifier for this wizard
+     * This should be the same string as used in the ext_localconf class registration
+     *
+     * @return string
+     */
+    public function getIdentifier(): string
+    {
+        return 'sysActionExtension';
+    }
+
+    /**
+     * Return the speaking name of this wizard
+     *
+     * @return string
+     */
+    public function getTitle(): string
+    {
+        return 'Install extension "sys_action" from TER';
+    }
+
+    /**
+     * Return the description for this wizard
+     *
+     * @return string
+     */
+    public function getDescription(): string
+    {
+        return 'The extension "sys_action" adds functionality to make certain Backend admin tasks'
+            . ' available for non-admin users. Extension "taskcenter" must be loaded to use this upgrade wizard.';
+    }
+
+    /**
+     * Is an update necessary?
+     * Is used to determine whether a wizard needs to be run.
+     *
+     * @return bool
+     */
+    public function updateNecessary(): bool
+    {
+        return !ExtensionManagementUtility::isLoaded('sys_action');
+    }
+
+    /**
+     * Returns an array of class names of Prerequisite classes
+     * This way a wizard can define dependencies like "database up-to-date" or
+     * "reference index updated"
+     *
+     * @return string[]
+     */
+    public function getPrerequisites(): array
+    {
+        return [
+            DatabaseUpdatedPrerequisite::class
+        ];
+    }
+}
diff --git a/typo3/sysext/install/Classes/Updates/TaskcenterExtractionUpdate.php b/typo3/sysext/install/Classes/Updates/TaskcenterExtractionUpdate.php
new file mode 100644 (file)
index 0000000..f0281f6
--- /dev/null
@@ -0,0 +1,118 @@
+<?php
+namespace TYPO3\CMS\Install\Updates;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
+
+/**
+ * Installs and downloads EXT:taskcenter if requested
+ * @internal This class is only meant to be used within EXT:install and is not part of the TYPO3 Core API.
+ */
+class TaskcenterExtractionUpdate extends AbstractDownloadExtensionUpdate
+{
+    /**
+     * @var \TYPO3\CMS\Install\Updates\ExtensionModel
+     */
+    protected $extension;
+
+    /**
+     * @var \TYPO3\CMS\Install\Updates\Confirmation
+     */
+    protected $confirmation;
+
+    public function __construct()
+    {
+        $this->extension = new ExtensionModel(
+          'taskcenter',
+            'Deprecated taskcenter extension',
+            '10.0.0',
+            'friendsoftypo3/taskcenter',
+            'Contains a framework to show and execute registered tasks.'
+        );
+
+        $this->confirmation = new Confirmation(
+            'Are you sure?',
+            'This extension has not been used very often and is only useful together with other extensions like sys_action. ' . $this->extension->getDescription(),
+            false
+        );
+    }
+
+    /**
+     * Return a confirmation message instance
+     *
+     * @return \TYPO3\CMS\Install\Updates\Confirmation
+     */
+    public function getConfirmation(): Confirmation
+    {
+        return $this->confirmation;
+    }
+
+    /**
+     * Return the identifier for this wizard
+     * This should be the same string as used in the ext_localconf class registration
+     *
+     * @return string
+     */
+    public function getIdentifier(): string
+    {
+        return 'taskcenterExtension';
+    }
+
+    /**
+     * Return the speaking name of this wizard
+     *
+     * @return string
+     */
+    public function getTitle(): string
+    {
+        return 'Install extension "taskcenter" from TER';
+    }
+
+    /**
+     * Return the description for this wizard
+     *
+     * @return string
+     */
+    public function getDescription(): string
+    {
+        return 'The extension "taskcenter" adds a view for Backend users to run configured tasks.'
+               . ' It is only useful if properly configured.';
+    }
+
+    /**
+     * Is an update necessary?
+     * Is used to determine whether a wizard needs to be run.
+     *
+     * @return bool
+     */
+    public function updateNecessary(): bool
+    {
+        return !ExtensionManagementUtility::isLoaded('taskcenter');
+    }
+
+    /**
+     * Returns an array of class names of Prerequisite classes
+     * This way a wizard can define dependencies like "database up-to-date" or
+     * "reference index updated"
+     *
+     * @return string[]
+     */
+    public function getPrerequisites(): array
+    {
+        return [
+            DatabaseUpdatedPrerequisite::class
+        ];
+    }
+}
index ab4700f..22df86e 100644 (file)
@@ -42,6 +42,10 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['rsaauthExten
     = \TYPO3\CMS\Install\Updates\RsaauthExtractionUpdate::class;
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['feeditExtension']
     = \TYPO3\CMS\Install\Updates\FeeditExtractionUpdate::class;
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['taskcenterExtension']
+    = \TYPO3\CMS\Install\Updates\TaskcenterExtractionUpdate::class;
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['sysActionExtension']
+    = \TYPO3\CMS\Install\Updates\SysActionExtractionUpdate::class;
 
 $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
 $icons = [
diff --git a/typo3/sysext/sys_action/.gitattributes b/typo3/sysext/sys_action/.gitattributes
deleted file mode 100644 (file)
index 434f281..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/.gitattributes export-ignore
-/Resources/Private/TypeScript/ export-ignore
-/Tests/ export-ignore
diff --git a/typo3/sysext/sys_action/Classes/ActionList.php b/typo3/sysext/sys_action/Classes/ActionList.php
deleted file mode 100644 (file)
index f17b77b..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-namespace TYPO3\CMS\SysAction;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-/**
- * Class for the list rendering of Web>Task Center module
- * @internal
- */
-class ActionList extends \TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList
-{
-    /**
-     * Creates the URL to this script, including all relevant GPvars
-     * Fixed GPvars are id, table, imagemode, returnUrl, search_field, search_levels and showLimit
-     * The GPvars "sortField" and "sortRev" are also included UNLESS they are found in the $excludeList variable.
-     *
-     * @param string $alternativeId Alternative id value. Enter blank string for the current id ($this->id)
-     * @param string $table Table name to display. Enter "-1" for the current table.
-     * @param string $excludeList Comma separated list of fields NOT to include ("sortField" or "sortRev")
-     * @return string
-     */
-    public function listURL($alternativeId = '', $table = '-1', $excludeList = '')
-    {
-        $urlParameters = [];
-        if ((string)$alternativeId !== '') {
-            $urlParameters['id'] = $alternativeId;
-        } else {
-            $urlParameters['id'] = $this->id;
-        }
-        if ($table === '-1') {
-            $urlParameters['table'] = $this->table;
-        } else {
-            $urlParameters['table'] = $table;
-        }
-        if ($this->thumbs) {
-            $urlParameters['imagemode'] = $this->thumbs;
-        }
-        if ($this->returnUrl) {
-            $urlParameters['returnUrl'] = $this->returnUrl;
-        }
-        if ($this->searchString) {
-            $urlParameters['search_field'] = $this->searchString;
-        }
-        if ($this->searchLevels) {
-            $urlParameters['search_levels'] = $this->searchLevels;
-        }
-        if ($this->showLimit) {
-            $urlParameters['showLimit'] = $this->showLimit;
-        }
-        if ($this->firstElementNumber) {
-            $urlParameters['pointer'] = $this->firstElementNumber;
-        }
-        if ((!$excludeList || !\TYPO3\CMS\Core\Utility\GeneralUtility::inList($excludeList, 'sortField')) && $this->sortField) {
-            $urlParameters['sortField'] = $this->sortField;
-        }
-        if ((!$excludeList || !\TYPO3\CMS\Core\Utility\GeneralUtility::inList($excludeList, 'sortRev')) && $this->sortRev) {
-            $urlParameters['sortRev'] = $this->sortRev;
-        }
-        if (\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('SET')) {
-            $urlParameters['SET'] = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('SET');
-        }
-        if (\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('show')) {
-            $urlParameters['show'] = (int)\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('show');
-        }
-        /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-        $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-        return (string)$uriBuilder->buildUriFromRoute('user_task', $urlParameters);
-    }
-}
diff --git a/typo3/sysext/sys_action/Classes/ActionTask.php b/typo3/sysext/sys_action/Classes/ActionTask.php
deleted file mode 100644 (file)
index 692cd95..0000000
+++ /dev/null
@@ -1,1057 +0,0 @@
-<?php
-namespace TYPO3\CMS\SysAction;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use Doctrine\DBAL\DBALException;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Core\Database\Connection;
-use TYPO3\CMS\Core\Database\ConnectionPool;
-use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
-use TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction;
-use TYPO3\CMS\Core\Database\Query\Restriction\RootLevelRestriction;
-use TYPO3\CMS\Core\Imaging\Icon;
-use TYPO3\CMS\Core\Imaging\IconFactory;
-use TYPO3\CMS\Core\Messaging\FlashMessage;
-use TYPO3\CMS\Core\Messaging\FlashMessageService;
-use TYPO3\CMS\Core\Page\PageRenderer;
-use TYPO3\CMS\Core\Type\Bitmask\Permission;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Core\Utility\HttpUtility;
-
-/**
- * This class provides a task for the taskcenter
- * @internal
- */
-class ActionTask implements \TYPO3\CMS\Taskcenter\TaskInterface
-{
-    /**
-     * @var \TYPO3\CMS\Taskcenter\Controller\TaskModuleController
-     */
-    protected $taskObject;
-
-    /**
-     * All hook objects get registered here for later use
-     *
-     * @var array
-     */
-    protected $hookObjects = [];
-
-    /**
-     * URL to task module
-     *
-     * @var string
-     */
-    protected $moduleUrl;
-
-    /**
-     * @var IconFactory
-     */
-    protected $iconFactory;
-
-    /**
-     * Constructor
-     * @param \TYPO3\CMS\Taskcenter\Controller\TaskModuleController $taskObject
-     */
-    public function __construct(\TYPO3\CMS\Taskcenter\Controller\TaskModuleController $taskObject)
-    {
-        $this->iconFactory = GeneralUtility::makeInstance(IconFactory::class);
-        /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-        $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-        $this->moduleUrl = (string)$uriBuilder->buildUriFromRoute('user_task');
-        $this->taskObject = $taskObject;
-        $this->getLanguageService()->includeLLFile('EXT:sys_action/Resources/Private/Language/locallang.xlf');
-        foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['sys_action']['tx_sysaction_task'] ?? [] as $className) {
-            $this->hookObjects[] = GeneralUtility::makeInstance($className);
-        }
-    }
-
-    /**
-     * This method renders the task
-     *
-     * @return string The task as HTML
-     */
-    public function getTask()
-    {
-        $content = '';
-        $show = (int)GeneralUtility::_GP('show');
-        foreach ($this->hookObjects as $hookObject) {
-            if (method_exists($hookObject, 'getTask')) {
-                $show = $hookObject->getTask($show, $this);
-            }
-        }
-        // If no task selected, render the menu
-        if ($show == 0) {
-            $content .= $this->taskObject->description($this->getLanguageService()->getLL('sys_action'), $this->getLanguageService()->getLL('description'));
-            $content .= $this->renderActionList();
-        } else {
-            $record = BackendUtility::getRecord('sys_action', $show);
-            // If the action is not found
-            if (empty($record)) {
-                $this->addMessage(
-                    $this->getLanguageService()->getLL('action_error-not-found'),
-                    $this->getLanguageService()->getLL('action_error'),
-                    FlashMessage::ERROR
-                );
-            } else {
-                // Render the task
-                $content .= $this->taskObject->description($record['title'], $record['description']);
-                // Output depends on the type
-                switch ($record['type']) {
-                    case 1:
-                        $pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
-                        $pageRenderer->loadRequireJsModule('TYPO3/CMS/SysAction/ActionTask');
-                        $content .= $this->viewNewBackendUser($record);
-                        break;
-                    case 2:
-                        $content .= $this->viewSqlQuery($record);
-                        break;
-                    case 3:
-                        $content .= $this->viewRecordList($record);
-                        break;
-                    case 4:
-                        $content .= $this->viewEditRecord($record);
-                        break;
-                    case 5:
-                        $content .= $this->viewNewRecord($record);
-                        break;
-                    default:
-                        $this->addMessage(
-                            $this->getLanguageService()->getLL('action_noType'),
-                            $this->getLanguageService()->getLL('action_error'),
-                            FlashMessage::ERROR
-                        );
-                        $content .= $this->renderFlashMessages();
-                }
-            }
-        }
-        return $content;
-    }
-
-    /**
-     * General overview over the task in the taskcenter menu
-     *
-     * @return string Overview as HTML
-     */
-    public function getOverview()
-    {
-        $content = '<p>' . htmlspecialchars($this->getLanguageService()->getLL('description')) . '</p>';
-        // Get the actions
-        $actionList = $this->getActions();
-        if (!empty($actionList)) {
-            $items = '';
-            // Render a single action menu item
-            foreach ($actionList as $action) {
-                $active = GeneralUtility::_GP('show') === $action['uid'] ? 'active' : '';
-                $items .= '<a class="list-group-item ' . $active . '" href="' . $action['link'] . '" title="' . htmlspecialchars($action['description']) . '">' . htmlspecialchars($action['title']) . '</a>';
-            }
-            $content .= '<div class="list-group">' . $items . '</div>';
-        }
-        return $content;
-    }
-
-    /**
-     * Get all actions of an user. Admins can see any action, all others only those
-     * which are allowed in sys_action record itself.
-     *
-     * @return array Array holding every needed information of a sys_action
-     */
-    protected function getActions()
-    {
-        $backendUser = $this->getBackendUser();
-        $actionList = [];
-
-        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_action');
-        $queryBuilder->select('sys_action.*')
-            ->from('sys_action');
-
-        if (!empty($GLOBALS['TCA']['sys_action']['ctrl']['sortby'])) {
-            $queryBuilder->orderBy('sys_action.' . $GLOBALS['TCA']['sys_action']['ctrl']['sortby']);
-        }
-
-        $queryBuilder->getRestrictions()
-            ->removeAll()
-            ->add(GeneralUtility::makeInstance(RootLevelRestriction::class, ['sys_action']));
-
-        // Editors can only see the actions which are assigned to a usergroup they belong to
-        if (!$backendUser->isAdmin()) {
-            $groupList = $backendUser->groupList ?: '0';
-
-            $queryBuilder->getRestrictions()
-                ->add(GeneralUtility::makeInstance(HiddenRestriction::class));
-
-            $queryBuilder
-                ->join(
-                    'sys_action',
-                    'sys_action_asgr_mm',
-                    'sys_action_asgr_mm',
-                    $queryBuilder->expr()->eq(
-                        'sys_action_asgr_mm.uid_local',
-                        $queryBuilder->quoteIdentifier('sys_action.uid')
-                    )
-                )
-                ->join(
-                    'sys_action_asgr_mm',
-                    'be_groups',
-                    'be_groups',
-                    $queryBuilder->expr()->eq(
-                        'sys_action_asgr_mm.uid_foreign',
-                        $queryBuilder->quoteIdentifier('be_groups.uid')
-                    )
-                )
-                ->where(
-                    $queryBuilder->expr()->in(
-                        'be_groups.uid',
-                        $queryBuilder->createNamedParameter(
-                            GeneralUtility::intExplode(',', $groupList, true),
-                            Connection::PARAM_INT_ARRAY
-                        )
-                    )
-                )
-                ->groupBy('sys_action.uid');
-        }
-        /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-        $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-        $queryResult = $queryBuilder->execute();
-        while ($actionRow = $queryResult->fetch()) {
-            $editActionLink = '';
-
-            // Admins are allowed to edit sys_action records
-            if ($this->getBackendUser()->isAdmin()) {
-                $uidEditArgument = 'edit[sys_action][' . (int)$actionRow['uid'] . ']';
-
-                $link = (string)$uriBuilder->buildUriFromRoute(
-                    'record_edit',
-                    [
-                        $uidEditArgument => 'edit',
-                        'returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')
-                    ]
-                );
-
-                $title = $this->getLanguageService()->getLL('edit-sys_action');
-                $icon = $this->iconFactory->getIcon('actions-open', Icon::SIZE_SMALL)->render();
-                $editActionLink = '<a class="btn btn-default btn-sm" href="' . htmlspecialchars($link) . '" title="' . htmlspecialchars($title) . '">';
-                $editActionLink .= $icon . ' ' . htmlspecialchars($title) . '</a>';
-            }
-
-            $actionList[] = [
-                'uid' => 'actiontask' . $actionRow['uid'],
-                'title' => $actionRow['title'],
-                'description' => $actionRow['description'],
-                'descriptionHtml' => (
-                    $actionRow['description']
-                        ? '<p>' . nl2br(htmlspecialchars($actionRow['description'])) . '</p>'
-                        : ''
-                    ) . $editActionLink,
-                'link' => $this->moduleUrl
-                    . '&SET[function]=sys_action.'
-                    . self::class
-                    . '&show='
-                    . (int)$actionRow['uid']
-            ];
-        }
-
-        return $actionList;
-    }
-
-    /**
-     * Render the menu of sys_actions
-     *
-     * @return string List of sys_actions as HTML
-     */
-    protected function renderActionList()
-    {
-        $content = '';
-        // Get the sys_action records
-        $actionList = $this->getActions();
-        // If any actions are found for the current users
-        if (!empty($actionList)) {
-            $content .= $this->taskObject->renderListMenu($actionList);
-        } else {
-            $this->addMessage(
-                $this->getLanguageService()->getLL('action_not-found-description'),
-                $this->getLanguageService()->getLL('action_not-found'),
-                FlashMessage::INFO
-            );
-        }
-        // Admin users can create a new action
-        if ($this->getBackendUser()->isAdmin()) {
-            /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-            $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-            $link = (string)$uriBuilder->buildUriFromRoute(
-                'record_edit',
-                [
-                    'edit[sys_action][0]' => 'new',
-                    'returnUrl' => $this->moduleUrl
-                ]
-            );
-
-            $title = $this->getLanguageService()->getLL('new-sys_action');
-            $content .= '<p>' .
-                '<a class="btn btn-default" href="' . htmlspecialchars($link) . '" title="' . htmlspecialchars($title) . '">' .
-                $this->iconFactory->getIcon('actions-add', Icon::SIZE_SMALL)->render() . ' ' . htmlspecialchars($title) .
-                '</a></p>';
-        }
-        return $content;
-    }
-
-    /**
-     * Action to create a new BE user
-     *
-     * @param array $record sys_action record
-     * @return string form to create a new user
-     */
-    protected function viewNewBackendUser($record)
-    {
-        $content = '';
-        $beRec = BackendUtility::getRecord('be_users', (int)$record['t1_copy_of_user']);
-        // A record is need which is used as copy for the new user
-        if (!is_array($beRec)) {
-            $this->addMessage(
-                $this->getLanguageService()->getLL('action_notReady'),
-                $this->getLanguageService()->getLL('action_error'),
-                FlashMessage::ERROR
-            );
-            $content .= $this->renderFlashMessages();
-            return $content;
-        }
-        $vars = GeneralUtility::_POST('data');
-        $key = 'NEW';
-        if ($vars['sent'] == 1) {
-            $errors = [];
-            // Basic error checks
-            if (!empty($vars['email']) && !GeneralUtility::validEmail($vars['email'])) {
-                $errors[] = $this->getLanguageService()->getLL('error-wrong-email');
-            }
-            if (empty($vars['username'])) {
-                $errors[] = $this->getLanguageService()->getLL('error-username-empty');
-            }
-            if ($vars['key'] === 'NEW' && empty($vars['password'])) {
-                $errors[] = $this->getLanguageService()->getLL('error-password-empty');
-            }
-            if ($vars['key'] !== 'NEW' && !$this->isCreatedByUser($vars['key'], $record)) {
-                $errors[] = $this->getLanguageService()->getLL('error-wrong-user');
-            }
-            foreach ($this->hookObjects as $hookObject) {
-                if (method_exists($hookObject, 'viewNewBackendUser_Error')) {
-                    $errors = $hookObject->viewNewBackendUser_Error($vars, $errors, $this);
-                }
-            }
-            // Show errors if there are any
-            if (!empty($errors)) {
-                $this->addMessage(
-                    implode(LF, $errors),
-                    $this->getLanguageService()->getLL('action_error'),
-                    FlashMessage::ERROR
-                );
-            } else {
-                // Save user
-                $key = $this->saveNewBackendUser($record, $vars);
-                // Success message
-                $message = $vars['key'] === 'NEW'
-                    ? $this->getLanguageService()->getLL('success-user-created')
-                    : $this->getLanguageService()->getLL('success-user-updated');
-                $this->addMessage(
-                    $message,
-                    $this->getLanguageService()->getLL('success')
-                );
-            }
-            $content .= $this->renderFlashMessages();
-        }
-        // Load BE user to edit
-        if ((int)GeneralUtility::_GP('be_users_uid') > 0) {
-            $tmpUserId = (int)GeneralUtility::_GP('be_users_uid');
-            // Check if the selected user is created by the current user
-            $rawRecord = $this->isCreatedByUser($tmpUserId, $record);
-            if ($rawRecord) {
-                // Delete user
-                if (GeneralUtility::_GP('delete') == 1) {
-                    $this->deleteUser($tmpUserId, $record['uid']);
-                }
-                $key = $tmpUserId;
-                $vars = $rawRecord;
-            }
-        }
-        $content .= '<form action="" class="panel panel-default" method="post" enctype="multipart/form-data">
-                        <fieldset class="form-section">
-                            <h4 class="form-section-headline">' . htmlspecialchars($this->getLanguageService()->getLL('action_t1_legend_generalFields')) . '</h4>
-                            <div class="form-group">
-                                <label for="field_disable">' . htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.disable')) . '</label>
-                                <input type="checkbox" id="field_disable" name="data[disable]" value="1" class="checkbox" ' . ($vars['disable'] == 1 ? ' checked="checked" ' : '') . ' />
-                            </div>
-                            <div class="form-group">
-                                <label for="field_realname">' . htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.name')) . '</label>
-                                <input type="text" id="field_realname" class="form-control" name="data[realName]" value="' . htmlspecialchars($vars['realName']) . '" />
-                            </div>
-                            <div class="form-group">
-                                <label for="field_username">' . htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:be_users.username')) . '</label>
-                                <input type="text" id="field_username" class="form-control" name="data[username]" value="' . htmlspecialchars($vars['username']) . '" />
-                            </div>
-                            <div class="form-group">
-                                <label for="field_password">' . htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:be_users.password')) . '</label>
-                                <input type="password" id="field_password" class="form-control" name="data[password]" value="" />
-                            </div>
-                            <div class="form-group">
-                                <label for="field_email">' . htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.email')) . '</label>
-                                <input type="text" id="field_email" class="form-control" name="data[email]" value="' . htmlspecialchars($vars['email']) . '" />
-                            </div>
-                        </fieldset>
-                        <fieldset class="form-section">
-                            <h4 class="form-section-headline">' . htmlspecialchars($this->getLanguageService()->getLL('action_t1_legend_configuration')) . '</h4>
-                            <div class="form-group">
-                                <label for="field_usergroup">' . htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:be_users.usergroup')) . '</label>
-                                <select id="field_usergroup" class="form-control" name="data[usergroup][]" multiple="multiple">
-                                    ' . $this->getUsergroups($record, $vars) . '
-                                </select>
-                            </div>
-                            <div class="form-group">
-                                <input type="hidden" name="data[key]" value="' . $key . '" />
-                                <input type="hidden" name="data[sent]" value="1" />
-                                <input class="btn btn-default" type="submit" value="' . htmlspecialchars($this->getLanguageService()->getLL($key === 'NEW' ? 'action_Create' : 'action_Update')) . '" />
-                            </div>
-                        </fieldset>
-                    </form>';
-        $content .= $this->getCreatedUsers($record, $key);
-        return $content;
-    }
-
-    /**
-     * Delete a BE user and redirect to the action by its id
-     *
-     * @param int $userId Id of the BE user
-     * @param int $actionId Id of the action
-     */
-    protected function deleteUser($userId, $actionId)
-    {
-        GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('be_users')->update(
-            'be_users',
-            ['deleted' => 1, 'tstamp' => (int)$GLOBALS['ACCESS_TIME']],
-            ['uid' => (int)$userId]
-        );
-
-        // redirect to the original task
-        HttpUtility::redirect($this->moduleUrl . '&show=' . (int)$actionId);
-    }
-
-    /**
-     * Check if a BE user is created by the current user
-     *
-     * @param int $id Id of the BE user
-     * @param array $action sys_action record.
-     * @return mixed The record of the BE user if found, otherwise FALSE
-     */
-    protected function isCreatedByUser($id, $action)
-    {
-        $record = BackendUtility::getRecord('be_users', $id, '*', ' AND cruser_id=' . $this->getBackendUser()->user['uid'] . ' AND createdByAction=' . $action['uid']);
-        if (is_array($record)) {
-            return $record;
-        }
-        return false;
-    }
-
-    /**
-     * Render all users who are created by the current BE user including a link to edit the record
-     *
-     * @param array $action sys_action record.
-     * @param int $selectedUser Id of a selected user
-     * @return string html list of users
-     */
-    protected function getCreatedUsers($action, $selectedUser)
-    {
-        $content = '';
-        $userList = [];
-
-        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
-            ->getQueryBuilderForTable('be_users');
-
-        $queryBuilder->getRestrictions()
-            ->removeAll()
-            ->add(GeneralUtility::makeInstance(DeletedRestriction::class));
-
-        $res = $queryBuilder
-            ->select('*')
-            ->from('be_users')
-            ->where(
-                $queryBuilder->expr()->eq(
-                    'cruser_id',
-                    $queryBuilder->createNamedParameter($this->getBackendUser()->user['uid'], \PDO::PARAM_INT)
-                ),
-                $queryBuilder->expr()->eq(
-                    'createdByAction',
-                    $queryBuilder->createNamedParameter($action['uid'], \PDO::PARAM_INT)
-                )
-            )
-            ->orderBy('username')
-            ->execute();
-
-        // Render the user records
-        while ($row = $res->fetch()) {
-            $icon = '<span title="' . htmlspecialchars('uid=' . $row['uid']) . '">' . $this->iconFactory->getIconForRecord('be_users', $row, Icon::SIZE_SMALL)->render() . '</span>';
-            $line = $icon . $this->action_linkUserName($row['username'], $row['realName'], $action['uid'], $row['uid']);
-            // Selected user
-            if ($row['uid'] == $selectedUser) {
-                $line = '<strong>' . $line . '</strong>';
-            }
-            $userList[] = '<li class="list-group-item">' . $line . '</li>';
-        }
-
-        // If any records found
-        if (!empty($userList)) {
-            $content .= '<div class="panel panel-default">';
-            $content .= '<div class="panel-heading">';
-            $content .= '<h3 class="panel-title">' . htmlspecialchars($this->getLanguageService()->getLL('action_t1_listOfUsers')) . '</h3>';
-            $content .= '</div>';
-            $content .= '<ul class="list-group">' . implode($userList) . '</ul>';
-            $content .= '</div>';
-        }
-        return $content;
-    }
-
-    /**
-     * Create a link to edit a user
-     *
-     * @param string $username Username
-     * @param string $realName Real name of the user
-     * @param int $sysActionUid Id of the sys_action record
-     * @param int $userId Id of the user
-     * @return string html link
-     */
-    protected function action_linkUserName($username, $realName, $sysActionUid, $userId)
-    {
-        if (!empty($realName)) {
-            $username .= ' (' . $realName . ')';
-        }
-        // Link to update the user record
-        $href = $this->moduleUrl . '&SET[function]=sys_action.TYPO3\\CMS\\SysAction\\ActionTask&show=' . (int)$sysActionUid . '&be_users_uid=' . (int)$userId;
-        $link = '<a href="' . htmlspecialchars($href) . '">' . htmlspecialchars($username) . '</a>';
-        // Link to delete the user record
-        $link .= '
-                               <a href="' . htmlspecialchars($href . '&delete=1') . '" class="t3js-confirm-trigger" data-title="' . htmlspecialchars($this->getLanguageService()->getLL('lDelete_warning_title')) . '" data-message="' . htmlspecialchars($this->getLanguageService()->getLL('lDelete_warning')) . '">'
-                    . $this->iconFactory->getIcon('actions-edit-delete', Icon::SIZE_SMALL)->render() .
-                '</a>';
-        return $link;
-    }
-
-    /**
-     * Save/Update a BE user
-     *
-     * @param array $record Current action record
-     * @param array $vars POST vars
-     * @return int Id of the new/updated user
-     */
-    protected function saveNewBackendUser($record, $vars)
-    {
-        // Check if the usergroup is allowed
-        $vars['usergroup'] = $this->fixUserGroup($vars['usergroup'], $record);
-        $key = $vars['key'];
-        $vars['password'] = trim($vars['password']);
-        // Check if md5 is used as password encryption
-        if ($vars['password'] !== '' && strpos($GLOBALS['TCA']['be_users']['columns']['password']['config']['eval'], 'md5') !== false) {
-            $vars['password'] = md5($vars['password']);
-        }
-        $data = '';
-        $newUserId = 0;
-        if ($key === 'NEW') {
-            $beRec = BackendUtility::getRecord('be_users', (int)$record['t1_copy_of_user']);
-            if (is_array($beRec)) {
-                $data = [];
-                $data['be_users'][$key] = $beRec;
-                $data['be_users'][$key]['username'] = $this->fixUsername($vars['username'], $record['t1_userprefix']);
-                $data['be_users'][$key]['password'] = $vars['password'];
-                $data['be_users'][$key]['realName'] = $vars['realName'];
-                $data['be_users'][$key]['email'] = $vars['email'];
-                $data['be_users'][$key]['disable'] = (int)$vars['disable'];
-                $data['be_users'][$key]['admin'] = 0;
-                $data['be_users'][$key]['usergroup'] = $vars['usergroup'];
-                $data['be_users'][$key]['createdByAction'] = $record['uid'];
-            }
-        } else {
-            // Check ownership
-            $beRec = BackendUtility::getRecord('be_users', (int)$key);
-            if (is_array($beRec) && $beRec['cruser_id'] == $this->getBackendUser()->user['uid']) {
-                $data = [];
-                $data['be_users'][$key]['username'] = $this->fixUsername($vars['username'], $record['t1_userprefix']);
-                if ($vars['password'] !== '') {
-                    $data['be_users'][$key]['password'] = $vars['password'];
-                }
-                $data['be_users'][$key]['realName'] = $vars['realName'];
-                $data['be_users'][$key]['email'] = $vars['email'];
-                $data['be_users'][$key]['disable'] = (int)$vars['disable'];
-                $data['be_users'][$key]['admin'] = 0;
-                $data['be_users'][$key]['usergroup'] = $vars['usergroup'];
-                $newUserId = $key;
-            }
-        }
-        // Save/update user by using DataHandler
-        if (is_array($data)) {
-            $dataHandler = GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\DataHandler::class);
-            $dataHandler->start($data, [], $this->getBackendUser());
-            $dataHandler->admin = 1;
-            $dataHandler->process_datamap();
-            $newUserId = (int)$dataHandler->substNEWwithIDs['NEW'];
-            if ($newUserId) {
-                // Create
-                $this->action_createDir($newUserId);
-            } else {
-                // Update
-                $newUserId = (int)$key;
-            }
-            unset($tce);
-        }
-        return $newUserId;
-    }
-
-    /**
-     * Create the username based on the given username and the prefix
-     *
-     * @param string $username Username
-     * @param string $prefix Prefix
-     * @return string Combined username
-     */
-    protected function fixUsername($username, $prefix)
-    {
-        $prefix = trim($prefix);
-        if ($prefix !== '' && strpos($username, $prefix) === 0) {
-            $username = substr($username, strlen($prefix));
-        }
-        return $prefix . $username;
-    }
-
-    /**
-     * Clean the to be applied usergroups from not allowed ones
-     *
-     * @param array $appliedUsergroups Array of to be applied user groups
-     * @param array $actionRecord The action record
-     * @return array Cleaned array
-     */
-    protected function fixUserGroup($appliedUsergroups, $actionRecord)
-    {
-        if (is_array($appliedUsergroups)) {
-            $cleanGroupList = [];
-            // Create an array from the allowed usergroups using the uid as key
-            $allowedUsergroups = array_flip(explode(',', $actionRecord['t1_allowed_groups']));
-            // Walk through the array and check every uid if it is under the allowed ines
-            foreach ($appliedUsergroups as $group) {
-                if (isset($allowedUsergroups[$group])) {
-                    $cleanGroupList[] = $group;
-                }
-            }
-            $appliedUsergroups = $cleanGroupList;
-        }
-        return $appliedUsergroups;
-    }
-
-    /**
-     * Check if a page is inside the rootline the current user can see
-     *
-     * @param int $pageId Id of the the page to be checked
-     * @return bool Access to the page
-     */
-    protected function checkRootline($pageId)
-    {
-        $access = false;
-        $dbMounts = array_flip(explode(',', trim($this->getBackendUser()->dataLists['webmount_list'], ',')));
-        $rootline = BackendUtility::BEgetRootLine($pageId);
-        foreach ($rootline as $page) {
-            if (isset($dbMounts[$page['uid']]) && !$access) {
-                $access = true;
-            }
-        }
-        return $access;
-    }
-
-    /**
-     * Create a user directory if defined
-     *
-     * @param int $uid Id of the user record
-     */
-    protected function action_createDir($uid)
-    {
-        $path = $this->action_getUserMainDir();
-        if ($path) {
-            GeneralUtility::mkdir($path . $uid);
-            GeneralUtility::mkdir($path . $uid . '/_temp_/');
-        }
-    }
-
-    /**
-     * Get the path to the user home directory which is set in the localconf.php
-     *
-     * @return string Path
-     */
-    protected function action_getUserMainDir()
-    {
-        $path = $GLOBALS['TYPO3_CONF_VARS']['BE']['userHomePath'];
-        // If path is set and a valid directory
-        if ($path && @is_dir($path) && $GLOBALS['TYPO3_CONF_VARS']['BE']['lockRootPath'] && GeneralUtility::isFirstPartOfStr($path, $GLOBALS['TYPO3_CONF_VARS']['BE']['lockRootPath']) && substr($path, -1) === '/') {
-            return $path;
-        }
-    }
-
-    /**
-     * Get all allowed usergroups which can be applied to a user record
-     *
-     * @param array $record sys_action record
-     * @param array $vars Selected be_user record
-     * @return string Rendered user groups
-     */
-    protected function getUsergroups($record, $vars)
-    {
-        $content = '';
-        // Do nothing if no groups are allowed
-        if (empty($record['t1_allowed_groups'])) {
-            return $content;
-        }
-        $content .= '<option value=""></option>';
-        $grList = GeneralUtility::trimExplode(',', $record['t1_allowed_groups'], true);
-        foreach ($grList as $group) {
-            $checkGroup = BackendUtility::getRecord('be_groups', $group);
-            if (is_array($checkGroup)) {
-                $selected = GeneralUtility::inList($vars['usergroup'], $checkGroup['uid']) ? ' selected="selected" ' : '';
-                $content .= '<option ' . $selected . 'value="' . (int)$checkGroup['uid'] . '">' . htmlspecialchars($checkGroup['title']) . '</option>';
-            }
-        }
-        return $content;
-    }
-
-    /**
-     * Action to create a new record
-     *
-     * @param array $record sys_action record
-     */
-    protected function viewNewRecord($record)
-    {
-        /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-        $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-        $link = (string)$uriBuilder->buildUriFromRoute(
-            'record_edit',
-            [
-                'edit[' . $record['t3_tables'] . '][' . (int)$record['t3_listPid'] . ']' => 'new',
-                'returnUrl' => $this->moduleUrl
-            ]
-        );
-        HttpUtility::redirect($link);
-    }
-
-    /**
-     * Action to edit records
-     *
-     * @param array $record sys_action record
-     * @return string list of records
-     */
-    protected function viewEditRecord($record)
-    {
-        $content = '';
-        $actionList = [];
-        $dbAnalysis = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Database\RelationHandler::class);
-        $dbAnalysis->setFetchAllFields(true);
-        $dbAnalysis->start($record['t4_recordsToEdit'], '*');
-        $dbAnalysis->getFromDB();
-        // collect the records
-        foreach ($dbAnalysis->itemArray as $el) {
-            $path = BackendUtility::getRecordPath(
-                $el['id'],
-                $this->getBackendUser()->getPagePermsClause(Permission::PAGE_SHOW),
-                $this->getBackendUser()->uc['titleLen']
-            );
-            $record = BackendUtility::getRecord($el['table'], $dbAnalysis->results[$el['table']][$el['id']]);
-            $title = BackendUtility::getRecordTitle($el['table'], $dbAnalysis->results[$el['table']][$el['id']]);
-            $description = htmlspecialchars($this->getLanguageService()->sL($GLOBALS['TCA'][$el['table']]['ctrl']['title']));
-            // @todo: which information could be needful
-            if (isset($record['crdate'])) {
-                $description .= ' - ' . htmlspecialchars(BackendUtility::dateTimeAge($record['crdate']));
-            }
-            /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-            $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-            $link = (string)$uriBuilder->buildUriFromRoute(
-                'record_edit',
-                [
-                    'edit[' . $el['table'] . '][' . $el['id'] . ']' => 'edit',
-                    'returnUrl' => $this->moduleUrl
-                ]
-            );
-            $actionList[$el['id']] = [
-                'uid' => 'record-' . $el['table'] . '-' . $el['id'],
-                'title' => $title,
-                'description' => BackendUtility::getRecordTitle($el['table'], $dbAnalysis->results[$el['table']][$el['id']]),
-                'descriptionHtml' => $description,
-                'link' => $link,
-                'icon' => '<span title="' . htmlspecialchars($path) . '">' . $this->iconFactory->getIconForRecord($el['table'], $dbAnalysis->results[$el['table']][$el['id']], Icon::SIZE_SMALL)->render() . '</span>'
-            ];
-        }
-        // Render the record list
-        $content .= $this->taskObject->renderListMenu($actionList);
-        return $content;
-    }
-
-    /**
-     * Action to view the result of a SQL query
-     *
-     * @param array $record sys_action record
-     * @return string Result of the query
-     */
-    protected function viewSqlQuery($record)
-    {
-        $content = '';
-        if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('lowlevel')) {
-            $sql_query = unserialize($record['t2_data']);
-            if (!is_array($sql_query) || is_array($sql_query) && stripos(trim($sql_query['qSelect']), 'SELECT') === 0) {
-                $actionContent = '';
-                $type = $sql_query['qC']['search_query_makeQuery'];
-                if ($sql_query['qC']['labels_noprefix'] === 'on') {
-                    $this->taskObject->MOD_SETTINGS['labels_noprefix'] = 'on';
-                }
-                $sqlQuery = $sql_query['qSelect'];
-                $queryIsEmpty = false;
-                if ($sqlQuery) {
-                    try {
-                        $dataRows = GeneralUtility::makeInstance(ConnectionPool::class)
-                            ->getConnectionForTable($sql_query['qC']['queryTable'])
-                            ->executeQuery($sqlQuery)->fetchAll();
-                        // Additional configuration
-                        $this->taskObject->MOD_SETTINGS['search_result_labels'] = $sql_query['qC']['search_result_labels'];
-                        $this->taskObject->MOD_SETTINGS['queryFields'] = $sql_query['qC']['queryFields'];
-
-                        $fullsearch = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Database\QueryView::class, $GLOBALS['SOBE']->MOD_SETTINGS);
-                        $fullsearch->noDownloadB = 1;
-                        $fullsearch->formW = 48;
-                        $cP = $fullsearch->getQueryResultCode($type, $dataRows, $sql_query['qC']['queryTable']);
-                        $actionContent = $cP['content'];
-                        // If the result is rendered as csv or xml, show a download link
-                        if ($type === 'csv' || $type === 'xml') {
-                            $actionContent .= '<a href="' . htmlspecialchars(GeneralUtility::getIndpEnv('REQUEST_URI') . '&download_file=1') . '">'
-                                . '<strong>' . htmlspecialchars($this->getLanguageService()->getLL('action_download_file')) . '</strong></a>';
-                        }
-                    } catch (DBALException $e) {
-                        $actionContent .= $e->getMessage();
-                    }
-                } else {
-                    // Query is empty (not built)
-                    $queryIsEmpty = true;
-                    $this->addMessage(
-                        $this->getLanguageService()->getLL('action_emptyQuery'),
-                        $this->getLanguageService()->getLL('action_error'),
-                        FlashMessage::ERROR
-                    );
-                    $content .= $this->renderFlashMessages();
-                }
-                // Admin users are allowed to see and edit the query
-                if ($this->getBackendUser()->isAdmin()) {
-                    if (!$queryIsEmpty) {
-                        $actionContent .= '<div class="panel panel-default"><div class="panel-body"><pre>' . htmlspecialchars($sql_query['qSelect']) . '</pre></div></div>';
-                    }
-                    /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-                    $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-                    $actionContent .= '<a title="' . htmlspecialchars($this->getLanguageService()->getLL('action_editQuery')) . '" class="btn btn-default" href="'
-                        . htmlspecialchars((string)$uriBuilder->buildUriFromRoute('system_dbint')
-                            . '&id=' . '&SET[function]=search' . '&SET[search]=query'
-                            . '&storeControl[STORE]=-' . $record['uid'] . '&storeControl[LOAD]=1')
-                        . '">'
-                        . $this->iconFactory->getIcon('actions-open', Icon::SIZE_SMALL)->render() . ' '
-                        . $this->getLanguageService()->getLL(($queryIsEmpty ? 'action_createQuery'
-                        : 'action_editQuery')) . '</a>';
-                }
-                $content .= '<h2>' . htmlspecialchars($this->getLanguageService()->getLL('action_t2_result')) . '</h2>' . $actionContent;
-            } else {
-                // Query is not configured
-                $this->addMessage(
-                    $this->getLanguageService()->getLL('action_notReady'),
-                    $this->getLanguageService()->getLL('action_error'),
-                    FlashMessage::ERROR
-                );
-                $content .= $this->renderFlashMessages();
-            }
-        } else {
-            // Required sysext lowlevel is not installed
-            $this->addMessage(
-                $this->getLanguageService()->getLL('action_lowlevelMissing'),
-                $this->getLanguageService()->getLL('action_error'),
-                FlashMessage::ERROR
-            );
-            $content .= $this->renderFlashMessages();
-        }
-        return $content;
-    }
-
-    /**
-     * Action to create a list of records of a specific table and pid
-     *
-     * @param array $record sys_action record
-     * @return string list of records
-     */
-    protected function viewRecordList($record)
-    {
-        $content = '';
-        $this->id = (int)$record['t3_listPid'];
-        $this->table = $record['t3_tables'];
-        if ($this->id == 0) {
-            $this->addMessage(
-                $this->getLanguageService()->getLL('action_notReady'),
-                $this->getLanguageService()->getLL('action_error'),
-                FlashMessage::ERROR
-            );
-            $content .= $this->renderFlashMessages();
-            return $content;
-        }
-        // Loading current page record and checking access:
-        $this->pageinfo = BackendUtility::readPageAccess(
-            $this->id,
-            $this->getBackendUser()->getPagePermsClause(Permission::PAGE_SHOW)
-        );
-        $access = is_array($this->pageinfo);
-        // If there is access to the page, then render the list contents and set up the document template object:
-        if ($access) {
-            // Initialize the dblist object:
-            $dblist = GeneralUtility::makeInstance(\TYPO3\CMS\SysAction\ActionList::class);
-            $dblist->script = GeneralUtility::getIndpEnv('REQUEST_URI');
-            $dblist->calcPerms = $this->getBackendUser()->calcPerms($this->pageinfo);
-            $dblist->thumbs = $this->getBackendUser()->uc['thumbnailsByDefault'];
-            $dblist->allFields = 1;
-            $dblist->showClipboard = 0;
-            $dblist->disableSingleTableView = 1;
-            $dblist->pageRow = $this->pageinfo;
-            $dblist->counter++;
-            $dblist->MOD_MENU = ['bigControlPanel' => '', 'clipBoard' => ''];
-            $dblist->modTSconfig = $this->taskObject->modTSconfig;
-            $dblist->dontShowClipControlPanels = (!$this->taskObject->MOD_SETTINGS['bigControlPanel'] && $dblist->clipObj->current === 'normal' && !$this->modTSconfig['properties']['showClipControlPanelsDespiteOfCMlayers']);
-            // Initialize the listing object, dblist, for rendering the list:
-            $this->pointer = \TYPO3\CMS\Core\Utility\MathUtility::forceIntegerInRange(GeneralUtility::_GP('pointer'), 0, 100000);
-            $dblist->start($this->id, $this->table, $this->pointer);
-            $dblist->setDispFields();
-            // Render the list of tables:
-            $dblist->generateList();
-            /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-            $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-            // Add JavaScript functions to the page:
-            $this->taskObject->getModuleTemplate()->addJavaScriptCode(
-                'ActionTaskInlineJavascript',
-                '
-
-                               function jumpExt(URL,anchor) {
-                                       var anc = anchor?anchor:"";
-                                       window.location.href = URL+(T3_THIS_LOCATION?"&returnUrl="+T3_THIS_LOCATION:"")+anc;
-                                       return false;
-                               }
-                               function jumpSelf(URL) {
-                                       window.location.href = URL+(T3_RETURN_URL?"&returnUrl="+T3_RETURN_URL:"");
-                                       return false;
-                               }
-
-                               function setHighlight(id) {
-                                       top.fsMod.recentIds["web"] = id;
-                                       top.fsMod.navFrameHighlightedID["web"] = top.fsMod.currentBank + "_" + id; // For highlighting
-
-                                       if (top.nav_frame && top.nav_frame.refresh_nav) {
-                                               top.nav_frame.refresh_nav();
-                                       }
-                               }
-
-                               ' . $dblist->CBfunctions() . '
-                               function editRecords(table,idList,addParams,CBflag) {
-                                   var recordEditUrl = ' . GeneralUtility::quoteJSvalue($uriBuilder->buildUriFromRoute('record_edit', ['returnUrl' => GeneralUtility::getIndpEnv('REQUEST_URI')])) . ';
-                                       window.location.href = recordEditUrl + "&edit[" + table + "][" + idList + "]=edit" + addParams;
-                               }
-                               function editList(table,idList) {
-                                       var list="";
-
-                                               // Checking how many is checked, how many is not
-                                       var pointer=0;
-                                       var pos = idList.indexOf(",");
-                                       while (pos!=-1) {
-                                               if (cbValue(table+"|"+idList.substr(pointer,pos-pointer))) {
-                                                       list+=idList.substr(pointer,pos-pointer)+",";
-                                               }
-                                               pointer=pos+1;
-                                               pos = idList.indexOf(",",pointer);
-                                       }
-                                       if (cbValue(table+"|"+idList.substr(pointer))) {
-                                               list+=idList.substr(pointer)+",";
-                                       }
-
-                                       return list ? list : idList;
-                               }
-                               T3_THIS_LOCATION = ' . GeneralUtility::quoteJSvalue(rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI'))) . ';
-
-                               if (top.fsMod) top.fsMod.recentIds["web"] = ' . (int)$this->id . ';
-                       '
-            );
-            // Setting up the context sensitive menu:
-            $this->taskObject->getModuleTemplate()->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/ContextMenu');
-            $this->taskObject->getModuleTemplate()->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/AjaxDataHandler');
-            // Begin to compile the whole page
-            $content .= '<form action="' . htmlspecialchars($dblist->listURL()) . '" method="post" name="dblistForm">' . $dblist->HTMLcode . '<input type="hidden" name="cmd_table" /><input type="hidden" name="cmd" /></form>';
-            // If a listing was produced, create the page footer with search form etc:
-            // Making field select box (when extended view for a single table is enabled):
-            if ($dblist->HTMLcode && $dblist->table) {
-                $content .= $dblist->fieldSelectBox($dblist->table);
-            }
-        } else {
-            // Not enough rights to access the list view or the page
-            $this->addMessage(
-                $this->getLanguageService()->getLL('action_error-access'),
-                $this->getLanguageService()->getLL('action_error'),
-                FlashMessage::ERROR
-            );
-            $content .= $this->renderFlashMessages();
-        }
-        return $content;
-    }
-
-    /**
-     * @param string $message
-     * @param string $title
-     * @param int $severity
-     *
-     * @throws \TYPO3\CMS\Core\Exception
-     */
-    protected function addMessage($message, $title = '', $severity = FlashMessage::OK)
-    {
-        $flashMessage = GeneralUtility::makeInstance(FlashMessage::class, $message, $title, $severity);
-        $flashMessageService = GeneralUtility::makeInstance(FlashMessageService::class);
-        $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
-        $defaultFlashMessageQueue->enqueue($flashMessage);
-    }
-
-    /**
-     * Render all currently enqueued FlashMessages
-     *
-     * @return string
-     */
-    protected function renderFlashMessages()
-    {
-        $flashMessageService = GeneralUtility::makeInstance(FlashMessageService::class);
-        $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
-        return $defaultFlashMessageQueue->renderFlashMessages();
-    }
-
-    /**
-     * Returns LanguageService
-     *
-     * @return \TYPO3\CMS\Core\Localization\LanguageService
-     */
-    protected function getLanguageService()
-    {
-        return $GLOBALS['LANG'];
-    }
-
-    /**
-     * Returns the current BE user.
-     *
-     * @return \TYPO3\CMS\Core\Authentication\BackendUserAuthentication
-     */
-    protected function getBackendUser()
-    {
-        return $GLOBALS['BE_USER'];
-    }
-}
diff --git a/typo3/sysext/sys_action/Classes/Backend/ToolbarItems/ActionToolbarItem.php b/typo3/sysext/sys_action/Classes/Backend/ToolbarItems/ActionToolbarItem.php
deleted file mode 100644 (file)
index ea59c7e..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-<?php
-namespace TYPO3\CMS\SysAction\Backend\ToolbarItems;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface;
-use TYPO3\CMS\Core\Database\Connection;
-use TYPO3\CMS\Core\Database\ConnectionPool;
-use TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction;
-use TYPO3\CMS\Core\Database\Query\Restriction\RootLevelRestriction;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Fluid\View\StandaloneView;
-use TYPO3\CMS\SysAction\ActionTask;
-
-/**
- * Adds action links to the backend's toolbar
- * @internal This is a specific hook implementation and is not considered part of the Public TYPO3 API.
- */
-class ActionToolbarItem implements ToolbarItemInterface
-{
-    /**
-     * @var array
-     */
-    protected $availableActions = [];
-
-    /**
-     * Render toolbar icon via Fluid
-     *
-     * @return string HTML
-     */
-    public function getItem()
-    {
-        return $this->getFluidTemplateObject('ToolbarItem.html')->render();
-    }
-
-    /**
-     * Render drop down
-     *
-     * @return string HTML
-     */
-    public function getDropDown()
-    {
-        $view = $this->getFluidTemplateObject('DropDown.html');
-        $view->assign('actions', $this->availableActions);
-        return $view->render();
-    }
-
-    /**
-     * Stores the entries for the action menu in $this->availableActions
-     */
-    protected function setAvailableActions()
-    {
-        $actionEntries = [];
-        $backendUser = $this->getBackendUser();
-
-        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_action');
-        $queryBuilder->getRestrictions()
-            ->removeAll()
-            ->add(GeneralUtility::makeInstance(HiddenRestriction::class))
-            ->add(GeneralUtility::makeInstance(RootLevelRestriction::class, [
-                'sys_action'
-            ]));
-
-        $queryBuilder
-            ->select('sys_action.*')
-            ->from('sys_action');
-
-        if (!empty($GLOBALS['TCA']['sys_action']['ctrl']['sortby'])) {
-            $queryBuilder->orderBy('sys_action.' . $GLOBALS['TCA']['sys_action']['ctrl']['sortby']);
-        }
-
-        if (!$backendUser->isAdmin()) {
-            $groupList = $backendUser->groupList ?: '0';
-
-            $queryBuilder
-                ->join(
-                    'sys_action',
-                    'sys_action_asgr_mm',
-                    'sys_action_asgr_mm',
-                    $queryBuilder->expr()->eq(
-                        'sys_action_asgr_mm.uid_local',
-                        $queryBuilder->quoteIdentifier('sys_action.uid')
-                    )
-                )
-                ->join(
-                    'sys_action_asgr_mm',
-                    'be_groups',
-                    'be_groups',
-                    $queryBuilder->expr()->eq(
-                        'sys_action_asgr_mm.uid_foreign',
-                        $queryBuilder->quoteIdentifier('be_groups.uid')
-                    )
-                )
-                ->where(
-                    $queryBuilder->expr()->in(
-                        'be_groups.uid',
-                        $queryBuilder->createNamedParameter(
-                            GeneralUtility::intExplode(',', $groupList, true),
-                            Connection::PARAM_INT_ARRAY
-                        )
-                    )
-                )
-                ->groupBy('sys_action.uid');
-        }
-
-        /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-        $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-        $result = $queryBuilder->execute();
-        while ($actionRow = $result->fetch()) {
-            $actionRow['link'] = sprintf(
-                '%s&SET[mode]=tasks&SET[function]=sys_action.%s&show=%u',
-                (string)$uriBuilder->buildUriFromRoute('user_task'),
-                ActionTask::class, // @todo: class name string is hand over as url parameter?!
-                $actionRow['uid']
-            );
-            $actionEntries[] = $actionRow;
-        }
-
-        $this->availableActions = $actionEntries;
-    }
-
-    /**
-     * This toolbar needs no additional attributes
-     *
-     * @return array
-     */
-    public function getAdditionalAttributes()
-    {
-        return [];
-    }
-
-    /**
-     * This item has a drop down
-     *
-     * @return bool
-     */
-    public function hasDropDown()
-    {
-        return true;
-    }
-
-    /**
-     * This toolbar is rendered if there are action entries, no further user restriction
-     *
-     * @return bool
-     */
-    public function checkAccess()
-    {
-        $this->setAvailableActions();
-        return !empty($this->availableActions);
-    }
-
-    /**
-     * Position relative to others
-     *
-     * @return int
-     */
-    public function getIndex()
-    {
-        return 35;
-    }
-
-    /**
-     * Returns the current BE user.
-     *
-     * @return \TYPO3\CMS\Core\Authentication\BackendUserAuthentication
-     */
-    protected function getBackendUser()
-    {
-        return $GLOBALS['BE_USER'];
-    }
-
-    /**
-     * Returns a new standalone view, shorthand function
-     *
-     * @param string $filename Which templateFile should be used.
-     * @return StandaloneView
-     */
-    protected function getFluidTemplateObject(string $filename): StandaloneView
-    {
-        $view = GeneralUtility::makeInstance(StandaloneView::class);
-        $view->setLayoutRootPaths(['EXT:sys_action/Resources/Private/Layouts']);
-        $view->setPartialRootPaths([
-            'EXT:backend/Resources/Private/Partials/ToolbarItems',
-            'EXT:sys_action/Resources/Private/Partials'
-        ]);
-        $view->setTemplateRootPaths(['EXT:sys_action/Resources/Private/Templates/ToolbarItems']);
-        $view->setTemplate($filename);
-
-        $view->getRequest()->setControllerExtensionName('SysAction');
-        return $view;
-    }
-}
diff --git a/typo3/sysext/sys_action/Configuration/TCA/sys_action.php b/typo3/sysext/sys_action/Configuration/TCA/sys_action.php
deleted file mode 100644 (file)
index 984a66d..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-<?php
-return [
-    'ctrl' => [
-        'label' => 'title',
-        'descriptionColumn' => 'description',
-        'tstamp' => 'tstamp',
-        'sortby' => 'sorting',
-        'prependAtCopy' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.prependAtCopy',
-        'title' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action',
-        'crdate' => 'crdate',
-        'cruser_id' => 'cruser_id',
-        'adminOnly' => true,
-        'rootLevel' => -1,
-        'setToDefaultOnCopy' => 'assign_to_groups',
-        'enablecolumns' => [
-            'disabled' => 'hidden'
-        ],
-        'typeicon_classes' => [
-            'default' => 'mimetypes-x-sys_action'
-        ],
-        'type' => 'type',
-        'searchFields' => 'title,description'
-    ],
-    'interface' => [
-        'showRecordFieldList' => 'hidden,title,type,description,assign_to_groups'
-    ],
-    'columns' => [
-        'title' => [
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.title',
-            'config' => [
-                'type' => 'input',
-                'size' => 25,
-                'max' => 255,
-                'eval' => 'trim,required'
-            ]
-        ],
-        'description' => [
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.description',
-            'config' => [
-                'type' => 'text',
-                'rows' => 10,
-                'cols' => 48
-            ]
-        ],
-        'hidden' => [
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.enabled',
-            'config' => [
-                'type' => 'check',
-                'renderType' => 'checkboxToggle',
-                'items' => [
-                    [
-                        0 => '',
-                        1 => '',
-                        'invertStateDisplay' => true
-                    ]
-                ],
-            ]
-        ],
-        'type' => [
-            'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.type',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'items' => [
-                    ['', '0'],
-                    ['LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.type.1', '1'],
-                    ['LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.type.2', '2'],
-                    ['LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.type.3', '3'],
-                    ['LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.type.4', '4'],
-                    ['LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.type.5', '5']
-                ]
-            ]
-        ],
-        'assign_to_groups' => [
-            'label' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.assign_to_groups',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectMultipleSideBySide',
-                'foreign_table' => 'be_groups',
-                'foreign_table_where' => 'ORDER BY be_groups.title',
-                'MM' => 'sys_action_asgr_mm',
-                'size' => 10,
-                'minitems' => 0,
-                'maxitems' => 200,
-                'autoSizeMax' => 10
-            ]
-        ],
-        't1_userprefix' => [
-            'label' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.t1_userprefix',
-            'config' => [
-                'type' => 'input',
-                'size' => 25,
-                'max' => 10,
-                'eval' => 'trim'
-            ]
-        ],
-        't1_allowed_groups' => [
-            'label' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.t1_allowed_groups',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectMultipleSideBySide',
-                'foreign_table' => 'be_groups',
-                'foreign_table_where' => 'ORDER BY be_groups.title',
-                'size' => 10,
-                'maxitems' => 20,
-                'autoSizeMax' => 10
-            ]
-        ],
-        't1_create_user_dir' => [
-            'exclude' => 1,
-            'label' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.t1_create_user_dir',
-            'config' => [
-                'type' => 'check',
-                'renderType' => 'checkboxToggle',
-                'items' => [
-                    [
-                        0 => '',
-                        1 => '',
-                    ]
-                ],
-            ]
-        ],
-        't1_copy_of_user' => [
-            'label' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.t1_copy_of_user',
-            'config' => [
-                'type' => 'group',
-                'internal_type' => 'db',
-                'allowed' => 'be_users',
-                'size' => 1,
-                'maxitems' => 1,
-                'minitems' => 1,
-            ]
-        ],
-        't3_listPid' => [
-            'label' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.t3_listPid',
-            'config' => [
-                'type' => 'group',
-                'internal_type' => 'db',
-                'allowed' => 'pages',
-                'size' => 1,
-                'maxitems' => 1,
-                'minitems' => 1,
-            ]
-        ],
-        't3_tables' => [
-            'label' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.t3_tables',
-            'config' => [
-                'type' => 'select',
-                'renderType' => 'selectSingle',
-                'special' => 'tables',
-                'items' => [
-                    ['', '']
-                ]
-            ]
-        ],
-        't4_recordsToEdit' => [
-            'label' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.t4_recordsToEdit',
-            'config' => [
-                'type' => 'group',
-                'internal_type' => 'db',
-                'allowed' => '*',
-                'prepend_tname' => true,
-                'size' => 5,
-                'maxitems' => 50,
-                'minitems' => 1,
-            ]
-        ]
-    ],
-    'types' => [
-        '0' => ['showitem' => '
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-                type,title,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-                hidden,assign_to_groups,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-                description,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-        '],
-        '1' => ['showitem' => '
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-                type,title,t1_userprefix,t1_copy_of_user,t1_allowed_groups,t1_create_user_dir,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-                hidden,assign_to_groups,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-                description,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-        '],
-        '2' => ['showitem' => '
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-                type,title,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-                hidden,assign_to_groups,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-                description,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-        '],
-        '3' => ['showitem' => '
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-                type,title,t3_listPid,t3_tables,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-                hidden,assign_to_groups,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-                description,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-        '],
-        '4' => ['showitem' => '
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-                type,title,t4_recordsToEdit,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-                hidden,assign_to_groups,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-                description,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-        '],
-        '5' => ['showitem' => '
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
-                type,title,t3_listPid;LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.new_record.pid,
-                t3_tables;LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action.new_record.tablename,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
-                hidden,assign_to_groups,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
-                description,
-            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
-        ']
-    ]
-];
diff --git a/typo3/sysext/sys_action/Documentation/.gitignore b/typo3/sysext/sys_action/Documentation/.gitignore
deleted file mode 100644 (file)
index 6cd159f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# this is file .gitignore
-
-# ignore everything in this directory
-_make/*
-
-# but do not ignore this file
-!_not_versioned/.gitignore
diff --git a/typo3/sysext/sys_action/Documentation/Images/CreateBackendUserAction.gif b/typo3/sysext/sys_action/Documentation/Images/CreateBackendUserAction.gif
deleted file mode 100644 (file)
index 14f2912..0000000
Binary files a/typo3/sysext/sys_action/Documentation/Images/CreateBackendUserAction.gif and /dev/null differ
diff --git a/typo3/sysext/sys_action/Documentation/Images/CreateSqlQuery.gif b/typo3/sysext/sys_action/Documentation/Images/CreateSqlQuery.gif
deleted file mode 100644 (file)
index 03b5df2..0000000
Binary files a/typo3/sysext/sys_action/Documentation/Images/CreateSqlQuery.gif and /dev/null differ
diff --git a/typo3/sysext/sys_action/Documentation/Images/RecordListAction.gif b/typo3/sysext/sys_action/Documentation/Images/RecordListAction.gif
deleted file mode 100644 (file)
index 0c2589e..0000000
Binary files a/typo3/sysext/sys_action/Documentation/Images/RecordListAction.gif and /dev/null differ
diff --git a/typo3/sysext/sys_action/Documentation/Images/SqlQueryAction.gif b/typo3/sysext/sys_action/Documentation/Images/SqlQueryAction.gif
deleted file mode 100644 (file)
index d18ab02..0000000
Binary files a/typo3/sysext/sys_action/Documentation/Images/SqlQueryAction.gif and /dev/null differ
diff --git a/typo3/sysext/sys_action/Documentation/Includes.txt b/typo3/sysext/sys_action/Documentation/Includes.txt
deleted file mode 100644 (file)
index 6f6d15a..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. This is 'Includes.txt'. It is included at the very top of each and
-   every ReST source file in this documentation project (= manual).
-
-
-.. ==================================================
-.. DEFINE SOME TEXTROLES
-.. --------------------------------------------------
-
-.. role::   typoscript(code)
-
-.. role::   ts(typoscript)
-   :class:  typoscript
-
-.. role::   php(code)
-
-.. highlight:: php
diff --git a/typo3/sysext/sys_action/Documentation/Index.rst b/typo3/sysext/sys_action/Documentation/Index.rst
deleted file mode 100644 (file)
index d8bffaf..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: Includes.txt
-
-
-.. _start:
-
-==============
-System Actions
-==============
-
-:Extension key:
-      sys_actions
-
-:Version:
-      |release|
-
-:Language:
-      en
-
-:Description:
-      System-wide actions for the TYPO3 Backend.
-
-:Keywords:
-      system actions
-
-:Copyright:
-      2000-2019
-
-:Author:
-      TYPO3 CMS Core Development Team
-
-:License:
-      Open Content License available from `www.opencontent.org/opl.shtml
-      <http://www.opencontent.org/opl.shtml>`_
-
-:Rendered:
-      |today|
-
-The content of this document is related to TYPO3,
-
-a GNU/GPL CMS/Framework available from `www.typo3.org
-<http://www.typo3.org/>`_
-
-
-**Table of Contents**
-
-.. toctree::
-   :maxdepth: 5
-   :titlesonly:
-   :glob:
-
-   Introduction/Index
-   UsersManual/Index
-   Targets
-
diff --git a/typo3/sysext/sys_action/Documentation/Introduction/Index.rst b/typo3/sysext/sys_action/Documentation/Introduction/Index.rst
deleted file mode 100644 (file)
index f067312..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../Includes.txt
-
-
-
-.. _introduction:
-
-Introduction
-------------
-
-
-.. _what-does-it-do:
-
-What does it do?
-^^^^^^^^^^^^^^^^
-
-Sys\_actions extends the Taskcenter and provides various actions which
-make the life of editors easier. These types of actions exist:
-
-- **Create Backend User:** Using this type a normal editor can create
-  and edit backend users using a given user as template.
-
-- **SQL query:** Show the result of special queries.
-
-- **Record list:** Show a record list
-
-- **Edit records:** Simple way to edit common records
-
-- **New record:** Render links to create records
-
-
-.. _screenshots:
-
-Screenshots
-^^^^^^^^^^^
-
-.. figure:: ../Images/RecordListAction.gif
-   :alt: Example screenshot for task center
-
-   A typical view of the Task Center with system actions: with an action for rendering a record list
-
diff --git a/typo3/sysext/sys_action/Documentation/Settings.cfg b/typo3/sysext/sys_action/Documentation/Settings.cfg
deleted file mode 100644 (file)
index 01c6e91..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-[general]
-
-project     = Task Center, Actions
-version     = latest (9-dev)
-release     = latest (9-dev)
-t3author    = Kasper Skaarhoj
-copyright   = 1997-2019
-
-description = This is the documentation of TYPO3's system
-      extension 'sys_action'. Actions are 'programmed' admin
-      tasks which can be performed by selected regular users
-      from the Task Center. An action can be the creation of
-      a backend user, execution of a fixed SQL query and
-      the similar.
-
-[html_theme_options]
-
-# Add 'Edit me on Github' button
-github_branch             = master
-github_repository         = TYPO3/TYPO3.CMS
-path_to_documentation_dir = typo3/sysext/sys_action/Documentation
-
-# show as related links
-project_issues       = https://forge.typo3.org/projects/typo3cms-core/issues
-project_repository   = https://git.typo3.org/Packages/TYPO3.CMS.git
diff --git a/typo3/sysext/sys_action/Documentation/Targets.rst b/typo3/sysext/sys_action/Documentation/Targets.rst
deleted file mode 100644 (file)
index f8ba588..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: Includes.txt
-
-.. _index-labels-for-crossreferencing:
-
-Index: Labels for Crossreferencing
-==================================
-
-.. ref-targets-list::
diff --git a/typo3/sysext/sys_action/Documentation/UsersManual/CreateBackendUser/Index.rst b/typo3/sysext/sys_action/Documentation/UsersManual/CreateBackendUser/Index.rst
deleted file mode 100644 (file)
index 6a52179..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../../Includes.txt
-
-
-.. _create-backend-user:
-
-Create Backend User
-^^^^^^^^^^^^^^^^^^^
-
-A normal editor is not allowed to create or edit backend user records.
-By using this action type any assigned backend user can create, update
-and delete backend users. The functionality is limited by defining a
-specific user as template record.
-
-.. figure:: ../../Images/CreateBackendUserAction.gif
-   :alt: Create Backend User action
-
-   Using the action to create a backend user
-
-Every setting of this template record is copied to a new user except
-the fields shown in the screenshot above. An editor is also only
-allowed to edit and delete users who have been created by the same
-user.
-
diff --git a/typo3/sysext/sys_action/Documentation/UsersManual/EditRecords/Index.rst b/typo3/sysext/sys_action/Documentation/UsersManual/EditRecords/Index.rst
deleted file mode 100644 (file)
index a33e311..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../../Includes.txt
-
-
-
-.. _edit-records:
-
-Edit records
-^^^^^^^^^^^^
-
-Records of any table from any place can be edited from one central
-place. This action type can be used to make the life of editors a lot
-easier because no page tree is needed to find those records.
-
diff --git a/typo3/sysext/sys_action/Documentation/UsersManual/InGeneral/Index.rst b/typo3/sysext/sys_action/Documentation/UsersManual/InGeneral/Index.rst
deleted file mode 100644 (file)
index 0f12d0f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../../Includes.txt
-
-
-
-.. _in-general:
-
-In general
-^^^^^^^^^^
-
-Every action record has at least the following fields:
-
-- **Type:** Type of the action. See the following chapters for further
-  details.
-
-- **Title:** The title is shown in the action menu at the left side
-  inside the Taskcenter.
-
-- **Description:** The description is shown at the top of the action's
-  content.
-
-- **Assign action to groups:** Every action can be assigned to Backend
-  usergroups.
-
diff --git a/typo3/sysext/sys_action/Documentation/UsersManual/Index.rst b/typo3/sysext/sys_action/Documentation/UsersManual/Index.rst
deleted file mode 100644 (file)
index 4f4a9e5..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../Includes.txt
-
-
-
-.. _users-manual:
-
-Users manual
-------------
-
-After installing the extension the actions need to be created. The
-actions can either be created on the root page or by using the link
-"Create a new action" inside the list view in the Taskcenter.
-
-.. note::
-
-   Actions can only be created by an administrator!
-
-
-.. toctree::
-   :maxdepth: 5
-   :titlesonly:
-   :glob:
-
-   InGeneral/Index
-   CreateBackendUser/Index
-   SqlQuery/Index
-   RecordList/Index
-   EditRecords/Index
-   NewRecord/Index
-
diff --git a/typo3/sysext/sys_action/Documentation/UsersManual/NewRecord/Index.rst b/typo3/sysext/sys_action/Documentation/UsersManual/NewRecord/Index.rst
deleted file mode 100644 (file)
index b5e1c0e..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../../Includes.txt
-
-
-
-.. _new-record:
-
-New record
-^^^^^^^^^^
-
-This action type is used to create new records from a given table in a
-given page. This could be a news records in the sys\_folder where all
-news records are saved.
-
diff --git a/typo3/sysext/sys_action/Documentation/UsersManual/RecordList/Index.rst b/typo3/sysext/sys_action/Documentation/UsersManual/RecordList/Index.rst
deleted file mode 100644 (file)
index abed23c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../../Includes.txt
-
-
-.. _record-list:
-
-Record list
-^^^^^^^^^^^
-
-This action type renders all records from a given table and page.
-
-.. figure:: ../../Images/RecordListAction.gif
-   :alt: A list of pages
-
-   Showing a list of pages with the record list action
-
diff --git a/typo3/sysext/sys_action/Documentation/UsersManual/SqlQuery/Index.rst b/typo3/sysext/sys_action/Documentation/UsersManual/SqlQuery/Index.rst
deleted file mode 100644 (file)
index ecd1e31..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../../Includes.txt
-
-
-.. _sql-query:
-
-SQL query
-^^^^^^^^^
-
-This action type allows to show the records which are the result of a
-SQL query.
-
-.. figure:: ../../Images/SqlQueryAction.gif
-   :alt: SQL query action
-
-   Using the action to view the result of a SQL query
-
-Follow this steps to create this action type:
-
-#. Create a new action record and set the type to "SQL query".
-
-#. Go to the BE module "DB check" > "Full search" > "Advanced query".
-
-#. Create the query you need and save it to the previously created action
-   record.
-
-.. figure:: ../../Images/CreateSqlQuery.gif
-   :alt: Creating the SQL query
-
-   Creating the SQL query in the DB check module
-
diff --git a/typo3/sysext/sys_action/LICENSE.txt b/typo3/sysext/sys_action/LICENSE.txt
deleted file mode 100644 (file)
index 95d36a7..0000000
+++ /dev/null
@@ -1,345 +0,0 @@
-Some icons used in the TYPO3 project are retrieved from the "Silk" icon set of
-Mark James, which can be found at http://famfamfam.com/lab/icons/silk/. This
-set is distributed under a Creative Commons Attribution 2.5 License. The
-license can be found at http://creativecommons.org/licenses/by/2.5/.
----------------------------------
-
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                            NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/typo3/sysext/sys_action/Resources/Private/Language/locallang.xlf b/typo3/sysext/sys_action/Resources/Private/Language/locallang.xlf
deleted file mode 100644 (file)
index 7785066..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-       <file t3:id="1415814993" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:37Z" product-name="sys_action">
-               <header/>
-               <body>
-                       <trans-unit id="sys_action">
-                               <source>Action</source>
-                       </trans-unit>
-                       <trans-unit id="description">
-                               <source>An 'Action' is a configuration of a specific task which may be performed by assigned usergroups via the Task Center.</source>
-                       </trans-unit>
-                       <trans-unit id="new-sys_action">
-                               <source>Create a new action</source>
-                       </trans-unit>
-                       <trans-unit id="edit-sys_action">
-                               <source>Edit record</source>
-                       </trans-unit>
-                       <trans-unit id="action_error-not-found">
-                               <source>The action doesn't exist</source>
-                       </trans-unit>
-                       <trans-unit id="action_not-found">
-                               <source>No actions found</source>
-                       </trans-unit>
-                       <trans-unit id="action_not-found-description">
-                               <source>Currently there are no actions yet defined!</source>
-                       </trans-unit>
-                       <trans-unit id="action_error-access">
-                               <source>You don't have sufficient rights to see the records. Please ask the administrator to set those for you.</source>
-                       </trans-unit>
-                       <trans-unit id="error-wrong-email">
-                               <source>The E-mail address is wrong.</source>
-                       </trans-unit>
-                       <trans-unit id="error-username-empty">
-                               <source>The username is empty.</source>
-                       </trans-unit>
-                       <trans-unit id="error-password-empty">
-                               <source>The password is empty.</source>
-                       </trans-unit>
-                       <trans-unit id="error-wrong-user">
-                               <source>You are not allowed to edit this user.</source>
-                       </trans-unit>
-                       <trans-unit id="success">
-                               <source>Success</source>
-                       </trans-unit>
-                       <trans-unit id="success-user-created">
-                               <source>The user has been created.</source>
-                       </trans-unit>
-                       <trans-unit id="success-user-updated">
-                               <source>The user has been updated.</source>
-                       </trans-unit>
-                       <trans-unit id="action_noType">
-                               <source>Error: The action had no type defined.</source>
-                       </trans-unit>
-                       <trans-unit id="action_notReady">
-                               <source>Error: The action configuration is not finished.</source>
-                       </trans-unit>
-                       <trans-unit id="action_download_file">
-                               <source>Click here to download the exported data in a file</source>
-                       </trans-unit>
-                       <trans-unit id="action_editQuery">
-                               <source>Edit Query</source>
-                       </trans-unit>
-                       <trans-unit id="action_createQuery">
-                               <source>Create Query</source>
-                       </trans-unit>
-                       <trans-unit id="action_emptyQuery">
-                               <source>Query is empty, create one first!</source>
-                       </trans-unit>
-                       <trans-unit id="action_error">
-                               <source>Action error!</source>
-                       </trans-unit>
-                       <trans-unit id="action_lowlevelMissing">
-                               <source>The extension 'lowlevel' must be installed in order to create a query.</source>
-                       </trans-unit>
-                       <trans-unit id="action_t2_result">
-                               <source>Result of query</source>
-                       </trans-unit>
-                       <trans-unit id="action_Create">
-                               <source>Create Backend User</source>
-                       </trans-unit>
-                       <trans-unit id="action_Update">
-                               <source>Update Backend User</source>
-                       </trans-unit>
-                       <trans-unit id="action_t1_listOfUsers">
-                               <source>List of backend users</source>
-                       </trans-unit>
-                       <trans-unit id="action_t1_legend_generalFields">
-                               <source>General fields</source>
-                       </trans-unit>
-                       <trans-unit id="action_t1_legend_configuration">
-                               <source>Configuration</source>
-                       </trans-unit>
-                       <trans-unit id="action_toolbaritem">
-                               <source>Open System Actions</source>
-                       </trans-unit>
-               </body>
-       </file>
-</xliff>
diff --git a/typo3/sysext/sys_action/Resources/Private/Language/locallang_csh_sysaction.xlf b/typo3/sysext/sys_action/Resources/Private/Language/locallang_csh_sysaction.xlf
deleted file mode 100644 (file)
index 533bf42..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-       <file t3:id="1415814994" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:37Z" product-name="sys_action">
-               <header/>
-               <body>
-                       <trans-unit id=".description">
-                               <source>An 'Action' is a configuration of a specific task which may be performed by assigned usergroups via the Task Center.</source>
-                       </trans-unit>
-                       <trans-unit id=".details" xml:space="preserve">
-                               <source>Currently an Action may be configured to create additional backend usergroups without being and admin-user and by selecting from a limited set of options. Another option is to let an action initiate a SQL SELECT-query in the database and return the result as a CSV file.
-Actions can be assigned to a Backend usergroup and they are activated by a single click in the Task Center.</source>
-                       </trans-unit>
-                       <trans-unit id="title.description">
-                               <source>Enter the title of the action. This is shown in the list of available actions in the Task Center.</source>
-                       </trans-unit>
-                       <trans-unit id="description.description">
-                               <source>Describe what the action does or allows to do.</source>
-                       </trans-unit>
-                       <trans-unit id="hidden.description">
-                               <source>Check this option if you wish to disable the availability of the action or non-admin users.</source>
-                       </trans-unit>
-                       <trans-unit id="hidden.details">
-                               <source>This option is a great way to disable an action during changes made to it because it still allows you as an 'Admin'-user to activate it for test purposes.</source>
-                       </trans-unit>
-                       <trans-unit id="type.description">
-                               <source>Select the action type.</source>
-                       </trans-unit>
-                       <trans-unit id="type.details" xml:space="preserve">
-                               <source>&lt;strong&gt;"Create Backend User"&lt;/strong&gt; allows to create backend users with a limited set of options. This action type is meant for semi-administrators among your users which is in charge of daily user administration - still without being full fledged 'Admin'-users with 'a License to Kill everything'.
-When you select this option, you get to enter a 'template' user, enter a prefix which the new users will automatically have and whether or not a user home-dir is created in the process. Finally you can select a limited number of usergroups which the can be selected among.
-
-&lt;strong&gt;"SQL-query"&lt;/strong&gt; allows to make a fixed SQL SELECT-query in the database returned as CSV lists. When you have created an action of this type, you need to go to the System &gt; DB check (prior to v7 this can be found on Tools &gt; DB check) module and enter the Advanced Search feature. Here you can design your SQL-query. When you have designed it to select what you want correctly, you can select this action (by it's name) and save the query to the action there. From that point it will be effective from the Task Center. (Notice that the form of output selected in the Advanced Search function is also stored, so make sure to select CSV output there!)</source>
-                       </trans-unit>
-                       <trans-unit id="assign_to_groups.description">
-                               <source>Select the backend users groups allowed to activate the action in the Task Center.</source>
-                       </trans-unit>
-                       <trans-unit id="t1_userprefix.description">
-                               <source>Enter a prefix which is forcibly prepended to new usernames (eg. "news_")</source>
-                       </trans-unit>
-                       <trans-unit id="t1_allowed_groups.description">
-                               <source>Enter the Backend user groups which the user performing the action is able to choose among (if any).</source>
-                       </trans-unit>
-                       <trans-unit id="t1_create_user_dir.description">
-                               <source>If checked, a private home-directory is also created during user creation. </source>
-                       </trans-unit>
-                       <trans-unit id="t1_create_user_dir.details">
-                               <source>&lt;strong&gt;Notice:&lt;/strong&gt; $TYPO3_CONF_VARS["BE"]["userHomePath"] must be configured correctly along with $TYPO3_CONF_VARS["BE"]["lockRootPath"] and writable!</source>
-                       </trans-unit>
-                       <trans-unit id="t1_copy_of_user.description">
-                               <source>Insert a current Backend user which will be used as a template for the new users created. </source>
-                       </trans-unit>
-                       <trans-unit id="t1_copy_of_user.details" xml:space="preserve">
-                               <source>All values are copied to the new user, except username, password, name and email is of course overridden.
-If the template user is a member of a group which is not defined among the "Groups which may be assigned through the action" that group is still set for the user and cannot be removed by the user carrying out the action.</source>
-                       </trans-unit>
-                       <trans-unit id="t4_recordsToEdit.description">
-                               <source>[FILL IN] sys_action-&gt;t4_recordsToEdit</source>
-                       </trans-unit>
-                       <trans-unit id="t3_listPid.description">
-                               <source>[FILL IN] sys_action-&gt;t3_listPid</source>
-                       </trans-unit>
-                       <trans-unit id="t3_tables.description">
-                               <source>[FILL IN] sys_action-&gt;t3_tables</source>
-                       </trans-unit>
-               </body>
-       </file>
-</xliff>
diff --git a/typo3/sysext/sys_action/Resources/Private/Language/locallang_tca.xlf b/typo3/sysext/sys_action/Resources/Private/Language/locallang_tca.xlf
deleted file mode 100644 (file)
index 8eb4037..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-       <file t3:id="1415814995" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:37Z" product-name="sys_action">
-               <header/>
-               <body>
-                       <trans-unit id="sys_action">
-                               <source>Action</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.hidden">
-                               <source>Deactivated</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.assign_to_groups">
-                               <source>Assign action to groups</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.t1_userprefix">
-                               <source>User prefix</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.t1_allowed_groups">
-                               <source>Groups which may be assigned through the action</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.t1_create_user_dir">
-                               <source>Create User Home Directory</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.t1_copy_of_user">
-                               <source>Template user</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.t3_listPid">
-                               <source>List pid</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.t3_tables">
-                               <source>List only table</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.t4_recordsToEdit">
-                               <source>Records to edit</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.type.1">
-                               <source>Create Backend User</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.type.2">
-                               <source>SQL query</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.type.3">
-                               <source>Record list</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.type.4">
-                               <source>Edit records</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.type.5">
-                               <source>New Record</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.tab.access">
-                               <source>Access</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.tab.create_user.settings">
-                               <source>Settings</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.tab.record_list.settings">
-                               <source>Settings</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.tab.edit_records.settings">
-                               <source>Settings</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.tab.new_record.settings">
-                               <source>Settings</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.new_record.pid">
-                               <source>Select the page for the new record to be stored</source>
-                       </trans-unit>
-                       <trans-unit id="sys_action.new_record.tablename">
-                               <source>Record type</source>
-                       </trans-unit>
-               </body>
-       </file>
-</xliff>
diff --git a/typo3/sysext/sys_action/Resources/Private/Templates/ToolbarItems/DropDown.html b/typo3/sysext/sys_action/Resources/Private/Templates/ToolbarItems/DropDown.html
deleted file mode 100644 (file)
index 6defe2b..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<html xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers" data-namespace-typo3-fluid="true">
-<h3 class="dropdown-headline">
-       <f:translate key="sys_action"/>
-</h3>
-<hr>
-<div class="dropdown-table">
-       <f:for each="{actions}" as="action">
-               <div class="dropdown-table-row">
-                       <div class="dropdown-table-column dropdown-table-icon">
-                               <a href="{action.link -> f:format.htmlspecialchars()}" class="t3js-topbar-link" target="list_frame">
-                                       <core:iconForRecord table="sys_action" row="{action}" size="small"/>
-                               </a>
-                       </div>
-                       <div class="dropdown-table-column dropdown-table-title">
-                               <a href="{action.link -> f:format.htmlspecialchars()}" class="t3js-topbar-link" target="list_frame">
-                                       {action.title -> f:format.htmlspecialchars()}
-                               </a>
-                       </div>
-               </div>
-       </f:for>
-</div>
-</html>
diff --git a/typo3/sysext/sys_action/Resources/Private/Templates/ToolbarItems/ToolbarItem.html b/typo3/sysext/sys_action/Resources/Private/Templates/ToolbarItems/ToolbarItem.html
deleted file mode 100644 (file)
index 9a735e2..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<html xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers" data-namespace-typo3-fluid="true">
-<f:render partial="ToolbarItem" arguments="{
-       title: 'LLL:EXT:sys_action/Resources/Private/Language/locallang.xlf:action_toolbaritem',
-       icon: '{core:icon(identifier: \'apps-toolbar-menu-actions\', size: \'small\', alternativeMarkupIdentifier: \'inline\')}'
-}" />
-</html>
diff --git a/typo3/sysext/sys_action/Resources/Public/Icons/Extension.png b/typo3/sysext/sys_action/Resources/Public/Icons/Extension.png
deleted file mode 100644 (file)
index c65d04a..0000000
Binary files a/typo3/sysext/sys_action/Resources/Public/Icons/Extension.png and /dev/null differ
diff --git a/typo3/sysext/sys_action/Resources/Public/Images/x-sys_action.png b/typo3/sysext/sys_action/Resources/Public/Images/x-sys_action.png
deleted file mode 100644 (file)
index 76eb020..0000000
Binary files a/typo3/sysext/sys_action/Resources/Public/Images/x-sys_action.png and /dev/null differ
diff --git a/typo3/sysext/sys_action/Resources/Public/JavaScript/ActionTask.js b/typo3/sysext/sys_action/Resources/Public/JavaScript/ActionTask.js
deleted file mode 100644 (file)
index eb75983..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * Module: TYPO3/CMS/SysAction/ActionTask
- * JavaScript to handle confirm windows in the task center module
- * @exports TYPO3/CMS/SysAction/ActionTask
- */
-define(['jquery', 'TYPO3/CMS/Backend/Modal'], function($, Modal) {
-  $(function() {
-    $(document).on('click', '.t3js-confirm-trigger', function(e) {
-      e.preventDefault();
-      var $link = $(this);
-      Modal.confirm($link.data('title'), $link.data('message'))
-        .on('confirm.button.ok', function() {
-          self.location.href = $link.attr('href');
-          Modal.currentModal.trigger('modal-dismiss');
-        })
-        .on('confirm.button.cancel', function() {
-          Modal.currentModal.trigger('modal-dismiss');
-        });
-      return false;
-    });
-  });
-});
diff --git a/typo3/sysext/sys_action/Tests/Functional/Tca/ActionVisibleFieldsTest.php b/typo3/sysext/sys_action/Tests/Functional/Tca/ActionVisibleFieldsTest.php
deleted file mode 100644 (file)
index 73db2df..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-namespace TYPO3\CMS\SysAction\Tests\Functional\Tca;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use TYPO3\CMS\Backend\Tests\Functional\Form\FormTestService;
-use TYPO3\CMS\Core\Localization\LanguageService;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-
-class ActionVisibleFieldsTest extends \TYPO3\TestingFramework\Core\Functional\FunctionalTestCase
-{
-    protected $coreExtensionsToLoad = ['sys_action'];
-
-    protected static $actionCommonFields = [
-        'type',
-        'title',
-        'description',
-        'hidden',
-        'assign_to_groups',
-    ];
-
-    protected static $actionFieldsByType = [
-        '0' => [],
-        '1' => [
-            't1_userprefix',
-            't1_copy_of_user',
-            't1_allowed_groups',
-            't1_create_user_dir',
-        ],
-        '2' => [],
-        '3' => [
-            't3_listPid',
-            't3_tables',
-        ],
-        '4' => [
-            't4_recordsToEdit',
-        ],
-        '5' => [
-            't3_listPid',
-            't3_tables',
-        ],
-    ];
-
-    /**
-     * @test
-     */
-    public function actionFormContainsExpectedFields()
-    {
-        $this->setUpBackendUserFromFixture(1);
-        $GLOBALS['LANG'] = GeneralUtility::makeInstance(LanguageService::class);
-
-        $formEngineTestService = GeneralUtility::makeInstance(FormTestService::class);
-
-        foreach (static::$actionFieldsByType as $type => $additionalFields) {
-            $expectedFields = array_merge(static::$actionCommonFields, $additionalFields);
-            $formResult = $formEngineTestService->createNewRecordForm('sys_action', ['type' => $type]);
-
-            foreach ($expectedFields as $expectedField) {
-                $this->assertNotFalse(
-                    $formEngineTestService->formHtmlContainsField($expectedField, $formResult['html']),
-                    'The field ' . $expectedField . ' is not in the form HTML'
-                );
-            }
-        }
-    }
-}
diff --git a/typo3/sysext/sys_action/composer.json b/typo3/sysext/sys_action/composer.json
deleted file mode 100644 (file)
index a88ec07..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-       "name": "typo3/cms-sys-action",
-       "type": "typo3-cms-framework",
-       "description": "Actions are 'programmed' admin tasks which can be performed by selected regular users from the Task Center. An action could be creation of backend users, fixed SQL SELECT queries, listing of records, direct edit access to selected records etc.",
-       "homepage": "https://typo3.org",
-       "license": ["GPL-2.0-or-later"],
-       "authors": [{
-               "name": "TYPO3 Core Team",
-               "email": "typo3cms@typo3.org",
-               "role": "Developer"
-       }],
-       "config": {
-               "sort-packages": true
-       },
-       "require": {
-               "typo3/cms-core": "10.0.*@dev",
-               "typo3/cms-taskcenter": "10.0.*@dev"
-       },
-       "conflict": {
-               "typo3/cms": "*"
-       },
-       "replace": {
-               "sys_action": "*"
-       },
-       "extra": {
-               "branch-alias": {
-                       "dev-master": "10.0.x-dev"
-               },
-               "typo3/cms": {
-                       "extension-key": "sys_action"
-               }
-       },
-       "autoload": {
-               "psr-4": {
-                       "TYPO3\\CMS\\SysAction\\": "Classes/"
-               }
-       },
-       "autoload-dev": {
-               "psr-4": {
-                       "TYPO3\\CMS\\SysAction\\Tests\\": "Tests/"
-               }
-       }
-}
diff --git a/typo3/sysext/sys_action/ext_emconf.php b/typo3/sysext/sys_action/ext_emconf.php
deleted file mode 100644 (file)
index 4605072..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-$EM_CONF[$_EXTKEY] = [
-    'title' => 'User>Task Center, Actions',
-    'description' => 'Actions are \'programmed\' admin tasks which can be performed by selected regular users from the Task Center. An action could be creation of backend users, fixed SQL SELECT queries, listing of records, direct edit access to selected records etc.',
-    'category' => 'module',
-    'state' => 'stable',
-    'createDirs' => '',
-    'clearCacheOnLoad' => 0,
-    'author' => 'TYPO3 Core Team',
-    'author_email' => 'typo3cms@typo3.org',
-    'author_company' => '',
-    'version' => '10.0.0',
-    'constraints' => [
-        'depends' => [
-            'typo3' => '10.0.0',
-            'taskcenter' => '10.0.0',
-        ],
-        'conflicts' => [],
-        'suggests' => [],
-    ],
-];
diff --git a/typo3/sysext/sys_action/ext_localconf.php b/typo3/sysext/sys_action/ext_localconf.php
deleted file mode 100644 (file)
index 5673066..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-defined('TYPO3_MODE') or die();
-
-$GLOBALS['TYPO3_CONF_VARS']['BE']['toolbarItems'][1435433113] = \TYPO3\CMS\SysAction\Backend\ToolbarItems\ActionToolbarItem::class;
-$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['taskcenter']['sys_action'][\TYPO3\CMS\SysAction\ActionTask::class] = [
-    'title' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action',
-    'description' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_csh_sysaction.xlf:.description',
-    'icon' => 'EXT:sys_action/Resources/Public/Images/x-sys_action.png'
-];
diff --git a/typo3/sysext/sys_action/ext_tables.php b/typo3/sysext/sys_action/ext_tables.php
deleted file mode 100644 (file)
index c1648f6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php
-defined('TYPO3_MODE') or die();
-
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('sys_action', 'EXT:sys_action/Resources/Private/Language/locallang_csh_sysaction.xlf');
diff --git a/typo3/sysext/sys_action/ext_tables.sql b/typo3/sysext/sys_action/ext_tables.sql
deleted file mode 100644 (file)
index 5d2e27f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Table structure for table 'sys_action'
-#
-CREATE TABLE sys_action (
-  title varchar(255) DEFAULT '' NOT NULL,
-  type tinyint(3) unsigned DEFAULT '0' NOT NULL,
-  t1_userprefix varchar(20) DEFAULT '' NOT NULL,
-  t1_copy_of_user int(11) DEFAULT '0' NOT NULL,
-  t1_allowed_groups tinytext,
-  t2_data blob,
-  assign_to_groups int(11) DEFAULT '0' NOT NULL,
-  t1_create_user_dir tinyint(4) DEFAULT '0' NOT NULL,
-  t3_listPid int(11) DEFAULT '0' NOT NULL,
-  t3_tables varchar(255) DEFAULT '' NOT NULL,
-  t4_recordsToEdit text,
-
-  KEY cruser_id (cruser_id)
-);
-
-#
-# Table structure for table 'sys_action_asgr_mm'
-#
-CREATE TABLE sys_action_asgr_mm (
-  uid_local int(11) unsigned DEFAULT '0' NOT NULL,
-  uid_foreign int(11) unsigned DEFAULT '0' NOT NULL,
-  sorting int(11) unsigned DEFAULT '0' NOT NULL,
-  KEY uid_local (uid_local),
-  KEY uid_foreign (uid_foreign)
-);
-
diff --git a/typo3/sysext/taskcenter/.gitattributes b/typo3/sysext/taskcenter/.gitattributes
deleted file mode 100644 (file)
index 434f281..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/.gitattributes export-ignore
-/Resources/Private/TypeScript/ export-ignore
-/Tests/ export-ignore
diff --git a/typo3/sysext/taskcenter/Classes/Controller/TaskModuleController.php b/typo3/sysext/taskcenter/Classes/Controller/TaskModuleController.php
deleted file mode 100644 (file)
index d5a7230..0000000
+++ /dev/null
@@ -1,607 +0,0 @@
-<?php
-namespace TYPO3\CMS\Taskcenter\Controller;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use TYPO3\CMS\Backend\Template\ModuleTemplate;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
-use TYPO3\CMS\Core\Http\HtmlResponse;
-use TYPO3\CMS\Core\Localization\LanguageService;
-use TYPO3\CMS\Core\Messaging\FlashMessage;
-use TYPO3\CMS\Core\Messaging\FlashMessageService;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Core\Utility\PathUtility;
-use TYPO3\CMS\Fluid\View\StandaloneView;
-use TYPO3\CMS\Taskcenter\TaskInterface;
-
-/**
- * This class provides a task center for BE users
- * @internal This is a specific Backend Controller implementation and is not considered part of the Public TYPO3 API.
- */
-class TaskModuleController
-{
-
-    /**
-     * Loaded with the global array $MCONF which holds some module configuration from the conf.php file of backend modules.
-     *
-     * @see init()
-     * @var array
-     */
-    protected $MCONF = [];
-
-    /**
-     * The integer value of the GET/POST var, 'id'. Used for submodules to the 'Web' module (page id)
-     *
-     * @see init()
-     * @var int
-     */
-    protected $id;
-
-    /**
-     * The module menu items array. Each key represents a key for which values can range between the items in the array of that key.
-     *
-     * @see init()
-     * @var array
-     */
-    protected $MOD_MENU = [
-        'function' => []
-    ];
-
-    /**
-     * Current settings for the keys of the MOD_MENU array
-     * Public since task objects use this.
-     *
-     * @see $MOD_MENU
-     * @var array
-     */
-    public $MOD_SETTINGS = [];
-
-    /**
-     * Module TSconfig based on PAGE TSconfig / USER TSconfig
-     * Public since task objects use this.
-     *
-     * @see menuConfig()
-     * @var array
-     */
-    public $modTSconfig;
-
-    /**
-     * If type is 'ses' then the data is stored as session-lasting data. This means that it'll be wiped out the next time the user logs in.
-     * Can be set from extension classes of this class before the init() function is called.
-     *
-     * @see menuConfig(), \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleData()
-     * @var string
-     */
-    protected $modMenu_type = '';
-
-    /**
-     * dontValidateList can be used to list variables that should not be checked if their value is found in the MOD_MENU array. Used for dynamically generated menus.
-     * Can be set from extension classes of this class before the init() function is called.
-     *
-     * @see menuConfig(), \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleData()
-     * @var string
-     */
-    protected $modMenu_dontValidateList = '';
-
-    /**
-     * List of default values from $MOD_MENU to set in the output array (only if the values from MOD_MENU are not arrays)
-     * Can be set from extension classes of this class before the init() function is called.
-     *
-     * @see menuConfig(), \TYPO3\CMS\Backend\Utility\BackendUtility::getModuleData()
-     * @var string
-     */
-    protected $modMenu_setDefaultList = '';
-
-    /**
-     * Generally used for accumulating the output content of backend modules
-     *
-     * @var string
-     */
-    protected $content = '';
-
-    /**
-     * @var array
-     */
-    protected $pageinfo;
-
-    /**
-     * ModuleTemplate Container
-     *
-     * @var ModuleTemplate
-     */
-    protected $moduleTemplate;
-
-    /**
-     * The name of the module
-     *
-     * @var string
-     */
-    protected $moduleName = 'user_task';
-
-    /**
-     * Initializes the Module
-     */
-    public function __construct()
-    {
-        $this->moduleTemplate = GeneralUtility::makeInstance(ModuleTemplate::class);
-        $this->getLanguageService()->includeLLFile('EXT:taskcenter/Resources/Private/Language/locallang_task.xlf');
-        $this->MCONF = [
-            'name' => $this->moduleName
-        ];
-        // Name might be set from outside
-        if (!$this->MCONF['name']) {
-            $this->MCONF = $GLOBALS['MCONF'];
-        }
-        $this->id = (int)GeneralUtility::_GP('id');
-        $this->menuConfig();
-    }
-
-    /**
-     * Adds items to the ->MOD_MENU array. Used for the function menu selector.
-     */
-    protected function menuConfig()
-    {
-        $this->MOD_MENU = ['mode' => []];
-        $languageService = $this->getLanguageService();
-        $this->MOD_MENU['mode']['information'] = $languageService->sL('LLL:EXT:taskcenter/Resources/Private/Language/locallang.xlf:task_overview');
-        $this->MOD_MENU['mode']['tasks'] = $languageService->sL('LLL:EXT:taskcenter/Resources/Private/Language/locallang.xlf:task_tasks');
-        // Copied from parent::menuConfig, because parent is hardcoded to menu.function,
-        // however menu.function is already used for the individual tasks. Therefore we use menu.mode here.
-        // Page/be_user TSconfig settings and blinding of menu-items
-        $this->modTSconfig['properties'] = BackendUtility::getPagesTSconfig($this->id)['mod.'][$this->moduleName . '.'] ?? [];
-        $this->MOD_MENU['mode'] = $this->mergeExternalItems($this->MCONF['name'], 'mode', $this->MOD_MENU['mode']);
-        $blindActions = $this->modTSconfig['properties']['menu.']['mode.'] ?? [];
-        foreach ($blindActions as $key => $value) {
-            if (!$value && array_key_exists($key, $this->MOD_MENU['mode'])) {
-                unset($this->MOD_MENU['mode'][$key]);
-            }
-        }
-        // Page / user TSconfig settings and blinding of menu-items
-        // Now overwrite the stuff again for unknown reasons
-        $this->modTSconfig['properties'] = BackendUtility::getPagesTSconfig($this->id)['mod.'][$this->MCONF['name'] . '.'] ?? [];
-        $this->MOD_MENU['function'] = $this->mergeExternalItems($this->MCONF['name'], 'function', $this->MOD_MENU['function']);
-        $blindActions = $this->modTSconfig['properties']['menu.']['function.'] ?? [];
-        foreach ($blindActions as $key => $value) {
-            if (!$value && array_key_exists($key, $this->MOD_MENU['function'])) {
-                unset($this->MOD_MENU['function'][$key]);
-            }
-        }
-        $this->MOD_SETTINGS = BackendUtility::getModuleData($this->MOD_MENU, GeneralUtility::_GP('SET'), $this->MCONF['name'], $this->modMenu_type, $this->modMenu_dontValidateList, $this->modMenu_setDefaultList);
-    }
-
-    /**
-     * Generates the menu based on $this->MOD_MENU
-     *
-     * @throws \InvalidArgumentException
-     */
-    protected function generateMenu()
-    {
-        $menu = $this->moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->makeMenu();
-        $menu->setIdentifier('WebFuncJumpMenu');
-        /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-        $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-        foreach ($this->MOD_MENU['mode'] as $controller => $title) {
-            $item = $menu
-                ->makeMenuItem()
-                ->setHref(
-                    (string)$uriBuilder->buildUriFromRoute(
-                        $this->moduleName,
-                        [
-                            'id' => $this->id,
-                            'SET' => [
-                                'mode' => $controller
-                            ]
-                        ]
-                    )
-                )
-                ->setTitle($title);
-            if ($controller === $this->MOD_SETTINGS['mode']) {
-                $item->setActive(true);
-            }
-            $menu->addMenuItem($item);
-        }
-        $this->moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->addMenu($menu);
-    }
-
-    /**
-     * Injects the request object for the current request or subrequest
-     * Simply calls main() and writes the content to the response
-     *
-     * @param ServerRequestInterface $request the current request
-     * @return ResponseInterface the response with the content
-     */
-    public function mainAction(ServerRequestInterface $request): ResponseInterface
-    {
-        $this->main();
-        $this->moduleTemplate->setContent($this->content);
-        return new HtmlResponse($this->moduleTemplate->renderContent());
-    }
-
-    /**
-     * Creates the module's content. In this case it rather acts as a kind of #
-     * dispatcher redirecting requests to specific tasks.
-     */
-    protected function main()
-    {
-        $this->getButtons();
-        $this->generateMenu();
-        $this->moduleTemplate->addJavaScriptCode(
-            'TaskCenterInlineJavascript',
-            'if (top.fsMod) { top.fsMod.recentIds["web"] = 0; }'
-        );
-
-        // Render content depending on the mode
-        $mode = (string)$this->MOD_SETTINGS['mode'];
-        if ($mode === 'information') {
-            $this->renderInformationContent();
-        } else {
-            $this->renderModuleContent();
-        }
-        // Renders the module page
-        $this->moduleTemplate->setTitle($this->getLanguageService()->getLL('title'));
-    }
-
-    /**
-     * Generates the module content by calling the selected task
-     */
-    protected function renderModuleContent()
-    {
-        $languageService = $this->getLanguageService();
-        $chosenTask = (string)$this->MOD_SETTINGS['function'];
-        // Render the taskcenter task as default
-        if (empty($chosenTask) || $chosenTask === 'index') {
-            $chosenTask = 'taskcenter.tasks';
-        }
-        // Render the task
-        $actionContent = '';
-        $flashMessage = null;
-        list($extKey, $taskClass) = explode('.', $chosenTask, 2);
-        if (class_exists($taskClass)) {
-            $taskInstance = GeneralUtility::makeInstance($taskClass, $this);
-            if ($taskInstance instanceof TaskInterface) {
-                // Check if the task is restricted to admins only
-                if ($this->checkAccess($extKey, $taskClass)) {
-                    $actionContent .= $taskInstance->getTask();
-                } else {
-                    $flashMessage = GeneralUtility::makeInstance(
-                        FlashMessage::class,
-                        $languageService->getLL('error-access'),
-                        $languageService->getLL('error_header'),
-                        FlashMessage::ERROR
-                    );
-                }
-            } else {
-                // Error if the task is not an instance of \TYPO3\CMS\Taskcenter\TaskInterface
-                $flashMessage = GeneralUtility::makeInstance(
-                    FlashMessage::class,
-                    sprintf($languageService->getLL('error_no-instance'), $taskClass, TaskInterface::class),
-                    $languageService->getLL('error_header'),
-                    FlashMessage::ERROR
-                );
-            }
-        } else {
-            $flashMessage = GeneralUtility::makeInstance(
-                FlashMessage::class,
-                $languageService->sL('LLL:EXT:taskcenter/Resources/Private/Language/locallang_mod.xlf:mlang_labels_tabdescr'),
-                $languageService->sL('LLL:EXT:taskcenter/Resources/Private/Language/locallang_mod.xlf:mlang_tabs_tab'),
-                FlashMessage::INFO
-            );
-        }
-
-        if ($flashMessage) {
-            /** @var \TYPO3\CMS\Core\Messaging\FlashMessageService $flashMessageService */
-            $flashMessageService = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Messaging\FlashMessageService::class);
-            /** @var \TYPO3\CMS\Core\Messaging\FlashMessageQueue $defaultFlashMessageQueue */
-            $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
-            $defaultFlashMessageQueue->enqueue($flashMessage);
-        }
-
-        $assigns = [];
-        $assigns['reports'] = $this->indexAction();
-        $assigns['taskClass'] = strtolower(str_replace('\\', '-', htmlspecialchars($extKey . '-' . $taskClass)));
-        $assigns['actionContent'] = $actionContent;
-
-        // Rendering of the output via fluid
-        $view = GeneralUtility::makeInstance(StandaloneView::class);
-        $view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName(
-            'EXT:taskcenter/Resources/Private/Templates/ModuleContent.html'
-        ));
-        $view->assignMultiple($assigns);
-        $this->content .= $view->render();
-    }
-
-    /**
-     * Generates the information content
-     */
-    protected function renderInformationContent()
-    {
-        $assigns = [];
-        $assigns['LLPrefix'] = 'LLL:EXT:taskcenter/Resources/Private/Language/locallang.xlf:';
-        $assigns['LLPrefixMod'] = 'LLL:EXT:taskcenter/Resources/Private/Language/locallang_mod.xlf:';
-        $assigns['LLPrefixTask'] = 'LLL:EXT:taskcenter/Resources/Private/Language/locallang_task.xlf:';
-        $assigns['admin'] = $this->getBackendUser()->isAdmin();
-
-        // Rendering of the output via fluid
-        $view = GeneralUtility::makeInstance(StandaloneView::class);
-        $view->setTemplateRootPaths([GeneralUtility::getFileAbsFileName('EXT:taskcenter/Resources/Private/Templates')]);
-        $view->setPartialRootPaths([GeneralUtility::getFileAbsFileName('EXT:taskcenter/Resources/Private/Partials')]);
-        $view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName(
-            'EXT:taskcenter/Resources/Private/Templates/InformationContent.html'
-        ));
-        $view->assignMultiple($assigns);
-        $this->content .= $view->render();
-    }
-
-    /**
-     * Render the headline of a task including a title and an optional description.
-     * Public since task objects use this.
-     *
-     * @param string $title Title
-     * @param string $description Description
-     * @return string formatted title and description
-     */
-    public function description($title, $description = '')
-    {
-        $descriptionView = GeneralUtility::makeInstance(StandaloneView::class);
-        $descriptionView->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName(
-            'EXT:taskcenter/Resources/Private/Partials/Description.html'
-        ));
-        $descriptionView->assign('title', $title);
-        $descriptionView->assign('description', $description);
-        return $descriptionView->render();
-    }
-
-    /**
-     * Render a list of items as a nicely formatted definition list including a link, icon, title and description.
-     * The keys of a single item are:
-     * - title:             Title of the item
-     * - link:              Link to the task
-     * - icon:              Path to the icon or Icon as HTML if it begins with <img
-     * - description:       Description of the task, using htmlspecialchars()
-     * - descriptionHtml:   Description allowing HTML tags which will override the description
-     * Public since task objects use this.
-     *
-     * @param array $items List of items to be displayed in the definition list.
-     * @param bool $mainMenu Set it to TRUE to render the main menu
-     * @return string Formatted definition list
-     */
-    public function renderListMenu($items, $mainMenu = false)
-    {
-        $assigns = [];
-        $assigns['mainMenu'] = $mainMenu;
-
-        // Change the sorting of items to the user's one
-        if ($mainMenu) {
-            $userSorting = unserialize($this->getBackendUser()->uc['taskcenter']['sorting']);
-            if (is_array($userSorting)) {
-                $newSorting = [];
-                foreach ($userSorting as $item) {
-                    if (isset($items[$item])) {
-                        $newSorting[] = $items[$item];
-                        unset($items[$item]);
-                    }
-                }
-                $items = $newSorting + $items;
-            }
-        }
-        if (is_array($items) && !empty($items)) {
-            foreach ($items as $itemKey => &$item) {
-                // Check for custom icon
-                if (!empty($item['icon'])) {
-                    if (strpos($item['icon'], '<img ') === false) {
-                        $iconFile = GeneralUtility::getFileAbsFileName($item['icon']);
-                        if (@is_file($iconFile)) {
-                            $item['iconFile'] = PathUtility::getAbsoluteWebPath($iconFile);
-                        }
-                    }
-                }
-                $id = $this->getUniqueKey($item['uid']);
-                $contentId = strtolower(str_replace('\\', '-', $id));
-                $item['uniqueKey'] = $id;
-                $item['contentId'] = $contentId;
-                // Collapsed & expanded menu items
-                if (isset($this->getBackendUser()->uc['taskcenter']['states'][$id]) && $this->getBackendUser()->uc['taskcenter']['states'][$id]) {
-                    $item['ariaExpanded'] = 'true';
-                    $item['collapseIcon'] = 'actions-view-list-expand';
-                    $item['collapsed'] = '';
-                } else {
-                    $item['ariaExpanded'] = 'false';
-                    $item['collapseIcon'] = 'actions-view-list-collapse';
-                    $item['collapsed'] = 'in';
-                }
-                // Active menu item
-                $panelState = (string)$this->MOD_SETTINGS['function'] == $item['uid'] ? 'panel-active' : 'panel-default';
-                $item['panelState'] = $panelState;
-            }
-        }
-        $assigns['items'] = $items;
-
-        // Rendering of the output via fluid
-        $view = GeneralUtility::makeInstance(StandaloneView::class);
-        $view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName(
-            'EXT:taskcenter/Resources/Private/Templates/ListMenu.html'
-        ));
-        $view->assignMultiple($assigns);
-        return $view->render();
-    }
-
-    /**
-     * Shows an overview list of available reports.
-     *
-     * @return string List of available reports
-     */
-    protected function indexAction()
-    {
-        $languageService = $this->getLanguageService();
-        $content = '';
-        $tasks = [];
-        $defaultIcon = 'EXT:taskcenter/Resources/Public/Icons/module-taskcenter.svg';
-        /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
-        $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
-        // Render the tasks only if there are any available
-        if (count($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['taskcenter'] ?? [])) {
-            foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['taskcenter'] as $extKey => $extensionReports) {
-                foreach ($extensionReports as $taskClass => $task) {
-                    if (!$this->checkAccess($extKey, $taskClass)) {
-                        continue;
-                    }
-                    $link = (string)$uriBuilder->buildUriFromRoute('user_task') . '&SET[function]=' . $extKey . '.' . $taskClass;
-                    $taskTitle = $languageService->sL($task['title']);
-                    $taskDescriptionHtml = '';
-
-                    if (class_exists($taskClass)) {
-                        $taskInstance = GeneralUtility::makeInstance($taskClass, $this);
-                        if ($taskInstance instanceof TaskInterface) {
-                            $taskDescriptionHtml = $taskInstance->getOverview();
-                        }
-                    }
-                    // Generate an array of all tasks
-                    $uniqueKey = $this->getUniqueKey($extKey . '.' . $taskClass);
-                    $tasks[$uniqueKey] = [
-                        'title' => $taskTitle,
-                        'descriptionHtml' => $taskDescriptionHtml,
-                        'description' => $languageService->sL($task['description']),
-                        'icon' => !empty($task['icon']) ? $task['icon'] : $defaultIcon,
-                        'link' => $link,
-                        'uid' => $extKey . '.' . $taskClass
-                    ];
-                }
-            }
-            $content .= $this->renderListMenu($tasks, true);
-        } else {
-            $flashMessage = GeneralUtility::makeInstance(
-                FlashMessage::class,
-                $languageService->getLL('no-tasks'),
-                '',
-                FlashMessage::INFO
-            );
-            /** @var \TYPO3\CMS\Core\Messaging\FlashMessageService $flashMessageService */
-            $flashMessageService = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Messaging\FlashMessageService::class);
-            /** @var \TYPO3\CMS\Core\Messaging\FlashMessageQueue $defaultFlashMessageQueue */
-            $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
-            $defaultFlashMessageQueue->enqueue($flashMessage);
-        }
-        return $content;
-    }
-
-    /**
-     * Create the panel of buttons for submitting the form or otherwise
-     * perform operations.
-     */
-    protected function getButtons()
-    {
-        $buttonBar = $this->moduleTemplate->getDocHeaderComponent()->getButtonBar();
-
-        // Shortcut
-        $shortcutButton = $buttonBar->makeShortcutButton()
-            ->setModuleName($this->moduleName)
-            ->setSetVariables(['function']);
-        $buttonBar->addButton($shortcutButton);
-    }
-
-    /**
-     * Check the access to a task. Considered are:
-     * - Admins are always allowed
-     * - Tasks can be restriced to admins only
-     * - Tasks can be blinded for Users with TsConfig taskcenter.<extensionkey>.<taskName> = 0
-     *
-     * @param string $extKey Extension key
-     * @param string $taskClass Name of the task
-     * @return bool Access to the task allowed or not
-     */
-    protected function checkAccess($extKey, $taskClass): bool
-    {
-        $backendUser = $this->getBackendUser();
-        // Admins are always allowed
-        if ($backendUser->isAdmin()) {
-            return true;
-        }
-        // Check if task is restricted to admins
-        if ((int)$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['taskcenter'][$extKey][$taskClass]['admin'] === 1) {
-            return false;
-        }
-        // Check if task is blinded with TsConfig (taskcenter.<extkey>.<taskName>
-        return (bool)($backendUser->getTSConfig()['taskcenter.'][$extKey . '.'][$taskClass] ?? true);
-    }
-
-    /**
-     * Create a unique key from a string which can be used in JS for sorting
-     * Therefore '_' are replaced
-     *
-     * @param string $string string which is used to generate the identifier
-     * @return string Modified string
-     */
-    protected function getUniqueKey($string)
-    {
-        $search = ['.', '_'];
-        $replace = ['-', ''];
-        return str_replace($search, $replace, $string);
-    }
-
-    /**
-     * Returns the current BE user.
-     *
-     * @return BackendUserAuthentication
-     */
-    protected function getBackendUser(): BackendUserAuthentication
-    {
-        return $GLOBALS['BE_USER'];
-    }
-
-    /**
-     * Returns LanguageService
-     *
-     * @return LanguageService
-     */
-    protected function getLanguageService(): LanguageService
-    {
-        return $GLOBALS['LANG'];
-    }
-
-    /**
-     * Public since task objects use this.
-     *
-     * @return ModuleTemplate
-     */
-    public function getModuleTemplate(): ModuleTemplate
-    {
-        return $this->moduleTemplate;
-    }
-
-    /**
-     * Merges menu items from global array $TBE_MODULES_EXT
-     *
-     * @param string $modName Module name for which to find value
-     * @param string $menuKey Menu key, eg. 'function' for the function menu.
-     * @param array $menuArr The part of a MOD_MENU array to work on.
-     * @return array Modified array part.
-     * @internal
-     * @see \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::insertModuleFunction(), menuConfig()
-     */
-    protected function mergeExternalItems($modName, $menuKey, $menuArr)
-    {
-        $mergeArray = $GLOBALS['TBE_MODULES_EXT'][$modName]['MOD_MENU'][$menuKey];
-        if (is_array($mergeArray)) {
-            foreach ($mergeArray as $k => $v) {
-                if (((string)$v['ws'] === '' || $this->getBackendUser()->workspace === 0 && GeneralUtility::inList($v['ws'], 'online')) || $this->getBackendUser()->workspace === -1 && GeneralUtility::inList($v['ws'], 'offline') || $this->getBackendUser()->workspace > 0 && GeneralUtility::inList($v['ws'], 'custom')) {
-                    $menuArr[$k] = $this->getLanguageService()->sL($v['title']);
-                }
-            }
-        }
-        return $menuArr;
-    }
-}
diff --git a/typo3/sysext/taskcenter/Classes/Controller/TaskStatusController.php b/typo3/sysext/taskcenter/Classes/Controller/TaskStatusController.php
deleted file mode 100644 (file)
index e0f9eb9..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-namespace TYPO3\CMS\Taskcenter\Controller;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-use Psr\Http\Message\ResponseInterface;
-use Psr\Http\Message\ServerRequestInterface;
-use TYPO3\CMS\Core\Http\JsonResponse;
-
-/**
- * Status of tasks
- * @internal This is a specific Backend Controller implementation and is not considered part of the Public TYPO3 API.
- */
-class TaskStatusController
-{
-    /**
-     * Saves the section toggle state of tasks in the backend user's uc
-     *
-     * @param ServerRequestInterface $request
-     * @return ResponseInterface
-     */
-    public function saveCollapseState(ServerRequestInterface $request): ResponseInterface
-    {
-        // Remove 'el_' in the beginning which is needed for the saveSortingState()
-        $item = $request->getParsedBody()['item'] ?? $request->getQueryParams()['item'];
-        $item = htmlspecialchars($item);
-        $state = (bool)($request->getParsedBody()['state'] ?? $request->getQueryParams()['state']);
-
-        $this->getBackendUserAuthentication()->uc['taskcenter']['states'][$item] = $state;
-        $this->getBackendUserAuthentication()->writeUC();
-
-        return new JsonResponse(null);
-    }
-
-    /**
-     * Saves the sorting order of tasks in the backend user's uc
-     *
-     * @param ServerRequestInterface $request
-     * @return ResponseInterface
-     */
-    public function saveSortingState(ServerRequestInterface $request): ResponseInterface
-    {
-        $sort = [];
-        $data = $request->getParsedBody()['data'] ?? $request->getQueryParams()['data'];
-
-        $items = explode('&', $data);
-        foreach ($items as $item) {
-            $sort[] = substr($item, 12);
-        }
-        $this->getBackendUserAuthentication()->uc['taskcenter']['sorting'] = serialize($sort);
-        $this->getBackendUserAuthentication()->writeUC();
-
-        return new JsonResponse(null);
-    }
-
-    /**
-     * Returns BackendUserAuthentication
-     *
-     * @return \TYPO3\CMS\Core\Authentication\BackendUserAuthentication
-     */
-    protected function getBackendUserAuthentication()
-    {
-        return $GLOBALS['BE_USER'];
-    }
-}
diff --git a/typo3/sysext/taskcenter/Classes/TaskInterface.php b/typo3/sysext/taskcenter/Classes/TaskInterface.php
deleted file mode 100644 (file)
index d38d5cd..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-namespace TYPO3\CMS\Taskcenter;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * Interface for classes which provide a task.
- */
-interface TaskInterface
-{
-    /**
-     * Returns the content for a task
-     *
-     * @return string A task rendered HTML
-     */
-    public function getTask();
-
-    /**
-     * Returns the overview of a task
-     *
-     * @return string A task rendered HTML
-     */
-    public function getOverview();
-}
diff --git a/typo3/sysext/taskcenter/Configuration/Backend/AjaxRoutes.php b/typo3/sysext/taskcenter/Configuration/Backend/AjaxRoutes.php
deleted file mode 100644 (file)
index 5a9ba8f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-/**
- * Definitions for routes provided by EXT:taskcenter
- */
-return [
-    'taskcenter_collapse' => [
-        'path' => '/taskcenter/collapse',
-        'target' => \TYPO3\CMS\Taskcenter\Controller\TaskStatusController::class . '::saveCollapseState',
-    ],
-    'taskcenter_sort' => [
-        'path' => '/taskcenter/sort',
-        'target' => \TYPO3\CMS\Taskcenter\Controller\TaskStatusController::class . '::saveSortingState',
-    ],
-];
diff --git a/typo3/sysext/taskcenter/Documentation/.gitignore b/typo3/sysext/taskcenter/Documentation/.gitignore
deleted file mode 100644 (file)
index 6cd159f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# this is file .gitignore
-
-# ignore everything in this directory
-_make/*
-
-# but do not ignore this file
-!_not_versioned/.gitignore
diff --git a/typo3/sysext/taskcenter/Documentation/Administration/Index.rst b/typo3/sysext/taskcenter/Documentation/Administration/Index.rst
deleted file mode 100644 (file)
index 12a9f19..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../Includes.txt
-
-
-
-.. _administration:
-
-Administration
---------------
-
-As this extensions needs to be implemented by other extensions, it
-doesn't provide any additional information except the rendering of
-tasks.
-
-
-.. _hide-tasks:
-
-Hide tasks
-^^^^^^^^^^
-
-It is possible to hide tasks from users by using the following
-TSconfig (User TSconfig):
-
-.. code-block:: typoscript
-
-   taskcenter {
-           <extension-key>.<task-class>= 0
-   }
-
-Be aware that the parts between the :code:`<` and :code:`>` need to be replace by the
-actual extension key and class name.
-
diff --git a/typo3/sysext/taskcenter/Documentation/DevelopersGuide/CreatingANewTask/Index.rst b/typo3/sysext/taskcenter/Documentation/DevelopersGuide/CreatingANewTask/Index.rst
deleted file mode 100644 (file)
index 2698bd2..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../../Includes.txt
-
-
-
-.. _create-new-task:
-
-Creating a new task
-^^^^^^^^^^^^^^^^^^^
-
-
-.. _create-task-class:
-
-Creating the task class
-"""""""""""""""""""""""
-
-This is the heart of a task. It is the code that actually does what
-the task is supposed to do. A task is represented by a PHP class that
-implements the interface :code:`\TYPO3\CMS\Taskcenter\TaskInterface`:
-
-::
-
-   namespace Foo\Bar\Task;
-   class DoSomething implements \TYPO3\CMS\Taskcenter\TaskInterface {
-     public function getTask() {
-               ...
-     }
-     public function getOverview() {
-               ...
-    }
-   }
-
-The 2 mentioned method  **must** be implemented!
-
-getTask()
-  The function :code:`getTask()` is expected to perform the task logic and
-  returns the content of the task.
-
-getOverview()
-  The function :code:`getOverview()` creates an optional menu of items or
-  description which is rendered in the menu of tasks.
-
-
-.. _autoloading:
-
-Autoloading
-"""""""""""
-
-The Taskcenter expects all task classes to be available with the TYPO3
-autoloader. They thus must be declared in the
-:file:`ext\_autoload.php` file of the extension that provides these
-classes. Again the :file:`ext\_autoload.php` file of sys\_action can
-be used as an example.
-
-
-.. _declare-task-class:
-
-Declaring the task class
-""""""""""""""""""""""""
-
-As a last step, the task class must be declared so the Taskcenter
-knows of its existence. The declaration must be placed in the
-:file:`ext_tables.php` file of the extension that provides the
-task. Let's look at the declaration of sys\_action as an example:
-
-::
-
-       $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['taskcenter']['sys_action']['tx_sysaction_task'] = array(
-               'title' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_tca.xlf:sys_action',
-               'description' => 'LLL:EXT:sys_action/Resources/Private/Language/locallang_csh_sysaction.xlf:.description',
-               'icon' => 'EXT:sys_action/Resources/Public/Images/x-sys_action.png'
-       );
-
-The registration is made in the array
-:code:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['taskcenter']`. A key is
-then used that corresponds to the task class (in bold above). Then
-come 3 parameters:
-
-- **title** : the name of the task. May use localized labels.
-
-- **description** : a text describing the task. It is displayed in the
-  information screen of the BE module. May use localized labels.
-
-- **icon** : Path to an icon for the task.
-
diff --git a/typo3/sysext/taskcenter/Documentation/DevelopersGuide/Index.rst b/typo3/sysext/taskcenter/Documentation/DevelopersGuide/Index.rst
deleted file mode 100644 (file)
index 38be349..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../Includes.txt
-
-
-
-.. _developer-s-guide:
-
-Developer's Guide
------------------
-
-The Taskcenter makes it very easy to create a new task item.
-Furthermore the implementations in the extensions sys\_action and
-impexp but also in other extensions in the TER provide a good basis to
-learn by example.
-
-
-.. toctree::
-   :maxdepth: 5
-   :titlesonly:
-   :glob:
-
-   CreatingANewTask/Index
-   TaskcenterApi/Index
-
diff --git a/typo3/sysext/taskcenter/Documentation/DevelopersGuide/TaskcenterApi/Index.rst b/typo3/sysext/taskcenter/Documentation/DevelopersGuide/TaskcenterApi/Index.rst
deleted file mode 100644 (file)
index fe8c1c6..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../../Includes.txt
-
-
-
-.. _taskcenter-api:
-
-Taskcenter API
-^^^^^^^^^^^^^^
-
-It is possible to refer to the Taskcenter from other extensions. Once
-a :code:`\TYPO3\CMS\Taskcenter\Controller\TaskModuleController` object
-has been instantiated all of its public methods can be used.
-The PHPdoc of the methods should be
-enough to understand what each is to be used for. It would be
-excessive to describe them all here.
-
-However a few deserve a special mention:
-
-- :code:`description()`: This method is used to render a description
-  including title and description.
-
-- :code:`renderListMenu()`: This method is used to render a menu of sub
-  items by a given array holding the following information: Title, Link,
-  Path to an icon, description and a special description which is not
-  using :code:`htmlspecialchars()`.
-
diff --git a/typo3/sysext/taskcenter/Documentation/Images/ExampleScreenshot.gif b/typo3/sysext/taskcenter/Documentation/Images/ExampleScreenshot.gif
deleted file mode 100644 (file)
index ec0b22d..0000000
Binary files a/typo3/sysext/taskcenter/Documentation/Images/ExampleScreenshot.gif and /dev/null differ
diff --git a/typo3/sysext/taskcenter/Documentation/Includes.txt b/typo3/sysext/taskcenter/Documentation/Includes.txt
deleted file mode 100644 (file)
index 6f6d15a..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. This is 'Includes.txt'. It is included at the very top of each and
-   every ReST source file in this documentation project (= manual).
-
-
-.. ==================================================
-.. DEFINE SOME TEXTROLES
-.. --------------------------------------------------
-
-.. role::   typoscript(code)
-
-.. role::   ts(typoscript)
-   :class:  typoscript
-
-.. role::   php(code)
-
-.. highlight:: php
diff --git a/typo3/sysext/taskcenter/Documentation/Index.rst b/typo3/sysext/taskcenter/Documentation/Index.rst
deleted file mode 100644 (file)
index e0b82bd..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: Includes.txt
-
-
-.. _start:
-
-==========
-Taskcenter
-==========
-
-:Extension key:
-      taskcenter
-
-:Version:
-      |release|
-
-:Language:
-      en
-
-:Description:
-      A user's personal communication center in the Backend.
-
-:Keywords:
-      taskcenter
-
-:Copyright:
-      2000-2019
-
-:Author:
-      TYPO3 CMS Core Development Team
-
-:License:
-      Open Content License available from `www.opencontent.org/opl.shtml
-      <http://www.opencontent.org/opl.shtml>`_
-
-:Rendered:
-      |today|
-
-The content of this document is related to TYPO3,
-
-a GNU/GPL CMS/Framework available from `www.typo3.org
-<http://www.typo3.org/>`_
-
-
-
-
-**Table of Contents**
-
-.. toctree::
-   :maxdepth: 5
-   :titlesonly:
-   :glob:
-
-   Introduction/Index
-   Administration/Index
-   DevelopersGuide/Index
-   Targets
-
diff --git a/typo3/sysext/taskcenter/Documentation/Introduction/Index.rst b/typo3/sysext/taskcenter/Documentation/Introduction/Index.rst
deleted file mode 100644 (file)
index 3acc1c1..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: ../Includes.txt
-
-
-
-.. _introduction:
-
-Introduction
-------------
-
-
-.. _what-does-it-do:
-
-What does it do?
-^^^^^^^^^^^^^^^^
-
-The Taskcenter is designed to be a place to manage all kind of tasks.
-It is especially useful for editors to have a central place of common
-activities in the TYPO3 backend. The tasks need to be implemented by
-other extensions, for example the system extension sys\_actions &
-impexp.
-
-
-.. _screenshots:
-
-Screenshots
-^^^^^^^^^^^
-
-This is a view of the BE module's main screen. 5 different tasks are
-implemented in this example.
-
-.. figure:: ../Images/ExampleScreenshot.gif
-   :alt: Example screenshot
-
-   The BE module with various tasks
-
diff --git a/typo3/sysext/taskcenter/Documentation/Settings.cfg b/typo3/sysext/taskcenter/Documentation/Settings.cfg
deleted file mode 100644 (file)
index 055545e..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-[general]
-
-project     = Task Center
-version     = latest (9-dev)
-release     = latest (9-dev)
-t3author    = Kasper Skaarhoj
-copyright   = 1997-2019
-
-description = This is the documentation of TYPO3's system extension
-      'taskcenter'. Actions are 'programmed' admin tasks which can
-      be performed by selected regular users from the Task Center.
-      An action can be the creation of a backend user, the
-      execution of a fixed SQL query and the similar.
-
-
-[html_theme_options]
-
-# Add 'Edit me on Github' button
-github_branch             = master
-github_repository         = TYPO3/TYPO3.CMS
-path_to_documentation_dir = typo3/sysext/taskcenter/Documentation
-
-# show as related links
-project_issues       = https://forge.typo3.org/projects/typo3cms-core/issues
-project_repository   = https://git.typo3.org/Packages/TYPO3.CMS.git
diff --git a/typo3/sysext/taskcenter/Documentation/Targets.rst b/typo3/sysext/taskcenter/Documentation/Targets.rst
deleted file mode 100644 (file)
index f8ba588..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. ==================================================
-.. FOR YOUR INFORMATION
-.. --------------------------------------------------
-.. -*- coding: utf-8 -*- with BOM.
-
-.. include:: Includes.txt
-
-.. _index-labels-for-crossreferencing:
-
-Index: Labels for Crossreferencing
-==================================
-
-.. ref-targets-list::
diff --git a/typo3/sysext/taskcenter/LICENSE.txt b/typo3/sysext/taskcenter/LICENSE.txt
deleted file mode 100644 (file)
index 95d36a7..0000000
+++ /dev/null
@@ -1,345 +0,0 @@
-Some icons used in the TYPO3 project are retrieved from the "Silk" icon set of
-Mark James, which can be found at http://famfamfam.com/lab/icons/silk/. This
-set is distributed under a Creative Commons Attribution 2.5 License. The
-license can be found at http://creativecommons.org/licenses/by/2.5/.
----------------------------------
-
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                            NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/typo3/sysext/taskcenter/Resources/Private/Language/locallang.xlf b/typo3/sysext/taskcenter/Resources/Private/Language/locallang.xlf
deleted file mode 100644 (file)
index d964d2d..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-       <file t3:id="1415815000" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:37Z" product-name="taskcenter">
-               <header/>
-               <body>
-                       <trans-unit id="taskcenter">
-                               <source>Taskcenter</source>
-                       </trans-unit>
-                       <trans-unit id="choose_task">
-                               <source>Task</source>
-                       </trans-unit>
-                       <trans-unit id="mlang_tabs_tab">
-                               <source>Tasks</source>
-                       </trans-unit>
-                       <trans-unit id="task_overview">
-                               <source>Overview</source>
-                       </trans-unit>
-                       <trans-unit id="task_tasks">
-                               <source>Tasks</source>
-                       </trans-unit>
-                       <trans-unit id="lReplyAddress">
-                               <source>Reply address is your email</source>
-                       </trans-unit>
-                       <trans-unit id="lSelf">
-                               <source>Self</source>
-                       </trans-unit>
-                       <trans-unit id="lSendNew">
-                               <source>Send message</source>
-                       </trans-unit>
-                       <trans-unit id="lSendReply">
-                               <source>Reply to message</source>
-                       </trans-unit>
-                       <trans-unit id="listSeparator_Groups">
-                               <source>__Groups:__</source>
-                       </trans-unit>
-                       <trans-unit id="lHomedir">
-                               <source>Home dir</source>
-                       </trans-unit>
-                       <trans-unit id="lNone">
-                               <source>[none]</source>
-                       </trans-unit>
-                       <trans-unit id="lCreate">
-                               <source>Create</source>
-                       </trans-unit>
-                       <trans-unit id="lCancel">
-                               <source>Cancel</source>
-                       </trans-unit>
-                       <trans-unit id="lDelete_warning">
-                               <source>Are you sure you want to delete this user?</source>
-                       </trans-unit>
-                       <trans-unit id="lDelete">
-                               <source>Delete</source>
-                       </trans-unit>
-                       <trans-unit id="lUpdate">
-                               <source>Update</source>
-                       </trans-unit>
-                       <trans-unit id="task_help_title">
-                               <source>About the taskcenter</source>
-                       </trans-unit>
-                       <trans-unit id="task_help_description">
-                               <source>Get more information about the taskcenter</source>
-                       </trans-unit>
-               </body>
-       </file>
-</xliff>
diff --git a/typo3/sysext/taskcenter/Resources/Private/Language/locallang_mod.xlf b/typo3/sysext/taskcenter/Resources/Private/Language/locallang_mod.xlf
deleted file mode 100644 (file)
index bf561a4..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-       <file t3:id="1415815002" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:37Z" product-name="taskcenter">
-               <header/>
-               <body>
-                       <trans-unit id="mlang_labels_tablabel">
-                               <source>Task Center with overviews, messages, ToDo lists</source>
-                       </trans-unit>
-                       <trans-unit id="mlang_labels_tabdescr">
-                               <source>The task center provides access to your internal To-Do list, messages, Quick-note, actions etc. It also provides shortcuts to your available frontend modules and most recently edited pages. The Task Center is where you keep track of your daily tasks and workflows.</source>
-                       </trans-unit>
-                       <trans-unit id="mlang_tabs_tab">
-                               <source>Task center</source>
-                       </trans-unit>
-               </body>
-       </file>
-</xliff>
diff --git a/typo3/sysext/taskcenter/Resources/Private/Language/locallang_task.xlf b/typo3/sysext/taskcenter/Resources/Private/Language/locallang_task.xlf
deleted file mode 100644 (file)
index dbee831..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
-       <file t3:id="1415815001" source-language="en" datatype="plaintext" original="messages" date="2011-10-17T20:22:37Z" product-name="taskcenter">
-               <header/>
-               <body>
-                       <trans-unit id="mlang_tabs_tab">
-                               <source>Tasks</source>
-                       </trans-unit>
-                       <trans-unit id="task_overview">
-                               <source>Overview</source>
-                       </trans-unit>
-                       <trans-unit id="error_header">
-                               <source>Error</source>
-                       </trans-unit>
-                       <trans-unit id="error-access">
-                               <source>No access to this module.</source>
-                       </trans-unit>
-                       <trans-unit id="error_no-instance">
-                               <source>The class "%s" does not implement the task interface "%s" which is necessary to be displayed here.</source>
-                       </trans-unit>
-                       <trans-unit id="no-tasks">
-                               <source>No tasks have been registered yet.</source>
-                       </trans-unit>
-                       <trans-unit id="lReplyAddress">
-                               <source>Reply address is your email</source>
-                       </trans-unit>
-                       <trans-unit id="lSelf">
-                               <source>Self</source>
-                       </trans-unit>
-                       <trans-unit id="lSendNew">
-                               <source>Send message</source>
-                       </trans-unit>
-                       <trans-unit id="lSendReply">
-                               <source>Reply to message</source>
-                       </trans-unit>
-                       <trans-unit id="listSeparator_Groups">
-                               <source>__Groups:__</source>
-                       </trans-unit>
-                       <trans-unit id="lHomedir">
-                               <source>Home dir</source>
-                       </trans-unit>
-                       <trans-unit id="lNone">
-                               <source>[none]</source>
-                       </trans-unit>
-                       <trans-unit id="lCreate">
-                               <source>Create</source>
-                       </trans-unit>
-                       <trans-unit id="lCancel">
-                               <source>Cancel</source>
-                       </trans-unit>
-                       <trans-unit id="lDelete_warning_title">
-                               <source>Please confirm</source>
-                       </trans-unit>
-                       <trans-unit id="lDelete_warning">
-                               <source>Are you sure you want to delete this user?</source>
-                       </trans-unit>
-                       <trans-unit id="lDelete">
-                               <source>Delete</source>
-                       </trans-unit>
-                       <trans-unit id="lUpdate">
-                               <source>Update</source>
-                       </trans-unit>
-                       <trans-unit id="taskcenter-about" xml:space="preserve">
-                               <source>
-&lt;p&gt;The menu on the left side shows all allowed tasks and let you allow to complete your tasks in an efficient way.&lt;/p&gt;
-&lt;ul class="withicons"&gt;
-&lt;li&gt;Clicking on the title of a task will open a detailed view of the task itself.&lt;/li&gt;
-&lt;li&gt;Click on the arrow on the right side will open/close the submenu of the task.&lt;/li&gt;
-&lt;/ul&gt;
-&lt;br /&gt;
-&lt;strong&gt;Note:&lt;/strong&gt; Set the taskcenter as the default module after your login to be even faster!
-
-</source>
-                       </trans-unit>
-                       <trans-unit id="taskcenter-adminheader">
-                               <source>Create a task</source>
-                       </trans-unit>
-                       <trans-unit id="taskcenter-admin">
-                               <source>It is simple to extend the taskcenter by a custom task. For more information please look into the manual of the extension 'taskcenter'.</source>
-                       </trans-unit>
-               </body>
-       </file>
-</xliff>
diff --git a/typo3/sysext/taskcenter/Resources/Private/Partials/Description.html b/typo3/sysext/taskcenter/Resources/Private/Partials/Description.html
deleted file mode 100644 (file)
index 052a910..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<h1>{title -> f:format.nl2br()}</h1>
-<f:if condition="{description}">
-    <p>
-        {description -> f:format.nl2br()}
-    </p>
-</f:if>
diff --git a/typo3/sysext/taskcenter/Resources/Private/Partials/UrlInIframe.html b/typo3/sysext/taskcenter/Resources/Private/Partials/UrlInIframe.html
deleted file mode 100644 (file)
index 1096fc9..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<div class="panel panel-default">
-    <iframe scrolling="auto"  width="100%" src="{url}" name="list_frame" id="list_frame" frameborder="no" style="height: 500px"></iframe>
-</div>
\ No newline at end of file
diff --git a/typo3/sysext/taskcenter/Resources/Private/Templates/InformationContent.html b/typo3/sysext/taskcenter/Resources/Private/Templates/InformationContent.html
deleted file mode 100644 (file)
index 0032771..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<f:render partial="Description" arguments="{title: '{f:translate(key: \'{LLPrefix}mlang_tabs_tab\')}', description: '{f:translate(key: \'{LLPrefixMod}mlang_labels_tabdescr\')}'}" />
-<f:format.raw>
-    <f:translate key="{LLPrefixTask}taskcenter-about"/>
-</f:format.raw>
-<f:if condition="{admin}">
-    <br /><br />
-    <f:render partial="Description" arguments="{title: '{f:translate(key: \'{LLPrefixTask}taskcenter-adminheader\')}', description: '{f:translate(key: \'{LLPrefixTask}taskcenter-admin\')}'}" />
-</f:if>
diff --git a/typo3/sysext/taskcenter/Resources/Private/Templates/ListMenu.html b/typo3/sysext/taskcenter/Resources/Private/Templates/ListMenu.html
deleted file mode 100644 (file)
index ab73b05..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<f:if condition="{mainMenu}">
-    <f:then>
-        <f:be.pageRenderer includeRequireJsModules="{0:'TYPO3/CMS/Taskcenter/Taskcenter'}" />
-        <ul id="task-list" class="list-unstyled">
-    </f:then>
-    <f:else>
-        <ul class="list-unstyled">
-    </f:else>
-</f:if>
-<f:for each="{items}" as="item" key="itemKey">
-    <f:render section="Item" arguments="{item: item, itemKey: itemKey}" />
-</f:for>
-
-</ul>
-
-<f:section name="Item">
-    <li id="el_{item.uniqueKey}">
-        <div id="{item.contentId}" data-taskcenter-id="{item.uniqueKey}" class="panel {item.panelState}">
-            <div class="panel-heading">
-                <div class="panel-heading-right">
-                    <a href="#task_content_{item.contentId}" class="panel-header-collapse t3js-taskcenter-header-collapse" role="button" data-toggle="collapse" data-uid="{item.contentId}" aria-expanded="{item.ariaExpanded}">
-                        <core:icon identifier="{item.collapseIcon}" />
-                    </a>
-                </div>
-                <div class="panel-heading-left">
-                    <a href="{item.link}" class="panel-title">
-                        <f:if condition="{item.icon}">
-                            <span class="panel-title-icon">
-                                <f:if condition="{item.iconFile}">
-                                    <f:then>
-                                        <img src="{item.iconFile}" width="16" height="16" title="{item.title}" alt="{item.title}" />
-                                    </f:then>
-                                    <f:else>
-                                        {item.icon -> f:format.raw()}
-                                    </f:else>
-                                </f:if>
-                            </span>
-                        </f:if>
-                        <span class="panel-title-name">
-                            {item.title}
-                            <core:icon identifier="actions-view-table-expand" />
-                        </span>
-                    </a>
-                </div>
-            </div>
-            <div id="task_content_{item.contentId}" class="panel-collapse collapse t3js-taskcenter-collapse {item.collapsed}" aria-expanded="true">
-                <div class="panel-body">
-                    <f:if condition="{item.descriptionHtml}">
-                        <f:then>
-                            {item.descriptionHtml -> f:format.raw()}
-                        </f:then>
-                        <f:else>
-                            <p>
-                                {item.description -> f:format.nl2br()}
-                            </p>
-                        </f:else>
-                    </f:if>
-                </div>
-            </div>
-        </div>
-    </li>
-</f:section>
\ No newline at end of file
diff --git a/typo3/sysext/taskcenter/Resources/Private/Templates/ModuleContent.html b/typo3/sysext/taskcenter/Resources/Private/Templates/ModuleContent.html
deleted file mode 100644 (file)
index 32e055a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<div class="taskcenter">
-    <div class="row">
-        <div class="col-sm-4 col-md-3">
-            <div class="taskcenter-menu">
-                {reports -> f:format.raw()}
-            </div>
-        </div>
-        <div class="col-sm-8 col-md-9">
-            <div class="taskcenter-content taskcenter-content-{taskClass}">
-                {actionContent -> f:format.raw()}
-            </div>
-        </div>
-    </div>
-</div>
\ No newline at end of file
diff --git a/typo3/sysext/taskcenter/Resources/Public/Icons/Extension.png b/typo3/sysext/taskcenter/Resources/Public/Icons/Extension.png
deleted file mode 100644 (file)
index 4f107ff..0000000
Binary files a/typo3/sysext/taskcenter/Resources/Public/Icons/Extension.png and /dev/null differ
diff --git a/typo3/sysext/taskcenter/Resources/Public/Icons/module-taskcenter.svg b/typo3/sysext/taskcenter/Resources/Public/Icons/module-taskcenter.svg
deleted file mode 100644 (file)
index bddd779..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="24 -24 64 64"><style>.st0{fill:#3471a9}.st1{fill:#fff}</style><path class="st0" d="M24-24h64v64H24v-64z"/><path class="st1" d="M71-6H41a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h30a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1z"/><path class="st0" d="M62-4h8v4h-8z"/><path class="st1" d="M71 4H41a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h30a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1z"/><path class="st0" d="M52 6h18v4H52z"/><path class="st1" d="M71 14H41a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h30a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1z"/><path class="st0" d="M58 16h12v4H58z"/></svg>
\ No newline at end of file
diff --git a/typo3/sysext/taskcenter/Resources/Public/Images/list-item-act.gif b/typo3/sysext/taskcenter/Resources/Public/Images/list-item-act.gif
deleted file mode 100644 (file)
index 4bee494..0000000
Binary files a/typo3/sysext/taskcenter/Resources/Public/Images/list-item-act.gif and /dev/null differ
diff --git a/typo3/sysext/taskcenter/Resources/Public/Images/list-item.gif b/typo3/sysext/taskcenter/Resources/Public/Images/list-item.gif
deleted file mode 100644 (file)
index 7c77774..0000000
Binary files a/typo3/sysext/taskcenter/Resources/Public/Images/list-item.gif and /dev/null differ
diff --git a/typo3/sysext/taskcenter/Resources/Public/JavaScript/Taskcenter.js b/typo3/sysext/taskcenter/Resources/Public/JavaScript/Taskcenter.js
deleted file mode 100644 (file)
index 9012e9c..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * Module: TYPO3/CMS/Taskcenter/Taskcenter
- */
-define(['jquery',
-  'TYPO3/CMS/Backend/Icons',
-  'jquery-ui/sortable'
-], function($, Icons) {
-  'use strict';
-
-  /**
-   *
-   * @type {{}}
-   * @exports  TYPO3/CMS/Taskcenter/Taskcenter
-   */
-  var Taskcenter = {};
-
-  /**
-   *
-   * @param {Object} element
-   * @param {Boolean} isCollapsed
-   */
-  Taskcenter.collapse = function(element, isCollapsed) {
-    var $item = $(element);
-    var $parent = $item.parent();
-    var $icon = $parent.find('.t3js-taskcenter-header-collapse .t3js-icon');
-    var isCollapsed = isCollapsed;
-    var iconName;
-
-    if (isCollapsed) {
-      iconName = 'actions-view-list-expand';
-    } else {
-      iconName = 'actions-view-list-collapse';
-    }
-    Icons.getIcon(iconName, Icons.sizes.small, null, null, 'inline').done(function(icon) {
-      $icon.replaceWith(icon);
-    });
-
-    $.ajax({
-      url: TYPO3.settings.ajaxUrls['taskcenter_collapse'],
-      type: 'post',
-      cache: false,
-      data: {
-        'item': $parent.data('taskcenterId'),
-        'state': isCollapsed
-      }
-    });
-  };
-
-  /**
-   *
-   */
-  Taskcenter.initializeSorting = function() {
-    $('#task-list').sortable({
-      update: function(event, ui) {
-        $.ajax({
-          url: TYPO3.settings.ajaxUrls['taskcenter_sort'],
-          type: 'post',
-          cache: false,
-          data: {
-            'data': $(this).sortable('serialize', {
-              key: 'task-list[]',
-              expression: /[=_](.+)/
-            })
-          }
-        });
-      }
-    });
-  };
-
-  /**
-   * Register listeners
-   */
-  Taskcenter.initializeEvents = function() {
-    $('.t3js-taskcenter-collapse').on('show.bs.collapse', function() {
-      Taskcenter.collapse($(this), 0);
-    });
-    $('.t3js-taskcenter-collapse').on('hide.bs.collapse', function() {
-      Taskcenter.collapse($(this), 1);
-    });
-    Taskcenter.initializeSorting();
-  };
-
-  $(Taskcenter.initializeEvents);
-
-  return Taskcenter;
-});
diff --git a/typo3/sysext/taskcenter/composer.json b/typo3/sysext/taskcenter/composer.json
deleted file mode 100644 (file)
index 1556a42..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-       "name": "typo3/cms-taskcenter",
-       "type": "typo3-cms-framework",
-       "description": "The Task Center is the framework for a host of other extensions, see below.",
-       "homepage": "https://typo3.org",
-       "license": ["GPL-2.0-or-later"],
-       "authors": [{
-               "name": "TYPO3 Core Team",
-               "email": "typo3cms@typo3.org",
-               "role": "Developer"
-       }],
-       "config": {
-               "sort-packages": true
-       },
-       "require": {
-               "typo3/cms-core": "10.0.*@dev"
-       },
-       "conflict": {
-               "typo3/cms": "*"
-       },
-       "replace": {
-               "taskcenter": "*"
-       },
-       "extra": {
-               "branch-alias": {
-                       "dev-master": "10.0.x-dev"
-               },
-               "typo3/cms": {
-                       "extension-key": "taskcenter"
-               }
-       },
-       "autoload": {
-               "psr-4": {
-                       "TYPO3\\CMS\\Taskcenter\\": "Classes/"
-               }
-       }
-}
diff --git a/typo3/sysext/taskcenter/ext_emconf.php b/typo3/sysext/taskcenter/ext_emconf.php
deleted file mode 100644 (file)
index 39ac620..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-$EM_CONF[$_EXTKEY] = [
-    'title' => 'User>Task Center',
-    'description' => 'The Task Center is the framework for a host of other extensions, see below.',
-    'category' => 'module',
-    'state' => 'stable',
-    'createDirs' => '',
-    'clearCacheOnLoad' => 0,
-    'author' => 'TYPO3 Core Team',
-    'author_email' => 'typo3cms@typo3.org',
-    'author_company' => '',
-    'version' => '10.0.0',
-    'constraints' => [
-        'depends' => [
-            'typo3' => '10.0.0',
-        ],
-        'conflicts' => [],
-        'suggests' => [
-            'sys_action' => '10.0.0',
-        ],
-    ],
-];
diff --git a/typo3/sysext/taskcenter/ext_tables.php b/typo3/sysext/taskcenter/ext_tables.php
deleted file mode 100644 (file)
index 7bac1c9..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<?php
-defined('TYPO3_MODE') or die();
-
-\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule(
-    'user',
-    'task',
-    'top',
-    '',
-    [
-        'routeTarget' => \TYPO3\CMS\Taskcenter\Controller\TaskModuleController::class . '::mainAction',
-        'access' => 'group,user',
-        'name' => 'user_task',
-        'icon' => 'EXT:taskcenter/Resources/Public/Icons/module-taskcenter.svg',
-        'labels' => 'LLL:EXT:taskcenter/Resources/Private/Language/locallang_mod.xlf'
-    ]
-);