Merge branch '3.0'

This commit is contained in:
Dan Stillman 2012-03-21 19:45:48 -04:00
commit 83073fd72b
4 changed files with 105 additions and 76 deletions

View file

@ -225,30 +225,14 @@ Zotero.Attachments = new function(){
// Save using a hidden browser
var nativeHandlerImport = function () {
var browser = Zotero.Browser.createHiddenBrowser();
if(cookieSandbox) cookieSandbox.attachToBrowser(browser);
var imported = false;
var onpageshow = function() {
// ignore spurious about:blank loads
if(browser.contentDocument.location.href == "about:blank") return;
// pageshow can be triggered multiple times on some pages,
// so make sure we only import once
// (https://www.zotero.org/trac/ticket/795)
if (imported) {
return;
}
var browser = Zotero.HTTP.processDocuments(url, function() {
var importCallback = function (item) {
browser.removeEventListener("pageshow", onpageshow, false);
Zotero.Browser.deleteHiddenBrowser(browser);
if(callback) callback(item);
};
Zotero.Attachments.importFromDocument(browser.contentDocument,
sourceItemID, forceTitle, parentCollectionIDs, importCallback, libraryID);
imported = true;
};
browser.addEventListener("pageshow", onpageshow, false);
browser.loadURI(url);
}, undefined, undefined, true);
};
// Save using remote web browser persist
@ -397,7 +381,7 @@ Zotero.Attachments = new function(){
}
if (mimeType) {
return process(mimeType);
return process(mimeType, Zotero.MIME.hasNativeHandler(mimeType));
}
else {
Zotero.MIME.getMIMETypeFromURL(url, function (mimeType, hasNativeHandler) {

View file

@ -1138,7 +1138,7 @@ CSL.Output.Queue.prototype.string = function (state, myblobs, blob) {
ret = ret.concat(addtoret);
}
if (blobjr.strings.first_blob) {
state.registry.registry[state.tmp.count_offset_characters].offset = state.tmp.offset_characters;
state.registry.registry[blobjr.strings.first_blob].offset = state.tmp.offset_characters;
state.tmp.count_offset_characters = false;
}
}
@ -2156,7 +2156,7 @@ CSL.DateParser = function () {
};
CSL.Engine = function (sys, style, lang, forceLang) {
var attrs, langspec, localexml, locale;
this.processor_version = "1.0.302";
this.processor_version = "1.0.305";
this.csl_version = "1.0";
this.sys = sys;
this.sys.xml = new CSL.System.Xml.Parsing();
@ -7302,6 +7302,13 @@ CSL.Node.number = {
varname = this.variables[0];
state.parallel.StartVariable(this.variables[0]);
state.parallel.AppendToVariable(Item[this.variables[0]]);
if (this.text_case_normal) {
var value = Item[this.variables[0]];
if (value) {
value = value.replace("\\", "");
state.output.append(value, this)
}
} else {
var node = this;
if (!state.tmp.shadow_numbers[varname]
|| (state.tmp.shadow_numbers[varname].values.length
@ -7343,6 +7350,7 @@ CSL.Node.number = {
state.output.closeLevel("empty");
}
}
}
state.parallel.CloseVariable("number");
};
this.execs.push(func);
@ -7700,6 +7708,35 @@ CSL.Node.text = {
}
};
CSL.Attributes = {};
CSL.Attributes["@is-plural"] = function (state, arg) {
var func = function (state, Item, item) {
var nameList = Item[arg];
var ret = false;
if (nameList && nameList.length) {
var persons = 0;
var institutions = 0;
var last_is_person = false;
for (var i = 0, ilen = nameList.length; i < ilen; i += 1) {
if (nameList[i].isInstitution && (nameList[i].literal || (nameList[i].family && !nameList[i].given))) {
institutions += 1;
last_is_person = false;
} else {
persons += 1;
last_is_person = true;
}
}
if (persons > 1) {
ret = true;
} else if (institutions > 1) {
ret = true;
} else if (institutions && last_is_person) {
ret = true;
}
}
return ret;
}
this.tests.push(func);
}
CSL.Attributes["@subjurisdictions"] = function (state, arg) {
var trysubjurisdictions = parseInt(arg, 10);
var func = function (state, Item, item) {
@ -7902,7 +7939,7 @@ CSL.Attributes["@variable"] = function (state, arg) {
}
if (Item[variable]) {
for (var key in Item[variable]) {
if (this.dateparts.indexOf(key) === -1) {
if (this.dateparts.indexOf(key) === -1 && "literal" !== key) {
continue;
}
if (Item[variable][key]) {
@ -8430,6 +8467,9 @@ CSL.Attributes["@page-range-format"] = function (state, arg) {
};
CSL.Attributes["@text-case"] = function (state, arg) {
var func = function (state, Item) {
if (arg === "normal") {
this.text_case_normal = true;
} else {
this.strings["text-case"] = arg;
if (arg === "title") {
var m = false;
@ -8453,6 +8493,7 @@ CSL.Attributes["@text-case"] = function (state, arg) {
this.strings["text-case"] = "passthrough";
}
}
}
};
this.execs.push(func);
};

View file

@ -1392,7 +1392,7 @@ Zotero.Sync.Storage = new function () {
// For advertising junk files, ignore a bug on Windows where
// destFile.create() works but zipReader.extract() doesn't
// when the path length is close to 255.
if (destFile.leafName.match(/[a-zA-Z0-9]{130,}/)) {
if (destFile.leafName.match(/[a-zA-Z0-9+=]{130,}/)) {
var msg = "Ignoring error extracting '" + destFile.path + "'";
Zotero.debug(msg, 2);
Zotero.debug(e, 2);

View file

@ -1287,6 +1287,10 @@ Zotero.Translate.Base.prototype = {
this._sandboxManager.importObject({"Utilities":new Zotero.Utilities.Translate(this)});
this._sandboxManager.sandbox.Zotero.Utilities.HTTP = this._sandboxManager.sandbox.Zotero.Utilities;
this._sandboxManager.sandbox.Zotero.isBookmarklet = Zotero.isBookmarklet || false;
this._sandboxManager.sandbox.Zotero.isConnector = Zotero.isConnector || false;
this._sandboxManager.sandbox.Zotero.isServer = Zotero.isServer || false;
// create shortcuts
this._sandboxManager.sandbox.Z = this._sandboxManager.sandbox.Zotero;
this._sandboxManager.sandbox.ZU = this._sandboxManager.sandbox.Zotero.Utilities;