Merge branch 'master' into db-purge

Conflicts:
	wise-webapp/src/main/webapp/WEB-INF/classes/log4j.properties
This commit is contained in:
Paulo Gustavo Veiga 2012-11-05 20:40:54 -03:00
commit fe8516bb94
32 changed files with 220 additions and 362 deletions

View File

@ -1,6 +1,5 @@
#!/bin/bash #!/bin/bash
set -x
set -e set -e
set -u set -u
@ -46,7 +45,6 @@ unzip $BASE_DIR/../wise-webapp/target/wisemapping.war -d $WISE_WEBAPP_DIR >/dev/
sed 's/\${database.base.url}\/db\/wisemapping/webapps\/wisemapping\/WEB-INF\/database\/wisemapping/' $WISE_WEBAPP_DIR/WEB-INF/app.properties > $WISE_WEBAPP_DIR/WEB-INF/app.properties2 sed 's/\${database.base.url}\/db\/wisemapping/webapps\/wisemapping\/WEB-INF\/database\/wisemapping/' $WISE_WEBAPP_DIR/WEB-INF/app.properties > $WISE_WEBAPP_DIR/WEB-INF/app.properties2
mv $WISE_WEBAPP_DIR/WEB-INF/app.properties2 $WISE_WEBAPP_DIR/WEB-INF/app.properties mv $WISE_WEBAPP_DIR/WEB-INF/app.properties2 $WISE_WEBAPP_DIR/WEB-INF/app.properties
mkdir $WISE_WEBAPP_DIR/WEB-INF/database mkdir $WISE_WEBAPP_DIR/WEB-INF/database
cp -r $BASE_DIR/../wise-webapp/target/db/* $WISE_WEBAPP_DIR/WEB-INF/database/ cp -r $BASE_DIR/../wise-webapp/target/db/* $WISE_WEBAPP_DIR/WEB-INF/database/
cp $BASE_DIR/wisemapping.xml $JETTY_DIR/contexts/ cp $BASE_DIR/wisemapping.xml $JETTY_DIR/contexts/
@ -54,6 +52,7 @@ cp $BASE_DIR/wisemapping.xml $JETTY_DIR/contexts/
# Distribute scripts # Distribute scripts
cp -r $BASE_DIR/../wise-webapp/src/test/sql $TARGET_DIR/wisemapping-$WISE_VERSION/config cp -r $BASE_DIR/../wise-webapp/src/test/sql $TARGET_DIR/wisemapping-$WISE_VERSION/config
cp ./start.sh ${JETTY_DIR}/
# Store version # Store version
echo $1 > $WISE_WEBAPP_DIR/version echo $1 > $WISE_WEBAPP_DIR/version

4
distribution/start.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
java -Xmx256m -Dorg.apache.jasper.compiler.disablejsr199=true -jar start.jar

View File

@ -167,39 +167,40 @@ mindplot.Designer = new Class({
} }
// Enable drag events ... // Enable drag events ...
Element.NativeEvents.dragenter = 2; // @Todo: Images support on progress ...
Element.NativeEvents.dragexit = 2; // Element.NativeEvents.dragenter = 2;
Element.NativeEvents.dragover = 2; // Element.NativeEvents.dragexit = 2;
Element.NativeEvents.drop = 2; // Element.NativeEvents.dragover = 2;
// Element.NativeEvents.drop = 2;
screenManager.addEvent('dragenter', noopHandler);
screenManager.addEvent('dragexit', noopHandler);
screenManager.addEvent('dragover', noopHandler);
screenManager.addEvent('drop', function (evt) {
evt.stopPropagation();
evt.preventDefault();
// //
var files = evt.event.dataTransfer.files; // screenManager.addEvent('dragenter', noopHandler);
console.log(event); // screenManager.addEvent('dragexit', noopHandler);
// screenManager.addEvent('dragover', noopHandler);
var count = files.length; // screenManager.addEvent('drop', function (evt) {
// evt.stopPropagation();
// Only call the handler if 1 or more files was dropped. // evt.preventDefault();
if (count > 0) { ////
// var files = evt.event.dataTransfer.files;
var model = this.getMindmap().createNode(); // console.log(event);
model.setImageSize(80, 43); //
model.setMetadata("{'media':'video,'url':'http://www.youtube.com/watch?v=P3FrXftyuzw&feature=g-vrec&context=G2b4ab69RVAAAAAAAAAA'}"); // var count = files.length;
model.setImageUrl("images/logo-small.png"); //
model.setShapeType(mindplot.model.TopicShape.IMAGE); // // Only call the handler if 1 or more files was dropped.
// if (count > 0) {
var position = screenManager.getWorkspaceMousePosition(evt); //
model.setPosition(position.x, position.y); // var model = this.getMindmap().createNode();
model.setPosition(100, 100); // model.setImageSize(80, 43);
// model.setMetadata("{'media':'video,'url':'http://www.youtube.com/watch?v=P3FrXftyuzw&feature=g-vrec&context=G2b4ab69RVAAAAAAAAAA'}");
this._actionDispatcher.addTopics([model]); // model.setImageUrl("images/logo-small.png");
} // model.setShapeType(mindplot.model.TopicShape.IMAGE);
}.bind(this)); //
// var position = screenManager.getWorkspaceMousePosition(evt);
// model.setPosition(position.x, position.y);
// model.setPosition(100, 100);
//
// this._actionDispatcher.addTopics([model]);
// }
// }.bind(this));
}, },

View File

@ -83,6 +83,7 @@ mindplot.DesignerModel = new Class({
addTopic:function (topic) { addTopic:function (topic) {
$assert(topic, "topic can not be null"); $assert(topic, "topic can not be null");
$assert(typeof topic.getId() == "number", "id is not a number:" + topic.getId());
this._topics.push(topic); this._topics.push(topic);
}, },

View File

@ -38,6 +38,7 @@ mindplot.NodeGraph = new Class({
}, },
setId : function(id) { setId : function(id) {
$assert(typeof topic.getId() == "number", "id is not a number:" + id);
this.getModel().setId(id); this.getModel().setId(id);
}, },

View File

@ -54,7 +54,6 @@ mindplot.StandaloneActionDispatcher = new Class({
}; };
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicId, position); var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicId, position);
command.desc = "move topic";
this.execute(command); this.execute(command);
}, },
@ -72,7 +71,6 @@ mindplot.StandaloneActionDispatcher = new Class({
return result; return result;
}; };
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds); var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds);
command.desc = "changeFontStyleToTopic";
this.execute(command); this.execute(command);
}, },
@ -85,9 +83,9 @@ mindplot.StandaloneActionDispatcher = new Class({
topic.setText(value); topic.setText(value);
return result; return result;
}; };
commandFunc.commandType = "changeTextToTopic";
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, text); var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, text);
command.desc = "changeTextToTopic";
this.execute(command); this.execute(command);
}, },
@ -105,8 +103,6 @@ mindplot.StandaloneActionDispatcher = new Class({
}; };
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicIds, fontFamily); var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicIds, fontFamily);
command.desc = "changeFontFamilyToTopic";
this.execute(command); this.execute(command);
}, },
@ -122,7 +118,6 @@ mindplot.StandaloneActionDispatcher = new Class({
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, color); var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, color);
command.discardDuplicated = "fontColorCommandId"; command.discardDuplicated = "fontColorCommandId";
command.desc = "changeFontColorToTopic";
this.execute(command); this.execute(command);
}, },
@ -138,8 +133,6 @@ mindplot.StandaloneActionDispatcher = new Class({
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, color); var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, color);
command.discardDuplicated = "backColor"; command.discardDuplicated = "backColor";
command.desc = "changeBackgroundColorToTopic";
this.execute(command); this.execute(command);
}, },
@ -155,8 +148,6 @@ mindplot.StandaloneActionDispatcher = new Class({
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, color); var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, color);
command.discardDuplicated = "borderColorCommandId"; command.discardDuplicated = "borderColorCommandId";
command.desc = "changeBorderColorToTopic";
this.execute(command); this.execute(command);
}, },
@ -173,8 +164,6 @@ mindplot.StandaloneActionDispatcher = new Class({
}; };
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, size); var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, size);
command.desc = "changeFontSizeToTopic";
this.execute(command); this.execute(command);
}, },
@ -189,8 +178,6 @@ mindplot.StandaloneActionDispatcher = new Class({
}; };
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, shapeType); var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, shapeType);
command.desc = "changeShapeTypeToTopic";
this.execute(command); this.execute(command);
}, },
@ -207,8 +194,6 @@ mindplot.StandaloneActionDispatcher = new Class({
}; };
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds); var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds);
command.desc = "changeFontWeightToTopic";
this.execute(command); this.execute(command);
}, },
@ -221,8 +206,6 @@ mindplot.StandaloneActionDispatcher = new Class({
}; };
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, collapse); var command = new mindplot.commands.GenericFunctionCommand(commandFunc, topicsIds, collapse);
command.desc = "shrinkBranch";
this.execute(command, false); this.execute(command, false);
}, },
@ -268,7 +251,7 @@ mindplot.CommandContext = new Class({
var ids = designerTopics.map(function (topic) { var ids = designerTopics.map(function (topic) {
return topic.getId(); return topic.getId();
}); });
$assert(result.length == topicsIds.length, "Could not find topic. Result:" + result + ", Filter Criteria:" + topicsIds + ", Current Topics: " + ids); $assert(result.length == topicsIds.length, "Could not find topic. Result:" + result + ", Filter Criteria:" + topicsIds + ", Current Topics: [" + ids + "]");
} }
return result; return result;
}, },

View File

@ -32,19 +32,27 @@ mindplot.commands.GenericFunctionCommand = new Class({
execute:function (commandContext) { execute:function (commandContext) {
if (!this.applied) { if (!this.applied) {
// @Todo: Debug hack. Remove var topics = null;
var topics;
try { try {
topics = commandContext.findTopics(this._topicsId); topics = commandContext.findTopics(this._topicsId);
} catch (e) { } catch (e) {
throw new Error(e + "," + this._commandFunc + "," + this._commandFunc.desc); if (this._commandFunc.commandType != "changeTextToTopic") {
// Workaround: For some reason, there is a combination of events that involves
// making some modification and firing out of focus event. This is causing
// that a remove node try to be removed. In some other life, I will come with the solution.
// Almost aways occurs with IE9. I could be related with some change of order in sets o something similar.
throw e;
}
} }
if (topics != null) {
topics.each(function (topic) { topics.each(function (topic) {
var oldValue = this._commandFunc(topic, this._value); var oldValue = this._commandFunc(topic, this._value);
this._oldValues.push(oldValue); this._oldValues.push(oldValue);
}.bind(this)); }.bind(this));
}
this.applied = true; this.applied = true;
} else { } else {
throw "Command can not be applied two times in a row."; throw "Command can not be applied two times in a row.";
} }

View File

@ -72,14 +72,11 @@ web2d.peer.svg.ElementPeer = new Class({
var children = this.getChildren(); var children = this.getChildren();
// Remove from children array ... // Remove from children array ...
var length = children.length; var oldLength = children.length;
children.erase(elementPeer); children.erase(elementPeer);
$assert(children.length < oldLength, "element could not be removed:" + elementPeer);
var newLength = children.length;
if (newLength >= length) {
throw "Could not remove the element.";
}
// Append element as a child. // Append element as a child.
this._native.removeChild(elementPeer._native); this._native.removeChild(elementPeer._native);
}, },

View File

@ -39,7 +39,7 @@ function buildDesigner(options) {
return; return;
} }
// Trasform error ... // Transform error ...
var errorMsg = message; var errorMsg = message;
if (typeof(message) === 'object' && message.srcElement && message.target) { if (typeof(message) === 'object' && message.srcElement && message.target) {
if (message.srcElement == '[object HTMLScriptElement]' && message.target == '[object HTMLScriptElement]') { if (message.srcElement == '[object HTMLScriptElement]' && message.target == '[object HTMLScriptElement]') {
@ -57,7 +57,7 @@ function buildDesigner(options) {
emulation:false, emulation:false,
urlEncoded:false urlEncoded:false
}).post(JSON.encode({ }).post(JSON.encode({
jsErrorMsg:"Message: '" + errorMsg + "', line:'" + lineNo + "', :" + url, jsErrorMsg:"Message: '" + errorMsg + "', line:'" + lineNo + "', url: :" + url,
jsStack:window.errorStack, jsStack:window.errorStack,
userAgent:navigator.userAgent, userAgent:navigator.userAgent,
mapId:options.mapId})); mapId:options.mapId}));

View File

@ -1,196 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?> <map name="welcome" version="tango">
<map version="tango" name="basic"> <topic central="true" text="Welcome To WiseMapping" id="1" fontStyle=";;#dfcfe6;;;" bgColor="#0a0a08">
<topic id="0" central="true" position="0,0" bgColor="#99ffff" <topic position="178,-130" order="0" text="Try it Now!" id="11" fontStyle=";;#ffffff;;;" bgColor="#250be3"
fontStyle="Arial;16;#ff3300;bold;;" shape="rounded rectagle"> brColor="#080559">
<text><![CDATA[120924 Programme]]></text> <topic position="272,-156" order="0" text="Double Click" id="12" fontStyle=";;#001be6;;italic;"/>
<note> <topic position="274,-130" order="1" text=" INS to insert" id="13" fontStyle=";;#001be6;;italic;"/>
<text><![CDATA[]]></text> <topic position="285,-104" order="2" text="Drag map to move" id="14" fontStyle=";;#001be6;;italic;"/>
</note>
<topic id="1" position="200,0" order="0" brColor="#808080"
bgColor="#ffff33" fontStyle="Arial;14;#0000cc;bold;;" shape="rounded rectagle">
<text><![CDATA[bilan mi-parcours
du plan d'actions]]></text>
<topic id="2" position="290,-75" order="0"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[modalités]]></text>
<topic id="3" position="380,-125" order="0" shape="line">
<text><![CDATA[cf. mi-parcours 201109]]></text>
</topic> </topic>
<topic id="4" position="380,-100" order="1" <topic position="-189,-52" order="1" text="Productivity" id="2" fontStyle=";;#104f11;;;" bgColor="#d9b518">
fontStyle="Arial;12;;;;" shape="line"> <icon id="chart_bar"/>
<text><![CDATA[à partir des plans d'actions]]></text> <topic position="-310,-104" order="0" text="Share your ideas" id="3">
<icon id="bulb_light_on"/>
</topic> </topic>
<topic id="5" position="380,-75" order="2" <topic position="-299,-25" order="2" text="Brainstorming" id="4"/>
fontStyle="Arial;12;;;;" shape="line"> <topic position="-283,1" order="3" text="Visual " id="5"/>
<text><![CDATA[donner la parole aux référents prévus, en demandant des exemples]]></text> <topic position="-307,-65" order="1" shape="image" image="80,43:images/logo-small.png" id="27"
metadata="{'media':'video,'url':'http://www.youtube.com/watch?v=P3FrXftyuzw&amp;feature=g-vrec&amp;context=G2b4ab69RVAAAAAAAAAA'}"/>
</topic> </topic>
<topic id="6" position="380,-50" order="3" <topic position="185,-39" order="2" text="Mind Mapping" id="6" fontStyle=";;#602378;;;" bgColor="#edabff">
fontStyle="Arial;12;;;;" shape="line"> <topic position="303,-78" order="0" text="Share with Collegues" id="7"/>
<text><![CDATA[faire compléter par les autres participants]]></text> <topic position="275,-52" order="1" text="Online" id="8"/>
<topic position="299,-26" order="2" text="Anyplace, Anytime" id="9"/>
<topic position="277,0" order="3" text="Free!!!" id="10"/>
</topic> </topic>
<topic position="-183,66" order="3" text="Web 2.0 Tool" id="22" fontStyle=";;#0c1d6b;;;" bgColor="#add1f7">
<topic position="-281,27" order="0" text="Collaborate" id="23"/>
<topic position="-302,53" order="1" text="No plugin required" id="24">
<icon id="conn_disconnect"/>
</topic> </topic>
<topic id="7" position="290,-50" order="1" brColor="#808080" <topic position="-271,79" order="2" text="Share" id="25"/>
bgColor="#99ffff" fontStyle="Arial;12;#0000cc;bold;;" shape="rounded rectagle"> <topic position="-282,105" order="3" text="Easy to use" id="26"/>
<text><![CDATA[1) Adapter et améliorer
notre offre de services
selon l'évolution des besoins]]></text>
<topic id="8" position="380,-175" order="0"
bgColor="#99ffff" shape="line">
<text><![CDATA[couleurs = état d'avancement en septembre 2011,
à mettre à jour selon avancement 2012]]></text>
<topic id="9" position="470,-225" order="0"
bgColor="#0099ff" shape="line">
<text><![CDATA[Bleu 0%]]></text>
</topic> </topic>
<topic id="10" position="470,-200" order="1" <topic position="171,91" order="4" text="Features" id="15">
bgColor="#ff9999" shape="line"> <topic position="266,26" order="0" text="Links to Sites" id="16" fontStyle=";6;;;;">
<text><![CDATA[Rouge 25%]]></text> <link url="http://www.digg.com" type="url"/>
</topic>
<topic id="11" position="470,-175" order="2"
bgColor="#ffcc00" shape="line">
<text><![CDATA[Orange 50%]]></text>
</topic>
<topic id="12" position="470,-150" order="3"
bgColor="#ffff00" shape="line">
<text><![CDATA[Jaune 75%]]></text>
</topic>
<topic id="13" position="470,-125" order="4"
bgColor="#66ff00" shape="line">
<text><![CDATA[Vert]]></text>
<topic id="14" position="560,-125" order="0" shape="line">
<text><![CDATA[100 %]]></text>
</topic>
</topic>
</topic>
<topic shrink="true" id="15" position="380,-150"
order="1" bgColor="#66ff00"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[1.1. .Renforcer et structurer
le service "accueil et orientation"]]></text>
<topic id="16" position="470,-175" order="0" shape="line">
<text><![CDATA[Sophie]]></text>
</topic>
</topic>
<topic id="17" position="380,-125" order="2"
bgColor="#ffff00"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[1.2. Adapter l'offre Halte-Garderie
aux besoins des familles]]></text>
<topic id="18" position="470,-150" order="0" shape="line">
<text><![CDATA[Martine D et Christine]]></text>
</topic>
</topic>
<topic id="19" position="380,-100" order="3"
bgColor="#66ff00"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[1.3. Renforcer et structurer les services
de soutien à la parentalité]]></text>
<topic id="20" position="470,-125" order="0" shape="line">
<text><![CDATA[Nathalie]]></text>
</topic>
</topic>
<topic id="21" position="380,-75" order="4"
bgColor="#ffff00"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[1.4 Améliorer la qualité des
projets pédagogiques des ALSH]]></text>
<topic id="22" position="470,-100" order="0" shape="line">
<text><![CDATA[Josiane]]></text>
</topic>
</topic>
<topic id="23" position="380,-50" order="5"
bgColor="#ffcc00"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[1.5 Renforcer et améliorer les
activités de loisirs existantes]]></text>
<topic id="24" position="470,-75" order="0" shape="line">
<text><![CDATA[Agnès]]></text>
</topic>
</topic>
<topic id="25" position="380,-25" order="6"
bgColor="#66ff00"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[1.6 Renforcer et améliorer les ateliers  
visant à  rompre l'isolement lié à la langue,
la pauvreté, la pression de la consommation]]></text>
<topic id="26" position="470,-50" order="0" shape="line">
<text><![CDATA[Nathalie]]></text>
</topic>
</topic>
</topic>
<topic id="27" position="290,-25" order="2"
brColor="#808080" bgColor="#99ffff"
fontStyle="Arial;14;#0000cc;bold;;" shape="rounded rectagle">
<text><![CDATA[2) Consolider nos moyens d'action :
locaux, organisation, communication interne]]></text>
<topic id="28" position="380,-100" order="0"
bgColor="#ffff00"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[2.1 Formaliser notre offre de services
et les modèles économiques correspondants]]></text>
<topic id="29" position="470,-150" order="0" shape="line">
<text><![CDATA[Agnès]]></text>
</topic>
</topic>
<topic id="30" position="380,-75" order="1"
bgColor="#ffcc00"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[2.2 Formaliser le "qui fait quoi"
en lien avec notre offre de service]]></text>
<topic id="31" position="470,-125" order="0" shape="line">
<text><![CDATA[Martine G]]></text>
</topic>
</topic>
<topic id="32" position="380,-50" order="2"
bgColor="#66ff00"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[2.3. Elaborer un projet immobilier de proximité
réalisable au  centre ville]]></text>
<topic id="33" position="470,-100" order="0" shape="line">
<text><![CDATA[JMDW]]></text>
</topic>
</topic>
</topic>
<topic id="34" position="290,0" order="3" brColor="#808080"
bgColor="#99ffff" fontStyle="Arial;14;#0000cc;bold;;" shape="rounded rectagle">
<text><![CDATA[3) Renforcer nos
partenariats et
notre notoriété]]></text>
<topic id="35" position="380,-75" order="0"
brColor="#808080" bgColor="#ffff00"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[3.1 Organiser pour chaque segment de notre offre
l'identification et la rencontre des partenaires concernés]]></text>
<topic id="36" position="470,-125" order="0" shape="line">
<text><![CDATA[Martine P]]></text>
</topic>
</topic>
<topic id="37" position="380,-50" order="1"
brColor="#808080" bgColor="#ffcc00"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[3.2 Formaliser et contractualiser les partenariats
émergeants autour d'actions communes]]></text>
<topic id="38" position="470,-100" order="0" shape="line">
<text><![CDATA[Pdt + Agnès]]></text>
</topic>
</topic>
<topic id="39" position="380,-25" order="2"
bgColor="#ff6666"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[3.3 développer la vie associative]]></text>
<topic id="40" position="470,-50" order="0" shape="line">
<text><![CDATA[Pdt + Agnès]]></text>
</topic>
</topic>
<topic id="41" position="380,0" order="3"
brColor="#808080" bgColor="#ff6666"
fontStyle="Arial;12;#006600;bold;;" shape="line">
<text><![CDATA[3.4 définir et faire vivre un plan de communication
à partir de notre segmentation de l'offre]]></text>
<topic id="42" position="470,-50" order="0" shape="line">
<text><![CDATA[Pdt + Agnès]]></text>
</topic> </topic>
<topic position="245,52" order="1" text="Fonts" id="17"/>
<topic position="255,78" order="2" text="Topic Color" id="18"/>
<topic position="260,104" order="3" text="Topic Shapes" shape="line" id="19"/>
<topic position="252,130" order="4" text="Icons" id="20">
<icon id="object_rainbow"/>
</topic> </topic>
<topic position="272,156" order="5" text="History Changes" id="21">
<icon id="arrowc_turn_left"/>
</topic> </topic>
</topic> </topic>
</topic> </topic>

View File

@ -95,6 +95,12 @@
<version>${org.springframework.version}</version> <version>${org.springframework.version}</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
<scope>runtime</scope>
</dependency>
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId> <artifactId>spring-web</artifactId>
@ -255,7 +261,7 @@
<dependency> <dependency>
<groupId>log4j</groupId> <groupId>log4j</groupId>
<artifactId>log4j</artifactId> <artifactId>log4j</artifactId>
<version>1.2.9</version> <version>1.2.17</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- Only for test purposes --> <!-- Only for test purposes -->
@ -280,7 +286,7 @@
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId> <artifactId>slf4j-api</artifactId>
<version>1.6.4</version> <version>1.7.2</version>
<scope>runtime</scope> <scope>runtime</scope>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -18,29 +18,51 @@
package com.wisemapping.filter; package com.wisemapping.filter;
import com.wisemapping.exceptions.GoogleChromeFrameRequiredException;
import com.wisemapping.exceptions.UnsupportedBrowserException;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.env.PropertySource;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.regex.Pattern;
public class RequestPropertiesInterceptor extends HandlerInterceptorAdapter { public class RequestPropertiesInterceptor extends HandlerInterceptorAdapter {
private Map<String, String> attributes; @Value("${google.analytics.enabled}")
private Boolean analyticsEnabled;
@Value("${google.analytics.account}")
private String analyticsAccount;
@Value("${google.ads.enabled}")
private Boolean adsEnabled;
@Value("${site.homepage}")
private String siteHomepage;
@Autowired
Environment env;
public boolean preHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, Object object) throws Exception { public boolean preHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, Object object) throws Exception {
for (String key : attributes.keySet()) {
request.setAttribute(key, attributes.get(key)); request.setAttribute("google.analytics.enabled", analyticsEnabled);
request.setAttribute("google.analytics.account", analyticsAccount);
request.setAttribute("google.ads.enabled", adsEnabled);
request.setAttribute("site.homepage", siteHomepage);
final String baseUrl;
if (env.containsProperty("site.baseurl")) {
baseUrl = env.getProperty("site.baseurl");
} else {
baseUrl = request.getRequestURL().toString().replace(request.getRequestURI(), request.getContextPath());
} }
request.setAttribute("site.baseurl", baseUrl);
return true; return true;
} }
public void setAttributes(Map<String, String> attributes) {
this.attributes = attributes;
}
} }

View File

@ -27,6 +27,7 @@ import org.apache.commons.lang.StringEscapeUtils;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.PrintWriter; import java.io.PrintWriter;
@ -37,12 +38,14 @@ import java.util.Map;
final public class NotificationService { final public class NotificationService {
public static final String DEFAULT_WISE_URL = "http://localhost:8080/wisemapping";
@Autowired @Autowired
private Mailer mailer; private Mailer mailer;
private String baseUrl;
private NotifierFilter notificationFilter; private NotifierFilter notificationFilter;
private String baseUrl;
public NotificationService() { public NotificationService() {
this.notificationFilter = new NotifierFilter(); this.notificationFilter = new NotifierFilter();
} }
@ -64,8 +67,8 @@ final public class NotificationService {
model.put("mindmap", mindmap); model.put("mindmap", mindmap);
model.put("message", "message"); model.put("message", "message");
model.put("ownerName", user.getFirstname()); model.put("ownerName", user.getFirstname());
model.put("mapEditUrl", baseUrl + "/c/maps/" + mindmap.getId() + "/edit"); model.put("mapEditUrl", getBaseUrl() + "/c/maps/" + mindmap.getId() + "/edit");
model.put("baseUrl", baseUrl); model.put("baseUrl", getBaseUrl());
model.put("senderMail", user.getEmail()); model.put("senderMail", user.getEmail());
model.put("message", message); model.put("message", message);
model.put("supportEmail", mailer.getSupportEmail()); model.put("supportEmail", mailer.getSupportEmail());
@ -83,7 +86,7 @@ final public class NotificationService {
final String messageBody = final String messageBody =
"<p>Someone, most likely you, requested a new password for your WiseMapping account. </p>\n" + "<p>Someone, most likely you, requested a new password for your WiseMapping account. </p>\n" +
"<p><strong>Here is your new password: " + temporalPassword + "</strong></p>\n" + "<p><strong>Here is your new password: " + temporalPassword + "</strong></p>\n" +
"<p>You can login clicking <a href=\"" + this.baseUrl + "/c/login\">here</a>. We strongly encourage you to change the password as soon as possible.</p>"; "<p>You can login clicking <a href=\"" + getBaseUrl() + "/c/login\">here</a>. We strongly encourage you to change the password as soon as possible.</p>";
sendTemplateMail(user, mailSubject, messageTitle, messageBody); sendTemplateMail(user, mailSubject, messageTitle, messageBody);
} }
@ -112,7 +115,7 @@ final public class NotificationService {
model.put("firstName", user.getFirstname()); model.put("firstName", user.getFirstname());
model.put("messageTitle", messageTitle); model.put("messageTitle", messageTitle);
model.put("messageBody", messageBody); model.put("messageBody", messageBody);
model.put("baseUrl", this.baseUrl); model.put("baseUrl", getBaseUrl());
model.put("supportEmail", mailer.getSupportEmail()); model.put("supportEmail", mailer.getSupportEmail());
mailer.sendEmail(mailer.getServerSenderEmail(), user.getEmail(), mailSubject, model, "baseLayout.vm"); mailer.sendEmail(mailer.getServerSenderEmail(), user.getEmail(), mailSubject, model, "baseLayout.vm");
@ -127,10 +130,6 @@ final public class NotificationService {
} }
public void setBaseUrl(String baseUrl) {
this.baseUrl = baseUrl;
}
public void setMailer(Mailer mailer) { public void setMailer(Mailer mailer) {
this.mailer = mailer; this.mailer = mailer;
} }
@ -227,6 +226,17 @@ final public class NotificationService {
return retValue; return retValue;
} }
public String getBaseUrl() {
if ("${site.baseurl}".equals(baseUrl)) {
baseUrl = DEFAULT_WISE_URL;
System.err.println("Warning: site.baseurl has not being configured. Mail site references could be not properly sent. Using :" + baseUrl);
}
return baseUrl;
}
public void setBaseUrl(String baseUrl) {
this.baseUrl = baseUrl;
}
} }

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC <!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <hibernate-mapping>

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC <!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <hibernate-mapping>

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC <!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <hibernate-mapping>

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC <!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <hibernate-mapping>

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC <!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <hibernate-mapping>

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC <!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <hibernate-mapping>

View File

@ -80,8 +80,10 @@ google.recaptcha.publicKey = 6LeQ4tISAAAAALzCGKNgRv8UqsDx7Cb0vq4wbJBr
# etc. # etc.
admin.user = admin@wisemapping.org admin.user = admin@wisemapping.org
# Site URL. This url will be used during sharing emails and public views. # Base URL where WiseMapping is deployed. By default, It will be automatically inferred.
site.baseurl = http://localhost:8080/wisemapping # If you are planning to put wisemapping behind an Apache using an Apache Proxy setup, you must enable this property.
# site.baseurl = http:///example.com:8080/wisemapping
# Site Homepage URL. This will be used as URL for homepage location. # Site Homepage URL. This will be used as URL for homepage location.
site.homepage = c/home site.homepage = c/home

View File

@ -4,7 +4,8 @@ log4j.logger.com.wisemapping=WARN,stdout,R
log4j.logger.org.springframework=WARN,stdout,R log4j.logger.org.springframework=WARN,stdout,R
log4j.logger.org.codehaus.jackson=WARN,stdout,R log4j.logger.org.codehaus.jackson=WARN,stdout,R
log4j.logger.org.hibernate=WARN,stdout,R log4j.logger.org.hibernate=WARN,stdout,R
log4j.logger.org.hibernate.SQL=true log4j.logger.org.hibernate.engine.StatefulPersistenceContext=ERROR,stdout,R
#log4j.logger.org.hibernate.SQL=WARN,stdout,R
# Stdout logger <20> # Stdout logger <20>

View File

@ -7,9 +7,6 @@
http://www.springframework.org/schema/context http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd"> http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:property-placeholder location="/WEB-INF/app.properties"/>
<bean id="wiseDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <bean id="wiseDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${database.driver}"/> <property name="driverClassName" value="${database.driver}"/>
<property name="url" value="${database.url}"/> <property name="url" value="${database.url}"/>

View File

@ -11,8 +11,6 @@
http://www.springframework.org/schema/context http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="/WEB-INF/app.properties"/>
<bean id="encoder" <bean id="encoder"
class="com.wisemapping.security.CustomPasswordEncoder"/> class="com.wisemapping.security.CustomPasswordEncoder"/>
@ -72,9 +70,4 @@
<property name="userService" ref="userService"/> <property name="userService" ref="userService"/>
<property name="adminUser" value="${admin.user}"/> <property name="adminUser" value="${admin.user}"/>
</bean> </bean>
<beans profile="heroku">
<context:property-placeholder location="/WEB-INF/heroku.properties"/>
</beans>
</beans> </beans>

View File

@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:property-placeholder location="/WEB-INF/app.properties" ignore-unresolvable="true"/>
<bean id="mailer" class="com.wisemapping.mail.Mailer" scope ="singleton"> <bean id="mailer" class="com.wisemapping.mail.Mailer" scope ="singleton">
<constructor-arg index="0" value="${mail.serverSendEmail}"/> <constructor-arg index="0" value="${mail.serverSendEmail}"/>

View File

@ -14,9 +14,7 @@
<context:component-scan base-package="com.wisemapping.ncontroller"/> <context:component-scan base-package="com.wisemapping.ncontroller"/>
<context:annotation-config/> <context:annotation-config/>
<mvc:annotation-driven/> <mvc:annotation-driven/>
<context:property-placeholder <context:property-placeholder location="/WEB-INF/app.properties" ignore-unresolvable="true"/>
location="/WEB-INF/app.properties"
/>
<!-- Interceptors Registration --> <!-- Interceptors Registration -->
<mvc:interceptors> <mvc:interceptors>
@ -38,18 +36,8 @@
</set> </set>
</property> </property>
</bean> </bean>
<bean id="userLocaleInterceptor" class="com.wisemapping.filter.UserLocaleInterceptor"> <bean id="userLocaleInterceptor" class="com.wisemapping.filter.UserLocaleInterceptor"/>
</bean> <bean id="requestInterceptor" class="com.wisemapping.filter.RequestPropertiesInterceptor"/>
<bean id="requestInterceptor" class="com.wisemapping.filter.RequestPropertiesInterceptor">
<property name="attributes">
<map>
<entry key="google.analytics.enabled" value="${google.analytics.enabled}"/>
<entry key="google.analytics.account" value="${google.analytics.account}"/>
<entry key="google.ads.enabled" value="${google.ads.enabled}"/>
<entry key="site.homepage" value="${site.homepage}"/>
</map>
</property>
</bean>
</mvc:interceptors> </mvc:interceptors>
@ -110,10 +98,4 @@
</list> </list>
</property> </property>
</bean> </bean>
<beans profile="heroku">
<context:property-placeholder
location="/WEB-INF/heroku.properties"
/>
</beans>
</beans> </beans>

View File

@ -16,7 +16,7 @@
<html> <html>
<head> <head>
<base href="${baseURL}/"> <base href="${requestScope['site.baseurl']}/">
<!--[if lt IE 9]> <!--[if lt IE 9]>
<meta http-equiv="X-UA-Compatible" content="chrome=1"> <meta http-equiv="X-UA-Compatible" content="chrome=1">
<![endif]--> <![endif]-->

View File

@ -2,6 +2,3 @@
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:set var="baseURL" value="${fn:replace(pageContext.request.requestURL, pageContext.request.requestURI, pageContext.request.contextPath)}" />

View File

@ -11,7 +11,7 @@
<%--@elvariable id="mapXml" type="com.wisemapping.model.User"--%> <%--@elvariable id="mapXml" type="com.wisemapping.model.User"--%>
<html> <html>
<head> <head>
<base href="${baseURL}/"> <base href="${requestScope['site.baseurl']}/">
<title><spring:message code="SITE.TITLE"/> - <c:out value="${mindmap.title}"/></title> <title><spring:message code="SITE.TITLE"/> - <c:out value="${mindmap.title}"/></title>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<meta http-equiv="X-UA-Compatible" content="chrome=1"> <meta http-equiv="X-UA-Compatible" content="chrome=1">

View File

@ -11,7 +11,7 @@
<html> <html>
<head> <head>
<base href="${baseURL}/"> <base href="{requestScope['site.baseurl']}/">
<title><spring:message code="SITE.TITLE"/> - ${mindmap.title} </title> <title><spring:message code="SITE.TITLE"/> - ${mindmap.title} </title>
<!--[if lt IE 9]> <!--[if lt IE 9]>

View File

@ -5,7 +5,7 @@
<html lang="en"> <html lang="en">
<head> <head>
<base href="${baseURL}/"> <base href="${requestScope['site.baseurl']}/">
<title><spring:message code="SITE.TITLE"/> - <spring:message code="MY_WISEMAPS"/></title> <title><spring:message code="SITE.TITLE"/> - <spring:message code="MY_WISEMAPS"/></title>
<!--[if lt IE 9]> <!--[if lt IE 9]>
<meta http-equiv="X-UA-Compatible" content="chrome=1"> <meta http-equiv="X-UA-Compatible" content="chrome=1">

View File

@ -10,7 +10,7 @@
<html> <html>
<head> <head>
<base href="${baseURL}/"> <base href="${requestScope['site.baseurl']}/">
<title><spring:message code="SITE.TITLE"/> - ${mindmap.title} </title> <title><spring:message code="SITE.TITLE"/> - ${mindmap.title} </title>
<!--[if lt IE 9]> <!--[if lt IE 9]>

View File

@ -10,7 +10,7 @@
<html> <html>
<head> <head>
<base href="${baseURL}/"> <base href="${requestScope['site.baseurl']}/">
<title> <title>
<spring:message code="SITE.TITLE"/>- <spring:message code="SITE.TITLE"/>-
<c:choose> <c:choose>