]> code.citadel.org Git - citadel.git/blob - webcit/tiny_mce/plugins/table/jscripts/table.js
* Removed the Kevin Roth rich text editor and replaced it with TinyMCE.
[citadel.git] / webcit / tiny_mce / plugins / table / jscripts / table.js
1 var action;
2
3 function insertTable() {
4         var formObj = document.forms[0];
5         var inst = tinyMCE.selectedInstance;
6         var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className;
7         var html = '';
8         var elm = tinyMCE.tableElm;
9
10         // Get form data
11         cols = formObj.elements['cols'].value;
12         rows = formObj.elements['rows'].value;
13         border = formObj.elements['border'].value != "" ? formObj.elements['border'].value  : 0;
14         cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
15         cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
16         align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;
17         width = formObj.elements['width'].value;
18         height = formObj.elements['height'].value;
19         bordercolor = formObj.elements['bordercolor'].value;
20         bgcolor = formObj.elements['bgcolor'].value;
21         className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;
22         id = formObj.elements['id'].value;
23         summary = formObj.elements['summary'].value;
24         style = formObj.elements['style'].value;
25         dir = formObj.elements['dir'].value;
26         lang = formObj.elements['lang'].value;
27         background = formObj.elements['backgroundimage'].value;
28
29         // Update table
30         if (action == "update") {
31                 inst.execCommand('mceBeginUndoLevel');
32
33                 tinyMCE.setAttrib(elm, 'cellPadding', cellpadding, true);
34                 tinyMCE.setAttrib(elm, 'cellSpacing', cellspacing, true);
35                 tinyMCE.setAttrib(elm, 'border', border, true);
36                 tinyMCE.setAttrib(elm, 'width', width, true);
37                 tinyMCE.setAttrib(elm, 'height', height, true);
38                 tinyMCE.setAttrib(elm, 'borderColor', bordercolor);
39                 tinyMCE.setAttrib(elm, 'bgColor', bgcolor);
40                 tinyMCE.setAttrib(elm, 'align', align);
41                 tinyMCE.setAttrib(elm, 'class', className);
42                 tinyMCE.setAttrib(elm, 'style', style);
43                 tinyMCE.setAttrib(elm, 'id', id);
44                 tinyMCE.setAttrib(elm, 'summary', summary);
45                 tinyMCE.setAttrib(elm, 'dir', dir);
46                 tinyMCE.setAttrib(elm, 'lang', lang);
47
48                 if (background != '')
49                         elm.style.backgroundImage = "url('" + background + "')";
50
51                 tinyMCE.handleVisualAid(tinyMCE.tableElm, false, inst.visualAid, inst);
52
53                 // Fix for stange MSIE align bug
54                 tinyMCE.tableElm.outerHTML = tinyMCE.tableElm.outerHTML;
55
56                 tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
57                 tinyMCE.triggerNodeChange();
58                 inst.execCommand('mceEndUndoLevel');
59                 tinyMCEPopup.close();
60                 return true;
61         }
62
63         // Create new table
64         html += '<table';
65
66         html += makeAttrib('id', id);
67         html += makeAttrib('border', border);
68         html += makeAttrib('cellpadding', cellpadding);
69         html += makeAttrib('cellspacing', cellspacing);
70         html += makeAttrib('width', width);
71         html += makeAttrib('height', height);
72         html += makeAttrib('bordercolor', bordercolor);
73         html += makeAttrib('bgcolor', bgcolor);
74         html += makeAttrib('align', align);
75         html += makeAttrib('class', tinyMCE.getVisualAidClass(className, border == 0));
76         html += makeAttrib('style', style);
77         html += makeAttrib('summary', summary);
78         html += makeAttrib('dir', dir);
79         html += makeAttrib('lang', lang);
80
81         html += '>';
82
83         for (var y=0; y<rows; y++) {
84                 html += "<tr>";
85
86                 for (var x=0; x<cols; x++)
87                         html += '<td>&nbsp;</td>';
88
89                 html += "</tr>";
90         }
91
92         html += "</table>";
93
94         inst.execCommand('mceBeginUndoLevel');
95         inst.execCommand('mceInsertContent', false, html);
96         tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual']);
97         inst.execCommand('mceEndUndoLevel');
98
99         tinyMCEPopup.close();
100 }
101
102 function makeAttrib(attrib, value) {
103         var formObj = document.forms[0];
104         var valueElm = formObj.elements[attrib];
105
106         if (typeof(value) == "undefined" || value == null) {
107                 value = "";
108
109                 if (valueElm)
110                         value = valueElm.value;
111         }
112
113         if (value == "")
114                 return "";
115
116         // XML encode it
117         value = value.replace(/&/g, '&amp;');
118         value = value.replace(/\"/g, '&quot;');
119         value = value.replace(/</g, '&lt;');
120         value = value.replace(/>/g, '&gr;');
121
122         return ' ' + attrib + '="' + value + '"';
123 }
124
125 function getStyle(elm, st, attrib, style) {
126         var val = tinyMCE.getAttrib(elm, attrib);
127
128         if (typeof(style) == 'undefined')
129                 style = attrib;
130
131         return val == '' ? (st[style] ? st[style].replace('px', '') : '') : val;
132 }
133
134 function init() {
135         tinyMCEPopup.resizeToInnerSize();
136
137         var cols = 2, rows = 2, border = 0, cellpadding = "", cellspacing = "";
138         var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
139         var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "";
140         var inst = tinyMCE.selectedInstance;
141         var formObj = document.forms[0];
142         var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
143
144         tinyMCE.tableElm = elm;
145         action = tinyMCE.getWindowArg('action');
146         if (action == null)
147                 action = "insert";
148
149         if (tinyMCE.tableElm && action != "insert") {
150                 var rowsAr = tinyMCE.tableElm.rows;
151                 var cols = 0;
152                 for (var i=0; i<rowsAr.length; i++)
153                         if (rowsAr[i].cells.length > cols)
154                                 cols = rowsAr[i].cells.length;
155
156                 cols = cols;
157                 rows = rowsAr.length;
158
159                 st = tinyMCE.parseStyle(tinyMCE.tableElm.style.cssText);
160                 border = getStyle(elm, st, 'border', 'border-width');
161                 cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', "");
162                 cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', "");
163                 width = getStyle(elm, st, 'width');
164                 height = getStyle(elm, st, 'height');
165                 bordercolor = getStyle(elm, st, 'bordercolor', 'border-color');
166                 bgcolor = getStyle(elm, st, 'bgcolor', 'background-color');
167                 align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align);
168                 className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false);
169                 id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id');
170                 summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary');
171                 style = tinyMCE.serializeStyle(st);
172                 dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir');
173                 lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang');
174                 background = getStyle(elm, st, 'background', 'background-image').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
175
176                 action = "update";
177         }
178
179         addClassesToList('class', "table_styles");
180
181         // Update form
182         selectByValue(formObj, 'align', align);
183         selectByValue(formObj, 'class', className);
184         formObj.cols.value = cols;
185         formObj.rows.value = rows;
186         formObj.border.value = border;
187         formObj.cellpadding.value = cellpadding;
188         formObj.cellspacing.value = cellspacing;
189         formObj.width.value = width;
190         formObj.height.value = height;
191         formObj.bordercolor.value = bordercolor;
192         formObj.bgcolor.value = bgcolor;
193         formObj.id.value = id;
194         formObj.summary.value = summary;
195         formObj.style.value = style;
196         formObj.dir.value = dir;
197         formObj.lang.value = lang;
198         formObj.backgroundimage.value = background;
199         formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 
200
201         updateColor('bordercolor_pick', 'bordercolor');
202         updateColor('bgcolor_pick', 'bgcolor');
203
204         // Resize some elements
205         if (isVisible('backgroundimagebrowser'))
206                 document.getElementById('backgroundimage').style.width = '180px';
207
208         // Disable some fields in update mode
209         if (action == "update") {
210                 formObj.cols.disabled = true;
211                 formObj.rows.disabled = true;
212         }
213 }
214
215 function changedBackgroundImage() {
216         var formObj = document.forms[0];
217         var st = tinyMCE.parseStyle(formObj.style.value);
218
219         st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
220
221         formObj.style.value = tinyMCE.serializeStyle(st);
222 }
223
224 function changedStyle() {
225         var formObj = document.forms[0];
226         var st = tinyMCE.parseStyle(formObj.style.value);
227
228         if (st['background-image'])
229                 formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
230         else
231                 formObj.backgroundimage.value = '';
232 }