コード例 #1
0
    /**
     * 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';
    }