00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00031 require_once(t3lib_extMgm::extPath("kickstarter")."sections/class.tx_kickstarter_section_fields.php");
00032
00033 class tx_kickstarter_section_tables extends tx_kickstarter_section_fields {
00034 var $sectionID = 'tables';
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 $table_suffixes=array();
00051 if (is_array($this->wizard->wizArray[$this->sectionID])) {
00052 foreach($this->wizard->wizArray[$this->sectionID] as $kk => $vv) {
00053 if (!strcmp($action[1],$kk)) {
00054 if (count($table_suffixes) && t3lib_div::inList(implode(',',$table_suffixes),$vv['tablename'].'Z')) {
00055 $piConf['tablename'].=$kk;
00056 }
00057 break;
00058 }
00059 $table_suffixes[]=$vv['tablename'].'Z';
00060 }
00061 }
00062
00063
00064
00065 $subContent='<strong>Tablename:</strong><BR>'.
00066 $this->returnName($this->wizard->extKey,'tables').'_'.$this->renderStringBox($ffPrefix.'[tablename]',$piConf['tablename']).
00067 '<BR><strong>Notice:</strong> Use characters a-z0-9 only. Only lowercase, no spaces.<BR>
00068 This becomes the table name in the database. ';
00069 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00070
00071
00072
00073 $subContent='<strong>Title of the table:</strong><BR>'.
00074 $this->renderStringBox_lang('title',$ffPrefix,$piConf);
00075 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00076
00077
00078
00079
00080 $c=array(0);
00081 $this->usedNames=array();
00082 if (is_array($piConf['fields'])) {
00083 $piConf['fields'] = $this->cleanFieldsAndDoCommands($piConf['fields'],$this->sectionID,$action[1]);
00084
00085
00086 $lines[]='<tr'.$this->bgCol(1).'><td><strong> Fields Overview </strong></td></tr>';
00087
00088 $lines[]='<tr><td></td></tr>';
00089
00090 $subContent ='<tr '.$this->bgCol(2).'>
00091 <td><strong>Name</strong></td>
00092 <td><strong>Title</strong></td>
00093 <td><strong>Type</strong></td>
00094 <td><strong>Exclude?</strong></td>
00095 <td><strong>Details</strong></td>
00096 </tr>';
00097 foreach($piConf['fields'] as $k=>$v) {
00098 $c[]=$k;
00099 $subContent .=$this->renderFieldOverview($ffPrefix.'[fields]['.$k.']',$v);
00100 }
00101 $lines[]='<tr'.$this->bgCol(3).'><td><table>'.$this->fw($subContent).'</table></td></tr>';
00102 }
00103
00104 $lines[]='<tr'.$this->bgCol(1).'><td><strong> Edit Fields </strong></td></tr>';
00105
00106 $lines[]='<tr><td></td></tr>';
00107
00108
00109
00110
00111
00112 $subContent = '';
00113 $subContent .= $this->renderCheckBox($ffPrefix.'[add_deleted]',$piConf['add_deleted'],1).'Add "Deleted" field '.$this->whatIsThis('Whole system: If a table has a deleted column, records are never really deleted, just "marked deleted" . Thus deleted records can actually be restored by clearing a deleted-flag later.\nNotice that all attached files are also not deleted from the server, so if you expect the table to hold some heavy size uploads, maybe you should not set this...') . '<BR>';
00114 $subContent .= $this->renderCheckBox($ffPrefix . '[add_hidden]', $piConf['add_hidden'],1) . 'Add "Hidden" flag ' . $this->whatIsThis('Frontend: The "Hidden" flag will prevent the record from being displayed on the frontend.') . '<BR>' . $this->resImg('t_flag_hidden.png','hspace=20','','<BR><BR>');
00115 $subContent .= $this->renderCheckBox($ffPrefix . '[add_starttime]', $piConf['add_starttime']) . 'Add "Starttime" ' . $this->whatIsThis('Frontend: If a "Starttime" is set, the record will not be visible on the website, before that date arrives.') . '<BR>' . $this->resImg('t_flag_starttime.png','hspace=20','','<BR><BR>');
00116 $subContent .= $this->renderCheckBox($ffPrefix . '[add_endtime]', $piConf['add_endtime']) . 'Add "Endtime" ' . $this->whatIsThis('Frontend: If a "Endtime" is set, the record will be hidden from that date and into the future.') . '<BR>' . $this->resImg('t_flag_endtime.png', 'hspace=20','','<BR><BR>');
00117 $subContent .= $this->renderCheckBox($ffPrefix . '[add_access]', $piConf['add_access']) . 'Add "Access group" ' . $this->whatIsThis('Frontend: If a frontend user group is set for a record, only frontend users that are members of that group will be able to see the record.') . '<BR>' . $this->resImg('t_flag_access.png', 'hspace=20','','<BR><BR>');
00118 $lines[] = '<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00119
00120
00121 $optValues = array(
00122 'crdate' => '[crdate]',
00123 'cruser_id' => '[cruser_id]',
00124 'tstamp' => '[tstamp]',
00125 );
00126 $subContent = '';
00127 $subContent.= $this->renderCheckBox($ffPrefix.'[localization]',$piConf['localization']).'Enabled localization features'.$this->whatIsThis('If set, the records will have a selector box for language and a reference field which can point back to the original default translation for the record. These features are part of the internal framework for localization.').'<BR>';
00128 $subContent.= $this->renderCheckBox($ffPrefix.'[versioning]',$piConf['versioning']).'Enable versioning '.$this->whatIsThis('If set, you will be able to versionize records from this table. Highly recommended if the records are passed around in a workflow.').'<BR>';
00129 $subContent.= $this->renderCheckBox($ffPrefix.'[sorting]',$piConf['sorting']).'Manual ordering of records '.$this->whatIsThis('If set, the records can be moved up and down relative to each other in the backend. Just like Content Elements. Otherwise they are sorted automatically by any field you specify').'<BR>';
00130 $subContent.= $this->textSetup('','If "Manual ordering" is not set, order the table by this field:<BR>'.
00131 $this->renderSelectBox($ffPrefix.'[sorting_field]',$piConf['sorting_field'],$this->currentFields($optValues,$piConf['fields'])).'<BR>'.
00132 $this->renderCheckBox($ffPrefix.'[sorting_desc]',$piConf['sorting_desc']).' Descending');
00133 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00134
00135
00136 $optValues = array(
00137 '0' => '[none]',
00138 );
00139 $subContent = '<strong>"Type-field", if any:<BR></strong>'.
00140 $this->renderSelectBox($ffPrefix.'[type_field]',$piConf['type_field'],$this->currentFields($optValues,$piConf['fields'])).
00141 $this->whatIsThis('A "type-field" is the field in the table which determines how the form is rendered in the backend, eg. which fields are shown under which circumstances.\nFor instance the Content Element table "tt_content" has a type-field, CType. The value of this field determines if the editing form shows the bodytext field as is the case when the type is "Text" or if also the image-field should be shown as when the type is "Text w/Image"');
00142 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00143
00144
00145 $optValues = array(
00146 '0' => '[none]',
00147 );
00148 $subContent = '<strong>Label-field:<BR></strong>'.
00149 $this->renderSelectBox($ffPrefix.'[header_field]',$piConf['header_field'],$this->currentFields($optValues,$piConf['fields'])).
00150 $this->whatIsThis('A "label-field" is the field used as record title in the backend.');
00151 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00152
00153
00154 $optValues = array(
00155 'default.gif' => 'Default (white)',
00156 'default_black.gif' => 'Black',
00157 'default_gray4.gif' => 'Gray',
00158 'default_blue.gif' => 'Blue',
00159 'default_green.gif' => 'Green',
00160 'default_red.gif' => 'Red',
00161 'default_yellow.gif' => 'Yellow',
00162 'default_purple.gif' => 'Purple',
00163 );
00164
00165 $subContent= $this->renderSelectBox($ffPrefix.'[defIcon]',$piConf['defIcon'],$optValues).' Default icon '.$this->whatIsThis('All tables have at least one associated icon. Select which default icon you wish. You can always substitute the file with another.');
00166 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00167
00168
00169 $subContent = '<strong>Allowed on pages:<BR></strong>'.
00170 $this->renderCheckBox($ffPrefix.'[allow_on_pages]',$piConf['allow_on_pages']).' Allow records from this table to be created on regular pages.';
00171 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00172
00173
00174 $subContent = '<strong>Allowed in "Insert Records" field in content elements:<BR></strong>'.
00175 $this->renderCheckBox($ffPrefix.'[allow_ce_insert_records]',$piConf['allow_ce_insert_records']).' Allow records from this table to be linked to by content elements.';
00176 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00177
00178
00179 $subContent = '<strong>Add "Save and new" button in forms:<BR></strong>'.
00180 $this->renderCheckBox($ffPrefix.'[save_and_new]',$piConf['save_and_new']).' Will add an additional save-button to forms by which you can save the item and instantly create the next.';
00181 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00182
00183
00184 $subContent = '<strong>Notice on fieldnames:<BR></strong>'.
00185 'Don\'t use fieldnames from this list of reserved names/words: <BR>
00186 <blockquote><em>' . implode(', ',explode(',',$this->wizard->reservedTypo3Fields . ',' . $this->wizard->mysql_reservedFields)).'</em></blockquote>';
00187 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00188
00189
00190
00191
00192 $selPresetBox=$this->presetBox($piConf["fields"]);
00193
00194
00195 $c=array(0);
00196 $this->usedNames=array();
00197 if (is_array($piConf['fields'])) {
00198
00199
00200 foreach($piConf['fields'] as $k=>$v) {
00201 $c[]=$k;
00202 $subContent=$this->renderField($ffPrefix.'[fields]['.$k.']',$v);
00203 $lines[]='<tr'.$this->bgCol(2).'><td>'.$this->fw('<strong>FIELD:</strong> <em>'.$v['fieldname'].'</em>').'</td></tr>';
00204 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00205 }
00206 }
00207
00208
00209 $k=max($c)+1;
00210 $v=array();
00211 $lines[]='<tr'.$this->bgCol(2).'><td>'.$this->fw('<strong>NEW FIELD:</strong>').'</td></tr>';
00212 $subContent=$this->renderField($ffPrefix.'[fields]['.$k.']',$v,1);
00213 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw($subContent).'</td></tr>';
00214
00215
00216 $lines[]='<tr'.$this->bgCol(3).'><td>'.$this->fw('<BR><BR>Load preset fields: <BR>'.$selPresetBox).'</td></tr>';
00217 }
00218
00219
00220 if(is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['kickstarter']['add_cat_tables'])) {
00221 foreach($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['kickstarter']['add_cat_tables'] as $_funcRef) {
00222 $lines = t3lib_div::callUserFunction($_funcRef, $lines, $this);
00223 }
00224 }
00225
00226 $content = '<table border=0 cellpadding=2 cellspacing=2>'.implode('',$lines).'</table>';
00227
00228 return $content;
00229 }
00230
00231 function currentFields($addFields,$fArr) {
00232 if (is_array($fArr)) {
00233 foreach($fArr as $k=>$v) {
00234 if ($v['type'] && trim($v['fieldname'])) {
00235 $addFields[trim($v['fieldname'])]=$v['fieldname'].': '.$v['title'];
00236 }
00237 }
00238 }
00239 return $addFields;
00240 }
00241
00245 function renderFieldOverview($prefix,$fConf,$dontRemove=0) {
00246
00247 $optTypes = array(
00248 '' => '',
00249 'input' => 'String input',
00250 'input+' => 'String input, advanced',
00251 'textarea' => 'Text area',
00252 'textarea_rte' => 'Text area with RTE',
00253 'textarea_nowrap' => 'Text area, No wrapping',
00254 'check' => 'Checkbox, single',
00255 'check_4' => 'Checkbox, 4 boxes in a row',
00256 'check_10' => 'Checkbox, 10 boxes in two rows (max)',
00257 'link' => 'Link',
00258 'date' => 'Date',
00259 'datetime' => 'Date and time',
00260 'integer' => 'Integer, 10-1000',
00261 'select' => 'Selectorbox',
00262 'radio' => 'Radio buttons',
00263 'rel' => 'Database relation',
00264 'files' => 'Files',
00265 );
00266 $optEval = array(
00267 '' => '',
00268 'date' => 'Date (day-month-year)',
00269 'time' => 'Time (hours, minutes)',
00270 'timesec' => 'Time + seconds',
00271 'datetime' => 'Date + Time',
00272 'year' => 'Year',
00273 'int' => 'Integer',
00274 'int+' => 'Integer 0-1000',
00275 'double2' => 'Floating point, x.xx',
00276 'alphanum' => 'Alphanumeric only',
00277 'upper' => 'Upper case',
00278 'lower' => 'Lower case',
00279 );
00280 $optRte = array(
00281 'tt_content' => 'Transform like "Bodytext"',
00282 'basic' => 'Typical (based on CSS)',
00283 'moderate' => 'Transform images / links',
00284 'none' => 'No transform',
00285 'custom' => 'Custom transform'
00286 );
00287
00288 switch($fConf['type']) {
00289 case 'rel':
00290 if ($fConf['conf_rel_table'] == '_CUSTOM') {
00291 $details .= $fConf['conf_custom_table_name'];
00292 } else {
00293 $details .= $fConf['conf_rel_table'];
00294 }
00295 break;
00296 case 'input+':
00297 if($fConf['conf_varchar']) $details[] = 'varchar';
00298 if($fConf['conf_unique']) $details[] = ($fConf['conf_unique'] == 'L') ? 'unique (page)': 'unique (site)';
00299 if($fConf['conf_eval']) $details[] = $optEval[$fConf['conf_eval']];
00300 $details = implode(', ', (array) $details);
00301 break;
00302 case 'check_10':
00303 case 'check_4':
00304 $details = ($fConf['conf_numberBoxes'] ? $fConf['conf_numberBoxes'] : '4') . ' checkboxes';
00305 break;
00306 case 'radio':
00307 if($fConf['conf_select_items']) $details = $fConf['conf_select_items'] . ' options';
00308 break;
00309 case 'select':
00310 if($fConf['conf_select_items']) $details[] = $fConf['conf_select_items'] . ' options';
00311 if($fConf['conf_select_pro']) $details[] = 'preprocessing';
00312 $details = implode(', ', (array) $details);
00313 break;
00314 case 'textarea_rte':
00315 if($fConf['conf_rte']) $details = $optRte[$fConf['conf_rte']];
00316 break;
00317 case 'files':
00318 $details[] = $fConf['conf_files_type'];
00319 $details[] = $fConf['conf_files'] . ' files';
00320 $details[] = $fConf['conf_max_filesize'] . ' kB';
00321 $details = implode(', ', (array) $details);
00322 break;
00323 }
00324 return sprintf('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>',
00325 $fConf['fieldname'],
00326 $fConf['title'],
00327 $optTypes[$fConf['type']],
00328 $fConf['exludeField'] ? 'Yes' : '',
00329 $details
00330 );
00331 }
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00361 function render_extPart($k,$config,$extKey) {
00362 $WOP='[tables]['.$k.']';
00363 $tableName=$config['tablename'];
00364 $tableName = $this->returnName($extKey,'tables',$tableName);
00365
00366 $DBfields=array();
00367 $columns=array();
00368 $ctrl=array();
00369 $enFields=array();
00370
00371
00372 $ctrl[] = trim($this->sPS('
00373 "title" => "' . $this->getSplitLabels_reference($config,'title',$tableName) . '", ' . $this->WOPcomment('WOP:'.$WOP.'[title]').'
00374 "label" => "' . ($config["header_field"]?$config['header_field']:'uid') . '", '.$this->WOPcomment('WOP:'.$WOP.'[header_field]').'
00375 "tstamp" => "tstamp",
00376 "crdate" => "crdate",
00377 "cruser_id" => "cruser_id",
00378 ',0));
00379 $DBfields[] = trim($this->sPS('
00380 uid int(11) NOT NULL auto_increment,
00381 pid int(11) DEFAULT \'0\' NOT NULL,
00382 tstamp int(11) DEFAULT \'0\' NOT NULL,
00383 crdate int(11) DEFAULT \'0\' NOT NULL,
00384 cruser_id int(11) DEFAULT \'0\' NOT NULL,
00385 ',0));
00386
00387 if ($config['type_field']) {
00388 $ctrl[] = '"type" => "'.$config["type_field"].'", '.$this->WOPcomment('WOP:'.$WOP.'[type_field]');
00389 }
00390 if ($config['versioning']) {
00391 $ctrl[] = '"versioning" => "1", ' . $this->WOPcomment('WOP:'.$WOP.'[versioning]');
00392 $DBfields[] = 't3ver_oid int(11) DEFAULT \'0\' NOT NULL,';
00393 $DBfields[] = 't3ver_id int(11) DEFAULT \'0\' NOT NULL,';
00394 $DBfields[] = 't3ver_label varchar(30) DEFAULT \'\' NOT NULL,';
00395 }
00396 if ($config["localization"]) {
00397 $ctrl[] = '"languageField" => "sys_language_uid", '.$this->WOPcomment('WOP:'.$WOP.'[localization]');
00398 $ctrl[] = '"transOrigPointerField" => "l18n_parent", '.$this->WOPcomment('WOP:'.$WOP.'[localization]');
00399 $ctrl[] = '"transOrigDiffSourceField" => "l18n_diffsource", '.$this->WOPcomment('WOP:'.$WOP.'[localization]');
00400
00401 $DBfields[] = 'sys_language_uid int(11) DEFAULT \'0\' NOT NULL,';
00402 $DBfields[] = 'l18n_parent int(11) DEFAULT \'0\' NOT NULL,';
00403 $DBfields[] = 'l18n_diffsource mediumblob NOT NULL,';
00404
00405 $columns['sys_language_uid'] = trim($this->sPS("
00406 'sys_language_uid' => Array ( ".$this->WOPcomment('WOP:'.$WOP.'[localization]')."
00407 'exclude' => 1,
00408 'label' => 'LLL:EXT:lang/locallang_general.php:LGL.language',
00409 'config' => Array (
00410 'type' => 'select',
00411 'foreign_table' => 'sys_language',
00412 'foreign_table_where' => 'ORDER BY sys_language.title',
00413 'items' => Array(
00414 Array('LLL:EXT:lang/locallang_general.php:LGL.allLanguages',-1),
00415 Array('LLL:EXT:lang/locallang_general.php:LGL.default_value',0)
00416 )
00417 )
00418 ),
00419 "));
00420
00421 $columns['l18n_parent'] = trim($this->sPS("
00422 'l18n_parent' => Array ( ".$this->WOPcomment('WOP:'.$WOP.'[localization]')."
00423 'displayCond' => 'FIELD:sys_language_uid:>:0',
00424 'exclude' => 1,
00425 'label' => 'LLL:EXT:lang/locallang_general.php:LGL.l18n_parent',
00426 'config' => Array (
00427 'type' => 'select',
00428 'items' => Array (
00429 Array('', 0),
00430 ),
00431 'foreign_table' => '".$tableName."',
00432 'foreign_table_where' => 'AND ".$tableName.".pid=###CURRENT_PID### AND ".$tableName.".sys_language_uid IN (-1,0)',
00433 )
00434 ),
00435 "));
00436
00437 $columns["l18n_diffsource"] = trim($this->sPS("
00438 'l18n_diffsource' => Array ( ".$this->WOPcomment('WOP:'.$WOP.'[localization]')."
00439 'config' => Array (
00440 'type' => 'passthrough'
00441 )
00442 ),
00443 "));
00444 }
00445 if ($config["sorting"]) {
00446 $ctrl[] = '"sortby" => "sorting", '.$this->WOPcomment('WOP:'.$WOP.'[sorting]');
00447 $DBfields[] = "sorting int(10) DEFAULT '0' NOT NULL,";
00448 } else {
00449 $ctrl[] = '"default_sortby" => "ORDER BY '.trim($config["sorting_field"].' '.($config["sorting_desc"]?"DESC":"")).'", '.$this->WOPcomment('WOP:'.$WOP.'[sorting] / '.$WOP.'[sorting_field] / '.$WOP.'[sorting_desc]');
00450 }
00451 if ($config["add_deleted"]) {
00452 $ctrl[] = '"delete" => "deleted", '.$this->WOPcomment('WOP:'.$WOP.'[add_deleted]');
00453 $DBfields[] = "deleted tinyint(4) DEFAULT '0' NOT NULL,";
00454 }
00455 if ($config["add_hidden"]) {
00456 $enFields[] = '"disabled" => "hidden", '.$this->WOPcomment('WOP:'.$WOP.'[add_hidden]');
00457 $DBfields[] = "hidden tinyint(4) DEFAULT '0' NOT NULL,";
00458 $columns["hidden"] = trim($this->sPS('
00459 "hidden" => Array ( '.$this->WOPcomment('WOP:'.$WOP.'[add_hidden]').'
00460 "exclude" => 1,
00461 "label" => "LLL:EXT:lang/locallang_general.php:LGL.hidden",
00462 "config" => Array (
00463 "type" => "check",
00464 "default" => "0"
00465 )
00466 ),
00467 '));
00468 }
00469 if ($config["add_starttime"]) {
00470 $enFields[] = '"starttime" => "starttime", '.$this->WOPcomment('WOP:'.$WOP.'[add_starttime]');
00471 $DBfields[] = "starttime int(11) DEFAULT '0' NOT NULL,";
00472 $columns["starttime"] = trim($this->sPS('
00473 "starttime" => Array ( '.$this->WOPcomment('WOP:'.$WOP.'[add_starttime]').'
00474 "exclude" => 1,
00475 "label" => "LLL:EXT:lang/locallang_general.php:LGL.starttime",
00476 "config" => Array (
00477 "type" => "input",
00478 "size" => "8",
00479 "max" => "20",
00480 "eval" => "date",
00481 "default" => "0",
00482 "checkbox" => "0"
00483 )
00484 ),
00485 '));
00486 }
00487 if ($config["add_endtime"]) {
00488 $enFields[] = '"endtime" => "endtime", '.$this->WOPcomment('WOP:'.$WOP.'[add_endtime]');
00489 $DBfields[] = "endtime int(11) DEFAULT '0' NOT NULL,";
00490 $columns["endtime"] = trim($this->sPS('
00491 "endtime" => Array ( '.$this->WOPcomment('WOP:'.$WOP.'[add_endtime]').'
00492 "exclude" => 1,
00493 "label" => "LLL:EXT:lang/locallang_general.php:LGL.endtime",
00494 "config" => Array (
00495 "type" => "input",
00496 "size" => "8",
00497 "max" => "20",
00498 "eval" => "date",
00499 "checkbox" => "0",
00500 "default" => "0",
00501 "range" => Array (
00502 "upper" => mktime(0,0,0,12,31,2020),
00503 "lower" => mktime(0,0,0,date("m")-1,date("d"),date("Y"))
00504 )
00505 )
00506 ),
00507 '));
00508 }
00509 if ($config["add_access"]) {
00510 $enFields[] = '"fe_group" => "fe_group", '.$this->WOPcomment('WOP:'.$WOP.'[add_access]');
00511 $DBfields[] = "fe_group int(11) DEFAULT '0' NOT NULL,";
00512 $columns["fe_group"] = trim($this->sPS('
00513 "fe_group" => Array ( '.$this->WOPcomment('WOP:'.$WOP.'[add_access]').'
00514 "exclude" => 1,
00515 "label" => "LLL:EXT:lang/locallang_general.php:LGL.fe_group",
00516 "config" => Array (
00517 "type" => "select",
00518 "items" => Array (
00519 Array("", 0),
00520 Array("LLL:EXT:lang/locallang_general.php:LGL.hide_at_login", -1),
00521 Array("LLL:EXT:lang/locallang_general.php:LGL.any_login", -2),
00522 Array("LLL:EXT:lang/locallang_general.php:LGL.usergroups", "--div--")
00523 ),
00524 "foreign_table" => "fe_groups"
00525 )
00526 ),
00527 '));
00528 }
00529
00530 if (is_array($enFields) && count($enFields)) {
00531 $ctrl[]=trim($this->wrapBody('
00532 "enablecolumns" => Array ( '.$this->WOPcomment('WOP:'.$WOP.'[add_hidden] / '.$WOP.'[add_starttime] / '.$WOP.'[add_endtime] / '.$WOP.'[add_access]').'
00533 ',implode(chr(10),$enFields),'
00534 ),
00535 '));
00536 }
00537
00538 $ctrl[]= '"dynamicConfigFile" => t3lib_extMgm::extPath($_EXTKEY)."tca.php",';
00539 $ctrl[]= '"iconfile" => t3lib_extMgm::extRelPath($_EXTKEY)."icon_'.$tableName.'.gif",';
00540
00541 if ($config["allow_on_pages"]) {
00542 $this->wizard->ext_tables[]=$this->sPS('
00543 '.$this->WOPcomment('WOP:'.$WOP.'[allow_on_pages]').'
00544 t3lib_extMgm::allowTableOnStandardPages("'.$tableName.'");
00545 ');
00546 }
00547 if ($config["allow_ce_insert_records"]) {
00548 $this->wizard->ext_tables[]=$this->sPS('
00549 '.$this->WOPcomment('WOP:'.$WOP.'[allow_ce_insert_records]').'
00550 t3lib_extMgm::addToInsertRecords("'.$tableName.'");
00551 ');
00552 }
00553 if ($config["save_and_new"]) {
00554 $this->wizard->ext_localconf[]=trim($this->wrapBody("
00555 t3lib_extMgm::addUserTSConfig('
00556 ","options.saveDocNew.".$tableName."=1","
00557 ');
00558 "));
00559 }
00560
00561 if (is_array($config["fields"])) {
00562 reset($config["fields"]);
00563 while(list($i,$fConf)=each($config["fields"])) {
00564 $this->makeFieldTCA($DBfields,$columns,$fConf,$WOP."[fields][".$i."]",$tableName,$extKey);
00565 }
00566 }
00567
00568
00569
00570
00571 $DBfields[]=$this->sPS('
00572 PRIMARY KEY (uid),
00573 KEY parent (pid)
00574 ');
00575 $createTable = $this->wrapBody('
00576 #
00577 # Table structure for table \''.$tableName.'\'
00578 #
00579 CREATE TABLE '.$tableName.' (
00580 ', implode(chr(10),$DBfields), '
00581 );
00582 ');
00583 $this->wizard->ext_tables_sql[]=chr(10).$createTable.chr(10);
00584
00585
00586 $tca_file="";
00587 list($typeList,$palList) = $this->implodeColumns($columns);
00588 $tca_file.=$this->wrapBody('
00589 $TCA["'.$tableName.'"] = Array (
00590 "ctrl" => $TCA["'.$tableName.'"]["ctrl"],
00591 "interface" => Array (
00592 "showRecordFieldList" => "'.implode(",",array_keys($columns)).'"
00593 ),
00594 "feInterface" => $TCA["'.$tableName.'"]["feInterface"],
00595 "columns" => Array (
00596 ', trim(implode(chr(10),$columns)),'
00597 ),
00598 "types" => Array (
00599 "0" => Array("showitem" => "'.$typeList.'")
00600 ),
00601 "palettes" => Array (
00602 "1" => Array("showitem" => "'.$palList.'")
00603 )
00604 );
00605 ',2);
00606 $this->wizard->ext_tca[]=chr(10).$tca_file.chr(10);
00607
00608
00609 $this->wizard->ext_tables[]=$this->wrapBody('
00610 $TCA["'.$tableName.'"] = Array (
00611 "ctrl" => Array (
00612 ', implode(chr(10),$ctrl),'
00613 ),
00614 "feInterface" => Array (
00615 "fe_admin_fieldList" => "'.implode(", ",array_keys($columns)).'",
00616 )
00617 );
00618 ',2);
00619
00620
00621
00622 $this->addFileToFileArray($pathSuffix."icon_".$tableName.".gif",t3lib_div::getUrl(t3lib_extMgm::extPath("kickstarter")."res/".$config["defIcon"]));
00623
00624 }
00625
00626 }
00627
00628
00629
00630
00631 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/kickstarter/sections/class.tx_kickstarter_section_tables.php']) {
00632 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/kickstarter/sections/class.tx_kickstarter_section_tables.php']);
00633 }
00634
00635 ?>