From 4f6fbf364da71636b64ca320a001f53a009c4d58 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Mon, 15 Apr 2013 02:56:32 -0400 Subject: [PATCH] Use renamed-styles.json and flag from repo to replace renamed styles Currently updating renamed-styles.json is a manual process. --- chrome/content/zotero/xpcom/schema.js | 23 +++++------- chrome/content/zotero/xpcom/style.js | 34 ++++++++++-------- resource/schema/renamed-styles.json | 52 +++++++++++++++++++++++++++ styles | 2 +- 4 files changed, 82 insertions(+), 29 deletions(-) create mode 100644 resource/schema/renamed-styles.json diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js index 74b6f189df..97c1b14169 100644 --- a/chrome/content/zotero/xpcom/schema.js +++ b/chrome/content/zotero/xpcom/schema.js @@ -31,8 +31,8 @@ Zotero.Schema = new function(){ var _dbVersions = []; var _schemaVersions = []; var _repositoryTimer; - var _remoteUpdateInProgress = false, - _localUpdateInProgress = false; + var _remoteUpdateInProgress = false, _localUpdateInProgress = false; + var _renamedStylesByNew = null; var self = this; @@ -597,6 +597,8 @@ Zotero.Schema = new function(){ // Delete renamed/obsolete files case 'chicago-note.csl': case 'mhra_note_without_bibliography.csl': + case 'mhra.csl': + case 'mla.csl': toDelete.push(file); continue; @@ -1714,6 +1716,7 @@ Zotero.Schema = new function(){ xmlnode.normalize(); var uri = xmlnode.getAttribute('id'); + var shortName = uri.replace("http://www.zotero.org/styles/", ""); // Delete local style if CSL code is empty if (!xmlnode.firstChild) { @@ -1724,18 +1727,10 @@ Zotero.Schema = new function(){ return; } - // Remove renamed styles - if (uri == 'http://www.zotero.org/styles/american-medical-association') { - var oldID = 'http://www.zotero.org/styles/ama'; - var style = Zotero.Styles.get(oldID); - if (style && style.file.exists()) { - Zotero.debug("Deleting renamed style '" + oldID + "'"); - style.file.remove(false); - } - } - else if (uri == 'http://www.zotero.org/styles/national-library-of-medicine') { - var oldID = 'http://www.zotero.org/styles/nlm'; - var style = Zotero.Styles.get(oldID); + // Remove renamed styles, as instructed by the server + var oldID = xmlnode.getAttribute('oldID'); + if (oldID) { + var style = Zotero.Styles.get(oldID, true); if (style && style.file.exists()) { Zotero.debug("Deleting renamed style '" + oldID + "'"); style.file.remove(false); diff --git a/chrome/content/zotero/xpcom/style.js b/chrome/content/zotero/xpcom/style.js index a8c3ab24f2..1484c2f79e 100644 --- a/chrome/content/zotero/xpcom/style.js +++ b/chrome/content/zotero/xpcom/style.js @@ -32,6 +32,8 @@ Zotero.Styles = new function() { var _initialized = false; var _styles, _visibleStyles, _cacheTranslatorData; + var _renamedStyles = null; + Components.utils.import("resource://zotero/q.js"); Components.utils.import("resource://gre/modules/Services.jsm"); @@ -116,22 +118,26 @@ Zotero.Styles = new function() { /** * Gets a style with a given ID * @param {String} id + * @param {Boolean} skipMappings Don't automatically return renamed style */ - this.get = function(id) { - // Map some obsolete styles to current ones - const MAPPINGS = { - "http://www.zotero.org/styles/chicago-note": "http://www.zotero.org/styles/chicago-note-bibliography", - "http://www.zotero.org/styles/mhra_note_without_bibliography": "http://www.zotero.org/styles/mhra", - "http://www.zotero.org/styles/aaa": "http://www.zotero.org/styles/american-anthropological-association", - "http://www.zotero.org/styles/ama": "http://www.zotero.org/styles/american-medical-association", - "http://www.zotero.org/styles/nlm": "http://www.zotero.org/styles/national-library-of-medicine" - }; - + this.get = function(id, skipMappings) { if(!_initialized) this.init(); - - if(MAPPINGS.hasOwnProperty(id) && _styles[MAPPINGS[id]]) { - Zotero.debug("Mapping " + id + " to " + MAPPINGS[id]); - return _styles[MAPPINGS[id]]; + + // Map some obsolete styles to current ones + if(!_renamedStyles) { + _renamedStyles = JSON.parse(Zotero.File.getContentsFromURL( + "resource://zotero/schema/renamed-styles.json" + )); + } + + if(!skipMappings) { + var prefix = "http://www.zotero.org/styles/"; + var shortName = id.replace(prefix, ""); + if(_renamedStyles.hasOwnProperty(shortName) && _styles[prefix + _renamedStyles[shortName]]) { + let newID = prefix + _renamedStyles[shortName]; + Zotero.debug("Mapping " + id + " to " + newID); + return _styles[newID]; + } } return _styles[id] || false; diff --git a/resource/schema/renamed-styles.json b/resource/schema/renamed-styles.json new file mode 100644 index 0000000000..7aa81f5ea6 --- /dev/null +++ b/resource/schema/renamed-styles.json @@ -0,0 +1,52 @@ +{ + "aaa": "american-anthropological-association", + "ama": "american-medical-association", + "american-journal-of-cardiology": "the-american-journal-of-cardiology", + "american-journal-of-pathology": "the-american-journal-of-pathology", + "amiens": "universite-de-picardie-jules-verne-ufr-de-medecine", + "annalen-des-naturhistorischen-museums-wien": "annalen-des-naturhistorischen-museums-in-wien", + "apa5th": "apa-5th-edition", + "apsa": "american-political-science-association", + "asa": "american-sociological-association", + "chicago-note": "chicago-note-bibliography", + "cuadernos-filologia-clasica": "cuadernos-de-filologia-clasica", + "febs-journal": "the-febs-journal", + "fems": "federation-of-european-microbiological-societies", + "geological-society-of-america": "the-geological-society-of-america", + "gost-r-7-0-5-2008-csl-1-0": "gost-r-7-0-5-2008", + "graefes-archive-and-experimental-ophthalmology": "graefes-archive-for-clinical-and-experimental-ophthalmology", + "harvard-anglia-ruskin": "harvard-anglia-ruskin-university", + "harvard-sheffield": "harvard-the-university-of-sheffield-town-and-regional-planning", + "harvard-sheffield1": "harvard-the-university-of-sheffield-school-of-east-asian-studies", + "harvard-university-of-northampton": "harvard-the-university-of-northampton", + "harvard-university-west-london": "harvard-university-of-west-london", + "harvard1-unisa-gbfe": "harvard-gesellschaft-fur-bildung-und-forschung-in-europa", + "harvard3": "harvard-swinburne-university-of-technology", + "hwr-berlin": "hochschule-fur-wirtschaft-und-recht-berlin", + "ieee-w-url": "ieee-with-url", + "institute-of-electronics-information-and-communication-engineers": "the-institute-of-electronics-information-and-communication-engineers", + "international-journal-of-psychoanalysis": "the-international-journal-of-psychoanalysis", + "international-journal-of-tropical-biology-and-conservation": "revista-de-biologia-tropical", + "journal-of-clinical-endocrinology-and-metabolism": "the-journal-of-clinical-endocrinology-and-metabolism", + "journal-of-clinical-investigation": "the-journal-of-clinical-investigation", + "journal-of-hellenic-studies": "the-journal-of-hellenic-studies", + "journal-of-juristic-papyrology": "the-journal-of-juristic-papyrology", + "journal-of-pharmacology-and-experimental-therapeutics": "the-journal-of-pharmacology-and-experimental-therapeutics", + "journal-of-the-torrey-botanical-society": "the-journal-of-the-torrey-botanical-society", + "journal-of-wildlife-management": "the-journal-of-wildlife-management", + "juristische-zitierweise-deutsch": "juristische-zitierweise", + "lancet": "the-lancet", + "lichenologist": "the-lichenologist", + "lncs": "springer-lecture-notes-in-computer-science", + "lncs2": "springer-lecture-notes-in-computer-science-alphabetical", + "methods-information-medicine": "methods-of-information-in-medicine", + "mhra-author-date": "modern-humanities-research-association-author-date", + "mhra": "modern-humanities-research-association", + "mhra_note_without_bibliography": "modern-humanities-research-association", + "mla-notes": "modern-language-association-note", + "mla-underline": "modern-language-association-underline", + "mla-url": "modern-language-association-with-url", + "mla": "modern-language-association", + "molecular-biochemical-parasitology": "molecular-and-biochemical-parasitology", + "nlm": "national-library-of-medicine" +} \ No newline at end of file diff --git a/styles b/styles index b53019e1e6..e136c9f0b4 160000 --- a/styles +++ b/styles @@ -1 +1 @@ -Subproject commit b53019e1e601c6e843c58ad12c8149afc29ce4d6 +Subproject commit e136c9f0b4cd82fcd1bed4b4a35bb7139a40d9ea