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
set -x
set -e
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
mv $WISE_WEBAPP_DIR/WEB-INF/app.properties2 $WISE_WEBAPP_DIR/WEB-INF/app.properties
mkdir $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/
@ -54,6 +52,7 @@ cp $BASE_DIR/wisemapping.xml $JETTY_DIR/contexts/
# Distribute scripts
cp -r $BASE_DIR/../wise-webapp/src/test/sql $TARGET_DIR/wisemapping-$WISE_VERSION/config
cp ./start.sh ${JETTY_DIR}/
# Store 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 ...
Element.NativeEvents.dragenter = 2;
Element.NativeEvents.dragexit = 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();
// @Todo: Images support on progress ...
// Element.NativeEvents.dragenter = 2;
// Element.NativeEvents.dragexit = 2;
// Element.NativeEvents.dragover = 2;
// Element.NativeEvents.drop = 2;
//
var files = evt.event.dataTransfer.files;
console.log(event);
var count = files.length;
// Only call the handler if 1 or more files was dropped.
if (count > 0) {
var model = this.getMindmap().createNode();
model.setImageSize(80, 43);
model.setMetadata("{'media':'video,'url':'http://www.youtube.com/watch?v=P3FrXftyuzw&feature=g-vrec&context=G2b4ab69RVAAAAAAAAAA'}");
model.setImageUrl("images/logo-small.png");
model.setShapeType(mindplot.model.TopicShape.IMAGE);
var position = screenManager.getWorkspaceMousePosition(evt);
model.setPosition(position.x, position.y);
model.setPosition(100, 100);
this._actionDispatcher.addTopics([model]);
}
}.bind(this));
// 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;
// console.log(event);
//
// var count = files.length;
//
// // Only call the handler if 1 or more files was dropped.
// if (count > 0) {
//
// var model = this.getMindmap().createNode();
// model.setImageSize(80, 43);
// model.setMetadata("{'media':'video,'url':'http://www.youtube.com/watch?v=P3FrXftyuzw&feature=g-vrec&context=G2b4ab69RVAAAAAAAAAA'}");
// model.setImageUrl("images/logo-small.png");
// model.setShapeType(mindplot.model.TopicShape.IMAGE);
//
// 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) {
$assert(topic, "topic can not be null");
$assert(typeof topic.getId() == "number", "id is not a number:" + topic.getId());
this._topics.push(topic);
},

View File

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

View File

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

View File

@ -32,19 +32,27 @@ mindplot.commands.GenericFunctionCommand = new Class({
execute:function (commandContext) {
if (!this.applied) {
// @Todo: Debug hack. Remove
var topics;
var topics = null;
try {
topics = commandContext.findTopics(this._topicsId);
} 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) {
var oldValue = this._commandFunc(topic, this._value);
this._oldValues.push(oldValue);
}.bind(this));
}
this.applied = true;
} else {
throw "Command can not be applied two times in a row.";
}

View File

@ -17,7 +17,7 @@
*/
web2d.peer.svg.ElementPeer = new Class({
initialize :function(svgElement) {
initialize:function (svgElement) {
this._native = svgElement;
if (!this._native.addEvent) {
// Hack bug: https://bugzilla.mozilla.org/show_bug.cgi?id=740811
@ -26,16 +26,16 @@ web2d.peer.svg.ElementPeer = new Class({
}
}
this._size = {width:1,height:1};
this._size = {width:1, height:1};
this._changeListeners = {};
// http://support.adobe.com/devsup/devsup.nsf/docs/50493.htm
},
setChildren : function(children) {
setChildren:function (children) {
this._children = children;
},
getChildren : function() {
getChildren:function () {
var result = this._children;
if (!$defined(result)) {
result = [];
@ -44,15 +44,15 @@ web2d.peer.svg.ElementPeer = new Class({
return result;
},
getParent : function() {
getParent:function () {
return this._parent;
},
setParent : function(parent) {
setParent:function (parent) {
this._parent = parent;
},
appendChild : function(elementPeer) {
appendChild:function (elementPeer) {
// Store parent and child relationship.
elementPeer.setParent(this);
var children = this.getChildren();
@ -66,20 +66,17 @@ web2d.peer.svg.ElementPeer = new Class({
},
removeChild : function(elementPeer) {
removeChild:function (elementPeer) {
// Store parent and child relationship.
elementPeer.setParent(null);
var children = this.getChildren();
// Remove from children array ...
var length = children.length;
var oldLength = children.length;
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.
this._native.removeChild(elementPeer._native);
},
@ -88,23 +85,23 @@ web2d.peer.svg.ElementPeer = new Class({
* http://www.w3.org/TR/DOM-Level-3-Events/events.html
* http://developer.mozilla.org/en/docs/addEvent
*/
addEvent : function(type, listener) {
addEvent:function (type, listener) {
this._native.addEvent(type, listener);
},
fireEvent : function(type, event) {
fireEvent:function (type, event) {
this._native.fireEvent(type, event);
},
cloneEvents : function(from) {
cloneEvents:function (from) {
this._native.cloneEvents(from);
},
removeEvent : function(type, listener) {
removeEvent:function (type, listener) {
this._native.removeEvent(type, listener);
},
setSize : function(width, height) {
setSize:function (width, height) {
if ($defined(width) && this._size.width != parseInt(width)) {
this._size.width = parseInt(width);
this._native.setAttribute('width', parseInt(width));
@ -118,11 +115,11 @@ web2d.peer.svg.ElementPeer = new Class({
web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle");
},
getSize : function() {
return {width:this._size.width,height:this._size.height};
getSize:function () {
return {width:this._size.width, height:this._size.height};
},
setFill : function(color, opacity) {
setFill:function (color, opacity) {
if ($defined(color)) {
this._native.setAttribute('fill', color);
}
@ -131,22 +128,22 @@ web2d.peer.svg.ElementPeer = new Class({
}
},
getFill : function() {
getFill:function () {
var color = this._native.getAttribute('fill');
var opacity = this._native.getAttribute('fill-opacity');
return {color:color, opacity:Number(opacity)};
},
getStroke : function() {
getStroke:function () {
var vmlStroke = this._native;
var color = vmlStroke.getAttribute('stroke');
var dashstyle = this._stokeStyle;
var opacity = vmlStroke.getAttribute('stroke-opacity');
var width = vmlStroke.getAttribute('stroke-width');
return {color: color, style: dashstyle, opacity: opacity, width: width};
return {color:color, style:dashstyle, opacity:opacity, width:width};
},
setStroke : function(width, style, color, opacity) {
setStroke:function (width, style, color, opacity) {
if ($defined(width)) {
this._native.setAttribute('stroke-width', width + "px");
}
@ -182,16 +179,16 @@ web2d.peer.svg.ElementPeer = new Class({
/*
* style='visibility: visible'
*/
setVisibility : function(isVisible) {
setVisibility:function (isVisible) {
this._native.setAttribute('visibility', (isVisible) ? 'visible' : 'hidden');
},
isVisible : function() {
isVisible:function () {
var visibility = this._native.getAttribute('visibility');
return !(visibility == 'hidden');
},
updateStrokeStyle : function() {
updateStrokeStyle:function () {
var strokeStyle = this._stokeStyle;
if (this.getParent()) {
if (strokeStyle && strokeStyle != 'solid') {
@ -200,7 +197,7 @@ web2d.peer.svg.ElementPeer = new Class({
}
},
attachChangeEventListener : function(type, listener) {
attachChangeEventListener:function (type, listener) {
var listeners = this.getChangeEventListeners(type);
if (!$defined(listener)) {
throw "Listener can not be null";
@ -208,7 +205,7 @@ web2d.peer.svg.ElementPeer = new Class({
listeners.push(listener);
},
getChangeEventListeners : function(type) {
getChangeEventListeners:function (type) {
var listeners = this._changeListeners[type];
if (!$defined(listeners)) {
listeners = [];
@ -217,7 +214,7 @@ web2d.peer.svg.ElementPeer = new Class({
return listeners;
},
positionRelativeTo : function(elem, options) {
positionRelativeTo:function (elem, options) {
options = !$defined(options) ? {} : options;
options['relativeTo'] = $(this._native);
elem.position(options);
@ -227,18 +224,18 @@ web2d.peer.svg.ElementPeer = new Class({
/**
* Move element to the front
*/
moveToFront : function() {
moveToFront:function () {
this._native.parentNode.appendChild(this._native);
},
/**
* Move element to the back
*/
moveToBack : function() {
moveToBack:function () {
this._native.parentNode.insertBefore(this._native, this._native.parentNode.firstChild);
},
setCursor : function(type) {
setCursor:function (type) {
this._native.style.cursor = type;
}
});
@ -246,5 +243,5 @@ web2d.peer.svg.ElementPeer = new Class({
web2d.peer.svg.ElementPeer.prototype.svgNamespace = 'http://www.w3.org/2000/svg';
web2d.peer.svg.ElementPeer.prototype.linkNamespace = 'http://www.w3.org/1999/xlink';
web2d.peer.svg.ElementPeer.prototype.__stokeStyleToStrokDasharray = {solid:[],dot:[1,3],dash:[4,3],longdash:[10,2],dashdot:[5,3,1,3]};
web2d.peer.svg.ElementPeer.prototype.__stokeStyleToStrokDasharray = {solid:[], dot:[1, 3], dash:[4, 3], longdash:[10, 2], dashdot:[5, 3, 1, 3]};

View File

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

View File

@ -1,196 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="tango" name="basic">
<topic id="0" central="true" position="0,0" bgColor="#99ffff"
fontStyle="Arial;16;#ff3300;bold;;" shape="rounded rectagle">
<text><![CDATA[120924 Programme]]></text>
<note>
<text><![CDATA[]]></text>
</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>
<map name="welcome" version="tango">
<topic central="true" text="Welcome To WiseMapping" id="1" fontStyle=";;#dfcfe6;;;" bgColor="#0a0a08">
<topic position="178,-130" order="0" text="Try it Now!" id="11" fontStyle=";;#ffffff;;;" bgColor="#250be3"
brColor="#080559">
<topic position="272,-156" order="0" text="Double Click" id="12" fontStyle=";;#001be6;;italic;"/>
<topic position="274,-130" order="1" text=" INS to insert" id="13" fontStyle=";;#001be6;;italic;"/>
<topic position="285,-104" order="2" text="Drag map to move" id="14" fontStyle=";;#001be6;;italic;"/>
</topic>
<topic id="4" position="380,-100" order="1"
fontStyle="Arial;12;;;;" shape="line">
<text><![CDATA[à partir des plans d'actions]]></text>
<topic position="-189,-52" order="1" text="Productivity" id="2" fontStyle=";;#104f11;;;" bgColor="#d9b518">
<icon id="chart_bar"/>
<topic position="-310,-104" order="0" text="Share your ideas" id="3">
<icon id="bulb_light_on"/>
</topic>
<topic id="5" position="380,-75" order="2"
fontStyle="Arial;12;;;;" shape="line">
<text><![CDATA[donner la parole aux référents prévus, en demandant des exemples]]></text>
<topic position="-299,-25" order="2" text="Brainstorming" id="4"/>
<topic position="-283,1" order="3" text="Visual " id="5"/>
<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 id="6" position="380,-50" order="3"
fontStyle="Arial;12;;;;" shape="line">
<text><![CDATA[faire compléter par les autres participants]]></text>
<topic position="185,-39" order="2" text="Mind Mapping" id="6" fontStyle=";;#602378;;;" bgColor="#edabff">
<topic position="303,-78" order="0" text="Share with Collegues" id="7"/>
<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 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 id="7" position="290,-50" order="1" brColor="#808080"
bgColor="#99ffff" fontStyle="Arial;12;#0000cc;bold;;" shape="rounded rectagle">
<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 position="-271,79" order="2" text="Share" id="25"/>
<topic position="-282,105" order="3" text="Easy to use" id="26"/>
</topic>
<topic id="10" position="470,-200" order="1"
bgColor="#ff9999" shape="line">
<text><![CDATA[Rouge 25%]]></text>
</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 position="171,91" order="4" text="Features" id="15">
<topic position="266,26" order="0" text="Links to Sites" id="16" fontStyle=";6;;;;">
<link url="http://www.digg.com" type="url"/>
</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 position="272,156" order="5" text="History Changes" id="21">
<icon id="arrowc_turn_left"/>
</topic>
</topic>
</topic>

View File

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

View File

@ -18,29 +18,51 @@
package com.wisemapping.filter;
import com.wisemapping.exceptions.GoogleChromeFrameRequiredException;
import com.wisemapping.exceptions.UnsupportedBrowserException;
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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
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 {
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;
}
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.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import javax.servlet.http.HttpServletRequest;
import java.io.PrintWriter;
@ -37,12 +38,14 @@ import java.util.Map;
final public class NotificationService {
public static final String DEFAULT_WISE_URL = "http://localhost:8080/wisemapping";
@Autowired
private Mailer mailer;
private String baseUrl;
private NotifierFilter notificationFilter;
private String baseUrl;
public NotificationService() {
this.notificationFilter = new NotifierFilter();
}
@ -64,8 +67,8 @@ final public class NotificationService {
model.put("mindmap", mindmap);
model.put("message", "message");
model.put("ownerName", user.getFirstname());
model.put("mapEditUrl", baseUrl + "/c/maps/" + mindmap.getId() + "/edit");
model.put("baseUrl", baseUrl);
model.put("mapEditUrl", getBaseUrl() + "/c/maps/" + mindmap.getId() + "/edit");
model.put("baseUrl", getBaseUrl());
model.put("senderMail", user.getEmail());
model.put("message", message);
model.put("supportEmail", mailer.getSupportEmail());
@ -83,7 +86,7 @@ final public class NotificationService {
final String messageBody =
"<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>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);
}
@ -112,7 +115,7 @@ final public class NotificationService {
model.put("firstName", user.getFirstname());
model.put("messageTitle", messageTitle);
model.put("messageBody", messageBody);
model.put("baseUrl", this.baseUrl);
model.put("baseUrl", getBaseUrl());
model.put("supportEmail", mailer.getSupportEmail());
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) {
this.mailer = mailer;
}
@ -227,6 +226,17 @@ final public class NotificationService {
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"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//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>

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//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>

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//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>

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//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>

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//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>

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//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>

View File

@ -80,8 +80,10 @@ google.recaptcha.publicKey = 6LeQ4tISAAAAALzCGKNgRv8UqsDx7Cb0vq4wbJBr
# etc.
admin.user = admin@wisemapping.org
# Site URL. This url will be used during sharing emails and public views.
site.baseurl = http://localhost:8080/wisemapping
# Base URL where WiseMapping is deployed. By default, It will be automatically inferred.
# 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 = 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.codehaus.jackson=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>

View File

@ -7,9 +7,6 @@
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"/>
<bean id="wiseDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${database.driver}"/>
<property name="url" value="${database.url}"/>

View File

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

View File

@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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
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">
<constructor-arg index="0" value="${mail.serverSendEmail}"/>

View File

@ -14,9 +14,7 @@
<context:component-scan base-package="com.wisemapping.ncontroller"/>
<context:annotation-config/>
<mvc:annotation-driven/>
<context:property-placeholder
location="/WEB-INF/app.properties"
/>
<context:property-placeholder location="/WEB-INF/app.properties" ignore-unresolvable="true"/>
<!-- Interceptors Registration -->
<mvc:interceptors>
@ -38,18 +36,8 @@
</set>
</property>
</bean>
<bean id="userLocaleInterceptor" class="com.wisemapping.filter.UserLocaleInterceptor">
</bean>
<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>
<bean id="userLocaleInterceptor" class="com.wisemapping.filter.UserLocaleInterceptor"/>
<bean id="requestInterceptor" class="com.wisemapping.filter.RequestPropertiesInterceptor"/>
</mvc:interceptors>
@ -110,10 +98,4 @@
</list>
</property>
</bean>
<beans profile="heroku">
<context:property-placeholder
location="/WEB-INF/heroku.properties"
/>
</beans>
</beans>

View File

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

View File

@ -2,6 +2,3 @@
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@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"--%>
<html>
<head>
<base href="${baseURL}/">
<base href="${requestScope['site.baseurl']}/">
<title><spring:message code="SITE.TITLE"/> - <c:out value="${mindmap.title}"/></title>
<!--[if lt IE 9]>
<meta http-equiv="X-UA-Compatible" content="chrome=1">

View File

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

View File

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

View File

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

View File

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