Browse code

3.5.6 efiction version

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