[TASK] Move arguments to initializeArguments() in TableListVH in ext:fluid 06/49006/2
authorRoberto Torresani <erreti@gmail.com>
Sat, 16 Jul 2016 20:04:12 +0000 (22:04 +0200)
committerSusanne Moog <typo3@susannemoog.de>
Tue, 19 Jul 2016 05:25:39 +0000 (07:25 +0200)
Move the argument registrations away from the render() method
to initializeArguments(), to prevent any errors with PHP7 and
subclassed ViewHelpers if/when render() method signatures change.

Resolves: #77129
Releases: master
Change-Id: Ibd7794dfa6d023d4f663c25bbe7875ae8f910c55
Reviewed-on: https://review.typo3.org/49006
Tested-by: Bamboo TYPO3com <info@typo3.com>
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Reviewed-by: Joerg Boesche <typo3@joergboesche.de>
Reviewed-by: Susanne Moog <typo3@susannemoog.de>
Tested-by: Susanne Moog <typo3@susannemoog.de>
typo3/sysext/fluid/Classes/ViewHelpers/Be/TableListViewHelper.php

index e051b8d..9da4312 100644 (file)
@@ -64,25 +64,47 @@ class TableListViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBacken
     }
 
     /**
+     * Initialize arguments.
+     *
+     * @api
+     * @throws \TYPO3Fluid\Fluid\Core\ViewHelper\Exception
+     */
+    public function initializeArguments()
+    {
+        $this->registerArgument('tableName', 'string', 'name of the database table', true);
+        $this->registerArgument('fieldList', 'array', 'list of fields to be displayed. If empty, only the title column (configured in $TCA[$tableName][\'ctrl\'][\'title\']) is shown', false, array());
+        $this->registerArgument('storagePid', 'int', 'by default, records are fetched from the storage PID configured in persistence.storagePid. With this argument, the storage PID can be overwritten');
+        $this->registerArgument('levels', 'int', 'corresponds to the level selector of the TYPO3 list module. By default only records from the current storagePid are fetched', false, 0);
+        $this->registerArgument('filter', 'string', 'corresponds to the "Search String" textbox of the TYPO3 list module. If not empty, only records matching the string will be fetched', false, '');
+        $this->registerArgument('recordsPerPage', 'int', 'amount of records to be displayed at once. Defaults to $TCA[$tableName][\'interface\'][\'maxSingleDBListItems\'] or (if that\'s not set) to 100', false, 0);
+        $this->registerArgument('sortField', 'string', 'table field to sort the results by', false, '');
+        $this->registerArgument('sortDescending', 'bool', 'if TRUE records will be sorted in descending order', false, false);
+        $this->registerArgument('readOnly', 'bool', 'if TRUE, the edit icons won\'t be shown. Otherwise edit icons will be shown, if the current BE user has edit rights for the specified table!', false, false);
+        $this->registerArgument('enableClickMenu', 'bool', 'enables context menu', false, true);
+        $this->registerArgument('clickTitleMode', 'string', 'one of "edit", "show" (only pages, tt_content), "info');
+    }
+
+    /**
      * Renders a record list as known from the TYPO3 list module
      * Note: This feature is experimental!
      *
-     * @param string $tableName name of the database table
-     * @param array $fieldList list of fields to be displayed. If empty, only the title column (configured in $TCA[$tableName]['ctrl']['title']) is shown
-     * @param int $storagePid by default, records are fetched from the storage PID configured in persistence.storagePid. With this argument, the storage PID can be overwritten
-     * @param int $levels corresponds to the level selector of the TYPO3 list module. By default only records from the current storagePid are fetched
-     * @param string $filter corresponds to the "Search String" textbox of the TYPO3 list module. If not empty, only records matching the string will be fetched
-     * @param int $recordsPerPage amount of records to be displayed at once. Defaults to $TCA[$tableName]['interface']['maxSingleDBListItems'] or (if that's not set) to 100
-     * @param string $sortField table field to sort the results by
-     * @param bool $sortDescending if TRUE records will be sorted in descending order
-     * @param bool $readOnly if TRUE, the edit icons won't be shown. Otherwise edit icons will be shown, if the current BE user has edit rights for the specified table!
-     * @param bool $enableClickMenu enables context menu
-     * @param string $clickTitleMode one of "edit", "show" (only pages, tt_content), "info
      * @return string the rendered record list
      * @see \TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList
      */
-    public function render($tableName, array $fieldList = array(), $storagePid = null, $levels = 0, $filter = '', $recordsPerPage = 0, $sortField = '', $sortDescending = false, $readOnly = false, $enableClickMenu = true, $clickTitleMode = null)
+    public function render()
     {
+        $tableName = $this->arguments['tableName'];
+        $fieldList = $this->arguments['fieldList'];
+        $storagePid = $this->arguments['storagePid'];
+        $levels = $this->arguments['levels'];
+        $filter = $this->arguments['filter'];
+        $recordsPerPage = $this->arguments['recordsPerPage'];
+        $sortField = $this->arguments['sortField'];
+        $sortDescending = $this->arguments['sortDescending'];
+        $readOnly = $this->arguments['readOnly'];
+        $enableClickMenu = $this->arguments['enableClickMenu'];
+        $clickTitleMode = $this->arguments['clickTitleMode'];
+
         $pageinfo = BackendUtility::readPageAccess(GeneralUtility::_GP('id'), $GLOBALS['BE_USER']->getPagePermsClause(1));
         /** @var $dblist \TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList */
         $dblist = GeneralUtility::makeInstance(\TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList::class);