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/modules/CreateLink
Files:
2 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/CreateLink/link.js

    r1001 r1044  
    1  
    21  /*--------------------------------------:noTabs=true:tabSize=2:indentSize=2:-- 
    32    --  Xinha (is not htmlArea) - http://xinha.org 
     
    1615    --  which provides the functionality to insert a hyperlink in the editor. 
    1716    -- 
    18     --  he file is loaded as a special plugin by the Xinha Core when no alternative method (plugin) is loaded. 
     17    --  The file is loaded as a special plugin by the Xinha Core when no alternative method (plugin) is loaded. 
    1918    -- 
    2019    -- 
     
    2423    --  $LastChangedBy:ray $ 
    2524    --------------------------------------------------------------------------*/ 
     25 
     26function CreateLink(editor) { 
     27        this.editor = editor; 
     28        var cfg = editor.config; 
     29        var self = this; 
     30 
     31   editor.config.btnList.createlink[3] = function() { self.show(self._getSelectedAnchor()); } 
     32} 
     33 
    2634CreateLink._pluginInfo = { 
    2735  name          : "CreateLink", 
    2836  origin        : "Xinha Core", 
    29   version       : "$LastChangedRevision:990 $".replace(/^[^:]*:\s*(.*)\s*\$$/, '$1'), 
     37  version       : "$LastChangedRevision$".replace(/^[^:]*:\s*(.*)\s*\$$/, '$1'), 
    3038  developer     : "The Xinha Core Developer Team", 
    31   developer_url : "$HeadURL:http://svn.xinha.webfactional.com/trunk/modules/CreateLink/link.js $".replace(/^[^:]*:\s*(.*)\s*\$$/, '$1'), 
     39  developer_url : "$HeadURL$".replace(/^[^:]*:\s*(.*)\s*\$$/, '$1'), 
    3240  sponsor       : "", 
    3341  sponsor_url   : "", 
     
    3543}; 
    3644 
    37 function CreateLink(editor) { 
    38 }                                                        
     45CreateLink.prototype._lc = function(string) { 
     46        return Xinha._lc(string, 'Xinha'); 
     47}; 
    3948 
    40 Xinha.prototype._createLink = function(link) 
     49 
     50CreateLink.prototype.onGenerateOnce = function() 
    4151{ 
    42   var editor = this; 
    43   var outparam = null; 
    44   if ( typeof link == "undefined" ) 
    45   { 
    46     link = this.getParentElement(); 
    47     if ( link ) 
    48     { 
    49       while (link && !/^a$/i.test(link.tagName)) 
    50       { 
    51         link = link.parentNode; 
    52       } 
    53     } 
    54   } 
    55   if ( !link ) 
    56   { 
    57     var sel = editor.getSelection(); 
    58     var range = editor.createRange(sel); 
    59     var compare = 0; 
    60     if ( Xinha.is_ie ) 
    61     { 
    62       if ( sel.type == "Control" ) 
    63       { 
    64         compare = range.length; 
    65       } 
    66       else 
    67       { 
    68         compare = range.compareEndPoints("StartToEnd", range); 
    69       } 
    70     } 
    71     else 
    72     { 
    73       compare = range.compareBoundaryPoints(range.START_TO_END, range); 
    74     } 
    75     if ( compare === 0 ) 
    76     { 
    77       alert(Xinha._lc("You need to select some text before creating a link")); 
    78       return; 
    79     } 
    80     outparam = 
    81     { 
    82       f_href : '', 
    83       f_title : '', 
    84       f_target : '', 
    85       f_usetarget : editor.config.makeLinkShowsTarget 
    86     }; 
    87   } 
    88   else 
    89   { 
    90     outparam = 
    91     { 
    92       f_href   : Xinha.is_ie ? editor.stripBaseURL(link.href) : link.getAttribute("href"), 
    93       f_title  : link.title, 
    94       f_target : link.target, 
    95       f_usetarget : editor.config.makeLinkShowsTarget 
    96     }; 
    97   } 
    98   Dialog( 
    99     editor.config.URIs.link, 
    100     function(param) 
    101     { 
    102       if ( !param ) 
    103       { 
    104         return false; 
    105       } 
    106       var a = link; 
    107       if ( !a ) 
    108       { 
    109         try 
    110         { 
    111           var tmp = Xinha.uniq('http://www.example.com/Link'); 
    112           editor._doc.execCommand('createlink', false, tmp); 
     52  CreateLink.loadAssets(); 
     53}; 
    11354 
    114           // Fix them up 
    115           var anchors = editor._doc.getElementsByTagName('a'); 
    116           for(var i = 0; i < anchors.length; i++) 
    117           { 
    118             var anchor = anchors[i]; 
    119             if(anchor.href == tmp) 
    120             { 
    121               // Found one. 
    122               if (!a) a = anchor; 
    123               anchor.href =  param.f_href; 
    124               if (param.f_target) anchor.target =  param.f_target; 
    125               if (param.f_title)  anchor.title =  param.f_title; 
    126             } 
    127           } 
    128         } catch(ex) {} 
    129       } 
    130       else 
    131       { 
    132         var href = param.f_href.trim(); 
    133         editor.selectNodeContents(a); 
    134         if ( href === '' ) 
    135         { 
    136           editor._doc.execCommand("unlink", false, null); 
    137           editor.updateToolbar(); 
    138           return false; 
    139         } 
    140         else 
    141         { 
    142           a.href = href; 
    143         } 
    144       } 
    145       if ( ! ( a && a.tagName.toLowerCase() == 'a' ) ) 
    146       { 
    147         return false; 
    148       } 
    149       a.target = param.f_target.trim(); 
    150       a.title = param.f_title.trim(); 
    151       editor.selectNodeContents(a); 
    152       editor.updateToolbar(); 
    153     }, 
    154     outparam); 
     55CreateLink.loadAssets = function() 
     56{ 
     57        var self = CreateLink; 
     58        if (self.loading) return; 
     59        self.loading = true; 
     60        Xinha._getback(_editor_url + 'modules/CreateLink/dialog.html', function(getback) { self.html = getback; self.dialogReady = true; }); 
     61        Xinha._getback(_editor_url + 'modules/CreateLink/pluginMethods.js', function(getback) { eval(getback); self.methodsReady = true; }); 
     62} 
     63 
     64CreateLink.prototype.onUpdateToolbar = function() 
     65{  
     66        if (!(CreateLink.dialogReady && CreateLink.methodsReady)) 
     67        { 
     68                this.editor._toolbarObjects.createlink.state("enabled", false); 
     69        } 
     70        else this.onUpdateToolbar = null; 
    15571}; 
     72 
     73CreateLink.prototype.prepareDialog = function() 
     74{ 
     75        var self = this; 
     76        var editor = this.editor; 
     77 
     78        var dialog = this.dialog = new Xinha.Dialog(editor, CreateLink.html, 'Xinha',{width:400}) 
     79        // Connect the OK and Cancel buttons 
     80        dialog.getElementById('ok').onclick = function() {self.apply();} 
     81 
     82        dialog.getElementById('cancel').onclick = function() { self.dialog.hide()}; 
     83 
     84        if (!editor.config.makeLinkShowsTarget) 
     85        { 
     86                dialog.getElementById("f_target_label").style.visibility = "hidden"; 
     87                dialog.getElementById("f_target").style.visibility = "hidden"; 
     88                dialog.getElementById("f_other_target").style.visibility = "hidden"; 
     89        } 
     90 
     91        dialog.getElementById('f_target').onchange= function()  
     92        { 
     93                var f = dialog.getElementById("f_other_target"); 
     94                if (this.value == "_other") { 
     95                        f.style.visibility = "visible"; 
     96                        f.select(); 
     97                        f.focus(); 
     98                } else f.style.visibility = "hidden"; 
     99        }; 
     100 
     101         
     102        this.dialogReady = true; 
     103}; 
Note: See TracChangeset for help on using the changeset viewer.