Ignore:
Timestamp:
02/24/07 15:47:57 (13 years ago)
Author:
ray
Message:

updated branch

Location:
branches/ray/plugins/PasteText
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/ray/plugins/PasteText/paste-text.js

    r761 r762  
    88        var cfg = editor.config; 
    99        var self = this; 
    10          
     10 
    1111        cfg.registerButton({ 
    12                 id       : "pastetext", 
    13                 tooltip  : this._lc("Paste as Plain Text"), 
    14                 image    : editor.imgURL("ed_paste_text.gif", "PasteText"), 
    15                 textMode : false, 
    16                 action   : function(editor) { 
    17                              self.buttonPress(editor); 
    18                            } 
    19             }); 
     12                id       : "pastetext", 
     13                tooltip  : this._lc("Paste as Plain Text"), 
     14                image    : editor.imgURL("ed_paste_text.gif", "PasteText"), 
     15                textMode : false, 
     16                action   : function() { self.show(); } 
     17        }); 
    2018 
    2119        cfg.addToolbarElement("pastetext", ["paste", "killword"], 1); 
     
    3432 
    3533PasteText.prototype._lc = function(string) { 
    36     return Xinha._lc(string, 'PasteText'); 
     34        return Xinha._lc(string, 'PasteText'); 
    3735}; 
    3836 
     
    4341} 
    4442 
    45 PasteText.prototype.buttonPress = function(editor) { 
     43PasteText.prototype.onGenerateOnce = function() 
     44{ 
     45        this._prepareDialog(); 
     46}; 
    4647 
     48PasteText.prototype._prepareDialog = function() 
     49{ 
     50        var self = this; 
    4751        var editor = this.editor; 
    48         var outparam = editor.config.PasteText;  
    49         var action = function( ret ) { 
    50                 var html = ret.text; 
    51                 var insertParagraphs = ret.insertParagraphs; 
    52                 html = html.replace(/</g, "&lt;"); 
    53                 html = html.replace(/>/g, "&gt;"); 
    54                 if ( ret.insertParagraphs) 
    55                 { 
    56                         html = html.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;"); 
    57                         html = html.replace(/\n/g,"</p><p>"); 
    58                         html="<p>" + html + "</p>"; 
    59                         if (Xinha.is_ie) 
    60                         { 
    61                                 editor.insertHTML(html); 
    62                         } 
    63                         else 
    64                         { 
    65                                 editor.execCommand("inserthtml",false,html); 
    66                         } 
     52 
     53        if(!this.html) // retrieve the raw dialog contents 
     54        { 
     55                Xinha._getback(_editor_url + 'plugins/PasteText/popups/paste_text.html', function(getback) { self.html = getback; self._prepareDialog(); }); 
     56                return; 
     57        } 
     58 
     59        // Now we have everything we need, so we can build the dialog. 
     60        this.dialog = new Xinha.Dialog(editor, this.html, 'PasteText',{width:350}) 
     61 
     62        // Connect the OK and Cancel buttons 
     63        this.dialog.getElementById('ok').onclick = function() {self.apply();} 
     64 
     65        this.dialog.getElementById('cancel').onclick = function() { self.dialog.hide()}; 
     66 
     67        // do some tweaking  
     68        if (editor.config.PasteText.showParagraphOption) 
     69        { 
     70                this.dialog.getElementById("paragraphOption").style.display = ""; 
     71        } 
     72        if (editor.config.PasteText.newParagraphDefault) 
     73        { 
     74                this.dialog.getElementById("insertParagraphs").checked = true; 
     75        } 
     76 
     77        // we can setup a custom function that cares for sizes etc. when the dialog is resized 
     78        this.dialog.onresize = function () 
     79        { 
     80                this.getElementById("inputArea").style.height =  
     81                parseInt(this.height,10) // the actual height of the dialog 
     82                - this.getElementById('h1').offsetHeight // the title bar 
     83                - this.getElementById('buttons').offsetHeight // the buttons 
     84                - parseInt(this.rootElem.style.paddingBottom,10) // we have a padding at the bottom, gotta take this into acount 
     85                + 'px'; // don't forget this ;) 
     86                 
     87                this.getElementById("inputArea").style.width =(this.width - 2) + 'px'; // and the width 
     88 
     89        } 
     90        this.ready = true; 
     91}; 
     92 
     93PasteText.prototype.show = function() 
     94{ 
     95        if(!this.ready) // if the user is too fast clicking the, we have to make them wait 
     96        { 
     97                var self = this; 
     98                window.setTimeout(function() {self.show();},100); 
     99                return; 
     100        } 
     101        // here we can pass values to the dialog 
     102        // each property pair consists of the "name" of the input we want to populate, and the value to be set 
     103        var inputs = 
     104        { 
     105                inputArea : '' // we want the textarea always to be empty on showing 
     106        } 
     107        // now calling the show method of the Xinha.Dialog object to set the values and show the actual dialog 
     108        this.dialog.show(inputs); 
     109 
     110        // Init the sizes (only if we have set up the custom resize function) 
     111        this.dialog.onresize(); 
     112 
     113        this.dialog.getElementById("inputArea").focus(); 
     114}; 
     115 
     116// and finally ... take some action 
     117PasteText.prototype.apply = function() 
     118{ 
     119        // the hide method of the dialog object returns the values of the inputs AND hides the dialog 
     120        // could also use this.dialog.getValues() here and hide it at the end 
     121        var returnValues = this.dialog.hide(); 
     122         
     123        var html = returnValues.inputArea; 
     124        var insertParagraphs = returnValues.insertParagraphs; 
     125        html = html.replace(/</g, "&lt;"); 
     126        html = html.replace(/>/g, "&gt;"); 
     127        if ( returnValues.insertParagraphs) 
     128        { 
     129                html = html.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;"); 
     130                html = html.replace(/\n/g,"</p><p>"); 
     131                html="<p>" + html + "</p>"; 
     132                if (Xinha.is_ie) 
     133                { 
     134                        this.editor.insertHTML(html); 
    67135                } 
    68136                else 
    69137                { 
    70                         html = html.replace(/\n/g,"<br />"); 
    71                         editor.insertHTML(html); 
     138                        this.editor.execCommand("inserthtml",false,html); 
    72139                } 
    73140        } 
    74         Dialog( _editor_url+ "plugins/PasteText/popups/paste_text.html", action, outparam); 
     141        else 
     142        { 
     143                html = html.replace(/\n/g,"<br />"); 
     144                this.editor.insertHTML(html); 
     145        } 
    75146}; 
  • branches/ray/plugins/PasteText/popups/paste_text.html

    r761 r762  
    1 <!DOCTYPE html 
    2      PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    3     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    5 <head> 
    6   <title>Paste Text</title> 
    7   <link rel="stylesheet" type="text/css" href="../../../popups/popup.css" /> 
    8   <script type="text/javascript" src="../../../popups/popup.js"></script> 
    9 <script type="text/javascript"> 
    10  
    11 function init() { 
    12  
    13   __dlg_translate("PasteText"); 
    14   __dlg_init(null,{width:600,height:480}); 
    15  
    16   var param = window.dialogArguments; 
    17   document.getElementById("paragraphOption").style.display = (param.showParagraphOption) ? '' : 'none'; 
    18    document.getElementById("insertParagraphs").checked = param.newParagraphDefault; 
    19   document.getElementById("inputArea").focus(); 
    20 } 
    21  
    22 function onCancel() { 
    23   __dlg_close( null ); 
    24   return false; 
    25 } 
    26  
    27 function onOK() { 
    28   var ret = {}; 
    29   ret.text = document.getElementById("inputArea").value; 
    30   ret.insertParagraphs = document.getElementById("insertParagraphs").checked; 
    31   __dlg_close( ret ); 
    32 } 
    33 window.onload = init; 
    34 </script> 
    35 </head> 
    36  
    37 <body class="dialog"> 
    38 <div class="title">Paste as Plain Text</div> 
    39 <textarea name="inputArea" id="inputArea" cols=22 rows=5 style="width: 100%; height: 315px; margin-top: 8px; margin-bottom: 4px; font-family: monospace; font-size: 11px;"></textarea> 
    40 <div id="buttons"> 
    41 <label for="insertParagraphs" style="float:left;display:none" id="paragraphOption"> 
    42 <input type="checkbox" id="insertParagraphs" /> Insert text in new paragraph  
     1<h1 id="[h1]">Paste as Plain Text</h1> 
     2<textarea name="[inputArea]" id="[inputArea]" style="font-family:monospace;height:300px;border:none;"></textarea> 
     3<div class="buttons" id="[buttons]"> 
     4<label style="float:left;display:none" id="[paragraphOption]"> 
     5<input type="checkbox" id="[insertParagraphs]" name="[insertParagraphs]" /> Insert text in new paragraph  
    436</label> 
    44     <button type="button" name="ok" onclick="return onOK();">OK</button> 
    45     <button type="button" name="cancel" onclick="return onCancel();">Cancel</button> 
     7  <input type="button" id="[ok]"     value="_(OK)"     /> 
     8  <input type="button" id="[cancel]" value="_(Cancel)" /> 
    469</div> 
    47 </body> 
    48 </html> 
Note: See TracChangeset for help on using the changeset viewer.