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