55 $GLOBALS[
'LANG']->includeLLFile(
'EXT:lang/locallang_wizards.xlf');
59 $this->formName = $this->P[
'formName'];
60 $this->fieldName = $this->P[
'itemName'];
62 if (!$this->P[
'hmac'] || ($this->P[
'hmac'] !== $hmac_validate)) {
63 throw new \InvalidArgumentException(
'Hmac Validation failed for backend_layout wizard', 1385811397);
65 $this->md5ID = $this->P[
'md5ID'];
66 $uid = (int)$this->P[
'uid'];
69 $this->doc->backPath =
$GLOBALS[
'BACK_PATH'];
70 $pageRenderer = $this->doc->getPageRenderer();
72 $pageRenderer->addJsInlineCode(
'storeData',
' 73 function storeData(data) { 74 if (parent.opener && parent.opener.document && parent.opener.document.' . $this->formName .
' && parent.opener.document.' . $this->formName .
'[' .
GeneralUtility::quoteJSvalue($this->fieldName) .
']) { 76 parent.opener.TBE_EDITOR.fieldChanged("backend_layout","' .
$uid .
'","config","data[backend_layout][' .
$uid .
'][config]"); 80 $languageLabels = array(
81 'save' =>
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_wizards.xlf:grid_labelSave', TRUE),
82 'title' =>
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_wizards.xlf:grid_windowTitle', TRUE),
83 'editCell' =>
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_wizards.xlf:grid_editCell', TRUE),
84 'mergeCell' =>
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_wizards.xlf:grid_mergeCell', TRUE),
85 'splitCell' =>
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_wizards.xlf:grid_splitCell', TRUE),
86 'name' =>
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_wizards.xlf:grid_name', TRUE),
87 'column' =>
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_wizards.xlf:grid_column', TRUE),
88 'notSet' =>
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_wizards.xlf:grid_notSet', TRUE),
89 'nameHelp' =>
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_wizards.xlf:grid_nameHelp', TRUE),
90 'columnHelp' =>
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_wizards.xlf:grid_columnHelp', TRUE)
92 $pageRenderer->addInlineLanguageLabelArray($languageLabels);
94 $record =
$GLOBALS[
'TYPO3_DB']->exec_SELECTgetRows($this->P[
'field'], $this->P[
'table'],
'uid=' . (
int)$this->P[
'uid']);
95 if (trim($record[0][$this->P[
'field']]) ==
'') {
96 $rows = array(array(array(
'colspan' => 1,
'rowspan' => 1,
'spanned' => FALSE,
'name' =>
'')));
102 $parser->parse($record[0][$this->P[
'field']]);
103 $data = $parser->setup[
'backend_layout.'];
105 $colCount = $data[
'colCount'];
106 $rowCount = $data[
'rowCount'];
107 $dataRows = $data[
'rows.'];
108 $spannedMatrix = array();
109 for ($i = 1; $i <= $rowCount; $i++) {
111 $row = array_shift($dataRows);
112 $columns = $row[
'columns.'];
113 for ($j = 1; $j <= $colCount; $j++) {
115 if (!$spannedMatrix[$i][$j]) {
116 if (is_array($columns) && count($columns)) {
117 $column = array_shift($columns);
118 if (isset($column[
'colspan'])) {
119 $cellData[
'colspan'] = (int)$column[
'colspan'];
120 $columnColSpan = (int)$column[
'colspan'];
121 if (isset($column[
'rowspan'])) {
122 $columnRowSpan = (int)$column[
'rowspan'];
123 for ($spanRow = 0; $spanRow < $columnRowSpan; $spanRow++) {
124 for ($spanColumn = 0; $spanColumn < $columnColSpan; $spanColumn++) {
125 $spannedMatrix[$i + $spanRow][$j + $spanColumn] = 1;
129 for ($spanColumn = 0; $spanColumn < $columnColSpan; $spanColumn++) {
130 $spannedMatrix[$i][$j + $spanColumn] = 1;
134 $cellData[
'colspan'] = 1;
135 if (isset($column[
'rowspan'])) {
136 $columnRowSpan = (int)$column[
'rowspan'];
137 for ($spanRow = 0; $spanRow < $columnRowSpan; $spanRow++) {
138 $spannedMatrix[$i + $spanRow][$j] = 1;
142 if (isset($column[
'rowspan'])) {
143 $cellData[
'rowspan'] = (int)$column[
'rowspan'];
145 $cellData[
'rowspan'] = 1;
147 if (isset($column[
'name'])) {
148 $cellData[
'name'] = $column[
'name'];
150 if (isset($column[
'colPos'])) {
151 $cellData[
'column'] = (int)$column[
'colPos'];
155 $cellData = array(
'colspan' => 1,
'rowspan' => 1,
'spanned' => 1);
157 $cells[] = $cellData;
160 if (!empty($spannedMatrix[$i]) && is_array($spannedMatrix[$i])) {
161 ksort($spannedMatrix[$i]);
165 $pageRenderer->enableExtJSQuickTips();
166 $pageRenderer->addExtOnReadyCode(
' 167 t3Grid = new TYPO3.Backend.t3Grid({ 168 data: ' . json_encode($rows, JSON_HEX_QUOT | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS) .
', 169 colCount: ' . (
int)$colCount .
', 170 rowCount: ' . (
int)$rowCount .
', 171 targetElement: \'editor\' 185 $content =
'<a href="#" title="' .
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_core.xlf:rm.saveDoc', TRUE) .
'" onclick="storeData(t3Grid.export2LayoutRecord());return true;">' .
IconUtility::getSpriteIcon(
'actions-document-save') .
'</a>';
186 $content .=
'<a href="#" title="' .
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_core.xlf:rm.saveCloseDoc', TRUE) .
'" onclick="storeData(t3Grid.export2LayoutRecord());window.close();return true;">' .
IconUtility::getSpriteIcon(
'actions-document-save-close') .
'</a>';
187 $content .=
'<a href="#" title="' .
$GLOBALS[
'LANG']->sL(
'LLL:EXT:lang/locallang_core.xlf:rm.closeDoc', TRUE) .
'" onclick="window.close();return true;">' .
IconUtility::getSpriteIcon(
'actions-document-close') .
'</a>';
190 <table border="0" width="90%" height="90%" id="outer_container"> 192 <td class="editor_cell"> 196 <td width="20" valign="center"> 197 <a class="addCol" href="#" title="' .
$GLOBALS[
'LANG']->getLL(
'grid_addColumn') .
'" onclick="t3Grid.addColumn(); t3Grid.drawTable(\'editor\');"> 198 <img src="' . $resourcePath .
'res/t3grid-tableright.png" border="0" /> 200 <a class="removeCol" href="#" title="' .
$GLOBALS[
'LANG']->getLL(
'grid_removeColumn') .
'" onclick="t3Grid.removeColumn(); t3Grid.drawTable(\'editor\');"> 201 <img src="' . $resourcePath .
'res/t3grid-tableleft.png" border="0" /> 206 <td colspan="2" height="20" align="center"> 207 <a class="addCol" href="#" title="' .
$GLOBALS[
'LANG']->getLL(
'grid_addRow') .
'" onclick="t3Grid.addRow(); t3Grid.drawTable(\'editor\');"> 208 <img src="' . $resourcePath .
'res/t3grid-tabledown.png" border="0" /> 210 <a class="removeCol" href="#" title="' .
$GLOBALS[
'LANG']->getLL(
'grid_removeRow') .
'" onclick="t3Grid.removeRow(); t3Grid.drawTable(\'editor\');"> 211 <img src="' . $resourcePath .
'res/t3grid-tableup.png" border="0" /> 226 echo $this->doc->render(
'Grid wizard', $this->content);
static quoteJSvalue($value)
static hmac($input, $additionalSecret='')
static makeInstance($className)
static getSpriteIcon($iconName, array $options=array(), array $overlays=array())
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]