This commit is contained in:
parent
425b2161cc
commit
a4f4691b04
|
@ -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"]));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user