commit 8ec4377d3efd936270861f0db00c1e494cf5d517
parent 16a3d3f1ed7f3ca469ba77126f3cfd39ad51a061
Author: Simon Kornblith <simon@simonster.com>
Date: Tue, 30 Aug 2011 06:46:47 +0000
Add bookmarklet support
Diffstat:
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);