If a tag is deleted remotely and modified locally, keep local and display warning
This commit is contained in:
parent
b3cca1f60e
commit
1d972ae92c
|
@ -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()");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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.";
|
||||||
|
|
Loading…
Reference in New Issue
Block a user