Changeset 1379


Ignore:
Timestamp:
02/07/18 01:14:28 (14 months ago)
Author:
gogo
Message:

#1163 Add ability to change cell (or all cells in row) type between td/th in TableOperations? row/cell properties dialog.

Also fix th in WebKitResize?

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/Dialogs/XinhaDialog.js

    r1267 r1379  
    763763{ 
    764764  return Xinha.getElementsByClassName(this.rootElem,className); 
     765}; 
     766 
     767/** Return all elements in the dialog that have the given class 
     768 * @type Array  
     769 * @param {String} className 
     770 */ 
     771Xinha.Dialog.prototype.getElementsByTagName = function(className) 
     772{ 
     773  return Xinha.getElementsByTagName(this.rootElem,className); 
     774}; 
     775 
     776/** Creates an elementin the dialog, with the given id if provided 
     777 *   (note that the id is transfomed into a unique id) 
     778 */ 
     779 
     780Xinha.Dialog.prototype.createElement = function(tagName, id) 
     781{ 
     782  var newElement = this.document.createElement(tagName); 
     783  if(typeof id == 'string') 
     784  { 
     785    newElement.id = this.createId(id); 
     786  } 
     787  return newElement; 
    765788}; 
    766789 
  • trunk/modules/Dialogs/panel-dialog.js

    r858 r1379  
    7676 
    7777Xinha.PanelDialog.prototype.getElementsByName = Xinha.Dialog.prototype.getElementsByName; 
     78 
     79Xinha.PanelDialog.prototype.getElementsByClassName = Xinha.Dialog.prototype.getElementsByClassName; 
     80 
     81Xinha.PanelDialog.prototype.createElement = Xinha.Dialog.prototype.createElement; 
  • trunk/plugins/ContextMenu/ContextMenu.js

    r1352 r1379  
    135135                                ); 
    136136                        break; 
     137        case "th": 
    137138                    case "td": 
    138139                        td = target; 
  • trunk/plugins/TableOperations/TableOperations.js

    r1362 r1379  
    644644  var Styler = new Xinha.InlineStyler(element, self.editor, dialog); 
    645645   
     646  // Insert a cell type selector into the layout section 
     647  var typeRow    = dialog.createElement('tr'); 
     648  var typeLabel  = dialog.createElement('th'); 
     649  typeLabel.className = 'label'; 
     650  typeLabel.innerHTML = Xinha._lc('Cell Type:', 'TableOperations'); 
     651  var typeSelect = dialog.createElement('select', 'to_type_select'); 
     652  typeSelect.options[0] = new Option(Xinha._lc('Do Not Change','TableOperations')); 
     653  typeSelect.options[1] = new Option(Xinha._lc('Normal (td)','TableOperations'), 'td'); 
     654  typeSelect.options[2] = new Option(Xinha._lc('Header (th)','TableOperations'), 'th'); 
     655   
     656  typeRow.appendChild(typeLabel); 
     657  typeRow.appendChild(typeSelect); 
     658   
    646659  function apply() { 
    647660    var params = dialog.hide(); 
    648     Styler.applyStyle(params); 
     661     
     662    // If we need to change the cell type(s) 
     663    if(typeSelect.selectedIndex > 0) 
     664    { 
     665      if(element.tagName.toLowerCase() == 'tr') 
     666      { 
     667        // Change td into th 
     668        var toChange = element.getElementsByTagName(typeSelect.options[typeSelect.selectedIndex].value == 'td' ? 'th': 'td'); 
     669        for(var i = toChange.length-1; i >= 0; i--) 
     670        { 
     671          if(element == toChange[i].parentNode) 
     672          { 
     673            var newNode = editor.convertNode(toChange[i], typeSelect.options[typeSelect.selectedIndex].value); 
     674            if(toChange[i].parentNode) 
     675            { 
     676              toChange[i].parentNode.replaceChild(newNode,toChange[i]); 
     677            } 
     678          } 
     679        } 
     680      } 
     681      else 
     682      { 
     683        if(element.tagName.toLowerCase() != typeSelect.options[typeSelect.selectedIndex].value) 
     684        {           
     685          Styler.element = editor.convertNode(element, typeSelect.options[typeSelect.selectedIndex].value); 
     686          if(element.parentNode) 
     687          { 
     688            element.parentNode.replaceChild(Styler.element,element); 
     689          } 
     690          element = Styler.element 
     691        } 
     692      } 
     693    } 
     694     
     695    Styler.applyStyle(params);     
    649696     
    650697    // various workarounds to refresh the table display (Gecko, 
     
    661708  var st_layout = Styler.createStyleLayoutFieldset(); 
    662709  var p = dialog.getElementById("TO_layout"); 
    663  
    664710  p.replaceChild(st_layout,p.firstChild); 
     711   
     712  // Insert the type selector into the Layout section 
     713  p.getElementsByTagName('table')[0].appendChild(typeRow); 
     714   
    665715   
    666716  var st_prop = Styler.createStyleFieldset(); 
     
    668718  p.replaceChild(st_prop,p.firstChild); 
    669719 
     720   
    670721  this.dialogRowCell.getElementById('ok').onclick = apply; 
    671722  this.dialogRowCell.show(); 
  • trunk/plugins/WebKitResize/WebKitResize.js

    r1372 r1379  
    3636  name          : "WebKit Image Resize", 
    3737  version       : "1.0", 
    38   developer     : "EditorBoost (http://www.editorboost.net/Webkitresize/Index), James Sleeman (Xinha)",   
     38  developer     : "EditorBoost, James Sleeman (Xinha)", 
     39  developer_url : "http://www.editorboost.net/Webkitresize/Index", 
    3940  license       : "GPLv3" 
    4041}; 
  • trunk/plugins/WebKitResize/jquery.webkitresize.js

    r1372 r1379  
    568568                        $(v).unbind('click'); 
    569569                        $(v).click(function (e) { 
    570                             if (e.target == v || ($(e.target).is('td') && $(e.target).parents("table")[0] == v)) { 
     570                            if (e.target == v || (($(e.target).is('td')||$(e.target).is('th')) && $(e.target).parents("table")[0] == v)) { 
    571571                                methods.tableClick(context, v); 
    572572                            } 
     
    891891 
    892892                rebind: function (context) { 
    893                     context.$ifrm.contents().find("td").each(function (i, v) { 
     893                    context.$ifrm.contents().find("td,th").each(function (i, v) { 
    894894                        $(v).unbind('click'); 
    895895                        $(v).click(function (e) { 
     
    902902                 
    903903                debind: function (context) { 
    904                     context.$ifrm.contents().find("td").each(function (i, v) { 
     904                    context.$ifrm.contents().find("td,th").each(function (i, v) { 
    905905                        $(v).unbind('click');                         
    906906                    }); 
Note: See TracChangeset for help on using the changeset viewer.