From d9344fc349e8c5765898c90bf5061e56cd21c8a0 Mon Sep 17 00:00:00 2001
From: svncommit <devs@roundcube.net>
Date: Tue, 15 Apr 2008 17:22:00 -0400
Subject: [PATCH] HTML editing fixes, upgrade to TinyMCE v3.0.6

---
 program/js/tiny_mce/plugins/table/js/row.js |   86 ++++++++++++++++++++++++------------------
 1 files changed, 49 insertions(+), 37 deletions(-)

diff --git a/program/js/tiny_mce/plugins/table/jscripts/row.js b/program/js/tiny_mce/plugins/table/js/row.js
similarity index 68%
rename from program/js/tiny_mce/plugins/table/jscripts/row.js
rename to program/js/tiny_mce/plugins/table/js/row.js
index 395ddf0..d25f635 100644
--- a/program/js/tiny_mce/plugins/table/jscripts/row.js
+++ b/program/js/tiny_mce/plugins/table/js/row.js
@@ -1,37 +1,42 @@
+tinyMCEPopup.requireLangPack();
+
 function init() {
 	tinyMCEPopup.resizeToInnerSize();
 
 	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
 	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
 
-	var inst = tinyMCE.selectedInstance;
-	var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
+	var inst = tinyMCEPopup.editor;
+	var dom = inst.dom;
+	var trElm = dom.getParent(inst.selection.getNode(), "tr");
 	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(tinyMCE.getAttrib(trElm, "style"));
+	var st = dom.parseStyle(dom.getAttrib(trElm, "style"));
 
 	// Get table row data
 	var rowtype = trElm.parentNode.nodeName.toLowerCase();
-	var align = tinyMCE.getAttrib(trElm, 'align');
-	var valign = tinyMCE.getAttrib(trElm, 'valign');
+	var align = dom.getAttrib(trElm, 'align');
+	var valign = dom.getAttrib(trElm, 'valign');
 	var height = trimSize(getStyle(trElm, 'height', 'height'));
-	var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(trElm, 'class'), false);
+	var className = dom.getAttrib(trElm, 'class');
 	var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
 	var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
-	var id = tinyMCE.getAttrib(trElm, 'id');
-	var lang = tinyMCE.getAttrib(trElm, 'lang');
-	var dir = tinyMCE.getAttrib(trElm, 'dir');
+	var id = dom.getAttrib(trElm, 'id');
+	var lang = dom.getAttrib(trElm, 'lang');
+	var dir = dom.getAttrib(trElm, 'dir');
 
 	// Setup form
 	addClassesToList('class', 'table_row_styles');
+	TinyMCE_EditableSelects.init();
+
 	formObj.bgcolor.value = bgcolor;
 	formObj.backgroundimage.value = backgroundimage;
 	formObj.height.value = height;
 	formObj.id.value = id;
 	formObj.lang.value = lang;
-	formObj.style.value = tinyMCE.serializeStyle(st);
+	formObj.style.value = dom.serializeStyle(st);
 	selectByValue(formObj, 'align', align);
 	selectByValue(formObj, 'valign', valign);
-	selectByValue(formObj, 'class', className);
+	selectByValue(formObj, 'class', className, true, true);
 	selectByValue(formObj, 'rowtype', rowtype);
 	selectByValue(formObj, 'dir', dir);
 
@@ -43,13 +48,12 @@
 }
 
 function updateAction() {
-	tinyMCEPopup.restoreSelection();
-
-	var inst = tinyMCE.selectedInstance;
-	var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
-	var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
-	var formObj = document.forms[0];
+	var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];
 	var action = getSelectValue(formObj, 'action');
+
+	tinyMCEPopup.restoreSelection();
+	trElm = dom.getParent(inst.selection.getNode(), "tr");
+	tableElm = dom.getParent(inst.selection.getNode(), "table");
 
 	inst.execCommand('mceBeginUndoLevel');
 
@@ -78,15 +82,16 @@
 			break;
 	}
 
-	tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
-	tinyMCE.triggerNodeChange();
+	inst.addVisual();
+	inst.nodeChanged();
 	inst.execCommand('mceEndUndoLevel');
 	tinyMCEPopup.close();
 }
 
 function updateRow(tr_elm, skip_id, skip_parent) {
-	var inst = tinyMCE.selectedInstance;
+	var inst = tinyMCEPopup.editor;
 	var formObj = document.forms[0];
+	var dom = inst.dom;
 	var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
 	var rowtype = getSelectValue(formObj, 'rowtype');
 	var doc = inst.getDoc();
@@ -99,8 +104,8 @@
 	tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));
 	tr_elm.setAttribute('lang', formObj.lang.value);
 	tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));
-	tr_elm.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));
-	tinyMCE.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
+	tr_elm.setAttribute('style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));
+	dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
 
 	// Clear deprecated attributes
 	tr_elm.setAttribute('background', '');
@@ -122,7 +127,7 @@
 		var newRow = tr_elm.cloneNode(1);
 
 		// next, find the parent of its new destination (creating it if necessary)
-		var theTable = tinyMCE.getParentElement(tr_elm, "table");
+		var theTable = dom.getParent(tr_elm, "table");
 		var dest = rowtype;
 		var newParent = null;
 		for (var i = 0; i < theTable.childNodes.length; i++) {
@@ -133,9 +138,12 @@
 		if (newParent == null) {
 			newParent = doc.createElement(dest);
 
-			if (dest == "thead")
-				theTable.insertBefore(newParent, theTable.firstChild);
-			else
+			if (dest == "thead") {
+				if (theTable.firstChild.nodeName == 'CAPTION')
+					inst.dom.insertAfter(newParent, theTable.firstChild);
+				else
+					theTable.insertBefore(newParent, theTable.firstChild);
+			} else
 				theTable.appendChild(newParent);
 		}
 
@@ -148,20 +156,22 @@
 		// set tr_elm to the new node
 		tr_elm = newRow;
 	}
+
+	dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));
 }
 
 function changedBackgroundImage() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
+	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+	var st = dom.parseStyle(formObj.style.value);
 
 	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
 
-	formObj.style.value = tinyMCE.serializeStyle(st);
+	formObj.style.value = dom.serializeStyle(st);
 }
 
 function changedStyle() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
+	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+	var st = dom.parseStyle(formObj.style.value);
 
 	if (st['background-image'])
 		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
@@ -178,8 +188,8 @@
 }
 
 function changedSize() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
+	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+	var st = dom.parseStyle(formObj.style.value);
 
 	var height = formObj.height.value;
 	if (height != "")
@@ -187,14 +197,16 @@
 	else
 		st['height'] = "";
 
-	formObj.style.value = tinyMCE.serializeStyle(st);
+	formObj.style.value = dom.serializeStyle(st);
 }
 
 function changedColor() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
+	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+	var st = dom.parseStyle(formObj.style.value);
 
 	st['background-color'] = formObj.bgcolor.value;
 
-	formObj.style.value = tinyMCE.serializeStyle(st);
+	formObj.style.value = dom.serializeStyle(st);
 }
+
+tinyMCEPopup.onInit.add(init);

--
Gitblit v1.9.1