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

Revision: 54977
Author:   catrope
Date:     2009-08-13 22:27:39 +0000 (Thu, 13 Aug 2009)

Log Message:
-----------
EditToolbar: Add smart autofilling to link CGD. Parses the selection so that 
selecting [[Foo|Bar]] will result in Link target: Foo and Link text: Bar being 
filled out. 

Modified Paths:
--------------
    trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.js
    trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.php

Modified: trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.js
===================================================================
--- trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.js     
2009-08-13 22:19:34 UTC (rev 54976)
+++ trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.js     
2009-08-13 22:27:39 UTC (rev 54977)
@@ -86,6 +86,7 @@
                                                                $j( 
'#edittoolbar-link-int-text' ).bind( 'keypress paste', function() {
                                                                        
$j(this).data( 'untouched', false );
                                                                });
+                                                               $j( 
'#edittoolbar-link-ext-target' ).val( 'http://' );
                                                                
                                                                // Page 
existence check widget
                                                                var existsImg = 
$j.wikiEditor.modules.toolbar.imgPath + 'insert-link-exists.png';
@@ -239,13 +240,43 @@
                                                                        
$j(this).find( 'input' ).val( '' );
                                                                },
                                                                open: 
function() {
-                                                                       // 
Pre-fill text fields
-                                                                       // 
val() doesn't trigger the change event, so let's do that ourselves
-                                                                       $j( 
'#edittoolbar-link-int-text, #edittoolbar-link-ext-text, 
#edittoolbar-link-int-target' )
-                                                                               
.val( $j(this).data( 'context' ).$textarea.getSelection() )
-                                                                               
.change();
-                                                                       $j( 
'#edittoolbar-link-ext-target' ).val( 'http://' ).change();
-                                                                       $j( 
'#edittoolbar-link-int-text' ).data( 'untouched', true );
+                                                                       // 
Smart pre-fill text fields
+                                                                       // 
TODO: Replace selection, replace button
+                                                                       // 
TODO: Don't clear fields in other tab
+                                                                       var 
selection = $j(this).data( 'context' ).$textarea.getSelection();
+                                                                       if ( 
selection != '' ) {
+                                                                               
var inttext, inttarget, exttext, exttarget;
+                                                                               
var matches;
+                                                                               
var tab = -1;
+                                                                               
if ( ( matches = selection.match( /^\s*\[\[([^\]\|]+)(\|([^\]\|]*))?\]\]\s*$/ ) 
) ) {
+                                                                               
        // [[foo|bar]] or [[foo]]
+                                                                               
        inttarget = matches[1];
+                                                                               
        inttext = ( matches[3] ? matches[3] : matches[1] );
+                                                                               
        exttarget = 'http://';
+                                                                               
        exttext = '';
+                                                                               
        tab = 0;
+                                                                               
} else if ( ( matches = selection.match( /^\s*\[([^\] ]+)( ([^\]]+))?\]\s*$/ ) 
) ) {
+                                                                               
        // [http://www.example.com foo] or [http://www.example.com]
+                                                                               
        exttarget = matches[1];
+                                                                               
        exttext = ( matches[3] ? matches[3] : '' );
+                                                                               
        inttarget = '';
+                                                                               
        inttext = '';
+                                                                               
        tab = 1;
+                                                                               
} else {
+                                                                               
        inttarget = inttext = exttext = selection;
+                                                                               
        exttarget = 'http://';
+                                                                               
}
+                                                                               
+                                                                               
// val() doesn't trigger the change event, so let's do that ourselves
+                                                                               
$j( '#edittoolbar-link-int-text' ).val( inttext ).change();
+                                                                               
$j( '#edittoolbar-link-int-target' ).val( inttarget ).change();
+                                                                               
$j( '#edittoolbar-link-ext-text' ).val( exttext ).change();
+                                                                               
$j( '#edittoolbar-link-ext-target' ).val( exttarget ).change();
+                                                                               
if ( tab != -1 )
+                                                                               
        $j( '#edittoolbar-link-tabs' ).tabs( 'select', tab );
+                                                                       }
+                                                                       if ( 
$j( '#edittoolbar-link-int-text' ).val() == $j( '#edittoolbar-link-int-target' 
).val() )
+                                                                               
$j( '#edittoolbar-link-int-text' ).data( 'untouched', true );
                                                                }
                                                        }
                                                }

Modified: trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.php
===================================================================
--- trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.php    
2009-08-13 22:19:34 UTC (rev 54976)
+++ trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.php    
2009-08-13 22:27:39 UTC (rev 54977)
@@ -19,7 +19,7 @@
 /* Configuration */
 
 // Bump the version number every time you change any of the .css/.js files
-$wgEditToolbarStyleVersion = 23;
+$wgEditToolbarStyleVersion = 24;
 
 // Set this to true to simply override the stock toolbar for everyone
 $wgEditToolbarGlobalEnable = false;



_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to