]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Tossing in a basic i18n message export to script code. Plugins can hook StartScriptMe...
authorBrion Vibber <brion@pobox.com>
Tue, 2 Nov 2010 20:05:16 +0000 (13:05 -0700)
committerBrion Vibber <brion@pobox.com>
Tue, 2 Nov 2010 20:05:16 +0000 (13:05 -0700)
StatusNet core code now sets the tooltip text on .attachment.more links when they receive their attachment-expansion magic; this will override the hardcoded tooltip text saved from OStatus plugin when displaying timelines in the web UI.

js/util.js
lib/action.php
plugins/OStatus/classes/Ostatus_profile.php

index 1989e92c099ea050c7edcf3e50e1f22c8297eff1..1be3f305355ae36a753b1adfc0884d068dce39bb 100644 (file)
@@ -56,6 +56,15 @@ var SN = { // StatusNet
             NoticeDataGeoCookie: 'NoticeDataGeo',
             NoticeDataGeoSelected: 'notice_data-geo_selected',
             StatusNetInstance:'StatusNetInstance'
+        },
+    },
+
+    messages: {},
+    msg: function(key) {
+        if (typeof SN.messages[key] == "undefined") {
+            return '[' + key + ']';
+        } else {
+            return SN.messages[key];
         }
     },
 
@@ -416,7 +425,7 @@ var SN = { // StatusNet
                     });
 
                     return false;
-                });
+                }).attr('title', SN.msg('showmore_tooltip'));
             }
             else {
                 $.fn.jOverlay.options = {
index 01bb0f7e92bebe78bc50ae7eb7afad4f43bbc412..becd734b103cab4b80dd579bfd17f4217ccc515a 100644 (file)
@@ -283,6 +283,7 @@ class Action extends HTMLOutputter // lawsuit
             if (Event::handle('StartShowStatusNetScripts', array($this)) &&
                 Event::handle('StartShowLaconicaScripts', array($this))) {
                 $this->script('util.js');
+                $this->showScriptMessages();
                 // Frame-busting code to avoid clickjacking attacks.
                 $this->inlineScript('if (window.top !== window.self) { window.top.location.href = window.self.location.href; }');
                 Event::handle('EndShowStatusNetScripts', array($this));
@@ -292,6 +293,54 @@ class Action extends HTMLOutputter // lawsuit
         }
     }
 
+    /**
+     * Exports a map of localized text strings to JavaScript code.
+     *
+     * Plugins can add to what's exported by hooking the StartScriptMessages or EndScriptMessages
+     * events and appending to the array. Try to avoid adding strings that won't be used, as
+     * they'll be added to HTML output.
+     */
+    function showScriptMessages()
+    {
+        $messages = array();
+        if (Event::handle('StartScriptMessages', array($this, &$messages))) {
+            // Common messages needed for timeline views etc...
+
+            // TRANS: Localized tooltip for '...' expansion button on overlong remote messages.
+            $messages['showmore_tooltip'] = _m('TOOLTIP', 'Show more');
+
+            $messages = array_merge($messages, $this->getScriptMessages());
+        }
+        if ($messages) {
+            $this->inlineScript('SN.messages=' . json_encode($messages));
+        }
+        Event::handle('EndScriptMessages', array($this, &$messages));
+        return $messages;
+    }
+
+    /**
+     * If the action will need localizable text strings, export them here like so:
+     *
+     * return array('pool_deepend' => _('Deep end'),
+     *              'pool_shallow' => _('Shallow end'));
+     *
+     * The exported map will be available via SN.msg() to JS code:
+     *
+     *   $('#pool').html('<div class="deepend"></div><div class="shallow"></div>');
+     *   $('#pool .deepend').text(SN.msg('pool_deepend'));
+     *   $('#pool .shallow').text(SN.msg('pool_shallow'));
+     *
+     * Exports a map of localized text strings to JavaScript code.
+     *
+     * Plugins can add to what's exported on any action by hooking the StartScriptMessages or
+     * EndScriptMessages events and appending to the array. Try to avoid adding strings that won't
+     * be used, as they'll be added to HTML output.
+     */
+    function getScriptMessages()
+    {
+        return array();
+    }
+
     /**
      * Show OpenSearch headers
      *
index 03fcb71df02a16b79d7f9be365dabd476c2718e8..90bf671eb1d5f7c160532f387420ae95e8555059 100644 (file)
@@ -588,7 +588,8 @@ class Ostatus_profile extends Memcached_DataObject
                 // We mark up the attachment link specially for the HTML output
                 // so we can fold-out the full version inline.
 
-                // TRANS: Shown when a notice is longer than supported and/or when attachments are present.
+                // @fixme I18N this tooltip will be saved with the site's default language
+                // TRANS: Shown when a notice is longer than supported and/or when attachments are present. At runtime this will usually be replaced with localized text from StatusNet core messages.
                 $showMoreText = _m('Show more');
                 $attachUrl = common_local_url('attachment',
                                               array('attachment' => $attachment->id));