Simon Kornblith 2012-11-11 17:14:19 -05:00
parent 425b2161cc
commit a4f4691b04

View File

@ -341,63 +341,51 @@ Zotero.Server.Connector.SaveSnapshot.prototype = {
*/ */
"init":function(url, data, sendResponseCallback) { "init":function(url, data, sendResponseCallback) {
Zotero.Server.Connector.Data[data["url"]] = "<html>"+data["html"]+"</html>"; Zotero.Server.Connector.Data[data["url"]] = "<html>"+data["html"]+"</html>";
var browser = Zotero.Browser.createHiddenBrowser(); Zotero.HTTP.processDocuments(["zotero://connector/"+encodeURIComponent(data["url"])],
function(doc) {
delete Zotero.Server.Connector.Data[data["url"]];
var pageShowCalled = false; // figure out where to save
var cookieSandbox = new Zotero.CookieSandbox(browser, data["url"], data["cookie"], url.userAgent); var libraryID = null;
browser.addEventListener("pageshow", function() { var collectionID = null;
if(browser.contentDocument.location.href == "about:blank" var zp = Zotero.getActiveZoteroPane();
|| browser.contentDocument.readyState !== "complete") return; try {
if(pageShowCalled) return; var libraryID = zp.getSelectedLibraryID();
pageShowCalled = true; var collection = zp.getSelectedCollection();
delete Zotero.Server.Connector.Data[data["url"]]; } catch(e) {}
// figure out where to save try {
var libraryID = null; // create new webpage item
var collectionID = null; var item = new Zotero.Item("webpage");
var zp = Zotero.getActiveZoteroPane(); item.libraryID = libraryID;
try { item.setField("title", doc.title);
var libraryID = zp.getSelectedLibraryID(); item.setField("url", data.url);
var collection = zp.getSelectedCollection(); item.setField("accessDate", "CURRENT_TIMESTAMP");
} catch(e) {} var itemID = item.save();
if(collection) collection.addItem(itemID);
try { // determine whether snapshot can be saved
var doc = browser.contentDocument; var filesEditable;
if (libraryID) {
var group = Zotero.Groups.getByLibraryID(libraryID);
filesEditable = group.filesEditable;
} else {
filesEditable = true;
}
// create new webpage item // save snapshot
var item = new Zotero.Item("webpage"); if(filesEditable) {
item.libraryID = libraryID; Zotero.Attachments.importFromDocument(doc, itemID);
item.setField("title", doc.title); }
item.setField("url", data.url);
item.setField("accessDate", "CURRENT_TIMESTAMP");
var itemID = item.save();
if(collection) collection.addItem(itemID);
// determine whether snapshot can be saved sendResponseCallback(201);
var filesEditable; } catch(e) {
if (libraryID) { sendResponseCallback(500);
var group = Zotero.Groups.getByLibraryID(libraryID); throw e;
filesEditable = group.filesEditable;
} else {
filesEditable = true;
} }
},
// save snapshot null, null, false,
if(filesEditable) { new Zotero.CookieSandbox(null, data["url"], data["cookie"], url.userAgent));
Zotero.Attachments.importFromDocument(doc, itemID);
}
// remove browser
Zotero.Browser.deleteHiddenBrowser(browser);
sendResponseCallback(201);
} catch(e) {
sendResponseCallback(500);
throw e;
}
}, false);
browser.loadURI("zotero://connector/"+encodeURIComponent(data["url"]));
} }
} }