2 /***************************************************************
5 * (c) 1999-2008 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 * Provides a simplified layer for making Constant Editor style configuration forms
32 * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
35 * [CLASS/FUNCTION INDEX of SCRIPT]
39 * 79: class t3lib_tsStyleConfig extends t3lib_tsparser_ext
40 * 98: function ext_initTSstyleConfig($configTemplate,$pathRel,$pathAbs,$backPath)
41 * 118: function ext_setValueArray($theConstants,$valueArray)
42 * 145: function ext_getCategoriesForModMenu()
43 * 155: function ext_makeHelpInformationForCategory($cat)
44 * 168: function ext_getForm($cat,$theConstants,$script="",$addFields="")
45 * 175: function uFormUrl(aname)
46 * 197: function ext_displayExample()
47 * 213: function ext_mergeIncomingWithExisting($arr)
48 * 221: function ext_getKeyImage($key)
49 * 231: function ext_getTSCE_config_image($imgConf)
50 * 244: function ext_fNandV($params)
51 * 262: function ext_loadResources($absPath)
52 * 278: function ext_putValueInConf($key, $var)
53 * 288: function ext_removeValueInConf($key)
56 * (This index is automatically created/updated by the extension "extdeveval")
60 require_once(PATH_t3lib
.'class.t3lib_tsparser_ext.php');
73 * Provides a simplified layer for making Constant Editor style configuration forms
75 * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
79 class t3lib_tsStyleConfig
extends t3lib_tsparser_ext
{
81 var $categories = array();
82 var $ext_dontCheckIssetValues=1;
83 var $ext_CEformName="tsStyleConfigForm";
84 var $ext_noCEUploadAndCopying=1;
86 var $ext_defaultOnlineResourceFlag=1;
88 var $ext_incomingValues = array();
92 * @param string pathRel is the path relative to the typo3/ directory
93 * @param string pathAbs is the absolute path from root
94 * @param string backPath is the backReference from current position to typo3/ dir
95 * @param [type] $backPath: ...
98 function ext_initTSstyleConfig($configTemplate,$pathRel,$pathAbs,$backPath) {
99 $this->tt_track
= 0; // Do not log time-performance information
100 $this->constants
=array($configTemplate,"");
102 $theConstants = $this->generateConfig_constants(); // The editable constants are returned in an array.
104 $this->ext_localGfxPrefix
=$pathAbs;
105 $this->ext_localWebGfxPrefix
=$backPath.$pathRel;
106 $this->ext_backPath
= $backPath;
108 return $theConstants;
112 * [Describe function...]
114 * @param [type] $theConstants: ...
115 * @param [type] $valueArray: ...
118 function ext_setValueArray($theConstants,$valueArray) {
120 $temp = $this->flatSetup
;
121 $this->flatSetup
= Array();
122 $this->flattenSetup($valueArray,"","");
123 $this->objReg
= $this->ext_realValues
= $this->flatSetup
;
124 $this->flatSetup
= $temp;
127 reset($theConstants);
128 while(list($k,$p)=each($theConstants)) {
129 if (isset($this->objReg
[$k])) {
130 $theConstants[$k]["value"] = $this->ext_realValues
[$k];
134 $this->categories
=array(); // Reset the default pool of categories.
135 $this->ext_categorizeEditableConstants($theConstants); // The returned constants are sorted in categories, that goes into the $this->categories array
137 return $theConstants;
141 * [Describe function...]
145 function ext_getCategoriesForModMenu() {
146 return $this->ext_getCategoryLabelArray();
150 * [Describe function...]
152 * @param [type] $cat: ...
155 function ext_makeHelpInformationForCategory($cat) {
156 return $this->ext_getTSCE_config($cat);
160 * [Describe function...]
162 * @param [type] $cat: ...
163 * @param [type] $theConstants: ...
164 * @param [type] $script: ...
165 * @param [type] $addFields: ...
168 function ext_getForm($cat,$theConstants,$script="",$addFields="") {
169 $this->ext_makeHelpInformationForCategory($cat);
170 $printFields = trim($this->ext_printFields($theConstants,$cat));
174 <script language="javascript" type="text/javascript">
175 function uFormUrl(aname) {
176 document.'.$this->ext_CEformName
.'.action = "'.t3lib_div
::linkThisScript().'#"+aname;
180 $content.= '<form action="'.($script?
$script:t3lib_div
::linkThisScript()).'" name="'.$this->ext_CEformName
.'" method="POST" enctype="'.$GLOBALS["TYPO3_CONF_VARS"]["SYS"]["form_enctype"].'">';
181 $content.= $addFields;
182 # $content.= '<input type="Submit" name="submit" value="Update"><BR>';
183 $content.= $printFields;
184 $content.= '<input type="Submit" name="submit" value="Update">';
186 $example = $this->ext_displayExample();
187 $content.= $example?
'<HR>'.$example:"";
193 * [Describe function...]
197 function ext_displayExample() {
199 if ($this->helpConfig
["imagetag"] ||
$this->helpConfig
["description"] ||
$this->helpConfig
["header"]) {
200 $out = '<div align="center">'.$this->helpConfig
["imagetag"].'</div><BR>'.
201 ($this->helpConfig
["description"] ?
implode(explode("//",$this->helpConfig
["description"]),"<BR>")."<BR>" : "").
202 ($this->helpConfig
["bulletlist"] ?
"<ul><li>".implode(explode("//",$this->helpConfig
["bulletlist"]),"<li>")."</ul>" : "<BR>");
208 * [Describe function...]
210 * @param [type] $arr: ...
213 function ext_mergeIncomingWithExisting($arr) {
214 $parseObj = t3lib_div
::makeInstance("t3lib_TSparser");
215 $parseObj->parse(implode(chr(10),$this->ext_incomingValues
));
216 $arr2 = $parseObj->setup
;
217 return t3lib_div
::array_merge_recursive_overrule($arr,$arr2);
221 function ext_getKeyImage($key) {
222 return '<img'.t3lib_iconWorks
::skinImg($this->ext_backPath
,'gfx/rednumbers/'.$key.'.gif','').' hspace="2" align="top" alt="" />';
226 * [Describe function...]
228 * @param [type] $imgConf: ...
231 function ext_getTSCE_config_image($imgConf) {
232 $iFile=$this->ext_localGfxPrefix
.$imgConf;
233 $tFile=$this->ext_localWebGfxPrefix
.$imgConf;
234 $imageInfo=@getImagesize
($iFile);
235 return '<img src="'.$tFile.'" '.$imageInfo[3].'>';
239 * [Describe function...]
241 * @param [type] $params: ...
244 function ext_fNandV($params) {
245 $fN='data['.$params["name"].']';
246 $fV=$params["value"]=isset($this->ext_realValues
[$params["name"]]) ?
$this->ext_realValues
[$params["name"]] : $params["default_value"];
248 if (preg_match('/^\{[\$][a-zA-Z0-9\.]*\}$/',trim($fV),$reg)) { // Values entered from the constantsedit cannot be constants!
251 $fV=htmlspecialchars($fV);
252 #debug(array($params,$fN,$fV,isset($this->ext_realValues[$params["name"]])));
253 return array($fN,$fV,$params);
257 * [Describe function...]
259 * @param [type] $absPath: ...
262 function ext_loadResources($absPath) {
263 $this->ext_readDirResources($GLOBALS["TYPO3_CONF_VARS"]["MODS"]["web_ts"]["onlineResourceDir"]);
264 if (is_dir($absPath)) {
265 $absPath = ereg_replace("\/$","",$absPath);
266 $this->readDirectory($absPath);
268 $this->ext_resourceDims();
272 * [Describe function...]
274 * @param [type] $key: ...
275 * @param [type] $var: ...
278 function ext_putValueInConf($key, $var) {
279 $this->ext_incomingValues
[$key]=$key."=".$var;
283 * [Describe function...]
285 * @param [type] $key: ...
288 function ext_removeValueInConf($key) {
294 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE
]['XCLASS']['t3lib/class.t3lib_tsstyleconfig.php']) {
295 include_once($TYPO3_CONF_VARS[TYPO3_MODE
]['XCLASS']['t3lib/class.t3lib_tsstyleconfig.php']);