PluginProbe
Contact Forms by Cimatti / 1.4.1
Contact Forms by Cimatti v1.4.1
2.3.6 2.3.5 2.3.0 2.2.32 2.2.4 2.2.0 2.1.2 2.1.1 trunk 1.0 1.1 1.2 1.2.1 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 All 62 releases
contact-forms / PFBC / Resources / tiny_mce / plugins / searchreplace / js / searchreplace.js

searchreplace.js in Contact Forms by Cimatti 1.4.1, at PFBC/Resources/tiny_mce/plugins/searchreplace/js/searchreplace.js

143 lines 3.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 tinyMCEPopup.requireLangPack();
2
3 var SearchReplaceDialog = {
4 init : function(ed) {
5 var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
6
7 t.switchMode(m);
8
9 f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
10
11 // Focus input field
12 f[m + '_panel_searchstring'].focus();
13
14 mcTabs.onChange.add(function(tab_id, panel_id) {
15 t.switchMode(tab_id.substring(0, tab_id.indexOf('_')));
16 });
17 },
18
19 switchMode : function(m) {
20 var f, lm = this.lastMode;
21
22 if (lm != m) {
23 f = document.forms[0];
24
25 if (lm) {
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;
30 }
31
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";
35 this.lastMode = m;
36 }
37 },
38
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;
41
42 // Get input
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;
48
49 if (tinymce.isIE) {
50 r = ed.getDoc().selection.createRange();
51 }
52
53 if (s == '')
54 return;
55
56 function fix() {
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);
61 se.setRng(r);
62 };
63
64 function replace() {
65 ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE
66 };
67
68 // IE flags
69 if (ca)
70 fl = fl | 4;
71
72 switch (a) {
73 case 'all':
74 // Move caret to beginning of text
75 ed.execCommand('SelectAll');
76 ed.selection.collapse(true);
77
78 if (tinymce.isIE) {
79 ed.focus();
80 r = ed.getDoc().selection.createRange();
81
82 while (r.findText(s, b ? -1 : 1, fl)) {
83 r.scrollIntoView();
84 r.select();
85 replace();
86 fo = 1;
87
88 if (b) {
89 r.moveEnd("character", -(rs.length)); // Otherwise will loop forever
90 }
91 }
92
93 tinyMCEPopup.storeSelection();
94 } else {
95 while (w.find(s, ca, b, false, false, false, false)) {
96 replace();
97 fo = 1;
98 }
99 }
100
101 if (fo)
102 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));
103 else
104 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
105
106 return;
107
108 case 'current':
109 if (!ed.selection.isCollapsed())
110 replace();
111
112 break;
113 }
114
115 se.collapse(b);
116 r = se.getRng();
117
118 // Whats the point
119 if (!s)
120 return;
121
122 if (tinymce.isIE) {
123 ed.focus();
124 r = ed.getDoc().selection.createRange();
125
126 if (r.findText(s, b ? -1 : 1, fl)) {
127 r.scrollIntoView();
128 r.select();
129 } else
130 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
131
132 tinyMCEPopup.storeSelection();
133 } else {
134 if (!w.find(s, ca, b, false, false, false, false))
135 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
136 else
137 fix();
138 }
139 }
140 };
141
142 tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);
143