TYPO3  7.6
Typo3Link.php
Go to the documentation of this file.
1 <?php
2 namespace TYPO3\CMS\Rtehtmlarea\Extension;
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 
20 
25 {
31  protected $pluginName = 'TYPO3Link';
32 
38  protected $pluginButtons = 'link, unlink';
39 
46  'link' => 'CreateLink',
47  'unlink' => 'UnLink'
48  );
49 
56  public function main(array $configuration)
57  {
58  // Check if this should be enabled based on Page TSConfig
59  return parent::main($configuration)
60  && !$this->configuration['thisConfig']['buttons.']['link.']['TYPO3Browser.']['disabled'];
61  }
62 
68  public function buildJavascriptConfiguration()
69  {
70  $jsArray = array();
71  $button = 'link';
72  if (in_array($button, $this->toolbar)) {
73  if (!is_array($this->configuration['thisConfig']['buttons.']) || !is_array($this->configuration['thisConfig']['buttons.'][($button . '.')])) {
74  $jsArray[] = 'RTEarea[editornumber].buttons.' . $button . ' = new Object();';
75  }
76  $jsArray[] = 'RTEarea[editornumber].buttons.' . $button . '.pathLinkModule = ' . GeneralUtility::quoteJSvalue(BackendUtility::getModuleUrl('rtehtmlarea_wizard_browse_links')) . ';';
77  if (is_array($this->configuration['RTEsetup']['properties']['classesAnchor.'])) {
78  $jsArray[] = 'RTEarea[editornumber].buttons.' . $button . '.classesAnchorUrl = "' . $this->writeTemporaryFile('classesAnchor_' . $this->configuration['contentLanguageUid'], 'js', $this->buildJSClassesAnchorArray()) . '";';
79  }
80  $jsArray[] = 'RTEarea[editornumber].buttons.' . $button . '.additionalAttributes = "data-htmlarea-external' . ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extensionKey]['plugins'][$this->pluginName]['additionalAttributes'] ? ',' . $GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extensionKey]['plugins'][$this->pluginName]['additionalAttributes'] : '') . '";';
81  }
82  return implode(LF, $jsArray);
83  }
84 
90  public function buildJSClassesAnchorArray()
91  {
92  $JSClassesAnchorArray = 'HTMLArea.classesAnchorSetup = [ ' . LF;
93  $classesAnchorIndex = 0;
94  foreach ($this->configuration['RTEsetup']['properties']['classesAnchor.'] as $label => $conf) {
95  if (is_array($conf) && $conf['class']) {
96  $JSClassesAnchorArray .= ($classesAnchorIndex++ ? ',' : '') . ' { ' . LF;
97  $index = 0;
98  $JSClassesAnchorArray .= ($index++ ? ',' : '') . 'name : "' . str_replace('"', '', str_replace('\'', '', $conf['class'])) . '"' . LF;
99  if ($conf['type']) {
100  $JSClassesAnchorArray .= ($index++ ? ',' : '') . 'type : "' . str_replace('"', '', str_replace('\'', '', $conf['type'])) . '"' . LF;
101  }
102  if (trim(str_replace('\'', '', str_replace('"', '', $conf['image'])))) {
103  $JSClassesAnchorArray .= ($index++ ? ',' : '') . 'image : "' . GeneralUtility::getIndpEnv('TYPO3_SITE_URL') . GeneralUtility::resolveBackPath((TYPO3_mainDir . $this->getFullFileName(trim(str_replace('\'', '', str_replace('"', '', $conf['image'])))))) . '"' . LF;
104  }
105  $JSClassesAnchorArray .= ($index++ ? ',' : '') . 'addIconAfterLink : ' . ($conf['addIconAfterLink'] ? 'true' : 'false') . LF;
106  if (trim($conf['altText'])) {
107  $string = GeneralUtility::quoteJSvalue($this->getLanguageService()->sL(trim($conf['altText'])));
108  $JSClassesAnchorArray .= ($index++ ? ',' : '') . 'altText : ' . str_replace('"', '\\"', str_replace('\\\'', '\'', $string)) . LF;
109  }
110  if (trim($conf['titleText'])) {
111  $string = GeneralUtility::quoteJSvalue($this->getLanguageService()->sL(trim($conf['titleText'])));
112  $JSClassesAnchorArray .= ($index++ ? ',' : '') . 'titleText : ' . str_replace('"', '\\"', str_replace('\\\'', '\'', $string)) . LF;
113  }
114  if (trim($conf['target'])) {
115  $JSClassesAnchorArray .= ($index++ ? ',' : '') . 'target : "' . trim($conf['target']) . '"' . LF;
116  }
117  $JSClassesAnchorArray .= '}' . LF;
118  }
119  }
120  $JSClassesAnchorArray .= '];' . LF;
121  return $JSClassesAnchorArray;
122  }
123 
130  public function applyToolbarConstraints($show)
131  {
132  // We will not allow unlink if link is not enabled
133  if (!in_array('link', $show)) {
134  return array_diff($show, GeneralUtility::trimExplode(',', $this->pluginButtons));
135  } else {
136  return $show;
137  }
138  }
139 }