http://www.mediawiki.org/wiki/Special:Code/MediaWiki/100212

Revision: 100212
Author:   santhosh
Date:     2011-10-19 04:37:15 +0000 (Wed, 19 Oct 2011)
Log Message:
-----------
New feature - provide all input methods for the user, dynamically load the 
input method rules.
Bug 28474 

Modified Paths:
--------------
    trunk/extensions/Narayam/Narayam.hooks.php
    trunk/extensions/Narayam/Narayam.i18n.php
    trunk/extensions/Narayam/Narayam.php
    trunk/extensions/Narayam/css/ext.narayam.core.css
    trunk/extensions/Narayam/js/ext.narayam.core.js

Added Paths:
-----------
    trunk/extensions/Narayam/images/closed-ltr.png
    trunk/extensions/Narayam/images/closed-rtl.png
    trunk/extensions/Narayam/images/open.png

Modified: trunk/extensions/Narayam/Narayam.hooks.php
===================================================================
--- trunk/extensions/Narayam/Narayam.hooks.php  2011-10-19 04:06:16 UTC (rev 
100211)
+++ trunk/extensions/Narayam/Narayam.hooks.php  2011-10-19 04:37:15 UTC (rev 
100212)
@@ -39,7 +39,7 @@
        }
 
        public static function addVariables( &$vars ) {
-               global $wgUser;
+               global $wgUser, $wgNarayamSchemes;
 
                if ( $wgUser->getOption( 'narayamDisable' ) ) {
                        // User disabled Narayam
@@ -47,7 +47,7 @@
                }
 
                $vars['wgNarayamAvailableSchemes'] = self::getSchemes(); // 
Note: scheme names must be keys, not values
-
+               $vars['wgNarayamAllSchemes'] = $wgNarayamSchemes;
                return true;
        }
 

Modified: trunk/extensions/Narayam/Narayam.i18n.php
===================================================================
--- trunk/extensions/Narayam/Narayam.i18n.php   2011-10-19 04:06:16 UTC (rev 
100211)
+++ trunk/extensions/Narayam/Narayam.i18n.php   2011-10-19 04:37:15 UTC (rev 
100212)
@@ -22,6 +22,7 @@
        'narayam-help-page' => 'Help:Typing',
        'narayam-checkbox-tooltip' => 'To toggle input method on and off', // 
FIXME: better message
        'narayam-disable-preference' => 'Disable Narayam Input Method Editor 
(IME)',
+       'narayam-more-imes' => 'More input methods',
        'narayam-am' => 'Amharic Transliteration',
        'narayam-as' => 'Assamese Transliteration',
        'narayam-as-avro' => 'Assamese Avro',

Modified: trunk/extensions/Narayam/Narayam.php
===================================================================
--- trunk/extensions/Narayam/Narayam.php        2011-10-19 04:06:16 UTC (rev 
100211)
+++ trunk/extensions/Narayam/Narayam.php        2011-10-19 04:37:15 UTC (rev 
100212)
@@ -147,136 +147,137 @@
                'narayam-help',
                'narayam-help-page',
                'narayam-toggle-ime',
+               'narayam-more-imes',
+               'narayam-am',
+               'narayam-as',
+               'narayam-as-avro',
+               'narayam-as-bornona',
+               'narayam-as-inscript',
+               'narayam-eo',
+               'narayam-hi-inscript',
+               'narayam-kn',
+               'narayam-kn-inscript',
+               'narayam-ml',
+               'narayam-ml-inscript' ,
+               'narayam-ne',
+               'narayam-ne-inscript',
+               'narayam-or',
+               'narayam-or-inscript',
+               'narayam-sa',
+               'narayam-sa-inscript',
+               'narayam-si-singlish',
+               'narayam-si-wijesekara',
+               'narayam-ta99',
+               'narayam-ta',
+               'narayam-ta-bamini',
+               'narayam-te-inscript',
+               'narayam-bn-avro',
+               'narayam-bn-inscript',
+               'narayam-bn-nkb',
        ),
        'dependencies' => array( 'mediawiki.util', 'jquery.textSelection' ),
 );
 $wgResourceModules['ext.narayam.rules.am'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.am.js',
-       'messages' => array( 'narayam-am' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.as'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.as.js',
-       'messages' => array( 'narayam-as' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.as-avro'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.as-avro.js',
-       'messages' => array( 'narayam-as-avro' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.as-bornona'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.as-bornona.js',
-       'messages' => array( 'narayam-as-bornona' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.as-inscript'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.as-inscript.js',
-       'messages' => array( 'narayam-as-inscript' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.bn-avro'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.bn-avro.js',
-       'messages' => array( 'narayam-bn-avro' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.bn-inscript'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.bn-inscript.js',
-       'messages' => array( 'narayam-bn-inscript' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.bn-nkb'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.bn-nkb.js',
-       'messages' => array( 'narayam-bn-nkb' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.eo'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.eo.js',
-       'messages' => array( 'narayam-eo' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.hi-inscript'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.hi-inscript.js',
-       'messages' => array( 'narayam-hi-inscript' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.kn'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.kn.js',
-       'messages' => array( 'narayam-kn' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.kn-inscript'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.kn-inscript.js',
-       'messages' => array( 'narayam-kn-inscript' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.ml'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.ml.js',
-       'messages' => array( 'narayam-ml' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.ml-inscript'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.ml-inscript.js',
-       'messages' => array( 'narayam-ml-inscript' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.ne'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.ne.js',
-       'messages' => array( 'narayam-ne' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.ne-inscript'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.ne-inscript.js',
-       'messages' => array( 'narayam-ne-inscript' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.or'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.or.js',
-       'messages' => array( 'narayam-or' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.or-inscript'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.or-inscript.js',
-       'messages' => array( 'narayam-or-inscript' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.sa'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.sa.js',
-       'messages' => array( 'narayam-sa' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.sa-inscript'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.sa-inscript.js',
-       'messages' => array( 'narayam-sa-inscript' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.si-singlish'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.si-singlish.js',
-       'messages' => array( 'narayam-si-singlish' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.si-wijesekara'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.si-wijesekara.js',
-       'messages' => array( 'narayam-si-wijesekara' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.ta'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.ta.js',
-       'messages' => array( 'narayam-ta' ),
        'dependencies' => 'ext.narayam.core',
 );
 $wgResourceModules['ext.narayam.rules.ta99'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.ta99.js',
-       'messages' => array( 'narayam-ta99' ),
        'dependencies' => 'ext.narayam.rules.ta', // make sure ta99 loads after 
ta
 );
 $wgResourceModules['ext.narayam.rules.ta-bamini'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.ta-bamini.js',
-       'messages' => array( 'narayam-ta-bamini' ),
        'dependencies' => 'ext.narayam.rules.ta', // make sure ta99 loads after 
ta
 );
 $wgResourceModules['ext.narayam.rules.te-inscript'] = $narayamTpl + array(
        'scripts' => 'js/ext.narayam.rules.te-inscript.js',
-       'messages' => array( 'narayam-te-inscript' ),
        'dependencies' => 'ext.narayam.core',
 );

Modified: trunk/extensions/Narayam/css/ext.narayam.core.css
===================================================================
--- trunk/extensions/Narayam/css/ext.narayam.core.css   2011-10-19 04:06:16 UTC 
(rev 100211)
+++ trunk/extensions/Narayam/css/ext.narayam.core.css   2011-10-19 04:37:15 UTC 
(rev 100212)
@@ -139,3 +139,16 @@
        /* @embed */
        background: url('../images/narayam-inactive.png') no-repeat scroll left 
top transparent;
 }
+
+li.narayam-more-imes-link{
+       /* @embed */
+       background: url('../images/closed-ltr.png') no-repeat scroll left 
center transparent;
+}
+
+li.narayam-more-imes-link.open{
+       /* @embed */
+       background: url('../images/open.png') no-repeat scroll left center 
transparent;
+}
+li.narayam-more-imes-link a{
+       padding-left:10px;
+}

Added: trunk/extensions/Narayam/images/closed-ltr.png
===================================================================
(Binary files differ)


Property changes on: trunk/extensions/Narayam/images/closed-ltr.png
___________________________________________________________________
Added: svn:mime-type
   + image/png

Added: trunk/extensions/Narayam/images/closed-rtl.png
===================================================================
(Binary files differ)


Property changes on: trunk/extensions/Narayam/images/closed-rtl.png
___________________________________________________________________
Added: svn:mime-type
   + image/png

Added: trunk/extensions/Narayam/images/open.png
===================================================================
(Binary files differ)


Property changes on: trunk/extensions/Narayam/images/open.png
___________________________________________________________________
Added: svn:mime-type
   + image/png

Modified: trunk/extensions/Narayam/js/ext.narayam.core.js
===================================================================
--- trunk/extensions/Narayam/js/ext.narayam.core.js     2011-10-19 04:06:16 UTC 
(rev 100211)
+++ trunk/extensions/Narayam/js/ext.narayam.core.js     2011-10-19 04:37:15 UTC 
(rev 100212)
@@ -30,6 +30,9 @@
        // This object is formatted as { 'schemename': '', 'schemename2': '', 
... }
        // for easy searching
        var availableSchemes = mw.config.get( 'wgNarayamAvailableSchemes' ) || 
{};
+       // All input methods. This will be used for selecting input methods 
from languages
+       // other than uselang- optionally
+       var allImes =  mw.config.get( 'wgNarayamAllSchemes' ) || {};
        // Currently selected scheme
        var currentScheme = null;
        // Shortcut key for turning Narayam on and off
@@ -389,12 +392,9 @@
         * @return True if added, false if not
         */
        this.addScheme = function( name, data ) {
-               if ( name in availableSchemes ) {
-                       schemes[name] = data;
-                       return true;
-               } else {
-                       return false;
-               }
+               schemes[name] = data;
+               return true;
+               
        };
        
        /**
@@ -402,10 +402,14 @@
         * @param name String
         */
        this.setScheme = function( name ) {
-               if ( name in schemes ) {
-                       currentScheme = schemes[name];
+               currentScheme = schemes[name];
+               if ( currentScheme ){
                        $.cookie( 'narayam-scheme', name, { 'path': '/', 
'expires': 30 } );
+                       return true;
                }
+               else {
+                       return false;
+               }
        };
        
        /**
@@ -500,6 +504,52 @@
                        .text( mw.msg( 'narayam-toggle-ime', shortcutText() ) )
                        .prepend( $checkbox )
                        .attr( 'title', mw.msg( 'narayam-checkbox-tooltip' ) );
+               
+                       $narayamMenuItems.append( $( '<li 
class="narayam-more-imes-link" />')
+                       .append(
+                               $( '<a/>' )
+                                       .text( mw.msg( 'narayam-more-imes' ) )
+                                       .click( function() {
+                                               
$('.narayam-scheme-dynamic-item').toggle('fast');
+                                               if( 
$('li.narayam-more-imes-link').hasClass( 'open' )){
+                                                       
$('li.narayam-more-imes-link').removeClass('open');
+                                               }else{
+                                                       
$('li.narayam-more-imes-link').addClass('open');
+                                               }
+                                       })
+                               )
+               );
+
+               for ( var lang in allImes ) {
+                       var langschemes = allImes[lang];
+                       for ( var langscheme in langschemes ) {
+                                
+                               var $input = $( '<input type="radio" 
name="narayam-input-method" class="narayam-scheme-dynamic" />' );
+                               $input
+                                       .attr( 'id', 'narayam-' + langscheme )
+                                       .val( langscheme );
+                                       
+                               var $narayamMenuItemLabel = $( '<label />' )
+                                               .attr( 'for' ,'narayam-' + 
langscheme )
+                                               .append( $input )
+                                               .append( mw.html.escape( 
mw.msg( "narayam-"+ langscheme ) ) );
+                               
+                               var $narayamMenuItem = $( '<li 
class="narayam-scheme-dynamic-item" />' )
+                                       .append( $input )
+                                       .append( $narayamMenuItemLabel );
+                                       
+                               $narayamMenuItems.append( $narayamMenuItem );
+                               
+                       }
+               }       
+               
+               // Event listener for scheme selection - dynamic loading of 
rules.
+               $( '.narayam-scheme-dynamic', $( '#narayam-menu-items > ul')[0] 
).live( 'click', function() {
+                       var curVal =  $(this).val();
+                       mw.loader.using( "ext.narayam.rules." + $(this).val() , 
 function() {
+                               that.setScheme( curVal )
+                       });
+               } );
                        
                var helppage = mw.msg( 'narayam-help-page' );
                if ( helppage ) {
@@ -546,7 +596,7 @@
                                $( '#searchform' ).css( 'visibility', 'visible' 
);
                        });
                }
-               
+               $('.narayam-scheme-dynamic-item').hide();
                // Narayam controls setup complete, returns true
                return true;
        };      


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to