diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/scripts/media.js | 101 |
1 files changed, 84 insertions, 17 deletions
diff --git a/lib/scripts/media.js b/lib/scripts/media.js index 95ab11d0b..c4ec6eb21 100644 --- a/lib/scripts/media.js +++ b/lib/scripts/media.js @@ -5,6 +5,7 @@ */ media = { keepopen: false, + hide: false, /** * Attach event handlers to all "folders" below the given element @@ -59,27 +60,53 @@ media = { }, /** - * Creates a checkbox for keeping the popup on selection + * Creates checkboxes for additional options * * @author Andreas Gohr <andi@splitbrain.org> */ - attachkeepopen: function(obj){ + attachoptions: function(obj){ if(!obj) return; - var cbox = document.createElement('input'); - cbox.type = 'checkbox'; - cbox.id = 'media__keepopen'; - if(DokuCookie.getValue('keepopen')){ - cbox.checked = true; + // keep open + if(opener){ + var kobox = document.createElement('input'); + kobox.type = 'checkbox'; + kobox.id = 'media__keepopen'; + if(DokuCookie.getValue('keepopen')){ + kobox.checked = true; + } + addEvent(kobox,'change',function(event){ return media.togglekeepopen(event,this); }); + + var kolbl = document.createElement('label'); + kolbl.htmlFor = 'media__keepopen'; + kolbl.innerHTML = LANG['keepopen']; + + var kobr = document.createElement('br'); + + obj.appendChild(kobox); + obj.appendChild(kolbl); + obj.appendChild(kobr); } - addEvent(cbox,'change',function(event){ return media.togglekeepopen(event,this); }); - var clbl = document.createElement('label'); - clbl.htmlFor = 'media__keepopen'; - clbl.innerHTML = LANG['keepopen']; + // hide details + var hdbox = document.createElement('input'); + hdbox.type = 'checkbox'; + hdbox.id = 'media__hide'; + if(DokuCookie.getValue('hide')){ + hdbox.checked = true; + } + addEvent(hdbox,'change',function(event){ return media.togglehide(event,this); }); + + var hdlbl = document.createElement('label'); + hdlbl.htmlFor = 'media__hide'; + hdlbl.innerHTML = LANG['hidedetails']; + + var hdbr = document.createElement('br'); - obj.appendChild(cbox); - obj.appendChild(clbl); + obj.appendChild(hdbox); + obj.appendChild(hdlbl); + obj.appendChild(hdbr); + media.updatehide(); }, /** @@ -98,6 +125,41 @@ media = { }, /** + * Toggles the hide details state + * + * @author Andreas Gohr <andi@splitbrain.org> + */ + togglehide: function(event,cb){ + if(cb.checked){ + DokuCookie.setValue('hide',1); + media.hide = true; + }else{ + DokuCookie.setValue('hide',''); + media.hide = false; + } + media.updatehide(); + }, + + /** + * Sets the visibility of the image details accordingly to the + * chosen hide state + * + * @author Andreas Gohr <andi@splitbrain.org> + */ + updatehide: function(){ + var obj = $('media__content'); + if(!obj) return; + var details = getElementsByClass('detail',obj,'div'); + for(var i=0; i<details.length; i++){ + if(media.hide){ + details[i].style.display = 'none'; + }else{ + details[i].style.display = ''; + } + } + }, + + /** * Insert the clicked image into the opener's textarea * * @author Andreas Gohr <andi@splitbrain.org> @@ -139,7 +201,10 @@ media = { content.innerHTML = '<img src="'+DOKU_BASE+'lib/images/loading.gif" alt="..." class="load" />'; ajax.elementObj = content; - ajax.afterCompletion = function(){ media.selectorattach(content); }; + ajax.afterCompletion = function(){ + media.selectorattach(content); + media.updatehide(); + }; ajax.runAJAX(link.search.substr(1)+'&call=medialist'); return false; }, @@ -199,6 +264,8 @@ media = { } -addInitEvent(function(){media.treeattach($('media__tree'));}); -addInitEvent(function(){media.selectorattach($('media__content'));}); -addInitEvent(function(){media.attachkeepopen($('media__opts'));}); +addInitEvent(function(){ + media.treeattach($('media__tree')); + media.selectorattach($('media__content')); + media.attachoptions($('media__opts')); +}); |