]> git.mxchange.org Git - friendica.git/blob - library/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js
updated tinymce to 3.5.11
[friendica.git] / library / tinymce / jscripts / tiny_mce / plugins / searchreplace / js / searchreplace.js
1 tinyMCEPopup.requireLangPack();\r
2 \r
3 var SearchReplaceDialog = {\r
4         init : function(ed) {\r
5                 var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");\r
6 \r
7                 t.switchMode(m);\r
8 \r
9                 f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");\r
10 \r
11                 // Focus input field\r
12                 f[m + '_panel_searchstring'].focus();\r
13                 \r
14                 mcTabs.onChange.add(function(tab_id, panel_id) {\r
15                         t.switchMode(tab_id.substring(0, tab_id.indexOf('_')));\r
16                 });\r
17 \r
18         },\r
19 \r
20         switchMode : function(m) {\r
21                 var f, lm = this.lastMode;\r
22 \r
23                 if (lm != m) {\r
24                         f = document.forms[0];\r
25 \r
26                         if (lm) {\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
31                         }\r
32 \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
36                         this.lastMode = m;\r
37                 }\r
38         },\r
39 \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
42 \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
45                         return;\r
46                 }\r
47 \r
48                 // Get input\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
54 \r
55                 if (tinymce.isIE) {\r
56                         r = ed.getDoc().selection.createRange();\r
57                 }\r
58 \r
59                 if (s == '')\r
60                         return;\r
61 \r
62                 function fix() {\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
67                         se.setRng(r);\r
68                 };\r
69 \r
70                 function replace() {\r
71                         ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE\r
72                 };\r
73 \r
74                 // IE flags\r
75                 if (ca)\r
76                         fl = fl | 4;\r
77 \r
78                 switch (a) {\r
79                         case 'all':\r
80                                 // Move caret to beginning of text\r
81                                 ed.execCommand('SelectAll');\r
82                                 ed.selection.collapse(true);\r
83 \r
84                                 if (tinymce.isIE) {\r
85                                         ed.focus();\r
86                                         r = ed.getDoc().selection.createRange();\r
87 \r
88                                         while (r.findText(s, b ? -1 : 1, fl)) {\r
89                                                 r.scrollIntoView();\r
90                                                 r.select();\r
91                                                 replace();\r
92                                                 fo = 1;\r
93 \r
94                                                 if (b) {\r
95                                                         r.moveEnd("character", -(rs.length)); // Otherwise will loop forever\r
96                                                 } else {\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
100                                                 }\r
101                                         }\r
102 \r
103                                         tinyMCEPopup.storeSelection();\r
104                                 } else {\r
105                                         while (w.find(s, ca, b, false, false, false, false)) {\r
106                                                 replace();\r
107                                                 fo = 1;\r
108                                         }\r
109                                 }\r
110 \r
111                                 if (fo)\r
112                                         tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));\r
113                                 else\r
114                                         tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
115 \r
116                                 return;\r
117 \r
118                         case 'current':\r
119                                 if (!ed.selection.isCollapsed())\r
120                                         replace();\r
121 \r
122                                 break;\r
123                 }\r
124 \r
125                 se.collapse(b);\r
126                 r = se.getRng();\r
127 \r
128                 // Whats the point\r
129                 if (!s)\r
130                         return;\r
131 \r
132                 if (tinymce.isIE) {\r
133                         ed.focus();\r
134                         r = ed.getDoc().selection.createRange();\r
135 \r
136                         if (r.findText(s, b ? -1 : 1, fl)) {\r
137                                 r.scrollIntoView();\r
138                                 r.select();\r
139                         } else\r
140                                 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
141 \r
142                         tinyMCEPopup.storeSelection();\r
143                 } else {\r
144                         if (!w.find(s, ca, b, false, false, false, false))\r
145                                 tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));\r
146                         else\r
147                                 fix();\r
148                 }\r
149         }\r
150 };\r
151 \r
152 tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);\r