Revert "[CLEANUP] Rework/simplify copyright header and remove @package"
[Packages/TYPO3.CMS.git] / typo3 / sysext / fluid / Classes / ViewHelpers / Be / TableListViewHelper.php
1 <?php
2 namespace TYPO3\CMS\Fluid\ViewHelpers\Be;
3
4 /* *
5 * This script is backported from the TYPO3 Flow package "TYPO3.Fluid". *
6 * *
7 * It is free software; you can redistribute it and/or modify it under *
8 * the terms of the GNU Lesser General Public License, either version 3 *
9 * of the License, or (at your option) any later version. *
10 * *
11 * *
12 * This script is distributed in the hope that it will be useful, but *
13 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- *
14 * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser *
15 * General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU Lesser General Public *
18 * License along with the script. *
19 * If not, see http://www.gnu.org/licenses/lgpl.html *
20 * *
21 * The TYPO3 project - inspiring people to share! *
22 * */
23 /**
24 * View helper which renders a record list as known from the TYPO3 list module
25 * Note: This feature is experimental!
26 *
27 * = Examples =
28 *
29 * <code title="Minimal">
30 * <f:be.tableList tableName="fe_users" />
31 * </code>
32 * <output>
33 * List of all "Website user" records stored in the configured storage PID.
34 * Records will be editable, if the current BE user has got edit rights for the table "fe_users".
35 * Only the title column (username) will be shown.
36 * Context menu is active.
37 * </output>
38 *
39 * <code title="Full">
40 * <f:be.tableList tableName="fe_users" fieldList="{0: 'name', 1: 'email'}" storagePid="1" levels="2" filter='foo' recordsPerPage="10" sortField="name" sortDescending="true" readOnly="true" enableClickMenu="false" clickTitleMode="info" alternateBackgroundColors="true" />
41 * </code>
42 * <output>
43 * List of "Website user" records with a text property of "foo" stored on PID 1 and two levels down.
44 * Clicking on a username will open the TYPO3 info popup for the respective record
45 * </output>
46 */
47 class TableListViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBackendViewHelper {
48
49 /**
50 * @var \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
51 * @inject
52 */
53 protected $configurationManager;
54
55 /**
56 * Renders a record list as known from the TYPO3 list module
57 * Note: This feature is experimental!
58 *
59 * @param string $tableName name of the database table
60 * @param array $fieldList list of fields to be displayed. If empty, only the title column (configured in $TCA[$tableName]['ctrl']['title']) is shown
61 * @param integer $storagePid by default, records are fetched from the storage PID configured in persistence.storagePid. With this argument, the storage PID can be overwritten
62 * @param integer $levels corresponds to the level selector of the TYPO3 list module. By default only records from the current storagePid are fetched
63 * @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
64 * @param integer $recordsPerPage amount of records to be displayed at once. Defaults to $TCA[$tableName]['interface']['maxSingleDBListItems'] or (if that's not set) to 100
65 * @param string $sortField table field to sort the results by
66 * @param boolean $sortDescending if TRUE records will be sorted in descending order
67 * @param boolean $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!
68 * @param boolean $enableClickMenu enables context menu
69 * @param string $clickTitleMode one of "edit", "show" (only pages, tt_content), "info
70 * @param boolean $alternateBackgroundColors if set, rows will have alternate background colors
71 * @return string the rendered record list
72 * @see localRecordList
73 */
74 public function render($tableName, array $fieldList = array(), $storagePid = NULL, $levels = 0, $filter = '', $recordsPerPage = 0, $sortField = '', $sortDescending = FALSE, $readOnly = FALSE, $enableClickMenu = TRUE, $clickTitleMode = NULL, $alternateBackgroundColors = FALSE) {
75 $pageinfo = \TYPO3\CMS\Backend\Utility\BackendUtility::readPageAccess(\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('id'), $GLOBALS['BE_USER']->getPagePermsClause(1));
76 /** @var $dblist \TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList */
77 $dblist = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Recordlist\\RecordList\\DatabaseRecordList');
78 $dblist->backPath = $GLOBALS['BACK_PATH'];
79 $dblist->pageRow = $pageinfo;
80 if ($readOnly === FALSE) {
81 $dblist->calcPerms = $GLOBALS['BE_USER']->calcPerms($pageinfo);
82 }
83 $dblist->showClipboard = FALSE;
84 $dblist->disableSingleTableView = TRUE;
85 $dblist->clickTitleMode = $clickTitleMode;
86 $dblist->alternateBgColors = $alternateBackgroundColors;
87 $dblist->clickMenuEnabled = $enableClickMenu;
88 if ($storagePid === NULL) {
89 $frameworkConfiguration = $this->configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
90 $storagePid = $frameworkConfiguration['persistence']['storagePid'];
91 }
92 $dblist->start($storagePid, $tableName, (int)\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('pointer'), $filter, $levels, $recordsPerPage);
93 $dblist->allFields = TRUE;
94 $dblist->dontShowClipControlPanels = TRUE;
95 $dblist->displayFields = FALSE;
96 $dblist->setFields = array($tableName => $fieldList);
97 $dblist->noControlPanels = TRUE;
98 $dblist->sortField = $sortField;
99 $dblist->sortRev = $sortDescending;
100 $dblist->script = $_SERVER['REQUEST_URI'];
101 $dblist->generateList();
102 return $dblist->HTMLcode;
103 }
104 }