1/** 2 * DokuWiki Plugin multiselect (JavaScript Component) 3 * 4 * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 5 * @author lisps 6 */ 7function multiselectdone(data) { 8 var ret = ajaxedit_parse(data); 9 ajaxedit_checkResponse(ret); 10} 11 12 13function multiselectclick(id) { 14 if(!(JSINFO && JSINFO['acl_write'] === '1')) return; 15 var id = multiselect_escapeStr(id); 16 17 var $myself = jQuery('#multiselect_'+id); 18 if ($myself) { 19 $myself.toggle(); 20 $myself.offset({top:jQuery('#multismiley_'+id).offset().top-7,left:jQuery('#multismiley_'+id).offset().left-7}); 21 22 } 23} 24 25function multiclickclick(pageid,id,count) { 26 //hide selector window 27 multiselectclick(id); 28 29 var id = multiselect_escapeStr(id); 30 31 //change smiley 32 var mysmiley=jQuery('#multismiley_'+id)[0]; 33 var myselect=jQuery('#multiclick_'+id+"_"+count)[0]; 34 35 if ( (mysmiley)&&(myselect) ) { 36 //send only changes 37 if (mysmiley.innerHTML != myselect.innerHTML) { 38 mysmiley.innerHTML=myselect.innerHTML; 39 var token; 40 if (myselect.firstChild.alt) { 41 token=myselect.firstChild.alt; 42 } else { 43 token=myselect.innerHTML; 44 } 45 46 var idx = null; 47 if(jQuery("#multiselect_"+id).parents('div.sortable').length != 0) { //sortable fix 48 idx = jQuery("#multiselect_"+id).data("plugin-multiselect-idx"); 49 } else { 50 //because multiselect can be moved it is necessary to idx it on the fly; 51 idx= ajaxedit_getIdxByIdClass('multismiley_'+id,"multismiley_"+multiselect_escapeStr(pageid)); 52 } 53 ajaxedit_send2( 54 'multiselect', 55 idx, 56 multiselectdone, 57 { 58 pageid:pageid, 59 token:token, 60 count:ajaxedit_getIdxByIdClassNodeid('multiclick_'+id+'_'+count,'multiclicker','multiselect_'+id), 61 } 62 ); 63 64 } 65 //change order so we are up to date 66 jQuery(jQuery('#multiselect_'+id).children(':first')).insertBefore('#multiclick_'+id+"_"+count); 67 jQuery('#multiselect_'+id).prepend(jQuery('#multiclick_'+id+"_"+count)); 68 } 69 70} 71 72 73//close multiselector onclick expect multismiley itselfs 74jQuery(document).ready(function(){ 75 jQuery(document).on('click',function(e) { 76 jQuery('.multiselector').hide(); 77 }); 78 jQuery(document).on('click','.multismiley',function(e) { 79 e.stopPropagation(); 80 return false; 81 }); 82}); 83 84 85function multiselect_escapeStr(str) 86{ 87 if (str) 88 return str.replace(/([ #;?%&,.+*~\':"!^$[\]()=>|\/@])/g,'\\$1'); 89 90 return str; 91} 92