1jQuery(function () { 2 const $buttons = jQuery('.dokuwiki .secedit.editbutton_section .btn_secedit button'); 3 4 $buttons 5 /** 6 * Set selected button on context click 7 */ 8 .on('contextmenu', (event) => { 9 event.stopPropagation(); 10 event.preventDefault(); 11 12 const target = event.target; 13 $buttons.not(target).removeClass('selected'); 14 jQuery(target).toggleClass('selected'); 15 }) 16 /** 17 * Adjust range if selection exists 18 */ 19 .on('click', (event) => { 20 const target = event.target; 21 const selected = $buttons.filter('.selected').get(0); 22 if (selected !== null) { // multi edit 23 // if other section comes first, use its hid and summary 24 if (selected.form.elements['range'].value < target.form.elements['range'].value) { 25 target.form.elements['hid'].value = selected.form.elements['hid'].value; 26 target.form.elements['summary'].value = selected.form.elements['summary'].value; 27 } 28 // replace the range 29 target.form.elements['range'].value = newRange( 30 target.form.elements['range'].value, 31 selected.form.elements['range'].value 32 ); 33 } 34 }) 35 ; 36 37 /** 38 * Parse the given range strings and return the new range string 39 * 40 * @param {string} r1 41 * @param {string} r2 42 * @return {string} 43 */ 44 function newRange(r1, r2) { 45 const [r1min, r1max] = r1.split('-'); 46 const [r2min, r2max] = r2.split('-'); 47 48 let min = Math.min(parseInt(r1min), parseInt(r2min)); 49 let max = 0; 50 if (r1max !== '' && r2max !== '') max = Math.max(parseInt(r1max), parseInt(r2max)); 51 52 return `${min}-${max}`; 53 } 54}); 55