/***************************************************************
* Copyright notice
*
-* (c) 1999-2008 Kasper Skaarhoj (kasperYYYY@typo3.com)
+* (c) 1999-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
-/**
- * @author Kasper Skårhøj <kasperYYYY@typo3.com>
- */
/**
* [CLASS/FUNCTION INDEX of SCRIPT]
*
*
*/
-require_once(PATH_t3lib."class.t3lib_extobjbase.php");
+$GLOBALS['LANG']->includeLLFile('EXT:tstemplate_info/locallang.xml');
+/**
+ * This class displays the Info/Modify screen of the Web > Template module
+ *
+ * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
+ *
+ * $Id$
+ */
class tx_tstemplateinfo extends t3lib_extobjbase {
- /* <beta-code TYPO3 4.2-dev> */
- protected $tce_processed = false; // indicator for t3editor, whether data is stored
- /* </beta-code> */
+ public $tce_processed = false; // indicator for t3editor, whether data is stored
/**
* Creates a row for a HTML table
*/
function tableRow($label, $data, $field) {
$ret = '<tr><td class="bgColor4" width="1%">';
- $ret.= '<a href="index.php?id='.$this->pObj->id.'&e['.$field.']=1"><img '.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/edit2.gif').' width=11 height=12 hspace=3 border=0 title="Edit field"></a>';
+ $ret.= '<a href="index.php?id='.$this->pObj->id.'&e['.$field.']=1"><img '.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/edit2.gif').' width=11 height=12 hspace=3 border=0 title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:editField', true) . '"></a>';
$ret.= '</td><td class="bgColor4" width="1%"><b>'.$label.' </b></td><td class="bgColor4" width="99%">'.$data.' </td></tr>';
return $ret;
}
$path = PATH_site.$GLOBALS['TCA']['sys_template']['columns']['resources']['config']['uploadfolder'].'/'.$v;
$functions = '';
if ($func) {
- $functions = '<td bgcolor=red nowrap>Delete: <input type="Checkbox" name="data[remove_resource]['.$k.']" value="'.htmlspecialchars($v).'"></td>';
- $functions.= '<td'.$bgcol.' nowrap>To top: <input type="Checkbox" name="data[totop_resource]['.$k.']" value="'.htmlspecialchars($v).'"></td>';
+ $functions = '<td bgcolor=red nowrap>' . $GLOBALS['LANG']->getLL('delete') . ' <input type="Checkbox" name="data[remove_resource]['.$k.']" value="'.htmlspecialchars($v).'"></td>';
+ $functions.= '<td'.$bgcol.' nowrap>' . $GLOBALS['LANG']->getLL('toTop') . ' <input type="Checkbox" name="data[totop_resource]['.$k.']" value="'.htmlspecialchars($v).'"></td>';
$functions.= '<td'.$bgcol.' nowrap>';
$fI = t3lib_div::split_fileref($v);
if (t3lib_div::inList($this->pObj->textExtensions,$fI['fileext'])) {
- $functions.= '<a href="index.php?id='.$this->pObj->id.'&e[file]='.rawurlencode($v).'"><img '.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/edit2.gif').' width=11 height=12 hspace=3 border=0 title="Edit file"></a>';
+ $functions.= '<a href="index.php?id='.$this->pObj->id.'&e[file]='.rawurlencode($v).'"><img '.t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/edit2.gif').' width=11 height=12 hspace=3 border=0 title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:editFile', true) . '"></a>';
}
$functions.= '</td>';
}
t3lib_div::loadTCA('sys_template');
- // **************************
- // Create extension template
- // **************************
- $this->pObj->createTemplate($this->pObj->id);
+
// **************************
// 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
+ header('location: index.php?id=' . $this->pObj->id. '&SET[templatesOnPage]=' . $newId);
+ }
+ if ($existTemplate) {
// Update template ?
$POST = t3lib_div::_POST();
- if ($POST['submit']) {
- require_once(PATH_t3lib.'class.t3lib_tcemain.php');
+ 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();
// Clear the cache (note: currently only admin-users can clear the cache in tce_main.php)
$tce->clear_cacheCmd('all');
- /* <beta-code TYPO3 4.2-dev> */
+ // tce were processed successfully
$this->tce_processed = true;
- /* </beta-code> */
// re-read the template ...
$this->initialize_editor($this->pObj->id, $template_uid);
t3lib_div::writeFile($path, $edit['file']);
$theOutput.= $this->pObj->doc->spacer(10);
- $theOutput.= $this->pObj->doc->section('<font color=red>FILE CHANGED</font>', "Resource '".$edit['filename']."' has been updated.", 0, 0, 0, 1);
+ $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!
}
}
- /* <beta-code TYPO3 4.2-dev> */
- // if TSEditor is enabled and this POST request is an Ajax-Request
- if(is_object($GLOBALS['T3_VAR']['t3editorObj'])
- && $GLOBALS['T3_VAR']['t3editorObj']->isEnabled
- && t3lib_div::_POST('submitAjax')) {
-
- $GLOBALS['T3_VAR']['t3editorObj']->setBEUCdisableT3Editor(false);
-
- // abort request here and return message
- // @TODO: Json or other response here!?
- if ($this->tce_processed) {
- echo "OK";
- } else {
- echo "ERROR";
+ // 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);
+ }
}
- exit();
}
- /* </beta-code> */
-
$theOutput.= $this->pObj->doc->spacer(5);
- $theOutput.= $this->pObj->doc->section('Template information:', '<img src="'.$BACK_PATH.t3lib_iconWorks::getIcon('sys_template',$tplRow).'" width=18 height=16 align=top><b>'.htmlspecialchars($tplRow['title']).'</b>'.htmlspecialchars(trim($tplRow['sitetitle'])?' - ('.$tplRow['sitetitle'].')':''), 0, 1);
+ $theOutput.= $this->pObj->doc->section($GLOBALS['LANG']->getLL('templateInformation'), '<img '.t3lib_iconWorks::skinImg($BACK_PATH, t3lib_iconWorks::getIcon('sys_template', $tplRow)).' align="top" /> <b>'.htmlspecialchars($tplRow['title']).'</b>'.htmlspecialchars(trim($tplRow['sitetitle'])?' - ('.$tplRow['sitetitle'].')':''), 0, 1);
if ($manyTemplatesMenu) {
$theOutput.= $this->pObj->doc->section('', $manyTemplatesMenu);
$theOutput.= $this->pObj->doc->divider(5);
$numberOfRows = 35;
// If abort pressed, nothing should be edited:
- if (t3lib_div::_POST('abort')) {
+ 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);
}
$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('Title:', $outCode);
+ $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('Sitetitle:', $outCode);
+ $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('Description:', $outCode);
+ $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>Allowed extensions: <b>'.$TCA['sys_template']['columns']['resources']['config']['allowed'].'</b>';
- $outCode.= '<BR>Max file size: <b>'.t3lib_div::formatSize($TCA['sys_template']['columns']['resources']['config']['max_size']*1024).'</b>';
+ $outCode.= '<BR>' . $GLOBALS['LANG']->getLL('allowedExtensions') . ' <b>' . $TCA['sys_template']['columns']['resources']['config']['allowed'] . '</b>';
+ $outCode.= '<BR>' . $GLOBALS['LANG']->getLL('maxFilesize') . ' <b>' . t3lib_div::formatSize($TCA['sys_template']['columns']['resources']['config']['max_size']*1024) . '</b>';
$theOutput.= $this->pObj->doc->spacer(15);
- $theOutput.= $this->pObj->doc->section('Upload resource:', $outCode);
+ $theOutput.= $this->pObj->doc->section($GLOBALS['LANG']->getLL('uploadResource'), $outCode);
// New
$opt = explode(',', $this->pObj->textExtensions);
<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('New text resource (enter name):', $outCode);
+ $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('Make a copy of resource:', $rL);
+ $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('Update resource list:', $rL);
+ $theOutput.= $this->pObj->doc->section($GLOBALS['LANG']->getLL('updateResourceList'), $rL);
}
}
if ($e['constants']) {
- /* <beta-code TYPO3 4.2-dev> */
-
- if(is_object($GLOBALS['T3_VAR']['t3editorObj'])
- && $GLOBALS['T3_VAR']['t3editorObj']->isEnabled) {
- $outCode = $GLOBALS['T3_VAR']['t3editorObj']->getCodeEditor(
- 'data[constants]', // name
- 'fixed-font enable-tab', // class
- t3lib_div::formatForTextarea($tplRow['constants']), // content
- 'rows="'.$numberOfRows.'" wrap="off" '.$this->pObj->doc->formWidthText(48, 'width:98%;height:60%', 'off'),
- 'Template: '.htmlspecialchars($tplRow['title']).': Constants'
- );
- } else {
- $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>';
- }
-
- /* </beta-code> */
- /*
- <original-code>
$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>';
- </original-code>
- */
$outCode.= '<input type="Hidden" name="e[constants]" value="1">';
$theOutput.= $this->pObj->doc->spacer(15);
- $theOutput.= $this->pObj->doc->section('Constants:', '');
+ $theOutput.= $this->pObj->doc->section($GLOBALS['LANG']->getLL('constants'), '');
$theOutput.= $this->pObj->doc->sectionEnd().$outCode;
}
if ($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 = 'File: <b>'.$e[file].'</b><BR>';
+ $outCode = $GLOBALS['LANG']->getLL('file'). ' <b>' . $e[file] . '</b><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('Edit Resource:', '');
+ $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>Filesize exceeded '.$TCA['sys_template']['columns']['resources']['config']['max_size'].' Kbytes</font>',
- 'Files larger than '.$TCA['sys_template']['columns']['resources']['config']['max_size'].' KByes are not allowed to be edited.',
+ '<font color=red>' . $fileToBig . '</font>',
+ $filesizeNotAllowed,
0, 0, 0, 1
);
}
}
}
if ($e['config']) {
-
- /* <beta-code TYPO3 4.2-dev> */
-
- if(is_object($GLOBALS['T3_VAR']['t3editorObj'])
- && $GLOBALS['T3_VAR']['t3editorObj']->isEnabled) {
- $outCode = $GLOBALS['T3_VAR']['t3editorObj']->getCodeEditor(
- 'data[config]', // name
- 'fixed-font enable-tab', // class
- t3lib_div::formatForTextarea($tplRow['config']), // content
- 'rows="'.$numberOfRows.'" wrap="off" '.$this->pObj->doc->formWidthText(48, 'width:98%;height:60%', 'off'),
- 'Template: '.htmlspecialchars($tplRow['title']).': Setup'
- );
- } else {
- $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>';
- }
-
- /* </beta-code> */
-
- /*
- <original-code>
$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>';
- </original-code>
- */
if (t3lib_extMgm::isLoaded('tsconfig_help')) {
$url = $BACK_PATH.'wizard_tsconfig.php?mode=tsref';
'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;"><img '.t3lib_iconWorks::skinImg($BACK_PATH, 'gfx/wizard_tsconfig.gif').' width="22" height="27" border="0" title="TSref reference"></a>';
+ $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;"><img '.t3lib_iconWorks::skinImg($BACK_PATH, 'gfx/wizard_tsconfig.gif').' width="22" height="27" border="0" 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('Setup:', '');
+ $theOutput.= $this->pObj->doc->section($GLOBALS['LANG']->getLL('setup'), '');
$theOutput.= $this->pObj->doc->sectionEnd().$outCode;
}
// Processing:
$outCode = '';
- $outCode.= $this->tableRow('Title:', htmlspecialchars($tplRow['title']), 'title');
- $outCode.= $this->tableRow('Sitetitle:', htmlspecialchars($tplRow['sitetitle']), 'sitetitle');
- $outCode.= $this->tableRow('Description:', nl2br(htmlspecialchars($tplRow['description'])), 'description');
- $outCode.= $this->tableRow('Resources:', $this->procesResources($tplRow['resources']), 'resources');
- $outCode.= $this->tableRow('Constants:', '(edit to view, '.(trim($tplRow[constants]) ? count(explode(chr(10), $tplRow[constants])) : 0).' lines)', 'constants');
- $outCode.= $this->tableRow('Setup:', '(edit to view, '.(trim($tplRow[config]) ? count(explode(chr(10), $tplRow[config])) : 0).' lines)', 'config');
+ $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(chr(10), $tplRow[constants])) : 0)),
+ 'constants'
+ );
+ $outCode.= $this->tableRow(
+ $GLOBALS['LANG']->getLL('setup'),
+ sprintf($GLOBALS['LANG']->getLL('editToView'), (trim($tplRow[config]) ? count(explode(chr(10), $tplRow[config])) : 0)),
+ 'config'
+ );
$outCode = '<table border=0 cellpadding=1 cellspacing=1 width="100%">'.$outCode.'</table>';
$outCode = '<table border=0 cellpadding=0 cellspacing=0>
</table>';
// Edit all icon:
- $outCode.= '<BR><a href="#" onClick="'.t3lib_BEfunc::editOnClick(rawurlencode('&createExtension=0').'&edit[sys_template]['.$tplRow['uid'].']=edit', $BACK_PATH, '').'"><strong>Click here to edit whole template record</strong></a>';
+ $outCode.= '<BR><a href="#" onClick="' . t3lib_BEfunc::editOnClick(rawurlencode('&createExtension=0') . '&edit[sys_template][' . $tplRow['uid'] . ']=edit', $BACK_PATH, '') . '"><strong>' . $GLOBALS['LANG']->getLL('editTemplateRecord') . '</strong></a>';
$theOutput.= $this->pObj->doc->spacer(25);
$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;
}
}