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

Revision 4829, 7.0 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
3function init() {
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
9        var inst = tinyMCEPopup.editor;
10        var dom = inst.dom;
11        var trElm = dom.getParent(inst.selection.getStart(), "tr");
12        var formObj = document.forms[0];
13        var st = dom.parseStyle(dom.getAttrib(trElm, "style"));
14
15        // Get table row data
16        var rowtype = trElm.parentNode.nodeName.toLowerCase();
17        var align = dom.getAttrib(trElm, 'align');
18        var valign = dom.getAttrib(trElm, 'valign');
19        var height = trimSize(getStyle(trElm, 'height', 'height'));
20        var className = dom.getAttrib(trElm, 'class');
21        var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
22        var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
23        var id = dom.getAttrib(trElm, 'id');
24        var lang = dom.getAttrib(trElm, 'lang');
25        var dir = dom.getAttrib(trElm, 'dir');
26
27        selectByValue(formObj, 'rowtype', rowtype);
28
29        // Any cells selected
30        if (dom.select('td.mceSelected,th.mceSelected', trElm).length == 0) {
31                // Setup form
32                addClassesToList('class', 'table_row_styles');
33                TinyMCE_EditableSelects.init();
34
35                formObj.bgcolor.value = bgcolor;
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');
53}
54
55function updateAction() {
56        var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];
57        var action = getSelectValue(formObj, 'action');
58
59        tinyMCEPopup.restoreSelection();
60        trElm = dom.getParent(inst.selection.getStart(), "tr");
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        }
82
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
108        inst.addVisual();
109        inst.nodeChanged();
110        inst.execCommand('mceEndUndoLevel');
111        tinyMCEPopup.close();
112}
113
114function updateRow(tr_elm, skip_id, skip_parent) {
115        var inst = tinyMCEPopup.editor;
116        var formObj = document.forms[0];
117        var dom = inst.dom;
118        var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
119        var rowtype = getSelectValue(formObj, 'rowtype');
120        var doc = inst.getDoc();
121
122        // Update row element
123        if (!skip_id)
124                dom.setAttrib(tr_elm, 'id', formObj.id.value);
125
126        dom.setAttrib(tr_elm, 'align', getSelectValue(formObj, 'align'));
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)));
131        dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
132
133        // Clear deprecated attributes
134        dom.setAttrib(tr_elm, 'background', '');
135        dom.setAttrib(tr_elm, 'bgColor', '');
136        dom.setAttrib(tr_elm, 'height', '');
137
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)
153                var theTable = dom.getParent(tr_elm, "table");
154                var dest = rowtype;
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
164                        if (theTable.firstChild.nodeName == 'CAPTION')
165                                inst.dom.insertAfter(newParent, theTable.firstChild);
166                        else
167                                theTable.insertBefore(newParent, theTable.firstChild);
168                }
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        }
179
180        dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));
181}
182
183function changedBackgroundImage() {
184        var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
185        var st = dom.parseStyle(formObj.style.value);
186
187        st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
188
189        formObj.style.value = dom.serializeStyle(st);
190}
191
192function changedStyle() {
193        var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
194        var st = dom.parseStyle(formObj.style.value);
195
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
210function changedSize() {
211        var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
212        var st = dom.parseStyle(formObj.style.value);
213
214        var height = formObj.height.value;
215        if (height != "")
216                st['height'] = getCSSSize(height);
217        else
218                st['height'] = "";
219
220        formObj.style.value = dom.serializeStyle(st);
221}
222
223function changedColor() {
224        var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
225        var st = dom.parseStyle(formObj.style.value);
226
227        st['background-color'] = formObj.bgcolor.value;
228
229        formObj.style.value = dom.serializeStyle(st);
230}
231
232tinyMCEPopup.onInit.add(init);
Note: See TracBrowser for help on using the repository browser.