diff --git a/lib/scripts/page.js b/lib/scripts/page.js index 74dec37fb6ec311d6e64f7fed848d1d2c9080406..78943be7a96ca107b4e9146542c90550e86438d3 100644 --- a/lib/scripts/page.js +++ b/lib/scripts/page.js @@ -102,7 +102,7 @@ dw_page = { * @param selector handle What should be clicked to toggle * @param selector content This element will be toggled */ - makeToggle: function(handle, content){ + makeToggle: function(handle, content, state){ var $handle, $content, $clicky, $child, setClicky; $handle = jQuery(handle); if(!$handle.length) return; @@ -125,32 +125,44 @@ dw_page = { } }; - // the state indicator - $clicky = jQuery(document.createElement('strong')); + $handle[0].setState = function(state){ + var hidden; + if(!state) state = 1; - // click function - $handle.css('cursor','pointer') - .click(function () { - var hidden; + // Assert that content instantly takes the whole space + $content.css('height', $content.height()).show(); - // Assert that content instantly takes the whole space - $content.css('height', $content.height()).show(); + // stop any running animation + $child.stop(true, true); - // stop any running animation and get current state - hidden = $child.stop(true, true).is(':hidden'); + // was a state given or do we toggle? + if(state === -1) { + hidden = false; + } else if(state === 1) { + hidden = true; + } else { + hidden = $child.is(':hidden'); + } - // update the state - setClicky(!hidden); + // update the state + setClicky(!hidden); - // Start animation and assure that $toc is hidden/visible - $child.dw_toggle(hidden, function () { - $content.toggle(hidden); - }); - }) + // Start animation and assure that $toc is hidden/visible + $child.dw_toggle(hidden, function () { + $content.toggle(hidden); + }); + }; + + // the state indicator + $clicky = jQuery(document.createElement('strong')); + + // click function + $handle.css('cursor','pointer') + .click($handle[0].setState) .prepend($clicky); // initial state - setClicky(); + $handle[0].setState(state); } }; diff --git a/lib/tpl/dokuwiki/script.js b/lib/tpl/dokuwiki/script.js index 75575608befb1074488aab547b5a268cb17750cf..d32cf5cffab8d9a7e5bfbf73534bc5de550f8361 100644 --- a/lib/tpl/dokuwiki/script.js +++ b/lib/tpl/dokuwiki/script.js @@ -1,14 +1,32 @@ function tpl_dokuwiki_mobile(){ // check if we are in mobile or tablet mode be sure to adjust the number // here when adjusting it in the css - if(document.body.clientWidth > 979) return; + var $handle = jQuery('#dokuwiki__aside h3.toggle'); + var $toc = jQuery('#dw__toc h3'); + if(document.body.clientWidth > 979) { + console.log('desktop'); + // reset for desktop mode + $handle[0].setState(1); + $handle.hide(); + $toc[0].setState(1); + } else { + console.log('mobile'); + // toc and sidebar hiding + $handle.show(); + $handle[0].setState(-1); + $toc[0].setState(-1); + } +} - // toc and sidebar hiding +jQuery(function(){ + var resizeTimer; dw_page.makeToggle('#dokuwiki__aside h3.toggle','#dokuwiki__aside div.content'); - jQuery('#dw__toc h3.toggle').click(); - jQuery('#dokuwiki__aside h3.toggle').show().click(); -} - -jQuery(tpl_dokuwiki_mobile); -jQuery(window).bind('resize',tpl_dokuwiki_mobile); + tpl_dokuwiki_mobile(); + jQuery(window).bind('resize', + function(){ + if (resizeTimer) clearTimeout(resizeTimer); + resizeTimer = setTimeout(tpl_dokuwiki_mobile,200); + } + ); +});