/** * Initialises the Class * * @return void */ function init() { // Setting GET vars (used in frameset script): $this->P = t3lib_div::_GP('P', 1); //data[layouts][2][config] $this->formName = $this->P['formName']; $this->fieldName = $this->P['itemName']; $this->md5ID = $this->P['md5ID']; $uid = intval($this->P['uid']); // Initialize document object: $this->doc = t3lib_div::makeInstance('noDoc'); $this->doc->backPath = $GLOBALS['BACK_PATH']; $pageRenderer = $this->doc->getPageRenderer(); $pageRenderer->addJsFile($GLOBALS['BACK_PATH'] . TYPO3_MOD_PATH . 'res/grideditor.js'); $pageRenderer->addJsInlineCode('storeData', ' function storeData(data) { if (parent.opener && parent.opener.document && parent.opener.document.' . $this->formName . ' && parent.opener.document.' . $this->formName . '["' . $this->fieldName . '"]) { parent.opener.document.' . $this->formName . '["' . $this->fieldName . '"].value = data; parent.opener.TBE_EDITOR.fieldChanged("backend_layout","' . $uid . '","config","data[backend_layout][' . $uid . '][config]"); } } '); $languageLabels = array('save' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_labelSave', 1), 'title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_windowTitle', 1), 'name' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_labelName', 1), 'column' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_labelColumn', 1), 'editCell' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_editCell', 1), 'mergeCell' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_mergeCell', 1), 'splitCell' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_splitCell', 1), 'name' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_name', 1), 'column' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_column', 1), 'notSet' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_notSet', 1), 'nameHelp' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_nameHelp', 1), 'columnHelp' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_wizards.xml:grid_columnHelp', 1)); $pageRenderer->addInlineLanguageLabelArray($languageLabels); // select record $record = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows($this->P['field'], $this->P['table'], 'uid=' . intval($this->P['uid'])); if (trim($record[0][$this->P['field']]) == '') { $t3GridData = "[[{colspan:1,rowspan:1,spanned:false,name:''}]]"; $colCount = 1; $rowCount = 1; } else { // load TS parser $parser = t3lib_div::makeInstance('t3lib_TSparser'); $parser->parse($record[0][$this->P['field']]); $data = $parser->setup['backend_layout.']; $t3GridData = '['; $colCount = $data['colCount']; $rowCount = $data['rowCount']; $dataRows = $data['rows.']; $spannedMatrix = array(); for ($i = 1; $i <= $rowCount; $i++) { $rowString = ''; for ($j = 1; $j <= $colCount; $j++) { if ($j == 1) { $row = array_shift($dataRows); $columns = $row['columns.']; $rowString = '['; $cells = array(); } if (!$spannedMatrix[$i][$j]) { if (is_array($columns) && count($columns)) { $column = array_shift($columns); $cellString = '{'; $cellData = array(); if (isset($column['colspan'])) { $cellData[] = 'colspan:' . intval($column['colspan']); if (isset($column['rowspan'])) { for ($spanRow = 0; $spanRow < intval($column['rowspan']); $spanRow++) { for ($spanColumn = 0; $spanColumn < intval($column['colspan']); $spanColumn++) { $spannedMatrix[$i + $spanRow][$j + $spanColumn] = 1; } } } else { for ($spanColumn = 0; $spanColumn < intval($column['colspan']); $spanColumn++) { $spannedMatrix[$i][$j + $spanColumn] = 1; } } } else { $cellData[] = 'colspan:1'; if (isset($column['rowspan'])) { for ($spanRow = 0; $spanRow < intval($column['rowspan']); $spanRow++) { $spannedMatrix[$i + $spanRow][$j] = 1; } } } if (isset($column['rowspan'])) { $cellData[] = 'rowspan:' . intval($column['rowspan']); } else { $cellData[] = 'rowspan:1'; } if (isset($column['name'])) { $cellData[] = 'name:\'' . $column['name'] . '\''; } if (isset($column['colPos'])) { $cellData[] = 'column:' . $column['colPos']; } $cellString .= implode(',', $cellData) . '}'; $cells[] = $cellString; } } else { $cells[] = '{colspan:1,rowspan:1,spanned:1}'; } } $rowString .= implode(',', $cells); if ($rowString) { $rowString .= ']'; } $rows[] = $rowString; ksort($spannedMatrix[$i]); } $t3GridData .= implode(',', $rows) . ']'; } $pageRenderer->enableExtJSQuickTips(); $pageRenderer->addExtOnReadyCode(' t3Grid = new TYPO3.Backend.t3Grid({ data: ' . $t3GridData . ', colCount: ' . $colCount . ', rowCount: ' . $rowCount . ', targetElement: \'editor\' }); t3Grid.drawTable(); '); $this->doc->styleSheetFile_post = TYPO3_MOD_PATH . 'res/grideditor.css'; $this->doc->styleSheetFile2 = 'sysext/t3skin/stylesheets/extjs/xtheme-t3skin.css'; }