[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/lib/tpl/dokuwiki/ -> script.js (source)

   1  /**
   2   *  We handle several device classes based on browser width.
   3   *
   4   *  - desktop:   > __tablet_width__ (as set in style.ini)
   5   *  - mobile:
   6   *    - tablet   <= __tablet_width__
   7   *    - phone    <= __phone_width__
   8   */
   9  var device_class = ''; // not yet known
  10  var device_classes = 'desktop mobile tablet phone';
  11  
  12  function tpl_dokuwiki_mobile(){
  13  
  14      // the z-index in mobile.css is (mis-)used purely for detecting the screen mode here
  15      var screen_mode = jQuery('#screen__mode').css('z-index') + '';
  16  
  17      // determine our device pattern
  18      // TODO: consider moving into dokuwiki core
  19      switch (screen_mode) {
  20          case '1':
  21              if (device_class.match(/tablet/)) return;
  22              device_class = 'mobile tablet';
  23              break;
  24          case '2':
  25              if (device_class.match(/phone/)) return;
  26              device_class = 'mobile phone';
  27              break;
  28          default:
  29              if (device_class == 'desktop') return;
  30              device_class = 'desktop';
  31      }
  32  
  33      jQuery('html').removeClass(device_classes).addClass(device_class);
  34  
  35      // handle some layout changes based on change in device
  36      var $handle = jQuery('#dokuwiki__aside h3.toggle');
  37      var $toc = jQuery('#dw__toc h3');
  38  
  39      if (device_class == 'desktop') {
  40          // reset for desktop mode
  41          if($handle.length) {
  42              $handle[0].setState(1);
  43              $handle.hide();
  44          }
  45          if($toc.length) {
  46              $toc[0].setState(1);
  47          }
  48      }
  49      if (device_class.match(/mobile/)){
  50          // toc and sidebar hiding
  51          if($handle.length) {
  52              $handle.show();
  53              $handle[0].setState(-1);
  54          }
  55          if($toc.length) {
  56              $toc[0].setState(-1);
  57          }
  58      }
  59  }
  60  
  61  jQuery(function(){
  62      var resizeTimer;
  63      dw_page.makeToggle('#dokuwiki__aside h3.toggle','#dokuwiki__aside div.content');
  64  
  65      tpl_dokuwiki_mobile();
  66      jQuery(window).on('resize',
  67          function(){
  68              if (resizeTimer) clearTimeout(resizeTimer);
  69              resizeTimer = setTimeout(tpl_dokuwiki_mobile,200);
  70          }
  71      );
  72  
  73      // increase sidebar length to match content (desktop mode only)
  74      var sidebar_height = jQuery('.desktop #dokuwiki__aside').height();
  75      var pagetool_height = jQuery('.desktop #dokuwiki__pagetools ul:first').height();
  76      // pagetools div has no height; ul has a height
  77      var content_min = Math.max(sidebar_height || 0, pagetool_height || 0);
  78  
  79      var content_height = jQuery('#dokuwiki__content div.page').height();
  80      if(content_min && content_min > content_height) {
  81          var $content = jQuery('#dokuwiki__content div.page');
  82          $content.css('min-height', content_min);
  83      }
  84  
  85      // blur when clicked
  86      jQuery('#dokuwiki__pagetools div.tools>ul>li>a').on('click', function(){
  87          this.blur();
  88      });
  89  });