www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit ef2ff0a88458edfd51820d57a57783d3d4554348
parent 4525afddc59d6638a3de31d27e7aa0364b0c83df
Author: Simon Kornblith <simon@simonster.com>
Date:   Sun, 22 Jun 2008 17:16:43 +0000

closes #1043, store EndNoteĀ® styles as binary blobs
closes #1046, Provide some indicator of whether style is originally from EndNote
will require that you re-import previously imported styles


Diffstat:
Mchrome/content/zotero/preferences/preferences.js | 25++++++++++++-------------
Mchrome/content/zotero/preferences/preferences.xul | 1+
Mchrome/content/zotero/xpcom/cite.js | 25+++++++++++++++++++++----
Mchrome/content/zotero/xpcom/enstyle.js | 46++++++++++++++++++++++++++--------------------
Mchrome/locale/en-US/zotero/preferences.dtd | 1+
Achrome/skin/default/zotero/tick.png | 0
6 files changed, 61 insertions(+), 37 deletions(-)

diff --git a/chrome/content/zotero/preferences/preferences.js b/chrome/content/zotero/preferences/preferences.js @@ -938,15 +938,23 @@ function refreshStylesList(cslID) { var treerow = document.createElement('treerow'); var titleCell = document.createElement('treecell'); var updatedCell = document.createElement('treecell'); + var cslCell = document.createElement('treecell'); var updatedDate = Zotero.Date.formatDate(Zotero.Date.strToDate(styleData[i].updated), true); treeitem.setAttribute('id', 'zotero-csl-'+styleData[i].cslID); titleCell.setAttribute('label', styleData[i].title); updatedCell.setAttribute('label', updatedDate); + // if not EN + if(styleData[i].cslID.length < Zotero.ENConverter.uriPrefix.length || + styleData[i].cslID.substr(0, Zotero.ENConverter.uriPrefix.length) != Zotero.ENConverter.uriPrefix) { + cslCell.setAttribute('src', 'chrome://zotero/skin/tick.png'); + Zotero.debug("ISCSL"); + } treerow.appendChild(titleCell); treerow.appendChild(updatedCell); + treerow.appendChild(cslCell); treeitem.appendChild(treerow); treechildren.appendChild(treeitem); @@ -988,21 +996,11 @@ function addStyle() { // read the rest of the bytes in the file read += bStream.readBytes(file.fileSize-6); - // get fallback name and modification date - var fallbackName = file.leafName; - fallbackName = fallbackName.replace(/\.ens$/i, ""); + // get name and modification date + var name = file.leafName.replace(/\.ens$/i, ""); var date = new Date(file.lastModifiedTime); - Zotero.debug(file.lastModifiedTime); - Zotero.debug(date); - try { - var enConverter = new Zotero.ENConverter(read, date, fallbackName); - var xml = enConverter.parse(); - } catch(e) { - styleImportError(); - throw e; - } - var cslID = Zotero.Cite.installStyle(xml.toXMLString()); + var cslID = Zotero.Cite.installStyle(read, false, date, name); } else { // This _should_ get the right charset for us automatically var fileURI = Components.classes["@mozilla.org/network/protocol;1?name=file"] @@ -1018,6 +1016,7 @@ function addStyle() { styleImportError(); throw e; } + var cslID = Zotero.Cite.installStyle(req.responseText); } } diff --git a/chrome/content/zotero/preferences/preferences.xul b/chrome/content/zotero/preferences/preferences.xul @@ -338,6 +338,7 @@ To add a new preference: <treecols> <treecol id="styleManager-title" label="&zotero.preferences.styles.styleManager.title;" flex="3"/> <treecol id="styleManager-updated" label="&zotero.preferences.styles.styleManager.updated;" flex="1"/> + <treecol id="styleManager-csl" label="&zotero.preferences.styles.styleManager.csl;"/> </treecols> <treechildren id="styleManager-rows"/> </tree> diff --git a/chrome/content/zotero/xpcom/cite.js b/chrome/content/zotero/xpcom/cite.js @@ -76,6 +76,11 @@ Zotero.Cite = new function() { if(csl.indexOf("<defaults") != -1) { _lastCSL = new Zotero.CSL.Compat(csl); } else { + if(csl.substr(0, 6) == "\x00\x08\xFF\x00\x00\x00") { + // EN style + var enConverter = new Zotero.ENConverter(csl); + csl = enConverter.parse(); + } _lastCSL = new Zotero.CSL(csl); } @@ -96,12 +101,20 @@ Zotero.Cite = new function() { /** * installs a style **/ - function installStyle(cslString, loadURI) { + function installStyle(cslString, loadURI, date, name) { + var error = false; try { - var xml = new XML(Zotero.CSL.Global.cleanXML(cslString)); + if(cslString.substr(0, 6) == "\x00\x08\xFF\x00\x00\x00") { + // EN style + var enConverter = new Zotero.ENConverter(cslString, date, name); + var xml = enConverter.parse(); + } else { + // CSL + var xml = new XML(Zotero.CSL.Global.cleanXML(cslString)); + } } catch (e) { - var error = true; + error = true; Components.utils.reportError(e); } @@ -309,7 +322,11 @@ Zotero.Cite.MIMEHandler.StreamListener.prototype.onStopRequest = function(channe Zotero.CSL = function(csl) { default xml namespace = "http://purl.org/net/xbiblio/csl"; with ({}); - this._csl = new XML(Zotero.CSL.Global.cleanXML(csl)); + if(typeof csl != "XML") { + this._csl = new XML(Zotero.CSL.Global.cleanXML(csl)); + } else { + this._csl = CSL; + } // initialize CSL Zotero.CSL.Global.init(); diff --git a/chrome/content/zotero/xpcom/enstyle.js b/chrome/content/zotero/xpcom/enstyle.js @@ -35,6 +35,9 @@ Zotero.ENConverter = function(styleData, date, fileTitle) { } } +// The URI prefix for EN styles +Zotero.ENConverter.uriPrefix = "http://zotero.org/styles/en-converted/"; + /** * Mappings for item types * @@ -201,31 +204,35 @@ Zotero.ENConverter.seriesCodes = ["\x01", "\x09", "\x0A", "\x0B", "\x15", "\x1D" **/ Zotero.ENConverter.prototype.parseInfo = function() { default xml namespace = "http://purl.org/net/xbiblio/csl"; with({}); - - var guid = ""; - for(var i=0; i<16; i++) { - var bite = Math.floor(Math.random() * 255); - - if(i == 4 || i == 6 || i == 8 || i == 10) { - guid += "-"; - - // version - if(i == 6) bite = bite & 0x0f | 0x40; - // variant - if(i == 8) bite = bite & 0x3f | 0x80; - } - var str = bite.toString(16); - guid += str.length == 1 ? '0' + str : str; - } - - this.xml.info.id = "urn:uuid:"+guid; + if(this.fileTitle) { var title = this.fileTitle; } else { var title = this.convertFromUTF16(this.findField(this.fields, "\x10")[0].data.replace("\xFB", "", "g")); - if(!title) title = "Untitled Style"; } + if(!title) { + var title = "Untitled Style"; + var identifier = ""; + for(var i=0; i<16; i++) { + var bite = Math.floor(Math.random() * 255); + + if(i == 4 || i == 6 || i == 8 || i == 10) { + identifier += "-"; + + // version + if(i == 6) bite = bite & 0x0f | 0x40; + // variant + if(i == 8) bite = bite & 0x3f | 0x80; + } + var str = bite.toString(16); + identifier += str.length == 1 ? '0' + str : str; + } + } else { + var identifier = encodeURIComponent(title); + } + this.xml.info.title = title; + this.xml.info.id = Zotero.ENConverter.uriPrefix+identifier; if(this.date) { var date = this.date; @@ -1369,6 +1376,5 @@ Zotero.ENConverter.prototype.parse = function() { this.parseCitation(); this.parseBibliography(); - Zotero.debug(this.xml); return this.xml; } \ No newline at end of file diff --git a/chrome/locale/en-US/zotero/preferences.dtd b/chrome/locale/en-US/zotero/preferences.dtd @@ -64,6 +64,7 @@ <!ENTITY zotero.preferences.styles.styleManager "Style Manager"> <!ENTITY zotero.preferences.styles.styleManager.title "Title"> <!ENTITY zotero.preferences.styles.styleManager.updated "Updated"> +<!ENTITY zotero.preferences.styles.styleManager.csl "CSL"> <!ENTITY zotero.preferences.export.getAdditionalStyles "Get additional styles..."> <!ENTITY zotero.preferences.prefpane.keys "Shortcut Keys"> diff --git a/chrome/skin/default/zotero/tick.png b/chrome/skin/default/zotero/tick.png Binary files differ.