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