[TASK] Refactor copy-pasted getJavaScriptLabelsFromLocallang 94/28694/3
authorPascal Dürsteler <pascal.duersteler@gmail.com>
Mon, 24 Mar 2014 11:06:03 +0000 (12:06 +0100)
committerAnja Leichsenring <aleichsenring@ab-softlab.de>
Sat, 3 Jan 2015 15:38:33 +0000 (16:38 +0100)
This refactors the copy-pasted method from ext:recycler into
LanguageService.php.

Resolves: #57225
Releases: master
Change-Id: I0312068b70583feeff9d4cbf5f96fbac75baa793
Reviewed-on: http://review.typo3.org/28694
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
typo3/sysext/lang/Classes/LanguageService.php
typo3/sysext/recycler/Classes/Controller/RecyclerModuleController.php
typo3/sysext/t3editor/Classes/T3editor.php

index 3b4fd66..7a22abd 100644 (file)
@@ -461,4 +461,27 @@ class LanguageService {
                }
        }
 
+       /**
+        * Gets labels with a specific fetched from the current locallang file.
+        * This is useful for e.g gathering javascript labels.
+        *
+        * @param string $prefix Prefix to select the correct labels
+        * @param string $strip Sub-prefix to be removed from label names in the result
+        * @return array Processed labels
+        */
+       public function getLabelsWithPrefix($prefix, $strip = '') {
+               $extraction = array();
+               $labels = array_merge((array)$GLOBALS['LOCAL_LANG']['default'], (array)$GLOBALS['LOCAL_LANG'][$GLOBALS['LANG']->lang]);
+               // Regular expression to strip the selection prefix and possibly something from the label name:
+               $labelPattern = '#^' . preg_quote($prefix, '#') . '(' . preg_quote($strip, '#') . ')?#';
+               // Iterate through all locallang labels:
+               foreach ($labels as $label => $value) {
+                       if (strpos($label, $prefix) === 0) {
+                               $key = preg_replace($labelPattern, '', $label);
+                               $extraction[$key] = $value;
+                       }
+               }
+               return $extraction;
+       }
+
 }
index 5a47820..6c2cf34 100644 (file)
@@ -226,35 +226,12 @@ class RecyclerModuleController extends \TYPO3\CMS\Backend\Module\BaseScriptClass
                        'depth_4' => $this->languageService->sL('LLL:EXT:lang/locallang_core.xlf:labels.depth_4'),
                        'depth_infi' => $this->languageService->sL('LLL:EXT:lang/locallang_core.xlf:labels.depth_infi')
                );
-               $extensionLabels = $this->getJavaScriptLabelsFromLocallang('js.', 'label_');
+               $extensionLabels = $this->languageService->getLabelsWithPrefix('js.', 'label_');
                $javaScriptLabels = array_merge($coreLabels, $extensionLabels);
                return $javaScriptLabels;
        }
 
        /**
-        * Gets labels to be used in JavaScript fetched from the current locallang file.
-        *
-        * @param string $selectionPrefix Prefix to select the correct labels (default: 'js.')
-        * @param string $stripFromSelectionName  Sub-prefix to be removed from label names in the result (default: '')
-        * @return array Labels to be used in JavaScript of the current locallang file
-        * @todo Check, whether this method can be moved in a generic way to $GLOBALS['LANG']
-        */
-       protected function getJavaScriptLabelsFromLocallang($selectionPrefix = 'js.', $stripFromSelectionName = '') {
-               $extraction = array();
-               $labels = array_merge((array)$GLOBALS['LOCAL_LANG']['default'], (array)$GLOBALS['LOCAL_LANG'][$this->languageService->lang]);
-               // Regular expression to strip the selection prefix and possibly something from the label name:
-               $labelPattern = '#^' . preg_quote($selectionPrefix, '#') . '(' . preg_quote($stripFromSelectionName, '#') . ')?#';
-               // Iterate through all locallang labels:
-               foreach ($labels as $label => $value) {
-                       if (strpos($label, $selectionPrefix) === 0) {
-                               $key = preg_replace($labelPattern, '', $label);
-                               $extraction[$key] = $value;
-                       }
-               }
-               return $extraction;
-       }
-
-       /**
         * Gets the buttons that shall be rendered in the docHeader.
         *
         * @return array Available buttons for the docHeader
index ed6de26..690e9a7 100644 (file)
@@ -180,7 +180,7 @@ class T3editor implements \TYPO3\CMS\Core\SingletonInterface {
 
                        $content .= \TYPO3\CMS\Core\Utility\GeneralUtility::wrapJS(
                                'T3editor = T3editor || {};' .
-                               'T3editor.lang = ' . json_encode($this->getJavaScriptLabels()) . ';' . LF .
+                               'T3editor.lang = ' . json_encode($GLOBALS['LANG']->getLabelsWithPrefix('js.', 'label_')) . ';' . LF .
                                'T3editor.PATH_t3e = "' . $GLOBALS['BACK_PATH'] . $path_t3e . '"; ' . LF .
                                'T3editor.PATH_codemirror = "' . $GLOBALS['BACK_PATH'] . $path_codemirror . '"; ' . LF .
                                'T3editor.URL_typo3 = "' . htmlspecialchars(\TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('TYPO3_SITE_URL') . TYPO3_mainDir) . '"; ' . LF .
@@ -301,42 +301,6 @@ class T3editor implements \TYPO3\CMS\Core\SingletonInterface {
        }
 
        /**
-        * Gets the labels to be used in JavaScript in the Ext JS interface.
-        * @todo this method is copied from EXT:Recycler, maybe this should be refactored into a helper class
-        *
-        * @return array The labels to be used in JavaScript
-        */
-       protected function getJavaScriptLabels() {
-               $coreLabels = array();
-               $extensionLabels = $this->getJavaScriptLabelsFromLocallang('js.', 'label_');
-               return array_merge($coreLabels, $extensionLabels);
-       }
-
-       /**
-        * Gets labels to be used in JavaScript fetched from the current locallang file.
-        * @todo this method is copied from EXT:Recycler, maybe this should be refactored into a helper class
-        *
-        * @param string $selectionPrefix Prefix to select the correct labels (default: 'js.')
-        * @param string $stripFromSelectionName Sub-prefix to be removed from label names in the result (default: '')
-        * @return array Lables to be used in JavaScript of the current locallang file
-        * @todo Check, whether this method can be moved in a generic way to $GLOBALS['LANG']
-        */
-       protected function getJavaScriptLabelsFromLocallang($selectionPrefix = 'js.', $stripFromSelectionName = '') {
-               $extraction = array();
-               $labels = array_merge((array)$GLOBALS['LOCAL_LANG']['default'], (array)$GLOBALS['LOCAL_LANG'][$GLOBALS['LANG']->lang]);
-               // Regular expression to strip the selection prefix and possibly something from the label name:
-               $labelPattern = '#^' . preg_quote($selectionPrefix, '#') . '(' . preg_quote($stripFromSelectionName, '#') . ')?#';
-               // Iterate throuh all locallang lables:
-               foreach ($labels as $label => $value) {
-                       if (strpos($label, $selectionPrefix) === 0) {
-                               $key = preg_replace($labelPattern, '', $label);
-                               $extraction[$key] = $value;
-                       }
-               }
-               return $extraction;
-       }
-
-       /**
         * Generates HTML with code editor
         *
         * @param string $name Name attribute of HTML tag