1 tinyMCEPopup.requireLangPack();
\r
3 var SearchReplaceDialog = {
\r
4 init : function(ed) {
\r
5 var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
\r
9 f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
\r
11 // Focus input field
\r
12 f[m + '_panel_searchstring'].focus();
\r
14 mcTabs.onChange.add(function(tab_id, panel_id) {
\r
15 t.switchMode(tab_id.substring(0, tab_id.indexOf('_')));
\r
20 switchMode : function(m) {
\r
21 var f, lm = this.lastMode;
\r
24 f = document.forms[0];
\r
27 f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;
\r
28 f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;
\r
29 f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;
\r
30 f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;
\r
33 mcTabs.displayTab(m + '_tab', m + '_panel');
\r
34 document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";
\r
35 document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";
\r
40 searchNext : function(a) {
\r
41 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;
\r
43 if (tinymce.isIE11 && !window.find) {
\r
44 ed.windowManager.alert("This feature is not available in IE 11+. Upgrade TinyMCE to 4.x to get this functionallity back.");
\r
49 f = document.forms[0];
\r
50 s = f[m + '_panel_searchstring'].value;
\r
51 b = f[m + '_panel_backwardsu'].checked;
\r
52 ca = f[m + '_panel_casesensitivebox'].checked;
\r
53 rs = f['replace_panel_replacestring'].value;
\r
56 r = ed.getDoc().selection.createRange();
\r
63 // Correct Firefox graphics glitches
\r
64 // TODO: Verify if this is actually needed any more, maybe it was for very old FF versions?
\r
65 r = se.getRng().cloneRange();
\r
66 ed.getDoc().execCommand('SelectAll', false, null);
\r
70 function replace() {
\r
71 ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE
\r
80 // Move caret to beginning of text
\r
81 ed.execCommand('SelectAll');
\r
82 ed.selection.collapse(true);
\r
86 r = ed.getDoc().selection.createRange();
\r
88 while (r.findText(s, b ? -1 : 1, fl)) {
\r
95 r.moveEnd("character", -(rs.length)); // Otherwise will loop forever
\r
97 // to avoid looping for ever in MSIE 9/10 when just
\r
98 // changing the case
\r
99 r.moveStart("character", rs.length);
\r
103 tinyMCEPopup.storeSelection();
\r
105 while (w.find(s, ca, b, false, false, false, false)) {
\r
112 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));
\r
114 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
\r
119 if (!ed.selection.isCollapsed())
\r
132 if (tinymce.isIE) {
\r
134 r = ed.getDoc().selection.createRange();
\r
136 if (r.findText(s, b ? -1 : 1, fl)) {
\r
137 r.scrollIntoView();
\r
140 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
\r
142 tinyMCEPopup.storeSelection();
\r
144 if (!w.find(s, ca, b, false, false, false, false))
\r
145 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
\r
152 tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);
\r