1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /**
- * We handle several device classes based on browser width.
- *
- * - desktop: > __tablet_width__ (as set in style.ini)
- * - mobile:
- * - tablet <= __tablet_width__
- * - phone <= __phone_width__
- */
- var device_class = ''; // not yet known
- var device_classes = 'desktop mobile tablet phone';
- function tpl_dokuwiki_mobile(){
- // the z-index in mobile.css is (mis-)used purely for detecting the screen mode here
- var screen_mode = jQuery('#screen__mode').css('z-index') + '';
- // determine our device pattern
- // TODO: consider moving into dokuwiki core
- switch (screen_mode) {
- case '1':
- if (device_class.match(/tablet/)) return;
- device_class = 'mobile tablet';
- break;
- case '2':
- if (device_class.match(/phone/)) return;
- device_class = 'mobile phone';
- break;
- default:
- if (device_class == 'desktop') return;
- device_class = 'desktop';
- }
- jQuery('html').removeClass(device_classes).addClass(device_class);
- // handle some layout changes based on change in device
- var $handle = jQuery('#dokuwiki__aside h3.toggle');
- var $toc = jQuery('#dw__toc h3');
- if (device_class == 'desktop') {
- // reset for desktop mode
- if($handle.length) {
- $handle[0].setState(1);
- $handle.hide();
- }
- if($toc.length) {
- $toc[0].setState(1);
- }
- }
- if (device_class.match(/mobile/)){
- // toc and sidebar hiding
- if($handle.length) {
- $handle.show();
- $handle[0].setState(-1);
- }
- if($toc.length) {
- $toc[0].setState(-1);
- }
- }
- }
- jQuery(function(){
- var resizeTimer;
- dw_page.makeToggle('#dokuwiki__aside h3.toggle','#dokuwiki__aside div.content');
- tpl_dokuwiki_mobile();
- jQuery(window).on('resize',
- function(){
- if (resizeTimer) clearTimeout(resizeTimer);
- resizeTimer = setTimeout(tpl_dokuwiki_mobile,200);
- }
- );
- // increase sidebar length to match content (desktop mode only)
- var sidebar_height = jQuery('.desktop #dokuwiki__aside').height();
- var pagetool_height = jQuery('.desktop #dokuwiki__pagetools ul:first').height();
- // pagetools div has no height; ul has a height
- var content_min = Math.max(sidebar_height || 0, pagetool_height || 0);
- var content_height = jQuery('#dokuwiki__content div.page').height();
- if(content_min && content_min > content_height) {
- var $content = jQuery('#dokuwiki__content div.page');
- $content.css('min-height', content_min);
- }
- // blur when clicked
- jQuery('#dokuwiki__pagetools div.tools>ul>li>a').on('click', function(){
- this.blur();
- });
- });
|