Вход Регистрация
Файл: mailist/wys/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js
Строк: 247
<?php
/**
 * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
 *
 * @author Moxiecode
 * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
 */

tinyMCE.importPluginLanguagePack('searchreplace');

var 
TinyMCE_SearchReplacePlugin = {
    
getInfo : function() {
        return {
            
longname 'Search/Replace',
            
author 'Moxiecode Systems AB',
            
authorurl 'http://tinymce.moxiecode.com',
            
infourl 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',
            
version tinyMCE.majorVersion "." tinyMCE.minorVersion
        
};
    },

    
initInstance : function (inst) {
        
inst.addShortcut('ctrl''f''lang_searchreplace_search_desc''mceSearch'true);
        
// No CTRL+R for "replace" because browsers will reload page instead of executing plugin
    
},

    
getControlHTML : function (cn) {
        switch (
cn) {
            case 
"search" :
                return 
tinyMCE.getButtonHTML(cn'lang_searchreplace_search_desc''{$pluginurl}/images/search.gif','mceSearch'true);

            case 
"replace" :
                return 
tinyMCE.getButtonHTML(cn'lang_searchreplace_replace_desc''{$pluginurl}/images/replace.gif''mceSearchReplace'true);
        }

        return 
"";
    },

    
execCommand : function (editor_idelementcommanduser_interfacevalue) {
        var 
inst tinyMCE.getInstanceById(editor_id), selectedText inst.selection.getSelectedText(), rng;

        function 
defValue(keydefault_value) {
            
value[key] = typeof(value[key]) == "undefined" default_value value[key];
        }

        function 
replaceSel(search_strstrback) {
            if (!
inst.selection.isCollapsed()) {
                if (
tinyMCE.isRealIE)
                    
inst.selection.getRng().duplicate().pasteHTML(str); // Needs to be duplicated due to selection bug in IE
                
else
                    
inst.execCommand('mceInsertContent'falsestr);
            }
        }

        if (!
value)
            
value = [];

        
defValue("editor_id"editor_id);
        
defValue("searchstring"selectedText);
        
defValue("replacestring"null);
        
defValue("replacemode""none");
        
defValue("casesensitive"false);
        
defValue("backwards"false);
        
defValue("wrap"false);
        
defValue("wholeword"false);
        
defValue("inline""yes");
        
defValue("resizable""no");

        switch (
command) {
            case 
"mceSearch" :
                if (
user_interface) {
                    var 
template = new Array();

                    
template['file'] = '../../plugins/searchreplace/searchreplace.htm';
                    
template['width'] = 380;
                    
template['height'] = 155 + (tinyMCE.isNS7 20 0) + (tinyMCE.isMSIE 15 0);
                    
template['width'] += tinyMCE.getLang('lang_searchreplace_delta_width'0);
                    
template['height'] += tinyMCE.getLang('lang_searchreplace_delta_height'0);

                    
inst.selection.collapse(true);

                    
tinyMCE.openWindow(templatevalue);
                } else {
                    var 
win tinyMCE.getInstanceById(editor_id).contentWindow;
                    var 
doc tinyMCE.getInstanceById(editor_id).contentWindow.document;
                    var 
body tinyMCE.getInstanceById(editor_id).contentWindow.document.body;
                    var 
awin value.winfound;

                    if (
body.innerHTML == "") {
                        
awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
                        return 
true;
                    }

                    if (
value['replacemode'] == "current") {
                        
replaceSel(value['string'], value['replacestring'], value['backwards']);
                        
value['replacemode'] = "none";
                        
//tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value);
                        //return true;
                    
}

                    
inst.selection.collapse(value['backwards']);

                    if (
tinyMCE.isMSIE) {
                        var 
rng inst.selection.getRng();
                        var 
flags 0;
                        if (
value['wholeword'])
                            
flags flags 2;

                        if (
value['casesensitive'])
                            
flags flags 4;

                        if (!
rng.findText) {
                            
awin.alert('This operation is currently not supported by this browser.');
                            return 
true;
                        }

                        if (
value['replacemode'] == "all") {
                            
found false;

                            while (
rng.findText(value['string'], value['backwards'] ? -1flags)) {
                                
found true;
                                
rng.scrollIntoView();
                                
rng.select();
                                
replaceSel(value['string'], value['replacestring'], value['backwards']);
                            }

                            if (
found)
                                
awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
                            else
                                
awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));

                            return 
true;
                        }

                        if (
rng.findText(value['string'], value['backwards'] ? -1flags)) {
                            
rng.scrollIntoView();
                            
rng.select();
                        } else
                            
awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
                    } else {
                        if (
value['replacemode'] == "all") {
                            
found false;

                            while (
win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], falsefalse)) {
                                
found true;
                                
replaceSel(value['string'], value['replacestring'], value['backwards']);
                            }

                            if (
found)
                                
awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
                            else
                                
awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));

                            return 
true;
                        }

                        if (!
win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], falsefalse))
                            
awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
                    }
                }

                return 
true;

            case 
"mceSearchReplace" :
                
value['replacestring'] = "";
                
tinyMCE.execInstanceCommand(editor_id'mceSearch'user_interfacevaluefalse);
                return 
true;
        }

        return 
false;
    }
};

tinyMCE.addPlugin("searchreplace"TinyMCE_SearchReplacePlugin);
?>
Онлайн: 0
Реклама