1/* exported addBtnActionNewTable */ 2/** 3 * Add button action for your toolbar button 4 * 5 * @param {jQuery} $btn Button element to add the action to 6 * @param {Array} props Associative array of button properties 7 * @param {string} edid ID of the editor textarea 8 * @return {string} If button should be appended return the id for in aria-controls, 9 * otherwise an empty string 10 */ 11window.addBtnActionNewTable = function addBtnActionNewTable($btn, props, edid) { 12 'use strict'; 13 14 $btn.click(function () { 15 var editform = jQuery('#dw__editform')[0]; 16 var ed = jQuery('#' + edid)[0]; 17 18 /** 19 * Add new textarea to the form 20 * 21 * @param {string} name the name attribute of the new field 22 * @param {string} val the value attribute of the new field 23 * 24 * @return {void} 25 */ 26 function addField(name, val) { 27 var pos_field = document.createElement('textarea'); 28 pos_field.name = 'edittable__new[' + name + ']'; 29 pos_field.value = val; 30 pos_field.style.display = 'none'; 31 editform.appendChild(pos_field); 32 } 33 34 var sel; 35 if (window.DWgetSelection) { 36 sel = window.DWgetSelection(ed); 37 } else { 38 sel = window.getSelection(ed); 39 } 40 addField('pre', ed.value.substr(0, sel.start)); 41 addField('text', ed.value.substr(sel.start, sel.end - sel.start)); 42 addField('suf', ed.value.substr(sel.end)); 43 44 // adora belle requires a range, even though we handle ranging ourselve here 45 var range = document.createElement('input'); 46 range.name = 'range'; 47 range.value = '0-0'; 48 range.type = 'hidden'; 49 editform.appendChild(range); 50 51 // Fake POST 52 var editbutton = document.createElement('input'); 53 editbutton.name = 'do[edit]'; 54 editbutton.type = 'submit'; 55 editbutton.style.display = 'none'; 56 editform.appendChild(editbutton); 57 // Prevent warning 58 window.textChanged = false; 59 editbutton.click(); 60 61 }); 62 return 'click'; 63}; 64