summaryrefslogtreecommitdiff
path: root/platform/www/lib/tpl/dokuwiki/script.js
diff options
context:
space:
mode:
Diffstat (limited to 'platform/www/lib/tpl/dokuwiki/script.js')
-rw-r--r--platform/www/lib/tpl/dokuwiki/script.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/platform/www/lib/tpl/dokuwiki/script.js b/platform/www/lib/tpl/dokuwiki/script.js
new file mode 100644
index 0000000..88dae90
--- /dev/null
+++ b/platform/www/lib/tpl/dokuwiki/script.js
@@ -0,0 +1,89 @@
+/**
+ * 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();
+ });
+});