diff options
-rw-r--r-- | inc/lang/en/lang.php | 3 | ||||
-rw-r--r-- | lib/scripts/media.js | 101 |
2 files changed, 86 insertions, 18 deletions
diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php index 84fde9c28..49f9676ae 100644 --- a/inc/lang/en/lang.php +++ b/inc/lang/en/lang.php @@ -103,7 +103,8 @@ $lang['mediainuse'] = 'The file "%s" hasn\'t been deleted - it is still in use. $lang['namespaces'] = 'Namespaces'; $lang['mediafiles'] = 'Available files in'; -$lang['js']['keepopen'] = 'Keep window open on selection'; +$lang['js']['keepopen'] = 'Keep window open on selection'; +$lang['js']['hidedetails'] = 'Hide Details'; $lang['mediausage'] = 'Use the following syntax to reference this file:'; $lang['reference'] = 'References for'; 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')); +}); |