Ignore:
Timestamp:
10/02/08 17:07:26 (11 years ago)
Author:
douglas
Message:

FIXED Ticket #1176 Merging new dialogs branch back to trunk.

Location:
trunk/plugins/InsertAnchor
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/InsertAnchor/insert-anchor.js

    r999 r1044  
    1212  image    : editor.imgURL("insert-anchor.gif", "InsertAnchor"), 
    1313  textMode : false, 
    14   action   : function(editor) { 
    15                self.buttonPress(editor); 
     14  action   : function() { 
     15               self.show(); 
    1616             } 
    1717  }); 
     
    5050        return html; 
    5151} 
     52InsertAnchor.prototype.onGenerateOnce = function() 
     53{ 
     54        this._prepareDialog(); 
     55}; 
     56InsertAnchor.prototype._prepareDialog = function() 
     57{ 
     58  var self = this; 
     59  var editor = this.editor; 
    5260 
    53 InsertAnchor.prototype.buttonPress = function(editor) { 
    54   var outparam = null; 
    55   var html = editor.getSelectedHTML(); 
    56   var sel  = editor._getSelection(); 
    57   var range  = editor._createRange(sel); 
     61  if(!this.html) 
     62  { 
     63    Xinha._getback(Xinha.getPluginDir("InsertAnchor") + '/dialog.html', function(getback) { self.html = getback; self._prepareDialog(); }); 
     64    return; 
     65  } 
     66   
     67  // Now we have everything we need, so we can build the dialog. 
     68  this.dialog = new Xinha.Dialog(editor, this.html, 'InsertAnchor',{width:400}); 
     69   
     70  this.dialog.getElementById('ok').onclick = function() {self.apply();} 
     71 
     72        this.dialog.getElementById('cancel').onclick = function() { self.dialog.hide()}; 
     73         
     74  this.ready = true; 
     75}; 
     76 
     77InsertAnchor.prototype.show = function() 
     78{ 
     79        if(!this.ready) // if the user is too fast clicking the, we have to make them wait 
     80        { 
    5881  var self = this; 
    59   var  a = editor._activeElement(sel); 
    60   if(!(a != null && a.tagName.toLowerCase() == 'a')) { 
    61     a = editor._getFirstAncestor(sel, 'a');  
     82                window.setTimeout(function() {self.show();},100); 
     83                return; 
    6284  } 
    63   if (a != null && a.tagName.toLowerCase() == 'a') 
    64     outparam = { name : a.id }; 
     85        var editor = this.editor; 
     86        this.selectedHTML = editor.getSelectedHTML(); 
     87        var sel  = editor.getSelection(); 
     88  var range  = editor.createRange(sel); 
     89  this.a = editor.activeElement(sel); 
     90   
     91  if(!(this.a != null && this.a.tagName.toLowerCase() == 'a')) 
     92  { 
     93    this.a = editor._getFirstAncestor(sel, 'a');  
     94  } 
     95   
     96  if (this.a != null && this.a.tagName.toLowerCase() == 'a') 
     97  { 
     98    inputs = { name : this.a.id }; 
     99  } 
    65100  else 
    66     outparam = { name : '' }; 
     101  { 
     102    inputs = { name : '' }; 
     103  }  
    67104 
    68   editor._popupDialog( "plugin://InsertAnchor/insert_anchor", function( param ) { 
    69     if ( param ) { 
    70       var anchor = param["name"]; 
    71       if (anchor == "" || anchor == null) { 
    72         if (a) { 
     105        this.dialog.show(inputs); 
     106 
     107        this.dialog.getElementById("name").focus(); 
     108}; 
     109 
     110InsertAnchor.prototype.apply = function () 
     111{ 
     112        var editor = this.editor; 
     113        var param = this.dialog.hide(); 
     114        var anchor = param['name']; 
     115        var a = this.a; 
     116        var self = this; 
     117        if (anchor == "" || anchor == null) 
     118        { 
     119                if (a)  
     120                { 
    73121          var child = self.outwardHtml(a.innerHTML); 
    74122          a.parentNode.removeChild(a); 
     
    76124        } 
    77125        return; 
    78       }  
    79       try { 
     126        } 
     127        try  
     128        { 
    80129        var doc = editor._doc; 
    81         if (!a) { 
    82 //          editor.surroundHTML('<a id="' + anchor + '" name="' + anchor + '" title="' + anchor + '" class="anchor">', '</a>'); 
     130                if (!a) 
     131                { 
    83132          a = doc.createElement("a"); 
    84133          a.id = anchor; 
     
    87136          a.className = "anchor"; 
    88137          a.innerHTML = self.placeholderImg; 
     138                        var html = editor.getSelectedHTML(); 
    89139                  if (html) a.innerHTML += html; 
    90           if (Xinha.is_ie) { 
     140                        if (Xinha.is_ie)  
     141                        { 
    91142            range.pasteHTML(a.outerHTML); 
    92           } else { 
     143                } 
     144                        else  
     145                        { 
    93146            editor.insertNodeAtSelection(a); 
    94147          } 
    95         } else { 
     148                } 
     149                else  
     150                { 
    96151          a.id = anchor; 
    97152          a.name = anchor; 
     
    101156      } 
    102157      catch (e) { } 
     158 
    103159    } 
    104   }, outparam); 
    105 }; 
Note: See TracChangeset for help on using the changeset viewer.