bgneal@45: tinyMCEPopup.requireLangPack(); bgneal@45: bgneal@45: function init() { bgneal@45: tinyMCEPopup.resizeToInnerSize(); bgneal@45: bgneal@45: document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); bgneal@45: document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); bgneal@45: bgneal@45: var inst = tinyMCEPopup.editor; bgneal@45: var dom = inst.dom; bgneal@45: var trElm = dom.getParent(inst.selection.getNode(), "tr"); bgneal@45: var formObj = document.forms[0]; bgneal@45: var st = dom.parseStyle(dom.getAttrib(trElm, "style")); bgneal@45: bgneal@45: // Get table row data bgneal@45: var rowtype = trElm.parentNode.nodeName.toLowerCase(); bgneal@45: var align = dom.getAttrib(trElm, 'align'); bgneal@45: var valign = dom.getAttrib(trElm, 'valign'); bgneal@45: var height = trimSize(getStyle(trElm, 'height', 'height')); bgneal@45: var className = dom.getAttrib(trElm, 'class'); bgneal@45: var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor')); bgneal@45: var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");; bgneal@45: var id = dom.getAttrib(trElm, 'id'); bgneal@45: var lang = dom.getAttrib(trElm, 'lang'); bgneal@45: var dir = dom.getAttrib(trElm, 'dir'); bgneal@45: bgneal@45: // Setup form bgneal@45: addClassesToList('class', 'table_row_styles'); bgneal@45: TinyMCE_EditableSelects.init(); bgneal@45: bgneal@45: formObj.bgcolor.value = bgcolor; bgneal@45: formObj.backgroundimage.value = backgroundimage; bgneal@45: formObj.height.value = height; bgneal@45: formObj.id.value = id; bgneal@45: formObj.lang.value = lang; bgneal@45: formObj.style.value = dom.serializeStyle(st); bgneal@45: selectByValue(formObj, 'align', align); bgneal@45: selectByValue(formObj, 'valign', valign); bgneal@45: selectByValue(formObj, 'class', className, true, true); bgneal@45: selectByValue(formObj, 'rowtype', rowtype); bgneal@45: selectByValue(formObj, 'dir', dir); bgneal@45: bgneal@45: // Resize some elements bgneal@45: if (isVisible('backgroundimagebrowser')) bgneal@45: document.getElementById('backgroundimage').style.width = '180px'; bgneal@45: bgneal@45: updateColor('bgcolor_pick', 'bgcolor'); bgneal@45: } bgneal@45: bgneal@45: function updateAction() { bgneal@45: var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0]; bgneal@45: var action = getSelectValue(formObj, 'action'); bgneal@45: bgneal@45: tinyMCEPopup.restoreSelection(); bgneal@45: trElm = dom.getParent(inst.selection.getNode(), "tr"); bgneal@45: tableElm = dom.getParent(inst.selection.getNode(), "table"); bgneal@45: bgneal@45: inst.execCommand('mceBeginUndoLevel'); bgneal@45: bgneal@45: switch (action) { bgneal@45: case "row": bgneal@45: updateRow(trElm); bgneal@45: break; bgneal@45: bgneal@45: case "all": bgneal@45: var rows = tableElm.getElementsByTagName("tr"); bgneal@45: bgneal@45: for (var i=0; i<rows.length; i++) bgneal@45: updateRow(rows[i], true); bgneal@45: bgneal@45: break; bgneal@45: bgneal@45: case "odd": bgneal@45: case "even": bgneal@45: var rows = tableElm.getElementsByTagName("tr"); bgneal@45: bgneal@45: for (var i=0; i<rows.length; i++) { bgneal@45: if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even")) bgneal@45: updateRow(rows[i], true, true); bgneal@45: } bgneal@45: bgneal@45: break; bgneal@45: } bgneal@45: bgneal@45: inst.addVisual(); bgneal@45: inst.nodeChanged(); bgneal@45: inst.execCommand('mceEndUndoLevel'); bgneal@45: tinyMCEPopup.close(); bgneal@45: } bgneal@45: bgneal@45: function updateRow(tr_elm, skip_id, skip_parent) { bgneal@45: var inst = tinyMCEPopup.editor; bgneal@45: var formObj = document.forms[0]; bgneal@45: var dom = inst.dom; bgneal@45: var curRowType = tr_elm.parentNode.nodeName.toLowerCase(); bgneal@45: var rowtype = getSelectValue(formObj, 'rowtype'); bgneal@45: var doc = inst.getDoc(); bgneal@45: bgneal@45: // Update row element bgneal@45: if (!skip_id) bgneal@45: tr_elm.setAttribute('id', formObj.id.value); bgneal@45: bgneal@45: tr_elm.setAttribute('align', getSelectValue(formObj, 'align')); bgneal@45: tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign')); bgneal@45: tr_elm.setAttribute('lang', formObj.lang.value); bgneal@45: tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir')); bgneal@45: tr_elm.setAttribute('style', dom.serializeStyle(dom.parseStyle(formObj.style.value))); bgneal@45: dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class')); bgneal@45: bgneal@45: // Clear deprecated attributes bgneal@45: tr_elm.setAttribute('background', ''); bgneal@45: tr_elm.setAttribute('bgColor', ''); bgneal@45: tr_elm.setAttribute('height', ''); bgneal@45: bgneal@45: // Set styles bgneal@45: tr_elm.style.height = getCSSSize(formObj.height.value); bgneal@45: tr_elm.style.backgroundColor = formObj.bgcolor.value; bgneal@45: bgneal@45: if (formObj.backgroundimage.value != "") bgneal@45: tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')"; bgneal@45: else bgneal@45: tr_elm.style.backgroundImage = ''; bgneal@45: bgneal@45: // Setup new rowtype bgneal@45: if (curRowType != rowtype && !skip_parent) { bgneal@45: // first, clone the node we are working on bgneal@45: var newRow = tr_elm.cloneNode(1); bgneal@45: bgneal@45: // next, find the parent of its new destination (creating it if necessary) bgneal@45: var theTable = dom.getParent(tr_elm, "table"); bgneal@45: var dest = rowtype; bgneal@45: var newParent = null; bgneal@45: for (var i = 0; i < theTable.childNodes.length; i++) { bgneal@45: if (theTable.childNodes[i].nodeName.toLowerCase() == dest) bgneal@45: newParent = theTable.childNodes[i]; bgneal@45: } bgneal@45: bgneal@45: if (newParent == null) { bgneal@45: newParent = doc.createElement(dest); bgneal@45: bgneal@45: if (dest == "thead") { bgneal@45: if (theTable.firstChild.nodeName == 'CAPTION') bgneal@45: inst.dom.insertAfter(newParent, theTable.firstChild); bgneal@45: else bgneal@45: theTable.insertBefore(newParent, theTable.firstChild); bgneal@45: } else bgneal@45: theTable.appendChild(newParent); bgneal@45: } bgneal@45: bgneal@45: // append the row to the new parent bgneal@45: newParent.appendChild(newRow); bgneal@45: bgneal@45: // remove the original bgneal@45: tr_elm.parentNode.removeChild(tr_elm); bgneal@45: bgneal@45: // set tr_elm to the new node bgneal@45: tr_elm = newRow; bgneal@45: } bgneal@45: bgneal@45: dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText))); bgneal@45: } bgneal@45: bgneal@45: function changedBackgroundImage() { bgneal@45: var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom; bgneal@45: var st = dom.parseStyle(formObj.style.value); bgneal@45: bgneal@45: st['background-image'] = "url('" + formObj.backgroundimage.value + "')"; bgneal@45: bgneal@45: formObj.style.value = dom.serializeStyle(st); bgneal@45: } bgneal@45: bgneal@45: function changedStyle() { bgneal@45: var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom; bgneal@45: var st = dom.parseStyle(formObj.style.value); bgneal@45: bgneal@45: if (st['background-image']) bgneal@45: formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); bgneal@45: else bgneal@45: formObj.backgroundimage.value = ''; bgneal@45: bgneal@45: if (st['height']) bgneal@45: formObj.height.value = trimSize(st['height']); bgneal@45: bgneal@45: if (st['background-color']) { bgneal@45: formObj.bgcolor.value = st['background-color']; bgneal@45: updateColor('bgcolor_pick','bgcolor'); bgneal@45: } bgneal@45: } bgneal@45: bgneal@45: function changedSize() { bgneal@45: var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom; bgneal@45: var st = dom.parseStyle(formObj.style.value); bgneal@45: bgneal@45: var height = formObj.height.value; bgneal@45: if (height != "") bgneal@45: st['height'] = getCSSSize(height); bgneal@45: else bgneal@45: st['height'] = ""; bgneal@45: bgneal@45: formObj.style.value = dom.serializeStyle(st); bgneal@45: } bgneal@45: bgneal@45: function changedColor() { bgneal@45: var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom; bgneal@45: var st = dom.parseStyle(formObj.style.value); bgneal@45: bgneal@45: st['background-color'] = formObj.bgcolor.value; bgneal@45: bgneal@45: formObj.style.value = dom.serializeStyle(st); bgneal@45: } bgneal@45: bgneal@45: tinyMCEPopup.onInit.add(init);