/** * Returns the New Icon with link * * @param string $table Table name * @param array $row Data row * @return string html output */ protected function getNewIcon($table, array $row) { $params .= '&edit[' . $table . '][' . $row['storagePid'] . ']=new'; $title = Tx_Extbase_Utility_Localization::translate('be.newEvent', 'woehrl_seminare', $arguments = NULL); $icon = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $this->backPath, -1)) . '" title="' . $title . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-new') . '</a>'; return $icon; }
/** * Main function * * @return void */ function main() { switch ((string) t3lib_div::_GET('cmd')) { case 'menuitem': echo ' <img src="gfx/x_t3logo.png" width="61" height="16" hspace="3" alt="" />'; $menuItems = array(array('title' => 'About TYPO3', 'xurl' => 'http://typo3.com/', 'subitems' => array(array('title' => 'License', 'xurl' => 'http://typo3.com/License.1625.0.html'), array('title' => 'Support', 'subitems' => array(array('title' => 'Mailing lists', 'xurl' => 'http://lists.netfielders.de/cgi-bin/mailman/listinfo'), array('title' => 'Documentation', 'xurl' => 'http://typo3.org/documentation/'), array('title' => 'Find consultancy', 'xurl' => 'http://typo3.com/Consultancies.1248.0.html'))), array('title' => 'Contribute', 'xurl' => 'http://typo3.org/community/participate/'), array('title' => 'Donate', 'xurl' => 'http://typo3.com/Donations.1261.0.html', 'icon' => '1'))), array('title' => 'Extensions', 'url' => 'mod/tools/em/index.php'), array('title' => 'Menu preferences and such things', 'onclick' => 'alert("A dialog is now shown which will allow user configuration of items in the menu");event.stopPropagation();', 'state' => 'checked'), array('title' => '--div--'), array('title' => 'Recent Items', 'id' => $this->id . '_recent', 'subitems' => array(), 'html' => $this->menuItemObject($this->id . '_recent', ' fetched: false, onActivate: function() { // if (!this.fetched) { //Element.update("' . $this->id . '_recent-layer","asdfasdf"); getElementContent("' . $this->id . '_recent-layer", 0, "logomenu.php?cmd=recent") this.fetched = true; // } } ')), array('title' => '--div--'), array('title' => 'View frontend', 'xurl' => t3lib_div::getIndpEnv('TYPO3_SITE_URL')), array('title' => 'Log out', 'onclick' => "top.document.location='logout.php';")); echo $this->menuLayer($menuItems); break; case 'recent': $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('sys_log.*, MAX(sys_log.tstamp) AS tstamp_MAX', 'sys_log,pages', 'pages.uid=sys_log.event_pid AND sys_log.userid=' . intval($GLOBALS['BE_USER']->user['uid']) . ' AND sys_log.event_pid>0 AND sys_log.type=1 AND sys_log.action=2 AND sys_log.error=0', 'tablename,recuid', 'tstamp_MAX DESC', 20); $items = array(); while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $elRow = t3lib_BEfunc::getRecord($row['tablename'], $row['recuid']); if (is_array($elRow)) { $items[] = array('title' => t3lib_div::fixed_lgd_cs(t3lib_BEfunc::getRecordTitle($row['tablename'], $elRow), $GLOBALS['BE_USER']->uc['titleLen']) . ' - ' . t3lib_BEfunc::calcAge($GLOBALS['EXEC_TIME'] - $row['tstamp_MAX']), 'icon' => array(t3lib_iconworks::getIcon($row['tablename'], $elRow), 'width="18" height="16"'), 'onclick' => 'content.' . t3lib_BEfunc::editOnClick('&edit[' . $row['tablename'] . '][' . $row['recuid'] . ']=edit', '', 'dummy.php')); } } echo $this->menuItems($items); break; } }
/** * [Describe function...] * * @param [type] $rec: ... * @return [type] ... */ function makeTableRow($rec) { //Render information for base record: $baseRecord = t3lib_BEfunc::getRecordWSOL($rec['tablename'], $rec['recuid']); $icon = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForRecord($rec['tablename'], $baseRecord); $title = t3lib_BEfunc::getRecordTitle($rec['tablename'], $baseRecord, 1); $baseRecordFlag = '<img src="' . htmlspecialchars($GLOBALS['BACK_PATH'] . $this->sysLanguages[$rec['sys_language_uid']]['flagIcon']) . '" alt="" title="" />'; $tFlag = '<img src="' . htmlspecialchars($GLOBALS['BACK_PATH'] . $this->sysLanguages[$rec['translation_lang']]['flagIcon']) . '" alt="' . htmlspecialchars($this->sysLanguages[$rec['translation_lang']]['title']) . '" title="' . htmlspecialchars($this->sysLanguages[$rec['translation_lang']]['title']) . '" />'; $baseRecordStr = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick('&edit[' . $rec['tablename'] . '][' . $rec['recuid'] . ']=edit', $this->doc->backPath)) . '">' . $icon . $title . '</a>'; // Render for translation if any: $translationRecord = false; if ($rec['translation_recuid']) { $translationTable = $this->l10nMgrTools->t8Tools->getTranslationTable($rec['tablename']); $translationRecord = t3lib_BEfunc::getRecordWSOL($translationTable, $rec['translation_recuid']); $icon = \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIconForRecord($translationTable, $translationRecord); $title = t3lib_BEfunc::getRecordTitle($translationTable, $translationRecord, 1); $translationRecStr = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick('&edit[' . $translationTable . '][' . $translationRecord['uid'] . ']=edit', $this->doc->backPath)) . '">' . $icon . $title . '</a>'; } else { $translationRecStr = ''; } // Action: if (is_array($translationRecord)) { $action = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick('&edit[' . $translationTable . '][' . $translationRecord['uid'] . ']=edit', $this->doc->backPath)) . '"><em>[Edit]</em></a>'; } elseif ($rec['sys_language_uid'] == -1) { $action = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick('&edit[' . $rec['tablename'] . '][' . $rec['recuid'] . ']=edit', $this->doc->backPath)) . '"><em>[Edit]</em></a>'; } else { $action = '<a href="' . htmlspecialchars($this->doc->issueCommand('&cmd[' . $rec['tablename'] . '][' . $rec['recuid'] . '][localize]=' . $rec['translation_lang'])) . '"><em>[Localize]</em></a>'; } return '<tr class="bgColor4-20"> <td valign="top">' . $baseRecordFlag . '</td> <td valign="top" nowrap="nowrap">' . $baseRecordStr . '</td> <td valign="top">' . $tFlag . '</td> <td valign="top" nowrap="nowrap">' . $translationRecStr . '</td> <td valign="top">' . $action . '</td> <td align="center"' . ($rec['flag_new'] ? ' bgcolor="#91B5FF"' : '') . '>' . ($rec['flag_new'] ? $rec['flag_new'] : '') . '</td> <td align="center"' . ($rec['flag_unknown'] ? ' bgcolor="#FEFF5A"' : '') . '>' . ($rec['flag_unknown'] ? $rec['flag_unknown'] : '') . '</td> <td align="center"' . ($rec['flag_update'] ? ' bgcolor="#FF7161"' : '') . '>' . ($rec['flag_update'] ? $rec['flag_update'] : '') . '</td> <td align="center"' . ($rec['flag_noChange'] ? ' bgcolor="#78FF82"' : '') . '>' . ($rec['flag_noChange'] ? $rec['flag_noChange'] : '') . '</td> <td>' . implode('<br/>', unserialize($rec['serializedDiff'])) . '</td> </tr>'; }
/** * Returns an HTML link for editing * * @param string $label: The label (or image) * @param string $table: The table, fx. 'tt_content' * @param integer $uid: The uid of the element to be edited * @param boolean $forced: By default the link is not shown if translatorMode is set, but with this boolean it can be forced anyway. * @return string HTML anchor tag containing the label and the correct link * @access protected */ function link_edit($label, $table, $uid, $forced = FALSE) { if ($label) { if (($table == 'pages' && $this->calcPerms & 2 || $table != 'pages' && $this->calcPerms & 16) && (!$this->translatorMode || $forced)) { if ($table == "pages" && $this->currentLanguageUid) { return '<a href="index.php?' . $this->link_getParameters() . '&editPageLanguageOverlay=' . $this->currentLanguageUid . '">' . $label . '</a>'; } else { $onClick = t3lib_BEfunc::editOnClick('&edit[' . $table . '][' . $uid . ']=edit', $this->doc->backPath); return '<a style="text-decoration: none;" href="#" onclick="' . htmlspecialchars($onClick) . '">' . $label . '</a>'; } } else { return $label; } } return ''; }
/** * The main processing method if this class * * @return string Information of the template status or the taken actions as HTML string */ function main() { global $SOBE, $BE_USER, $LANG, $BACK_PATH, $TCA_DESCR, $TCA, $CLIENT, $TYPO3_CONF_VARS; global $tmpl, $tplRow, $theConstants; $edit = $this->pObj->edit; $e = $this->pObj->e; t3lib_div::loadTCA('sys_template'); // ************************** // Checking for more than one template an if, set a menu... // ************************** $manyTemplatesMenu = $this->pObj->templateMenu(); $template_uid = 0; if ($manyTemplatesMenu) { $template_uid = $this->pObj->MOD_SETTINGS['templatesOnPage']; } // ************************** // Initialize // ************************** $existTemplate = $this->initialize_editor($this->pObj->id, $template_uid); // initialize if ($existTemplate) { $saveId = $tplRow['_ORIG_uid'] ? $tplRow['_ORIG_uid'] : $tplRow['uid']; } // ************************** // Create extension template // ************************** $newId = $this->pObj->createTemplate($this->pObj->id, $saveId); if ($newId) { // switch to new template t3lib_utility_Http::redirect('index.php?id=' . $this->pObj->id . '&SET[templatesOnPage]=' . $newId); } if ($existTemplate) { // Update template ? $POST = t3lib_div::_POST(); if ($POST['submit'] || t3lib_div::testInt($POST['submit_x']) && t3lib_div::testInt($POST['submit_y']) || $POST['saveclose'] || t3lib_div::testInt($POST['saveclose_x']) && t3lib_div::testInt($POST['saveclose_y'])) { // Set the data to be saved $recData = array(); $alternativeFileName = array(); $resList = $tplRow['resources']; $tmp_upload_name = ''; $tmp_newresource_name = ''; // Set this to blank if (is_array($POST['data'])) { foreach ($POST['data'] as $field => $val) { switch ($field) { case 'constants': case 'config': case 'title': case 'sitetitle': case 'description': $recData['sys_template'][$saveId][$field] = $val; break; case 'resources': $tmp_upload_name = t3lib_div::upload_to_tempfile($_FILES['resources']['tmp_name']); // If there is an uploaded file, move it for the sake of safe_mode. if ($tmp_upload_name) { if ($tmp_upload_name != 'none' && $_FILES['resources']['name']) { $alternativeFileName[$tmp_upload_name] = trim($_FILES['resources']['name']); $resList = $tmp_upload_name . ',' . $resList; } } break; case 'new_resource': $newName = trim(t3lib_div::_GP('new_resource')); if ($newName) { $newName .= '.' . t3lib_div::_GP('new_resource_ext'); $tmp_newresource_name = t3lib_div::tempnam('new_resource_'); $alternativeFileName[$tmp_newresource_name] = $newName; $resList = $tmp_newresource_name . ',' . $resList; } break; case 'makecopy_resource': if (is_array($val)) { $resList = ',' . $resList . ','; foreach ($val as $k => $file) { $tmp_name = PATH_site . $TCA['sys_template']['columns']['resources']['config']['uploadfolder'] . '/' . $file; $resList = $tmp_name . ',' . $resList; } } break; case 'remove_resource': if (is_array($val)) { $resList = ',' . $resList . ','; foreach ($val as $k => $file) { $resList = str_replace(',' . $file . ',', ',', $resList); } } break; case 'totop_resource': if (is_array($val)) { $resList = ',' . $resList . ','; foreach ($val as $k => $file) { $resList = str_replace(',' . $file . ',', ',', $resList); $resList = ',' . $file . $resList; } } break; } } } $resList = implode(',', t3lib_div::trimExplode(',', $resList, 1)); if (strcmp($resList, $tplRow['resources'])) { $recData['sys_template'][$saveId]['resources'] = $resList; } if (count($recData)) { // Create new tce-object $tce = t3lib_div::makeInstance('t3lib_TCEmain'); $tce->stripslashes_values = 0; $tce->alternativeFileName = $alternativeFileName; // Initialize $tce->start($recData, array()); // Saved the stuff $tce->process_datamap(); // Clear the cache (note: currently only admin-users can clear the cache in tce_main.php) $tce->clear_cacheCmd('all'); // tce were processed successfully $this->tce_processed = true; // re-read the template ... $this->initialize_editor($this->pObj->id, $template_uid); } // Unlink any uploaded/new temp files there was: t3lib_div::unlink_tempfile($tmp_upload_name); t3lib_div::unlink_tempfile($tmp_newresource_name); // If files has been edited: if (is_array($edit)) { if ($edit['filename'] && $tplRow['resources'] && t3lib_div::inList($tplRow['resources'], $edit['filename'])) { // Check if there are resources, and that the file is in the resourcelist. $path = PATH_site . $TCA['sys_template']['columns']['resources']['config']['uploadfolder'] . '/' . $edit['filename']; $fI = t3lib_div::split_fileref($edit['filename']); if (@is_file($path) && t3lib_div::getFileAbsFileName($path) && t3lib_div::inList($this->pObj->textExtensions, $fI['fileext'])) { // checks that have already been done.. Just to make sure // @TODO: Check if the hardcorded value already has a config member, otherwise create one if (filesize($path) < 30720) { // checks that have already been done.. Just to make sure t3lib_div::writeFile($path, $edit['file']); $theOutput .= $this->pObj->doc->spacer(10); $theOutput .= $this->pObj->doc->section('<font color=red>' . $GLOBALS['LANG']->getLL('fileChanged') . '</font>', sprintf($GLOBALS['LANG']->getLL('resourceUpdated'), $edit['filename']), 0, 0, 0, 1); // Clear cache - the file has probably affected the template setup // @TODO: Check if the edited file really had something to do with cached data and prevent this clearing if possible! $tce = t3lib_div::makeInstance('t3lib_TCEmain'); $tce->stripslashes_values = 0; $tce->start(array(), array()); $tce->clear_cacheCmd('all'); } } } } } // hook Post updating template/TCE processing if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/tstemplate_info/class.tx_tstemplateinfo.php']['postTCEProcessingHook'])) { $postTCEProcessingHook =& $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/tstemplate_info/class.tx_tstemplateinfo.php']['postTCEProcessingHook']; if (is_array($postTCEProcessingHook)) { $hookParameters = array('POST' => $POST, 'tce' => $tce); foreach ($postTCEProcessingHook as $hookFunction) { t3lib_div::callUserFunction($hookFunction, $hookParameters, $this); } } } $theOutput .= $this->pObj->doc->spacer(5); $theOutput .= $this->pObj->doc->section($GLOBALS['LANG']->getLL('templateInformation'), t3lib_iconWorks::getSpriteIconForRecord('sys_template', $tplRow) . '<strong>' . htmlspecialchars($tplRow['title']) . '</strong>' . htmlspecialchars(trim($tplRow['sitetitle']) ? ' - (' . $tplRow['sitetitle'] . ')' : ''), 0, 1); if ($manyTemplatesMenu) { $theOutput .= $this->pObj->doc->section('', $manyTemplatesMenu); $theOutput .= $this->pObj->doc->divider(5); } #$numberOfRows= t3lib_div::intInRange($this->pObj->MOD_SETTINGS["ts_template_editor_TArows"],0,150); #if (!$numberOfRows) $numberOfRows = 35; // If abort pressed, nothing should be edited: if ($POST['abort'] || t3lib_div::testInt($POST['abort_x']) && t3lib_div::testInt($POST['abort_y']) || $POST['saveclose'] || t3lib_div::testInt($POST['saveclose_x']) && t3lib_div::testInt($POST['saveclose_y'])) { unset($e); } if ($e['title']) { $outCode = '<input type="Text" name="data[title]" value="' . htmlspecialchars($tplRow['title']) . '"' . $this->pObj->doc->formWidth() . '>'; $outCode .= '<input type="Hidden" name="e[title]" value="1">'; $theOutput .= $this->pObj->doc->spacer(15); $theOutput .= $this->pObj->doc->section($GLOBALS['LANG']->getLL('title'), $outCode); } if ($e['sitetitle']) { $outCode = '<input type="Text" name="data[sitetitle]" value="' . htmlspecialchars($tplRow['sitetitle']) . '"' . $this->pObj->doc->formWidth() . '>'; $outCode .= '<input type="Hidden" name="e[sitetitle]" value="1">'; $theOutput .= $this->pObj->doc->spacer(15); $theOutput .= $this->pObj->doc->section($GLOBALS['LANG']->getLL('sitetitle'), $outCode); } if ($e['description']) { $outCode = '<textarea name="data[description]" rows="5" class="fixed-font enable-tab"' . $this->pObj->doc->formWidthText(48, '', '') . '>' . t3lib_div::formatForTextarea($tplRow['description']) . '</textarea>'; $outCode .= '<input type="Hidden" name="e[description]" value="1">'; $theOutput .= $this->pObj->doc->spacer(15); $theOutput .= $this->pObj->doc->section($GLOBALS['LANG']->getLL('description'), $outCode); } if ($e['resources']) { // Upload $outCode = '<input type="File" name="resources"' . $this->pObj->doc->formWidth() . ' size="50">'; $outCode .= '<input type="Hidden" name="data[resources]" value="1">'; $outCode .= '<input type="Hidden" name="e[resources]" value="1">'; $outCode .= '<BR>' . $GLOBALS['LANG']->getLL('allowedExtensions') . ' <strong>' . $TCA['sys_template']['columns']['resources']['config']['allowed'] . '</strong>'; $outCode .= '<BR>' . $GLOBALS['LANG']->getLL('maxFilesize') . ' <strong>' . t3lib_div::formatSize($TCA['sys_template']['columns']['resources']['config']['max_size'] * 1024) . '</strong>'; $theOutput .= $this->pObj->doc->spacer(15); $theOutput .= $this->pObj->doc->section($GLOBALS['LANG']->getLL('uploadResource'), $outCode); // New $opt = explode(',', $this->pObj->textExtensions); $optTags = ''; foreach ($opt as $extVal) { $optTags .= '<option value="' . $extVal . '">.' . $extVal . '</option>'; } $outCode = '<input type="text" name="new_resource"' . $this->pObj->doc->formWidth(20) . '> <select name="new_resource_ext">' . $optTags . '</select>'; $outCode .= '<input type="Hidden" name="data[new_resource]" value="1">'; $theOutput .= $this->pObj->doc->spacer(15); $theOutput .= $this->pObj->doc->section($GLOBALS['LANG']->getLL('newTextResource'), $outCode); // Make copy $rL = $this->resourceListForCopy($this->pObj->id, $template_uid); if ($rL) { $theOutput .= $this->pObj->doc->spacer(20); $theOutput .= $this->pObj->doc->section($GLOBALS['LANG']->getLL('copyResource'), $rL); } // Update resource list $rL = $this->procesResources($tplRow['resources'], 1); if ($rL) { $theOutput .= $this->pObj->doc->spacer(20); $theOutput .= $this->pObj->doc->section($GLOBALS['LANG']->getLL('updateResourceList'), $rL); } } if ($e['constants']) { $outCode = '<textarea name="data[constants]" rows="' . $numberOfRows . '" wrap="off" class="fixed-font enable-tab"' . $this->pObj->doc->formWidthText(48, 'width:98%;height:70%', 'off') . ' class="fixed-font">' . t3lib_div::formatForTextarea($tplRow['constants']) . '</textarea>'; $outCode .= '<input type="Hidden" name="e[constants]" value="1">'; $theOutput .= $this->pObj->doc->spacer(15); $theOutput .= $this->pObj->doc->section($GLOBALS['LANG']->getLL('constants'), ''); $theOutput .= $this->pObj->doc->sectionEnd() . $outCode; } if ($e['file']) { $path = PATH_site . $TCA['sys_template']['columns']['resources']['config']['uploadfolder'] . '/' . $e[file]; $fI = t3lib_div::split_fileref($e[file]); if (@is_file($path) && t3lib_div::inList($this->pObj->textExtensions, $fI['fileext'])) { if (filesize($path) < $TCA['sys_template']['columns']['resources']['config']['max_size'] * 1024) { $fileContent = t3lib_div::getUrl($path); $outCode = $GLOBALS['LANG']->getLL('file') . ' <strong>' . $e[file] . '</strong><BR>'; $outCode .= '<textarea name="edit[file]" rows="' . $numberOfRows . '" wrap="off" class="fixed-font enable-tab"' . $this->pObj->doc->formWidthText(48, 'width:98%;height:70%', 'off') . ' class="fixed-font">' . t3lib_div::formatForTextarea($fileContent) . '</textarea>'; $outCode .= '<input type="Hidden" name="edit[filename]" value="' . $e[file] . '">'; $outCode .= '<input type="Hidden" name="e[file]" value="' . htmlspecialchars($e[file]) . '">'; $theOutput .= $this->pObj->doc->spacer(15); $theOutput .= $this->pObj->doc->section($GLOBALS['LANG']->getLL('editResource'), ''); $theOutput .= $this->pObj->doc->sectionEnd() . $outCode; } else { $theOutput .= $this->pObj->doc->spacer(15); $fileToBig = sprintf($GLOBALS['LANG']->getLL('filesizeExceeded'), $TCA['sys_template']['columns']['resources']['config']['max_size']); $filesizeNotAllowed = sprintf($GLOBALS['LANG']->getLL('notAllowed'), $TCA['sys_template']['columns']['resources']['config']['max_size']); $theOutput .= $this->pObj->doc->section('<font color=red>' . $fileToBig . '</font>', $filesizeNotAllowed, 0, 0, 0, 1); } } } if ($e['config']) { $outCode = '<textarea name="data[config]" rows="' . $numberOfRows . '" wrap="off" class="fixed-font enable-tab"' . $this->pObj->doc->formWidthText(48, "width:98%;height:70%", "off") . ' class="fixed-font">' . t3lib_div::formatForTextarea($tplRow["config"]) . '</textarea>'; if (t3lib_extMgm::isLoaded('tsconfig_help')) { $url = $BACK_PATH . 'wizard_tsconfig.php?mode=tsref'; $params = array('formName' => 'editForm', 'itemName' => 'data[config]'); $outCode .= '<a href="#" onClick="vHWin=window.open(\'' . $url . t3lib_div::implodeArrayForUrl('', array('P' => $params)) . '\',\'popUp' . $md5ID . '\',\'height=500,width=780,status=0,menubar=0,scrollbars=1\');vHWin.focus();return false;">' . t3lib_iconWorks::getSpriteIcon('actions-system-typoscript-documentation-open', array('title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:tsRef', true))) . '</a>'; } $outCode .= '<input type="Hidden" name="e[config]" value="1">'; $theOutput .= $this->pObj->doc->spacer(15); $theOutput .= $this->pObj->doc->section($GLOBALS['LANG']->getLL('setup'), ''); $theOutput .= $this->pObj->doc->sectionEnd() . $outCode; } // Processing: $outCode = ''; $outCode .= $this->tableRow($GLOBALS['LANG']->getLL('title'), htmlspecialchars($tplRow['title']), 'title'); $outCode .= $this->tableRow($GLOBALS['LANG']->getLL('sitetitle'), htmlspecialchars($tplRow['sitetitle']), 'sitetitle'); $outCode .= $this->tableRow($GLOBALS['LANG']->getLL('description'), nl2br(htmlspecialchars($tplRow['description'])), 'description'); $outCode .= $this->tableRow($GLOBALS['LANG']->getLL('resources'), $this->procesResources($tplRow['resources']), 'resources'); $outCode .= $this->tableRow($GLOBALS['LANG']->getLL('constants'), sprintf($GLOBALS['LANG']->getLL('editToView'), trim($tplRow[constants]) ? count(explode(LF, $tplRow[constants])) : 0), 'constants'); $outCode .= $this->tableRow($GLOBALS['LANG']->getLL('setup'), sprintf($GLOBALS['LANG']->getLL('editToView'), trim($tplRow[config]) ? count(explode(LF, $tplRow[config])) : 0), 'config'); $outCode = '<br /><br /><table class="t3-table-info">' . $outCode . '</table>'; // Edit all icon: $outCode .= '<br /><a href="#" onClick="' . t3lib_BEfunc::editOnClick(rawurlencode('&createExtension=0') . '&edit[sys_template][' . $tplRow['uid'] . ']=edit', $BACK_PATH, '') . '"><strong>' . t3lib_iconWorks::getSpriteIcon('actions-document-open', array('title' => $GLOBALS['LANG']->getLL('editTemplateRecord'))) . $GLOBALS['LANG']->getLL('editTemplateRecord') . '</strong></a>'; $theOutput .= $this->pObj->doc->section('', $outCode); // hook after compiling the output if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/tstemplate_info/class.tx_tstemplateinfo.php']['postOutputProcessingHook'])) { $postOutputProcessingHook =& $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/tstemplate_info/class.tx_tstemplateinfo.php']['postOutputProcessingHook']; if (is_array($postOutputProcessingHook)) { $hookParameters = array('theOutput' => &$theOutput, 'POST' => $POST, 'e' => $e, 'tplRow' => $tplRow, 'numberOfRows' => $numberOfRows); foreach ($postOutputProcessingHook as $hookFunction) { t3lib_div::callUserFunction($hookFunction, $hookParameters, $this); } } } } else { $theOutput .= $this->pObj->noTemplate(1); } return $theOutput; }
/** * [Describe function...] * * @param [type] $row: ... * @param [type] $conf: ... * @param [type] $table: ... * @return [type] ... */ function resultRowDisplay($row, $conf, $table) { static $even = FALSE; $tce = t3lib_div::makeInstance('t3lib_TCEmain'); $SET = $GLOBALS['SOBE']->MOD_SETTINGS; $out = '<tr class="bgColor' . ($even ? '6' : '4') . '">'; $even = !$even; foreach ($row as $fN => $fV) { if (t3lib_div::inList($SET['queryFields'], $fN) || !$SET['queryFields'] && $fN != 'pid' && $fN != 'deleted') { if ($SET['search_result_labels']) { $fVnew = $this->getProcessedValueExtra($table, $fN, $fV, $conf, '<br />'); } else { $fVnew = htmlspecialchars($fV); } $out .= '<td>' . $fVnew . '</td>'; } } $params = '&edit[' . $table . '][' . $row['uid'] . ']=edit'; $out .= '<td nowrap>'; if (!$row['deleted']) { $out .= '<a href="#" onClick="top.launchView(\'' . $table . '\',' . $row['uid'] . ',\'' . $GLOBALS['BACK_PATH'] . '\');return false;">' . t3lib_iconWorks::getSpriteIcon('status-dialog-information') . '</a>'; $out .= '<a href="#" onClick="' . t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'], t3lib_div::getIndpEnv('REQUEST_URI') . t3lib_div::implodeArrayForUrl('SET', (array) t3lib_div::_POST('SET'))) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a>'; } else { $out .= '<a href="' . t3lib_div::linkThisUrl($GLOBALS['BACK_PATH'] . 'tce_db.php', array('cmd[' . $table . '][' . $row['uid'] . '][undelete]' => '1', 'redirect' => t3lib_div::linkThisScript(array()))) . t3lib_BEfunc::getUrlToken('tceAction') . '">'; $out .= t3lib_iconWorks::getSpriteIcon('actions-edit-restore', array('title' => 'undelete only')) . '</a>'; $out .= '<a href="' . t3lib_div::linkThisUrl($GLOBALS['BACK_PATH'] . 'tce_db.php', array('cmd[' . $table . '][' . $row['uid'] . '][undelete]' => '1', 'redirect' => t3lib_div::linkThisUrl('alt_doc.php', array('edit[' . $table . '][' . $row['uid'] . ']' => 'edit', 'returnUrl' => t3lib_div::linkThisScript(array()))))) . t3lib_BEfunc::getUrlToken('tceAction') . '">'; $out .= t3lib_iconWorks::getSpriteIcon('actions-edit-restore-edit', array('title' => 'undelete and edit')) . '</a>'; } $_params = array($table => $row); if (is_array($this->hookArray['additionalButtons'])) { foreach ($this->hookArray['additionalButtons'] as $_funcRef) { $out .= t3lib_div::callUserFunction($_funcRef, $_params, $this); } } $out .= '</td> </tr> '; return $out; }
/** * Main function, creating content in the frame * * @return void */ function main() { global $BE_USER, $LANG, $TCA; // By default, 5 groups are set $this->groupLabels = array(1 => 1, 2 => 1, 3 => 1, 4 => 1, 5 => 1); $shortCutGroups = $BE_USER->getTSConfig('options.shortcutGroups'); if (is_array($shortCutGroups['properties']) && count($shortCutGroups['properties'])) { foreach ($shortCutGroups['properties'] as $k => $v) { if (strcmp('', $v) && strcmp('0', $v)) { $this->groupLabels[$k] = (string) $v; } elseif ($BE_USER->isAdmin()) { unset($this->groupLabels[$k]); } } } // List of global groups that will be loaded. All global groups have negative IDs. $globalGroups = -100; // Group -100 is kind of superglobal and can't be changed. if (count($this->groupLabels)) { $globalGroups .= ',' . implode(',', array_keys($this->groupLabels)); $globalGroups = str_replace(',', ',-', $globalGroups); // Ugly hack to make the UIDs negative - is there any better solution? } // Fetching shortcuts to display for this user: $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_be_shortcuts', '((userid=' . $BE_USER->user['uid'] . ' AND sc_group>=0) OR sc_group IN (' . $globalGroups . '))', '', 'sc_group,sorting'); // Init vars: $this->lines = array(); $this->linesPre = array(); $this->editSC_rec = ''; $this->selOpt = array(); $formerGr = ''; // Traverse shortcuts while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $mParts = explode('|', $row['module_name']); $row['module_name'] = $mParts[0]; $row['M_module_name'] = $mParts[1]; $mParts = explode('_', $row['M_module_name'] ? $row['M_module_name'] : $row['module_name']); $qParts = parse_url($row['url']); if (!$BE_USER->isAdmin()) { // Check for module access if (!isset($LANG->moduleLabels['tabs_images'][implode('_', $mParts) . '_tab'])) { // Nice hack to check if the user has access to this module - otherwise the translation label would not have been loaded :-) continue; } $page_id = $this->getLinkedPageId($row['url']); if (t3lib_div::testInt($page_id)) { // Check for webmount access if (!$GLOBALS['BE_USER']->isInWebMount($page_id)) { continue; } // Check for record access $pageRow = t3lib_BEfunc::getRecord('pages', $page_id); if (!$GLOBALS['BE_USER']->doesUserHaveAccess($pageRow, $perms = 1)) { continue; } } } if ($this->editSC && $row['uid'] == $this->editSC) { $this->editSC_rec = $row; } $sc_group = $row['sc_group']; if ($sc_group && strcmp($formerGr, $sc_group)) { if ($sc_group != -100) { if ($this->groupLabels[abs($sc_group)] && strcmp('1', $this->groupLabels[abs($sc_group)])) { $label = $this->groupLabels[abs($sc_group)]; } else { $label = $LANG->getLL('shortcut_group_' . abs($sc_group), 1); if (!$label) { $label = $LANG->getLL('shortcut_group', 1) . ' ' . abs($sc_group); } // Fallback label } if ($sc_group >= 0) { $onC = 'if (confirm(' . $GLOBALS['LANG']->JScharCode($LANG->getLL('shortcut_delAllInCat')) . ')){window.location.href=\'alt_shortcut.php?deleteCategory=' . $sc_group . '\';}return false;'; $this->linesPre[] = '<td> </td><td class="bgColor5"><a href="#" onclick="' . htmlspecialchars($onC) . '" title="' . $LANG->getLL('shortcut_delAllInCat', 1) . '">' . $label . '</a></td>'; } else { $label = $LANG->getLL('shortcut_global', 1) . ': ' . ($label ? $label : abs($sc_group)); // Fallback label $this->lines[] = '<td> </td><td class="bgColor5">' . $label . '</td>'; } unset($label); } } $bgColorClass = $row['uid'] == $this->editSC ? 'bgColor5' : ($row['sc_group'] < 0 ? 'bgColor6' : 'bgColor4'); if ($row['description'] && $row['uid'] != $this->editSC) { $label = $row['description']; } else { $label = t3lib_div::fixed_lgd_cs(rawurldecode($qParts['query']), 150); } $titleA = $this->itemLabel($label, $row['module_name'], $row['M_module_name']); $editSH = $row['sc_group'] >= 0 || $BE_USER->isAdmin() ? 'editSh(' . intval($row['uid']) . ');' : "alert('" . $LANG->getLL('shortcut_onlyAdmin') . "')"; $jumpSC = 'jump(unescape(\'' . rawurlencode($row['url']) . '\'),\'' . implode('_', $mParts) . '\',\'' . $mParts[0] . '\');'; $onC = 'if (document.shForm.editShortcut_check && document.shForm.editShortcut_check.checked){' . $editSH . '}else{' . $jumpSC . '}return false;'; if ($sc_group >= 0) { // user defined groups show up first $this->linesPre[] = '<td class="' . $bgColorClass . '"><a href="#" onclick="' . htmlspecialchars($onC) . '"><img src="' . $this->getIcon($row['module_name']) . '" title="' . htmlspecialchars($titleA) . '" alt="" /></a></td>'; } else { $this->lines[] = '<td class="' . $bgColorClass . '"><a href="#" onclick="' . htmlspecialchars($onC) . '"><img src="' . $this->getIcon($row['module_name']) . '" title="' . htmlspecialchars($titleA) . '" alt="" /></a></td>'; } if (trim($row['description'])) { $kkey = strtolower(substr($row['description'], 0, 20)) . '_' . $row['uid']; $this->selOpt[$kkey] = '<option value="' . htmlspecialchars($jumpSC) . '">' . htmlspecialchars(t3lib_div::fixed_lgd_cs($row['description'], 50)) . '</option>'; } $formerGr = $row['sc_group']; } ksort($this->selOpt); array_unshift($this->selOpt, '<option>[' . $LANG->getLL('shortcut_selSC', 1) . ']</option>'); $this->editLoadedFunc(); $this->editPageIdFunc(); if (!$this->editLoaded && t3lib_extMgm::isLoaded('cms')) { $editIdCode = '<td nowrap="nowrap">' . $LANG->getLL('shortcut_editID', 1) . ': <input type="text" value="' . ($this->editError ? htmlspecialchars($this->editPage) : '') . '" name="editPage"' . $this->doc->formWidth(15) . ' onchange="submitEditPage(this.value);" />' . ($this->editError ? ' <strong><span class="typo3-red">' . htmlspecialchars($this->editError) . '</span></strong>' : '') . (is_array($this->theEditRec) ? ' <strong>' . $LANG->getLL('shortcut_loadEdit', 1) . ' \'' . t3lib_BEfunc::getRecordTitle('pages', $this->theEditRec, TRUE) . '\'</strong> (' . htmlspecialchars($this->editPath) . ')' : '') . ($this->searchFor ? ' ' . $LANG->getLL('shortcut_searchFor', 1) . ' <strong>\'' . htmlspecialchars($this->searchFor) . '\'</strong>' : '') . '</td>'; } else { $editIdCode = ''; } // Adding CSH: $editIdCode .= '<td> ' . t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'shortcuts', $GLOBALS['BACK_PATH'], '', TRUE) . '</td>'; // Compile it all: $this->content .= ' <table border="0" cellpadding="0" cellspacing="0" width="99%"> <tr> <td> <!-- Shortcut Display Table: --> <table border="0" cellpadding="0" cellspacing="2" id="typo3-shortcuts"> <tr> '; if ($GLOBALS['BE_USER']->getTSConfigVal('options.enableShortcuts')) { $this->content .= implode(' ', $this->lines); } $this->content .= $editIdCode . ' </tr> </table> </td> <td align="right">'; if ($this->hasWorkspaceAccess()) { $this->content .= $this->workspaceSelector() . t3lib_BEfunc::cshItem('xMOD_csh_corebe', 'workspaceSelector', $GLOBALS['BACK_PATH'], '', TRUE); } $this->content .= ' </td> </tr> </table> '; // Launch Edit page: if ($this->theEditRec['uid']) { $this->content .= $this->doc->wrapScriptTags('top.loadEditId(' . $this->theEditRec['uid'] . ');'); } // Load alternative table/uid into editing form. if (count($this->alternativeTableUid) == 2 && isset($TCA[$this->alternativeTableUid[0]]) && t3lib_div::testInt($this->alternativeTableUid[1])) { $JSaction = t3lib_BEfunc::editOnClick('&edit[' . $this->alternativeTableUid[0] . '][' . $this->alternativeTableUid[1] . ']=edit', '', 'dummy.php'); $this->content .= $this->doc->wrapScriptTags('function editArbitraryElement() { top.content.' . $JSaction . '; } editArbitraryElement();'); } // Load search for something. if ($this->searchFor) { $firstMP = intval($GLOBALS['WEBMOUNTS'][0]); $this->content .= $this->doc->wrapScriptTags('jump(unescape("' . rawurlencode('db_list.php?id=' . $firstMP . '&search_field=' . rawurlencode($this->searchFor) . '&search_levels=4') . '"),"web_list","web");'); } }
/** * Rendering the localization information table. * * @param array The Page tree data * @return string HTML for the localization information table. */ function renderL10nTable(&$tree) { global $LANG; // System languages retrieved: $languages = $this->getSystemLanguages(); // Title length: $titleLen = $GLOBALS['BE_USER']->uc['titleLen']; // Put together the TREE: $output = ''; $newOL_js = array(); $langRecUids = array(); foreach ($tree->tree as $data) { $tCells = array(); $langRecUids[0][] = $data['row']['uid']; // Page icons / titles etc. $tCells[] = '<td' . ($data['row']['_CSSCLASS'] ? ' class="' . $data['row']['_CSSCLASS'] . '"' : '') . '>' . $data['HTML'] . htmlspecialchars(t3lib_div::fixed_lgd_cs($data['row']['title'], $titleLen)) . (strcmp($data['row']['nav_title'], '') ? ' [Nav: <em>' . htmlspecialchars(t3lib_div::fixed_lgd_cs($data['row']['nav_title'], $titleLen)) . '</em>]' : '') . '</td>'; // DEFAULT language: // "View page" link is created: $viewPageLink = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::viewOnClick($data['row']['uid'], $GLOBALS['BACK_PATH'], '', '', '', '&L=###LANG_UID###')) . '" title="' . $LANG->getLL('lang_renderl10n_viewPage', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-view') . '</a>'; $status = $data['row']['l18n_cfg'] & 1 ? 'c-blocked' : 'c-ok'; // Create links: $info = ''; $editUid = $data['row']['uid']; $params = '&edit[pages][' . $editUid . ']=edit'; $info .= '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'])) . '" title="' . $LANG->getLL('lang_renderl10n_editDefaultLanguagePage', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a>'; $info .= '<a href="#" onclick="' . htmlspecialchars('top.loadEditId(' . intval($data['row']['uid']) . ',"&SET[language]=0"); return false;') . '" title="' . $LANG->getLL('lang_renderl10n_editPage', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-page-open') . '</a>'; $info .= str_replace('###LANG_UID###', '0', $viewPageLink); $info .= ' '; $info .= $data['row']['l18n_cfg'] & 1 ? '<span title="' . $LANG->sL('LLL:EXT:cms/locallang_tca.php:pages.l18n_cfg.I.1', '1') . '">D</span>' : ' '; $info .= t3lib_div::hideIfNotTranslated($data['row']['l18n_cfg']) ? '<span title="' . $LANG->sL('LLL:EXT:cms/locallang_tca.php:pages.l18n_cfg.I.2', '1') . '">N</span>' : ' '; // Put into cell: $tCells[] = '<td class="' . $status . ' c-leftLine">' . $info . '</td>'; $tCells[] = '<td class="' . $status . '" title="' . $LANG->getLL('lang_renderl10n_CEcount', '1') . '" align="center">' . $this->getContentElementCount($data['row']['uid'], 0) . '</td>'; $modSharedTSconfig = t3lib_BEfunc::getModTSconfig($data['row']['uid'], 'mod.SHARED'); $disableLanguages = isset($modSharedTSconfig['properties']['disableLanguages']) ? t3lib_div::trimExplode(',', $modSharedTSconfig['properties']['disableLanguages'], 1) : array(); // Traverse system languages: foreach ($languages as $langRow) { if ($this->pObj->MOD_SETTINGS['lang'] == 0 || (int) $this->pObj->MOD_SETTINGS['lang'] === (int) $langRow['uid']) { $row = $this->getLangStatus($data['row']['uid'], $langRow['uid']); $info = ''; if (is_array($row)) { $langRecUids[$langRow['uid']][] = $row['uid']; $status = $row['_HIDDEN'] ? t3lib_div::hideIfNotTranslated($data['row']['l18n_cfg']) || $data['row']['l18n_cfg'] & 1 ? 'c-blocked' : 'c-fallback' : 'c-ok'; $icon = t3lib_iconWorks::getSpriteIconForRecord('pages_language_overlay', $row, array('class' => 'c-recIcon')); $info = $icon . htmlspecialchars(t3lib_div::fixed_lgd_cs($row['title'], $titleLen)) . (strcmp($row['nav_title'], '') ? ' [Nav: <em>' . htmlspecialchars(t3lib_div::fixed_lgd_cs($row['nav_title'], $titleLen)) . '</em>]' : '') . ($row['_COUNT'] > 1 ? '<div>' . $LANG->getLL('lang_renderl10n_badThingThereAre', '1') . '</div>' : ''); $tCells[] = '<td class="' . $status . ' c-leftLine">' . $info . '</td>'; // Edit whole record: $info = ''; $editUid = $row['uid']; $params = '&edit[pages_language_overlay][' . $editUid . ']=edit'; $info .= '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'])) . '" title="' . $LANG->getLL('lang_renderl10n_editLanguageOverlayRecord', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a>'; $info .= '<a href="#" onclick="' . htmlspecialchars('top.loadEditId(' . intval($data['row']['uid']) . ',"&SET[language]=' . $langRow['uid'] . '"); return false;') . '" title="' . $LANG->getLL('lang_renderl10n_editPageLang', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-page-open') . '</a>'; $info .= str_replace('###LANG_UID###', $langRow['uid'], $viewPageLink); $tCells[] = '<td class="' . $status . '">' . $info . '</td>'; $tCells[] = '<td class="' . $status . '" title="' . $LANG->getLL('lang_renderl10n_CEcount', '1') . '" align="center">' . $this->getContentElementCount($data['row']['uid'], $langRow['uid']) . '</td>'; } else { if (in_array($langRow['uid'], $disableLanguages)) { // Language has been disabled for this page $status = 'c-blocked'; $info = ''; } else { $status = t3lib_div::hideIfNotTranslated($data['row']['l18n_cfg']) || $data['row']['l18n_cfg'] & 1 ? 'c-blocked' : 'c-fallback'; $info = '<input type="checkbox" name="newOL[' . $langRow['uid'] . '][' . $data['row']['uid'] . ']" value="1" />'; $newOL_js[$langRow['uid']] .= ' +(document.webinfoForm[\'newOL[' . $langRow['uid'] . '][' . $data['row']['uid'] . ']\'].checked ? \'&edit[pages_language_overlay][' . $data['row']['uid'] . ']=new\' : \'\') '; } $tCells[] = '<td class="' . $status . ' c-leftLine"> </td>'; $tCells[] = '<td class="' . $status . '"> </td>'; $tCells[] = '<td class="' . $status . '">' . $info . '</td>'; } } } $output .= ' <tr class="bgColor4"> ' . implode(' ', $tCells) . ' </tr>'; } // Put together HEADER: $tCells = array(); $tCells[] = '<td>' . $LANG->getLL('lang_renderl10n_page', '1') . ':</td>'; if (is_array($langRecUids[0])) { $params = '&edit[pages][' . implode(',', $langRecUids[0]) . ']=edit&columnsOnly=title,nav_title,l18n_cfg,hidden'; $editIco = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'])) . '" title="' . $LANG->getLL('lang_renderl10n_editPageProperties', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-new') . '</a>'; } else { $editIco = ''; } $tCells[] = '<td class="c-leftLine" colspan="2">' . $LANG->getLL('lang_renderl10n_default', '1') . ':' . $editIco . '</td>'; foreach ($languages as $langRow) { if ($this->pObj->MOD_SETTINGS['lang'] == 0 || (int) $this->pObj->MOD_SETTINGS['lang'] === (int) $langRow['uid']) { // Title: $tCells[] = '<td class="c-leftLine">' . htmlspecialchars($langRow['title']) . '</td>'; // Edit language overlay records: if (is_array($langRecUids[$langRow['uid']])) { $params = '&edit[pages_language_overlay][' . implode(',', $langRecUids[$langRow['uid']]) . ']=edit&columnsOnly=title,nav_title,hidden'; $tCells[] = '<td><a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'])) . '" title="' . $LANG->getLL('lang_renderl10n_editLangOverlays', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a></td>'; } else { $tCells[] = '<td> </td>'; } // Create new overlay records: $params = "'" . $newOL_js[$langRow['uid']] . "+'&columnsOnly=title,hidden,sys_language_uid&defVals[pages_language_overlay][sys_language_uid]=" . $langRow['uid']; $tCells[] = '<td><a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'])) . '" title="' . $LANG->getLL('lang_getlangsta_createNewTranslationHeaders', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-new') . '</a></td>'; } } $output = ' <tr class="t3-row-header"> ' . implode(' ', $tCells) . ' </tr>' . $output; $output = ' <table border="0" cellspacing="0" cellpadding="0" id="langTable" class="typo3-dblist">' . $output . ' </table>'; return $output; }
/** * Renders the header fields menu item. * It iss possible to define a list of fields (currently only from the pages table) which should appear * as a header above the content zones while editing the content of a page. This function renders those fields. * The fields to be displayed are defined in the page's datastructure. * * @param $pObj: Reference to the parent object ($this) * @return string HTML output * @access private */ function renderItem_headerFields(&$pObj) { global $LANG, $TCA; $output = ''; if ($pObj->rootElementTable != 'pages') { return ''; } t3lib_div::loadTCA('pages'); $conf = $TCA['pages']['columns']['tx_templavoila_flex']['config']; $dataStructureArr = t3lib_BEfunc::getFlexFormDS($conf, $pObj->rootElementRecord, 'pages'); if (is_array($dataStructureArr) && is_array($dataStructureArr['ROOT']['tx_templavoila']['pageModule'])) { $headerTablesAndFieldNames = t3lib_div::trimExplode(chr(10), str_replace(chr(13), '', $dataStructureArr['ROOT']['tx_templavoila']['pageModule']['displayHeaderFields']), 1); if (is_array($headerTablesAndFieldNames)) { $fieldNames = array(); $headerFieldRows = array(); $headerFields = array(); foreach ($headerTablesAndFieldNames as $tableAndFieldName) { list($table, $field) = explode('.', $tableAndFieldName); $fieldNames[$table][] = $field; $headerFields[] = array('table' => $table, 'field' => $field, 'label' => $LANG->sL(t3lib_BEfunc::getItemLabel('pages', $field)), 'value' => t3lib_BEfunc::getProcessedValue('pages', $field, $pObj->rootElementRecord[$field], 200)); } if (count($headerFields)) { foreach ($headerFields as $headerFieldArr) { if ($headerFieldArr['table'] == 'pages') { $onClick = t3lib_BEfunc::editOnClick('&edit[pages][' . $pObj->id . ']=edit&columnsOnly=' . implode(',', $fieldNames['pages']), $this->doc->backPath); $linkedValue = '<a style="text-decoration: none;" href="#" onclick="' . htmlspecialchars($onClick) . '">' . htmlspecialchars($headerFieldArr['value']) . '</a>'; $linkedLabel = '<a style="text-decoration: none;" href="#" onclick="' . htmlspecialchars($onClick) . '">' . htmlspecialchars($headerFieldArr['label']) . '</a>'; $headerFieldRows[] = ' <tr> <td class="bgColor4-20" style="width: 10%; vertical-align:top">' . $linkedLabel . '</td><td class="bgColor4" style="vertical-align:top"><em>' . $linkedValue . '</em></td> </tr> '; } } $output = ' <table border="0" cellpadding="0" cellspacing="1" width="100%" class="lrPadding"> <tr> <td colspan="2" class="bgColor4-20">' . $LANG->getLL('pagerelatedinformation') . ':</td> </tr> ' . implode('', $headerFieldRows) . ' </table> '; } } } return $output; }
/** * Links the string $code to a create-new form for a record in $table created on page $pid * * @param string Link text * @param string Table name (in which to create new record) * @param integer PID value for the "&edit['.$table.']['.$pid.']=new" command (positive/negative) * @param boolean If $addContentTable is set, then a new contentTable record is created together with pages * @return string The link. */ function linkWrap($linkText, $table, $pid, $addContentTable = false) { $parameters = '&edit[' . $table . '][' . $pid . ']=new'; if ($table == 'pages' && $GLOBALS['TYPO3_CONF_VARS']['SYS']['contentTable'] && isset($GLOBALS['TCA'][$GLOBALS['TYPO3_CONF_VARS']['SYS']['contentTable']]) && $addContentTable) { $parameters .= '&edit[' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['contentTable'] . '][prev]=new&returnNewPageId=1'; } elseif ($table == 'pages_language_overlay') { $parameters .= '&overrideVals[pages_language_overlay][doktype]=' . (int) $this->pageinfo['doktype']; } $onClick = t3lib_BEfunc::editOnClick($parameters, '', $this->returnUrl); return '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $linkText . '</a>'; }
/** * Returns an HTML link for editing * * @param string $label: The label (or image) * @param string $table: The table, fx. 'tt_content' * @param integer $uid: The uid of the element to be edited * @param boolean $forced: By default the link is not shown if translatorMode is set, but with this boolean it can be forced anyway. * @param integer $usePid: ... * @param string $linkClass: css class to use for regular content elements * @return string HTML anchor tag containing the label and the correct link * @access protected */ function link_edit($label, $table, $uid, $forced = FALSE, $usePid = 0, $linkClass = '') { if ($label) { $class = $linkClass ? $linkClass : 'tpm-edit'; $pid = $table == 'pages' ? $uid : $usePid; $calcPerms = $pid == 0 ? $this->calcPerms : $this->getCalcPerms($pid); if (($table == 'pages' && $calcPerms & 2 || $table != 'pages' && $calcPerms & 16) && (!$this->translatorMode || $forced)) { if ($table == "pages" && $this->currentLanguageUid) { return '<a class="tpm-pageedit" href="index.php?' . $this->link_getParameters() . '&editPageLanguageOverlay=' . $this->currentLanguageUid . '">' . $label . '</a>'; } else { $onClick = t3lib_BEfunc::editOnClick('&edit[' . $table . '][' . $uid . ']=edit', $this->doc->backPath); return '<a class="' . $class . '" href="#" onclick="' . htmlspecialchars($onClick) . '">' . $label . '</a>'; } } else { return $label; } } return ''; }
/** * Render the module content in HTML * * @param array Translation data for configuration * @param integer Sys language uid * @param array Configuration record * @return string HTML content */ function renderOverview() { global $LANG; $sysLang = $this->sysLang; $accumObj = $this->l10ncfgObj->getL10nAccumulatedInformationsObjectForLanguage($sysLang); $accum = $accumObj->getInfoArray(); $l10ncfg = $this->l10ncfg; $output = ''; $showSingle = t3lib_div::_GET('showSingle'); if ($l10ncfg['displaymode'] > 0) { $showSingle = $showSingle ? $showSingle : 'NONE'; if ($l10ncfg['displaymode'] == 2) { $noAnalysis = TRUE; } } else { $noAnalysis = FALSE; } // Traverse the structure and generate HTML output: foreach ($accum as $pId => $page) { $output .= '<h3>' . $page['header']['icon'] . htmlspecialchars($page['header']['title']) . ' [' . $pId . ']</h3>'; $tableRows = array(); foreach ($accum[$pId]['items'] as $table => $elements) { foreach ($elements as $elementUid => $data) { if (is_array($data['fields'])) { $FtableRows = array(); $flags = array(); if (!$noAnalysis || $showSingle === $table . ':' . $elementUid) { foreach ($data['fields'] as $key => $tData) { if (is_array($tData)) { list(, $uidString, $fieldName) = explode(':', $key); list($uidValue) = explode('/', $uidString); $diff = ''; $edit = TRUE; $noChangeFlag = !strcmp(trim($tData['diffDefaultValue']), trim($tData['defaultValue'])); if ($uidValue === 'NEW') { $diff = '<em>' . $LANG->getLL('render_overview.new.message') . '</em>'; $flags['new']++; } elseif (!isset($tData['diffDefaultValue'])) { $diff = '<em>' . $LANG->getLL('render_overview.nodiff.message') . '</em>'; $flags['unknown']++; } elseif ($noChangeFlag) { $diff = $LANG->getLL('render_overview.nochange.message'); $edit = TRUE; $flags['noChange']++; } else { $diff = $this->diffCMP($tData['diffDefaultValue'], $tData['defaultValue']); $flags['update']++; } if (!$this->modeOnlyChanged || !$noChangeFlag) { $fieldCells = array(); $fieldCells[] = '<b>' . htmlspecialchars($fieldName) . '</b>' . ($tData['msg'] ? '<br/><em>' . htmlspecialchars($tData['msg']) . '</em>' : ''); $fieldCells[] = nl2br(htmlspecialchars($tData['defaultValue'])); $fieldCells[] = $edit && $this->modeWithInlineEdit ? $tData['fieldType'] === 'text' ? '<textarea name="' . htmlspecialchars('translation[' . $table . '][' . $elementUid . '][' . $key . ']') . '" cols="60" rows="5">' . t3lib_div::formatForTextarea($tData['translationValue']) . '</textarea>' : '<input name="' . htmlspecialchars('translation[' . $table . '][' . $elementUid . '][' . $key . ']') . '" value="' . htmlspecialchars($tData['translationValue']) . '" size="60" />' : nl2br(htmlspecialchars($tData['translationValue'])); $fieldCells[] = $diff; if ($page['header']['prevLang']) { reset($tData['previewLanguageValues']); $fieldCells[] = nl2br(htmlspecialchars(current($tData['previewLanguageValues']))); } $FtableRows[] = '<tr class="db_list_normal"><td>' . implode('</td><td>', $fieldCells) . '</td></tr>'; } } } } if (count($FtableRows) || $noAnalysis) { // Link: if ($this->modeShowEditLinks) { reset($data['fields']); list(, $uidString) = explode(':', key($data['fields'])); if (substr($uidString, 0, 3) !== 'NEW') { $editId = is_array($data['translationInfo']['translations'][$sysLang]) ? $data['translationInfo']['translations'][$sysLang]['uid'] : $data['translationInfo']['uid']; $editLink = ' - <a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick('&edit[' . $data['translationInfo']['translation_table'] . '][' . $editId . ']=edit', $this->doc->backPath)) . '"><em>[' . $LANG->getLL('render_overview.clickedit.message') . ']</em></a>'; } else { $editLink = ' - <a href="' . htmlspecialchars($this->doc->issueCommand('&cmd[' . $table . '][' . $data['translationInfo']['uid'] . '][localize]=' . $sysLang)) . '"><em>[' . $LANG->getLL('render_overview.clicklocalize.message') . ']</em></a>'; } } else { $editLink = ''; } $tableRows[] = '<tr class="t3-row-header"> <td colspan="2" style="width:300px;"><a href="' . htmlspecialchars('index.php?id=' . t3lib_div::_GET('id') . '&showSingle=' . rawurlencode($table . ':' . $elementUid)) . '">' . htmlspecialchars($table . ':' . $elementUid) . '</a>' . $editLink . '</td> <td colspan="3" style="width:200px;">' . htmlspecialchars(t3lib_div::arrayToLogString($flags)) . '</td> </tr>'; if (!$showSingle || $showSingle === $table . ':' . $elementUid) { $tableRows[] = '<tr class="bgColor-20 tableheader"> <td>Fieldname:</td> <td width="25%">Default:</td> <td width="25%">Translation:</td> <td width="25%">Diff:</td> ' . ($page['header']['prevLang'] ? '<td width="25%">PrevLang:</td>' : '') . ' </tr>'; $tableRows = array_merge($tableRows, $FtableRows); } } } } } if (count($tableRows)) { $output .= '<table class="typo3-dblist" border="0" cellpadding="0" cellspacing="0">' . implode('', $tableRows) . '</table>'; } } return $output; }
/** * Creates the control panel for a single record in the listing. * * @param string The table * @param array The record for which to make the control panel. * @return string HTML table with the control panel (unless disabled) */ function makeControl($table, $row) { global $TCA, $LANG; // Initialize: t3lib_div::loadTCA($table); $cells = array(); // "Edit" link: ( Only if permissions to edit the page-record of the content of the parent page ($this->id) if ($this->mayUserEditCategories) { $params = '&edit[' . $table . '][' . $row['uid'] . ']=edit'; $cells[] = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $this->backPath, $this->returnUrl)) . '">' . '<img' . t3lib_iconWorks::skinImg($this->backPath, 'gfx/edit2' . (!$TCA[$table]['ctrl']['readOnly'] ? '' : '_d') . '.gif', 'width="11" height="12"') . ' title="' . $LANG->getLLL('edit', $this->LL) . '" alt="" />' . '</a>'; } // // "Info": (All records) // $cells[]='<a href="#" onclick="'.htmlspecialchars('top.launchView(\''.$table.'\', \''.$row['uid'].'\'); return false;').'">'. // '<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/zoom2.gif','width="12" height="12"').' title="'.$LANG->getLLL('showInfo',$this->LL).'" alt="" />'. // '</a>'; // "Hide/Unhide" links: $hiddenField = $TCA[$table]['ctrl']['enablecolumns']['disabled']; if ($this->mayUserEditCategories && $hiddenField && $TCA[$table]['columns'][$hiddenField] && (!$TCA[$table]['columns'][$hiddenField]['exclude'] || $GLOBALS['BE_USER']->check('non_exclude_fields', $table . ':' . $hiddenField))) { if ($row[$hiddenField]) { $params = '&data[' . $table . '][' . $row['uid'] . '][' . $hiddenField . ']=0'; $cells[] = '<a href="#" onclick="' . htmlspecialchars('return jumpToUrl(\'' . $this->issueCommand($params, $this->returnUrl) . '\');') . '">' . '<img' . t3lib_iconWorks::skinImg($this->backPath, 'gfx/button_unhide.gif', 'width="11" height="10"') . ' title="' . $LANG->getLLL('unHide', $this->LL) . '" alt="" />' . '</a>'; } else { $params = '&data[' . $table . '][' . $row['uid'] . '][' . $hiddenField . ']=1'; $cells[] = '<a href="#" onclick="' . htmlspecialchars('return jumpToUrl(\'' . $this->issueCommand($params, $this->returnUrl) . '\');') . '">' . '<img' . t3lib_iconWorks::skinImg($this->backPath, 'gfx/button_hide.gif', 'width="11" height="10"') . ' title="' . $LANG->getLLL('hide', $this->LL) . '" alt="" />' . '</a>'; } } return ' <!-- CONTROL PANEL: ' . $table . ':' . $row['uid'] . ' --> <span style="padding:0 0 0 7px;">' . implode('', $cells) . '</span>'; }
/** * Creates the control panel for the header. * * @return string control panel (unless disabled) */ function getHeaderControl() { global $TCA; $permsEdit = $this->calcPerms & ($this->table === 'pages' ? 2 : 16); if ($permsEdit and !$TCA[$this->table]['ctrl']['readOnly'] and is_array($this->currentTable['idList']) and $this->showControls) { $editIdList = implode(',', $this->currentTable['idList']); $columnsOnly = implode(',', array_keys($this->columnList)); $params = '&edit[' . $this->table . '][' . $editIdList . ']=edit&columnsOnly=' . $columnsOnly . '&disHelp=1'; $content = '<img ' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/edit2.gif', 'width="11" height="12"') . ' title="' . $GLOBALS['LANG']->getLL('editShownColumns') . '" />'; $onClick = t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'], -1); $content = '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $content . '</a>'; } return $content; }
/** * [Describe function...] * * @param [type] $table: ... * @param [type] $withLabel: ... * @return [type] ... */ function getNewRecordButton($table, $withLabel = false) { if ($this->category) { $addP = '&defVals[' . $table . '][category]=' . $this->category; $addLbl = 'InCategory'; } $params = '&edit[' . $table . '][' . $this->newRecPid . ']=new' . $addP; $onclick = htmlspecialchars(t3lib_BEfunc::editOnClick($params, $this->backPath, $this->returnUrl)); $button = '<a href="#" onclick="' . $onclick . '">' . '<img' . t3lib_iconWorks::skinImg($this->backPath, 'gfx/new_el.gif') . ' title="' . $GLOBALS['LANG']->getLL('createArticle' . $addLbl, 1) . '" alt="" /> ' . ($withLabel ? $GLOBALS['LANG']->getLL('createArticle' . $addLbl) : '') . '</a>'; return $button; }
/** * Renders table selector. * * @return string Genrated content */ function renderTableSelector() { $content = '<tr class="bgColor4">'; $content .= '<td width="20"> </td>'; //space for csh icon $content .= '<td width="200">' . $GLOBALS['LANG']->getLL('displayRecordsFrom') . '</td><td>'; $link = '\'index.php?' . $this->pObj->link_getParameters() . '&SET[recordsView_start]=0&SET[recordsView_table]=\'+this.options[this.selectedIndex].value'; $content .= '<select onchange="document.location.href=' . $link . '">'; $content .= '<option value=""' . ($this->pObj->MOD_SETTINGS['recordsView_table'] == '' ? ' selected="selected"' : '') . '></options>'; foreach ($this->tables as $table) { $t = htmlspecialchars($table); t3lib_div::loadTCA($table); if ($this->canDisplayTable($table)) { $title = $GLOBALS['LANG']->sl($GLOBALS['TCA'][$table]['ctrl']['title']); $content .= '<option value="' . $t . '"' . ($this->pObj->MOD_SETTINGS['recordsView_table'] == $table ? ' selected="selected"' : '') . '>' . $title . ' (' . $t . ')' . '</option>'; } } $content .= '</select>'; if ($this->pObj->MOD_SETTINGS['recordsView_table']) { $backpath = '../../../../typo3/'; $table = $this->pObj->MOD_SETTINGS['recordsView_table']; $params = '&edit[' . $table . '][' . $this->pObj->id . ']=new'; $content .= ' '; $content .= '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $backpath, -1)) . '">'; $content .= t3lib_iconWorks::getSpriteIcon('actions-document-new', array('title' => $GLOBALS['LANG']->getLL('createnewrecord'))); $content .= '</a>'; } if (!in_array($this->pObj->MOD_SETTINGS['recordsView_table'], $this->tables)) { unset($this->pObj->MOD_SETTINGS['recordsView_table']); unset($this->pObj->MOD_SETTINGS['recordsView_start']); } $content .= '</td></tr><tr class="bgColor4"><td colspan="2"></td></tr>'; return $content; }
/** * Wraps an edit link around a string. * Creates a page module link for pages, edit link for other tables. * * @param string The string to be wrapped * @param string Table name (tt_content,...) * @param integer uid of the record * @return string Rendered link */ function wrapLink_edit($str, $refTable, $id) { global $BACK_PATH, $BE_USER; if ($refTable === 'pages') { //$onClick = "top.fsMod.recentIds['web']=".$id.";top.goToModule('web_layout',1);"; $params = '&edit[' . $refTable . '][' . $id . ']=edit'; $onClick = t3lib_BEfunc::editOnClick($params, $BACK_PATH); } else { $params = '&edit[' . $refTable . '][' . $id . ']=edit'; $onClick = t3lib_BEfunc::editOnClick($params, $BACK_PATH); } return '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $str . '</a>'; }
/** * Links to publishing etc of a version * * @param string Table name * @param array Record * @param integer The uid of the online version of $uid. If zero it means we are drawing a row for the online version itself while a value means we are drawing display for an offline version. * @return string HTML content, mainly link tags and images. */ function displayWorkspaceOverview_commandLinksSub($table, $rec, $origId) { $uid = $rec['uid']; if ($origId || $GLOBALS['BE_USER']->workspace === 0) { if (!$GLOBALS['BE_USER']->workspaceCannotEditRecord($table, $rec)) { // Edit if ($table === 'pages') { $actionLinks .= '<a href="#" onclick="top.loadEditId(' . $uid . ');top.goToModule(\'' . $this->pageModule . '\'); return false;" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:img_title_edit_page', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('apps-version-page-open') . '</a>'; } else { $params = '&edit[' . $table . '][' . $uid . ']=edit'; $actionLinks .= '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $this->doc->backPath)) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:img_title_edit_element', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a>'; } } // History/Log $actionLinks .= '<a href="' . htmlspecialchars($this->doc->backPath . 'show_rechis.php?element=' . rawurlencode($table . ':' . $uid) . '&returnUrl=' . rawurlencode($this->REQUEST_URI)) . '" title="' . $GLOBALS['LANG']->getLL('showLog', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-history-open') . '</a>'; } // View if ($table === 'pages') { $actionLinks .= '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::viewOnClick($uid, $this->doc->backPath, t3lib_BEfunc::BEgetRootLine($uid))) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-view') . '</a>'; } return $actionLinks; }
/** * Creates the onclick event for the insert-icons. * * TSconfig mod.web_list.newPageWiz.overrideWithExtension may contain an extension which provides a module * to be used instead of the normal create new page wizard. * * @param integer The pid. * @param integer New page id. * @return string Onclick attribute content */ function onClickEvent($pid, $newPagePID) { $TSconfigProp = $this->getModConfig($newPagePID); if ($TSconfigProp['overrideWithExtension']) { if (t3lib_extMgm::isLoaded($TSconfigProp['overrideWithExtension'])) { $onclick = "window.location.href='" . t3lib_extMgm::extRelPath($TSconfigProp['overrideWithExtension']) . 'mod1/index.php?cmd=crPage&positionPid=' . $pid . "';"; return $onclick; } } $params = '&edit[pages][' . $pid . ']=new&returnNewPageId=1'; return t3lib_BEfunc::editOnClick($params, '', $this->R_URI); }
/** * Create the panel of buttons for submitting the form or otherwise perform operations. * * @param string Identifier for function of module * @return array all available buttons as an assoc. array */ protected function getButtons($function = '') { global $TCA, $LANG, $BACK_PATH, $BE_USER; $buttons = array('view' => '', 'history_page' => '', 'new_content' => '', 'move_page' => '', 'move_record' => '', 'new_page' => '', 'edit_page' => '', 'record_list' => '', 'csh' => '', 'shortcut' => '', 'cache' => '', 'savedok' => '', 'savedokshow' => '', 'closedok' => '', 'deletedok' => '', 'undo' => '', 'history_record' => ''); // View page $buttons['view'] = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::viewOnClick($this->pageinfo['uid'], $BACK_PATH, t3lib_BEfunc::BEgetRootLine($this->pageinfo['uid']))) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.showPage', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-view') . '</a>'; // Shortcut if ($BE_USER->mayMakeShortcut()) { $buttons['shortcut'] = $this->doc->makeShortcutIcon('id, edit_record, pointer, new_unique_uid, search_field, search_levels, showLimit', implode(',', array_keys($this->MOD_MENU)), $this->MCONF['name']); } // Cache if (!$this->modTSconfig['properties']['disableAdvanced']) { $buttons['cache'] = '<a href="' . htmlspecialchars('db_layout.php?id=' . $this->pageinfo['uid'] . '&clear_cache=1') . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.clear_cache', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-system-cache-clear') . '</a>'; } // If access to Web>List for user, then link to that module. $buttons['record_list'] = t3lib_BEfunc::getListViewLink(array('id' => $this->pageinfo['uid'], 'returnUrl' => t3lib_div::getIndpEnv('REQUEST_URI')), $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.showList')); if (!$this->modTSconfig['properties']['disableIconToolbar']) { // Page history $buttons['history_page'] = '<a href="#" onclick="' . htmlspecialchars('jumpToUrl(\'' . $BACK_PATH . 'show_rechis.php?element=' . rawurlencode('pages:' . $this->id) . '&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI')) . '#latest\');return false;') . '" title="' . $LANG->getLL('recordHistory', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-history-open') . '</a>'; // New content element $buttons['new_content'] = '<a href="' . htmlspecialchars('db_new_content_el.php?id=' . $this->id . '&sys_language_uid=' . $this->current_sys_language . '&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '" title="' . $LANG->getLL('newContentElement', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-new') . '</a>'; // Move page $buttons['move_page'] = '<a href="' . htmlspecialchars($BACK_PATH . 'move_el.php?table=pages&uid=' . $this->id . '&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '" title="' . $LANG->getLL('move_page', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-page-move') . '</a>'; // Move record if (t3lib_div::testInt($this->eRParts[1])) { $buttons['move_record'] = '<a href="' . htmlspecialchars($BACK_PATH . 'move_el.php?table=' . $this->eRParts[0] . '&uid=' . $this->eRParts[1] . '&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))) . '">' . t3lib_iconWorks::getSpriteIcon('actions-' . ($this->eRParts[0] == 'tt_content' ? 'document' : 'page') . '-move', array('class' => 'c-inputButton', 'title' => $LANG->getLL('move_' . ($this->eRParts[0] == 'tt_content' ? 'record' : 'page'), 1))) . '</a>'; } // Create new page (wizard) $buttons['new_page'] = '<a href="#" onclick="' . htmlspecialchars('jumpToUrl(\'' . $BACK_PATH . 'db_new.php?id=' . $this->id . '&pagesOnly=1&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI')) . '\');return false;') . '" title="' . $LANG->getLL('newPage', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-page-new') . '</a>'; // Edit page properties if ($this->CALC_PERMS & 2) { $params = '&edit[pages][' . $this->id . ']=edit'; $buttons['edit_page'] = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $BACK_PATH)) . '" title="' . $LANG->getLL('editPageProperties', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-page-open') . '</a>'; } // Add CSH (Context Sensitive Help) icon to tool bar if ($function == 'quickEdit') { $buttons['csh'] = t3lib_BEfunc::cshItem($this->descrTable, 'quickEdit', $BACK_PATH, '', TRUE, 'margin-top: 0px; margin-bottom: 0px;'); } else { $buttons['csh'] = t3lib_BEfunc::cshItem($this->descrTable, 'columns_' . $this->MOD_SETTINGS['function'], $BACK_PATH, '', TRUE, 'margin-top: 0px; margin-bottom: 0px;'); } if ($function == 'quickEdit') { // Save record $buttons['savedok'] = '<input class="c-inputButton" type="image" name="savedok"' . t3lib_iconWorks::skinImg($BACK_PATH, 'gfx/savedok.gif', '') . ' title="' . $LANG->sL('LLL:EXT:lang/locallang_core.php:rm.saveDoc', 1) . '" alt="" />'; // Save record and show page $buttons['savedokshow'] = '<a href="#" onclick="' . htmlspecialchars('document.editform.redirect.value+=\'&popView=1\'; TBE_EDITOR.checkAndDoSubmit(1); return false;') . '" title="' . $LANG->sL('LLL:EXT:lang/locallang_core.php:rm.saveDocShow', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-save-view') . '</a>'; // Close record $buttons['closedok'] = '<a href="#" onclick="' . htmlspecialchars('jumpToUrl(unescape(\'' . rawurlencode($this->closeUrl) . '\')); return false;') . '" title="' . $LANG->sL('LLL:EXT:lang/locallang_core.php:rm.closeDoc', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-close') . '</a>'; // Delete record if ($this->deleteButton) { $buttons['deletedok'] = '<a href="#" onclick="' . htmlspecialchars('return deleteRecord(\'' . $this->eRParts[0] . '\',\'' . $this->eRParts[1] . '\',\'' . t3lib_div::getIndpEnv('SCRIPT_NAME') . '?id=' . $this->id . '\');') . '" title="' . $LANG->getLL('deleteItem', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-edit-delete') . '</a>'; } if ($this->undoButton) { // Undo button $buttons['undo'] = '<a href="#" onclick="' . htmlspecialchars('window.location.href=\'' . $BACK_PATH . 'show_rechis.php?element=' . rawurlencode($this->eRParts[0] . ':' . $this->eRParts[1]) . '&revert=ALL_FIELDS&sumUp=-1&returnUrl=' . rawurlencode($this->R_URI) . '\'; return false;') . '" title="' . htmlspecialchars(sprintf($LANG->getLL('undoLastChange'), t3lib_BEfunc::calcAge($GLOBALS['EXEC_TIME'] - $this->undoButtonR['tstamp'], $LANG->sL('LLL:EXT:lang/locallang_core.php:labels.minutesHoursDaysYears')))) . '">' . t3lib_iconWorks::getSpriteIcon('actions-edit-undo') . '</a>'; // History button $buttons['history_record'] = '<a href="#" onclick="' . htmlspecialchars('jumpToUrl(\'' . $BACK_PATH . 'show_rechis.php?element=' . rawurlencode($this->eRParts[0] . ':' . $this->eRParts[1]) . '&returnUrl=' . rawurlencode($this->R_URI) . '#latest\');return false;') . '" title="' . $LANG->getLL('recordHistory', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-history-open') . '</a>'; } } } return $buttons; }
/** * Rendering the localization information table. * * @param array The Page tree data * @return string HTML for the localization information table. */ function renderL10nTable(&$tree) { global $LANG; // Title length: $titleLen = $GLOBALS['BE_USER']->uc['titleLen']; // Put together the TREE: $output = ''; $newOL_js = array(); $langRecUids = array(); //Init DDD $dao = t3lib_div::makeInstance('tx_languagevisibility_daocommon'); if (version_compare(TYPO3_version, '4.3.0', '<')) { $elementfactory = new tx_languagevisibility_elementFactory($dao); } else { $elementfactory = t3lib_div::makeInstance('tx_languagevisibility_elementFactory', $dao); } $languageRep = t3lib_div::makeInstance('tx_languagevisibility_languagerepository'); $languageList = $languageRep->getLanguages(); $visibility = t3lib_div::makeInstance('tx_languagevisibility_visibilityService'); //traverse Tree: foreach ($tree->tree as $data) { $tCells = array(); $element = $elementfactory->getElementForTable('pages', $data['row']['uid']); //first cell (tree): // Page icons / titles etc. $tCells[] = '<td' . ($data['row']['_CSSCLASS'] ? ' class="' . $data['row']['_CSSCLASS'] . '"' : '') . '>' . $data['HTML'] . htmlspecialchars(t3lib_div::fixed_lgd_cs($data['row']['title'], $titleLen)) . (strcmp($data['row']['nav_title'], '') ? ' [Nav: <em>' . htmlspecialchars(t3lib_div::fixed_lgd_cs($data['row']['nav_title'], $titleLen)) . '</em>]' : '') . '</td>'; //language cells: foreach ($languageList as $language) { $info = ''; $editUid = $data['row']['uid']; $params = '&edit[pages][' . $editUid . ']=edit'; $langId = $language->getUid(); if ($visibility->isVisible($language, $element)) { $isVisible = TRUE; $statusVis = 'c-visible'; } else { $isVisible = FALSE; $statusVis = 'c-notvisible'; } if ($element->hasTranslation($langId)) { $statusTrans = 'c-translated'; } else { $statusTrans = 'c-nottranslated'; } if ($language->getUid() == 0) { //Default //"View page" link is created: $viewPageLink = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::viewOnClick($data['row']['uid'], $GLOBALS['BACK_PATH'], '', '', '', '&L=###LANG_UID###')) . '">' . '<img' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/zoom.gif', 'width="12" height="12"') . ' title="' . $LANG->getLL('lang_renderl10n_viewPage', '1') . '" border="0" alt="" />' . '</a>'; $info .= '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'])) . '">' . '<img' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/edit2.gif', 'width="11" height="12"') . ' title="' . $LANG->getLL('lang_renderl10n_editDefaultLanguagePage', '1') . '" border="0" alt="" />' . '</a>'; $info .= '<a href="#" onclick="' . htmlspecialchars('top.loadEditId(' . intval($data['row']['uid']) . ',"&SET[language]=0"); return false;') . '">' . '<img' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/edit_page.gif', 'width="12" height="12"') . ' title="' . $LANG->getLL('lang_renderl10n_editPage', '1') . '" border="0" alt="" />' . '</a>'; $info .= str_replace('###LANG_UID###', '0', $viewPageLink); $info .= $data['row']['l18n_cfg'] & 1 ? '<span title="' . $LANG->sL('LLL:EXT:cms/locallang_tca.php:pages.l18n_cfg.I.1', '1') . '">D</span>' : ' '; // Put into cell: $tCells[] = '<td class="' . $statusTrans . ' c-leftLine">' . $info . '</td>'; $tCells[] = '<td class="' . $statusTrans . '" title="' . $LANG->getLL('lang_renderl10n_CEcount', '1') . '" align="center">' . $this->getContentElementCount($data['row']['uid'], 0) . '</td>'; } else { //Normal Language: if ($element->hasTranslation($langId)) { $status = 'c-ok'; $overLayRow = $element->getOverLayRecordForCertainLanguage($langId); //add uid of overlay to list of editable records: $langRecUids[$langId][] = $overLayRow['uid']; $icon = t3lib_iconWorks::getIconImage('pages_language_overlay', $overLayRow, $GLOBALS['BACK_PATH'], 'align="top" class="c-recIcon"'); $info = $icon . htmlspecialchars(t3lib_div::fixed_lgd_cs($overLayRow['title'], $titleLen)) . (strcmp($overLayRow['nav_title'], '') ? ' [Nav: <em>' . htmlspecialchars(t3lib_div::fixed_lgd_cs($overLayRow['nav_title'], $titleLen)) . '</em>]' : '') . ($row['_COUNT'] > 1 ? '<div>' . $LANG->getLL('lang_renderl10n_badThingThereAre', '1') . '</div>' : ''); $tCells[] = '<td class="' . $statusTrans . ' c-leftLine">' . $info . '</td>'; // Edit whole record: $info = ''; $editUid = $overLayRow['uid']; $params = '&edit[pages_language_overlay][' . $editUid . ']=edit'; $info .= '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'])) . '">' . '<img' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/edit2.gif', 'width="11" height="12"') . ' title="' . $LANG->getLL('lang_renderl10n_editLanguageOverlayRecord', '1') . '" border="0" alt="" />' . '</a>'; $info .= '<a href="#" onclick="' . htmlspecialchars('top.loadEditId(' . intval($data['row']['uid']) . ',"&SET[language]=' . $langId . '"); return false;') . '">' . '<img' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/edit_page.gif', 'width="12" height="12"') . ' title="' . $LANG->getLL('lang_renderl10n_editPageLang', '1') . '" border="0" alt="" />' . '</a>'; $info .= str_replace('###LANG_UID###', $langId, $viewPageLink); $tCells[] = '<td class="' . $statusTrans . '">' . $info . '</td>'; $tCells[] = '<td class="' . $statusTrans . '" title="' . $LANG->getLL('lang_renderl10n_CEcount', '1') . '" align="center">' . $this->getContentElementCount($data['row']['uid'], $langId) . '</td>'; } else { $status = t3lib_div::hideIfNotTranslated($data['row']['l18n_cfg']) || $data['row']['l18n_cfg'] & 1 ? 'c-blocked' : 'c-fallback'; $tCells[] = '<td class="' . $statusTrans . ' c-leftLine"> </td>'; $tCells[] = '<td class="' . $statusTrans . '"> </td>'; //add to JS $infoCell = '<input type="checkbox" name="newOL[' . $langId . '][' . $data['row']['uid'] . ']" value="1" />'; $newOL_js[$langId] .= ' +(document.webinfoForm[\'newOL[' . $langId . '][' . $data['row']['uid'] . ']\'].checked ? \'&edit[pages_language_overlay][' . $data['row']['uid'] . ']=new\' : \'\') '; $tCells[] = '<td class="' . $statusTrans . '">' . $infoCell . '</td>'; } } //last cell show status $tCells[] = '<td class="' . $statusVis . '">' . $this->_getStatusImage($isVisible) . '</td>'; } $output .= ' <tr class="bgColor5"> ' . implode(' ', $tCells) . ' </tr>'; } //first ROW: //**************** $firstRowCells[] = '<td>' . $LANG->getLL('lang_renderl10n_page', '1') . ':</td>'; foreach ($languageList as $language) { $langId = $language->getUid(); if ($this->pObj->MOD_SETTINGS['lang'] == 0 || (int) $this->pObj->MOD_SETTINGS['lang'] === (int) $langId) { $firstRowCells[] = '<td class="c-leftLine">' . $language->getTitle() . $language->getFlagImg() . '</td>'; if ($langId == 0) { $firstRowCells[] = '<td></td>'; $firstRowCells[] = '<td></td>'; } else { // Title: // Edit language overlay records: if (is_array($langRecUids[$langId])) { $params = '&edit[pages_language_overlay][' . implode(',', $langRecUids[$langId]) . ']=edit&columnsOnly=title,nav_title,hidden'; $firstRowCells[] = '<td><a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'])) . '"> <img' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/edit2.gif', 'width="11" height="12"') . ' title="' . $LANG->getLL('lang_renderl10n_editLangOverlays', '1') . '" border="0" alt="" /> </a></td>'; } else { $firstRowCells[] = '<td> </td>'; } // Create new overlay records: $params = "'" . $newOL_js[$langId] . "+'&columnsOnly=title,hidden,sys_language_uid&defVals[pages_language_overlay][sys_language_uid]=" . $langId; $firstRowCells[] = '<td><a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'])) . '"> <img' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/new_el.gif', 'width="11" height="12"') . ' title="' . $LANG->getLL('lang_getlangsta_createNewTranslationHeaders', '1') . '" border="0" alt="" /> </a></td>'; $firstRowCells[] = '<td></td>'; } } } $output = ' <tr class="bgColor4"> ' . implode(' ', $firstRowCells) . ' </tr>' . $output; $output = ' <table border="0" cellspacing="0" cellpadding="0" id="langTable">' . $output . ' </table>'; return $output; }
/** * Creates an info-box for the current page (identified by input record). * * @param array Page record * @param boolean If set, there will be shown an edit icon, linking to editing of the page properties. * @return string HTML for the box. */ function getPageInfoBox($rec, $edit = 0) { global $LANG; // If editing of the page properties is allowed: if ($edit) { $params = '&edit[pages][' . $rec['uid'] . ']=edit'; $editIcon = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::editOnClick($params, $this->backPath)) . '" title="' . $GLOBALS['LANG']->getLL('edit', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a>'; } else { $editIcon = $this->noEditIcon('noEditPage'); } // Setting page icon, link, title: $outPutContent = t3lib_iconWorks::getSpriteIconForRecord('pages', $rec, array('title' => t3lib_BEfunc::titleAttribForPages($rec))) . $editIcon . ' ' . htmlspecialchars($rec['title']); // Init array where infomation is accumulated as label/value pairs. $lines = array(); // Owner user/group: if ($this->pI_showUser) { // User: $users = t3lib_BEfunc::getUserNames('username,usergroup,usergroup_cached_list,uid,realName'); $groupArray = explode(',', $GLOBALS['BE_USER']->user['usergroup_cached_list']); $users = t3lib_BEfunc::blindUserNames($users, $groupArray); $lines[] = array($LANG->getLL('pI_crUser') . ':', htmlspecialchars($users[$rec['cruser_id']]['username']) . ' (' . $users[$rec['cruser_id']]['realName'] . ')'); } // Created: $lines[] = array($LANG->getLL('pI_crDate') . ':', t3lib_BEfunc::datetime($rec['crdate']) . ' (' . t3lib_BEfunc::calcAge($GLOBALS['EXEC_TIME'] - $rec['crdate'], $this->agePrefixes) . ')'); // Last change: $lines[] = array($LANG->getLL('pI_lastChange') . ':', t3lib_BEfunc::datetime($rec['tstamp']) . ' (' . t3lib_BEfunc::calcAge($GLOBALS['EXEC_TIME'] - $rec['tstamp'], $this->agePrefixes) . ')'); // Last change of content: if ($rec['SYS_LASTCHANGED']) { $lines[] = array($LANG->getLL('pI_lastChangeContent') . ':', t3lib_BEfunc::datetime($rec['SYS_LASTCHANGED']) . ' (' . t3lib_BEfunc::calcAge($GLOBALS['EXEC_TIME'] - $rec['SYS_LASTCHANGED'], $this->agePrefixes) . ')'); } // Spacer: $lines[] = ''; // Display contents of certain page fields, if any value: $dfields = explode(',', 'alias,target,hidden,starttime,endtime,fe_group,no_cache,cache_timeout,newUntil,lastUpdated,subtitle,keywords,description,abstract,author,author_email'); foreach ($dfields as $fV) { if ($rec[$fV]) { $lines[] = array($GLOBALS['LANG']->sL(t3lib_BEfunc::getItemLabel('pages', $fV)), t3lib_BEfunc::getProcessedValue('pages', $fV, $rec[$fV])); } } // Page hits (depends on "sys_stat" extension) if ($this->pI_showStat && t3lib_extMgm::isLoaded('sys_stat')) { // Counting total hits: $count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('*', 'sys_stat', 'page_id=' . intval($rec['uid'])); if ($count) { // Get min/max $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('min(tstamp) AS min,max(tstamp) AS max', 'sys_stat', 'page_id=' . intval($rec['uid'])); $rrow2 = $GLOBALS['TYPO3_DB']->sql_fetch_row($res); $lines[] = ''; $lines[] = array($LANG->getLL('pI_hitsPeriod') . ':', t3lib_BEfunc::date($rrow2[0]) . ' - ' . t3lib_BEfunc::date($rrow2[1]) . ' (' . t3lib_BEfunc::calcAge($rrow2[1] - $rrow2[0], $this->agePrefixes) . ')'); $lines[] = array($LANG->getLL('pI_hitsTotal') . ':', $rrow[0]); // Last 10 days $nextMidNight = mktime(0, 0, 0) + 1 * 3600 * 24; $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*), FLOOR((' . $nextMidNight . '-tstamp)/(24*3600)) AS day', 'sys_stat', 'page_id=' . intval($rec['uid']) . ' AND tstamp>' . ($nextMidNight - 10 * 24 * 3600), 'day'); $days = array(); while ($rrow = $GLOBALS['TYPO3_DB']->sql_fetch_row($res)) { $days[$rrow[1]] = $rrow[0]; } $headerH = array(); $contentH = array(); for ($a = 9; $a >= 0; $a--) { $headerH[] = ' <td class="bgColor5" nowrap="nowrap"> ' . date('d', $nextMidNight - ($a + 1) * 24 * 3600) . ' </td>'; $contentH[] = ' <td align="center">' . ($days[$a] ? intval($days[$a]) : '-') . '</td>'; } // Compile first hit-table (last 10 days) $hitTable = ' <table border="0" cellpadding="0" cellspacing="1" class="typo3-page-hits"> <tr>' . implode('', $headerH) . '</tr> <tr>' . implode('', $contentH) . '</tr> </table>'; $lines[] = array($LANG->getLL('pI_hits10days') . ':', $hitTable, 1); // Last 24 hours $nextHour = mktime(date('H'), 0, 0) + 3600; $hours = 16; $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*), FLOOR((' . $nextHour . '-tstamp)/3600) AS hours', 'sys_stat', 'page_id=' . intval($rec['uid']) . ' AND tstamp>' . ($nextHour - $hours * 3600), 'hours'); $days = array(); while ($rrow = $GLOBALS['TYPO3_DB']->sql_fetch_row($res)) { $days[$rrow[1]] = $rrow[0]; } $headerH = array(); $contentH = array(); for ($a = $hours - 1; $a >= 0; $a--) { $headerH[] = ' <td class="bgColor5" nowrap="nowrap"> ' . intval(date('H', $nextHour - ($a + 1) * 3600)) . ' </td>'; $contentH[] = ' <td align="center">' . ($days[$a] ? intval($days[$a]) : '-') . '</td>'; } // Compile second hit-table (last 24 hours) $hitTable = ' <table border="0" cellpadding="0" cellspacing="1" class="typo3-page-stat"> <tr>' . implode('', $headerH) . '</tr> <tr>' . implode('', $contentH) . '</tr> </table>'; $lines[] = array($LANG->getLL('pI_hits24hours') . ':', $hitTable, 1); } } // Finally, wrap the elements in the $lines array in table cells/rows foreach ($lines as $fV) { if (is_array($fV)) { if (!$fV[2]) { $fV[1] = htmlspecialchars($fV[1]); } $out .= ' <tr> <td class="bgColor4" nowrap="nowrap"><strong>' . htmlspecialchars($fV[0]) . ' </strong></td> <td class="bgColor4">' . $fV[1] . '</td> </tr>'; } else { $out .= ' <tr> <td colspan="2"><img src="clear.gif" width="1" height="3" alt="" /></td> </tr>'; } } // Wrap table tags around... $outPutContent .= ' <!-- Page info box: --> <table border="0" cellpadding="0" cellspacing="1" id="typo3-page-info"> ' . $out . ' </table>'; // ... and return it. return $outPutContent; }
/** * Rendering the information * * @param array The Page tree data * @return string HTML for the information table. */ function renderModule(t3lib_pageTree $tree) { // Initialize: $searchPath = trim(t3lib_div::_GP('pathPrefixSearch')); $cmd = t3lib_div::_GET('cmd'); $entry = t3lib_div::_GET('entry'); $searchForm_replace = t3lib_div::_POST('_replace'); $searchForm_delete = t3lib_div::_POST('_delete'); $trackSameUrl = array(); $this->searchResultCounter = 0; // Traverse tree: $output = ''; $cc=0; foreach($tree->tree as $row) { // Get all pagepath entries for page: $pathCacheInfo = $this->getPathCache($row['row']['uid']); // Row title: $rowTitle = $row['HTML'].t3lib_BEfunc::getRecordTitle('pages',$row['row'],TRUE); $cellAttrib = ($row['row']['_CSSCLASS'] ? ' class="'.$row['row']['_CSSCLASS'].'"' : ''); // Add at least one empty element: if (!count($pathCacheInfo)) { // Add title: $tCells = array(); $tCells[]='<td nowrap="nowrap"'.$cellAttrib.'>'.$rowTitle.'</td>'; // Empty row: $tCells[]='<td colspan="10" align="center"> </td>'; // Compile Row: $output.= ' <tr class="bgColor'.($cc%2 ? '-20':'-10').'"> '.implode(' ',$tCells).' </tr>'; $cc++; } else { foreach($pathCacheInfo as $c => $inf) { // Init: $deletedEntry = FALSE; $hash = $inf['pagepath'].'|'.$inf['rootpage_id'].'|'.$inf['language_id']; // MP is not a part of this because the path itself should be different simply because the MP makes a different path! (see tx_realurl_advanced::pagePathtoID()) // Add icon/title and ID: $tCells = array(); if (!$c) { $tCells[]='<td nowrap="nowrap" rowspan="'.count($pathCacheInfo).'"'.$cellAttrib.'>'.$rowTitle.'</td>'; $tCells[]='<td rowspan="'.count($pathCacheInfo).'">'.$inf['page_id'].'</td>'; } // Add values from alternative field used to generate URL: $baseRow = $row['row']; // page row as base. $onClick = t3lib_BEfunc::editOnClick('&edit[pages]['.$row['row']['uid'].']=edit&columnsOnly=title,nav_title,alias,tx_realurl_pathsegment',$this->pObj->doc->backPath); $editIcon = '<a href="#" onclick="'.htmlspecialchars($onClick).'">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/edit2.gif','width="11" height="12"').' title="" alt="" />'. '</a>'; $onClick = t3lib_BEfunc::viewOnClick($row['row']['uid'],$this->pObj->doc->backPath,'','','',''); $editIcon.= '<a href="#" onclick="'.htmlspecialchars($onClick).'">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/zoom.gif','width="12" height="12"').' title="" alt="" />'. '</a>'; if ($inf['language_id']>0) { // For alternative languages, show another list of fields, form page overlay record: $editIcon = ''; list($olRec) = t3lib_BEfunc::getRecordsByField('pages_language_overlay','pid',$row['row']['uid'],' AND sys_language_uid='.intval($inf['language_id'])); if (is_array($olRec)) { $baseRow = array_merge($baseRow,$olRec); $onClick = t3lib_BEfunc::editOnClick('&edit[pages_language_overlay]['.$olRec['uid'].']=edit&columnsOnly=title,nav_title',$this->pObj->doc->backPath); $editIcon = '<a href="#" onclick="'.htmlspecialchars($onClick).'">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/edit2.gif','width="11" height="12"').' title="" alt="" />'. '</a>'; $onClick = t3lib_BEfunc::viewOnClick($row['row']['uid'],$this->pObj->doc->backPath,'','','','&L='.$olRec['sys_language_uid']); $editIcon.= '<a href="#" onclick="'.htmlspecialchars($onClick).'">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/zoom.gif','width="12" height="12"').' title="" alt="" />'. '</a>'; } else { $baseRow = array(); } } $tCells[]='<td>'.$editIcon.'</td>'; // Sources for segment: $sources = count($baseRow) ? implode(' | ',array($baseRow['tx_realurl_pathsegment'], $baseRow['alias'], $baseRow['nav_title'], $baseRow['title'])) : ''; $tCells[]='<td nowrap="nowrap">'.htmlspecialchars($sources).'</td>'; // Show page path: if (strcmp($searchPath,'') && t3lib_div::isFirstPartOfStr($inf['pagepath'],$searchPath) && !$inf['expire']) { // Delete entry: if ($searchForm_delete) { $this->deletePathCacheEntry($inf['cache_id']); $deletedEntry = TRUE; $pagePath = '[DELETED]'; } elseif ($searchForm_replace) { $replacePart = trim(t3lib_div::_POST('pathPrefixReplace')); $this->editPathCacheEntry($inf['cache_id'], $replacePart.substr($inf['pagepath'],strlen($searchPath))); $pagePath = '<span class="typo3-red">'. htmlspecialchars($replacePart). '</span>'. htmlspecialchars(substr($inf['pagepath'],strlen($searchPath))); } else { $pagePath = '<span class="typo3-red">'. htmlspecialchars(substr($inf['pagepath'],0,strlen($searchPath))). '</span>'. htmlspecialchars(substr($inf['pagepath'],strlen($searchPath))); $this->searchResultCounter++; } } else { // Delete entries: if ($cmd==='edit' && (!strcmp($entry,$inf['cache_id']) || !strcmp($entry,'ALL'))) { $pagePath = '<input type="text" name="edit['.$inf['cache_id'].']" value="'.htmlspecialchars($inf['pagepath']).'" size="40" />'; if ($cmd==='edit' && $entry!='ALL') { $pagePath.= $this->saveCancelButtons(); } } else { $pagePath = htmlspecialchars($inf['pagepath']); } } $tCells[]='<td'.($inf['expire'] ? ' style="font-style: italic; color:#999999;"' : '').'>'.$pagePath.'</td>'; if ($deletedEntry) { $tCells[]='<td> </td>'; } else { $tCells[]='<td>'. '<a href="'.$this->linkSelf('&cmd=delete&entry='.$inf['cache_id']).'">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/garbage.gif','width="11" height="12"').' title="Delete" alt="" />'. '</a>'. '<a href="'.$this->linkSelf('&cmd=edit&entry='.$inf['cache_id']).'">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/edit2.gif','width="11" height="12"').' title="Edit" alt="" />'. '</a>'. '<a href="'.$this->linkSelf('&pathPrefixSearch='.rawurlencode($inf['pagepath'])).'">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/napshot.gif','width="12" height="12"').' title="Use for search" alt="" />'. '</a>'. '<a href="'.$this->linkSelf('&cmd=copy&entry='.$inf['cache_id']).'">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/clip_copy.gif','width="12" height="12"').' title="Copy entry" alt="" />'. '</a>'. '</td>'; } $tCells[]='<td'.($inf['expire'] && $inf['expire']<time() ? ' style="color: red;"':'').'>'. ($inf['expire'] ? htmlspecialchars(t3lib_BEfunc::dateTimeAge($inf['expire'],-1)) : ''). ($inf['expire'] ? '<a href="'.$this->linkSelf('&cmd=raiseExpire&entry='.$inf['cache_id']).'">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/up.gif','width="14" height="14"').' title="Set expire time to 30 days" alt="" />'. '</a>' : ''). '</td>'; // Set error msg: $error = ''; if (!strcmp($inf['pagepath'],'')) { if ($row['row']['uid']!=$this->pObj->id) { // Show error of "Empty" only for levels under the root. Yes, we cannot know that the pObj->id is the true root of the site, but at least any SUB page should probably have a path string! $error = $this->pObj->doc->icons(2).'Empty'; } } elseif (isset($trackSameUrl[$hash])) { $error = $this->pObj->doc->icons(2).'Already used on page ID '.$trackSameUrl[$hash]; } else { $error = ' '; } $tCells[]='<td>'.$error.'</td>'; $tCells[]='<td>'.htmlspecialchars($inf['language_id']).'</td>'; $tCells[]='<td>'.htmlspecialchars($inf['mpvar']).'</td>'; $tCells[]='<td>'.htmlspecialchars($inf['rootpage_id']).'</td>'; #$tCells[]='<td nowrap="nowrap">'.htmlspecialchars(t3lib_BEfunc::datetime($inf['expire'])).' / '.htmlspecialchars(t3lib_BEfunc::calcAge($inf['expire']-time())).'</td>'; $trackSameUrl[$hash] = $inf['page_id']; // Compile Row: $rowClass = 'bgColor'.($cc%2 ? '-20':'-10'); $output.= ' <tr class="'.$rowClass.'"> '.implode(' ',$tCells).' </tr>'; $cc++; } } } // Create header: $tCells = array(); $tCells[]='<td>Title:</td>'; $tCells[]='<td>ID:</td>'; $tCells[]='<td> </td>'; $tCells[]='<td>PathSegment | Alias | NavTitle | Title:</td>'; $tCells[]='<td>Pagepath:</td>'; $tCells[]='<td>'. '<a href="'.$this->linkSelf('&cmd=delete&entry=ALL').'" onclick="return confirm(\'Are you sure you want to flush all cached page paths?\');">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/garbage.gif','width="11" height="12"').' alt="" />'. '</a>'. '<a href="'.$this->linkSelf('&cmd=edit&entry=ALL').'">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/edit2.gif','width="11" height="12"').' title="" alt="" />'. '</a>'. '</td>'; $tCells[]='<td>Expires:'. '<a href="'.$this->linkSelf('&cmd=flushExpired').'">'. '<img'.t3lib_iconWorks::skinImg($this->pObj->doc->backPath,'gfx/garbage.gif','width="11" height="12"').' title="Flush all expired" alt="" />'. '</a>'. '</td>'; $tCells[]='<td>Errors:</td>'; $tCells[]='<td>Lang:</td>'; $tCells[]='<td>&MP:</td>'; $tCells[]='<td>RootPage ID:</td>'; #$tCells[]='<td>Expire:</td>'; $output = ' <tr class="bgColor5 tableheader"> '.implode(' ',$tCells).' </tr>'.$output; // Compile final table and return: $output = ' <table border="0" cellspacing="1" cellpadding="0" id="tx-realurl-pathcacheTable" class="lrPadding c-list">'.$output.' </table>'; if ($cmd==='edit' && $entry=='ALL') { $output.= $this->saveCancelButtons(); } return $output; }
/** * Creates listings of pages / content elements where NO or WRONG template objects are used. * * @param array Data Structure ID * @param integer Scope value. 1) page, 2) content elements * @param array Array with numerical toIDs. Must be integers and never be empty. You can always put in "-1" as dummy element. * @return string HTML table listing usages. */ function findDSUsageWithImproperTOs($dsObj, $scope, $toIdArray) { $output = array(); switch ($scope) { case 1: // // Header: $output[]=' <tr class="bgColor5 tableheader"> <td>' . $GLOBALS['LANG']->getLL('toused_title', 1) . ':</td> <td>' . $GLOBALS['LANG']->getLL('toused_path', 1) . ':</td> </tr>'; // Main templates: $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery( 'uid,title,pid', 'pages', '( (tx_templavoila_to NOT IN ('.implode(',',$toIdArray).') AND tx_templavoila_ds='.$GLOBALS['TYPO3_DB']->fullQuoteStr($dsObj->getKey(),'pages').') OR (tx_templavoila_next_to NOT IN ('.implode(',',$toIdArray).') AND tx_templavoila_next_ds='.$GLOBALS['TYPO3_DB']->fullQuoteStr($dsObj->getKey(),'pages').') )'. t3lib_BEfunc::deleteClause('pages') ); while(false !== ($pRow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))) { $path = $this->findRecordsWhereUsed_pid($pRow['uid']); if ($path) { $output[]=' <tr class="bgColor4-20"> <td nowrap="nowrap">'. '<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick('&edit[pages]['.$pRow['uid'].']=edit',$this->doc->backPath)).'">'. htmlspecialchars($pRow['title']). '</a></td> <td nowrap="nowrap">'. '<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::viewOnClick($pRow['uid'],$this->doc->backPath).'return false;').'">'. htmlspecialchars($path). '</a></td> </tr>'; } else { $output[]=' <tr class="bgColor4-20"> <td><em>' . $GLOBALS['LANG']->getLL('noaccess', 1) . '</em></td> <td>-</td> </tr>'; } } $GLOBALS['TYPO3_DB']->sql_free_result($res); break; case 2: // Select Flexible Content Elements: $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery( 'uid,header,pid', 'tt_content', 'CType='.$GLOBALS['TYPO3_DB']->fullQuoteStr('templavoila_pi1','tt_content'). ' AND tx_templavoila_to NOT IN ('.implode(',',$toIdArray).')'. ' AND tx_templavoila_ds='.$GLOBALS['TYPO3_DB']->fullQuoteStr($dsObj->getKey(),'tt_content'). t3lib_BEfunc::deleteClause('tt_content'), '', 'pid' ); // Header: $output[]=' <tr class="bgColor5 tableheader"> <td>' . $GLOBALS['LANG']->getLL('toused_header', 1) . ':</td> <td>' . $GLOBALS['LANG']->getLL('toused_path', 1) . ':</td> </tr>'; // Elements: while(false !== ($pRow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))) { $path = $this->findRecordsWhereUsed_pid($pRow['pid']); if ($path) { $output[]=' <tr class="bgColor4-20"> <td nowrap="nowrap">'. '<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick('&edit[tt_content]['.$pRow['uid'].']=edit',$this->doc->backPath)).'" title="Edit">'. htmlspecialchars($pRow['header']). '</a></td> <td nowrap="nowrap">'. '<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::viewOnClick($pRow['pid'],$this->doc->backPath).'return false;').'" title="View page">'. htmlspecialchars($path). '</a></td> </tr>'; } else { $output[]=' <tr class="bgColor4-20"> <td><em>' . $GLOBALS['LANG']->getLL('noaccess', 1) . '</em></td> <td>-</td> </tr>'; } } $GLOBALS['TYPO3_DB']->sql_free_result($res); break; } // Create final output table: if (count($output)) { if (count($output)>1) { $outputString = t3lib_iconWorks::getSpriteIcon('status-dialog-error'). sprintf($GLOBALS['LANG']->getLL('invalidtemplatevalues', 1), count($output) - 1); $this->setErrorLog($scope,'fatal',$outputString); $outputString.='<table border="0" cellspacing="1" cellpadding="1" class="lrPadding">'.implode('',$output).'</table>'; } else { $outputString = t3lib_iconWorks::getSpriteIcon('status-dialog-ok') . $GLOBALS['LANG']->getLL('noerrorsfound', 1); } } return $outputString; }
function wrapEditLink($content, $params) { $onClick = t3lib_BEfunc::editOnClick($params, $this->backPath, -1); return '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $content . '</a>'; }
/** * Returns a JavaScript string (for an onClick handler) which will load the alt_doc.php script that shows the form for editing of the record(s) you have send as params. * REMEMBER to always htmlspecialchar() content in href-properties to ampersands get converted to entities (XHTML requirement and XSS precaution) * * @param string $params Parameters sent along to alt_doc.php. This requires a much more details description which you must seek in Inside TYPO3s documentation of the alt_doc.php API. And example could be '&edit[pages][123] = edit' which will show edit form for page record 123. * @param string $backPath Must point back to the TYPO3_mainDir directory (where alt_doc.php is) * @param string $requestUri An optional returnUrl you can set - automatically set to REQUEST_URI. * * @return string * @see \TYPO3\CMS\Backend\Template\DocumentTemplate::issueCommand() */ public function editOnClick($params, $backPath = '', $requestUri = '') { /** @noinspection PhpDeprecationInspection PhpUndefinedClassInspection */ return t3lib_BEfunc::editOnClick($params, $backPath, $requestUri); }
/** * Returns a command array for the current type * * @return array Command array * @access private */ function _getCommand() { $params = '&edit[' . $this->itemInfo['__table'] . '][' . $this->itemInfo['uid'] . ']=edit'; if ($this->type === 'context') { $commands['url'] = 'alt_doc.php?' . $params; } else { $onClick = t3lib_BEfunc::editOnClick($params, $this->env['backPath'], -1); $commands['onclick'] = $onClick; } return $commands; }
/** * Builds a list of all links for a specific element (here: BE user) and returns it for print. * * @param string the db table that should be used * @param array the BE user record to use * @return string a HTML formatted list of the link */ function elementLinks($table, $row) { // Info: $cells[] = '<a href="#" onclick="top.launchView(\'' . $table . '\', \'' . $row['uid'] . '\',\'' . $GLOBALS['BACK_PATH'] . '\'); return false;" title="' . $GLOBALS['LANG']->getLL('showInformation', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-info') . '</a>'; // Edit: $params = '&edit[' . $table . '][' . $row['uid'] . ']=edit'; $cells[] = '<a href="#" onclick="' . t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'], '') . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:edit', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a>'; // Hide: $hiddenField = $GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled']; if ($row[$hiddenField]) { $params = '&data[' . $table . '][' . $row['uid'] . '][' . $hiddenField . ']=0'; $cells[] = '<a href="' . $this->doc->issueCommand($params) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:enable', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-edit-unhide') . '</a>'; } else { $params = '&data[' . $table . '][' . $row['uid'] . '][' . $hiddenField . ']=1'; $cells[] = '<a href="' . $this->doc->issueCommand($params) . '" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:disable', true) . '">' . t3lib_iconWorks::getSpriteIcon('actions-edit-hide') . '</a>'; } // Delete $params = '&cmd[' . $table . '][' . $row['uid'] . '][delete]=1'; $cells[] = '<a href="' . $this->doc->issueCommand($params) . '" onclick="return confirm(unescape(\'' . $GLOBALS['LANG']->getLL('sureToDelete', TRUE) . '\'));" title="' . $GLOBALS['LANG']->getLL('delete', TRUE) . '">' . t3lib_iconWorks::getSpriteIcon('actions-edit-delete') . '</a>'; return implode('', $cells); }
/** * Main function of class * * @return string HTML output */ function main() { global $LANG; $menu = t3lib_BEfunc::getFuncMenu($this->pObj->id, 'SET[tsconf_parts]', $this->pObj->MOD_SETTINGS['tsconf_parts'], $this->pObj->MOD_MENU['tsconf_parts']); $menu .= '<br /><label for="checkTsconf_alphaSort">' . $GLOBALS['LANG']->getLL('sort_alphabetic', true) . '</label> ' . t3lib_BEfunc::getFuncCheck($this->pObj->id, 'SET[tsconf_alphaSort]', $this->pObj->MOD_SETTINGS['tsconf_alphaSort'], '', '', 'id="checkTsconf_alphaSort"'); $menu .= '<br /><br />'; if ($this->pObj->MOD_SETTINGS['tsconf_parts'] == 99) { $TSparts = t3lib_BEfunc::getPagesTSconfig($this->pObj->id, '', 1); $lines = array(); $pUids = array(); foreach ($TSparts as $k => $v) { if ($k != 'uid_0') { if ($k == 'defaultPageTSconfig') { $pTitle = '<strong>' . $GLOBALS['LANG']->getLL('editTSconfig_default', 1) . '</strong>'; $editIcon = ''; } else { $pUids[] = substr($k, 4); $row = t3lib_BEfunc::getRecordWSOL('pages', substr($k, 4)); $pTitle = $this->pObj->doc->getHeader('pages', $row, '', 0); $editIdList = substr($k, 4); $params = '&edit[pages][' . $editIdList . ']=edit&columnsOnly=TSconfig'; $onclickUrl = t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'], ''); $editIcon = '<a href="#" onclick="' . htmlspecialchars($onclickUrl) . '" title="' . $GLOBALS['LANG']->getLL('editTSconfig', 1) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-open') . '</a>'; } $TScontent = nl2br(htmlspecialchars(trim($v) . chr(10))); $tsparser = t3lib_div::makeInstance('t3lib_TSparser'); $tsparser->lineNumberOffset = 0; $TScontent = $tsparser->doSyntaxHighlight(trim($v) . LF, '', 0); $lines[] = ' <tr><td nowrap="nowrap" class="bgColor5">' . $pTitle . '</td></tr> <tr><td nowrap="nowrap" class="bgColor4">' . $TScontent . $editIcon . '</td></tr> <tr><td> </td></tr> '; } } if (count($pUids)) { $params = '&edit[pages][' . implode(',', $pUids) . ']=edit&columnsOnly=TSconfig'; $onclickUrl = t3lib_BEfunc::editOnClick($params, $GLOBALS['BACK_PATH'], ''); $editIcon = '<a href="#" onclick="' . htmlspecialchars($onclickUrl) . '" title="' . $GLOBALS['LANG']->getLL('editTSconfig_all', 1) . '">' . t3lib_iconWorks::getSpriteIcon('actions-document-open') . '<strong>' . $GLOBALS['LANG']->getLL('editTSconfig_all', 1) . '</strong>' . '</a>'; } else { $editIcon = ''; } $theOutput .= $this->pObj->doc->section($LANG->getLL('tsconf_title'), t3lib_BEfunc::cshItem('_MOD_' . $GLOBALS['MCONF']['name'], 'tsconfig_edit', $GLOBALS['BACK_PATH'], '|<br />') . $menu . ' <br /><br /> <!-- Edit fields: --> <table border="0" cellpadding="0" cellspacing="1">' . implode('', $lines) . '</table><br />' . $editIcon, 0, 1); } else { $tmpl = t3lib_div::makeInstance('t3lib_tsparser_ext'); // Defined global here! $tmpl->tt_track = 0; // Do not log time-performance information $tmpl->fixedLgd = 0; $tmpl->linkObjects = 0; $tmpl->bType = ''; $tmpl->ext_expandAllNotes = 1; $tmpl->ext_noPMicons = 1; switch ($this->pObj->MOD_SETTINGS['tsconf_parts']) { case '1': $modTSconfig = t3lib_BEfunc::getModTSconfig($this->pObj->id, 'mod'); break; case '1a': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('mod.web_layout', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; case '1b': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('mod.web_view', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; case '1c': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('mod.web_modules', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; case '1d': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('mod.web_list', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; case '1e': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('mod.web_info', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; case '1f': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('mod.web_func', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; case '1g': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('mod.web_ts', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; case '2': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('RTE', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; case '5': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('TCEFORM', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; case '6': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('TCEMAIN', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; case '3': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('TSFE', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; case '4': $modTSconfig = $GLOBALS['BE_USER']->getTSConfig('user', t3lib_BEfunc::getPagesTSconfig($this->pObj->id)); break; default: $modTSconfig['properties'] = t3lib_BEfunc::getPagesTSconfig($this->pObj->id); break; } $modTSconfig = $modTSconfig['properties']; if (!is_array($modTSconfig)) { $modTSconfig = array(); } $theOutput .= $this->pObj->doc->section($LANG->getLL('tsconf_title'), t3lib_BEfunc::cshItem('_MOD_' . $GLOBALS['MCONF']['name'], 'tsconfig_hierarchy', $GLOBALS['BACK_PATH'], '|<br />') . $menu . ' <!-- Page TSconfig Tree: --> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td nowrap="nowrap">' . $tmpl->ext_getObjTree($modTSconfig, '', '', '', '', $this->pObj->MOD_SETTINGS['tsconf_alphaSort']) . '</td> </tr> </table>', 0, 1); } // Return output: return $theOutput; }
public function editPost() { t3lib_BEfunc::editOnClick(6, 6, 6); }