till
2008-10-22 d1a8d0f4c21136c9adc7efa02e3a37772bea222f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
tinyMCEPopup.requireLangPack();
 
var SearchReplaceDialog = {
    init : function(ed) {
        var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
 
        this.switchMode(m);
 
        f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
 
        // Focus input field
        f[m + '_panel_searchstring'].focus();
    },
 
    switchMode : function(m) {
        var f, lm = this.lastMode;
 
        if (lm != m) {
            f = document.forms[0];
 
            if (lm) {
                f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;
                f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;
                f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;
                f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;
            }
 
            mcTabs.displayTab(m + '_tab',  m + '_panel');
            document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";
            document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";
            this.lastMode = m;
        }
    },
 
    searchNext : function(a) {
        var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;
 
        // Get input
        f = document.forms[0];
        s = f[m + '_panel_searchstring'].value;
        b = f[m + '_panel_backwardsu'].checked;
        ca = f[m + '_panel_casesensitivebox'].checked;
        rs = f['replace_panel_replacestring'].value;
 
        function fix() {
            // Correct Firefox graphics glitches
            r = se.getRng().cloneRange();
            ed.getDoc().execCommand('SelectAll', false, null);
            se.setRng(r);
        };
 
        function replace() {
            if (tinymce.isIE)
                ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE
            else
                ed.getDoc().execCommand('InsertHTML', false, rs);
        };
 
        // IE flags
        if (ca)
            fl = fl | 4;
 
        switch (a) {
            case 'all':
                if (tinymce.isIE) {
                    while (r.findText(s, b ? -1 : 1, fl)) {
                        r.scrollIntoView();
                        r.select();
                        replace();
                        fo = 1;
                    }
 
                    tinyMCEPopup.storeSelection();
                } else {
                    while (w.find(s, ca, b, false, false, false, false)) {
                        replace();
                        fo = 1;
                    }
                }
 
                if (fo)
                    wm.alert(ed.getLang('searchreplace_dlg.allreplaced'));
                else
                    wm.alert(ed.getLang('searchreplace_dlg.notfound'));
 
                return;
 
            case 'current':
                replace();
                break;
        }
 
        se.collapse(b);
        r = se.getRng();
 
        // Whats the point
        if (!s)
            return;
 
        if (tinymce.isIE) {
            if (r.findText(s, b ? -1 : 1, fl)) {
                r.scrollIntoView();
                r.select();
            } else
                wm.alert(ed.getLang('searchreplace_dlg.notfound'));
 
            tinyMCEPopup.storeSelection();
        } else {
            if (!w.find(s, ca, b, false, false, false, false))
                wm.alert(ed.getLang('searchreplace_dlg.notfound'));
            else
                fix();
        }
    }
};
 
tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);