www

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

commit 8ec4377d3efd936270861f0db00c1e494cf5d517
parent 16a3d3f1ed7f3ca469ba77126f3cfd39ad51a061
Author: Simon Kornblith <simon@simonster.com>
Date:   Tue, 30 Aug 2011 06:46:47 +0000

Add bookmarklet support


Diffstat:
Mchrome/content/zotero/xpcom/connector/cachedTypes.js | 4+++-
Mchrome/content/zotero/xpcom/server.js | 3+++
Mchrome/content/zotero/xpcom/server_connector.js | 20+++++++++++++++-----
3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/chrome/content/zotero/xpcom/connector/cachedTypes.js b/chrome/content/zotero/xpcom/connector/cachedTypes.js @@ -83,7 +83,9 @@ Zotero.ItemTypes = new function() { this.getImageSrc = function(idOrName) { if(!Zotero.Connector_Types["itemTypes"][idOrName]) return false; - if(Zotero.isFx) { + if(Zotero.isBookmarklet) { + return ZOTERO_CONFIG.BOOKMARKLET_URL+"icons/"+Zotero.Connector_Types["itemTypes"][idOrName].icon; + } else if(Zotero.isFx) { return "chrome://zotero/skin/"+Zotero.Connector_Types["itemTypes"][idOrName].icon; } else if(Zotero.isChrome) { return chrome.extension.getURL("images/"+Zotero.Connector_Types["itemTypes"][idOrName].icon); diff --git a/chrome/content/zotero/xpcom/server.js b/chrome/content/zotero/xpcom/server.js @@ -70,6 +70,9 @@ Zotero.Server = new function() { if(!Zotero.isServer) { response += "X-Zotero-Version: "+Zotero.version+"\r\n"; response += "X-Zotero-Connector-API-Version: "+CONNECTOR_API_VERSION+"\r\n"; + response += "Access-Control-Allow-Origin: "+ZOTERO_CONFIG.BOOKMARKLET_URL+"iframe.html\r\n"; + response += "Access-Control-Allow-Methods: POST, GET, OPTIONS\r\n"; + response += "Access-Control-Allow-Headers: Content-Type,X-Zotero-Connector-API-Version,X-Zotero-Version\r\n"; } if(body) { diff --git a/chrome/content/zotero/xpcom/server_connector.js b/chrome/content/zotero/xpcom/server_connector.js @@ -49,9 +49,20 @@ Zotero.Server.Connector.GetTranslators.prototype = { */ "init":function(data, sendResponseCallback) { // Translator data + if(data.url) { + var me = this; + Zotero.Translators.getWebTranslatorsForLocation(data.url, function(data) { + sendResponseCallback(200, "application/json", + JSON.stringify(me._serializeTranslators(data[0]))); + }); + } else { + var responseData = this._serializeTranslators(Zotero.Translators.getAll()); + sendResponseCallback(200, "application/json", JSON.stringify(responseData)); + } + }, + + "_serializeTranslators":function(translators) { var responseData = []; - - var translators = Zotero.Translators.getAll(); for each(var translator in translators) { let serializableTranslator = {}; for each(var key in ["translatorID", "translatorType", "label", "creator", "target", @@ -61,8 +72,7 @@ Zotero.Server.Connector.GetTranslators.prototype = { } responseData.push(serializableTranslator); } - - sendResponseCallback(200, "application/json", JSON.stringify(responseData)); + return responseData; } } @@ -260,7 +270,7 @@ Zotero.Server.Connector.SavePage.prototype = { translate.setHandler("done", function(obj, item) { me._translate.cookieSandbox.destroy(); Zotero.Browser.deleteHiddenBrowser(me._browser); - if(jsonItems.length) { + if(jsonItems.length || me.selectedItems === false) { me._sendResponse(201, "application/json", JSON.stringify({"items":jsonItems})); } else { me._sendResponse(500);