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