From: Benoît Pin <benoit.pin@gmail.com>
Date: Thu, 31 Jul 2014 13:59:24 +0000 (+0200)
Subject: Application du style sur sélection de fragments (au sens xml).
X-Git-Url: https://svn.cri.mines-paristech.fr/git/ckeditor.git/commitdiff_plain/cefda675a7663b0fb54a048687d36898555f0fe1?ds=sidebyside;hp=b9e364c4c1d3654c6d27c73c114159295fbeda62

Application du style sur sélection de fragments (au sens xml).
---

diff --git a/skins/ckeditor/plugins/plinn_styles/plugin.js b/skins/ckeditor/plugins/plinn_styles/plugin.js
index 245a0e1..7301c07 100644
--- a/skins/ckeditor/plugins/plinn_styles/plugin.js
+++ b/skins/ckeditor/plugins/plinn_styles/plugin.js
@@ -33,17 +33,28 @@ PlinnStylesCombo.prototype.init = function() {
 
 PlinnStylesCombo.prototype.onClick = function(value) {
 	this.editor.focus();
-	this.editor.fire( 'saveSnapshot' );
+	this.editor.fire('saveSnapshot');
 	var style = this.styles[value]
 	var className = style.className;
+	var ranges = this.editor.getSelection().getRanges();
 	var element = this.editor.elementPath().lastElement;
+	if(ranges.length === 1) {
+		var start = ranges[0].startContainer;
+		var end = ranges[0].endContainer;
+		if(start.$ !== end.$) {
+			// selection is a fragment that need to be wrapped in container to apply style
+			element = new CKEDITOR.dom.element('div');
+			element.append(ranges[0].cloneContents());
+			this.editor.insertElement(element);
+		}
+	}
 	if (element.hasClass(className)) {
 		element.removeClass(className);
 	}
 	else {
 		element.addClass(className);
 	}
-	this.editor.fire( 'saveSnapshot' );
+	this.editor.fire('saveSnapshot');
 };
 
 var PlinnStylePlugin = function() {