commit aeef8ecc151e4e4e48b74901a1fd3d16710cb819
parent b1584a1eaee5262101ff8c48d195edaa1221665c
Author: Simon Kornblith <simon@simonster.com>
Date: Thu, 30 Jun 2011 06:36:48 +0000
Use lastUpdated dates to determine whether to update translators
Diffstat:
3 files changed, 17 insertions(+), 18 deletions(-)
diff --git a/chrome/content/zotero/xpcom/connector/repo.js b/chrome/content/zotero/xpcom/connector/repo.js
@@ -42,17 +42,9 @@ Zotero.Repo = new function() {
};
/**
- * Reset all translators and code
- */
- this.reset = function(callback) {
- Zotero.Prefs.set("connector.repo.lastCheck.repoTime", 0);
- this.update(true);
- };
-
- /**
* Force updating translators
*/
- var update = this.update = function(reset, callback) {
+ var update = this.update = function(reset) {
_updateFromStandalone(true, reset);
};
@@ -121,7 +113,7 @@ Zotero.Repo = new function() {
*/
function _updateFromRepo(reset, callback) {
var url = ZOTERO_CONFIG.REPOSITORY_URL+"/metadata?last="+
- Zotero.Prefs.get("connector.repo.lastCheck.repoTime");
+ (reset ? "0" : Zotero.Prefs.get("connector.repo.lastCheck.repoTime"));
Zotero.HTTP.doGet(url, function(xmlhttp) {
var success = xmlhttp.status === 200;
diff --git a/chrome/content/zotero/xpcom/connector/translator.js b/chrome/content/zotero/xpcom/connector/translator.js
@@ -244,9 +244,19 @@ Zotero.Translators = new function() {
var newTranslator = new Zotero.Translator(newMetadata[i]);
if(_translators.hasOwnProperty(newTranslator.translatorID)) {
- if(_translators[newTranslator.translatorID].lastUpdated !== newTranslator.lastUpdated) {
+ var oldLastUpdated = _translators[newTranslator.translatorID].lastUpdated;
+
+ // check whether translator has changed
+ if(oldLastUpdated !== newTranslator.lastUpdated) {
+ // check whether newTranslator is actually newer than the existing
+ // translator, and if not, don't update
+ if(Zotero.Date.sqlToDate(newTranslator.lastUpdated) < Zotero.Date.sqlToDate(oldLastUpdated)) {
+ Zotero.debug("Translators: Received older version of "+newTranslator.label+" from repo ("+newTranslator.lastUpdated+" vs. "+oldLastUpdated+")");
+ continue;
+ }
+
if(!Zotero.isFx) {
- // if lastUpdated does not match between old and new translator
+ // if lastUpdated does not match between old and new translator,
// invalidate translator code cache
delete localStorage["translatorCode-"+newTranslator.translatorID];
}
@@ -336,7 +346,7 @@ Zotero.Translators.CodeGetter.prototype.getCodeFor = function(i) {
}
const TRANSLATOR_REQUIRED_PROPERTIES = ["translatorID", "translatorType", "label", "creator", "target",
- "priority"];
+ "priority", "lastUpdated"];
var TRANSLATOR_PASSING_PROPERTIES = TRANSLATOR_REQUIRED_PROPERTIES.concat(["displayOptions", "configOptions",
"browserSupport", "code", "runMode"]);
var TRANSLATOR_SAVE_PROPERTIES = TRANSLATOR_REQUIRED_PROPERTIES.concat(["browserSupport"]);
diff --git a/chrome/content/zotero/xpcom/server_connector.js b/chrome/content/zotero/xpcom/server_connector.js
@@ -215,17 +215,14 @@ Zotero.Server.Connector.GetTranslators.prototype = {
// Translator data
var responseData = [];
- // TODO only send necessary translators
var translators = Zotero.Translators.getAll();
for each(var translator in translators) {
let serializableTranslator = {};
for each(var key in ["translatorID", "translatorType", "label", "creator", "target",
- "priority", "browserSupport"]) {
+ "minVersion", "maxVersion", "configOptions", "displayOptions", "priority",
+ "browserSupport", "inRepository", "lastUpdated"]) {
serializableTranslator[key] = translator[key];
}
-
- // Do not pass targetless translators that do not support this browser (since that
- // would mean passing each page back to Zotero)
responseData.push(serializableTranslator);
}