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

Revision: 58287
Author:   adam
Date:     2009-10-28 21:29:57 +0000 (Wed, 28 Oct 2009)

Log Message:
-----------
adding the plugin for the collapsible toc

Added Paths:
-----------
    
trunk/extensions/UsabilityInitiative/js/plugins/jquery.wikiEditor.tocCollapse.js

Added: 
trunk/extensions/UsabilityInitiative/js/plugins/jquery.wikiEditor.tocCollapse.js
===================================================================
--- 
trunk/extensions/UsabilityInitiative/js/plugins/jquery.wikiEditor.tocCollapse.js
                            (rev 0)
+++ 
trunk/extensions/UsabilityInitiative/js/plugins/jquery.wikiEditor.tocCollapse.js
    2009-10-28 21:29:57 UTC (rev 58287)
@@ -0,0 +1,92 @@
+/* TOC Module for wikiEditor */
+( function( $ ) { $.wikiEditor.modules.tocCollapse = {
+
+/**
+ * API accessible functions
+ */
+api: {
+       //
+},
+/**
+ * Internally used functions
+ */
+fn: {
+       /**
+        * Creates a table of contents module within a wikiEditor
+        * 
+        * @param {Object} context Context object of editor to create module in
+        * @param {Object} config Configuration object to create module from
+        */
+       create: function( context, config ) {
+               
+               context.$ui.find( '.wikiEditor-ui-bottom' )
+                       .append( context.modules.$toc );
+               
+               if ( '$toc' in context.modules ) {
+                       return;
+               }
+               context.modules.$tocCollapse = $( '<div />' )
+                       .addClass( 'wikiEditor-ui-toc' )
+                       .attr( 'id', 'wikiEditor-ui-toc' );
+               // If we ask for this later (after we insert the TOC) then in 
IE this measurement will be incorrect
+               var height = context.$ui.find( '.wikiEditor-ui-bottom' 
).height()
+               context.$ui.find( '.wikiEditor-ui-bottom' )
+                       .append( context.modules.$toc );
+               context.modules.$toc.height(
+                       context.$ui.find( '.wikiEditor-ui-bottom' ).height()
+               );
+               // Make some css modifications to make room for the toc on the 
right...
+               // Perhaps this could be configurable?
+               context.modules.$toc.css( { 'width': 
$.wikiEditor.modules.toc.defaults.width, 'marginTop': -( height ) } );
+               context.$ui.find( '.wikiEditor-ui-text' )
+                       .css( ( $( 'body.rtl' ).size() ? 'marginLeft' : 
'marginRight' ), $.wikiEditor.modules.toc.defaults.width );
+               // Add the TOC to the document
+               $.wikiEditor.modules.tocCollapse.fn.build( context, config );
+       },
+
+       /**
+        * Builds table of contents
+        * 
+        * @param {Object} context
+        */
+       build: function( context ) {
+               function buildCollapseBar() {
+                       var $collapseBar = $( '<div />' )
+                               .addClass( 'wikiEditor-ui-toc-collapse-open' )
+                               .attr( 'id', 'wikiEditor-ui-toc-colapse' )
+                               .data( 'oWidth', 
$.wikiEditor.modules.toc.defaults.width)
+                               .bind('mouseup', function(){
+                                       var $e = $(this);
+                                       var close = 
$e.hasClass('wikiEditor-ui-toc-collapse-open');
+                                       if(close) {
+                                               $e.parent()
+                                                       .animate( {'width': 
$e.outerWidth()}, 'fast', function() {
+                                                                       
$(this).find('ul:first').hide();
+                                                               } )
+                                                       .prev()
+                                                       .animate( 
{'marginRight': $e.outerWidth()}, 'fast', function(){
+                                                               
$('#wikiEditor-ui-toc-colapse')
+                                                                       
.removeClass('wikiEditor-ui-toc-collapse-open')
+                                                                       
.addClass('wikiEditor-ui-toc-collapse-closed');
+                                                       });
+                                       } else {
+                                               $e.siblings().show()
+                                               .parent()
+                                                       .animate( {'width': 
$e.data('oWidth')}, 'fast' )
+                                                       .prev()
+                                                       .animate( 
{'marginRight': $e.data('oWidth')}, 'fast', function(){
+                                                               
$('#wikiEditor-ui-toc-colapse')
+                                                                       
.removeClass('wikiEditor-ui-toc-collapse-closed')
+                                                                       
.addClass('wikiEditor-ui-toc-collapse-open');
+                                                       });
+                                       }
+                                       
+                               });
+                       return $collapseBar;
+                       
+               }
+               context.modules.$tocCollapse.html( buildCollapseBar() );
+       }
+}
+
+}; } ) ( jQuery );



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

Reply via email to