From db9e693c7f8536e03261c7ad4d85e9b1e6c4b353 Mon Sep 17 00:00:00 2001
From: llaffont <llaffont@git-test.afi-sa.fr>
Date: Mon, 8 Oct 2012 10:58:42 +0000
Subject: [PATCH] Editeur CSS: sauvegarde du CSS

---
 amber/afi/js/AFI-Core.deploy.js | 34 +++++++++++++++++++++++
 amber/afi/js/AFI-Core.js        | 49 +++++++++++++++++++++++++++++++++
 amber/afi/js/AFI-OPAC.deploy.js | 16 ++++++++++-
 amber/afi/js/AFI-OPAC.js        | 29 +++++++++++++++----
 amber/afi/st/AFI-Core.st        | 16 +++++++++++
 amber/afi/st/AFI-OPAC.st        | 16 ++++++++++-
 library/Class/ScriptLoader.php  |  3 +-
 7 files changed, 155 insertions(+), 8 deletions(-)

diff --git a/amber/afi/js/AFI-Core.deploy.js b/amber/afi/js/AFI-Core.deploy.js
index c9449541367..b355b26d30a 100644
--- a/amber/afi/js/AFI-Core.deploy.js
+++ b/amber/afi/js/AFI-Core.deploy.js
@@ -174,6 +174,40 @@ return self;}
 smalltalk.Ajax);
 
 
+smalltalk.Ajax.klass.iVarNames = ['opacBaseUrl'];
+smalltalk.addMethod(
+unescape('_controller_action_'),
+smalltalk.method({
+selector: unescape('controller%3Aaction%3A'),
+fn: function (controllerName, actionName){
+var self=this;
+return smalltalk.send(self, "_module_controller_action_", ["opac", controllerName, actionName]);
+return self;}
+}),
+smalltalk.Ajax.klass);
+
+smalltalk.addMethod(
+unescape('_module_controller_action_'),
+smalltalk.method({
+selector: unescape('module%3Acontroller%3Aaction%3A'),
+fn: function (moduleName, controllerName, actionName){
+var self=this;
+return smalltalk.send(self, "_url_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send((typeof baseUrl == 'undefined' ? nil : baseUrl), "__comma", [unescape("/")]), "__comma", [moduleName]), "__comma", [unescape("/")]), "__comma", [controllerName]), "__comma", [unescape("/")]), "__comma", [actionName])]);
+return self;}
+}),
+smalltalk.Ajax.klass);
+
+smalltalk.addMethod(
+unescape('_opacBaseUrl_'),
+smalltalk.method({
+selector: unescape('opacBaseUrl%3A'),
+fn: function (aString){
+var self=this;
+(self['@opacBaseUrl']=aString);
+return self;}
+}),
+smalltalk.Ajax.klass);
+
 smalltalk.addMethod(
 unescape('_url_'),
 smalltalk.method({
diff --git a/amber/afi/js/AFI-Core.js b/amber/afi/js/AFI-Core.js
index 0ae96e8d5fa..d836a16e37d 100644
--- a/amber/afi/js/AFI-Core.js
+++ b/amber/afi/js/AFI-Core.js
@@ -249,6 +249,55 @@ referencedClasses: []
 smalltalk.Ajax);
 
 
+smalltalk.Ajax.klass.iVarNames = ['opacBaseUrl'];
+smalltalk.addMethod(
+unescape('_controller_action_'),
+smalltalk.method({
+selector: unescape('controller%3Aaction%3A'),
+category: 'initialize',
+fn: function (controllerName, actionName){
+var self=this;
+return smalltalk.send(self, "_module_controller_action_", ["opac", controllerName, actionName]);
+return self;},
+args: ["controllerName", "actionName"],
+source: unescape('controller%3AcontrollerName%20action%3AactionName%0A%09%5E%20self%20module%3A%20%27opac%27%20controller%3A%20controllerName%20action%3A%20actionName'),
+messageSends: ["module:controller:action:"],
+referencedClasses: []
+}),
+smalltalk.Ajax.klass);
+
+smalltalk.addMethod(
+unescape('_module_controller_action_'),
+smalltalk.method({
+selector: unescape('module%3Acontroller%3Aaction%3A'),
+category: 'initialize',
+fn: function (moduleName, controllerName, actionName){
+var self=this;
+return smalltalk.send(self, "_url_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send((typeof baseUrl == 'undefined' ? nil : baseUrl), "__comma", [unescape("/")]), "__comma", [moduleName]), "__comma", [unescape("/")]), "__comma", [controllerName]), "__comma", [unescape("/")]), "__comma", [actionName])]);
+return self;},
+args: ["moduleName", "controllerName", "actionName"],
+source: unescape('module%3AmoduleName%20controller%3AcontrollerName%20action%3AactionName%0A%09%5E%20self%20url%3A%20baseUrl%2C%27/%27%2CmoduleName%2C%27/%27%2CcontrollerName%2C%27/%27%2CactionName'),
+messageSends: ["url:", unescape("%2C")],
+referencedClasses: []
+}),
+smalltalk.Ajax.klass);
+
+smalltalk.addMethod(
+unescape('_opacBaseUrl_'),
+smalltalk.method({
+selector: unescape('opacBaseUrl%3A'),
+category: 'accessor',
+fn: function (aString){
+var self=this;
+(self['@opacBaseUrl']=aString);
+return self;},
+args: ["aString"],
+source: unescape('opacBaseUrl%3A%20aString%0A%09opacBaseUrl%20%3A%3D%20aString'),
+messageSends: [],
+referencedClasses: []
+}),
+smalltalk.Ajax.klass);
+
 smalltalk.addMethod(
 unescape('_url_'),
 smalltalk.method({
diff --git a/amber/afi/js/AFI-OPAC.deploy.js b/amber/afi/js/AFI-OPAC.deploy.js
index 1de37e2dae1..99c91326224 100644
--- a/amber/afi/js/AFI-OPAC.deploy.js
+++ b/amber/afi/js/AFI-OPAC.deploy.js
@@ -6,7 +6,21 @@ smalltalk.method({
 selector: unescape('commit'),
 fn: function (){
 var self=this;
+var ajax=nil;
+(ajax=smalltalk.send((smalltalk.Ajax || Ajax), "_module_controller_action_", ["admin", "profil", unescape("commit-css")]));
+(function($rec){smalltalk.send($rec, "_at_put_", ["type", "PUT"]);smalltalk.send($rec, "_at_put_", ["data", smalltalk.send(self, "_contents", [])]);return smalltalk.send($rec, "_at_put_", ["contentType", unescape("text/css%3Bcharset%3DUTF-8")]);})(smalltalk.send(ajax, "_options", []));
+(function($rec){smalltalk.send($rec, "_onErrorDo_", [(function(){return smalltalk.send((typeof window == 'undefined' ? nil : window), "_alert_", ["Erreur lors de la sauvegarde: "]);})]);smalltalk.send($rec, "_onSuccessDo_", [(function(){return smalltalk.send((typeof window == 'undefined' ? nil : window), "_alert_", [unescape("Fichier%20CSS%20sauvegard%E9")]);})]);return smalltalk.send($rec, "_send", []);})(ajax);
+return self;}
+}),
+smalltalk.AFICssEditor);
 
+smalltalk.addMethod(
+unescape('_contents'),
+smalltalk.method({
+selector: unescape('contents'),
+fn: function (){
+var self=this;
+return smalltalk.send(self['@sourceArea'], "_val", []);
 return self;}
 }),
 smalltalk.AFICssEditor);
@@ -65,7 +79,7 @@ fn: function (html){
 var self=this;
 (self['@sourceArea']=smalltalk.send((smalltalk.AFISourceArea || AFISourceArea), "_new", []));
 smalltalk.send(self['@sourceArea'], "_renderOn_", [html]);
-smalltalk.send(self, "_refreshContents", []);
+(function($rec){smalltalk.send($rec, "_loadCss", []);return smalltalk.send($rec, "_refreshContents", []);})(self);
 smalltalk.send(self['@sourceArea'], "_onChange_", [(function(){return smalltalk.send(self, "_updateStyleTag", []);})]);
 return self;}
 }),
diff --git a/amber/afi/js/AFI-OPAC.js b/amber/afi/js/AFI-OPAC.js
index f7fa997386b..e0fe55c60b0 100644
--- a/amber/afi/js/AFI-OPAC.js
+++ b/amber/afi/js/AFI-OPAC.js
@@ -7,11 +7,30 @@ selector: unescape('commit'),
 category: 'actions',
 fn: function (){
 var self=this;
+var ajax=nil;
+(ajax=smalltalk.send((smalltalk.Ajax || Ajax), "_module_controller_action_", ["admin", "profil", unescape("commit-css")]));
+(function($rec){smalltalk.send($rec, "_at_put_", ["type", "PUT"]);smalltalk.send($rec, "_at_put_", ["data", smalltalk.send(self, "_contents", [])]);return smalltalk.send($rec, "_at_put_", ["contentType", unescape("text/css%3Bcharset%3DUTF-8")]);})(smalltalk.send(ajax, "_options", []));
+(function($rec){smalltalk.send($rec, "_onErrorDo_", [(function(){return smalltalk.send((typeof window == 'undefined' ? nil : window), "_alert_", ["Erreur lors de la sauvegarde: "]);})]);smalltalk.send($rec, "_onSuccessDo_", [(function(){return smalltalk.send((typeof window == 'undefined' ? nil : window), "_alert_", [unescape("Fichier%20CSS%20sauvegard%E9")]);})]);return smalltalk.send($rec, "_send", []);})(ajax);
+return self;},
+args: [],
+source: unescape('commit%0A%09%7Cajax%7C%20%0A%09ajax%20%3A%3D%20Ajax%20module%3A%20%27admin%27%20controller%3A%20%27profil%27%20action%3A%20%27commit-css%27.%0A%09ajax%20options%20%0A%09%09%09at%3A%20%27type%27%20put%3A%20%27PUT%27%3B%0A%09%09%09at%3A%20%27data%27%20put%3A%20self%20contents%3B%0A%09%09%09at%3A%20%27contentType%27%20put%3A%20%27text/css%3Bcharset%3DUTF-8%27.%0A%09ajax%20%0A%09%09onErrorDo%3A%20%5Bwindow%20alert%3A%20%27Erreur%20lors%20de%20la%20sauvegarde%3A%20%27%20%5D%3B%0A%09%09onSuccessDo%3A%20%5Bwindow%20alert%3A%20%27Fichier%20CSS%20sauvegard%E9%27%20%5D%3B%0A%09%09send'),
+messageSends: ["module:controller:action:", "at:put:", "contents", "options", "onErrorDo:", "alert:", "onSuccessDo:", "send"],
+referencedClasses: ["Ajax"]
+}),
+smalltalk.AFICssEditor);
 
+smalltalk.addMethod(
+unescape('_contents'),
+smalltalk.method({
+selector: unescape('contents'),
+category: 'accessor',
+fn: function (){
+var self=this;
+return smalltalk.send(self['@sourceArea'], "_val", []);
 return self;},
 args: [],
-source: unescape('commit'),
-messageSends: [],
+source: unescape('contents%0A%09%5E%20sourceArea%20val'),
+messageSends: ["val"],
 referencedClasses: []
 }),
 smalltalk.AFICssEditor);
@@ -91,12 +110,12 @@ fn: function (html){
 var self=this;
 (self['@sourceArea']=smalltalk.send((smalltalk.AFISourceArea || AFISourceArea), "_new", []));
 smalltalk.send(self['@sourceArea'], "_renderOn_", [html]);
-smalltalk.send(self, "_refreshContents", []);
+(function($rec){smalltalk.send($rec, "_loadCss", []);return smalltalk.send($rec, "_refreshContents", []);})(self);
 smalltalk.send(self['@sourceArea'], "_onChange_", [(function(){return smalltalk.send(self, "_updateStyleTag", []);})]);
 return self;},
 args: ["html"],
-source: unescape('renderBoxOn%3A%20html%0A%20%20%20%20sourceArea%20%3A%3D%20AFISourceArea%20new.%0A%20%20%20%20sourceArea%20renderOn%3A%20html.%0A%0A%20%20%20%20self%20refreshContents.%0A%0A%20%20%20%20sourceArea%20onChange%3A%20%5Bself%20updateStyleTag%5D'),
-messageSends: ["new", "renderOn:", "refreshContents", "onChange:", "updateStyleTag"],
+source: unescape('renderBoxOn%3A%20html%0A%20%20%20%20sourceArea%20%3A%3D%20AFISourceArea%20new.%0A%20%20%20%20sourceArea%20renderOn%3A%20html.%0A%0A%20%20%20%20self%20loadCss%3B%20refreshContents.%0A%0A%20%20%20%20sourceArea%20onChange%3A%20%5Bself%20updateStyleTag%5D'),
+messageSends: ["new", "renderOn:", "loadCss", "refreshContents", "onChange:", "updateStyleTag"],
 referencedClasses: ["AFISourceArea"]
 }),
 smalltalk.AFICssEditor);
diff --git a/amber/afi/st/AFI-Core.st b/amber/afi/st/AFI-Core.st
index ca9cc61079a..e448f1c6aad 100644
--- a/amber/afi/st/AFI-Core.st
+++ b/amber/afi/st/AFI-Core.st
@@ -101,8 +101,24 @@ onSuccessDo: aBlock
 	self options at: 'success' put: aBlock
 ! !
 
+Ajax class instanceVariableNames: 'opacBaseUrl'!
+
+!Ajax class methodsFor: 'accessor'!
+
+opacBaseUrl: aString
+	opacBaseUrl := aString
+! !
+
 !Ajax class methodsFor: 'initialize'!
 
+controller:controllerName action:actionName
+	^ self module: 'opac' controller: controllerName action: actionName
+!
+
+module:moduleName controller:controllerName action:actionName
+	^ self url: baseUrl,'/',moduleName,'/',controllerName,'/',actionName
+!
+
 url: aString
 	^ self new 
 		url: aString;
diff --git a/amber/afi/st/AFI-OPAC.st b/amber/afi/st/AFI-OPAC.st
index 2253d825a5c..72dc0df65e1 100644
--- a/amber/afi/st/AFI-OPAC.st
+++ b/amber/afi/st/AFI-OPAC.st
@@ -5,6 +5,10 @@ TabWidget subclass: #AFICssEditor
 
 !AFICssEditor methodsFor: 'accessor'!
 
+contents
+	^ sourceArea val
+!
+
 contents: aString
 	sourceArea val: aString
 !
@@ -23,6 +27,16 @@ styleTag
 !AFICssEditor methodsFor: 'actions'!
 
 commit
+	|ajax| 
+	ajax := Ajax module: 'admin' controller: 'profil' action: 'commit-css'.
+	ajax options 
+			at: 'type' put: 'PUT';
+			at: 'data' put: self contents;
+			at: 'contentType' put: 'text/css;charset=UTF-8'.
+	ajax 
+		onErrorDo: [window alert: 'Erreur lors de la sauvegarde: ' ];
+		onSuccessDo: [window alert: 'Fichier CSS sauvegardé' ];
+		send
 !
 
 loadCss
@@ -49,7 +63,7 @@ renderBoxOn: html
     sourceArea := AFISourceArea new.
     sourceArea renderOn: html.
 
-    self refreshContents.
+    self loadCss; refreshContents.
 
     sourceArea onChange: [self updateStyleTag]
 !
diff --git a/library/Class/ScriptLoader.php b/library/Class/ScriptLoader.php
index 47f36548335..65757d5bac7 100644
--- a/library/Class/ScriptLoader.php
+++ b/library/Class/ScriptLoader.php
@@ -403,7 +403,8 @@ class Class_ScriptLoader {
 	public function &getAmberReadyScripts() {
 		if (!isset($this->_amber_ready_scripts))
 			$this->_amber_ready_scripts = array(sprintf('smalltalk.Package._defaultCommitPathJs_("%s/opac/amber/commitJs")', BASE_URL),
-																					sprintf('smalltalk.Package._defaultCommitPathSt_("%s/opac/amber/commitSt")', BASE_URL));
+																					sprintf('smalltalk.Package._defaultCommitPathSt_("%s/opac/amber/commitSt")', BASE_URL),
+																					sprintf('smalltalk.Ajax._opacBaseUrl_("%s")', BASE_URL));
 		return $this->_amber_ready_scripts;
 	}
 
-- 
GitLab