thomascube
2011-04-20 a9251be2f09fb5f18a85d201c67668c70980efe3
commit | author | age
d9344f 1 tinyMCEPopup.requireLangPack();
S 2
a0109c 3 function init() {
S 4     tinyMCEPopup.resizeToInnerSize();
5
6     document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
7     document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
8
d9344f 9     var inst = tinyMCEPopup.editor;
S 10     var dom = inst.dom;
69d05c 11     var trElm = dom.getParent(inst.selection.getStart(), "tr");
a0109c 12     var formObj = document.forms[0];
d9344f 13     var st = dom.parseStyle(dom.getAttrib(trElm, "style"));
a0109c 14
S 15     // Get table row data
16     var rowtype = trElm.parentNode.nodeName.toLowerCase();
d9344f 17     var align = dom.getAttrib(trElm, 'align');
S 18     var valign = dom.getAttrib(trElm, 'valign');
a0109c 19     var height = trimSize(getStyle(trElm, 'height', 'height'));
d9344f 20     var className = dom.getAttrib(trElm, 'class');
a0109c 21     var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
2011be 22     var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
d9344f 23     var id = dom.getAttrib(trElm, 'id');
S 24     var lang = dom.getAttrib(trElm, 'lang');
25     var dir = dom.getAttrib(trElm, 'dir');
a0109c 26
S 27     selectByValue(formObj, 'rowtype', rowtype);
28
69d05c 29     // Any cells selected
A 30     if (dom.select('td.mceSelected,th.mceSelected', trElm).length == 0) {
31         // Setup form
32         addClassesToList('class', 'table_row_styles');
33         TinyMCE_EditableSelects.init();
a0109c 34
69d05c 35         formObj.bgcolor.value = bgcolor;
A 36         formObj.backgroundimage.value = backgroundimage;
37         formObj.height.value = height;
38         formObj.id.value = id;
39         formObj.lang.value = lang;
40         formObj.style.value = dom.serializeStyle(st);
41         selectByValue(formObj, 'align', align);
42         selectByValue(formObj, 'valign', valign);
43         selectByValue(formObj, 'class', className, true, true);
44         selectByValue(formObj, 'dir', dir);
45
46         // Resize some elements
47         if (isVisible('backgroundimagebrowser'))
48             document.getElementById('backgroundimage').style.width = '180px';
49
50         updateColor('bgcolor_pick', 'bgcolor');
51     } else
52         tinyMCEPopup.dom.hide('action');
a0109c 53 }
S 54
55 function updateAction() {
d9344f 56     var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];
a0109c 57     var action = getSelectValue(formObj, 'action');
d9344f 58
S 59     tinyMCEPopup.restoreSelection();
69d05c 60     trElm = dom.getParent(inst.selection.getStart(), "tr");
A 61     tableElm = dom.getParent(inst.selection.getStart(), "table");
62
63     // Update all selected rows
64     if (dom.select('td.mceSelected,th.mceSelected', trElm).length > 0) {
65         tinymce.each(tableElm.rows, function(tr) {
66             var i;
67
68             for (i = 0; i < tr.cells.length; i++) {
69                 if (dom.hasClass(tr.cells[i], 'mceSelected')) {
70                     updateRow(tr, true);
71                     return;
72                 }
73             }
74         });
75
76         inst.addVisual();
77         inst.nodeChanged();
78         inst.execCommand('mceEndUndoLevel');
79         tinyMCEPopup.close();
80         return;
81     }
a0109c 82
S 83     switch (action) {
84         case "row":
85             updateRow(trElm);
86             break;
87
88         case "all":
89             var rows = tableElm.getElementsByTagName("tr");
90
91             for (var i=0; i<rows.length; i++)
92                 updateRow(rows[i], true);
93
94             break;
95
96         case "odd":
97         case "even":
98             var rows = tableElm.getElementsByTagName("tr");
99
100             for (var i=0; i<rows.length; i++) {
101                 if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
102                     updateRow(rows[i], true, true);
103             }
104
105             break;
106     }
107
d9344f 108     inst.addVisual();
S 109     inst.nodeChanged();
a0109c 110     inst.execCommand('mceEndUndoLevel');
S 111     tinyMCEPopup.close();
112 }
113
114 function updateRow(tr_elm, skip_id, skip_parent) {
d9344f 115     var inst = tinyMCEPopup.editor;
a0109c 116     var formObj = document.forms[0];
d9344f 117     var dom = inst.dom;
a0109c 118     var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
S 119     var rowtype = getSelectValue(formObj, 'rowtype');
120     var doc = inst.getDoc();
121
122     // Update row element
123     if (!skip_id)
a9251b 124         dom.setAttrib(tr_elm, 'id', formObj.id.value);
a0109c 125
a9251b 126     dom.setAttrib(tr_elm, 'align', getSelectValue(formObj, 'align'));
T 127     dom.setAttrib(tr_elm, 'vAlign', getSelectValue(formObj, 'valign'));
128     dom.setAttrib(tr_elm, 'lang', formObj.lang.value);
129     dom.setAttrib(tr_elm, 'dir', getSelectValue(formObj, 'dir'));
130     dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));
d9344f 131     dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
a0109c 132
S 133     // Clear deprecated attributes
a9251b 134     dom.setAttrib(tr_elm, 'background', '');
T 135     dom.setAttrib(tr_elm, 'bgColor', '');
136     dom.setAttrib(tr_elm, 'height', '');
a0109c 137
S 138     // Set styles
139     tr_elm.style.height = getCSSSize(formObj.height.value);
140     tr_elm.style.backgroundColor = formObj.bgcolor.value;
141
142     if (formObj.backgroundimage.value != "")
143         tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
144     else
145         tr_elm.style.backgroundImage = '';
146
147     // Setup new rowtype
148     if (curRowType != rowtype && !skip_parent) {
149         // first, clone the node we are working on
150         var newRow = tr_elm.cloneNode(1);
151
152         // next, find the parent of its new destination (creating it if necessary)
d9344f 153         var theTable = dom.getParent(tr_elm, "table");
a0109c 154         var dest = rowtype;
S 155         var newParent = null;
156         for (var i = 0; i < theTable.childNodes.length; i++) {
157             if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
158                 newParent = theTable.childNodes[i];
159         }
160
161         if (newParent == null) {
162             newParent = doc.createElement(dest);
163
a9251b 164             if (theTable.firstChild.nodeName == 'CAPTION')
T 165                 inst.dom.insertAfter(newParent, theTable.firstChild);
166             else
167                 theTable.insertBefore(newParent, theTable.firstChild);
a0109c 168         }
S 169
170         // append the row to the new parent
171         newParent.appendChild(newRow);
172
173         // remove the original
174         tr_elm.parentNode.removeChild(tr_elm);
175
176         // set tr_elm to the new node
177         tr_elm = newRow;
178     }
d9344f 179
S 180     dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));
a0109c 181 }
S 182
183 function changedBackgroundImage() {
d9344f 184     var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
S 185     var st = dom.parseStyle(formObj.style.value);
a0109c 186
S 187     st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
188
d9344f 189     formObj.style.value = dom.serializeStyle(st);
a0109c 190 }
S 191
192 function changedStyle() {
d9344f 193     var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
S 194     var st = dom.parseStyle(formObj.style.value);
a0109c 195
S 196     if (st['background-image'])
197         formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
198     else
199         formObj.backgroundimage.value = '';
200
201     if (st['height'])
202         formObj.height.value = trimSize(st['height']);
203
204     if (st['background-color']) {
205         formObj.bgcolor.value = st['background-color'];
206         updateColor('bgcolor_pick','bgcolor');
207     }
208 }
209
210 function changedSize() {
d9344f 211     var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
S 212     var st = dom.parseStyle(formObj.style.value);
a0109c 213
S 214     var height = formObj.height.value;
215     if (height != "")
216         st['height'] = getCSSSize(height);
217     else
218         st['height'] = "";
219
d9344f 220     formObj.style.value = dom.serializeStyle(st);
a0109c 221 }
S 222
223 function changedColor() {
d9344f 224     var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
S 225     var st = dom.parseStyle(formObj.style.value);
a0109c 226
S 227     st['background-color'] = formObj.bgcolor.value;
228
d9344f 229     formObj.style.value = dom.serializeStyle(st);
a0109c 230 }
d9344f 231
S 232 tinyMCEPopup.onInit.add(init);