If a tag is deleted remotely and modified locally, keep local and display warning

This commit is contained in:
Dan Stillman 2008-12-27 07:24:55 +00:00
parent b3cca1f60e
commit 1d972ae92c
2 changed files with 35 additions and 13 deletions

View File

@ -51,11 +51,8 @@ var Zotero_Merge_Window = new function () {
} }
break; break;
case 'collection':
break;
default: default:
throw ("Unsupported merge object type '" + type throw ("Unsupported merge object type '" + _mergeGroup.type
+ "' in Zotero_Merge_Window.init()"); + "' in Zotero_Merge_Window.init()");
} }

View File

@ -1852,7 +1852,7 @@ Zotero.Sync.Server.Data = new function() {
// //
// Handle deleted objects // Handle remotely deleted objects
// //
if (xml.deleted && xml.deleted[types]) { if (xml.deleted && xml.deleted[types]) {
Zotero.debug("Processing remotely deleted " + types); Zotero.debug("Processing remotely deleted " + types);
@ -1869,19 +1869,37 @@ Zotero.Sync.Server.Data = new function() {
continue; continue;
} }
var modDate = Zotero.Date.sqlToDate(obj.dateModified, true);
// Local object hasn't been modified -- delete
if (modDate < lastLocalSyncDate) {
toDelete.push(obj.id);
continue;
}
// Local object has been modified since last sync -- reconcile // Local object has been modified since last sync -- reconcile
var now = Zotero.Date.sqlToDate(obj.dateModified, true); switch (type) {
if (now >= lastLocalSyncDate) { case 'item':
// TODO: order reconcile by parent/child // TODO: order reconcile by parent/child
toReconcile.push([obj, 'deleted']); toReconcile.push([obj, 'deleted']);
} break;
// Local object hasn't been modified -- delete
else { case 'tag':
toDelete.push(obj.id); var msg = _generateAutoChangeMessage(
type, obj.name, null
);
alert(msg);
continue;
default:
alert('Delete reconciliation unimplemented for ' + types);
throw ('Delete reconciliation unimplemented for ' + types);
} }
} }
} }
// //
// Reconcile objects that have changed locally and remotely // Reconcile objects that have changed locally and remotely
// //
@ -2246,6 +2264,10 @@ Zotero.Sync.Server.Data = new function() {
localName = "[deleted]"; localName = "[deleted]";
var localDelete = true; var localDelete = true;
} }
else if (remoteName === null) {
remoteName = "[deleted]";
var remoteDelete = true;
}
// TODO: localize // TODO: localize
var msg = "A " + itemType + " has changed both locally and " var msg = "A " + itemType + " has changed both locally and "
@ -2257,6 +2279,9 @@ Zotero.Sync.Server.Data = new function() {
if (localDelete) { if (localDelete) {
msg += "The remote version has been kept."; msg += "The remote version has been kept.";
} }
else if (remoteDelete) {
msg += "The local version has been kept.";
}
else { else {
var moreRecent = remoteMoreRecent ? remoteName : localName; var moreRecent = remoteMoreRecent ? remoteName : localName;
msg += "The most recent version, '" + moreRecent + "', has been kept."; msg += "The most recent version, '" + moreRecent + "', has been kept.";