From 87e2fddb32da8580f73c5ec0628e9eacfb4e0043 Mon Sep 17 00:00:00 2001
From: svncommit <devs@roundcube.net>
Date: Mon, 26 Feb 2007 02:19:44 -0500
Subject: [PATCH] upgrade to TinyMCE v2.1.0

---
 program/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js |   71 ++++++++++++++++++++---------------
 1 files changed, 40 insertions(+), 31 deletions(-)

diff --git a/program/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js b/program/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js
index f8aee25..cd2f3a8 100644
--- a/program/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js
+++ b/program/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js
@@ -1,8 +1,8 @@
 /**
- * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
  *
  * @author Moxiecode
- * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ * @copyright Copyright � 2004-2007, Moxiecode Systems AB, All rights reserved.
  */
 
 tinyMCE.importPluginLanguagePack('searchreplace');
@@ -13,7 +13,7 @@
 			longname : 'Search/Replace',
 			author : 'Moxiecode Systems AB',
 			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_searchreplace.html',
+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',
 			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
 		};
 	},
@@ -43,7 +43,12 @@
 		}
 
 		function replaceSel(search_str, str, back) {
-			inst.execCommand('mceInsertContent', false, str);
+			if (!inst.selection.isCollapsed()) {
+				if (tinyMCE.isRealIE)
+					inst.selection.getRng().duplicate().pasteHTML(str); // Needs to be duplicated due to selection bug in IE
+				else
+					inst.execCommand('mceInsertContent', false, str);
+			}
 		}
 
 		if (!value)
@@ -61,10 +66,6 @@
 		defValue("resizable", "no");
 
 		switch (command) {
-			case "mceResetSearch" :
-				tinyMCE.lastSearchRng = null;
-				return true;
-
 			case "mceSearch" :
 				if (user_interface) {
 					var template = new Array();
@@ -75,34 +76,31 @@
 					template['width'] += tinyMCE.getLang('lang_searchreplace_delta_width', 0);
 					template['height'] += tinyMCE.getLang('lang_searchreplace_delta_height', 0);
 
-					inst.execCommand('SelectAll');
-
-					if (tinyMCE.isMSIE) {
-						var r = inst.selection.getRng();
-						r.collapse(true);
-						r.select();
-					} else
-						inst.selection.getSel().collapseToStart();
+					inst.selection.collapse(true);
 
 					tinyMCE.openWindow(template, value);
 				} else {
 					var win = tinyMCE.getInstanceById(editor_id).contentWindow;
 					var doc = tinyMCE.getInstanceById(editor_id).contentWindow.document;
 					var body = tinyMCE.getInstanceById(editor_id).contentWindow.document.body;
+					var awin = value.win, found;
+
 					if (body.innerHTML == "") {
-						alert(tinyMCE.getLang('lang_searchreplace_notfound'));
+						awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
 						return true;
 					}
 
 					if (value['replacemode'] == "current") {
 						replaceSel(value['string'], value['replacestring'], value['backwards']);
 						value['replacemode'] = "none";
-						tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false);
-						return true;
+						//tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value);
+						//return true;
 					}
 
+					inst.selection.collapse(value['backwards']);
+
 					if (tinyMCE.isMSIE) {
-						var rng = tinyMCE.lastSearchRng ? tinyMCE.lastSearchRng : doc.selection.createRange();
+						var rng = inst.selection.getRng();
 						var flags = 0;
 						if (value['wholeword'])
 							flags = flags | 2;
@@ -111,41 +109,52 @@
 							flags = flags | 4;
 
 						if (!rng.findText) {
-							alert('This operation is currently not supported by this browser.');
+							awin.alert('This operation is currently not supported by this browser.');
 							return true;
 						}
 
 						if (value['replacemode'] == "all") {
+							found = false;
+
 							while (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
+								found = true;
 								rng.scrollIntoView();
 								rng.select();
-								rng.collapse(false);
 								replaceSel(value['string'], value['replacestring'], value['backwards']);
 							}
 
-							alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
+							if (found)
+								awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
+							else
+								awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
+
 							return true;
 						}
 
 						if (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
 							rng.scrollIntoView();
 							rng.select();
-							rng.collapse(value['backwards']);
-							tinyMCE.lastSearchRng = rng;
 						} else
-							alert(tinyMCE.getLang('lang_searchreplace_notfound'));
-
+							awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
 					} else {
 						if (value['replacemode'] == "all") {
-							while (win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false))
-								replaceSel(value['string'], value['replacestring'], value['backwards']);
+							found = false;
 
-							alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
+							while (win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false)) {
+								found = true;
+								replaceSel(value['string'], value['replacestring'], value['backwards']);
+							}
+
+							if (found)
+								awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
+							else
+								awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
+
 							return true;
 						}
 
 						if (!win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false))
-							alert(tinyMCE.getLang('lang_searchreplace_notfound'));
+							awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));
 					}
 				}
 

--
Gitblit v1.9.1