ZPublishCleanup
// hijack function to handle 412 edit conflict response
config.extensions.ServerSideSavingPlugin.saveTiddlerCallback = function(context, userParams) {
var tiddler = context.tiddler;
if(context.status || context.httpStatus == 1223) {
handle204(context);
} else {
if(context.httpStatus == 412) {
handle412(context);
} else {
displayMessage(config.extensions.ServerSideSavingPlugin.locale.saveError.format([tiddler.title, context.statusText]));
}
}
};
function handle204(context) {
var tiddler = context.tiddler;
if(tiddler.fields.changecount == context.changecount) { //# check for changes since save was triggered
tiddler.clearChangeCount();
} else if(tiddler.fields.changecount > 0) {
tiddler.fields.changecount -= context.changecount;
}
displayMessage(config.extensions.ServerSideSavingPlugin.locale.saved.format([tiddler.title]));
store.setDirty(false);
// from here is a custom bit for the copyPlugin; you'd want to handle via a custom 204 handler passed into the ServerSideSavingPlugin
if (tiddler.fields["sourceworkspace"]) {
newWorkspace = tiddler.fields['server.workspace'];
originalworkspace = tiddler.fields["sourceworkspace"];
tiddler.fields["server.workspace"] = originalworkspace;
tiddler.fields["server.page.revision"] = tiddler.fields["revisionsidinsource"];
if (tiddler.fields["publishlevel"] == 'move') {
store.removeTiddler(tiddler.title);
autoSaveChanges();
}
delete tiddler.fields['sourceworkspace'];
delete tiddler.fields["revisionsidinsource"];
}
}
function handle412(context) {
var tiddler = context.tiddler;
try {
var adaptor = config.extensions.ServerSideSavingPlugin.getTiddlerServerAdaptor(tiddler);
} catch(ex) {
return false;
}
if (!adaptor.host){
adaptor.host = context.host;
}
var context = {workspace: tiddler.fields["server.workspace"]};
var req = adaptor.getTiddler(tiddler.title, context, {}, onGetTiddler);
return req ? tiddler : false;
}
function onGetTiddler(context) {
var destTiddler = context.tiddler;
var sourceTiddler = store.getTiddler(destTiddler.title);
sourceTiddler.fields['server.page.revision'] = destTiddler.fields['server.page.revision'];
sourceTiddler.fields['server.workspace'] = destTiddler.fields['server.workspace'];
store.saveTiddler(sourceTiddler.title);
autoSaveChanges(false);
}
config.extensions.ServerSideSavingPlugin.saveTiddlerCallback = function(context, userParams) {
var tiddler = context.tiddler;
if(context.status || context.httpStatus == 1223) {
handle204(context);
} else {
if(context.httpStatus == 412) {
handle412(context);
} else {
displayMessage(config.extensions.ServerSideSavingPlugin.locale.saveError.format([tiddler.title, context.statusText]));
}
}
};
function handle204(context) {
var tiddler = context.tiddler;
if(tiddler.fields.changecount == context.changecount) { //# check for changes since save was triggered
tiddler.clearChangeCount();
} else if(tiddler.fields.changecount > 0) {
tiddler.fields.changecount -= context.changecount;
}
displayMessage(config.extensions.ServerSideSavingPlugin.locale.saved.format([tiddler.title]));
store.setDirty(false);
// from here is a custom bit for the copyPlugin; you'd want to handle via a custom 204 handler passed into the ServerSideSavingPlugin
if (tiddler.fields["sourceworkspace"]) {
newWorkspace = tiddler.fields['server.workspace'];
originalworkspace = tiddler.fields["sourceworkspace"];
tiddler.fields["server.workspace"] = originalworkspace;
tiddler.fields["server.page.revision"] = tiddler.fields["revisionsidinsource"];
if (tiddler.fields["publishlevel"] == 'move') {
store.removeTiddler(tiddler.title);
autoSaveChanges();
}
delete tiddler.fields['sourceworkspace'];
delete tiddler.fields["revisionsidinsource"];
}
}
function handle412(context) {
var tiddler = context.tiddler;
try {
var adaptor = config.extensions.ServerSideSavingPlugin.getTiddlerServerAdaptor(tiddler);
} catch(ex) {
return false;
}
if (!adaptor.host){
adaptor.host = context.host;
}
var context = {workspace: tiddler.fields["server.workspace"]};
var req = adaptor.getTiddler(tiddler.title, context, {}, onGetTiddler);
return req ? tiddler : false;
}
function onGetTiddler(context) {
var destTiddler = context.tiddler;
var sourceTiddler = store.getTiddler(destTiddler.title);
sourceTiddler.fields['server.page.revision'] = destTiddler.fields['server.page.revision'];
sourceTiddler.fields['server.workspace'] = destTiddler.fields['server.workspace'];
store.saveTiddler(sourceTiddler.title);
autoSaveChanges(false);
}
Comments