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 */ 9var device_class = ''; // not yet known 10var device_classes = 'desktop mobile tablet phone'; 11var abstand = 0; 12function 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 42 if($handle.length) { 43 $handle[0].setState(1); 44 $handle.hide(); 45 } 46 if($toc.length) { 47 $toc[0].setState(1); 48 } 49 50 //Seitenleiste wollen wir zeigen 51 $handle.show(); 52 if(jQuery('#dokuwiki__aside').length){ 53 if(jQuery.cookie("sidebar_close")==1){ //cookie gesetzt? 54 //wenn Seitenleiste geschlossen 55 $handle.removeClass('open'); 56 $handle.addClass('closed'); 57 $handle[0].setState(-1); 58 jQuery('#dokuwiki__aside div.content').hide(); 59 jQuery('#dokuwiki__top').removeClass('showSidebar'); 60 jQuery('#dokuwiki__aside').css('position','absolute'); 61 jQuery('#dokuwiki__aside').css('top',''); 62 jQuery('#dokuwiki__aside').css('margin-top','-23px'); 63 64 65 }else { //Seitenleiste offen 66 jQuery('#dokuwiki__top').addClass('showSidebar'); 67 jQuery('#dokuwiki__aside').css('position','fixed'); 68 jQuery('#dokuwiki__aside').css('top',abstand-jQuery(window).scrollTop()); 69 70 } 71 } 72 73 } 74 if (device_class.match(/mobile/)){ 75 // toc and sidebar hiding 76 if($handle.length) { 77 $handle.show(); 78 $handle[0].setState(-1); 79 } 80 if($toc.length) { 81 $toc[0].setState(-1); 82 } 83 84 //Normalwerte wiederherstellen 85 jQuery('#dokuwiki__top').addClass('showSidebar'); 86 jQuery('#dokuwiki__aside').css('position','relative'); 87 jQuery('#dokuwiki__aside').css('top',''); 88 jQuery('#dokuwiki__aside').css('margin-top',''); 89 } 90} 91 92jQuery(function(){ 93 var resizeTimer; 94 var $sidebar = jQuery('#dokuwiki__aside'); 95 96 if($sidebar.length) 97 abstand = $sidebar.offset().top; //Abstand der Seitenleiste nach oben 98 99 dw_page.makeToggle('#dokuwiki__aside h3.toggle','#dokuwiki__aside div.content'); 100 101 tpl_dokuwiki_mobile(); 102 jQuery(window).bind('resize', 103 function(){ 104 if (resizeTimer) clearTimeout(resizeTimer); 105 resizeTimer = setTimeout(tpl_dokuwiki_mobile,200); 106 } 107 ); 108 109 //Seitenleiste mitscrollen lassen wenn im Desktop Mode 110 jQuery(window).scroll(function() { 111 if($handle.hasClass('open')&&jQuery('#screen__mode').css('z-index') + '' != '1' 112 && $handle.hasClass('open')&&jQuery('#screen__mode').css('z-index') + '' != '2'){ 113 if(jQuery(this).scrollTop() > abstand) { 114 jQuery('#dokuwiki__aside').css('top',0); //Seitbar nach oben 115 }else { 116 jQuery('#dokuwiki__aside').css('top',abstand-jQuery(this).scrollTop()); 117 118 } 119 } 120 }); 121 122 //wenn Seitbar ausgeblended werden soll 123 var $handle = jQuery('#dokuwiki__aside h3.toggle'); 124 jQuery($handle).bind('click', 125 function(){ 126 if(jQuery('#screen__mode').css('z-index') + '' == '0') { 127 if($handle.hasClass('closed')){ 128 129 jQuery('#dokuwiki__aside').css('position','absolute'); 130 jQuery('#dokuwiki__aside').css('top',''); 131 jQuery('#dokuwiki__aside').css('margin-top','-23px'); 132 jQuery.cookie("sidebar_close",1); 133 setTimeout("jQuery('#dokuwiki__top').removeClass('showSidebar')",100); 134 } else { 135 jQuery('#dokuwiki__top').addClass('showSidebar'); 136 jQuery('#dokuwiki__aside').css('position','fixed'); 137 //alert(jQuery(this).scrollTop()); 138 jQuery('#dokuwiki__aside').css('top',abstand-jQuery(window).scrollTop()); 139 jQuery('#dokuwiki__aside').css('margin-top',''); 140 jQuery.cookie("sidebar_close",0); 141 142 } 143 } 144 } 145 ); 146 147 148 149 // increase sidebar length to match content (desktop mode only) 150 var $sidebar = jQuery('.desktop #dokuwiki__aside'); 151 if($sidebar.length) { 152 var $content = jQuery('#dokuwiki__content div.page'); 153 $content.css('min-height', $sidebar.height()); 154 } 155}); 156