home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Plugins / tinymce-advanced / mce / searchreplace / editor_plugin.js next >
Text File  |  2008-02-19  |  6KB  |  174 lines

  1. /**
  2.  * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
  3.  *
  4.  * @author Moxiecode
  5.  * @copyright Copyright ⌐ 2004-2007, Moxiecode Systems AB, All rights reserved.
  6.  */
  7.  
  8. tinyMCE.importPluginLanguagePack('searchreplace');
  9.  
  10. var TinyMCE_SearchReplacePlugin = {
  11.     getInfo : function() {
  12.         return {
  13.             longname : 'Search/Replace',
  14.             author : 'Moxiecode Systems AB',
  15.             authorurl : 'http://tinymce.moxiecode.com',
  16.             infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',
  17.             version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
  18.         };
  19.     },
  20.  
  21.     initInstance : function (inst) {
  22.         inst.addShortcut('ctrl', 'f', 'lang_searchreplace_search_desc', 'mceSearch', true);
  23.         // No CTRL+R for "replace" because browsers will reload page instead of executing plugin
  24.     },
  25.  
  26.     getControlHTML : function (cn) {
  27.         switch (cn) {
  28.             case "search" :
  29.                 return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_search_desc', '{$pluginurl}/images/search.gif','mceSearch', true);
  30.  
  31.             case "replace" :
  32.                 return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_replace_desc', '{$pluginurl}/images/replace.gif', 'mceSearchReplace', true);
  33.         }
  34.  
  35.         return "";
  36.     },
  37.  
  38.     execCommand : function (editor_id, element, command, user_interface, value) {
  39.         var inst = tinyMCE.getInstanceById(editor_id), selectedText = inst.selection.getSelectedText(), rng;
  40.  
  41.         function defValue(key, default_value) {
  42.             value[key] = typeof(value[key]) == "undefined" ? default_value : value[key];
  43.         }
  44.  
  45.         function replaceSel(search_str, str, back) {
  46.             if (!inst.selection.isCollapsed()) {
  47.                 if (tinyMCE.isRealIE)
  48.                     inst.selection.getRng().duplicate().pasteHTML(str); // Needs to be duplicated due to selection bug in IE
  49.                 else
  50.                     inst.execCommand('mceInsertContent', false, str);
  51.             }
  52.         }
  53.  
  54.         if (!value)
  55.             value = [];
  56.  
  57.         defValue("editor_id", editor_id);
  58.         defValue("searchstring", selectedText);
  59.         defValue("replacestring", null);
  60.         defValue("replacemode", "none");
  61.         defValue("casesensitive", false);
  62.         defValue("backwards", false);
  63.         defValue("wrap", false);
  64.         defValue("wholeword", false);
  65.         defValue("inline", "yes");
  66.         defValue("resizable", "no");
  67.  
  68.         switch (command) {
  69.             case "mceSearch" :
  70.                 if (user_interface) {
  71.                     var template = new Array();
  72.  
  73.                     template['file'] = tinyMCE.baseURL + '/../../../wp-content/plugins/tinymce-advanced/mce/searchreplace/searchreplace.htm';
  74.                     template['width'] = 380;
  75.                     template['height'] = 155 + (tinyMCE.isNS7 ? 20 : 0) + (tinyMCE.isMSIE ? 15 : 0);
  76.                     template['width'] += tinyMCE.getLang('lang_searchreplace_delta_width', 0);
  77.                     template['height'] += tinyMCE.getLang('lang_searchreplace_delta_height', 0);
  78.  
  79.                     inst.selection.collapse(true);
  80.  
  81.                     tinyMCE.openWindow(template, value);
  82.                 } else {
  83.                     var win = tinyMCE.getInstanceById(editor_id).contentWindow;
  84.                     var doc = tinyMCE.getInstanceById(editor_id).contentWindow.document;
  85.                     var body = tinyMCE.getInstanceById(editor_id).contentWindow.document.body;
  86.                     var awin = value.win, found;
  87.  
  88.                     if (body.innerHTML == "") {
  89.                         awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
  90.                         return true;
  91.                     }
  92.  
  93.                     if (value['replacemode'] == "current") {
  94.                         replaceSel(value['string'], value['replacestring'], value['backwards']);
  95.                         value['replacemode'] = "none";
  96.                         //tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value);
  97.                         //return true;
  98.                     }
  99.  
  100.                     inst.selection.collapse(value['backwards']);
  101.  
  102.                     if (tinyMCE.isMSIE) {
  103.                         var rng = inst.selection.getRng();
  104.                         var flags = 0;
  105.                         if (value['wholeword'])
  106.                             flags = flags | 2;
  107.  
  108.                         if (value['casesensitive'])
  109.                             flags = flags | 4;
  110.  
  111.                         if (!rng.findText) {
  112.                             awin.alert('This operation is currently not supported by this browser.');
  113.                             return true;
  114.                         }
  115.  
  116.                         if (value['replacemode'] == "all") {
  117.                             found = false;
  118.  
  119.                             while (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
  120.                                 found = true;
  121.                                 rng.scrollIntoView();
  122.                                 rng.select();
  123.                                 replaceSel(value['string'], value['replacestring'], value['backwards']);
  124.                             }
  125.  
  126.                             if (found)
  127.                                 awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
  128.                             else
  129.                                 awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
  130.  
  131.                             return true;
  132.                         }
  133.  
  134.                         if (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
  135.                             rng.scrollIntoView();
  136.                             rng.select();
  137.                         } else
  138.                             awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
  139.                     } else {
  140.                         if (value['replacemode'] == "all") {
  141.                             found = false;
  142.  
  143.                             while (win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false)) {
  144.                                 found = true;
  145.                                 replaceSel(value['string'], value['replacestring'], value['backwards']);
  146.                             }
  147.  
  148.                             if (found)
  149.                                 awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
  150.                             else
  151.                                 awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
  152.  
  153.                             return true;
  154.                         }
  155.  
  156.                         if (!win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false))
  157.                             awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
  158.                     }
  159.                 }
  160.  
  161.                 return true;
  162.  
  163.             case "mceSearchReplace" :
  164.                 value['replacestring'] = "";
  165.                 tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false);
  166.                 return true;
  167.         }
  168.  
  169.         return false;
  170.     }
  171. };
  172.  
  173. tinyMCE.addPlugin("searchreplace", TinyMCE_SearchReplacePlugin);
  174.