1 tinyMCEPopup.requireLangPack();
3 var SearchReplaceDialog = {
5 var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
9 f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
12 f[m + '_panel_searchstring'].focus();
14 mcTabs.onChange.add(function(tab_id, panel_id) {
15 t.switchMode(tab_id.substring(0, tab_id.indexOf('_')));
19 switchMode : function(m) {
20 var f, lm = this.lastMode;
23 f = document.forms[0];
26 f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;
27 f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;
28 f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;
29 f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;
32 mcTabs.displayTab(m + '_tab', m + '_panel');
33 document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";
34 document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";
39 searchNext : function(a) {
40 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;
43 f = document.forms[0];
44 s = f[m + '_panel_searchstring'].value;
45 b = f[m + '_panel_backwardsu'].checked;
46 ca = f[m + '_panel_casesensitivebox'].checked;
47 rs = f['replace_panel_replacestring'].value;
50 r = ed.getDoc().selection.createRange();
57 // Correct Firefox graphics glitches
58 // TODO: Verify if this is actually needed any more, maybe it was for very old FF versions?
59 r = se.getRng().cloneRange();
60 ed.getDoc().execCommand('SelectAll', false, null);
65 ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE
74 // Move caret to beginning of text
75 ed.execCommand('SelectAll');
76 ed.selection.collapse(true);
80 r = ed.getDoc().selection.createRange();
82 while (r.findText(s, b ? -1 : 1, fl)) {
89 r.moveEnd("character", -(rs.length)); // Otherwise will loop forever
93 tinyMCEPopup.storeSelection();
95 while (w.find(s, ca, b, false, false, false, false)) {
102 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));
104 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
109 if (!ed.selection.isCollapsed())
124 r = ed.getDoc().selection.createRange();
126 if (r.findText(s, b ? -1 : 1, fl)) {
130 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
132 tinyMCEPopup.storeSelection();
134 if (!w.find(s, ca, b, false, false, false, false))
135 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
142 tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);