Cleanup/Bugfix #11838: Hardcoded labels in t3editor
authorTobias Liebig <mail@etobi.de>
Thu, 5 Nov 2009 19:53:22 +0000 (19:53 +0000)
committerTobias Liebig <mail@etobi.de>
Thu, 5 Nov 2009 19:53:22 +0000 (19:53 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@6338 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
typo3/sysext/t3editor/class.tx_t3editor.php
typo3/sysext/t3editor/jslib/t3editor.js
typo3/sysext/t3editor/locallang.xml

index 442fc2c..aa58dff 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2009-11-05  Tobias Liebi <mail_typo3@etobi.de>
+
+       * Cleanup/Bugfix #11838: Hardcoded labels in t3editor
+
 2009-11-05  Francois Suter  <francois@typo3.org>
 
        * Feature #12215: Scheduler: Added display and information about usage of timezone
index caf9114..2f62b44 100755 (executable)
@@ -152,6 +152,9 @@ class tx_t3editor {
                        // set correct path to the editor
 
                        $code.= t3lib_div::wrapJS(
+                               'var T3editor = T3editor || {};' .
+                               'T3editor.lang = ' . json_encode($this->getJavaScriptLabels()) .';' .
+                               // TODO namespace all js vars (PATH_t3e, URL_typo3, ...)
                                'var PATH_t3e = "' . $GLOBALS['BACK_PATH'] . t3lib_extmgm::extRelPath('t3editor') . '"; ' .
                                'var URL_typo3 = "' . htmlspecialchars(t3lib_div::getIndpEnv('TYPO3_SITE_URL') . TYPO3_mainDir) . '"; '
                        );
@@ -161,6 +164,46 @@ class tx_t3editor {
        }
 
        /**
+        * 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
index 8bdeb6d..7e15f6a 100755 (executable)
@@ -222,9 +222,10 @@ T3editor.prototype = {
                        }
 
                        this.t3e_statusbar_status.update(
-                               (this.textModified ? ' <span alt="document has been modified">*</span> ': '')
+                               (this.textModified ? ' <span title="' + T3editor.lang.documentModified + '" alt="' + T3editor.lang.documentModified + '">*</span> ': '')
                                 + bodyContentLineCount
-                                + ' lines');
+                                + ' '
+                                + T3editor.lang.lines );
                },
                
                updateTextarea: function(event) {
@@ -258,7 +259,7 @@ T3editor.prototype = {
                                this.textModified = false;
                                this.updateLinenum();
                        } else {
-                               alert("An error occured while saving the data.");
+                               alert(T3editor.lang.errorWhileSaving);
                        };
                        this.modalOverlay.hide();
                },
index 7da4689..a7288e9 100644 (file)
@@ -15,6 +15,9 @@
                        <label index="pageIDInteger">Syntax error: Parameter pageID must be a valid integer.</label>
                        <label index="noPermission">Access denied: No permission to template records.</label>
                        <label index="typeIDMissing">Syntax error: At least parameter typeID has to be supplied.</label>
+                       <label index="js.label_lines">lines</label>
+                       <label index="js.label_documentModified">document has been modified</label>
+                       <label index="js.label_errorWhileSaving">An error occured while saving the data.</label>
                </languageKey>
        </data>
 </T3locallang>
\ No newline at end of file