http://www.mediawiki.org/wiki/Special:Code/MediaWiki/56220
Revision: 56220
Author: tparscal
Date: 2009-09-12 04:46:11 +0000 (Sat, 12 Sep 2009)
Log Message:
-----------
Resotred automatic ellipsis for suggestions, added autoEllipse plugin. Also
noticed that namespaceSelect needed to be added to list of combined and
minified scripts. Ellipis seems a little screwy still - working on getting it
to be more stable.
Modified Paths:
--------------
trunk/extensions/UsabilityInitiative/SimpleSearch/SimpleSearch.js
trunk/extensions/UsabilityInitiative/UsabilityInitiative.hooks.php
trunk/extensions/UsabilityInitiative/combine.sh
trunk/extensions/UsabilityInitiative/css/combined.css
trunk/extensions/UsabilityInitiative/css/combined.min.css
trunk/extensions/UsabilityInitiative/css/suggestions.css
trunk/extensions/UsabilityInitiative/js/plugins/jquery.suggestions.js
trunk/extensions/UsabilityInitiative/js/plugins.combined.js
trunk/extensions/UsabilityInitiative/js/plugins.combined.min.js
Added Paths:
-----------
trunk/extensions/UsabilityInitiative/js/plugins/jquery.autoEllipse.js
Modified: trunk/extensions/UsabilityInitiative/SimpleSearch/SimpleSearch.js
===================================================================
--- trunk/extensions/UsabilityInitiative/SimpleSearch/SimpleSearch.js
2009-09-12 00:22:24 UTC (rev 56219)
+++ trunk/extensions/UsabilityInitiative/SimpleSearch/SimpleSearch.js
2009-09-12 04:46:11 UTC (rev 56220)
@@ -80,27 +80,28 @@
render: function( query ) {
var perfectMatch = false;
$j(this).closest( '.suggestions'
).find( '.suggestions-results div' ).each( function() {
- if ( $j(this).text() == query )
{
+ if ( $j(this).data( 'text' ) ==
query ) {
perfectMatch = true;
}
} );
if ( perfectMatch ) {
if ( $j(this).children().size()
== 0 ) {
- $j(this).append(
- $j( '<div />' )
-
.addClass( 'special-label' )
- .text(
gM( 'simplesearch-containing' ) )
- );
- $j(this).append(
- $j( '<span />'
).addClass( 'special-query' ).text( query )
- );
$j(this).show();
+ $label = $j( '<div />' )
+ .addClass(
'special-label' )
+ .text( gM(
'simplesearch-containing' ) )
+ .appendTo(
$j(this) );
+ $query = $j( '<span />'
)
+ .addClass(
'special-query' )
+ .text( query )
+ .appendTo(
$j(this) );
+ $query.autoEllipse();
} else {
- $j(this).find(
'.special-query' ).text( query );
+ $j(this).find(
'.special-query' ).empty().text( query ).autoEllipse();
}
} else {
+ $j(this).hide();
$j(this).empty();
- $j(this).hide();
}
},
select: function( $textbox ) {
Modified: trunk/extensions/UsabilityInitiative/UsabilityInitiative.hooks.php
===================================================================
--- trunk/extensions/UsabilityInitiative/UsabilityInitiative.hooks.php
2009-09-12 00:22:24 UTC (rev 56219)
+++ trunk/extensions/UsabilityInitiative/UsabilityInitiative.hooks.php
2009-09-12 04:46:11 UTC (rev 56220)
@@ -18,10 +18,10 @@
private static $styleFiles = array(
'base_sets' => array(
'raw' => array(
- array( 'src' => 'css/suggestions.css',
'version' => 5 ),
+ array( 'src' => 'css/suggestions.css',
'version' => 6 ),
array( 'src' => 'css/wikiEditor.css', 'version'
=> 4 ),
array( 'src' => 'css/wikiEditor.toolbar.css',
'version' => 5 ),
- array( 'src' => 'css/wikiEditor.dialogs.css',
'version' => 2 ),
+ array( 'src' => 'css/wikiEditor.dialogs.css',
'version' => 1 ),
array( 'src' => 'css/wikiEditor.toc.css',
'version' => 5 ),
array( 'src' =>
'css/vector/jquery-ui-1.7.2.css', 'version' => '1.7.2' ),
),
@@ -57,22 +57,23 @@
'base_sets' => array(
'raw' => array(
array( 'src' => 'js/plugins/jquery.async.js',
'version' => 3 ),
+ array( 'src' =>
'js/plugins/jquery.autoEllipse.js', 'version' => 1 ),
array( 'src' => 'js/plugins/jquery.browser.js',
'version' => 3 ),
array( 'src' => 'js/plugins/jquery.cookie.js',
'version' => 3 ),
- array( 'src' =>
'js/plugins/jquery.namespaceSelect.js', 'version' => 0 ),
- array( 'src' =>
'js/plugins/jquery.suggestions.js', 'version' => 2 ),
- array( 'src' =>
'js/plugins/jquery.textSelection.js', 'version' => 10 ),
+ array( 'src' =>
'js/plugins/jquery.namespaceSelect.js', 'version' => 1 ),
+ array( 'src' =>
'js/plugins/jquery.suggestions.js', 'version' => 1 ),
+ array( 'src' =>
'js/plugins/jquery.textSelection.js', 'version' => 9 ),
array( 'src' =>
'js/plugins/jquery.wikiEditor.js', 'version' => 4 ),
array( 'src' =>
'js/plugins/jquery.wikiEditor.toolbar.js', 'version' => 11 ),
- array( 'src' =>
'js/plugins/jquery.wikiEditor.dialogs.js', 'version' => 2 ),
- array( 'src' =>
'js/plugins/jquery.wikiEditor.toc.js', 'version' => 8 ),
+ array( 'src' =>
'js/plugins/jquery.wikiEditor.dialogs.js', 'version' => 1 ),
+ array( 'src' =>
'js/plugins/jquery.wikiEditor.toc.js', 'version' => 5 ),
array( 'src' => 'js/js2/jquery-ui-1.7.2.js',
'version' => '1.7.2x' ),
),
'combined' => array(
- array( 'src' => 'js/plugins.combined.js',
'version' => 19 ),
+ array( 'src' => 'js/plugins.combined.js',
'version' => 18 ),
),
'minified' => array(
- array( 'src' => 'js/plugins.combined.min.js',
'version' => 19 ),
+ array( 'src' => 'js/plugins.combined.min.js',
'version' => 18 ),
),
),
);
Modified: trunk/extensions/UsabilityInitiative/combine.sh
===================================================================
--- trunk/extensions/UsabilityInitiative/combine.sh 2009-09-12 00:22:24 UTC
(rev 56219)
+++ trunk/extensions/UsabilityInitiative/combine.sh 2009-09-12 04:46:11 UTC
(rev 56220)
@@ -5,7 +5,7 @@
echo "Merging raw scripts and styles"
# Explicitly including scripts is important, because loading order is important
cat js/js2/jquery-1.3.2.js js/js2/jquery-ui-1.7.2.js js/js2/js2.js >
js/js2.combined.js
-cat js/plugins/jquery.async.js js/plugins/jquery.browser.js
js/plugins/jquery.cookie.js js/plugins/jquery.suggestions.js
js/plugins/jquery.textSelection.js js/plugins/jquery.wikiEditor.js
js/plugins/jquery.wikiEditor.dialogs.js js/plugins/jquery.wikiEditor.toolbar.js
js/plugins/jquery.wikiEditor.toc.js > js/plugins.combined.js
+cat js/plugins/jquery.async.js js/plugins/jquery.autoEllipse.js
js/plugins/jquery.browser.js js/plugins/jquery.cookie.js
js/plugins/jquery.namespaceSelect.js js/plugins/jquery.suggestions.js
js/plugins/jquery.textSelection.js js/plugins/jquery.wikiEditor.js
js/plugins/jquery.wikiEditor.dialogs.js js/plugins/jquery.wikiEditor.toolbar.js
js/plugins/jquery.wikiEditor.toc.js > js/plugins.combined.js
# Styles can be loaded in any order
cat css/*.css > css/combined.css
# For more info on JSMin, see: http://www.crockford.com/javascript/jsmin.html
Modified: trunk/extensions/UsabilityInitiative/css/combined.css
===================================================================
--- trunk/extensions/UsabilityInitiative/css/combined.css 2009-09-12
00:22:24 UTC (rev 56219)
+++ trunk/extensions/UsabilityInitiative/css/combined.css 2009-09-12
04:46:11 UTC (rev 56220)
@@ -39,6 +39,7 @@
padding: 0.25em 0.25em;
line-height: 1.25em;
margin: 0;
+ width: 100%;
}
.suggestions-result-current {
background-color: #4C59A6;
Modified: trunk/extensions/UsabilityInitiative/css/combined.min.css
===================================================================
--- trunk/extensions/UsabilityInitiative/css/combined.min.css 2009-09-12
00:22:24 UTC (rev 56219)
+++ trunk/extensions/UsabilityInitiative/css/combined.min.css 2009-09-12
04:46:11 UTC (rev 56220)
@@ -37,6 +37,7 @@
padding:0.25em 0.25em;
line-height:1.25em;
margin:0;
+width:100%;
}
.suggestions-result-current{
background-color:#4C59A6;
@@ -445,4 +446,4 @@
background-color:white;
text-decoration:none;
border-color:#a8d7f9;
-}
\ No newline at end of file
+}
Modified: trunk/extensions/UsabilityInitiative/css/suggestions.css
===================================================================
--- trunk/extensions/UsabilityInitiative/css/suggestions.css 2009-09-12
00:22:24 UTC (rev 56219)
+++ trunk/extensions/UsabilityInitiative/css/suggestions.css 2009-09-12
04:46:11 UTC (rev 56220)
@@ -39,6 +39,7 @@
padding: 0.25em 0.25em;
line-height: 1.25em;
margin: 0;
+ width: 100%;
}
.suggestions-result-current {
background-color: #4C59A6;
Added: trunk/extensions/UsabilityInitiative/js/plugins/jquery.autoEllipse.js
===================================================================
--- trunk/extensions/UsabilityInitiative/js/plugins/jquery.autoEllipse.js
(rev 0)
+++ trunk/extensions/UsabilityInitiative/js/plugins/jquery.autoEllipse.js
2009-09-12 04:46:11 UTC (rev 56220)
@@ -0,0 +1,21 @@
+/**
+ * Plugin that automatically truncates the plain text contents of an element
and adds an ellipsis
+ */
+( function( $ ) {
+
+$.fn.autoEllipse = function() {
+ $(this).each( function() {
+ var text = $(this).text();
+ var $text = $( '<span />' ).text( text ).css( 'whiteSpace',
'nowrap' );
+ $(this).empty().append( $text );
+ if ( $text.outerWidth() > $(this).outerWidth() ) {
+ var i = text.length;
+ while ( $text.outerWidth() > $(this).outerWidth() && i
> 0 ) {
+ $text.text( text.substr( 0, i ) + '...' );
+ i--;
+ }
+ }
+ } );
+};
+
+} )( jQuery );
\ No newline at end of file
Modified: trunk/extensions/UsabilityInitiative/js/plugins/jquery.suggestions.js
===================================================================
--- trunk/extensions/UsabilityInitiative/js/plugins/jquery.suggestions.js
2009-09-12 00:22:24 UTC (rev 56219)
+++ trunk/extensions/UsabilityInitiative/js/plugins/jquery.suggestions.js
2009-09-12 04:46:11 UTC (rev 56220)
@@ -125,14 +125,15 @@
$result = $( '<div />' )
.addClass(
'suggestions-result' )
.attr( 'rel', i
)
- .data( 'text',
context.config.suggestions[i] );
+ .data( 'text',
context.config.suggestions[i] )
+ .appendTo(
$results );
// Allow custom
rendering
if ( typeof
context.config.result.render == 'function' ) {
context.config.result.render.call( $result, context.config.suggestions[i] );
} else {
$result.text(
context.config.suggestions[i] );
+
$result.autoEllipse();
}
- $results.append(
$result );
}
// Update the size and position
of the list
context.data.$container.css( {
Modified: trunk/extensions/UsabilityInitiative/js/plugins.combined.js
===================================================================
--- trunk/extensions/UsabilityInitiative/js/plugins.combined.js 2009-09-12
00:22:24 UTC (rev 56219)
+++ trunk/extensions/UsabilityInitiative/js/plugins.combined.js 2009-09-12
04:46:11 UTC (rev 56220)
@@ -76,8 +76,28 @@
})(jQuery);
-/*
+/**
+ * Plugin that automatically truncates the plain text contents of an element
and adds an ellipsis
+ */
+( function( $ ) {
+$.fn.autoEllipse = function() {
+ $(this).each( function() {
+ var text = $(this).text();
+ var $text = $( '<span />' ).text( text ).css( 'whiteSpace',
'nowrap' );
+ $(this).empty().append( $text );
+ if ( $text.outerWidth() > $(this).outerWidth() ) {
+ var i = text.length;
+ while ( $text.outerWidth() > $(this).outerWidth() && i
> 0 ) {
+ $text.text( text.substr( 0, i ) + '...' );
+ i--;
+ }
+ }
+ } );
+};
+
+} )( jQuery );/*
+
jQuery Browser Plugin
* Version 2.3
* 2008-09-17 19:27:05
@@ -256,6 +276,26 @@
};
/**
+ * Plugin that fills a <select> with namespaces
+ */
+
+(function ($) {
+$.fn.namespaceSelector = function( defaultNS ) {
+ if ( typeof defaultNS == 'undefined' )
+ defaultNS = 0;
+ return this.each( function() {
+ for ( var id in wgFormattedNamespaces ) {
+ var opt = $( '<option />' )
+ .attr( 'value', id )
+ .text( wgFormattedNamespaces[id] );
+ if ( id == defaultNS )
+ opt.attr( 'selected', 'selected' );
+ opt.appendTo( $(this) );
+ }
+ });
+};})(jQuery);
+
+/**
* This plugin provides a generic way to add suggestions to a text box.
*
* Usage:
@@ -382,14 +422,15 @@
$result = $( '<div />' )
.addClass(
'suggestions-result' )
.attr( 'rel', i
)
- .data( 'text',
context.config.suggestions[i] );
+ .data( 'text',
context.config.suggestions[i] )
+ .appendTo(
$results );
// Allow custom
rendering
if ( typeof
context.config.result.render == 'function' ) {
context.config.result.render.call( $result, context.config.suggestions[i] );
} else {
$result.text(
context.config.suggestions[i] );
+
$result.autoEllipse();
}
- $results.append(
$result );
}
// Update the size and position
of the list
context.data.$container.css( {
Modified: trunk/extensions/UsabilityInitiative/js/plugins.combined.min.js
===================================================================
--- trunk/extensions/UsabilityInitiative/js/plugins.combined.min.js
2009-09-12 00:22:24 UTC (rev 56219)
+++ trunk/extensions/UsabilityInitiative/js/plugins.combined.min.js
2009-09-12 04:46:11 UTC (rev 56220)
@@ -11,19 +11,20 @@
{var
i=0,l=array.length,loop=opts.loop||function(){};$.whileAsync($.extend(opts,{test:function(){return
i<l;},loop:function()
{var val=array[i];return loop.call(val,i++,val);}}));}
$.fn.eachAsync=function(opts)
-{$.eachAsync(this,opts);return
this;}})(jQuery);(function($){$.browserTest=function(a,z){var
u='unknown',x='X',m=function(r,h){for(var
i=0;i<h.length;i=i+1){r=r.replace(h[i][0],h[i][1]);}
+{$.eachAsync(this,opts);return
this;}})(jQuery);(function($){$.fn.autoEllipse=function(){$(this).each(function(){var
text=$(this).text();var $text=$('<span
/>').text(text).css('whiteSpace','nowrap');$(this).empty().append($text);if($text.outerWidth()>$(this).outerWidth()){var
i=text.length;while($text.outerWidth()>$(this).outerWidth()&&i>0){$text.text(text.substr(0,i)+'...');i--;}}});};})(jQuery);(function($){$.browserTest=function(a,z){var
u='unknown',x='X',m=function(r,h){for(var
i=0;i<h.length;i=i+1){r=r.replace(h[i][0],h[i][1]);}
return r;},c=function(i,a,b,c){var
r={name:m((a.exec(i)||[u,u])[1],b)};r[r.name]=true;r.version=(c.exec(i)||[x,x,x,x])[3];if(r.name.match(/safari/)&&r.version>400){r.version='2.0';}
if(r.name==='presto'){r.version=($.browser.version>9.27)?'futhark':'linear_b';}
r.versionNumber=parseFloat(r.version,10)||0;r.versionX=(r.version!==x)?(r.version+'').substr(0,1):x;r.className=r.name+r.versionX;return
r;};a=(a.match(/Opera|Navigator|Minefield|KHTML|Chrome/)?m(a,[[/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/,''],['Chrome
Safari','Chrome'],['KHTML','Konqueror'],['Minefield','Firefox'],['Navigator','Netscape']]):a).toLowerCase();$.browser=$.extend((!z)?$.browser:{},c(a,/(camino|chrome|firefox|netscape|konqueror|lynx|msie|opera|safari)/,[],/(camino|chrome|firefox|netscape|netscape6|opera|version|konqueror|lynx|msie|safari)(\/|\s)([a-z0-9\.\+]*?)(\;|dev|rel|\s|$)/));$.layout=c(a,/(gecko|konqueror|msie|opera|webkit)/,[['konqueror','khtml'],['msie','trident'],['opera','presto']],/(applewebkit|rv|konqueror|msie)(\:|\/|\s)([a-z0-9\.]*?)(\;|\)|\s)/);$.os={name:(/(win|mac|linux|sunos|solaris|iphone)/.exec(navigator.platform.toLowerCase())||[u])[0].replace('sunos','solaris')};if(!z){$('html').addClass([$.os.name,$.browser.name,$.browser.className,$.layout.name,$.layout.className].join('
'));}};$.browserTest(navigator.userAgent);})(jQuery);jQuery.cookie=function(name,value,options){if(typeof
value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1;}
var expires='';if(options.expires&&(typeof
options.expires=='number'||options.expires.toUTCString)){var date;if(typeof
options.expires=='number'){date=new
Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}
expires='; expires='+date.toUTCString();}
var path=options.path?'; path='+(options.path):'';var domain=options.domain?';
domain='+(options.domain):'';var secure=options.secure?';
secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var
cookieValue=null;if(document.cookie&&document.cookie!=''){var
cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var
cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}
-return
cookieValue;}};(function($){$.suggestions={cancel:function(context){if(context.data.timerID!=null){clearTimeout(context.data.timerID);}
+return
cookieValue;}};(function($){$.fn.namespaceSelector=function(defaultNS){if(typeof
defaultNS=='undefined')
+defaultNS=0;return this.each(function(){for(var id in
wgFormattedNamespaces){var opt=$('<option
/>').attr('value',id).text(wgFormattedNamespaces[id]);if(id==defaultNS)
+opt.attr('selected','selected');opt.appendTo($(this));}});};})(jQuery);(function($){$.suggestions={cancel:function(context){if(context.data.timerID!=null){clearTimeout(context.data.timerID);}
if(typeof
context.config.cancel=='function'){context.config.cancel.call(context.data.$textbox);}},restore:function(context){context.data.$textbox.val(context.data.prevText);},update:function(context,delayed){function
maybeFetch(){if(context.data.$textbox.val()!==context.data.prevText){context.data.prevText=context.data.$textbox.val();if(typeof
context.config.fetch=='function'){context.config.fetch.call(context.data.$textbox,context.data.$textbox.val());}}}
if(context.data.timerID!=null){clearTimeout(context.data.timerID);}
if(delayed){context.data.timerID=setTimeout(maybeFetch,context.config.delay);}else{maybeFetch();}
-$.suggestions.special(context);},special:function(context){if(typeof
context.config.special.render=='function'){setTimeout(function(){$special=context.data.$container.find('.suggestions-special');context.config.special.render.call($special,context.data.$textbox.val());},1);}},configure:function(context,property,value){switch(property){case'fetch':case'cancel':case'special':case'result':case'$region':context.config[property]=value;break;case'suggestions':context.config[property]=value;if(typeof
context.data!=='undefined'){if(context.config.suggestions.length==0){context.data.$container.hide();}else{context.data.$container.show();var
$results=context.data.$container.children('.suggestions-results');$results.empty();for(var
i=0;i<context.config.suggestions.length;i++){$result=$('<div
/>').addClass('suggestions-result').attr('rel',i).data('text',context.config.suggestions[i]);if(typeof
context.config.result.render=='function'){context.config.result.render.call($result,context.config.suggestions[i]);}else{$result.text(context.config.suggestions[i]);}
-$results.append($result);}
+$.suggestions.special(context);},special:function(context){if(typeof
context.config.special.render=='function'){setTimeout(function(){$special=context.data.$container.find('.suggestions-special');context.config.special.render.call($special,context.data.$textbox.val());},1);}},configure:function(context,property,value){switch(property){case'fetch':case'cancel':case'special':case'result':case'$region':context.config[property]=value;break;case'suggestions':context.config[property]=value;if(typeof
context.data!=='undefined'){if(context.config.suggestions.length==0){context.data.$container.hide();}else{context.data.$container.show();var
$results=context.data.$container.children('.suggestions-results');$results.empty();for(var
i=0;i<context.config.suggestions.length;i++){$result=$('<div
/>').addClass('suggestions-result').attr('rel',i).data('text',context.config.suggestions[i]).appendTo($results);if(typeof
context.config.result.render=='function'){context.config.result.render.call($result,context.config.suggestions[i]);}else{$result.text(context.config.suggestions[i]);$result.autoEllipse();}}
context.data.$container.css({'top':context.config.$region.offset().top+context.config.$region.outerHeight(),'bottom':'auto','width':context.config.$region.outerWidth(),'height':'auto','left':context.config.$region.offset().left,'right':'auto'});}}
break;case'maxRows':context.config[property]=Math.max(1,Math.min(100,value));break;case'delay':context.config[property]=Math.max(0,Math.min(12000,value));break;case'submitOnClick':context.config[property]=value?true:false;break;}},highlight:function(context,result,updateTextbox){var
selected=context.data.$container.find('.suggestions-result-current')
if(!result.get||selected.get(0)!=result.get(0)){if(result=='prev'){result=selected.prev();}else
if(result=='next'){if(selected.size()==0)
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs