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