diff options
author | Adrian Lang <mail@adrianlang.de> | 2011-04-22 22:35:43 +0200 |
---|---|---|
committer | Adrian Lang <mail@adrianlang.de> | 2011-04-22 22:35:43 +0200 |
commit | 8ccf9c9785ec2b626bad30a88a21f02886845418 (patch) | |
tree | 0ecd6103880e3350bd37ba11ae3872805ede1755 /lib/scripts | |
parent | e2092379b1c3200832cb569781ec647db5aeef0f (diff) | |
parent | 23d27376b2a2f6a1ccf0777c48435717494d85b1 (diff) | |
download | rpg-8ccf9c9785ec2b626bad30a88a21f02886845418.tar.gz rpg-8ccf9c9785ec2b626bad30a88a21f02886845418.tar.bz2 |
Merge branch 'master' into stable
Conflicts:
data/deleted.files
doku.php
lib/exe/xmlrpc.php
Diffstat (limited to 'lib/scripts')
-rw-r--r-- | lib/scripts/ajax.js | 126 | ||||
-rw-r--r-- | lib/scripts/edit.js | 121 | ||||
-rw-r--r-- | lib/scripts/locktimer.js | 102 | ||||
-rw-r--r-- | lib/scripts/media.js | 128 | ||||
-rw-r--r-- | lib/scripts/script.js | 70 | ||||
-rw-r--r-- | lib/scripts/toolbar.js | 2 |
6 files changed, 337 insertions, 212 deletions
diff --git a/lib/scripts/ajax.js b/lib/scripts/ajax.js index de009d448..44dcee999 100644 --- a/lib/scripts/ajax.js +++ b/lib/scripts/ajax.js @@ -5,44 +5,114 @@ * @author Andreas Gohr <andi@splitbrain.org> * @author Adrian Lang <lang@cosmocode.de> */ -addInitEvent(function () { +var ajax_quicksearch = { - var inID = 'qsearch__in'; - var outID = 'qsearch__out'; + inObj: null, + outObj: null, + sackObj: null, + delay: null, - var inObj = document.getElementById(inID); - var outObj = document.getElementById(outID); + init: function(inID, outID) { - // objects found? - if (inObj === null){ return; } - if (outObj === null){ return; } + this.inObj = $(inID); + this.outObj = $(outID); - function clear_results(){ - outObj.style.display = 'none'; - outObj.innerHTML = ''; - } + // objects found? + if (this.inObj === null) return; + if (this.outObj === null) return; + + // prepare AJAX + this.sackObj = new sack(DOKU_BASE + 'lib/exe/ajax.php'); + this.sackObj.AjaxFailedAlert = ''; + this.sackObj.encodeURIString = false; + this.sackObj.onCompletion = ajax_quicksearch.onCompletion; + + // attach eventhandler to search field + this.delay = new Delay(function () { + ajax_quicksearch.clear_results(); + var value = ajax_quicksearch.inObj.value; + if(value === ''){ return; } + ajax_quicksearch.sackObj.runAJAX('call=qsearch&q=' + encodeURI(value)); + }); + + addEvent(this.inObj, 'keyup', function () { + ajax_quicksearch.clear_results(); + ajax_quicksearch.delay.start(); + }); - var sack_obj = new sack(DOKU_BASE + 'lib/exe/ajax.php'); - sack_obj.AjaxFailedAlert = ''; - sack_obj.encodeURIString = false; - sack_obj.onCompletion = function () { - var data = sack_obj.response; + // attach eventhandler to output field + addEvent(this.outObj, 'click', function () { + ajax_quicksearch.outObj.style.display = 'none'; + }); + }, + + clear_results: function(){ + ajax_quicksearch.outObj.style.display = 'none'; + ajax_quicksearch.outObj.innerHTML = ''; + }, + + onCompletion: function() { + var data = this.response; // 'this' is sack context if (data === '') { return; } + var outObj = ajax_quicksearch.outObj; + outObj.innerHTML = data; outObj.style.display = 'block'; - }; + outObj.style['white-space'] = 'nowrap'; - // attach eventhandler to search field - var delay = new Delay(function () { - clear_results(); - var value = inObj.value; - if(value === ''){ return; } - sack_obj.runAJAX('call=qsearch&q=' + encodeURI(value)); - }); + // shorten namespaces if too long + var width = outObj.clientWidth; + var links = outObj.getElementsByTagName('a'); + for(var i=0; i<links.length; i++){ + // maximum allowed width: + var max = width - links[i].offsetLeft; + var isRTL = (document.documentElement.dir == 'rtl'); - addEvent(inObj, 'keyup', function () {clear_results(); delay.start(); }); + if(!isRTL && links[i].offsetWidth < max) continue; + if(isRTL && links[i].offsetLeft > 0) continue; - // attach eventhandler to output field - addEvent(outObj, 'click', function () {outObj.style.display = 'none'; }); + var nsL = links[i].innerText.indexOf('('); + var nsR = links[i].innerText.indexOf(')'); + var eli = 0; + var runaway = 0; + + while( (nsR - nsL > 3) && + ( + (!isRTL && links[i].offsetWidth > max) || + (isRTL && links[i].offsetLeft < 0) + ) + ){ + if(runaway++ > 500) return; // just in case something went wrong + + if(eli){ + // elipsis already inserted + if( (eli - nsL) > (nsR - eli) ){ + // cut left + links[i].innerText = links[i].innerText.substring(0,eli-2)+ + links[i].innerText.substring(eli); + }else{ + // cut right + links[i].innerText = links[i].innerText.substring(0,eli+1)+ + links[i].innerText.substring(eli+2); + } + }else{ + // replace middle with ellipsis + var mid = Math.floor( nsL + ((nsR-nsL)/2) ); + links[i].innerText = links[i].innerText.substring(0,mid)+'…'+ + links[i].innerText.substring(mid+1); + } + eli = links[i].innerText.indexOf('…'); + nsL = links[i].innerText.indexOf('('); + nsR = links[i].innerText.indexOf(')'); + } + } + } + +}; + + +addInitEvent(function(){ + ajax_quicksearch.init('qsearch__in','qsearch__out'); }); + diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js index 01262bcef..e8a59deb9 100644 --- a/lib/scripts/edit.js +++ b/lib/scripts/edit.js @@ -261,13 +261,14 @@ function currentHeadlineLevel(textboxId){ /** * global var used for not saved yet warning */ -var textChanged = false; +window.textChanged = false; /** * Delete the draft before leaving the page */ function deleteDraft() { if (is_opera) return; + if (window.keepDraft) return; // remove a possibly saved draft using ajax var dwform = $('dw__editform'); @@ -304,27 +305,34 @@ addInitEvent(function (){ } var checkfunc = function(){ - textChanged = true; //global var + window.textChanged = true; //global var summaryCheck(); }; addEvent(editform, 'change', checkfunc); addEvent(editform, 'keydown', checkfunc); window.onbeforeunload = function(){ - if(textChanged) { + if(window.textChanged) { return LANG.notsavedyet; } }; window.onunload = deleteDraft; // reset change memory var on submit - addEvent($('edbtn__save'), 'click', function(){ textChanged = false; }); - addEvent($('edbtn__preview'), 'click', function(){ textChanged = false; }); + addEvent($('edbtn__save'), 'click', function(){ + window.onbeforeunload = ''; + window.textChanged = false; + }); + addEvent($('edbtn__preview'), 'click', function(){ + window.onbeforeunload = ''; + window.textChanged = false; + window.keepDraft = true; // needed to keep draft on page unload + }); var summary = $('edit__summary'); addEvent(summary, 'change', summaryCheck); addEvent(summary, 'keyup', summaryCheck); - if (textChanged) summaryCheck(); + if (window.textChanged) summaryCheck(); }); /** @@ -341,104 +349,3 @@ function summaryCheck(){ } } - -/** - * Class managing the timer to display a warning on a expiring lock - */ -function locktimer_class(){ - this.sack = null; - this.timeout = 0; - this.timerID = null; - this.lasttime = null; - this.msg = ''; - this.pageid = ''; -}; -var locktimer = new locktimer_class(); - locktimer.init = function(timeout,msg,draft){ - // init values - locktimer.timeout = timeout*1000; - locktimer.msg = msg; - locktimer.draft = draft; - locktimer.lasttime = new Date(); - - if(!$('dw__editform')) return; - locktimer.pageid = $('dw__editform').elements.id.value; - if(!locktimer.pageid) return; - - // init ajax component - locktimer.sack = new sack(DOKU_BASE + 'lib/exe/ajax.php'); - locktimer.sack.AjaxFailedAlert = ''; - locktimer.sack.encodeURIString = false; - locktimer.sack.onCompletion = locktimer.refreshed; - - // register refresh event - addEvent($('dw__editform'),'keypress',function(){locktimer.refresh();}); - // start timer - locktimer.reset(); - }; - - /** - * (Re)start the warning timer - */ - locktimer.reset = function(){ - locktimer.clear(); - locktimer.timerID = window.setTimeout("locktimer.warning()", locktimer.timeout); - }; - - /** - * Display the warning about the expiring lock - */ - locktimer.warning = function(){ - locktimer.clear(); - alert(locktimer.msg); - }; - - /** - * Remove the current warning timer - */ - locktimer.clear = function(){ - if(locktimer.timerID !== null){ - window.clearTimeout(locktimer.timerID); - locktimer.timerID = null; - } - }; - - /** - * Refresh the lock via AJAX - * - * Called on keypresses in the edit area - */ - locktimer.refresh = function(){ - var now = new Date(); - // refresh every minute only - if(now.getTime() - locktimer.lasttime.getTime() > 30*1000){ //FIXME decide on time - var params = 'call=lock&id='+encodeURIComponent(locktimer.pageid); - var dwform = $('dw__editform'); - if(locktimer.draft && dwform.elements.wikitext){ - params += '&prefix='+encodeURIComponent(dwform.elements.prefix.value); - params += '&wikitext='+encodeURIComponent(dwform.elements.wikitext.value); - params += '&suffix='+encodeURIComponent(dwform.elements.suffix.value); - if(dwform.elements.date){ - params += '&date='+encodeURIComponent(dwform.elements.date.value); - } - } - locktimer.sack.runAJAX(params); - locktimer.lasttime = now; - } - }; - - - /** - * Callback. Resets the warning timer - */ - locktimer.refreshed = function(){ - var data = this.response; - var error = data.charAt(0); - data = data.substring(1); - - $('draft__status').innerHTML=data; - if(error != '1') return; // locking failed - locktimer.reset(); - }; -// end of locktimer class functions - diff --git a/lib/scripts/locktimer.js b/lib/scripts/locktimer.js new file mode 100644 index 000000000..0db7d2b15 --- /dev/null +++ b/lib/scripts/locktimer.js @@ -0,0 +1,102 @@ +/** + * Class managing the timer to display a warning on a expiring lock + */ +var locktimer = { + sack: null, + timeout: 0, + timerID: null, + lasttime: null, + msg: '', + pageid: '', + + init: function(timeout,msg,draft,edid){ + var edit = $(edid); + if(!edit) return; + if(edit.readOnly) return; + + // init values + locktimer.timeout = timeout*1000; + locktimer.msg = msg; + locktimer.draft = draft; + locktimer.lasttime = new Date(); + + if(!$('dw__editform')) return; + locktimer.pageid = $('dw__editform').elements.id.value; + if(!locktimer.pageid) return; + + // init ajax component + locktimer.sack = new sack(DOKU_BASE + 'lib/exe/ajax.php'); + locktimer.sack.AjaxFailedAlert = ''; + locktimer.sack.encodeURIString = false; + locktimer.sack.onCompletion = locktimer.refreshed; + + // register refresh event + addEvent($('dw__editform'),'keypress',function(){locktimer.refresh();}); + // start timer + locktimer.reset(); + }, + + /** + * (Re)start the warning timer + */ + reset: function(){ + locktimer.clear(); + locktimer.timerID = window.setTimeout("locktimer.warning()", locktimer.timeout); + }, + + /** + * Display the warning about the expiring lock + */ + warning: function(){ + locktimer.clear(); + alert(locktimer.msg); + }, + + /** + * Remove the current warning timer + */ + clear: function(){ + if(locktimer.timerID !== null){ + window.clearTimeout(locktimer.timerID); + locktimer.timerID = null; + } + }, + + /** + * Refresh the lock via AJAX + * + * Called on keypresses in the edit area + */ + refresh: function(){ + var now = new Date(); + // refresh every minute only + if(now.getTime() - locktimer.lasttime.getTime() > 30*1000){ + var params = 'call=lock&id='+encodeURIComponent(locktimer.pageid); + var dwform = $('dw__editform'); + if(locktimer.draft && dwform.elements.wikitext){ + params += '&prefix='+encodeURIComponent(dwform.elements.prefix.value); + params += '&wikitext='+encodeURIComponent(dwform.elements.wikitext.value); + params += '&suffix='+encodeURIComponent(dwform.elements.suffix.value); + if(dwform.elements.date){ + params += '&date='+encodeURIComponent(dwform.elements.date.value); + } + } + locktimer.sack.runAJAX(params); + locktimer.lasttime = now; + } + }, + + /** + * Callback. Resets the warning timer + */ + refreshed: function(){ + var data = this.response; + var error = data.charAt(0); + data = data.substring(1); + + $('draft__status').innerHTML=data; + if(error != '1') return; // locking failed + locktimer.reset(); + } +}; + diff --git a/lib/scripts/media.js b/lib/scripts/media.js index 8eb19ce6b..57f599163 100644 --- a/lib/scripts/media.js +++ b/lib/scripts/media.js @@ -206,7 +206,7 @@ var media_manager = { media_manager.id = id; if(!opener){ // if we don't run in popup display example - var ex = $('ex_'+id.replace(/:/g,'_')); + var ex = $('ex'+id.replace(/:/g,'_')); if(ex.style.display == ''){ ex.style.display = 'none'; } else { @@ -215,14 +215,6 @@ var media_manager = { return false; } - // FIXME these lines deactivate the media options dialog and restore - // the old behavior according to FS#2047 - opener.insertTags('wiki__text','{{'+id+'|','}}',''); - if(!media_manager.keepopen) window.close(); - opener.focus(); - return false; - - media_manager.ext = false; var dot = id.lastIndexOf("."); if (dot != -1) { @@ -242,21 +234,11 @@ var media_manager = { media_manager.popup.style.top = event.pageY + 'px'; // set all buttons to outset - media_manager.outSet('media__linkbtn1'); - media_manager.outSet('media__linkbtn2'); - media_manager.outSet('media__linkbtn3'); - media_manager.outSet('media__linkbtn4'); - - media_manager.outSet('media__alignbtn0'); - media_manager.outSet('media__alignbtn1'); - media_manager.outSet('media__alignbtn2'); - media_manager.outSet('media__alignbtn3'); - - media_manager.outSet('media__sizebtn1'); - media_manager.outSet('media__sizebtn2'); - media_manager.outSet('media__sizebtn3'); - media_manager.outSet('media__sizebtn4'); - + for (var i = 1; i < 5; i++) { + media_manager.outSet('media__linkbtn' + i); + media_manager.outSet('media__alignbtn' + i); + media_manager.outSet('media__sizebtn' + i); + } if (ext == '.swf') { media_manager.ext = 'swf'; @@ -266,7 +248,7 @@ var media_manager = { $('media__linkbtn2').style.display = 'none'; // set the link button to default - if (media_manager.link != false) { + if (media_manager.link !== false) { if ( media_manager.link == '2' || media_manager.link == '1') { media_manager.inSet('media__linkbtn3'); media_manager.link = '3'; @@ -293,6 +275,11 @@ var media_manager = { // disable button for original size $('media__sizebtn4').style.display = 'none'; + if (media_manager.size == 4) { + media_manager.size = 2; + DokuCookie.setValue('size', '2'); + media_manager.inSet('media__sizebtn2'); + } } else { media_manager.ext = 'img'; @@ -306,7 +293,7 @@ var media_manager = { if (DokuCookie.getValue('link')) { media_manager.link = DokuCookie.getValue('link'); } - if (media_manager.link == false) { + if (!media_manager.link) { // default case media_manager.link = '1'; DokuCookie.setValue('link','1'); @@ -324,23 +311,23 @@ var media_manager = { $('media__size').style.display = 'block'; // set the align button to default - if (media_manager.align != false) { + if (media_manager.align !== false) { media_manager.inSet('media__alignbtn'+media_manager.align); } else if (DokuCookie.getValue('align')) { media_manager.inSet('media__alignbtn'+DokuCookie.getValue('align')); media_manager.align = DokuCookie.getValue('align'); } else { // default case - media_manager.align = '0'; - media_manager.inSet('media__alignbtn0'); - DokuCookie.setValue('align','0'); + media_manager.align = '1'; + media_manager.inSet('media__alignbtn1'); + DokuCookie.setValue('align','1'); } // set the size button to default if (DokuCookie.getValue('size')) { media_manager.size = DokuCookie.getValue('size'); } - if (media_manager.size == false || (media_manager.size === '4' && ext === '.swf')) { + if (!media_manager.size || (media_manager.size === '4' && ext === '.swf')) { // default case media_manager.size = '2'; DokuCookie.setValue('size','2'); @@ -362,9 +349,10 @@ var media_manager = { media_manager.popup = document.createElement('div'); media_manager.popup.setAttribute('id','media__popup'); + media_manager.popup.style.display = 'none'; var root = document.getElementById('media__manager'); - if (root == null) return; + if (root === null) return; root.appendChild(media_manager.popup); var headline = document.createElement('h1'); @@ -394,8 +382,7 @@ var media_manager = { for (var i = 0 ; i < linkbtns.length ; ++i) { var linkbtn = document.createElement('button'); linkbtn.className = 'button'; - linkbtn.value = i + 1; - linkbtn.id = "media__linkbtn" + (i + 1); + linkbtn.id = "media__linkbtn" + (i+1); linkbtn.title = LANG['media' + linkbtns[i]]; linkbtn.style.borderStyle = 'outset'; addEvent(linkbtn,'click',function(event){ return media_manager.setlink(event,this); }); @@ -427,8 +414,7 @@ var media_manager = { var alignimg = document.createElement('img'); alignimg.src = DOKU_BASE + 'lib/images/media_align_' + alignbtns[n] + '.png'; - alignbtn.id = "media__alignbtn" + n; - alignbtn.value = n; + alignbtn.id = "media__alignbtn" + (n+1); alignbtn.title = LANG['media' + alignbtns[n]]; alignbtn.className = 'button'; alignbtn.appendChild(alignimg); @@ -462,7 +448,6 @@ var media_manager = { sizebtn.className = 'button'; sizebtn.appendChild(sizeimg); - sizebtn.value = size + 1; sizebtn.id = 'media__sizebtn' + (size + 1); sizebtn.title = LANG['media' + sizebtns[size]]; sizebtn.style.borderStyle = 'outset'; @@ -516,7 +501,7 @@ var media_manager = { optsstart = true; } - var s = parseInt(media_manager.size); + var s = parseInt(media_manager.size, 10); if (s && s >= 1) { opts += (optsstart)?'&':'?'; @@ -537,21 +522,23 @@ var media_manager = { } } } - if (media_manager.align == '1') { + if (media_manager.align == '2') { alignleft = ''; alignright = ' '; } - if (media_manager.align == '2') { + if (media_manager.align == '3') { alignleft = ' '; alignright = ' '; } - if (media_manager.align == '3') { + if (media_manager.align == '4') { alignleft = ' '; alignright = ''; } } } - opener.insertTags('wiki__text','{{'+alignleft+id+opts+alignright+'|','}}',''); + var edid = String.prototype.match.call(document.location, /&edid=([^&]+)/); + edid = edid ? edid[1] : 'wiki__text'; + opener.insertTags(edid,'{{'+alignleft+id+opts+alignright+'|','}}',''); if(!media_manager.keepopen) window.close(); opener.focus(); @@ -671,14 +658,15 @@ var media_manager = { * @author Dominik Eckelmann <eckelmann@cosmocode.de> */ setalign: function(event,cb){ - if(cb.value){ - DokuCookie.setValue('align',cb.value); - media_manager.align = cb.value; - media_manager.outSet("media__alignbtn0"); - media_manager.outSet("media__alignbtn1"); - media_manager.outSet("media__alignbtn2"); - media_manager.outSet("media__alignbtn3"); - media_manager.inSet("media__alignbtn"+cb.value); + + var id = cb.id.substring(cb.id.length -1); + if(id){ + DokuCookie.setValue('align',id); + media_manager.align = id; + for (var i = 1; i<=4; i++) { + media_manager.outSet("media__alignbtn" + i); + } + media_manager.inSet("media__alignbtn"+id); }else{ DokuCookie.setValue('align',''); media_manager.align = false; @@ -690,23 +678,34 @@ var media_manager = { * @author Dominik Eckelmann <eckelmann@cosmocode.de> */ setlink: function(event,cb){ - if(cb.value){ - DokuCookie.setValue('link',cb.value); - media_manager.link = cb.value; - media_manager.outSet("media__linkbtn1"); - media_manager.outSet("media__linkbtn2"); - media_manager.outSet("media__linkbtn3"); - media_manager.outSet("media__linkbtn4"); - media_manager.inSet("media__linkbtn"+cb.value); + var id = cb.id.substring(cb.id.length -1); + if(id){ + DokuCookie.setValue('link',id); + for (var i = 1; i<=4; i++) { + media_manager.outSet("media__linkbtn"+i); + } + media_manager.inSet("media__linkbtn"+id); + var size = document.getElementById("media__size"); var align = document.getElementById("media__align"); - if (cb.value != '4') { + if (id != '4') { size.style.display = "block"; align.style.display = "block"; + if (media_manager.link == '4') { + media_manager.align = '1'; + DokuCookie.setValue('align', '1'); + media_manager.inSet('media__alignbtn1'); + + media_manager.size = '2'; + DokuCookie.setValue('size', '2'); + media_manager.inSet('media__sizebtn2'); + } + } else { size.style.display = "none"; align.style.display = "none"; } + media_manager.link = id; }else{ DokuCookie.setValue('link',''); media_manager.link = false; @@ -755,13 +754,14 @@ var media_manager = { * @author Dominik Eckelmann <eckelmann@cosmocode.de> */ setsize: function(event,cb){ - if (cb.value) { - DokuCookie.setValue('size',cb.value); - media_manager.size = cb.value; - for (var i = 1 ; i <= 4 ; ++i) { + var id = cb.id.substring(cb.id.length -1); + if (id) { + DokuCookie.setValue('size',id); + media_manager.size = id; + for (var i = 1 ; i <=4 ; ++i) { media_manager.outSet("media__sizebtn" + i); } - media_manager.inSet("media__sizebtn"+cb.value); + media_manager.inSet("media__sizebtn"+id); } else { DokuCookie.setValue('size',''); media_manager.width = false; diff --git a/lib/scripts/script.js b/lib/scripts/script.js index c79c9b683..2cc1246f9 100644 --- a/lib/scripts/script.js +++ b/lib/scripts/script.js @@ -114,6 +114,20 @@ function findPosY(object){ } //end findPosY function /** + * Get the computed style of a node. + * + * @link https://acidmartin.wordpress.com/2008/08/26/style-get-any-css-property-value-of-an-object/ + * @link http://svn.dojotoolkit.org/src/dojo/trunk/_base/html.js + */ +function gcs(node){ + if(node.currentStyle){ + return node.currentStyle; + }else{ + return node.ownerDocument.defaultView.getComputedStyle(node, null); + } +} + +/** * Escape special chars in JavaScript * * @author Andreas Gohr <andi@splitbrain.org> @@ -260,10 +274,32 @@ function insitu_popup(target, popup_id) { getElementsByClass('dokuwiki', document.body, 'div')[0].appendChild(fndiv); } + var non_static_parent = fndiv.parentNode; + while (non_static_parent != document && gcs(non_static_parent)['position'] == 'static') { + non_static_parent = non_static_parent.parentNode; + } + + var fixed_target_parent = target; + while (fixed_target_parent != document && gcs(fixed_target_parent)['position'] != 'fixed') { + fixed_target_parent = fixed_target_parent.parentNode; + } + // position the div and make it visible - fndiv.style.position = 'absolute'; - fndiv.style.left = findPosX(target)+'px'; - fndiv.style.top = (findPosY(target)+target.offsetHeight * 1.5) + 'px'; + if (fixed_target_parent != document) { + // the target has position fixed, that means the footnote needs to be fixed, too + fndiv.style.position = 'fixed'; + } else { + fndiv.style.position = 'absolute'; + } + + if (fixed_target_parent != document || non_static_parent == document) { + fndiv.style.left = findPosX(target)+'px'; + fndiv.style.top = (findPosY(target)+target.offsetHeight * 1.5) + 'px'; + } else { + fndiv.style.left = (findPosX(target) - findPosX(non_static_parent)) +'px'; + fndiv.style.top = (findPosY(target)+target.offsetHeight * 1.5 - findPosY(non_static_parent)) + 'px'; + } + fndiv.style.display = ''; return fndiv; } @@ -460,19 +496,29 @@ addInitEvent(function(){ }); /** - * Add the event handler to the actiondropdown + * Autosubmit quick select forms + * + * When a <select> tag has the class "quickselect", this script will + * automatically submit its parent form when the select value changes. + * It also hides the submit button of the form. * * @author Andreas Gohr <andi@splitbrain.org> */ addInitEvent(function(){ - var selector = $('action__selector'); - if(!selector) return; - - addEvent(selector,'change',function(e){ - this.form.submit(); - }); - - $('action__selectorbtn').style.display = 'none'; + var selects = getElementsByClass('quickselect',document,'select'); + for(var i=0; i<selects.length; i++){ + // auto submit on change + addEvent(selects[i],'change',function(e){ + this.form.submit(); + }); + // hide submit buttons + var btns = selects[i].form.getElementsByTagName('input'); + for(var j=0; j<btns.length; j++){ + if(btns[j].type == 'submit'){ + btns[j].style.display = 'none'; + } + } + } }); /** diff --git a/lib/scripts/toolbar.js b/lib/scripts/toolbar.js index 3f967448c..d458960ab 100644 --- a/lib/scripts/toolbar.js +++ b/lib/scripts/toolbar.js @@ -153,7 +153,7 @@ function tb_insert(btn, props, edid) { */ function tb_mediapopup(btn, props, edid) { window.open( - DOKU_BASE+props['url']+encodeURIComponent(NS), + DOKU_BASE+props['url']+encodeURIComponent(NS)+'&edid='+encodeURIComponent(edid), props['name'], props['options']); return false; |