source: trunk/library/tiny_mce/plugins/table/js/cell.js @ 4829

Revision 4829, 8.3 KB checked in by airton, 13 years ago (diff)

Ticket #2146 - Implementacao da funcionalidade de multiplas assinaturas - Adicao da biblioteca TinyMCE

  • Property svn:executable set to *
Line 
1tinyMCEPopup.requireLangPack();
2
3var ed;
4
5function init() {
6        ed = tinyMCEPopup.editor;
7        tinyMCEPopup.resizeToInnerSize();
8
9        document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
10        document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
11        document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
12
13        var inst = ed;
14        var tdElm = ed.dom.getParent(ed.selection.getStart(), "td,th");
15        var formObj = document.forms[0];
16        var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style"));
17
18        // Get table cell data
19        var celltype = tdElm.nodeName.toLowerCase();
20        var align = ed.dom.getAttrib(tdElm, 'align');
21        var valign = ed.dom.getAttrib(tdElm, 'valign');
22        var width = trimSize(getStyle(tdElm, 'width', 'width'));
23        var height = trimSize(getStyle(tdElm, 'height', 'height'));
24        var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
25        var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
26        var className = ed.dom.getAttrib(tdElm, 'class');
27        var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
28        var id = ed.dom.getAttrib(tdElm, 'id');
29        var lang = ed.dom.getAttrib(tdElm, 'lang');
30        var dir = ed.dom.getAttrib(tdElm, 'dir');
31        var scope = ed.dom.getAttrib(tdElm, 'scope');
32
33        // Setup form
34        addClassesToList('class', 'table_cell_styles');
35        TinyMCE_EditableSelects.init();
36
37        if (!ed.dom.hasClass(tdElm, 'mceSelected')) {
38                formObj.bordercolor.value = bordercolor;
39                formObj.bgcolor.value = bgcolor;
40                formObj.backgroundimage.value = backgroundimage;
41                formObj.width.value = width;
42                formObj.height.value = height;
43                formObj.id.value = id;
44                formObj.lang.value = lang;
45                formObj.style.value = ed.dom.serializeStyle(st);
46                selectByValue(formObj, 'align', align);
47                selectByValue(formObj, 'valign', valign);
48                selectByValue(formObj, 'class', className, true, true);
49                selectByValue(formObj, 'celltype', celltype);
50                selectByValue(formObj, 'dir', dir);
51                selectByValue(formObj, 'scope', scope);
52
53                // Resize some elements
54                if (isVisible('backgroundimagebrowser'))
55                        document.getElementById('backgroundimage').style.width = '180px';
56
57                updateColor('bordercolor_pick', 'bordercolor');
58                updateColor('bgcolor_pick', 'bgcolor');
59        } else
60                tinyMCEPopup.dom.hide('action');
61}
62
63function updateAction() {
64        var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];
65
66        tinyMCEPopup.restoreSelection();
67        el = ed.selection.getStart();
68        tdElm = ed.dom.getParent(el, "td,th");
69        trElm = ed.dom.getParent(el, "tr");
70        tableElm = ed.dom.getParent(el, "table");
71
72        // Cell is selected
73        if (ed.dom.hasClass(tdElm, 'mceSelected')) {
74                // Update all selected sells
75                tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) {
76                        updateCell(td);
77                });
78
79                ed.addVisual();
80                ed.nodeChanged();
81                inst.execCommand('mceEndUndoLevel');
82                tinyMCEPopup.close();
83                return;
84        }
85
86        switch (getSelectValue(formObj, 'action')) {
87                case "cell":
88                        var celltype = getSelectValue(formObj, 'celltype');
89                        var scope = getSelectValue(formObj, 'scope');
90
91                        function doUpdate(s) {
92                                if (s) {
93                                        updateCell(tdElm);
94
95                                        ed.addVisual();
96                                        ed.nodeChanged();
97                                        inst.execCommand('mceEndUndoLevel');
98                                        tinyMCEPopup.close();
99                                }
100                        };
101
102                        if (ed.getParam("accessibility_warnings", 1)) {
103                                if (celltype == "th" && scope == "")
104                                        tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate);
105                                else
106                                        doUpdate(1);
107
108                                return;
109                        }
110
111                        updateCell(tdElm);
112                        break;
113
114                case "row":
115                        var cell = trElm.firstChild;
116
117                        if (cell.nodeName != "TD" && cell.nodeName != "TH")
118                                cell = nextCell(cell);
119
120                        do {
121                                cell = updateCell(cell, true);
122                        } while ((cell = nextCell(cell)) != null);
123
124                        break;
125
126                case "all":
127                        var rows = tableElm.getElementsByTagName("tr");
128
129                        for (var i=0; i<rows.length; i++) {
130                                var cell = rows[i].firstChild;
131
132                                if (cell.nodeName != "TD" && cell.nodeName != "TH")
133                                        cell = nextCell(cell);
134
135                                do {
136                                        cell = updateCell(cell, true);
137                                } while ((cell = nextCell(cell)) != null);
138                        }
139
140                        break;
141        }
142
143        ed.addVisual();
144        ed.nodeChanged();
145        inst.execCommand('mceEndUndoLevel');
146        tinyMCEPopup.close();
147}
148
149function nextCell(elm) {
150        while ((elm = elm.nextSibling) != null) {
151                if (elm.nodeName == "TD" || elm.nodeName == "TH")
152                        return elm;
153        }
154
155        return null;
156}
157
158function updateCell(td, skip_id) {
159        var inst = ed;
160        var formObj = document.forms[0];
161        var curCellType = td.nodeName.toLowerCase();
162        var celltype = getSelectValue(formObj, 'celltype');
163        var doc = inst.getDoc();
164        var dom = ed.dom;
165
166        if (!skip_id)
167                dom.setAttrib(td, 'id', formObj.id.value);
168
169        dom.setAttrib(td, 'align', formObj.align.value);
170        dom.setAttrib(td, 'vAlign', formObj.valign.value);
171        dom.setAttrib(td, 'lang', formObj.lang.value);
172        dom.setAttrib(td, 'dir', getSelectValue(formObj, 'dir'));
173        dom.setAttrib(td, 'style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));
174        dom.setAttrib(td, 'scope', formObj.scope.value);
175        dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
176
177        // Clear deprecated attributes
178        ed.dom.setAttrib(td, 'width', '');
179        ed.dom.setAttrib(td, 'height', '');
180        ed.dom.setAttrib(td, 'bgColor', '');
181        ed.dom.setAttrib(td, 'borderColor', '');
182        ed.dom.setAttrib(td, 'background', '');
183
184        // Set styles
185        td.style.width = getCSSSize(formObj.width.value);
186        td.style.height = getCSSSize(formObj.height.value);
187        if (formObj.bordercolor.value != "") {
188                td.style.borderColor = formObj.bordercolor.value;
189                td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
190                td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
191        } else
192                td.style.borderColor = '';
193
194        td.style.backgroundColor = formObj.bgcolor.value;
195
196        if (formObj.backgroundimage.value != "")
197                td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
198        else
199                td.style.backgroundImage = '';
200
201        if (curCellType != celltype) {
202                // changing to a different node type
203                var newCell = doc.createElement(celltype);
204
205                for (var c=0; c<td.childNodes.length; c++)
206                        newCell.appendChild(td.childNodes[c].cloneNode(1));
207
208                for (var a=0; a<td.attributes.length; a++)
209                        ed.dom.setAttrib(newCell, td.attributes[a].name, ed.dom.getAttrib(td, td.attributes[a].name));
210
211                td.parentNode.replaceChild(newCell, td);
212                td = newCell;
213        }
214
215        dom.setAttrib(td, 'style', dom.serializeStyle(dom.parseStyle(td.style.cssText)));
216
217        return td;
218}
219
220function changedBackgroundImage() {
221        var formObj = document.forms[0];
222        var st = ed.dom.parseStyle(formObj.style.value);
223
224        st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
225
226        formObj.style.value = ed.dom.serializeStyle(st);
227}
228
229function changedSize() {
230        var formObj = document.forms[0];
231        var st = ed.dom.parseStyle(formObj.style.value);
232
233        var width = formObj.width.value;
234        if (width != "")
235                st['width'] = getCSSSize(width);
236        else
237                st['width'] = "";
238
239        var height = formObj.height.value;
240        if (height != "")
241                st['height'] = getCSSSize(height);
242        else
243                st['height'] = "";
244
245        formObj.style.value = ed.dom.serializeStyle(st);
246}
247
248function changedColor() {
249        var formObj = document.forms[0];
250        var st = ed.dom.parseStyle(formObj.style.value);
251
252        st['background-color'] = formObj.bgcolor.value;
253        st['border-color'] = formObj.bordercolor.value;
254
255        formObj.style.value = ed.dom.serializeStyle(st);
256}
257
258function changedStyle() {
259        var formObj = document.forms[0];
260        var st = ed.dom.parseStyle(formObj.style.value);
261
262        if (st['background-image'])
263                formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
264        else
265                formObj.backgroundimage.value = '';
266
267        if (st['width'])
268                formObj.width.value = trimSize(st['width']);
269
270        if (st['height'])
271                formObj.height.value = trimSize(st['height']);
272
273        if (st['background-color']) {
274                formObj.bgcolor.value = st['background-color'];
275                updateColor('bgcolor_pick','bgcolor');
276        }
277
278        if (st['border-color']) {
279                formObj.bordercolor.value = st['border-color'];
280                updateColor('bordercolor_pick','bordercolor');
281        }
282}
283
284tinyMCEPopup.onInit.add(init);
Note: See TracBrowser for help on using the repository browser.