]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/javascript/tiny_mce/plugins/searchreplace/js/searchreplace.js
Release 6.2.0beta4
[Github/sugarcrm.git] / include / javascript / tiny_mce / plugins / searchreplace / js / searchreplace.js
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                 if (s == '')
46                         return;
47
48                 function fix() {
49                         // Correct Firefox graphics glitches
50                         r = se.getRng().cloneRange();
51                         ed.getDoc().execCommand('SelectAll', false, null);
52                         se.setRng(r);
53                 };
54
55                 function replace() {
56                         if (tinymce.isIE)
57                                 ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE
58                         else
59                                 ed.getDoc().execCommand('InsertHTML', false, rs);
60                 };
61
62                 // IE flags
63                 if (ca)
64                         fl = fl | 4;
65
66                 switch (a) {
67                         case 'all':
68                                 // Move caret to beginning of text
69                                 ed.execCommand('SelectAll');
70                                 ed.selection.collapse(true);
71
72                                 if (tinymce.isIE) {
73                                         while (r.findText(s, b ? -1 : 1, fl)) {
74                                                 r.scrollIntoView();
75                                                 r.select();
76                                                 replace();
77                                                 fo = 1;
78                                         }
79
80                                         tinyMCEPopup.storeSelection();
81                                 } else {
82                                         while (w.find(s, ca, b, false, false, false, false)) {
83                                                 replace();
84                                                 fo = 1;
85                                         }
86                                 }
87
88                                 if (fo)
89                                         tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));
90                                 else
91                                         tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
92
93                                 return;
94
95                         case 'current':
96                                 if (!ed.selection.isCollapsed())
97                                         replace();
98
99                                 break;
100                 }
101
102                 se.collapse(b);
103                 r = se.getRng();
104
105                 // Whats the point
106                 if (!s)
107                         return;
108
109                 if (tinymce.isIE) {
110                         if (r.findText(s, b ? -1 : 1, fl)) {
111                                 r.scrollIntoView();
112                                 r.select();
113                         } else
114                                 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
115
116                         tinyMCEPopup.storeSelection();
117                 } else {
118                         if (!w.find(s, ca, b, false, false, false, false))
119                                 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
120                         else
121                                 fix();
122                 }
123         }
124 };
125
126 tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);