Subversion-Projekte lars-tiefland.content-management

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
tinyMCEPopup.requireLangPack();
2
 
3
var ed;
4
 
5
function 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
 
63
function updateAction() {
64
	var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];
65
 
66
	if (!AutoValidator.validate(formObj)) {
67
		tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');
68
		return false;
69
	}
70
 
71
	tinyMCEPopup.restoreSelection();
72
	el = ed.selection.getStart();
73
	tdElm = ed.dom.getParent(el, "td,th");
74
	trElm = ed.dom.getParent(el, "tr");
75
	tableElm = ed.dom.getParent(el, "table");
76
 
77
	// Cell is selected
78
	if (ed.dom.hasClass(tdElm, 'mceSelected')) {
79
		// Update all selected sells
80
		tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) {
81
			updateCell(td);
82
		});
83
 
84
		ed.addVisual();
85
		ed.nodeChanged();
86
		inst.execCommand('mceEndUndoLevel');
87
		tinyMCEPopup.close();
88
		return;
89
	}
90
 
91
	switch (getSelectValue(formObj, 'action')) {
92
		case "cell":
93
			var celltype = getSelectValue(formObj, 'celltype');
94
			var scope = getSelectValue(formObj, 'scope');
95
 
96
			function doUpdate(s) {
97
				if (s) {
98
					updateCell(tdElm);
99
 
100
					ed.addVisual();
101
					ed.nodeChanged();
102
					inst.execCommand('mceEndUndoLevel');
103
					tinyMCEPopup.close();
104
				}
105
			};
106
 
107
			if (ed.getParam("accessibility_warnings", 1)) {
108
				if (celltype == "th" && scope == "")
109
					tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate);
110
				else
111
					doUpdate(1);
112
 
113
				return;
114
			}
115
 
116
			updateCell(tdElm);
117
			break;
118
 
119
		case "row":
120
			var cell = trElm.firstChild;
121
 
122
			if (cell.nodeName != "TD" && cell.nodeName != "TH")
123
				cell = nextCell(cell);
124
 
125
			do {
126
				cell = updateCell(cell, true);
127
			} while ((cell = nextCell(cell)) != null);
128
 
129
			break;
130
 
131
		case "col":
132
			var curr, col = 0, cell = trElm.firstChild, rows = tableElm.getElementsByTagName("tr");
133
 
134
			if (cell.nodeName != "TD" && cell.nodeName != "TH")
135
				cell = nextCell(cell);
136
 
137
			do {
138
				if (cell == tdElm)
139
					break;
140
				col += cell.getAttribute("colspan");
141
			} while ((cell = nextCell(cell)) != null);
142
 
143
			for (var i=0; i<rows.length; i++) {
144
				cell = rows[i].firstChild;
145
 
146
				if (cell.nodeName != "TD" && cell.nodeName != "TH")
147
					cell = nextCell(cell);
148
 
149
				curr = 0;
150
				do {
151
					if (curr == col) {
152
						cell = updateCell(cell, true);
153
						break;
154
					}
155
					curr += cell.getAttribute("colspan");
156
				} while ((cell = nextCell(cell)) != null);
157
			}
158
 
159
			break;
160
 
161
		case "all":
162
			var rows = tableElm.getElementsByTagName("tr");
163
 
164
			for (var i=0; i<rows.length; i++) {
165
				var cell = rows[i].firstChild;
166
 
167
				if (cell.nodeName != "TD" && cell.nodeName != "TH")
168
					cell = nextCell(cell);
169
 
170
				do {
171
					cell = updateCell(cell, true);
172
				} while ((cell = nextCell(cell)) != null);
173
			}
174
 
175
			break;
176
	}
177
 
178
	ed.addVisual();
179
	ed.nodeChanged();
180
	inst.execCommand('mceEndUndoLevel');
181
	tinyMCEPopup.close();
182
}
183
 
184
function nextCell(elm) {
185
	while ((elm = elm.nextSibling) != null) {
186
		if (elm.nodeName == "TD" || elm.nodeName == "TH")
187
			return elm;
188
	}
189
 
190
	return null;
191
}
192
 
193
function updateCell(td, skip_id) {
194
	var inst = ed;
195
	var formObj = document.forms[0];
196
	var curCellType = td.nodeName.toLowerCase();
197
	var celltype = getSelectValue(formObj, 'celltype');
198
	var doc = inst.getDoc();
199
	var dom = ed.dom;
200
 
201
	if (!skip_id)
202
		dom.setAttrib(td, 'id', formObj.id.value);
203
 
204
	dom.setAttrib(td, 'align', formObj.align.value);
205
	dom.setAttrib(td, 'vAlign', formObj.valign.value);
206
	dom.setAttrib(td, 'lang', formObj.lang.value);
207
	dom.setAttrib(td, 'dir', getSelectValue(formObj, 'dir'));
208
	dom.setAttrib(td, 'style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));
209
	dom.setAttrib(td, 'scope', formObj.scope.value);
210
	dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
211
 
212
	// Clear deprecated attributes
213
	ed.dom.setAttrib(td, 'width', '');
214
	ed.dom.setAttrib(td, 'height', '');
215
	ed.dom.setAttrib(td, 'bgColor', '');
216
	ed.dom.setAttrib(td, 'borderColor', '');
217
	ed.dom.setAttrib(td, 'background', '');
218
 
219
	// Set styles
220
	td.style.width = getCSSSize(formObj.width.value);
221
	td.style.height = getCSSSize(formObj.height.value);
222
	if (formObj.bordercolor.value != "") {
223
		td.style.borderColor = formObj.bordercolor.value;
224
		td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
225
		td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
226
	} else
227
		td.style.borderColor = '';
228
 
229
	td.style.backgroundColor = formObj.bgcolor.value;
230
 
231
	if (formObj.backgroundimage.value != "")
232
		td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
233
	else
234
		td.style.backgroundImage = '';
235
 
236
	if (curCellType != celltype) {
237
		// changing to a different node type
238
		var newCell = doc.createElement(celltype);
239
 
240
		for (var c=0; c<td.childNodes.length; c++)
241
			newCell.appendChild(td.childNodes[c].cloneNode(1));
242
 
243
		for (var a=0; a<td.attributes.length; a++)
244
			ed.dom.setAttrib(newCell, td.attributes[a].name, ed.dom.getAttrib(td, td.attributes[a].name));
245
 
246
		td.parentNode.replaceChild(newCell, td);
247
		td = newCell;
248
	}
249
 
250
	dom.setAttrib(td, 'style', dom.serializeStyle(dom.parseStyle(td.style.cssText)));
251
 
252
	return td;
253
}
254
 
255
function changedBackgroundImage() {
256
	var formObj = document.forms[0];
257
	var st = ed.dom.parseStyle(formObj.style.value);
258
 
259
	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
260
 
261
	formObj.style.value = ed.dom.serializeStyle(st);
262
}
263
 
264
function changedSize() {
265
	var formObj = document.forms[0];
266
	var st = ed.dom.parseStyle(formObj.style.value);
267
 
268
	var width = formObj.width.value;
269
	if (width != "")
270
		st['width'] = getCSSSize(width);
271
	else
272
		st['width'] = "";
273
 
274
	var height = formObj.height.value;
275
	if (height != "")
276
		st['height'] = getCSSSize(height);
277
	else
278
		st['height'] = "";
279
 
280
	formObj.style.value = ed.dom.serializeStyle(st);
281
}
282
 
283
function changedColor() {
284
	var formObj = document.forms[0];
285
	var st = ed.dom.parseStyle(formObj.style.value);
286
 
287
	st['background-color'] = formObj.bgcolor.value;
288
	st['border-color'] = formObj.bordercolor.value;
289
 
290
	formObj.style.value = ed.dom.serializeStyle(st);
291
}
292
 
293
function changedStyle() {
294
	var formObj = document.forms[0];
295
	var st = ed.dom.parseStyle(formObj.style.value);
296
 
297
	if (st['background-image'])
298
		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
299
	else
300
		formObj.backgroundimage.value = '';
301
 
302
	if (st['width'])
303
		formObj.width.value = trimSize(st['width']);
304
 
305
	if (st['height'])
306
		formObj.height.value = trimSize(st['height']);
307
 
308
	if (st['background-color']) {
309
		formObj.bgcolor.value = st['background-color'];
310
		updateColor('bgcolor_pick','bgcolor');
311
	}
312
 
313
	if (st['border-color']) {
314
		formObj.bordercolor.value = st['border-color'];
315
		updateColor('bordercolor_pick','bordercolor');
316
	}
317
}
318
 
319
tinyMCEPopup.onInit.add(init);