- Run long tag fixer on first sync error, and then check locally for tags > 255 characters to avoid repeated sync attempts

- Don't run long tag fixer on background sync
This commit is contained in:
Dan Stillman 2009-05-29 20:47:44 +00:00
parent 93703c68d1
commit 2eb5416620
2 changed files with 30 additions and 23 deletions

View file

@ -1,6 +1,6 @@
var Zotero_Long_Tag_Fixer = new function () {
var _oldTag = window.arguments[0];
var _callback = window.arguments[1];
var _dataOut = window.arguments[1];
this.init = function () {
document.getElementById('zotero-old-tag').value = _oldTag;
@ -103,9 +103,7 @@ var Zotero_Long_Tag_Fixer = new function () {
this.cancel = function () {
if (_callback) {
_callback(false);
}
_dataOut.result = false;
}
@ -172,9 +170,7 @@ var Zotero_Long_Tag_Fixer = new function () {
break;
}
if (_callback) {
_callback(true);
}
_dataOut.result = true;
}
catch (e) {

View file

@ -1480,23 +1480,34 @@ Zotero.Sync.Server = new function () {
break;
case 'TAG_TOO_LONG':
var tag = xmlhttp.responseXML.firstChild.getElementsByTagName('tag');
if (tag.length) {
Zotero.DB.rollbackAllTransactions();
var tag = tag[0].firstChild.nodeValue;
setTimeout(function () {
var callback = function (success) {
if (success) {
Zotero.Sync.Runner.sync();
}
};
if (!Zotero.Sync.Runner.background) {
var tag = xmlhttp.responseXML.firstChild.getElementsByTagName('tag');
if (tag.length) {
Zotero.DB.rollbackAllTransactions();
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var lastWin = wm.getMostRecentWindow("navigator:browser");
lastWin.openDialog('chrome://zotero/content/longTagFixer.xul', '', 'chrome,modal,centerscreen', tag, callback);
}, 1);
var tag = tag[0].firstChild.nodeValue;
setTimeout(function () {
var callback = function () {
var sql = "SELECT DISTINCT name FROM itemTags NATURAL JOIN tags WHERE LENGTH(name)>255 LIMIT 1";
var tag = Zotero.DB.valueQuery(sql);
if (tag) {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var lastWin = wm.getMostRecentWindow("navigator:browser");
var dataOut = { result: null };
lastWin.openDialog('chrome://zotero/content/longTagFixer.xul', '', 'chrome,modal,centerscreen', tag, dataOut);
if (dataOut.result) {
callback();
}
}
else {
Zotero.Sync.Runner.sync();
}
};
callback();
}, 1);
}
}
break;
}