From 45e45b704882d7f41ca8f80b2ab69ab6a6a8e4b7 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Beno=C3=AEt=20Pin?= <pin@cri.ensmp.fr>
Date: Wed, 17 Aug 2011 17:19:08 +0200
Subject: [PATCH 1/1] =?utf8?q?R=C3=A9inpl=C3=A9mentation=20du=20plugin=20P?=
 =?utf8?q?linn=20Image.=20Il=20modifie=20les=20src=20des=20images=20juste?=
 =?utf8?q?=20avanc=20la=20sauvegarde.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

---
 skins/ckeditor/config.js                     |  2 +
 skins/ckeditor/plugins/plinn_image/plugin.js | 45 ++++++++++++++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 skins/ckeditor/plugins/plinn_image/plugin.js

diff --git a/skins/ckeditor/config.js b/skins/ckeditor/config.js
index 3cd350d..19c2459 100644
--- a/skins/ckeditor/config.js
+++ b/skins/ckeditor/config.js
@@ -27,4 +27,6 @@ CKEDITOR.editorConfig = function( config )
 	config.filebrowserBrowseUrl = CKEDITOR.basePath + 'filemanager/browser/mac_finder/browser.html?Connector=connectors/plinn/connector';
 	config.filebrowserWindowHeight = 600;
 	config.filebrowserWindowWidth = 801;
+	
+	config.extraPlugins = 'selection,plinn_image';
 };
\ No newline at end of file
diff --git a/skins/ckeditor/plugins/plinn_image/plugin.js b/skins/ckeditor/plugins/plinn_image/plugin.js
new file mode 100644
index 0000000..7181a9e
--- /dev/null
+++ b/skins/ckeditor/plugins/plinn_image/plugin.js
@@ -0,0 +1,45 @@
+/* © Benoît Pin, MINES ParisTech */
+
+
+(function(){
+
+var reSize = /getResizedImage\?size=(\d+)_(\d+)$/;
+
+function updateImageSizeUrlParameters(img) {
+	if (reSize.test(img.src)){
+		var matches = reSize.exec(img.src);
+		var srcWidth = parseInt(matches[1]);
+		var srcHeight = parseInt(matches[2]);
+	
+		var imgWidth = parseInt((img.style.width) ? img.style.width : img.width);
+		var imgHeight = parseInt((img.style.height) ? img.style.height : img.height);
+	
+		if ((imgWidth && imgHeight) && srcWidth != imgWidth && srcHeight != imgHeight) {
+			var newUrl = img.getAttribute('src', 2).replace(reSize, 'getResizedImage?size=' + imgWidth + '_' + imgHeight);
+			img.width = imgWidth;
+			img.height = imgHeight;
+			img.src = newUrl;
+		}
+	}
+}
+
+
+CKEDITOR.plugins.add( 'plinn_image',
+{
+	init : function( editor )
+	{
+		editor.on('instanceReady', function(){
+			editor.on('getData',
+				function(evt) {
+					var body = evt.editor.document.$.body;
+					var images = body.getElementsByTagName('IMG');
+					for (var i = 0 ; i < images.length ; i++)
+						updateImageSizeUrlParameters(images[i]);
+					evt.data.dataValue = evt.editor.document.$.body.innerHTML;
+				}
+			);
+		});
+	}
+});
+
+})();
-- 
2.20.1