1/* 2 * For Folded Text Plugin 3 * 4 * @author Fabian van-de-l_Isle <webmaster [at] lajzar [dot] co [dot] uk> 5 * @author Christopher Smith <chris [at] jalakai [dot] co [dot] uk> 6 * @author Schplurtz le Déboulonné <schplurtz [At] laposte [doT] net> 7 * @author Michael Hamann <michael@content-space.de> 8 */ 9 10 11/* 12 * run on document load, setup everything we need 13 */ 14jQuery(function() { 15 // containers for localised reveal/hide strings, 16 // populated from the content set by the action plugin 17 if(!JSINFO || !JSINFO['plugin_folded']) return; 18 var folded_reveal = JSINFO['plugin_folded']['reveal']; 19 var folded_hide = JSINFO['plugin_folded']['hide']; 20 21 jQuery('a.folder[href*="#folded_"]').attr('title', folded_reveal); 22 23 /* 24 * toggle the folded element via className change also adjust the classname and 25 * title tooltip on the folding link 26 */ 27 jQuery('.dokuwiki .folder').click(function folded_toggle(evt) { 28 var id = this.href.match(/#(.*)$/)[1]; 29 var $id = jQuery(document.getElementById(id)); 30 31 if ($id.hasClass('hidden')) { 32 $id.addClass('open').removeClass('hidden'); 33 jQuery(this) 34 .addClass('open') 35 .attr('title', folded_hide); 36 } else { 37 $id.addClass('hidden').removeClass('open'); 38 jQuery(this) 39 .removeClass('open') 40 .attr('title', folded_reveal); 41 } 42 43 evt.preventDefault(); 44 return false; 45 }); 46}); 47 48function fold_unfold_all() { 49 var i; 50 var hide = -1; 51 var cpt = 1; 52 var elements; 53 54 elements = document.getElementsByClassName("folder"); 55 for (i = 0; i < elements.length; i++) { 56 // initially, find out whether we want to hide or unhide 57 if (hide == -1) { 58 if (elements[i].className.search("open") == -1) { 59 hide = 0; 60 } else { 61 hide = 1; 62 } 63 } 64 65 if (hide == 1) { 66 elements[i].className = elements[i].className.replace(/open/g, ""); 67 } else { 68 elements[i].className = elements[i].className + " open"; 69 } 70 71 } 72 73 // get folded elements 74 elements = document.getElementsByClassName("folded"); 75 for (i = 0; i < elements.length; i++) { 76 if (hide == 1) { 77 elements[i].className = elements[i].className.replace(/open/g, ""); 78 elements[i].className = elements[i].className + " hidden"; 79 } else { 80 elements[i].className = elements[i].className.replace(/hidden/g, ""); 81 elements[i].className = elements[i].className + " open"; 82 } 83 } 84} 85 86// support graceful js degradation, this hides the folded blocks from view 87// before they are shown, 88// whilst still allowing non-js user to see any folded content. 89document.write('<style type="text/css" media="screen"><!--/*--><![CDATA[/*><!--*/ .folded.hidden { display: none; } .folder .indicator { visibility: visible; } /*]]>*/--></style>'); 90