‪TYPO3CMS  9.5
GraphicalMenuContentObject.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
23 
30 {
31  public function ‪__construct()
32  {
33  trigger_error('GMENU and GraphicalMenuContentObject will be removed in TYPO3 v10.0, you should build accessible websites with TMENU/Text, and optional images on top, which can be achieved with TypoScript.', E_USER_DEPRECATED);
34  }
35 
42  public function ‪generate()
43  {
44  $splitCount = count($this->menuArr);
45  if ($splitCount) {
46  list($NOconf, $ROconf) = $this->‪procesItemStates($splitCount);
47  //store initial count value
48  $tsfe = $this->‪getTypoScriptFrontendController();
49  $temp_HMENU_MENUOBJ = $tsfe->register['count_HMENU_MENUOBJ'];
50  $temp_MENUOBJ = $tsfe->register['count_MENUOBJ'];
51  // Now we generate the giffiles:
52  $this->‪makeGifs($NOconf, 'NO');
53  // store count from NO obj
54  $tempcnt_HMENU_MENUOBJ = $tsfe->register['count_HMENU_MENUOBJ'];
55  $tempcnt_MENUOBJ = $tsfe->register['count_MENUOBJ'];
56  if ($this->mconf['debugItemConf']) {
57  echo '<h3>$NOconf:</h3>';
58  ‪debug($NOconf);
59  }
60  // RollOver
61  if ($ROconf) {
62  // Start recount for rollover with initial values
63  $tsfe->register['count_HMENU_MENUOBJ'] = $temp_HMENU_MENUOBJ;
64  $tsfe->register['count_MENUOBJ'] = $temp_MENUOBJ;
65  $this->‪makeGifs($ROconf, 'RO');
66  if ($this->mconf['debugItemConf']) {
67  echo '<h3>$ROconf:</h3>';
68  ‪debug($ROconf);
69  }
70  }
71  // Use count from NO obj
72  $tsfe->register['count_HMENU_MENUOBJ'] = $tempcnt_HMENU_MENUOBJ;
73  $tsfe->register['count_MENUOBJ'] = $tempcnt_MENUOBJ;
74  }
75  }
76 
86  public function ‪makeGifs(‪$conf, $resKey)
87  {
88  $isGD = ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['gdlib'];
89  if (!is_array(‪$conf)) {
90  ‪$conf = [];
91  }
92  $totalWH = [];
93  $items = count(‪$conf);
94  $minDim = 0;
95  $maxDim = 0;
96  $Hcounter = 0;
97  $Wcounter = 0;
98  $Hobjs = [];
99  $Wobjs = [];
100  if ($isGD) {
101  // Generate the gif-files. the $menuArr is filled with some values like output_w, output_h, output_file
102  $Hobjs = $this->mconf['applyTotalH'];
103  if ($Hobjs) {
104  $Hobjs = GeneralUtility::intExplode(',', $Hobjs);
105  }
106  $Wobjs = $this->mconf['applyTotalW'];
107  if ($Wobjs) {
108  $Wobjs = GeneralUtility::intExplode(',', $Wobjs);
109  }
110  $minDim = $this->mconf['min'];
111  if ($minDim) {
112  $minDim = $this->‪calcIntExplode($minDim . ',');
113  }
114  $maxDim = $this->mconf['max'];
115  if ($maxDim) {
116  $maxDim = $this->‪calcIntExplode($maxDim . ',');
117  }
118  if ($minDim) {
119  ‪$conf[$items] = ‪$conf[$items - 1];
120  $this->menuArr[$items] = [];
121  $items = count(‪$conf);
122  }
123  // TOTAL width
124  if ($this->mconf['useLargestItemX'] || $this->mconf['useLargestItemY'] || $this->mconf['distributeX'] || $this->mconf['distributeY']) {
125  $totalWH = $this->‪findLargestDims(‪$conf, $items, $Hobjs, $Wobjs, $minDim, $maxDim);
126  }
127  }
128  $c = 0;
129  $maxFlag = 0;
130  $distributeAccu = ['H' => 0, 'W' => 0];
131  foreach (‪$conf as $key => $val) {
132  $this->‪getTypoScriptFrontendController()->register['count_HMENU_MENUOBJ']++;
133  $this->‪getTypoScriptFrontendController()->register['count_MENUOBJ']++;
134  if ($items === $c + 1 && $minDim) {
135  $Lobjs = $this->mconf['removeObjectsOfDummy'];
136  if ($Lobjs) {
137  $Lobjs = GeneralUtility::intExplode(',', $Lobjs);
138  foreach ($Lobjs as $remItem) {
139  unset($val[$remItem]);
140  unset($val[$remItem . '.']);
141  }
142  }
143  $flag = 0;
144  $tempXY = explode(',', $val['XY']);
145  if ($Wcounter < $minDim[0]) {
146  $tempXY[0] = $minDim[0] - $Wcounter;
147  $flag = 1;
148  }
149  if ($Hcounter < $minDim[1]) {
150  $tempXY[1] = $minDim[1] - $Hcounter;
151  $flag = 1;
152  }
153  $val['XY'] = implode(',', $tempXY);
154  if (!$flag) {
155  break;
156  }
157  }
158  $c++;
159  $gifCreator = null;
160  if ($isGD) {
161  // Pre-working the item
162  $gifCreator = GeneralUtility::makeInstance(GifBuilder::class);
163  $gifCreator->start($val, $this->menuArr[$key]);
164  // If useLargestItemH/W is specified
165  if (!empty($totalWH) && ($this->mconf['useLargestItemX'] || $this->mconf['useLargestItemY'])) {
166  $tempXY = explode(',', $gifCreator->setup['XY']);
167  if ($this->mconf['useLargestItemX']) {
168  $tempXY[0] = max($totalWH['W']);
169  }
170  if ($this->mconf['useLargestItemY']) {
171  $tempXY[1] = max($totalWH['H']);
172  }
173  // Regenerate the new values...
174  $val['XY'] = implode(',', $tempXY);
175  $gifCreator = GeneralUtility::makeInstance(GifBuilder::class);
176  $gifCreator->start($val, $this->menuArr[$key]);
177  }
178  // If distributeH/W is specified
179  if (!empty($totalWH) && ($this->mconf['distributeX'] || $this->mconf['distributeY'])) {
180  $tempXY = explode(',', $gifCreator->setup['XY']);
181  if ($this->mconf['distributeX']) {
182  $diff = $this->mconf['distributeX'] - $totalWH['W_total'] - $distributeAccu['W'];
183  $compensate = round($diff / ($items - $c + 1));
184  $distributeAccu['W'] += $compensate;
185  $tempXY[0] = $totalWH['W'][$key] + $compensate;
186  }
187  if ($this->mconf['distributeY']) {
188  $diff = $this->mconf['distributeY'] - $totalWH['H_total'] - $distributeAccu['H'];
189  $compensate = round($diff / ($items - $c + 1));
190  $distributeAccu['H'] += $compensate;
191  $tempXY[1] = $totalWH['H'][$key] + $compensate;
192  }
193  // Regenerate the new values...
194  $val['XY'] = implode(',', $tempXY);
195  $gifCreator = GeneralUtility::makeInstance(GifBuilder::class);
196  $gifCreator->start($val, $this->menuArr[$key]);
197  }
198  // If max dimensions are specified
199  if ($maxDim) {
200  $tempXY = explode(',', $val['XY']);
201  if ($maxDim[0] && $Wcounter + $gifCreator->XY[0] >= $maxDim[0]) {
202  $tempXY[0] = $maxDim[0] - $Wcounter;
203  $maxFlag = 1;
204  }
205  if ($maxDim[1] && $Hcounter + $gifCreator->XY[1] >= $maxDim[1]) {
206  $tempXY[1] = $maxDim[1] - $Hcounter;
207  $maxFlag = 1;
208  }
209  if ($maxFlag) {
210  $val['XY'] = implode(',', $tempXY);
211  $gifCreator = GeneralUtility::makeInstance(GifBuilder::class);
212  $gifCreator->start($val, $this->menuArr[$key]);
213  }
214  }
215  // displace
216  if ($Hobjs) {
217  foreach ($Hobjs as $index) {
218  if ($gifCreator->setup[$index] && $gifCreator->setup[$index . '.']) {
219  $oldOffset = explode(',', $gifCreator->setup[$index . '.']['offset']);
220  $gifCreator->setup[$index . '.']['offset'] = implode(',', $gifCreator->applyOffset($oldOffset, [0, -$Hcounter]));
221  }
222  }
223  }
224  if ($Wobjs) {
225  foreach ($Wobjs as $index) {
226  if ($gifCreator->setup[$index] && $gifCreator->setup[$index . '.']) {
227  $oldOffset = explode(',', $gifCreator->setup[$index . '.']['offset']);
228  $gifCreator->setup[$index . '.']['offset'] = implode(',', $gifCreator->applyOffset($oldOffset, [-$Wcounter, 0]));
229  }
230  }
231  }
232  }
233  // Finding alternative GIF names if any (by altImgResource)
234  $gifFileName = '';
235  if (‪$conf[$key]['altImgResource'] || is_array(‪$conf[$key]['altImgResource.'])) {
236  $cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class);
237  $cObj->start($this->menuArr[$key], 'pages');
238  $altImgInfo = $cObj->getImgResource(‪$conf[$key]['altImgResource'], ‪$conf[$key]['altImgResource.']);
239  $gifFileName = $altImgInfo[3];
240  }
241  // If an alternative name was NOT given, find the GIFBUILDER name.
242  if (!$gifFileName && $isGD) {
243  GeneralUtility::mkdir_deep(‪Environment::getPublicPath() . '/typo3temp/assets/menu/');
244  $gifFileName = $gifCreator->fileName('assets/menu/');
245  }
246  $this->result[$resKey][$key] = ‪$conf[$key];
247  // Generation of image file:
248  // File exists
249  if (file_exists($gifFileName)) {
250  $imageInfo = GeneralUtility::makeInstance(ImageInfo::class, $gifFileName);
251  $this->result[$resKey][$key]['output_w'] = (int)$imageInfo->getWidth();
252  $this->result[$resKey][$key]['output_h'] = (int)$imageInfo->getHeight();
253  $this->result[$resKey][$key]['output_file'] = $gifFileName;
254  } elseif ($isGD) {
255  // file is generated
256  $gifCreator->make();
257  $this->result[$resKey][$key]['output_w'] = $gifCreator->w;
258  $this->result[$resKey][$key]['output_h'] = $gifCreator->h;
259  $this->result[$resKey][$key]['output_file'] = $gifFileName;
260  $gifCreator->output($this->result[$resKey][$key]['output_file']);
261  $gifCreator->destroy();
262  }
263  // counter is increased
264  $Hcounter += $this->result[$resKey][$key]['output_h'];
265  // counter is increased
266  $Wcounter += $this->result[$resKey][$key]['output_w'];
267  if ($maxFlag) {
268  break;
269  }
270  }
271  }
272 
288  public function ‪findLargestDims(‪$conf, $items, $Hobjs, $Wobjs, $minDim, $maxDim)
289  {
290  $items = (int)$items;
291  $totalWH = [
292  'W' => [],
293  'H' => [],
294  'W_total' => 0,
295  'H_total' => 0
296  ];
297  $Hcounter = 0;
298  $Wcounter = 0;
299  $c = 0;
300  $maxFlag = 0;
301  foreach (‪$conf as $key => $val) {
302  // SAME CODE AS makeGifs()! BEGIN
303  if ($items === $c + 1 && $minDim) {
304  $Lobjs = $this->mconf['removeObjectsOfDummy'];
305  if ($Lobjs) {
306  $Lobjs = GeneralUtility::intExplode(',', $Lobjs);
307  foreach ($Lobjs as $remItem) {
308  unset($val[$remItem]);
309  unset($val[$remItem . '.']);
310  }
311  }
312  $flag = 0;
313  $tempXY = explode(',', $val['XY']);
314  if ($Wcounter < $minDim[0]) {
315  $tempXY[0] = $minDim[0] - $Wcounter;
316  $flag = 1;
317  }
318  if ($Hcounter < $minDim[1]) {
319  $tempXY[1] = $minDim[1] - $Hcounter;
320  $flag = 1;
321  }
322  $val['XY'] = implode(',', $tempXY);
323  if (!$flag) {
324  break;
325  }
326  }
327  $c++;
328  $gifCreator = GeneralUtility::makeInstance(GifBuilder::class);
329  $gifCreator->start($val, $this->menuArr[$key]);
330  if ($maxDim) {
331  $tempXY = explode(',', $val['XY']);
332  if ($maxDim[0] && $Wcounter + $gifCreator->XY[0] >= $maxDim[0]) {
333  $tempXY[0] = $maxDim[0] - $Wcounter;
334  $maxFlag = 1;
335  }
336  if ($maxDim[1] && $Hcounter + $gifCreator->XY[1] >= $maxDim[1]) {
337  $tempXY[1] = $maxDim[1] - $Hcounter;
338  $maxFlag = 1;
339  }
340  if ($maxFlag) {
341  $val['XY'] = implode(',', $tempXY);
342  $gifCreator = GeneralUtility::makeInstance(GifBuilder::class);
343  $gifCreator->start($val, $this->menuArr[$key]);
344  }
345  }
346  // SAME CODE AS makeGifs()! END
347  // Setting the width/height
348  $totalWH['W'][$key] = $gifCreator->XY[0];
349  $totalWH['H'][$key] = $gifCreator->XY[1];
350  $totalWH['W_total'] += $gifCreator->XY[0];
351  $totalWH['H_total'] += $gifCreator->XY[1];
352  // counter is increased
353  $Hcounter += $gifCreator->XY[1];
354  // counter is increased
355  $Wcounter += $gifCreator->XY[0];
356  if ($maxFlag) {
357  break;
358  }
359  }
360  return $totalWH;
361  }
362 
369  public function ‪writeMenu()
370  {
371  if (!is_array($this->menuArr) || empty($this->result) || !is_array($this->result['NO'])) {
372  return '';
373  }
374  $this->WMresult = '';
375  $this->INPfixMD5 = substr(md5(microtime() . $this->GMENU_fixKey), 0, 4);
376  $this->WMmenuItems = count($this->result['NO']);
377  $typoScriptService = GeneralUtility::makeInstance(TypoScriptService::class);
378  $this->WMsubmenuObjSuffixes = $typoScriptService->explodeConfigurationForOptionSplit(['sOSuffix' => $this->mconf['submenuObjSuffixes']], $this->WMmenuItems);
379  $this->‪extProc_init();
380  $tsfe = $this->‪getTypoScriptFrontendController();
381  if (!isset($tsfe->additionalJavaScript['JSImgCode'])) {
382  $tsfe->additionalJavaScript['JSImgCode'] = '';
383  }
384  for ($key = 0; $key < ‪$this->WMmenuItems; $key++) {
385  if ($this->result['NO'][$key]['output_file']) {
386  // Initialize the cObj with the page record of the menu item
387  $this->WMcObj->start($this->menuArr[$key], 'pages');
388  $this->I = [];
389  $this->I['key'] = $key;
390  $this->I['INPfix'] = ($this->imgNameNotRandom ? '' : '_' . ‪$this->INPfixMD5) . '_' . $key;
391  $this->I['val'] = $this->result['NO'][$key];
392  $this->I['title'] = $this->‪getPageTitle($this->menuArr[$key]['title'], $this->menuArr[$key]['nav_title']);
393  $this->I['uid'] = $this->menuArr[$key]['uid'];
394  $this->I['mount_pid'] = $this->menuArr[$key]['mount_pid'];
395  $this->I['pid'] = $this->menuArr[$key]['pid'];
396  $this->I['spacer'] = $this->menuArr[$key]['isSpacer'];
397  if (!$this->I['uid'] && !$this->menuArr[$key]['_OVERRIDE_HREF']) {
398  $this->I['spacer'] = 1;
399  }
400  $this->I['noLink'] = $this->I['spacer'] || $this->I['val']['noLink'] || empty($this->menuArr[$key]);
401  // !count($this->menuArr[$key]) means that this item is a dummyItem
402  $this->I['name'] = '';
403  // Set access key
404  if ($this->mconf['accessKey']) {
405  $this->I['accessKey'] = $this->‪accessKey($this->I['title']);
406  } else {
407  $this->I['accessKey'] = [];
408  }
409  // Make link tag
410  $this->I['val']['ATagParams'] = $this->WMcObj->getATagParams($this->I['val']);
411  if (isset($this->I['val']['additionalParams.'])) {
412  $this->I['val']['additionalParams'] = $this->WMcObj->stdWrap($this->I['val']['additionalParams'], $this->I['val']['additionalParams.']);
413  }
414  $this->I['linkHREF'] = $this->‪link($key, $this->I['val']['altTarget'], $this->mconf['forceTypeValue']);
415  // Title attribute of links:
416  $titleAttrValue = isset($this->I['val']['ATagTitle.']) ? $this->WMcObj->stdWrap($this->I['val']['ATagTitle'], $this->I['val']['ATagTitle.']) . $this->I['accessKey']['alt'] : $this->I['val']['ATagTitle'] . $this->I['accessKey']['alt'];
417  if ($titleAttrValue !== '') {
418  $this->I['linkHREF']['title'] = $titleAttrValue;
419  }
420  // Set rollover
421  if ($this->result['RO'][$key] && !$this->I['noLink']) {
422  $this->I['theName'] = $this->imgNamePrefix . $this->I['uid'] . $this->I['INPfix'];
423  $this->I['name'] = ' ' . $this->nameAttribute . '="' . $this->I['theName'] . '"';
424  $this->I['linkHREF']['onMouseover'] = $this->WMfreezePrefix . 'over(' . GeneralUtility::quoteJSvalue($this->I['theName']) . ');';
425  $this->I['linkHREF']['onMouseout'] = $this->WMfreezePrefix . 'out(' . GeneralUtility::quoteJSvalue($this->I['theName']) . ');';
426  $tsfe->additionalJavaScript['JSImgCode'] .= LF . $this->I['theName'] . '_n=new Image(); ' . $this->I['theName'] . '_n.src = ' . GeneralUtility::quoteJSvalue($tsfe->absRefPrefix . $this->I['val']['output_file']) . '; ';
427  $tsfe->additionalJavaScript['JSImgCode'] .= LF . $this->I['theName'] . '_h=new Image(); ' . $this->I['theName'] . '_h.src = ' . GeneralUtility::quoteJSvalue($tsfe->absRefPrefix . $this->result['RO'][$key]['output_file']) . '; ';
428  $tsfe->imagesOnPage[] = $this->result['RO'][$key]['output_file'];
429  $tsfe->setJS('mouseOver');
430  $this->‪extProc_RO($key);
431  }
432  // Set altText
433  $this->I['altText'] = $this->I['title'] . $this->I['accessKey']['alt'];
434  // Calling extra processing function
435  $this->‪extProc_beforeLinking($key);
436  // Set linking
437  if (!$this->I['noLink']) {
438  $this->‪setATagParts();
439  } else {
440  $this->I['A1'] = '';
441  $this->I['A2'] = '';
442  }
443  $this->I['IMG'] = '<img src="' . $tsfe->absRefPrefix . $this->I['val']['output_file'] . '" width="' . $this->I['val']['output_w'] . '" height="' . $this->I['val']['output_h'] . '" ' . $this->parent_cObj->getBorderAttr('border="0"') . ($this->mconf['disableAltText'] ? '' : ' alt="' . htmlspecialchars($this->I['altText']) . '"') . $this->I['name'] . ($this->I['val']['imgParams'] ? ' ' . $this->I['val']['imgParams'] : '') . ' />';
444  // Make before, middle and after parts
445  $this->I['parts'] = [];
446  $this->I['parts']['ATag_begin'] = $this->I['A1'];
447  $this->I['parts']['image'] = $this->I['IMG'];
448  $this->I['parts']['ATag_end'] = $this->I['A2'];
449  // Passing I to a user function
450  if ($this->mconf['IProcFunc']) {
451  $this->I = $this->‪userProcess('IProcFunc', $this->I);
452  }
453  // Putting the item together.
454  // Merge parts + beforeAllWrap
455  $this->I['theItem'] = implode('', $this->I['parts']);
456  $this->I['theItem'] = $this->‪extProc_beforeAllWrap($this->I['theItem'], $key);
457  // wrap:
458  $this->I['theItem'] = $this->WMcObj->wrap($this->I['theItem'], $this->I['val']['wrap']);
459  // allWrap:
460  $allWrap = isset($this->I['val']['allWrap.']) ? $this->WMcObj->stdWrap($this->I['val']['allWrap'], $this->I['val']['allWrap.']) : $this->I['val']['allWrap'];
461  $this->I['theItem'] = $this->WMcObj->wrap($this->I['theItem'], $allWrap);
462  if ($this->I['val']['subst_elementUid']) {
463  $this->I['theItem'] = str_replace('{elementUid}', $this->I['uid'], $this->I['theItem']);
464  }
465  // allStdWrap:
466  if (is_array($this->I['val']['allStdWrap.'])) {
467  $this->I['theItem'] = $this->WMcObj->stdWrap($this->I['theItem'], $this->I['val']['allStdWrap.']);
468  }
469  $tsfe->imagesOnPage[] = $this->I['val']['output_file'];
470  $this->‪extProc_afterLinking($key);
471  }
472  }
473  return $this->‪extProc_finish();
474  }
475 
482  protected function ‪extProc_init()
483  {
484  }
485 
492  protected function ‪extProc_RO($key)
493  {
494  }
495 
502  protected function ‪extProc_beforeLinking($key)
503  {
504  }
505 
515  protected function ‪extProc_afterLinking($key)
516  {
517  // Add part to the accumulated result + fetch submenus
518  if (!$this->I['spacer']) {
519  $this->I['theItem'] .= $this->‪subMenu($this->I['uid'], $this->WMsubmenuObjSuffixes[$key]['sOSuffix']);
520  }
521  $part = isset($this->I['val']['wrapItemAndSub.']) ? $this->WMcObj->stdWrap($this->I['val']['wrapItemAndSub'], $this->I['val']['wrapItemAndSub.']) : $this->I['val']['wrapItemAndSub'];
522  $this->WMresult .= $part ? $this->WMcObj->wrap($this->I['theItem'], $part) : $this->I['theItem'];
523  }
524 
533  protected function ‪extProc_beforeAllWrap($item, $key)
534  {
535  return $item;
536  }
537 
544  protected function ‪extProc_finish()
545  {
546  // stdWrap:
547  if (is_array($this->mconf['stdWrap.'])) {
548  $this->WMresult = $this->WMcObj->stdWrap($this->WMresult, $this->mconf['stdWrap.']);
549  }
550  return $this->WMcObj->wrap($this->WMresult, $this->mconf['wrap']) . ‪$this->WMextraScript;
551  }
552 
561  protected function ‪calcIntExplode($string)
562  {
563  $temp = explode(',', $string);
564  foreach ($temp as $key => $val) {
565  $temp[$key] = (int)$this->parent_cObj->calc($val);
566  }
567  return $temp;
568  }
569 }
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\subMenu
‪string subMenu($uid, $objSuffix='')
Definition: AbstractMenuContentObject.php:1853
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\calcIntExplode
‪array calcIntExplode($string)
Definition: GraphicalMenuContentObject.php:561
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\getPageTitle
‪string getPageTitle($title, $nav_title)
Definition: AbstractMenuContentObject.php:2122
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\generate
‪generate()
Definition: GraphicalMenuContentObject.php:42
‪TYPO3\CMS\Core\Core\Environment\getPublicPath
‪static string getPublicPath()
Definition: Environment.php:153
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\makeGifs
‪makeGifs($conf, $resKey)
Definition: GraphicalMenuContentObject.php:86
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\$conf
‪array $conf
Definition: AbstractMenuContentObject.php:167
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\procesItemStates
‪array procesItemStates($splitCount)
Definition: AbstractMenuContentObject.php:1377
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\findLargestDims
‪array findLargestDims($conf, $items, $Hobjs, $Wobjs, $minDim, $maxDim)
Definition: GraphicalMenuContentObject.php:288
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\extProc_finish
‪string extProc_finish()
Definition: GraphicalMenuContentObject.php:544
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject
Definition: GraphicalMenuContentObject.php:30
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\link
‪array link($key, $altTarget='', $typeOverride='')
Definition: AbstractMenuContentObject.php:1637
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\$WMextraScript
‪string $WMextraScript
Definition: AbstractMenuContentObject.php:243
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject
Definition: AbstractMenuContentObject.php:45
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\extProc_afterLinking
‪extProc_afterLinking($key)
Definition: GraphicalMenuContentObject.php:515
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\$INPfixMD5
‪string $INPfixMD5
Definition: AbstractMenuContentObject.php:219
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\userProcess
‪mixed userProcess($mConfKey, $passVar)
Definition: AbstractMenuContentObject.php:2094
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\writeMenu
‪string writeMenu()
Definition: GraphicalMenuContentObject.php:369
‪TYPO3\CMS\Frontend\ContentObject\Menu
Definition: AbstractMenuContentObject.php:2
‪TYPO3\CMS\Frontend\Imaging\GifBuilder
Definition: GifBuilder.php:52
‪TYPO3\CMS\Core\Type\File\ImageInfo
Definition: ImageInfo.php:25
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\__construct
‪__construct()
Definition: GraphicalMenuContentObject.php:31
‪TYPO3\CMS\Core\TypoScript\TypoScriptService
Definition: TypoScriptService.php:23
‪debug
‪debug($variable='', $title=null, $group=null)
Definition: GlobalDebugFunctions.php:5
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\$WMmenuItems
‪int $WMmenuItems
Definition: AbstractMenuContentObject.php:235
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:39
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\getTypoScriptFrontendController
‪TypoScriptFrontendController getTypoScriptFrontendController()
Definition: AbstractMenuContentObject.php:2339
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\extProc_RO
‪extProc_RO($key)
Definition: GraphicalMenuContentObject.php:492
‪TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
Definition: ContentObjectRenderer.php:91
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\extProc_beforeAllWrap
‪string extProc_beforeAllWrap($item, $key)
Definition: GraphicalMenuContentObject.php:533
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\setATagParts
‪setATagParts()
Definition: AbstractMenuContentObject.php:2107
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\extProc_beforeLinking
‪extProc_beforeLinking($key)
Definition: GraphicalMenuContentObject.php:502
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:45
‪TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject\accessKey
‪array accessKey($title)
Definition: AbstractMenuContentObject.php:2066
‪TYPO3\CMS\Frontend\ContentObject\Menu\GraphicalMenuContentObject\extProc_init
‪extProc_init()
Definition: GraphicalMenuContentObject.php:482