From: Benoît Pin <pin@cri.ensmp.fr>
Date: Wed, 17 Aug 2011 15:19:08 +0000 (+0200)
Subject: Réinplémentation du plugin Plinn Image. Il modifie les src des images juste avanc... 
X-Git-Tag: 3.6.1~16
X-Git-Url: https://scm.cri.minesparis.psl.eu/git/ckeditor.git/commitdiff_plain/45e45b704882d7f41ca8f80b2ab69ab6a6a8e4b7?ds=sidebyside

Réinplémentation du plugin Plinn Image. Il modifie les src des images juste avanc la sauvegarde.
---

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;
+				}
+			);
+		});
+	}
+});
+
+})();