|
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); |