Documentation TYPO3 par Ameos |
00001 <?php 00002 /*************************************************************** 00003 * Copyright notice 00004 * 00005 * (c) 2001-2005 Kasper Skaarhoj (kasperYYYY@typo3.com) 00006 * All rights reserved 00007 * 00008 * This script is part of the TYPO3 project. The TYPO3 project is 00009 * free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * The GNU General Public License can be found at 00015 * http://www.gnu.org/copyleft/gpl.html. 00016 * A copy is found in the textfile GPL.txt and important notices to the license 00017 * from the author is found in LICENSE.txt distributed with these scripts. 00018 * 00019 * 00020 * This script is distributed in the hope that it will be useful, 00021 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 * GNU General Public License for more details. 00024 * 00025 * This copyright notice MUST APPEAR in all copies of the script! 00026 ***************************************************************/ 00031 require_once(t3lib_extMgm::extPath('kickstarter').'class.tx_kickstarter_sectionbase.php'); 00032 00033 class tx_kickstarter_section_fields extends tx_kickstarter_sectionbase { 00034 var $sectionID = 'fields'; 00035 00039 function render_wizard() { 00040 $lines=array(); 00041 00042 $action = explode(':',$this->wizard->modData['wizAction']); 00043 if ($action[0]=='edit') { 00044 $this->regNewEntry($this->sectionID,$action[1]); 00045 $lines = $this->catHeaderLines($lines,$this->sectionID,$this->wizard->options[$this->sectionID],' ',$action[1]); 00046 $piConf = $this->wizard->wizArray[$this->sectionID][$action[1]]; 00047 $ffPrefix='['.$this->sectionID.']['.$action[1].']'; 00048 00049 } 00050 00051 00052 // Header field 00053 $optValues = array( 00054 'tt_content' => 'Content (tt_content)', 00055 'fe_users' => 'Frontend Users (fe_users)', 00056 'fe_groups' => 'Frontend Groups (fe_groups)', 00057 'be_users' => 'Backend Users (be_users)', 00058 'be_groups' => 'Backend Groups (be_groups)', 00059 'tt_news' => 'News (tt_news)', 00060 'tt_address' => 'Address (tt_address)', 00061 'pages' => 'Pages (pages)', 00062 ); 00063 00064 foreach($GLOBALS['TCA'] as $tablename => $tableTCA) { 00065 if(!$optValues[$tablename]) { 00066 $optValues[$tablename] = $GLOBALS['LANG']->sL($tableTCA['ctrl']['title']).' ('.$tablename.')'; 00067 } 00068 } 00069 00070 $subContent = '<strong>Which table:<BR></strong>'. 00071 $this->renderSelectBox($ffPrefix.'[which_table]',$piConf['which_table'],$optValues). 00072 $this->whatIsThis('Select the table which should be extended with these extra fields.'); 00073 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent). 00074 '<input type="hidden" name="' . $this->piFieldName('wizArray_upd') . $ffPrefix . '[title]" value="' . ($piConf['which_table']?$optValues[$piConf['which_table']]:'') . '"></td></tr>'; 00075 00076 00077 00078 00079 00080 // PRESETS: 00081 $selPresetBox=$this->presetBox($piConf['fields']); 00082 00083 // FIelds 00084 $c=array(0); 00085 $this->usedNames=array(); 00086 if (is_array($piConf['fields'])) { 00087 $piConf['fields'] = $this->cleanFieldsAndDoCommands($piConf['fields'],$this->sectionID,$action[1]); 00088 00089 // Do it for real... 00090 reset($piConf['fields']); 00091 while(list($k,$v)=each($piConf['fields'])) { 00092 $c[]=$k; 00093 $subContent=$this->renderField($ffPrefix.'[fields]['.$k.']',$v); 00094 $lines[]='<tr'.$this->bgCol(2).'><td>'.$this->fw('<strong>FIELD:</strong> <em>'.$v['fieldname'].'</em>').'</td></tr>'; 00095 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>'; 00096 } 00097 } 00098 00099 00100 // New field: 00101 $k=max($c)+1; 00102 $v=array(); 00103 $lines[]='<tr'.$this->bgCol(2).'><td>'.$this->fw('<strong>NEW FIELD:</strong>').'</td></tr>'; 00104 $subContent=$this->renderField($ffPrefix.'[fields]['.$k.']',$v,1); 00105 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>'; 00106 00107 00108 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw('<BR><BR>Load preset fields: <BR>'.$selPresetBox).'</td></tr>'; 00109 00110 /* HOOK: Place a hook here, so additional output can be integrated */ 00111 if(is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['kickstarter']['add_cat_fields'])) { 00112 foreach($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['kickstarter']['add_cat_fields'] as $_funcRef) { 00113 $lines = t3lib_div::callUserFunction($_funcRef, $lines, $this); 00114 } 00115 } 00116 00117 $content = '<table border=0 cellpadding=2 cellspacing=2>'.implode('',$lines).'</table>'; 00118 return $content; 00119 } 00120 00121 00122 00123 00124 function presetBox(&$piConfFields) { 00125 $_PRESETS = $this->wizard->modData['_PRESET']; 00126 00127 $optValues = array(); 00128 00129 /* Static Presets from DB-Table are disabled. Just leave the code in here for possible future use */ 00130 // $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'kickstarter_static_presets', ''); 00131 // while($presetRow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { 00132 // $optValues[] = '<option value="'.htmlspecialchars($presetRow["fieldname"]).'">'.htmlspecialchars($presetRow["title"]." (".$presetRow["fieldname"].", type: ".$presetRow["type"].")").'</option>'; 00133 // if (is_array($_PRESETS) && in_array($presetRow["fieldname"],$_PRESETS)) { 00134 // if (!is_array($piConfFields)) $piConfFields=array(); 00135 // $piConfFields[] = unserialize($presetRow["appdata"]); 00136 // } 00137 // } 00138 00139 // Session presets: 00140 $ses_optValues=array(); 00141 $sesdat = $GLOBALS['BE_USER']->getSessionData('kickstarter'); 00142 if (is_array($sesdat['presets'])) { 00143 foreach($sesdat['presets'] as $kk1=>$vv1) { 00144 if (is_array($vv1)) { 00145 foreach($vv1 as $kk2=>$vv2) { 00146 $ses_optValues[]='<option value="'.htmlspecialchars($kk1.'.'.$vv2['fieldname']).'">'.htmlspecialchars($kk1.': '.$vv2['title'].' ('.$vv2['fieldname'].', type: '.$vv2['type'].')').'</option>'; 00147 if (is_array($_PRESETS) && in_array($kk1.'.'.$vv2['fieldname'],$_PRESETS)) { 00148 if (!is_array($piConfFields)) $piConfFields=array(); 00149 $piConfFields[] = $vv2; 00150 } 00151 } 00152 } 00153 } 00154 } 00155 if (count($ses_optValues)) { 00156 $optValues = array_merge($optValues,count($optValues)?array('<option value=""></option>'):array(),array('<option value="">__Fields picked up in this session__:</option>'),$ses_optValues); 00157 } 00158 if (count($optValues)) $selPresetBox = '<select name="'.$this->piFieldName('_PRESET').'[]" size='.t3lib_div::intInRange(count($optValues),1,10).' multiple>'.implode('',$optValues).'</select>'; 00159 return $selPresetBox; 00160 } 00161 function cleanFieldsAndDoCommands($fConf,$catID,$action) { 00162 $newFConf=array(); 00163 $downFlag=0; 00164 foreach($fConf as $k=>$v) { 00165 if ($v['type'] && trim($v['fieldname'])) { 00166 $v['fieldname'] = $this->cleanUpFieldName($v['fieldname']); 00167 00168 if (!$v['_DELETE']) { 00169 $newFConf[$k]=$v; 00170 if (t3lib_div::_GP($this->varPrefix.'_CMD_'.$v['fieldname'].'_UP_x') || $downFlag) { 00171 if (count($newFConf)>=2) { 00172 $lastKeys = array_slice(array_keys($newFConf),-2); 00173 00174 $buffer = Array(); 00175 $buffer[$lastKeys[1]] = $newFConf[$lastKeys[1]]; 00176 $buffer[$lastKeys[0]] = $newFConf[$lastKeys[0]]; 00177 00178 unset($newFConf[$lastKeys[0]]); 00179 unset($newFConf[$lastKeys[1]]); 00180 00181 $newFConf[$lastKeys[1]] = $buffer[$lastKeys[1]]; 00182 $newFConf[$lastKeys[0]] = $buffer[$lastKeys[0]]; 00183 } 00184 $downFlag=0; 00185 } elseif (t3lib_div::_GP($this->varPrefix.'_CMD_'.$v['fieldname'].'_DOWN_x')) { 00186 $downFlag=1; 00187 } 00188 } 00189 00190 // PRESET: 00191 // if (t3lib_div::_GP($this->varPrefix.'_CMD_'.$v["fieldname"].'_SAVE_x')) { 00192 // $datArr=Array( 00193 // "fieldname" => $v["fieldname"], 00194 // "title" => $v["title"], 00195 // "type" => $v["type"], 00196 // "appdata" => serialize($v), 00197 // "tstamp" => time() 00198 // ); 00199 00200 // $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('fieldname', 'kickstarter_static_presets', 'fieldname="'.$GLOBALS['TYPO3_DB']->quoteStr($v['fieldname'], 'kickstarter_static_presets').'"'); 00201 // if ($GLOBALS['TYPO3_DB']->sql_num_rows($res) || $v["_DELETE"]) { 00202 // if ($v["_DELETE"]) { 00203 // $GLOBALS['TYPO3_DB']->exec_DELETEquery('kickstarter_static_presets', 'fieldname="'.$GLOBALS['TYPO3_DB']->quoteStr($v['fieldname'], 'kickstarter_static_presets').'"'); 00204 // } else { 00205 // $GLOBALS['TYPO3_DB']->exec_UPDATEquery('kickstarter_static_presets', 'fieldname="'.$GLOBALS['TYPO3_DB']->quoteStr($v['fieldname'], 'kickstarter_static_presets').'"', $datArr); 00206 // } 00207 // } else { 00208 // $GLOBALS['TYPO3_DB']->exec_INSERTquery("kickstarter_static_presets", $datArr); 00209 // } 00210 // } 00211 } else { 00212 // unset($this->wizArray[$catID][$action]["fields"][$k]); 00213 // unset($fConf[$k]); 00214 } 00215 } 00216 // debug($newFConf); 00217 $this->wizard->wizArray[$catID][$action]['fields'] = $newFConf; 00218 $sesdat = $GLOBALS['BE_USER']->getSessionData('kickstarter'); 00219 $sesdat['presets'][$this->wizard->extKey.'-'.$catID.'-'.$action]=$newFConf; 00220 $GLOBALS['BE_USER']->setAndSaveSessionData('kickstarter',$sesdat); 00221 00222 #debug($newFConf); 00223 return $newFConf; 00224 } 00225 00226 00227 function addOtherExtensionTables($optValues) { 00228 if (is_array($this->wizard->wizArray['tables'])) { 00229 foreach($this->wizard->wizArray['tables'] as $k=>$info) { 00230 if (trim($info['tablename'])) { 00231 $tableName = $this->returnName($this->wizard->extKey,'tables',trim($info['tablename'])); 00232 $optValues[$tableName]='Extension table: '.$info['title'].' ('.$tableName.')'; 00233 } 00234 } 00235 } 00236 return $optValues; 00237 } 00238 function cleanUpFieldName($str) { 00239 $fieldName = ereg_replace('[^[:alnum:]_]','',strtolower($str)); 00240 if (!$fieldName || t3lib_div::inList($this->wizard->reservedTypo3Fields.','.$this->wizard->mysql_reservedFields,$fieldName) || in_array($fieldName,$this->usedNames)) { 00241 $fieldName.=($fieldName?'_':'').t3lib_div::shortmd5(microtime()); 00242 } 00243 $this->usedNames[]=$fieldName; 00244 return $fieldName; 00245 } 00246 00247 00248 function renderField($prefix,$fConf,$dontRemove=0) { 00249 $onCP = $this->getOnChangeParts($prefix.'[fieldname]'); 00250 $fieldName = $this->renderStringBox($prefix.'[fieldname]',$fConf['fieldname']). 00251 (!$dontRemove?' (Remove:'.$this->renderCheckBox($prefix.'[_DELETE]',0).')'. 00252 '<input type="image" hspace=2 src="'.$this->wizard->siteBackPath.TYPO3_mainDir.'gfx/pil2up.gif" name="'.$this->varPrefix.'_CMD_'.$fConf["fieldname"].'_UP" onClick="'.$onCP[1].'">'. 00253 '<input type="image" hspace=2 src="'.$this->wizard->siteBackPath.TYPO3_mainDir.'gfx/pil2down.gif" name="'.$this->varPrefix.'_CMD_'.$fConf["fieldname"].'_DOWN" onClick="'.$onCP[1].'">'. 00254 '<input type="image" hspace=2 src="'.$this->wizard->siteBackPath.TYPO3_mainDir.'gfx/savesnapshot.gif" name="'.$this->varPrefix.'_CMD_'.$fConf["fieldname"].'_SAVE" onClick="'.$onCP[1].'" title="Save this field setting as a preset.">':''); 00255 00256 $fieldTitle = ((string)$fConf['type'] != 'passthrough') ? $this->renderStringBox_lang('title',$prefix,$fConf) : ''; 00257 $typeCfg = ''; 00258 00259 // Sorting 00260 $optValues = array( 00261 '' => '', 00262 'input' => 'String input', 00263 'input+' => 'String input, advanced', 00264 'textarea' => 'Text area', 00265 'textarea_rte' => 'Text area with RTE', 00266 'textarea_nowrap' => 'Text area, No wrapping', 00267 'check' => 'Checkbox, single', 00268 'check_4' => 'Checkbox, 4 boxes in a row', 00269 'check_10' => 'Checkbox, 10 boxes in two rows (max)', 00270 'link' => 'Link', 00271 'date' => 'Date', 00272 'datetime' => 'Date and time', 00273 'integer' => 'Integer, 10-1000', 00274 'select' => 'Selectorbox', 00275 'radio' => 'Radio buttons', 00276 'rel' => 'Database relation', 00277 'files' => 'Files', 00278 'none' => 'Not editable, only displayed', 00279 'passthrough' => '[Passthrough]', 00280 ); 00281 $typeCfg.=$this->renderSelectBox($prefix.'[type]',$fConf['type'],$optValues); 00282 $typeCfg.=$this->renderCheckBox($prefix.'[excludeField]',isset($fConf['excludeField'])?$fConf['excludeField']:1).' Is Exclude-field '.$this->whatIsThis('If a field is marked "Exclude-field", users can edit it ONLY if the field is specifically listed in one of the backend user groups of the user.\nIn other words, if a field is marked "Exclude-field" you can control which users can edit it and which cannot.').'<BR>'; 00283 00284 $fDetails=''; 00285 switch((string)$fConf['type']) { 00286 case 'input+': 00287 $typeCfg.=$this->resImg('t_input.png','',''); 00288 00289 $fDetails.=$this->renderStringBox($prefix.'[conf_size]',$fConf['conf_size'],50).' Field width (5-48 relative, 30 default)<BR>'; 00290 $fDetails.=$this->renderStringBox($prefix.'[conf_max]',$fConf['conf_max'],50).' Max characters<BR>'; 00291 $fDetails.=$this->renderCheckBox($prefix.'[conf_required]',$fConf['conf_required']).'Required<BR>'; 00292 $fDetails.=$this->resImg('t_input_required.png','hspace=20','','<BR><BR>'); 00293 00294 $fDetails.=$this->renderCheckBox($prefix.'[conf_varchar]',$fConf['conf_varchar']).'Create VARCHAR, not TINYTEXT field (if not forced INT)<BR>'; 00295 00296 $fDetails.=$this->renderCheckBox($prefix.'[conf_check]',$fConf['conf_check']).'Apply checkbox<BR>'; 00297 $fDetails.=$this->resImg('t_input_check.png','hspace=20','','<BR><BR>'); 00298 00299 $optValues = array( 00300 '' => '', 00301 'date' => 'Date (day-month-year)', 00302 'time' => 'Time (hours, minutes)', 00303 'timesec' => 'Time + seconds', 00304 'datetime' => 'Date + Time', 00305 'year' => 'Year', 00306 'int' => 'Integer', 00307 'int+' => 'Integer 0-1000', 00308 'double2' => 'Floating point, x.xx', 00309 'alphanum' => 'Alphanumeric only', 00310 'upper' => 'Upper case', 00311 'lower' => 'Lower case', 00312 ); 00313 $fDetails.='<BR>Evaluate value to:<BR>'.$this->renderSelectBox($prefix.'[conf_eval]',$fConf['conf_eval'],$optValues).'<BR>'; 00314 $fDetails.=$this->renderCheckBox($prefix.'[conf_stripspace]',$fConf['conf_stripspace']).'Strip space<BR>'; 00315 $fDetails.=$this->renderCheckBox($prefix.'[conf_pass]',$fConf['conf_pass']).'Is password field<BR>'; 00316 $fDetails.=$this->resImg('t_input_password.png','hspace=20','','<BR><BR>'); 00317 00318 $fDetails.='<BR>'; 00319 $fDetails.=$this->renderRadioBox($prefix.'[conf_unique]',$fConf['conf_unique'],'G').'Unique in whole database<BR>'; 00320 $fDetails.=$this->renderRadioBox($prefix.'[conf_unique]',$fConf['conf_unique'],'L').'Unique inside parent page<BR>'; 00321 $fDetails.=$this->renderRadioBox($prefix.'[conf_unique]',$fConf['conf_unique'],'').'Not unique (default)<BR>'; 00322 $fDetails.='<BR>'; 00323 $fDetails.=$this->renderCheckBox($prefix.'[conf_wiz_color]',$fConf['conf_wiz_color']).'Add colorpicker wizard<BR>'; 00324 $fDetails.=$this->resImg('t_input_colorwiz.png','hspace=20','','<BR><BR>'); 00325 $fDetails.=$this->renderCheckBox($prefix.'[conf_wiz_link]',$fConf['conf_wiz_link']).'Add link wizard<BR>'; 00326 $fDetails.=$this->resImg('t_input_link2.png','hspace=20','','<BR><BR>'); 00327 break; 00328 case 'input': 00329 $typeCfg.=$this->resImg('t_input.png','',''); 00330 00331 $fDetails.=$this->renderStringBox($prefix.'[conf_size]',$fConf['conf_size'],50).' Field width (5-48 relative, 30 default)<BR>'; 00332 $fDetails.=$this->renderStringBox($prefix.'[conf_max]',$fConf['conf_max'],50).' Max characters<BR>'; 00333 $fDetails.=$this->renderCheckBox($prefix.'[conf_required]',$fConf['conf_required']).'Required<BR>'; 00334 $fDetails.=$this->resImg('t_input_required.png','hspace=20','','<BR><BR>'); 00335 00336 $fDetails.=$this->renderCheckBox($prefix.'[conf_varchar]',$fConf['conf_varchar']).'Create VARCHAR, not TINYTEXT field<BR>'; 00337 break; 00338 case 'textarea': 00339 case 'textarea_nowrap': 00340 $typeCfg.=$this->resImg('t_textarea.png','',''); 00341 00342 $fDetails.=$this->renderStringBox($prefix.'[conf_cols]',$fConf['conf_cols'],50).' Textarea width (5-48 relative, 30 default)<BR>'; 00343 $fDetails.=$this->renderStringBox($prefix.'[conf_rows]',$fConf['conf_rows'],50).' Number of rows (height)<BR>'; 00344 $fDetails.='<BR>'; 00345 $fDetails.=$this->renderCheckBox($prefix.'[conf_wiz_example]',$fConf['conf_wiz_example']).'Add wizard example<BR>'; 00346 $fDetails.=$this->resImg('t_textarea_wiz.png','hspace=20','','<BR><BR>'); 00347 break; 00348 case 'textarea_rte': 00349 $typeCfg.=$this->resImg($fConf['conf_rte']!='tt_content'?'t_rte.png':'t_rte2.png','',''); 00350 00351 $optValues = array( 00352 'tt_content' => 'Transform content like the Content Element "Bodytext" field (default/old)', 00353 'basic' => 'Typical basic setup (new "Bodytext" field based on CSS stylesheets)', 00354 'moderate' => 'Moderate transform of images and links', 00355 'none' => 'No transformation at all', 00356 'custom' => 'Custom' 00357 ); 00358 $fDetails.='<BR>Rich Text Editor Mode:<BR>'.$this->renderSelectBox($prefix.'[conf_rte]',$fConf['conf_rte'],$optValues).'<BR>'; 00359 if ((string)$fConf['conf_rte']=='custom') { 00360 $optValues = array( 00361 'cut' => array('Cut button'), 00362 'copy' => array('Copy button'), 00363 'paste' => array('Paste button'), 00364 'formatblock' => array('Paragraph formatting','<DIV>, <P>'), 00365 'class' => array('Character formatting','<SPAN>)'), 00366 'fontstyle' => array('Font face','<FONT face=>)'), 00367 'fontsize' => array('Font size','<FONT size=>)'), 00368 'textcolor' => array('Font color','<FONT color=>'), 00369 'bold' => array('Bold','<STRONG>, <B>'), 00370 'italic' => array('italic','<EM>, <I>'), 00371 'underline' => array('Underline','<U>'), 00372 'left' => array('Left align','<DIV>, <P>'), 00373 'center' => array('Center align','<DIV>, <P>'), 00374 'right' => array('Right align','<DIV>, <P>'), 00375 'orderedlist' => array('Ordered bulletlist','<OL>, <LI>'), 00376 'unorderedlist' => array('Unordered bulletlist','<UL>, <LI>'), 00377 'outdent' => array('Outdent block','<BLOCKQUOTE>'), 00378 'indent' => array('Indent block','<BLOCKQUOTE>'), 00379 'link' => array('Link','<A>'), 00380 'table' => array('Table','<TABLE>, <TR>, <TD>'), 00381 'image' => array('Image','<IMG>'), 00382 'line' => array('Ruler','<HR>'), 00383 'user' => array('User defined',''), 00384 'chMode' => array('Edit source?','') 00385 ); 00386 $subLines=array(); 00387 $subLines[]='<tr> 00388 <td> </td> 00389 <td> </td> 00390 <td><strong>'.$this->fw('Button name:').'</strong></td> 00391 <td><strong>'.$this->fw('Tags allowed:').'</strong></td> 00392 </tr>'; 00393 foreach($optValues as $kk=>$vv) { 00394 $subLines[]='<tr> 00395 <td>'.$this->renderCheckBox($prefix.'[conf_rte_b_'.$kk.']',$fConf['conf_rte_b_'.$kk]).'</td> 00396 <td>'.$this->resIcon($kk.'.png').'</td> 00397 <td>'.$this->fw($vv[0]).'</td> 00398 <td>'.$this->fw(htmlspecialchars($vv[1])).'</td> 00399 </tr>'; 00400 } 00401 $fDetails.='<table border=0 cellpadding=2 cellspacing=2>'.implode('',$subLines).'</table><BR>'; 00402 00403 $fDetails.='<BR><strong>Define specific colors:</strong><BR> 00404 <em>Notice: Use only HEX-values for colors ("blue" should be #0000ff etc.)</em><BR>'; 00405 for($a=1;$a<4;$a++) { 00406 $fDetails.='Color #'.$a.': '.$this->renderStringBox($prefix.'[conf_rte_color'.$a.']',$fConf['conf_rte_color'.$a],70).'<BR>'; 00407 } 00408 $fDetails.=$this->resImg('t_rte_color.png','','','<BR><BR>'); 00409 00410 $fDetails.=$this->renderCheckBox($prefix.'[conf_rte_removecolorpicker]',$fConf['conf_rte_removecolorpicker']).'Hide colorpicker<BR>'; 00411 $fDetails.=$this->resImg('t_rte_colorpicker.png','hspace=20','','<BR><BR>'); 00412 00413 $fDetails.='<BR><strong>Define classes:</strong><BR>'; 00414 for($a=1;$a<7;$a++) { 00415 $fDetails.='Class Title:'.$this->renderStringBox($prefix.'[conf_rte_class'.$a.']',$fConf['conf_rte_class'.$a],100). 00416 '<BR>CSS Style: {'.$this->renderStringBox($prefix.'[conf_rte_class'.$a.'_style]',$fConf['conf_rte_class'.$a.'_style'],250).'}'. 00417 '<BR>'; 00418 } 00419 $fDetails.=$this->resImg('t_rte_class.png','','','<BR><BR>'); 00420 00421 # $fDetails.=$this->renderCheckBox($prefix."[conf_rte_removePdefaults]",$fConf["conf_rte_removePdefaults"])."<BR>"; 00422 $optValues = array( 00423 '0' => '', 00424 '1' => 'Hide Hx and PRE from Paragraph selector.', 00425 'H2H3' => 'Hide all, but H2,H3,P,PRE', 00426 ); 00427 $fDetails.='<BR>Hide Paragraph Items:<BR>'.$this->renderSelectBox($prefix.'[conf_rte_removePdefaults]',$fConf['conf_rte_removePdefaults'],$optValues).'<BR>'; 00428 $fDetails.=$this->resImg('t_rte_hideHx.png','hspace=20','','<BR><BR>'); 00429 00430 $fDetails.='<BR><strong>Misc:</strong><BR>'; 00431 // $fDetails.=$this->renderCheckBox($prefix.'[conf_rte_custom_php_processing]',$fConf['conf_rte_custom_php_processing']).'Custom PHP processing of content<BR>'; 00432 $fDetails.=$this->renderCheckBox($prefix.'[conf_rte_div_to_p]',isset($fConf['conf_rte_div_to_p'])?$fConf['conf_rte_div_to_p']:1).htmlspecialchars('Convert all <DIV> to <P>').'<BR>'; 00433 } 00434 00435 $fDetails.='<BR>'; 00436 $fDetails.=$this->renderCheckBox($prefix.'[conf_rte_fullscreen]',isset($fConf['conf_rte_fullscreen'])?$fConf['conf_rte_fullscreen']:1).'Fullscreen link<BR>'; 00437 $fDetails.=$this->resImg('t_rte_fullscreen.png','hspace=20','','<BR><BR>'); 00438 00439 if (t3lib_div::inList('moderate,basic,custom',$fConf['conf_rte'])) { 00440 $fDetails.='<BR>'; 00441 $fDetails.=$this->renderCheckBox($prefix.'[conf_rte_separateStorageForImages]',isset($fConf['conf_rte_separateStorageForImages'])?$fConf['conf_rte_separateStorageForImages']:1).'Storage of images in separate folder (in uploads/[extfolder]/rte/)<BR>'; 00442 } 00443 if (t3lib_div::inList('moderate,custom',$fConf['conf_rte'])) { 00444 $fDetails.='<BR>'; 00445 $fDetails.=$this->renderCheckBox($prefix.'[conf_mode_cssOrNot]',isset($fConf['conf_mode_cssOrNot'])?$fConf['conf_mode_cssOrNot']:1) . 'Use "ts_css" transformation instead of "ts_images-ts-reglinks"<BR>'; 00446 } 00447 break; 00448 case 'check': 00449 $typeCfg.=$this->resImg('t_input_link.png','',''); 00450 $fDetails.=$this->renderCheckBox($prefix.'[conf_check_default]',$fConf['conf_check_default']).'Checked by default<BR>'; 00451 break; 00452 case 'select': 00453 case 'radio': 00454 if ($fConf['type']=='radio') { 00455 $typeCfg.=$this->resImg('t_radio.png','',''); 00456 } else { 00457 $typeCfg.=$this->resImg('t_sel.png','',''); 00458 } 00459 $fDetails.='<BR><strong>Define values:</strong><BR>'; 00460 $subLines=array(); 00461 $subLines[]='<tr> 00462 <td valign=top>'.$this->fw('Item label:').'</td> 00463 <td valign=top>'.$this->fw('Item value:').'</td> 00464 </tr>'; 00465 $nItems = $fConf['conf_select_items'] = isset($fConf['conf_select_items'])?t3lib_div::intInRange(intval($fConf['conf_select_items']),0,20):4; 00466 for($a=0;$a<$nItems;$a++) { 00467 $subLines[]='<tr> 00468 <td valign=top>'.$this->fw($this->renderStringBox_lang('conf_select_item_'.$a,$prefix,$fConf)).'</td> 00469 <td valign=top>'.$this->fw($this->renderStringBox($prefix.'[conf_select_itemvalue_'.$a.']',isset($fConf['conf_select_itemvalue_'.$a])?$fConf['conf_select_itemvalue_'.$a]:$a,50)).'</td> 00470 </tr>'; 00471 } 00472 $fDetails.='<table border=0 cellpadding=2 cellspacing=2>'.implode('',$subLines).'</table><BR>'; 00473 $fDetails.=$this->renderStringBox($prefix.'[conf_select_items]',$fConf['conf_select_items'],50).' Number of values<BR>'; 00474 00475 if ($fConf['type']=='select') { 00476 $fDetails.=$this->renderCheckBox($prefix.'[conf_select_icons]',$fConf['conf_select_icons']).'Add a dummy set of icons<BR>'; 00477 $fDetails.=$this->resImg('t_select_icons.png','hspace=20','','<BR><BR>'); 00478 00479 $fDetails.=$this->renderStringBox($prefix.'[conf_relations]',t3lib_div::intInRange($fConf['conf_relations'],1,1000),50).' Max number of relations<BR>'; 00480 $fDetails.=$this->renderStringBox($prefix.'[conf_relations_selsize]',t3lib_div::intInRange($fConf['conf_relations_selsize'],1,50),50).' Size of selector box<BR>'; 00481 00482 $fDetails.=$this->renderCheckBox($prefix.'[conf_select_pro]',$fConf['conf_select_pro']).'Add pre-processing with PHP-function<BR>'; 00483 } 00484 break; 00485 case 'rel': 00486 if ($fConf['conf_rel_type']=='group' || !$fConf['conf_rel_type']) { 00487 $typeCfg.=$this->resImg('t_rel_group.png','',''); 00488 } elseif(intval($fConf['conf_relations'])>1) { 00489 $typeCfg.=$this->resImg('t_rel_selmulti.png','',''); 00490 } elseif(intval($fConf['conf_relations_selsize'])>1) { 00491 $typeCfg.=$this->resImg('t_rel_selx.png','',''); 00492 } else { 00493 $typeCfg.=$this->resImg('t_rel_sel1.png','',''); 00494 } 00495 00496 00497 $optValues = array( 00498 'pages' => 'Pages table, (pages)', 00499 'fe_users' => 'Frontend Users, (fe_users)', 00500 'fe_groups' => 'Frontend Usergroups, (fe_groups)', 00501 'tt_content' => 'Content elements, (tt_content)', 00502 '_CUSTOM' => 'Custom table (enter name below)', 00503 '_ALL' => 'All tables allowed!', 00504 ); 00505 if ($fConf['conf_rel_type']!='group') {unset($optValues['_ALL']);} 00506 $optValues = $this->addOtherExtensionTables($optValues); 00507 $fDetails.='<BR>Create relation to table:<BR>'.$this->renderSelectBox($prefix.'[conf_rel_table]',$fConf['conf_rel_table'],$optValues).'<BR>'; 00508 if ($fConf['conf_rel_table']=='_CUSTOM') $fDetails.='Custom table name: '.$this->renderStringBox($prefix.'[conf_custom_table_name]',$fConf['conf_custom_table_name'],200).'<BR>'; 00509 00510 $optValues = array( 00511 'group' => 'Field with Element Browser', 00512 'select' => 'Selectorbox, select global', 00513 'select_cur' => 'Selectorbox, select from current page', 00514 'select_root' => 'Selectorbox, select from root page', 00515 'select_storage' => 'Selectorbox, select from storage page', 00516 ); 00517 $fDetails.='<BR>Type:<BR>'.$this->renderSelectBox($prefix.'[conf_rel_type]',$fConf['conf_rel_type']?$fConf['conf_rel_type']:'group',$optValues).'<BR>'; 00518 if (t3lib_div::intInRange($fConf['conf_relations'],1,1000)==1 && $fConf['conf_rel_type']!='group') { 00519 $fDetails.=$this->renderCheckBox($prefix.'[conf_rel_dummyitem]',$fConf['conf_rel_dummyitem']).'Add a blank item to the selector<BR>'; 00520 } 00521 00522 $fDetails.=$this->renderStringBox($prefix.'[conf_relations]',t3lib_div::intInRange($fConf['conf_relations'],1,1000),50).' Max number of relations<BR>'; 00523 $fDetails.=$this->renderStringBox($prefix.'[conf_relations_selsize]',t3lib_div::intInRange($fConf['conf_relations_selsize'],1,50),50).' Size of selector box<BR>'; 00524 $fDetails.=$this->renderCheckBox($prefix.'[conf_relations_mm]',$fConf['conf_relations_mm']).'True M-M relations (otherwise commalist of values)<BR>'; 00525 00526 00527 if ($fConf['conf_rel_type']!='group') { 00528 $fDetails.='<BR>'; 00529 $fDetails.=$this->renderCheckBox($prefix.'[conf_wiz_addrec]',$fConf['conf_wiz_addrec']).'Add "Add record" link<BR>'; 00530 $fDetails.=$this->renderCheckBox($prefix.'[conf_wiz_listrec]',$fConf['conf_wiz_listrec']).'Add "List records" link<BR>'; 00531 $fDetails.=$this->renderCheckBox($prefix.'[conf_wiz_editrec]',$fConf['conf_wiz_editrec']).'Add "Edit record" link<BR>'; 00532 $fDetails.=$this->resImg("t_rel_wizards.png",'hspace=20','','<BR><BR>'); 00533 } 00534 break; 00535 case 'files': 00536 if ($fConf['conf_files_type']=='images') { 00537 $typeCfg.=$this->resImg('t_file_img.png','',''); 00538 } elseif ($fConf['conf_files_type']=='webimages') { 00539 $typeCfg.=$this->resImg('t_file_web.png','',''); 00540 } else { 00541 $typeCfg.=$this->resImg('t_file_all.png','',''); 00542 } 00543 00544 $optValues = array( 00545 'images' => 'Imagefiles', 00546 'webimages' => 'Web-imagefiles (gif,jpg,png)', 00547 'all' => 'All files, except php/php3 extensions', 00548 ); 00549 $fDetails.='<BR>Extensions:<BR>'.$this->renderSelectBox($prefix.'[conf_files_type]',$fConf['conf_files_type'],$optValues).'<BR>'; 00550 00551 $fDetails.=$this->renderStringBox($prefix.'[conf_files]',t3lib_div::intInRange($fConf['conf_files'],1,1000),50).' Max number of files<BR>'; 00552 $fDetails.=$this->renderStringBox($prefix.'[conf_max_filesize]',t3lib_div::intInRange($fConf['conf_max_filesize'],1,1000,500),50).' Max filesize allowed (kb)<BR>'; 00553 $fDetails.=$this->renderStringBox($prefix.'[conf_files_selsize]',t3lib_div::intInRange($fConf['conf_files_selsize'],1,50),50).' Size of selector box<BR>'; 00554 $fDetails.=$this->resImg('t_file_size.png','','','<BR><BR>'); 00555 // $fDetails.=$this->renderCheckBox($prefix.'[conf_files_mm]',$fConf['conf_files_mm']).'DB relations (very rare choice, normally the commalist is fine enough)<BR>'; 00556 $fDetails.=$this->renderCheckBox($prefix.'[conf_files_thumbs]',$fConf['conf_files_thumbs']).'Show thumbnails<BR>'; 00557 $fDetails.=$this->resImg('t_file_thumb.png','hspace=20','','<BR><BR>'); 00558 break; 00559 case 'integer': 00560 $typeCfg.=$this->resImg('t_integer.png','',''); 00561 break; 00562 case 'check_4': 00563 case 'check_10': 00564 if ((string)$fConf['type']=='check_4') { 00565 $typeCfg.=$this->resImg('t_check4.png','',''); 00566 } else { 00567 $typeCfg.=$this->resImg('t_check10.png','',''); 00568 } 00569 $nItems= t3lib_div::intInRange($fConf['conf_numberBoxes'],1,10,(string)$fConf['type']=='check_4'?4:10); 00570 $fDetails.=$this->renderStringBox($prefix.'[conf_numberBoxes]',$nItems,50).' Number of checkboxes<BR>'; 00571 00572 for($a=0;$a<$nItems;$a++) { 00573 $fDetails.='<BR>Label '.($a+1).':<BR>'.$this->renderStringBox_lang('conf_boxLabel_'.$a,$prefix,$fConf); 00574 } 00575 break; 00576 case 'date': 00577 $typeCfg.=$this->resImg('t_date.png','',''); 00578 break; 00579 case 'datetime': 00580 $typeCfg.=$this->resImg('t_datetime.png','',''); 00581 break; 00582 case 'link': 00583 $typeCfg.=$this->resImg('t_link.png','',''); 00584 break; 00585 } 00586 00587 if ($fConf['type']) $typeCfg.=$this->textSetup('',$fDetails); 00588 00589 $content='<table border=0 cellpadding=0 cellspacing=0> 00590 <tr><td valign=top>'.$this->fw('Field name:').'</td><td valign=top>'.$this->fw($fieldName).'</td></tr> 00591 <tr><td valign=top>'.$this->fw('Field title:').'</td><td valign=top>'.$this->fw($fieldTitle).'</td></tr> 00592 <tr><td valign=top>'.$this->fw('Field type:').'</td><td valign=top>'.$this->fw($typeCfg).'</td></tr> 00593 </table>'; 00594 return $content; 00595 } 00596 00597 00598 00599 00603 function render_extPart($k,$config,$extKey) { 00604 $WOP='[fields]['.$k.']'; 00605 $tableName=$config['which_table']; 00606 # $tableName = $this->returnName($extKey,'fields',$tableName); 00607 # $prefix = 'tx_'.str_replace('_','',$extKey).'_'; 00608 $prefix = $this->returnName($extKey,'fields').'_'; 00609 00610 $DBfields=array(); 00611 $columns=array(); 00612 $ctrl=array(); 00613 $enFields=array(); 00614 00615 if (is_array($config['fields'])) { 00616 reset($config['fields']); 00617 while(list($i,$fConf)=each($config['fields'])) { 00618 $fConf['fieldname'] = $prefix.$fConf['fieldname']; 00619 $this->makeFieldTCA($DBfields,$columns,$fConf,$WOP.'[fields]['.$i.']',$tableName,$extKey); 00620 } 00621 } 00622 00623 if ($tableName=='tt_address') $this->wizard->EM_CONF_presets['dependencies'][]='tt_address'; 00624 if ($tableName=='tt_news') $this->wizard->EM_CONF_presets['dependencies'][]='tt_news'; 00625 if (t3lib_div::inList('tt_content,fe_users,fe_groups',$tableName)) $this->wizard->EM_CONF_presets['dependencies'][]='cms'; 00626 00627 $createTable = $this->wrapBody(' 00628 # 00629 # Table structure for table \''.$tableName.'\' 00630 # 00631 CREATE TABLE '.$tableName.' ( 00632 ', ereg_replace(',[[:space:]]*$','',implode(chr(10),$DBfields)), ' 00633 00634 ); 00635 '); 00636 $this->wizard->ext_tables_sql[]=chr(10).$createTable.chr(10); 00637 00638 00639 // Finalize ext_tables.php: 00640 $this->wizard->ext_tables[]=$this->wrapBody(' 00641 $tempColumns = Array ( 00642 ', implode(chr(10),$columns) ,' 00643 ); 00644 '); 00645 00646 00647 list($typeList) = $this->implodeColumns($columns); 00648 $applyToAll=1; 00649 if (is_array($this->wizard->wizArray['pi'])) { 00650 reset($this->wizard->wizArray['pi']); 00651 while(list(,$fC)=each($this->wizard->wizArray['pi'])) { 00652 if ($fC['apply_extended']==$k) { 00653 $applyToAll=0; 00654 $this->wizard->_apply_extended_types[$k]=$typeList; 00655 } 00656 } 00657 } 00658 $this->wizard->ext_tables[]=$this->sPS(' 00659 t3lib_div::loadTCA("'.$tableName.'"); 00660 t3lib_extMgm::addTCAcolumns("'.$tableName.'",$tempColumns,1); 00661 '.($applyToAll?'t3lib_extMgm::addToAllTCAtypes("'.$tableName.'","'.$typeList.'");':'').' 00662 '); 00663 } 00664 00665 00666 00667 00668 00669 function implodeColumns($columns) { 00670 reset($columns); 00671 $outems=array(); 00672 $paltems=array(); 00673 $c=0; 00674 $hiddenFlag=0; 00675 $titleDivFlag=0; 00676 while(list($fN)=each($columns)) { 00677 if (!$hiddenFlag || !t3lib_div::inList('starttime,endtime,fe_group',$fN)) { 00678 $outTem = array($fN,'','','',''); 00679 $outTem[3] = $this->wizard->_typeP[$fN]; 00680 if ($c==0) $outTem[4]='1-1-1'; 00681 if ($fN=='title') { 00682 $outTem[4]='2-2-2'; 00683 $titleDivFlag=1; 00684 } elseif ($titleDivFlag) { 00685 $outTem[4]='3-3-3'; 00686 $titleDivFlag=0; 00687 } 00688 if ($fN=='hidden') { 00689 $outTem[2]='1'; 00690 $hiddenFlag=1; 00691 } 00692 $outems[] = str_replace(',','',str_replace(chr(9),';',trim(str_replace(';','',implode(chr(9),$outTem))))); 00693 $c++; 00694 } else { 00695 $paltems[]=$fN; 00696 } 00697 } 00698 return array(implode(', ',$outems),implode(', ',$paltems)); 00699 } 00700 function makeFieldTCA(&$DBfields,&$columns,$fConf,$WOP,$table,$extKey) { 00701 if (!(string)$fConf['type']) return; 00702 $id = $table.'_'.$fConf['fieldname']; 00703 #debug($fConf); 00704 00705 $configL=array(); 00706 $t = (string)$fConf['type']; 00707 switch($t) { 00708 case 'input': 00709 case 'input+': 00710 $isString =1; 00711 $configL[]='"type" => "input", ' . $this->WOPcomment('WOP:'.$WOP.'[type]'); 00712 $configL[]='"size" => "' . t3lib_div::intInRange($fConf['conf_size'],5,48,30) . '", ' .$this->WOPcomment('WOP:'.$WOP.'[conf_size]'); 00713 if (intval($fConf['conf_max'])) $configL[]='"max" => "' . t3lib_div::intInRange($fConf['conf_max'],1,255).'", '.$this->WOPcomment('WOP:'.$WOP.'[conf_max]'); 00714 00715 $evalItems=array(); 00716 if ($fConf['conf_required']) {$evalItems[0][] = 'required'; $evalItems[1][] = $WOP.'[conf_required]';} 00717 00718 if ($t=='input+') { 00719 $isString = !$fConf['conf_eval'] || t3lib_div::inList('alphanum,upper,lower',$fConf['conf_eval']); 00720 if ($fConf['conf_varchar'] && $isString) {$evalItems[0][] = 'trim'; $evalItems[1][] = $WOP.'[conf_varchar]';} 00721 if ($fConf['conf_eval']=='int+') { 00722 $configL[]='"range" => Array ("lower"=>0,"upper"=>1000), '.$this->WOPcomment('WOP:'.$WOP.'[conf_eval] = int+ results in a range setting'); 00723 $fConf['conf_eval']='int'; 00724 } 00725 if ($fConf['conf_eval']) {$evalItems[0][] = $fConf['conf_eval']; $evalItems[1][] = $WOP.'[conf_eval]';} 00726 if ($fConf['conf_check']) $configL[]='"checkbox" => "'.($isString?'':'0').'", '.$this->WOPcomment('WOP:'.$WOP.'[conf_check]'); 00727 00728 if ($fConf['conf_stripspace']) {$evalItems[0][] = 'nospace'; $evalItems[1][] = $WOP.'[conf_stripspace]';} 00729 if ($fConf['conf_pass']) {$evalItems[0][] = 'password'; $evalItems[1][] = $WOP.'[conf_pass]';} 00730 if ($fConf['conf_unique']) { 00731 if ($fConf['conf_unique']=='L') {$evalItems[0][] = 'uniqueInPid'; $evalItems[1][] = $WOP.'[conf_unique] = Local (unique in this page (PID))';} 00732 if ($fConf['conf_unique']=='G') {$evalItems[0][] = 'unique'; $evalItems[1][] = $WOP.'[conf_unique] = Global (unique in whole database)';} 00733 } 00734 00735 $wizards =array(); 00736 if ($fConf['conf_wiz_color']) { 00737 $wizards[] = trim($this->sPS(' 00738 '.$this->WOPcomment('WOP:'.$WOP.'[conf_wiz_color]').' 00739 "color" => Array( 00740 "title" => "Color:", 00741 "type" => "colorbox", 00742 "dim" => "12x12", 00743 "tableStyle" => "border:solid 1px black;", 00744 "script" => "wizard_colorpicker.php", 00745 "JSopenParams" => "height=300,width=250,status=0,menubar=0,scrollbars=1", 00746 ), 00747 ')); 00748 } 00749 if ($fConf['conf_wiz_link']) { 00750 $wizards[] = trim($this->sPS(' 00751 '.$this->WOPcomment('WOP:'.$WOP.'[conf_wiz_link]').' 00752 "link" => Array( 00753 "type" => "popup", 00754 "title" => "Link", 00755 "icon" => "link_popup.gif", 00756 "script" => "browse_links.php?mode=wizard", 00757 "JSopenParams" => "height=300,width=500,status=0,menubar=0,scrollbars=1" 00758 ), 00759 ')); 00760 } 00761 if (count($wizards)) { 00762 $configL[]=trim($this->wrapBody(' 00763 "wizards" => Array( 00764 "_PADDING" => 2, 00765 ',implode(chr(10),$wizards),' 00766 ), 00767 ')); 00768 } 00769 } else { 00770 if ($fConf['conf_varchar']) {$evalItems[0][] = 'trim'; $evalItems[1][] = $WOP.'[conf_varchar]';} 00771 } 00772 00773 if (count($evalItems)) $configL[]='"eval" => "'.implode(",",$evalItems[0]).'", '.$this->WOPcomment('WOP:'.implode(" / ",$evalItems[1])); 00774 00775 if (!$isString) { 00776 $DBfields[] = $fConf['fieldname'] . ' int(11) DEFAULT \'0\' NOT NULL,'; 00777 } elseif (!$fConf['conf_varchar']) { 00778 $DBfields[] = $fConf['fieldname'] . ' tinytext NOT NULL,'; 00779 } else { 00780 $varCharLn = (intval($fConf['conf_max'])?t3lib_div::intInRange($fConf['conf_max'],1,255):255); 00781 $DBfields[] = $fConf['fieldname'] . ' ' . ($varCharLn>$this->wizard->charMaxLng?'var':'') . 'char(' . $varCharLn .') DEFAULT "" NOT NULL,'; 00782 } 00783 break; 00784 case 'link': 00785 $DBfields[] = $fConf['fieldname'].' tinytext NOT NULL,'; 00786 $configL[]=trim($this->sPS(' 00787 "type" => "input", 00788 "size" => "15", 00789 "max" => "255", 00790 "checkbox" => "", 00791 "eval" => "trim", 00792 "wizards" => Array( 00793 "_PADDING" => 2, 00794 "link" => Array( 00795 "type" => "popup", 00796 "title" => "Link", 00797 "icon" => "link_popup.gif", 00798 "script" => "browse_links.php?mode=wizard", 00799 "JSopenParams" => "height=300,width=500,status=0,menubar=0,scrollbars=1" 00800 ) 00801 ) 00802 ')); 00803 break; 00804 case 'datetime': 00805 case 'date': 00806 $DBfields[] = $fConf['fieldname'].' int(11) DEFAULT \'0\' NOT NULL,'; 00807 $configL[]=trim($this->sPS(' 00808 "type" => "input", 00809 "size" => "'.($t=="datetime"?12:8).'", 00810 "max" => "20", 00811 "eval" => "'.$t.'", 00812 "checkbox" => "0", 00813 "default" => "0" 00814 ')); 00815 break; 00816 case 'integer': 00817 $DBfields[] = $fConf['fieldname'] . ' int(11) DEFAULT \'0\' NOT NULL,'; 00818 $configL[]=trim($this->sPS(' 00819 "type" => "input", 00820 "size" => "4", 00821 "max" => "4", 00822 "eval" => "int", 00823 "checkbox" => "0", 00824 "range" => Array ( 00825 "upper" => "1000", 00826 "lower" => "10" 00827 ), 00828 "default" => 0 00829 ')); 00830 break; 00831 case 'textarea': 00832 case 'textarea_nowrap': 00833 $DBfields[] = $fConf['fieldname'].' text NOT NULL,'; 00834 $configL[]='"type" => "text",'; 00835 if ($t=='textarea_nowrap') { 00836 $configL[]='"wrap" => "OFF",'; 00837 } 00838 $configL[]='"cols" => "'.t3lib_div::intInRange($fConf["conf_cols"],5,48,30).'", '.$this->WOPcomment('WOP:'.$WOP.'[conf_cols]'); 00839 $configL[]='"rows" => "'.t3lib_div::intInRange($fConf["conf_rows"],1,20,5).'", '.$this->WOPcomment('WOP:'.$WOP.'[conf_rows]'); 00840 if ($fConf["conf_wiz_example"]) { 00841 $wizards =array(); 00842 $wizards[] = trim($this->sPS(' 00843 '.$this->WOPcomment('WOP:'.$WOP.'[conf_wiz_example]').' 00844 "example" => Array( 00845 "title" => "Example Wizard:", 00846 "type" => "script", 00847 "notNewRecords" => 1, 00848 "icon" => t3lib_extMgm::extRelPath("'.$extKey.'")."'.$id.'/wizard_icon.gif", 00849 "script" => t3lib_extMgm::extRelPath("'.$extKey.'")."'.$id.'/index.php", 00850 ), 00851 ')); 00852 00853 $cN = $this->returnName($extKey,'class',$id.'wiz'); 00854 $this->writeStandardBE_xMod( 00855 $extKey, 00856 array('title'=>'Example Wizard title...'), 00857 $id.'/', 00858 $cN, 00859 0, 00860 $id.'wiz' 00861 ); 00862 $this->addFileToFileArray($id.'/wizard_icon.gif',t3lib_div::getUrl(t3lib_extMgm::extPath('kickstarter').'res/notfound.gif')); 00863 00864 $configL[]=trim($this->wrapBody(' 00865 "wizards" => Array( 00866 "_PADDING" => 2, 00867 ',implode(chr(10),$wizards),' 00868 ), 00869 ')); 00870 } 00871 break; 00872 case 'textarea_rte': 00873 $DBfields[] = $fConf['fieldname'].' text NOT NULL,'; 00874 $configL[]='"type" => "text",'; 00875 $configL[]='"cols" => "30",'; 00876 $configL[]='"rows" => "5",'; 00877 if ($fConf['conf_rte_fullscreen']) { 00878 $wizards =array(); 00879 $wizards[] = trim($this->sPS(' 00880 '.$this->WOPcomment('WOP:'.$WOP.'[conf_rte_fullscreen]').' 00881 "RTE" => Array( 00882 "notNewRecords" => 1, 00883 "RTEonly" => 1, 00884 "type" => "script", 00885 "title" => "Full screen Rich Text Editing|Formatteret redigering i hele vinduet", 00886 "icon" => "wizard_rte2.gif", 00887 "script" => "wizard_rte.php", 00888 ), 00889 ')); 00890 $configL[]=trim($this->wrapBody(' 00891 "wizards" => Array( 00892 "_PADDING" => 2, 00893 ',implode(chr(10),$wizards),' 00894 ), 00895 ')); 00896 } 00897 00898 $rteImageDir = ''; 00899 if ($fConf['conf_rte_separateStorageForImages'] && t3lib_div::inList('moderate,basic,custom',$fConf['conf_rte'])) { 00900 $this->wizard->EM_CONF_presets['createDirs'][]=$this->ulFolder($extKey).'rte/'; 00901 $rteImageDir = '|imgpath='.$this->ulFolder($extKey).'rte/'; 00902 } 00903 00904 $transformation='ts_images-ts_reglinks'; 00905 if ($fConf['conf_mode_cssOrNot'] && t3lib_div::inList('moderate,custom',$fConf['conf_rte'])) { 00906 $transformation='ts_css'; 00907 } 00908 00909 00910 switch($fConf['conf_rte']) { 00911 case 'tt_content': 00912 $typeP = 'richtext[paste|bold|italic|underline|formatblock|class|left|center|right|orderedlist|unorderedlist|outdent|indent|link|image]:rte_transform[mode=ts]'; 00913 break; 00914 case 'moderate': 00915 $typeP = 'richtext[*]:rte_transform[mode='.$transformation.''.$rteImageDir.']'; 00916 break; 00917 case 'basic': 00918 $typeP = 'richtext[cut|copy|paste|formatblock|textcolor|bold|italic|underline|left|center|right|orderedlist|unorderedlist|outdent|indent|link|table|image|line|chMode]:rte_transform[mode=ts_css'.$rteImageDir.']'; 00919 $this->wizard->ext_localconf[]=trim($this->wrapBody(" 00920 t3lib_extMgm::addPageTSConfig(' 00921 00922 # *************************************************************************************** 00923 # CONFIGURATION of RTE in table \"".$table."\", field \"".$fConf["fieldname"]."\" 00924 # *************************************************************************************** 00925 00926 ",trim($this->slashValueForSingleDashes(str_replace(chr(9)," ",$this->sPS(" 00927 RTE.config.".$table.".".$fConf["fieldname"]." { 00928 hidePStyleItems = H1, H4, H5, H6 00929 proc.exitHTMLparser_db=1 00930 proc.exitHTMLparser_db { 00931 keepNonMatchedTags=1 00932 tags.font.allowedAttribs= color 00933 tags.font.rmTagIfNoAttrib = 1 00934 tags.font.nesting = global 00935 } 00936 } 00937 "))))," 00938 '); 00939 ",0)); 00940 break; 00941 case 'none': 00942 $typeP = 'richtext[*]'; 00943 break; 00944 case 'custom': 00945 $enabledButtons=array(); 00946 $traverseList = explode(',','cut,copy,paste,formatblock,class,fontstyle,fontsize,textcolor,bold,italic,underline,left,center,right,orderedlist,unorderedlist,outdent,indent,link,table,image,line,user,chMode'); 00947 $HTMLparser=array(); 00948 $fontAllowedAttrib=array(); 00949 $allowedTags_WOP = array(); 00950 $allowedTags=array(); 00951 while(list(,$lI)=each($traverseList)) { 00952 $nothingDone=0; 00953 if ($fConf['conf_rte_b_'.$lI]) { 00954 $enabledButtons[]=$lI; 00955 switch($lI) { 00956 case 'formatblock': 00957 case 'left': 00958 case 'center': 00959 case 'right': 00960 $allowedTags[]='div'; 00961 $allowedTags[]='p'; 00962 break; 00963 case 'class': 00964 $allowedTags[]='span'; 00965 break; 00966 case 'fontstyle': 00967 $allowedTags[]='font'; 00968 $fontAllowedAttrib[]='face'; 00969 break; 00970 case 'fontsize': 00971 $allowedTags[]='font'; 00972 $fontAllowedAttrib[]='size'; 00973 break; 00974 case 'textcolor': 00975 $allowedTags[]='font'; 00976 $fontAllowedAttrib[]='color'; 00977 break; 00978 case 'bold': 00979 $allowedTags[]='b'; 00980 $allowedTags[]='strong'; 00981 break; 00982 case 'italic': 00983 $allowedTags[]='i'; 00984 $allowedTags[]='em'; 00985 break; 00986 case 'underline': 00987 $allowedTags[]='u'; 00988 break; 00989 case 'orderedlist': 00990 $allowedTags[]='ol'; 00991 $allowedTags[]='li'; 00992 break; 00993 case 'unorderedlist': 00994 $allowedTags[]='ul'; 00995 $allowedTags[]='li'; 00996 break; 00997 case 'outdent': 00998 case 'indent': 00999 $allowedTags[]='blockquote'; 01000 break; 01001 case 'link': 01002 $allowedTags[]='a'; 01003 break; 01004 case 'table': 01005 $allowedTags[]='table'; 01006 $allowedTags[]='tr'; 01007 $allowedTags[]='td'; 01008 break; 01009 case 'image': 01010 $allowedTags[]='img'; 01011 break; 01012 case 'line': 01013 $allowedTags[]='hr'; 01014 break; 01015 default: 01016 $nothingDone=1; 01017 break; 01018 } 01019 if (!$nothingDone) $allowedTags_WOP[] = $WOP.'[conf_rte_b_'.$lI.']'; 01020 } 01021 } 01022 if (count($fontAllowedAttrib)) { 01023 $HTMLparser[]='tags.font.allowedAttribs = '.implode(',',$fontAllowedAttrib); 01024 $HTMLparser[]='tags.font.rmTagIfNoAttrib = 1'; 01025 $HTMLparser[]='tags.font.nesting = global'; 01026 } 01027 if (count($enabledButtons)) { 01028 $typeP = 'richtext['.implode('|',$enabledButtons).']:rte_transform[mode='.$transformation.''.$rteImageDir.']'; 01029 } 01030 01031 $rte_colors=array(); 01032 $setupUpColors=array(); 01033 for ($a=1;$a<=3;$a++) { 01034 if ($fConf['conf_rte_color'.$a]) { 01035 $rte_colors[$id.'_color'.$a]=trim($this->sPS(' 01036 '.$this->WOPcomment('WOP:'.$WOP.'[conf_rte_color'.$a.']').' 01037 '.$id.'_color'.$a.' { 01038 name = Color '.$a.' 01039 value = '.$fConf['conf_rte_color'.$a].' 01040 } 01041 ')); 01042 $setupUpColors[]=trim($fConf['conf_rte_color'.$a]); 01043 } 01044 } 01045 01046 $rte_classes=array(); 01047 for ($a=1;$a<=6;$a++) { 01048 if ($fConf['conf_rte_class'.$a]) { 01049 $rte_classes[$id.'_class'.$a]=trim($this->sPS(' 01050 '.$this->WOPcomment('WOP:'.$WOP.'[conf_rte_class'.$a.']').' 01051 '.$id.'_class'.$a.' { 01052 name = '.$fConf['conf_rte_class'.$a].' 01053 value = '.$fConf['conf_rte_class'.$a.'_style'].' 01054 } 01055 ')); 01056 } 01057 } 01058 01059 $PageTSconfig= Array(); 01060 if ($fConf['conf_rte_removecolorpicker']) { 01061 $PageTSconfig[]=' '.$this->WOPcomment('WOP:'.$WOP.'[conf_rte_removecolorpicker]'); 01062 $PageTSconfig[]='disableColorPicker = 1'; 01063 } 01064 if (count($rte_classes)) { 01065 $PageTSconfig[]=' '.$this->WOPcomment('WOP:'.$WOP.'[conf_rte_class*]'); 01066 $PageTSconfig[]='classesParagraph = '.implode(', ',array_keys($rte_classes)); 01067 $PageTSconfig[]='classesCharacter = '.implode(', ',array_keys($rte_classes)); 01068 if (in_array('p',$allowedTags) || in_array('div',$allowedTags)) { 01069 $HTMLparser[]=' '.$this->WOPcomment('WOP:'.$WOP.'[conf_rte_class*]'); 01070 if (in_array('p',$allowedTags)) {$HTMLparser[]='p.fixAttrib.class.list = ,'.implode(',',array_keys($rte_classes));} 01071 if (in_array('div',$allowedTags)) {$HTMLparser[]='div.fixAttrib.class.list = ,'.implode(',',array_keys($rte_classes));} 01072 } 01073 } 01074 if (count($rte_colors)) { 01075 $PageTSconfig[]=' '.$this->WOPcomment('WOP:'.$WOP.'[conf_rte_color*]'); 01076 $PageTSconfig[]='colors = '.implode(', ',array_keys($rte_colors)); 01077 01078 if (in_array('color',$fontAllowedAttrib) && $fConf['conf_rte_removecolorpicker']) { 01079 $HTMLparser[]=' '.$this->WOPcomment('WOP:'.$WOP.'[conf_rte_removecolorpicker]'); 01080 $HTMLparser[]='tags.font.fixAttrib.color.list = ,'.implode(',',$setupUpColors); 01081 $HTMLparser[]='tags.font.fixAttrib.color.removeIfFalse = 1'; 01082 } 01083 } 01084 if (!strcmp($fConf['conf_rte_removePdefaults'],1)) { 01085 $PageTSconfig[]=' '.$this->WOPcomment('WOP:'.$WOP.'[conf_rte_removePdefaults]'); 01086 $PageTSconfig[]='hidePStyleItems = H1, H2, H3, H4, H5, H6, PRE'; 01087 } elseif ($fConf['conf_rte_removePdefaults']=='H2H3') { 01088 $PageTSconfig[]=' '.$this->WOPcomment('WOP:'.$WOP.'[conf_rte_removePdefaults]'); 01089 $PageTSconfig[]='hidePStyleItems = H1, H4, H5, H6'; 01090 } else { 01091 $allowedTags[]='h1'; 01092 $allowedTags[]='h2'; 01093 $allowedTags[]='h3'; 01094 $allowedTags[]='h4'; 01095 $allowedTags[]='h5'; 01096 $allowedTags[]='h6'; 01097 $allowedTags[]='pre'; 01098 } 01099 01100 01101 $allowedTags = array_unique($allowedTags); 01102 if (count($allowedTags)) { 01103 $HTMLparser[]=' '.$this->WOPcomment('WOP:'.implode(' / ',$allowedTags_WOP)); 01104 $HTMLparser[]='allowTags = '.implode(', ',$allowedTags); 01105 } 01106 if ($fConf['conf_rte_div_to_p']) { 01107 $HTMLparser[]=' '.$this->WOPcomment('WOP:'.$WOP.'[conf_rte_div_to_p]'); 01108 $HTMLparser[]='tags.div.remap = P'; 01109 } 01110 if (count($HTMLparser)) { 01111 $PageTSconfig[]=trim($this->wrapBody(' 01112 proc.exitHTMLparser_db=1 01113 proc.exitHTMLparser_db { 01114 ',implode(chr(10),$HTMLparser),' 01115 } 01116 ')); 01117 } 01118 01119 $finalPageTSconfig=array(); 01120 if (count($rte_colors)) { 01121 $finalPageTSconfig[]=trim($this->wrapBody(' 01122 RTE.colors { 01123 ',implode(chr(10),$rte_colors),' 01124 } 01125 ')); 01126 } 01127 if (count($rte_classes)) { 01128 $finalPageTSconfig[]=trim($this->wrapBody(' 01129 RTE.classes { 01130 ',implode(chr(10),$rte_classes),' 01131 } 01132 ')); 01133 } 01134 if (count($PageTSconfig)) { 01135 $finalPageTSconfig[]=trim($this->wrapBody(' 01136 RTE.config.'.$table.'.'.$fConf['fieldname'].' { 01137 ',implode(chr(10),$PageTSconfig),' 01138 } 01139 ')); 01140 } 01141 if (count($finalPageTSconfig)) { 01142 $this->wizard->ext_localconf[]=trim($this->wrapBody(" 01143 t3lib_extMgm::addPageTSConfig(' 01144 01145 # *************************************************************************************** 01146 # CONFIGURATION of RTE in table \"".$table."\", field \"".$fConf["fieldname"]."\" 01147 # *************************************************************************************** 01148 01149 ",trim($this->slashValueForSingleDashes(str_replace(chr(9)," ",implode(chr(10).chr(10),$finalPageTSconfig))))," 01150 '); 01151 ",0)); 01152 } 01153 break; 01154 } 01155 $this->wizard->_typeP[$fConf['fieldname']] = $typeP; 01156 break; 01157 case 'check': 01158 case 'check_4': 01159 case 'check_10': 01160 $configL[]='"type" => "check",'; 01161 if ($t=='check') { 01162 $DBfields[] = $fConf['fieldname'].' tinyint(3) DEFAULT \'0\' NOT NULL,'; 01163 if ($fConf['conf_check_default']) $configL[]='"default" => 1, '.$this->WOPcomment('WOP:'.$WOP.'[conf_check_default]'); 01164 } else { 01165 $DBfields[] = $fConf['fieldname'].' int(11) DEFAULT \'0\' NOT NULL,'; 01166 } 01167 if ($t=='check_4' || $t=='check_10') { 01168 $configL[]='"cols" => 4,'; 01169 $cItems=array(); 01170 # $aMax = ($t=="check_4"?4:10); 01171 $aMax = intval($fConf["conf_numberBoxes"]); 01172 for($a=0;$a<$aMax;$a++) { 01173 // $cItems[]='Array("'.($fConf["conf_boxLabel_".$a]?str_replace("\\'","'",addslashes($this->getSplitLabels($fConf,"conf_boxLabel_".$a))):'English Label '.($a+1).'|Danish Label '.($a+1).'|German Label '.($a+1).'| etc...').'", ""),'; 01174 $cItems[]='Array("'.addslashes($this->getSplitLabels_reference($fConf,"conf_boxLabel_".$a,$table.".".$fConf["fieldname"].".I.".$a)).'", ""),'; 01175 } 01176 $configL[]=trim($this->wrapBody(' 01177 "items" => Array ( 01178 ',implode(chr(10),$cItems),' 01179 ), 01180 ')); 01181 } 01182 break; 01183 case 'radio': 01184 case 'select': 01185 $configL[]='"type" => "'.($t=="select"?"select":"radio").'",'; 01186 $notIntVal=0; 01187 $len=array(); 01188 for($a=0;$a<t3lib_div::intInRange($fConf["conf_select_items"],1,20);$a++) { 01189 $val = $fConf["conf_select_itemvalue_".$a]; 01190 $notIntVal+= t3lib_div::testInt($val)?0:1; 01191 $len[]=strlen($val); 01192 if ($fConf["conf_select_icons"] && $t=="select") { 01193 $icon = ', t3lib_extMgm::extRelPath("'.$extKey.'")."'."selicon_".$id."_".$a.".gif".'"'; 01194 // Add wizard icon 01195 $this->addFileToFileArray("selicon_".$id."_".$a.".gif",t3lib_div::getUrl(t3lib_extMgm::extPath("kickstarter")."res/wiz.gif")); 01196 } else $icon=""; 01197 // $cItems[]='Array("'.str_replace("\\'","'",addslashes($this->getSplitLabels($fConf,"conf_select_item_".$a))).'", "'.addslashes($val).'"'.$icon.'),'; 01198 $cItems[]='Array("'.addslashes($this->getSplitLabels_reference($fConf,"conf_select_item_".$a,$table.".".$fConf["fieldname"].".I.".$a)).'", "'.addslashes($val).'"'.$icon.'),'; 01199 } 01200 $configL[]=trim($this->wrapBody(' 01201 '.$this->WOPcomment('WOP:'.$WOP.'[conf_select_items]').' 01202 "items" => Array ( 01203 ',implode(chr(10),$cItems),' 01204 ), 01205 ')); 01206 if ($fConf['conf_select_pro'] && $t=='select') { 01207 $cN = $this->returnName($extKey,'class',$id); 01208 $configL[]='"itemsProcFunc" => "'.$cN.'->main", '.$this->WOPcomment('WOP:'.$WOP.'[conf_select_pro]'); 01209 01210 $classContent= $this->sPS(' 01211 class '.$cN.' { 01212 function main(&$params,&$pObj) { 01213 /* debug("Hello World!",1); 01214 debug("\$params:",1); 01215 debug($params); 01216 debug("\$pObj:",1); 01217 debug($pObj); 01218 */ 01219 // Adding an item! 01220 $params["items"][]=Array($pObj->sL("Added label by PHP function|Tilfřjet Dansk tekst med PHP funktion"), 999); 01221 01222 // No return - the $params and $pObj variables are passed by reference, so just change content in then and it is passed back automatically... 01223 } 01224 } 01225 '); 01226 01227 $this->addFileToFileArray('class.'.$cN.'.php',$this->PHPclassFile($extKey,'class.'.$cN.'.php',$classContent,'Class/Function which manipulates the item-array for table/field '.$id.'.')); 01228 01229 $this->wizard->ext_tables[]=$this->sPS(' 01230 '.$this->WOPcomment('WOP:'.$WOP.'[conf_select_pro]:').' 01231 if (TYPO3_MODE=="BE") include_once(t3lib_extMgm::extPath("'.$extKey.'")."'.'class.'.$cN.'.php"); 01232 '); 01233 } 01234 01235 $numberOfRelations = t3lib_div::intInRange($fConf["conf_relations"],1,100); 01236 if ($t=="select") { 01237 $configL[]='"size" => '.t3lib_div::intInRange($fConf["conf_relations_selsize"],1,100).', '.$this->WOPcomment('WOP:'.$WOP.'[conf_relations_selsize]'); 01238 $configL[]='"maxitems" => '.$numberOfRelations.', '.$this->WOPcomment('WOP:'.$WOP.'[conf_relations]'); 01239 } 01240 01241 if ($numberOfRelations>1 && $t=="select") { 01242 if ($numberOfRelations*4 < 256) { 01243 $DBfields[] = $fConf["fieldname"]." varchar(".($numberOfRelations*4).") DEFAULT '' NOT NULL,"; 01244 } else { 01245 $DBfields[] = $fConf["fieldname"]." text NOT NULL,"; 01246 } 01247 } elseif ($notIntVal) { 01248 $varCharLn = t3lib_div::intInRange(max($len),1); 01249 $DBfields[] = $fConf["fieldname"]." ".($varCharLn>$this->wizard->charMaxLng?'var':'')."char(".$varCharLn.") DEFAULT '' NOT NULL,"; 01250 } else { 01251 $DBfields[] = $fConf["fieldname"].' int(11) DEFAULT \'0\' NOT NULL,'; 01252 } 01253 break; 01254 case "rel": 01255 if ($fConf["conf_rel_type"]=="group") { 01256 $configL[]='"type" => "group", '.$this->WOPcomment('WOP:'.$WOP.'[conf_rel_type]'); 01257 $configL[]='"internal_type" => "db", '.$this->WOPcomment('WOP:'.$WOP.'[conf_rel_type]'); 01258 } else { 01259 $configL[]='"type" => "select", '.$this->WOPcomment('WOP:'.$WOP.'[conf_rel_type]'); 01260 } 01261 01262 if ($fConf["conf_rel_type"]!="group" && $fConf["conf_relations"]==1 && $fConf["conf_rel_dummyitem"]) { 01263 $configL[]=trim($this->wrapBody(' 01264 '.$this->WOPcomment('WOP:'.$WOP.'[conf_rel_dummyitem]').' 01265 "items" => Array ( 01266 ','Array("",0),',' 01267 ), 01268 ')); 01269 } 01270 01271 if (t3lib_div::inList("tt_content,fe_users,fe_groups",$fConf["conf_rel_table"])) $this->wizard->EM_CONF_presets["dependencies"][]="cms"; 01272 01273 if ($fConf["conf_rel_table"]=="_CUSTOM") { 01274 $fConf["conf_rel_table"]=$fConf["conf_custom_table_name"]?$fConf["conf_custom_table_name"]:"NO_TABLE_NAME_AVAILABLE"; 01275 } 01276 01277 if ($fConf["conf_rel_type"]=="group") { 01278 $configL[]='"allowed" => "'.($fConf["conf_rel_table"]!="_ALL"?$fConf["conf_rel_table"]:"*").'", '.$this->WOPcomment('WOP:'.$WOP.'[conf_rel_table]'); 01279 if ($fConf["conf_rel_table"]=="_ALL") $configL[]='"prepend_tname" => 1, '.$this->WOPcomment('WOP:'.$WOP.'[conf_rel_table]=_ALL'); 01280 } else { 01281 switch($fConf["conf_rel_type"]) { 01282 case "select_cur": 01283 $where="AND ".$fConf["conf_rel_table"].".pid=###CURRENT_PID### "; 01284 break; 01285 case "select_root": 01286 $where="AND ".$fConf["conf_rel_table"].".pid=###SITEROOT### "; 01287 break; 01288 case "select_storage": 01289 $where="AND ".$fConf["conf_rel_table"].".pid=###STORAGE_PID### "; 01290 break; 01291 default: 01292 $where=""; 01293 break; 01294 } 01295 $configL[]='"foreign_table" => "'.$fConf["conf_rel_table"].'", '.$this->WOPcomment('WOP:'.$WOP.'[conf_rel_table]'); 01296 $configL[]='"foreign_table_where" => "'.$where.'ORDER BY '.$fConf["conf_rel_table"].'.uid", '.$this->WOPcomment('WOP:'.$WOP.'[conf_rel_type]'); 01297 } 01298 $configL[]='"size" => '.t3lib_div::intInRange($fConf["conf_relations_selsize"],1,100).', '.$this->WOPcomment('WOP:'.$WOP.'[conf_relations_selsize]'); 01299 $configL[]='"minitems" => 0,'; 01300 $configL[]='"maxitems" => '.t3lib_div::intInRange($fConf["conf_relations"],1,100).', '.$this->WOPcomment('WOP:'.$WOP.'[conf_relations]'); 01301 01302 if ($fConf["conf_relations_mm"]) { 01303 $mmTableName=$id."_mm"; 01304 $configL[]='"MM" => "'.$mmTableName.'", '.$this->WOPcomment('WOP:'.$WOP.'[conf_relations_mm]'); 01305 $DBfields[] = $fConf["fieldname"].' int(11) DEFAULT \'0\' NOT NULL,'; 01306 01307 $createTable = $this->sPS(" 01308 # 01309 # Table structure for table '".$mmTableName."' 01310 # ".$this->WOPcomment('WOP:'.$WOP.'[conf_relations_mm]')." 01311 # 01312 CREATE TABLE ".$mmTableName." ( 01313 uid_local int(11) DEFAULT '0' NOT NULL, 01314 uid_foreign int(11) DEFAULT '0' NOT NULL, 01315 tablenames varchar(30) DEFAULT '' NOT NULL, 01316 sorting int(11) DEFAULT '0' NOT NULL, 01317 KEY uid_local (uid_local), 01318 KEY uid_foreign (uid_foreign) 01319 ); 01320 "); 01321 $this->wizard->ext_tables_sql[]=chr(10).$createTable.chr(10); 01322 } elseif (t3lib_div::intInRange($fConf["conf_relations"],1,100)>1 || $fConf["conf_rel_type"]=="group") { 01323 $DBfields[] = $fConf["fieldname"]." blob NOT NULL,"; 01324 } else { 01325 $DBfields[] = $fConf["fieldname"].' int(11) DEFAULT \'0\' NOT NULL,'; 01326 } 01327 01328 if ($fConf["conf_rel_type"]!="group") { 01329 $wTable=$fConf["conf_rel_table"]; 01330 $wizards =array(); 01331 if ($fConf["conf_wiz_addrec"]) { 01332 $wizards[] = trim($this->sPS(' 01333 '.$this->WOPcomment('WOP:'.$WOP.'[conf_wiz_addrec]').' 01334 "add" => Array( 01335 "type" => "script", 01336 "title" => "Create new record", 01337 "icon" => "add.gif", 01338 "params" => Array( 01339 "table"=>"'.$wTable.'", 01340 "pid" => "###CURRENT_PID###", 01341 "setValue" => "prepend" 01342 ), 01343 "script" => "wizard_add.php", 01344 ), 01345 ')); 01346 } 01347 if ($fConf["conf_wiz_listrec"]) { 01348 $wizards[] = trim($this->sPS(' 01349 '.$this->WOPcomment('WOP:'.$WOP.'[conf_wiz_listrec]').' 01350 "list" => Array( 01351 "type" => "script", 01352 "title" => "List", 01353 "icon" => "list.gif", 01354 "params" => Array( 01355 "table"=>"'.$wTable.'", 01356 "pid" => "###CURRENT_PID###", 01357 ), 01358 "script" => "wizard_list.php", 01359 ), 01360 ')); 01361 } 01362 if ($fConf["conf_wiz_editrec"]) { 01363 $wizards[] = trim($this->sPS(' 01364 '.$this->WOPcomment('WOP:'.$WOP.'[conf_wiz_editrec]').' 01365 "edit" => Array( 01366 "type" => "popup", 01367 "title" => "Edit", 01368 "script" => "wizard_edit.php", 01369 "popup_onlyOpenIfSelected" => 1, 01370 "icon" => "edit2.gif", 01371 "JSopenParams" => "height=350,width=580,status=0,menubar=0,scrollbars=1", 01372 ), 01373 ')); 01374 } 01375 if (count($wizards)) { 01376 $configL[]=trim($this->wrapBody(' 01377 "wizards" => Array( 01378 "_PADDING" => 2, 01379 "_VERTICAL" => 1, 01380 ',implode(chr(10),$wizards),' 01381 ), 01382 ')); 01383 } 01384 } 01385 break; 01386 case "files": 01387 $configL[]='"type" => "group",'; 01388 $configL[]='"internal_type" => "file",'; 01389 switch($fConf["conf_files_type"]) { 01390 case "images": 01391 $configL[]='"allowed" => $GLOBALS["TYPO3_CONF_VARS"]["GFX"]["imagefile_ext"], '.$this->WOPcomment('WOP:'.$WOP.'[conf_files_type]'); 01392 break; 01393 case "webimages": 01394 $configL[]='"allowed" => "gif,png,jpeg,jpg", '.$this->WOPcomment('WOP:'.$WOP.'[conf_files_type]'); 01395 break; 01396 case "all": 01397 $configL[]='"allowed" => "", '.$this->WOPcomment('WOP:'.$WOP.'[conf_files_type]'); 01398 $configL[]='"disallowed" => "php,php3", '.$this->WOPcomment('WOP:'.$WOP.'[conf_files_type]'); 01399 break; 01400 } 01401 $configL[]='"max_size" => '.t3lib_div::intInRange($fConf["conf_max_filesize"],1,1000,500).', '.$this->WOPcomment('WOP:'.$WOP.'[conf_max_filesize]'); 01402 01403 $this->wizard->EM_CONF_presets["uploadfolder"]=1; 01404 01405 $ulFolder = 'uploads/tx_'.str_replace("_","",$extKey); 01406 $configL[]='"uploadfolder" => "'.$ulFolder.'",'; 01407 if ($fConf["conf_files_thumbs"]) $configL[]='"show_thumbs" => 1, '.$this->WOPcomment('WOP:'.$WOP.'[conf_files_thumbs]'); 01408 01409 $configL[]='"size" => '.t3lib_div::intInRange($fConf["conf_files_selsize"],1,100).', '.$this->WOPcomment('WOP:'.$WOP.'[conf_files_selsize]'); 01410 $configL[]='"minitems" => 0,'; 01411 $configL[]='"maxitems" => '.t3lib_div::intInRange($fConf["conf_files"],1,100).', '.$this->WOPcomment('WOP:'.$WOP.'[conf_files]'); 01412 01413 $DBfields[] = $fConf["fieldname"]." blob NOT NULL,"; 01414 break; 01415 case "none": 01416 $DBfields[] = $fConf["fieldname"]." tinytext NOT NULL,"; 01417 $configL[]=trim($this->sPS(' 01418 "type" => "none", 01419 ')); 01420 break; 01421 case "passthrough": 01422 $DBfields[] = $fConf["fieldname"]." tinytext NOT NULL,"; 01423 $configL[]=trim($this->sPS(' 01424 "type" => "passthrough", 01425 ')); 01426 break; 01427 default: 01428 debug("Unknown type: ".(string)$fConf["type"]); 01429 break; 01430 } 01431 01432 if ($t=="passthrough") { 01433 $columns[$fConf["fieldname"]] = trim($this->wrapBody(' 01434 "'.$fConf["fieldname"].'" => Array ( '.$this->WOPcomment('WOP:'.$WOP.'[fieldname]').' 01435 "config" => Array ( 01436 ',implode(chr(10),$configL),' 01437 ) 01438 ), 01439 ',2)); 01440 } else { 01441 $columns[$fConf["fieldname"]] = trim($this->wrapBody(' 01442 "'.$fConf["fieldname"].'" => Array ( '.$this->WOPcomment('WOP:'.$WOP.'[fieldname]').' 01443 "exclude" => '.($fConf["excludeField"]?1:0).', '.$this->WOPcomment('WOP:'.$WOP.'[excludeField]').' 01444 "label" => "'.addslashes($this->getSplitLabels_reference($fConf,"title",$table.".".$fConf["fieldname"])).'", '.$this->WOPcomment('WOP:'.$WOP.'[title]').' 01445 "config" => Array ( 01446 ',implode(chr(10),$configL),' 01447 ) 01448 ), 01449 ',2)); 01450 } 01451 } 01452 function ulFolder($eKey) { 01453 return "uploads/tx_".str_replace("_","",$eKey)."/"; 01454 } 01455 01456 01457 } 01458 01459 // Include ux_class extension? 01460 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/kickstarter/sections/class.tx_kickstarter_section_fields.php']) { 01461 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/kickstarter/sections/class.tx_kickstarter_section_fields.php']); 01462 } 01463 01464 01465 ?>