wisemapping-open-source/wise-editor/doc/ImplementingPersistence.md

88 lines
3.2 KiB
Markdown
Raw Normal View History

2012-02-17 14:37:36 +01:00
# Implementing custom storage
To implement a custom backend, you need to create your own implementation of the mindplot.PersistenceManager class.
Here is an example skeleton::
function createStorageManager(mindplot) {
mindplot.RestStorageManager = new Class({
Extends:mindplot.PersistenceManager,
initialize: function(url) {
this.parent();
this.backendUrl = url;
},
saveMapXml : function(mapId, mapXml, pref, saveHistory, events) {
var url = this.backendUrl + mapId;
var xmlRequest = new Request({
url: url,
method: 'post',
async: false,
onSuccess: function(responseText) {
events.onSuccess();
},
onError: function (text, error) {
console.log("Error saving mindmap to: " + url, text, error);
events.onError();
}
});
xmlRequest.send();
},
loadMapDom : function(mapId) {
var xmlRequest = new Request({
url: this.backendUrl + mapId,
method: 'get',
async: false,
onSuccess: function(responseText) {
xml = responseText;
}
});
xmlRequest.send();
// If I could not load it from a file, hard code one.
if (xml == null) {
throw "Map could not be loaded";
}
2012-05-27 23:15:46 +02:00
var parser = new DOMParser();
return parser.parseFromString(xml, "text/xml");
}
2012-02-17 14:37:36 +01:00
}
);
return new mindplot.RestStorageManager(url);
}
In your script for loading the mindmap you add a call to the callback into the loadcomplete method::
$(document).addEvent('loadcomplete', function(resource) {
//Asset.javascript("{{ asset('bundles/fpgadmin/js/FpgMindmapPersistence.js')}}");
// Options has been defined in by a external ile ?
var options = {
'persistenceManager' : createStorageManager(mindplot, "http://localhost/my/rest/interface");
viewPort: {
height: parseInt(window.innerHeight - 70), // Footer and Header
width: parseInt(window.innerWidth)
},
size : {
height: parseInt(screen.height),
width: parseInt(screen.width)
},
"readOnly":false,
"zoom":1.3,
"container":"mindplot"
"mapId" : "myMapId"
};
var designer = buildDesigner(options);
var persistence = mindplot.PersistenceManager.getInstance();
var mindmap;
try {
mindmap = persistence.load(mapId);
} catch(e) {
// If the map could not be loaded, create a new empty map...
mindmap = mindplot.model.Mindmap.buildEmpty(mapId);
}
designer.loadMap(mindmap);
});