New file |
| | |
| | | tinyMCEPopup.requireLangPack();
|
| | |
|
| | | var SearchReplaceDialog = {
|
| | | init : function(ed) {
|
| | | var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
|
| | |
|
| | | t.switchMode(m);
|
| | |
|
| | | f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
|
| | |
|
| | | // Focus input field
|
| | | f[m + '_panel_searchstring'].focus();
|
| | | |
| | | mcTabs.onChange.add(function(tab_id, panel_id) {
|
| | | t.switchMode(tab_id.substring(0, tab_id.indexOf('_')));
|
| | | });
|
| | | },
|
| | |
|
| | | switchMode : function(m) {
|
| | | var f, lm = this.lastMode;
|
| | |
|
| | | if (lm != m) {
|
| | | f = document.forms[0];
|
| | |
|
| | | if (lm) {
|
| | | f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;
|
| | | f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;
|
| | | f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;
|
| | | f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;
|
| | | }
|
| | |
|
| | | mcTabs.displayTab(m + '_tab', m + '_panel');
|
| | | document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";
|
| | | document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";
|
| | | this.lastMode = m;
|
| | | }
|
| | | },
|
| | |
|
| | | searchNext : function(a) {
|
| | | 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;
|
| | |
|
| | | // Get input
|
| | | f = document.forms[0];
|
| | | s = f[m + '_panel_searchstring'].value;
|
| | | b = f[m + '_panel_backwardsu'].checked;
|
| | | ca = f[m + '_panel_casesensitivebox'].checked;
|
| | | rs = f['replace_panel_replacestring'].value;
|
| | |
|
| | | if (tinymce.isIE) {
|
| | | r = ed.getDoc().selection.createRange();
|
| | | }
|
| | |
|
| | | if (s == '')
|
| | | return;
|
| | |
|
| | | function fix() {
|
| | | // Correct Firefox graphics glitches
|
| | | // TODO: Verify if this is actually needed any more, maybe it was for very old FF versions? |
| | | r = se.getRng().cloneRange();
|
| | | ed.getDoc().execCommand('SelectAll', false, null);
|
| | | se.setRng(r);
|
| | | };
|
| | |
|
| | | function replace() {
|
| | | ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE
|
| | | };
|
| | |
|
| | | // IE flags
|
| | | if (ca)
|
| | | fl = fl | 4;
|
| | |
|
| | | switch (a) {
|
| | | case 'all':
|
| | | // Move caret to beginning of text
|
| | | ed.execCommand('SelectAll');
|
| | | ed.selection.collapse(true);
|
| | |
|
| | | if (tinymce.isIE) {
|
| | | ed.focus();
|
| | | r = ed.getDoc().selection.createRange();
|
| | |
|
| | | while (r.findText(s, b ? -1 : 1, fl)) {
|
| | | r.scrollIntoView();
|
| | | r.select();
|
| | | replace();
|
| | | fo = 1;
|
| | |
|
| | | if (b) {
|
| | | r.moveEnd("character", -(rs.length)); // Otherwise will loop forever
|
| | | }
|
| | | }
|
| | |
|
| | | tinyMCEPopup.storeSelection();
|
| | | } else {
|
| | | while (w.find(s, ca, b, false, false, false, false)) {
|
| | | replace();
|
| | | fo = 1;
|
| | | }
|
| | | }
|
| | |
|
| | | if (fo)
|
| | | tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));
|
| | | else
|
| | | tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
|
| | |
|
| | | return;
|
| | |
|
| | | case 'current':
|
| | | if (!ed.selection.isCollapsed())
|
| | | replace();
|
| | |
|
| | | break;
|
| | | }
|
| | |
|
| | | se.collapse(b);
|
| | | r = se.getRng();
|
| | |
|
| | | // Whats the point
|
| | | if (!s)
|
| | | return;
|
| | |
|
| | | if (tinymce.isIE) {
|
| | | ed.focus();
|
| | | r = ed.getDoc().selection.createRange();
|
| | |
|
| | | if (r.findText(s, b ? -1 : 1, fl)) {
|
| | | r.scrollIntoView();
|
| | | r.select();
|
| | | } else
|
| | | tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
|
| | |
|
| | | tinyMCEPopup.storeSelection();
|
| | | } else {
|
| | | if (!w.find(s, ca, b, false, false, false, false))
|
| | | tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
|
| | | else
|
| | | fix();
|
| | | }
|
| | | }
|
| | | };
|
| | |
|
| | | tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);
|