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/PasteText
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/PasteText/lang/de.js

    r677 r1044  
    22// LANG: "de", ENCODING: UTF-8 
    33{ 
    4   "Paste as Plain Text": "unformatierten Text einfÃŒgen" 
     4  "Paste as Plain Text": "unformatierten Text einfÃŒgen", 
     5        "Insert text in new paragraph" : "Neue AbsÀtze eifÃŒgen" 
    56}; 
  • trunk/plugins/PasteText/paste-text.js

    r999 r1044  
    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        var self = PasteText; 
     46        if (self.loading) return; 
     47        self.loading = true; 
     48        Xinha._getback(Xinha.getPluginDir("PasteText") + '/popups/paste_text.html', function(getback) { self.html = getback;}); 
     49}; 
    4650 
     51PasteText.prototype._prepareDialog = function() 
     52{ 
     53        var self = this; 
    4754        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                         } 
     55 
     56        var self = this; 
     57 
     58/// Now we have everything we need, so we can build the dialog. 
     59        this.dialog = new Xinha.Dialog(editor, PasteText.html, 'PasteText',{width:350}) 
     60 
     61        // Connect the OK and Cancel buttons 
     62        this.dialog.getElementById('ok').onclick = function() {self.apply();} 
     63 
     64        this.dialog.getElementById('cancel').onclick = function() { self.dialog.hide()}; 
     65 
     66        // do some tweaking  
     67        if (editor.config.PasteText.showParagraphOption) 
     68        { 
     69                this.dialog.getElementById("paragraphOption").style.display = ""; 
     70        } 
     71        if (editor.config.PasteText.newParagraphDefault) 
     72        { 
     73                this.dialog.getElementById("insertParagraphs").checked = true; 
     74        } 
     75 
     76        // we can setup a custom function that cares for sizes etc. when the dialog is resized 
     77        this.dialog.onresize = function () 
     78        { 
     79                this.getElementById("inputArea").style.height =  
     80                parseInt(this.height,10) // the actual height of the dialog 
     81                - this.getElementById('h1').offsetHeight // the title bar 
     82                - this.getElementById('buttons').offsetHeight // the buttons 
     83                - parseInt(this.rootElem.style.paddingBottom,10) // we have a padding at the bottom, gotta take this into acount 
     84                + 'px'; // don't forget this ;) 
     85                 
     86                this.getElementById("inputArea").style.width =(this.width - 2) + 'px'; // and the width 
     87 
     88        } 
     89}; 
     90 
     91PasteText.prototype.show = function() 
     92{ 
     93        if (!this.dialog) this._prepareDialog(); 
     94 
     95        // here we can pass values to the dialog 
     96        // each property pair consists of the "name" of the input we want to populate, and the value to be set 
     97        var inputs = 
     98        { 
     99                inputArea : '' // we want the textarea always to be empty on showing 
     100        } 
     101        // now calling the show method of the Xinha.Dialog object to set the values and show the actual dialog 
     102        this.dialog.show(inputs); 
     103 
     104        // Init the sizes (only if we have set up the custom resize function) 
     105        this.dialog.onresize(); 
     106 
     107        this.dialog.getElementById("inputArea").focus(); 
     108}; 
     109 
     110// and finally ... take some action 
     111PasteText.prototype.apply = function() 
     112{ 
     113        // the hide method of the dialog object returns the values of the inputs AND hides the dialog 
     114        // could also use this.dialog.getValues() here and hide it at the end 
     115        var returnValues = this.dialog.hide(); 
     116         
     117        var html = returnValues.inputArea; 
     118        var insertParagraphs = returnValues.insertParagraphs; 
     119        html = html.replace(/</g, "&lt;"); 
     120        html = html.replace(/>/g, "&gt;"); 
     121        if ( returnValues.insertParagraphs) 
     122        { 
     123                html = html.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;"); 
     124                html = html.replace(/\n/g,"</p><p>"); 
     125                html="<p>" + html + "</p>"; 
     126                if (Xinha.is_ie) 
     127                { 
     128                        this.editor.insertHTML(html); 
    67129                } 
    68130                else 
    69131                { 
    70                         html = html.replace(/\n/g,"<br />"); 
    71                         editor.insertHTML(html); 
     132                        this.editor.execCommand("inserthtml",false,html); 
    72133                } 
    73134        } 
    74         Dialog( Xinha.getPluginDir("PasteText")+ "/popups/paste_text.html", action, outparam); 
     135        else 
     136        { 
     137                html = html.replace(/\n/g,"<br />"); 
     138                this.editor.insertHTML(html); 
     139        } 
    75140}; 
  • trunk/plugins/PasteText/popups/paste_text.html

    r858 r1044  
    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 <form> 
    40 <div> 
    41 <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> 
    42 <div id="buttons"> 
    43 <label for="insertParagraphs" style="float:left;display:none" id="paragraphOption"> 
    44 <input type="checkbox" id="insertParagraphs" /> Insert text in new paragraph  
     1<h1 id="[h1]"><l10n>Paste as Plain Text</l10n></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]" /> <l10n>Insert text in new paragraph</l10n>  
    456</label> 
    46     <button type="button" name="ok" onclick="return onOK();">OK</button> 
    47     <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)" /> 
    489</div> 
    49 </div> 
    50 </form> 
    51 </body> 
    52 </html> 
Note: See TracChangeset for help on using the changeset viewer.