Changeset 806


Ignore:
Timestamp:
04/02/07 15:10:25 (12 years ago)
Author:
ray
Message:

updated branch

Location:
branches/ray
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/ray/modules/Dialogs/XinhaDialog.js

    r791 r806  
    9999 
    100100  rootElem.style.paddingBottom = "10px"; 
    101   rootElem.style.width = size.width  ? size.width + 'px' : ''; 
    102  
    103   if (size.height) 
     101  rootElem.style.width = ( size && size.width )  ? size.width + 'px' : ''; 
     102 
     103  if (size && size.height) 
    104104  { 
    105105    if (Xinha.ie_version < 7) 
  • branches/ray/modules/Gecko/Gecko.js

    r796 r806  
    544544Xinha.prototype.restoreSelection = function(savedSelection) 
    545545{ 
    546   var sel = this.getSelection(); 
    547   sel.removeAllRanges(); 
    548   sel.addRange(savedSelection); 
     546  try  
     547  { 
     548    var sel = this.getSelection(); 
     549    sel.removeAllRanges(); 
     550    sel.addRange(savedSelection); 
     551  } 
     552  catch (e) {} 
    549553} 
    550554/** 
  • branches/ray/plugins/SmartReplace/dialog.html

    r762 r806  
    88  <tr> 
    99    <td style="width:15px"><input type="checkbox" id="[convert]" name="[convert]" /></td> 
    10     <td style="text-align:left"><l10n>Convert all quotes and dashes in the current document</l10n></td> 
     10    <td style="text-align:left"><l10n>Convert all quotes and dashes in the current document</l10n> <input style="display:none" type="button" id="[ok]" value="_(OK)" /></td> 
    1111  </tr> 
    1212</table> 
    1313</div> 
    1414<div class="buttons"> 
    15   <input type="button" id="[ok]"     value="_(OK)"     /> 
    16   <input type="button" id="[cancel]" value="_(Cancel)" /> 
     15   
    1716</div> 
  • branches/ray/plugins/SmartReplace/smart-replace.js

    r786 r806  
    243243        this.editor.setHTML(html); 
    244244} 
    245 SmartReplace.prototype.dialog = function() 
    246 { 
    247         var self = this; 
    248         var action = function (param) 
    249         { 
    250                 self.toggleActivity(param.enable);  
    251                 if (param.convert) 
    252                 { 
    253                         self.replaceAll(); 
    254                 } 
    255         } 
    256         var init = this; 
    257         Dialog(_editor_url+'plugins/SmartReplace/popups/dialog.html', action, init); 
    258 } 
    259  
    260245 
    261246SmartReplace.prototype.buttonPress = function(opts, obj) 
     
    304289  this.dialog = new Xinha.Dialog(editor, this.html, 'SmartReplace',{},{modal:false}); 
    305290  this.dialog.attachToPanel('top'); 
     291   
     292  this.dialog.getElementById('enable').onchange = function () 
     293  { 
     294        self.toggleActivity(this.checked);  
     295  } 
     296  this.dialog.getElementById('convert').onchange = function () 
     297  { 
     298        self.dialog.getElementById('ok').style.display = ( this.checked ) ? '' : 'none';  
     299  } 
     300  this.dialog.getElementById('ok').onclick = function () 
     301  { 
     302        self.replaceAll(); 
     303        self.dialog.getElementById('convert').checked = false;  
     304        this.style.display =  'none';  
     305  } 
    306306  this.ready = true; 
    307307}; 
    308308 
    309 SmartReplace.prototype.show = function(inputs, ok, cancel) 
     309SmartReplace.prototype.show = function(inputs) 
    310310{ 
    311311  if(!this.ready) 
     
    318318  // Connect the OK and Cancel buttons 
    319319  var self = this; 
    320   if(ok) 
    321   { 
    322     this.dialog.getElementById('ok').onclick = ok; 
    323   } 
    324   else 
    325   { 
    326     this.dialog.getElementById('ok').onclick = function() {self.dialog.hide();}; 
    327   } 
    328  
    329   if(cancel) 
    330   { 
    331     this.dialog.getElementById('cancel').onclick = cancel; 
    332   } 
    333   else 
    334   { 
    335     this.dialog.getElementById('cancel').onclick = function() { self.dialog.hide()}; 
    336   } 
    337320 
    338321  this.dialog.show(inputs); 
  • branches/ray/plugins/Stylist/stylist.js

    r796 r806  
    8484    var className = x.trim(); 
    8585    var applicable = true; 
    86     var idApplicable = false; 
    8786    var apply_to   = active_elem; 
    8887 
     
    9897      // No class name, just redefines a tag 
    9998      applicable = false; 
    100    
    101       if (className.indexOf('#') >= 0) 
    102       { 
    103         idApplicable = true; 
    104       } 
    10599    } 
    106100 
     
    154148    } 
    155149 
    156     if (idApplicable) // IDs 
    157     { 
    158        // requires specific html tag 
    159       tag = className.substring(0, className.indexOf('#')).toLowerCase(); 
    160       var idName = className.substring(className.indexOf('#'), className.length); 
    161    
    162       // To apply we must have an ancestor tag that is the right type 
    163       if(active_elem != null && active_elem.tagName.toLowerCase() == tag) 
    164       { 
    165         idApplicable = true; 
    166         apply_to = active_elem; 
    167       } 
    168       else 
    169       { 
    170         if(this._getFirstAncestor(this._getSelection(), [tag]) != null) 
    171         { 
    172           idApplicable = true; 
    173           apply_to = this._getFirstAncestor(this._getSelection(), [tag]); 
    174         } 
    175         else 
    176         { 
    177           // alert (this._getFirstAncestor(this._getSelection(), tag)); 
    178           // If we don't have an ancestor, but it's a div/span/p/hx stle, we can make one 
    179           if(( tag == 'div' || tag == 'span' || tag == 'p' 
    180               || (tag.substr(0,1) == 'h' && tag.length == 2 && tag != 'hr'))) 
    181           { 
    182             if(!this._selectionEmpty(this._getSelection())) 
    183             { 
    184               idApplicable = true; 
    185               apply_to = 'new'; 
    186             } 
    187             else 
    188             { 
    189               // See if we can get a paragraph or header that can be converted 
    190               apply_to = this._getFirstAncestor(sel, ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7']); 
    191               if(apply_to != null) 
    192               { 
    193                 idApplicable = true; 
    194               } 
    195             } 
    196           } 
    197           else 
    198           { 
    199             idApplicable = false; 
    200           } 
    201         } 
    202       }     
    203     } 
    204  
    205  
    206     if(applicable || idApplicable) 
    207     { 
    208  
    209       if (idApplicable) 
    210       { 
    211         // Remove the first . 
    212         idName = idName.substring(idName.indexOf('#'), idName.length); 
    213  
    214         // Replace any futher ones with spaces (for multiple id definitions (yes it happens)) 
    215         idName = idName.replace('#', ' '); 
    216       } 
    217       else 
    218       { 
    219         // Remove the first . 
    220         className = className.substring(className.indexOf('.'), className.length); 
    221  
    222         // Replace any futher ones with spaces (for multiple class definitions) 
    223         className = className.replace('.', ' '); 
    224       } 
     150    if(applicable) 
     151    { 
     152      // Remove the first . 
     153      className = className.substring(className.indexOf('.'), className.length); 
     154 
     155      // Replace any futher ones with spaces (for multiple class definitions) 
     156      className = className.replace('.', ' '); 
    225157 
    226158      if(apply_to == null) 
     
    239171    } 
    240172 
    241     if (idApplicable) 
    242     { 
    243       var applied    = (this._ancestorsWithIDs(sel, tag, idName).length > 0 ? true : false); 
    244       var applied_to = this._ancestorsWithIDs(sel, tag, idName); 
    245     } 
    246     else 
    247     { 
    248       var applied    = (this._ancestorsWithClasses(sel, tag, className).length > 0 ? true : false); 
    249       var applied_to = this._ancestorsWithClasses(sel, tag, className); 
    250     } 
    251  
    252     if(applicable || idApplicable) 
     173    var applied    = (this._ancestorsWithClasses(sel, tag, className).length > 0 ? true : false); 
     174    var applied_to = this._ancestorsWithClasses(sel, tag, className); 
     175 
     176    if(applicable) 
    253177    { 
    254178      var anch = document.createElement('a'); 
    255       if (idApplicable) 
    256         anch._stylist_idName = idName.trim();   
    257       else 
    258         anch._stylist_className = className.trim(); 
     179      anch._stylist_className = className.trim(); 
    259180      anch._stylist_applied   = applied; 
    260181      anch._stylist_appliedTo = applied_to; 
     
    265186      anch.href = 'javascript:void(0)'; 
    266187      var editor = this; 
    267       if (idApplicable) 
    268       {   
    269         anch.onclick = function() 
    270         { 
    271           if(this._stylist_applied == true) 
    272           { 
    273             editor._stylistRemoveIDs(this._stylist_idName, this._stylist_appliedTo); 
    274           } 
    275           else 
    276           { 
    277             editor._stylistAddIDs(this._stylist_applyTo, this._stylist_applyTag, this._stylist_idName); 
    278           } 
    279           return false; 
    280         } 
    281       } 
    282       else 
    283       { 
    284         anch.onclick = function() 
    285         { 
    286           if(this._stylist_applied == true) 
    287           { 
    288             editor._stylistRemoveClasses(this._stylist_className, this._stylist_appliedTo); 
    289           } 
    290           else 
    291           { 
    292             editor._stylistAddClasses(this._stylist_applyTo, this._stylist_applyTag, this._stylist_className); 
    293           } 
    294           return false; 
    295         } 
     188      anch.onclick = function() 
     189      { 
     190        if(this._stylist_applied == true) 
     191        { 
     192          editor._stylistRemoveClasses(this._stylist_className, this._stylist_appliedTo); 
     193        } 
     194        else 
     195        { 
     196          editor._stylistAddClasses(this._stylist_applyTo, this._stylist_applyTag, this._stylist_className); 
     197        } 
     198        return false; 
    296199      } 
    297200 
     
    351254    this.updateToolbar(); 
    352255  }; 
    353    
    354 Xinha.prototype._stylistAddIDs = function(el, tag, ids) 
    355   { 
    356     if(el == 'new') 
    357     { 
    358       this.insertHTML('<' + tag + ' id="' + ids + '">' + this.getSelectedHTML() + '</' + tag + '>'); 
    359     } 
    360     else 
    361     { 
    362       if(tag != null && el.tagName.toLowerCase() != tag) 
    363       { 
    364         // Have to change the tag! 
    365         var new_el = this.switchElementTag(el, tag); 
    366  
    367         if(typeof el._stylist_usedToBe != 'undefined') 
    368         { 
    369           new_el._stylist_usedToBe = el._stylist_usedToBe; 
    370           new_el._stylist_usedToBe[new_el._stylist_usedToBe.length] = {'tagName' : el.tagName, 'id' : el.getAttribute('id')}; 
    371         } 
    372         else 
    373         { 
    374           new_el._stylist_usedToBe = [{'tagName' : el.tagName, 'id' : el.getAttribute('id')}]; 
    375         } 
    376  
    377         Xinha.addIDs(new_el, ids); 
    378       } 
    379       else 
    380       { 
    381         Xinha._addIDs(el, ids); 
    382       } 
    383     } 
    384     this.focusEditor(); 
    385     this.updateToolbar(); 
    386   };   
    387256 
    388257/** 
     
    398267    this.updateToolbar(); 
    399268  }; 
    400    
    401 Xinha.prototype._stylistRemoveIDs = function(ids, from) 
    402   { 
    403     for(var x = 0; x < from.length; x++) 
    404     { 
    405       this._stylistRemoveIDsFull(from[x], ids); 
    406     } 
    407     this.focusEditor(); 
    408     this.updateToolbar(); 
    409   };   
    410269 
    411270Xinha.prototype._stylistRemoveClassesFull = function(el, classes) 
     
    463322    { 
    464323      el.className = new_thiers.join(' ').trim(); 
    465     } 
    466     else 
    467     { 
    468       // Must be a span with no classes and no id, so we can splice it out 
    469       var prnt = el.parentNode; 
    470       var childs = el.childNodes; 
    471       for(var x = 0; x < childs.length; x++) 
    472       { 
    473         prnt.insertBefore(childs[x], el); 
    474       } 
    475       prnt.removeChild(el); 
    476     } 
    477   } 
    478 }; 
    479  
    480 Xinha.prototype._stylistRemoveIDsFull = function(el, ids) 
    481 { 
    482   if(el != null) 
    483   { 
    484     var thiers = el.id.trim().split(' '); 
    485     var new_thiers = [ ]; 
    486     var ours   = ids.split(' '); 
    487     for(var x = 0; x < thiers.length; x++) 
    488     { 
    489       var exists = false; 
    490       for(var i = 0; exists == false && i < ours.length; i++) 
    491       { 
    492         if(ours[i] == thiers[x]) 
    493         { 
    494           exists = true; 
    495         } 
    496       } 
    497       if(exists == false) 
    498       { 
    499         new_thiers[new_thiers.length] = thiers[x]; 
    500       } 
    501     } 
    502  
    503     if(new_thiers.length == 0 && el._stylist_usedToBe && el._stylist_usedToBe.length > 0 && el._stylist_usedToBe[el._stylist_usedToBe.length - 1].id != null) 
    504     { 
    505       // Revert back to what we were IF the classes are identical 
    506       var last_el = el._stylist_usedToBe[el._stylist_usedToBe.length - 1]; 
    507       var last_ids = Xinha.arrayFilter(last_el.id.trim().split(' '), function(c) { if (c == null || c.trim() == '') { return false;} return true; }); 
    508  
    509       if( 
    510         (new_thiers.length == 0) 
    511         || 
    512         ( 
    513         Xinha.arrayContainsArray(new_thiers, last_ids) 
    514         && Xinha.arrayContainsArray(last_ids, new_thiers) 
    515         ) 
    516       ) 
    517       { 
    518         el = this.switchElementTag(el, last_el.tagName); 
    519         new_thiers = last_ids; 
    520       } 
    521       else 
    522       { 
    523         // We can't rely on the remembered tags any more 
    524         el._stylist_usedToBe = [ ]; 
    525       } 
    526     } 
    527  
    528     if(     new_thiers.length > 0 
    529         ||  el.tagName.toLowerCase() != 'span' 
    530         || (el.id && el.id != '') 
    531       ) 
    532     { 
    533       el.id = new_thiers.join(' ').trim(); 
    534324    } 
    535325    else 
     
    638428 
    639429          if(!found_class) 
    640           { 
    641             found_all = false; 
    642             break; 
    643           } 
    644         } 
    645  
    646         if(found_all) ancestors[ancestors.length] = prnt; 
    647       } 
    648       if(prnt.tagName.toLowerCase() == 'body')    break; 
    649       if(prnt.tagName.toLowerCase() == 'table'  ) break; 
    650     } 
    651     prnt = prnt.parentNode; 
    652   } 
    653  
    654   return ancestors; 
    655 }; 
    656  
    657 Xinha.prototype._ancestorsWithIDs = function(sel, tag, ids) 
    658 { 
    659   var ancestors = [ ]; 
    660   var prnt = this._activeElement(sel); 
    661   if(prnt == null) 
    662   { 
    663     try 
    664     { 
    665       prnt = (Xinha.is_ie ? this._createRange(sel).parentElement() : this._createRange(sel).commonAncestorContainer); 
    666     } 
    667     catch(e) 
    668     { 
    669       return ancestors; 
    670     } 
    671   } 
    672   var search_ids = ids.trim().split(' '); 
    673  
    674   while(prnt) 
    675   { 
    676     if(prnt.nodeType == 1 && prnt.id) 
    677     { 
    678       if(tag == null || prnt.tagName.toLowerCase() == tag) 
    679       { 
    680         var ids = prnt.id.trim().split(' '); 
    681         var found_all = true; 
    682         for(var i = 0; i < search_ids.length; i++) 
    683         { 
    684           var found_id = false; 
    685           for(var x = 0; x < ids.length; x++) 
    686           { 
    687             if(search_ids[i] == ids[x]) 
    688             { 
    689               found_id = true; 
    690               break; 
    691             } 
    692           } 
    693  
    694           if(!found_id) 
    695430          { 
    696431            found_all = false; 
  • branches/ray/plugins/SuperClean/super-clean.js

    r762 r806  
    222222  } 
    223223 
     224  this.loadFilters(); 
     225}; 
     226SuperClean.prototype.loadFilters = function() 
     227{ 
    224228  var sc = this; 
    225229  //load the filter-functions 
     
    238242                      function(func) { 
    239243                        eval('SuperClean.filterFunctions.'+filter+'='+func+';'); 
    240                         sc.onGenerate(); 
     244                        sc.loadFilters(); 
    241245                      }); 
    242246      } 
     
    244248    } 
    245249  } 
    246 }; 
     250} 
    247251// Inline Dialog for SuperClean 
    248252 
Note: See TracChangeset for help on using the changeset viewer.