2 /***************************************************************
5 * (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
8 * This script is part of the TYPO3 project. The TYPO3 project is
9 * free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * The GNU General Public License can be found at
15 * http://www.gnu.org/copyleft/gpl.html.
16 * A copy is found in the textfile GPL.txt and important notices to the license
17 * from the author is found in LICENSE.txt distributed with these scripts.
20 * This script is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
25 * This copyright notice MUST APPEAR in all copies of the script!
26 ***************************************************************/
28 * Displays the secondary-options palette for the TCEFORMs wherever they are shown.
31 * Revised for TYPO3 3.6 November/2003 by Kasper Skaarhoj
34 * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
37 * [CLASS/FUNCTION INDEX of SCRIPT]
41 * 81: class formRender extends t3lib_TCEforms
42 * 91: function printPalette($palArr)
45 * 154: class formRender_vert extends t3lib_TCEforms
46 * 163: function printPalette($palArr)
49 * 223: class SC_alt_palette
50 * 247: function init()
51 * 301: function main()
52 * 341: function printContent()
55 * (This index is automatically created/updated by the extension "extdeveval")
62 require('template.php');
63 require_once(PATH_t3lib
.'class.t3lib_tceforms.php');
64 require_once(PATH_t3lib
.'class.t3lib_transferdata.php');
65 require_once(PATH_t3lib
.'class.t3lib_loaddbgroup.php');
66 $LANG->includeLLFile('EXT:lang/locallang_alt_doc.xml');
74 * Class for rendering the form fields.
75 * Extending the TCEforms class
77 * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
81 class formRender
extends t3lib_TCEforms
{
84 * Creates the HTML content for the palette
85 * (Horizontally, for display in the top frame)
86 * (Used if GET var "backRef" IS set)
88 * @param array Array of information from which the fields are built.
89 * @return string HTML output
91 function printPalette($palArr) {
94 // For each element on the palette, write a few table cells with the field name, content and control images:
95 foreach($palArr as $content) {
98 '<img name="req_'.$content['TABLE'].'_'.$content['ID'].'_'.$content['FIELD'].'" class="c-reqIcon" src="clear.gif" width="10" height="10" alt="" />'.
99 '<img name="cm_'.$content['TABLE'].'_'.$content['ID'].'_'.$content['FIELD'].'" class="c-cmIcon" src="clear.gif" width="7" height="10" alt="" />'.
101 <td class="c-label">'.
102 $content['NAME'].' '.
105 $content['ITEM'].$content['HELP_ICON'].
109 // Finally, wrap it all in a table:
115 TCEforms palette, rendered in top frame.
117 <table border="0" cellpadding="0" cellspacing="0" id="typo3-TCEforms-palette">
119 <td class="c-close">'.
120 '<a href="#" onclick="closePal();return false;"><img'.t3lib_iconWorks
::skinImg('','gfx/close_12h.gif','width="11" height="12"').' title="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.close',1).'" alt="" /></a>'.
128 // Return the result:
147 * Child class for alternative rendering of form fields (when the secondary fields are shown in a little window rather than the top bar).
148 * (Used if GET var "backRef" is not set, presuming a window is opened instead.)
150 * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
154 class formRender_vert
extends t3lib_TCEforms
{
157 * Creates the HTML content for the palette.
158 * (Vertically, for display in a browser window, not top frame)
160 * @param array Array of information from which the fields are built.
161 * @return string HTML output
163 function printPalette($palArr) {
165 $bgColor=' bgcolor="'.$this->colorScheme
[2].'"';
167 // For each element on the palette, write a few table cells with the field name, content and control images:
168 foreach($palArr as $content) {
171 <td><img src="clear.gif" width="'.intval($this->paletteMargin
).'" height="1" alt="" /></td>
172 <td'.$bgColor.'> </td>
173 <td nowrap="nowrap"'.$bgColor.'><font color="'.$this->colorScheme
[4].'">'.$content['NAME'].'</font></td>
178 <td valign="top"><img name="req_'.$content['TABLE'].'_'.$content['ID'].'_'.$content['FIELD'].'" src="clear.gif" width="10" height="10" vspace="4" alt="" /><img name="cm_'.$content['TABLE'].'_'.$content['ID'].'_'.$content['FIELD'].'" src="clear.gif" width="7" height="10" vspace="4" alt="" /></td>
179 <td nowrap="nowrap" valign="top">'.$content['ITEM'].$content['HELP_ICON'].'</td>
183 // Adding the close button:
188 <td nowrap="nowrap" valign="top">
190 <input type="submit" value="'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.close',1).'" onclick="closePal(); return false;" />
194 // Finally, wrap it all in a table:
196 <table border="0" cellpadding="0" cellspacing="0" id="typo3-TCEforms-palette-vert">
197 '.implode('',$iRow).'
216 * Script Class for rendering the palette form for TCEforms in some other frame (in top frame, horizontally)
217 * It can also be called in a pop-up window in which case a vertically oriented set of form fields are rendered instead.
219 * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
223 class SC_alt_palette
{
226 var $content; // Content accumulation
227 var $backRef; // String, which is the reference back to the window which opened this one.
228 var $formRef; // String, which is the reference to the form.
229 var $doc; // Template object.
231 // Internal, static: GPvar:
232 var $formName; // Form name
233 var $GPbackref; // The value of the original backRef GPvar (not necessarily the same as $this->backRef)
234 var $inData; // Contains tablename, uid and palette number
235 var $prependFormFieldNames; // Prefix for form fields.
236 var $rec; // The "record" with the data to display in the form fields.
243 * Constructor for the class
249 // Setting GPvars, etc.
250 $this->formName
= t3lib_div
::_GP('formName');
251 $this->GPbackref
= t3lib_div
::_GP('backRef');
252 $this->inData
= t3lib_div
::_GP('inData');
253 $this->prependFormFieldNames
= t3lib_div
::_GP('prependFormFieldNames');
254 $this->rec
= t3lib_div
::_GP('rec');
256 // Making references:
257 $this->backRef
= $this->GPbackref ?
$this->GPbackref
: 'window.opener';
258 # $this->backRef = 'top.content.list_frame.view_frame';
260 $this->formRef
= $this->backRef
.'.document.'.$this->formName
;
262 // Start template object:
263 $this->doc
= t3lib_div
::makeInstance('template');
264 $this->doc
->bodyTagMargins
['x']=0;
265 $this->doc
->bodyTagMargins
['y']=0;
266 $this->doc
->form
='<form action="#" method="post" name="'.htmlspecialchars($this->formName
).'" onsubmit="return false;">';
267 $this->doc
->docType
= 'xhtml_trans';
268 $this->doc
->backPath
= '';
270 // In case the palette is opened in a SEPARATE window (as the case is with frontend editing) then another body-tag id should be used (so we don't get the background image for the palette shown!)
271 if (!$this->GPbackref
) $this->doc
->bodyTagId
.= '-vert';
273 // Setting JavaScript functions for the header:
274 $this->doc
->JScode
= $this->doc
->wrapScriptTags('
275 var serialNumber = "";
276 function timeout_func() { //
277 if ('.$this->backRef
.' && '.$this->backRef
.'.document && '.$this->formRef
.') {
278 if ('.$this->formRef
.'["_serialNumber"]) {
280 if ('.$this->formRef
.'["_serialNumber"].value != serialNumber) {closePal(); return false;}
282 serialNumber = '.$this->formRef
.'["_serialNumber"].value;
285 window.setTimeout("timeout_func();",1*1000);
288 function closePal() { //
289 '.($this->GPbackref?
'window.location.href="alt_topmenu_dummy.php";':'close();').'
297 * Main function, rendering the palette form
304 $this->content
.=$this->doc
->startPage('TYPO3 Edit Palette');
306 $inData = explode(':',$this->inData
);
309 if (is_array($inData) && count($inData)==3) {
311 // Create the TCEforms object:
312 $tceforms = $this->GPbackref ?
new formRender() : new formRender_vert();
313 $tceforms->initDefaultBEMode();
314 $tceforms->palFieldTemplate
='###FIELD_PALETTE###';
315 $tceforms->palettesCollapsed
=0;
316 $tceforms->isPalettedoc
=$this->backRef
;
318 $tceforms->formName
= $this->formName
;
319 $tceforms->prependFormFieldNames
= $this->prependFormFieldNames
;
321 // Initialize other data:
324 $thePalNum = $inData[2];
325 $this->rec
['uid']=$theUid;
327 // Getting the palette fields rendered:
328 $panel.=$tceforms->getPaletteFields($table,$this->rec
,$thePalNum,'',implode(',',array_keys($this->rec
)));
331 // Add all the content, including JavaScript as needed.
332 $this->content
.=$tceforms->printNeededJSFunctions_top().$formContent.$tceforms->printNeededJSFunctions();
337 * Outputting the accumulated content to screen
341 function printContent() {
342 $this->content
.= $this->doc
->endPage();
343 $this->content
= $this->doc
->insertStylesAndJS($this->content
);
348 // Include extension?
349 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE
]['XCLASS']['typo3/alt_palette.php']) {
350 include_once($TYPO3_CONF_VARS[TYPO3_MODE
]['XCLASS']['typo3/alt_palette.php']);
365 $SOBE = t3lib_div
::makeInstance('SC_alt_palette');
368 $SOBE->printContent();