http://www.mediawiki.org/wiki/Special:Code/MediaWiki/56198
Revision: 56198
Author: catrope
Date: 2009-09-11 18:19:20 +0000 (Fri, 11 Sep 2009)
Log Message:
-----------
EditToolbar: Automatically resize dialogs to fit their content without breaking
lines. This doesn't work perfectly yet, but it's pretty close.
Modified Paths:
--------------
trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.js
trunk/extensions/UsabilityInitiative/js/plugins/jquery.wikiEditor.dialogs.js
Modified: trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.js
===================================================================
--- trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.js
2009-09-11 18:15:52 UTC (rev 56197)
+++ trunk/extensions/UsabilityInitiative/EditToolbar/EditToolbar.js
2009-09-11 18:19:20 UTC (rev 56198)
@@ -936,7 +936,6 @@
});
},
dialog: {
- width: 550, // FIXME: autoresize width
buttons: {
'edittoolbar-tool-link-insert': function() {
function escapeInternalText( s ) {
@@ -1069,7 +1068,6 @@
$j( '#edittoolbar-table-dimensions-columns' ).val( 2 );
},
dialog: {
- width: 350, // FIXME: autoresize
buttons: {
'edittoolbar-tool-table-insert': function() {
var rows = parseInt( $j(
'#edittoolbar-table-dimensions-rows' ).val() );
@@ -1139,7 +1137,6 @@
});
},
dialog: {
- width: 350, // FIXME: autoresize width
buttons: {
'edittoolbar-tool-replace-button': function() {
var searchStr = $j(
'#edittoolbar-replace-search' ).val();
Modified:
trunk/extensions/UsabilityInitiative/js/plugins/jquery.wikiEditor.dialogs.js
===================================================================
---
trunk/extensions/UsabilityInitiative/js/plugins/jquery.wikiEditor.dialogs.js
2009-09-11 18:15:52 UTC (rev 56197)
+++
trunk/extensions/UsabilityInitiative/js/plugins/jquery.wikiEditor.dialogs.js
2009-09-11 18:19:20 UTC (rev 56198)
@@ -67,9 +67,51 @@
.data( 'context', context )
.appendTo( $( 'body' ) )
.each( module.init )
- .dialog( configuration );
+ .dialog( configuration )
+ .bind( 'dialogopen',
$.wikiEditor.modules.dialogs.fn.resize )
+ .find( '.ui-tabs' ).bind( 'tabsshow',
function() {
+ $(this).closest(
'.ui-dialog-content' ).each(
+
$.wikiEditor.modules.dialogs.fn.resize );
+ });
}
}
+ },
+
+ /**
+ * Resize a dialog so its contents fit
+ *
+ * Usage: dialog.each( resize ); or dialog.bind( 'blah', resize );
+ */
+ resize: function() {
+ var wrapper = $(this).closest( '.ui-dialog' );
+ // Make sure elements don't wrapped so we get an accurate idea
+ // of whether they really fit. Also temporarily show hidden
+ // elements.
+
+ // Work around jQuery bug where <div style="display:inline;" />
+ // inside a dialog is both :visible and :hidden
+ var oldHidden = $(this).find( '*' ).not( ':visible' );
+
+ // Save the style attributes of the hidden elements to restore
+ // them later. Calling hide() after show() messes up for
+ // elements hidden with a class
+ oldHidden.each( function() {
+ $(this).data( 'oldstyle', $(this).attr( 'style' ) );
+ });
+ oldHidden.show();
+ var oldWS = $(this).css( 'white-space' );
+ $(this).css( 'white-space', 'nowrap' );
+
+ if ( wrapper.width() <= $(this).get(0).scrollWidth ) {
+ $(this).width( $(this).get(0).scrollWidth );
+ wrapper.width( wrapper.get(0).scrollWidth );
+ $(this).dialog( { 'width': wrapper.width() } );
+ }
+
+ $(this).css( 'white-space', oldWS );
+ oldHidden.each( function() {
+ $(this).attr( 'style', $(this).data( 'oldstyle' ) );
+ });
}
},
'modules': {}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs