Aleksander Machniak
2012-08-27 8eefbb2158c43b51a8c33e6c480cbe61539b9535
program/js/tiny_mce/plugins/table/js/cell.js
@@ -11,7 +11,7 @@
   document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
   var inst = ed;
   var tdElm = ed.dom.getParent(ed.selection.getNode(), "td,th");
   var tdElm = ed.dom.getParent(ed.selection.getStart(), "td,th");
   var formObj = document.forms[0];
   var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style"));
@@ -24,7 +24,7 @@
   var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
   var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
   var className = ed.dom.getAttrib(tdElm, 'class');
   var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
   var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
   var id = ed.dom.getAttrib(tdElm, 'id');
   var lang = ed.dom.getAttrib(tdElm, 'lang');
   var dir = ed.dom.getAttrib(tdElm, 'dir');
@@ -34,39 +34,59 @@
   addClassesToList('class', 'table_cell_styles');
   TinyMCE_EditableSelects.init();
   formObj.bordercolor.value = bordercolor;
   formObj.bgcolor.value = bgcolor;
   formObj.backgroundimage.value = backgroundimage;
   formObj.width.value = width;
   formObj.height.value = height;
   formObj.id.value = id;
   formObj.lang.value = lang;
   formObj.style.value = ed.dom.serializeStyle(st);
   selectByValue(formObj, 'align', align);
   selectByValue(formObj, 'valign', valign);
   selectByValue(formObj, 'class', className, true, true);
   selectByValue(formObj, 'celltype', celltype);
   selectByValue(formObj, 'dir', dir);
   selectByValue(formObj, 'scope', scope);
   if (!ed.dom.hasClass(tdElm, 'mceSelected')) {
      formObj.bordercolor.value = bordercolor;
      formObj.bgcolor.value = bgcolor;
      formObj.backgroundimage.value = backgroundimage;
      formObj.width.value = width;
      formObj.height.value = height;
      formObj.id.value = id;
      formObj.lang.value = lang;
      formObj.style.value = ed.dom.serializeStyle(st);
      selectByValue(formObj, 'align', align);
      selectByValue(formObj, 'valign', valign);
      selectByValue(formObj, 'class', className, true, true);
      selectByValue(formObj, 'celltype', celltype);
      selectByValue(formObj, 'dir', dir);
      selectByValue(formObj, 'scope', scope);
   // Resize some elements
   if (isVisible('backgroundimagebrowser'))
      document.getElementById('backgroundimage').style.width = '180px';
      // Resize some elements
      if (isVisible('backgroundimagebrowser'))
         document.getElementById('backgroundimage').style.width = '180px';
   updateColor('bordercolor_pick', 'bordercolor');
   updateColor('bgcolor_pick', 'bgcolor');
      updateColor('bordercolor_pick', 'bordercolor');
      updateColor('bgcolor_pick', 'bgcolor');
   } else
      tinyMCEPopup.dom.hide('action');
}
function updateAction() {
   var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];
   if (!AutoValidator.validate(formObj)) {
      tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');
      return false;
   }
   tinyMCEPopup.restoreSelection();
   el = ed.selection.getNode();
   el = ed.selection.getStart();
   tdElm = ed.dom.getParent(el, "td,th");
   trElm = ed.dom.getParent(el, "tr");
   tableElm = ed.dom.getParent(el, "table");
   ed.execCommand('mceBeginUndoLevel');
   // Cell is selected
   if (ed.dom.hasClass(tdElm, 'mceSelected')) {
      // Update all selected sells
      tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) {
         updateCell(td);
      });
      ed.addVisual();
      ed.nodeChanged();
      inst.execCommand('mceEndUndoLevel');
      tinyMCEPopup.close();
      return;
   }
   switch (getSelectValue(formObj, 'action')) {
      case "cell":
@@ -105,6 +125,36 @@
         do {
            cell = updateCell(cell, true);
         } while ((cell = nextCell(cell)) != null);
         break;
      case "col":
         var curr, col = 0, cell = trElm.firstChild, rows = tableElm.getElementsByTagName("tr");
         if (cell.nodeName != "TD" && cell.nodeName != "TH")
            cell = nextCell(cell);
         do {
            if (cell == tdElm)
               break;
            col += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;
         } while ((cell = nextCell(cell)) != null);
         for (var i=0; i<rows.length; i++) {
            cell = rows[i].firstChild;
            if (cell.nodeName != "TD" && cell.nodeName != "TH")
               cell = nextCell(cell);
            curr = 0;
            do {
               if (curr == col) {
                  cell = updateCell(cell, true);
                  break;
               }
               curr += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;
            } while ((cell = nextCell(cell)) != null);
         }
         break;
@@ -149,15 +199,15 @@
   var dom = ed.dom;
   if (!skip_id)
      td.setAttribute('id', formObj.id.value);
      dom.setAttrib(td, 'id', formObj.id.value);
   td.setAttribute('align', formObj.align.value);
   td.setAttribute('vAlign', formObj.valign.value);
   td.setAttribute('lang', formObj.lang.value);
   td.setAttribute('dir', getSelectValue(formObj, 'dir'));
   td.setAttribute('style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));
   td.setAttribute('scope', formObj.scope.value);
   ed.dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
   dom.setAttrib(td, 'align', formObj.align.value);
   dom.setAttrib(td, 'vAlign', formObj.valign.value);
   dom.setAttrib(td, 'lang', formObj.lang.value);
   dom.setAttrib(td, 'dir', getSelectValue(formObj, 'dir'));
   dom.setAttrib(td, 'style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));
   dom.setAttrib(td, 'scope', formObj.scope.value);
   dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
   // Clear deprecated attributes
   ed.dom.setAttrib(td, 'width', '');