- add MLA style
- put text-only version of bibliography on the clipboard, in addition to HTML version (Windows-only).
This commit is contained in:
parent
f7aafec402
commit
a75c5df70c
4 changed files with 170 additions and 13 deletions
|
@ -39,6 +39,10 @@ var Scholar_File_Interface_Bibliography = new function() {
|
||||||
if(styleMenu.selectedIndex == -1) {
|
if(styleMenu.selectedIndex == -1) {
|
||||||
styleMenu.selectedIndex = 0;
|
styleMenu.selectedIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(document.getElementById("copy-to-clipboard") && navigator.appVersion.indexOf('Mac') != -1) {
|
||||||
|
document.getElementById("copy-to-clipboard").hidden = "true";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function acceptSelection() {
|
function acceptSelection() {
|
||||||
|
|
|
@ -310,17 +310,23 @@ var Scholar_File_Interface = new function() {
|
||||||
// copy to clipboard
|
// copy to clipboard
|
||||||
var transferable = Components.classes["@mozilla.org/widget/transferable;1"].
|
var transferable = Components.classes["@mozilla.org/widget/transferable;1"].
|
||||||
createInstance(Components.interfaces.nsITransferable);
|
createInstance(Components.interfaces.nsITransferable);
|
||||||
|
var clipboardService = Components.classes["@mozilla.org/widget/clipboard;1"].
|
||||||
|
getService(Components.interfaces.nsIClipboard);
|
||||||
|
|
||||||
|
// add HTML
|
||||||
var str = Components.classes["@mozilla.org/supports-string;1"].
|
var str = Components.classes["@mozilla.org/supports-string;1"].
|
||||||
createInstance(Components.interfaces.nsISupportsString);
|
createInstance(Components.interfaces.nsISupportsString);
|
||||||
str.data = bibliography;
|
str.data = bibliography;
|
||||||
|
|
||||||
// add data
|
|
||||||
transferable.addDataFlavor("text/html");
|
transferable.addDataFlavor("text/html");
|
||||||
transferable.setTransferData("text/html", str, bibliography.length*2);
|
transferable.setTransferData("text/html", str, bibliography.length*2);
|
||||||
|
// add text
|
||||||
|
var bibliography = Scholar.Cite.getBibliography(io.style, items, "Text");
|
||||||
|
var str = Components.classes["@mozilla.org/supports-string;1"].
|
||||||
|
createInstance(Components.interfaces.nsISupportsString);
|
||||||
|
str.data = bibliography;
|
||||||
|
transferable.addDataFlavor("text/unicode");
|
||||||
|
transferable.setTransferData("text/unicode", str, bibliography.length*2);
|
||||||
|
|
||||||
var clipboardService = Components.classes["@mozilla.org/widget/clipboard;1"].
|
|
||||||
getService(Components.interfaces.nsIClipboard);
|
|
||||||
clipboardService.setData(transferable, null, Components.interfaces.nsIClipboard.kGlobalClipboard);
|
clipboardService.setData(transferable, null, Components.interfaces.nsIClipboard.kGlobalClipboard);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,6 +197,7 @@ CSL.prototype.createBibliography = function(format) {
|
||||||
// process this._items
|
// process this._items
|
||||||
var output = "";
|
var output = "";
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
if(format == "HTML") {
|
if(format == "HTML") {
|
||||||
if(this.class == "note") {
|
if(this.class == "note") {
|
||||||
output += '<ol>\r\n';
|
output += '<ol>\r\n';
|
||||||
|
@ -204,7 +205,6 @@ CSL.prototype.createBibliography = function(format) {
|
||||||
output += '<div style="margin-left:0.5in;text-indent:-0.5in;">\r\n';
|
output += '<div style="margin-left:0.5in;text-indent:-0.5in;">\r\n';
|
||||||
}
|
}
|
||||||
} else if(format == "RTF") {
|
} else if(format == "RTF") {
|
||||||
var index = 0;
|
|
||||||
output += "{\\rtf\\ansi{\\fonttbl\\f0\\froman Times New Roman;}{\\colortbl;\\red255\\green255\\blue255;}\\pard\\f0";
|
output += "{\\rtf\\ansi{\\fonttbl\\f0\\froman Times New Roman;}{\\colortbl;\\red255\\green255\\blue255;}\\pard\\f0";
|
||||||
if(this._bib.hangingIndent) {
|
if(this._bib.hangingIndent) {
|
||||||
output += "\\li720\\fi-720";
|
output += "\\li720\\fi-720";
|
||||||
|
@ -217,6 +217,17 @@ CSL.prototype.createBibliography = function(format) {
|
||||||
|
|
||||||
var string = this._getCitation(item, format, this._bib);
|
var string = this._getCitation(item, format, this._bib);
|
||||||
|
|
||||||
|
// add format
|
||||||
|
if(this._bib.format) {
|
||||||
|
// add citation prefix or suffix
|
||||||
|
if(this._bib.format.prefix) {
|
||||||
|
string = this._bib.format.prefix + string ;
|
||||||
|
}
|
||||||
|
if(this._bib.format.suffix) {
|
||||||
|
string += this._bib.format.suffix;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// add line feeds
|
// add line feeds
|
||||||
if(format == "HTML") {
|
if(format == "HTML") {
|
||||||
var coins = Scholar.OpenURL.createContextObject(item, "1.0");
|
var coins = Scholar.OpenURL.createContextObject(item, "1.0");
|
||||||
|
@ -235,7 +246,11 @@ CSL.prototype.createBibliography = function(format) {
|
||||||
output += index+". ";
|
output += index+". ";
|
||||||
}
|
}
|
||||||
output += string+"\\\r\n\\\r\n";
|
output += string+"\\\r\n\\\r\n";
|
||||||
} else if(format == "Integration") {
|
} else {
|
||||||
|
if(format == "Text" && this.class == "note") {
|
||||||
|
index++;
|
||||||
|
output += index+". ";
|
||||||
|
}
|
||||||
output += string+"\r\n\r\n";
|
output += string+"\r\n\r\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -249,6 +264,9 @@ CSL.prototype.createBibliography = function(format) {
|
||||||
} else if(format == "RTF") {
|
} else if(format == "RTF") {
|
||||||
// drop last 6 characters of output (last two returns)
|
// drop last 6 characters of output (last two returns)
|
||||||
output = output.substr(0, output.length-6)+"}";
|
output = output.substr(0, output.length-6)+"}";
|
||||||
|
} else {
|
||||||
|
// drop last 4 characters (last two returns)
|
||||||
|
output = output.substr(0, output.length-4);
|
||||||
}
|
}
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
|
@ -726,6 +744,7 @@ CSL.prototype._getFieldDefaults = function(elementName) {
|
||||||
* gets a term, in singular or plural form
|
* gets a term, in singular or plural form
|
||||||
*/
|
*/
|
||||||
CSL.prototype._getTerm = function(term, plural, form) {
|
CSL.prototype._getTerm = function(term, plural, form) {
|
||||||
|
Scholar.debug("CSL: looking up term "+term);
|
||||||
if(!form) {
|
if(!form) {
|
||||||
form = "long";
|
form = "long";
|
||||||
}
|
}
|
||||||
|
@ -1012,11 +1031,13 @@ CSL.prototype._preprocessItems = function() {
|
||||||
// get data necessary to generate citations before sorting
|
// get data necessary to generate citations before sorting
|
||||||
for(var i in this._uniqueItems) {
|
for(var i in this._uniqueItems) {
|
||||||
var item = this._uniqueItems[i];
|
var item = this._uniqueItems[i];
|
||||||
|
var dateModified = item.getField("dateModified");
|
||||||
|
|
||||||
if(!item._csl) {
|
if(!item._csl || item._csl.dateModified != dateModified) {
|
||||||
// namespace everything in item._csl so there's no chance of overlap
|
// namespace everything in item._csl so there's no chance of overlap
|
||||||
item._csl = new Object();
|
item._csl = new Object();
|
||||||
item._csl.ignore = new Array();
|
item._csl.ignore = new Array();
|
||||||
|
item._csl.dateModified = dateModified;
|
||||||
|
|
||||||
// separate item into authors, editors, translators
|
// separate item into authors, editors, translators
|
||||||
var creators = this._separateItemCreators(item);
|
var creators = this._separateItemCreators(item);
|
||||||
|
@ -1187,8 +1208,8 @@ CSL.prototype._processCreators = function(type, element, creators, format, bibCi
|
||||||
}
|
}
|
||||||
|
|
||||||
// figure out if we need an "and" or an "et al"
|
// figure out if we need an "and" or an "et al"
|
||||||
var joinString = ", ";
|
var joinString = (child["delimiter"] ? child["delimiter"] : ", ");
|
||||||
if(maxCreators > 1) {
|
if(creators.length > 1) {
|
||||||
if(useEtAl) { // multiple creators and need et al
|
if(useEtAl) { // multiple creators and need et al
|
||||||
authorStrings.push(this._getTerm("et-al"));
|
authorStrings.push(this._getTerm("et-al"));
|
||||||
} else { // multiple creators but no et al
|
} else { // multiple creators but no et al
|
||||||
|
@ -1196,7 +1217,7 @@ CSL.prototype._processCreators = function(type, element, creators, format, bibCi
|
||||||
if(child["and"]) {
|
if(child["and"]) {
|
||||||
if(child["and"] == "symbol") {
|
if(child["and"] == "symbol") {
|
||||||
var and = "&"
|
var and = "&"
|
||||||
} else {
|
} else if(child["and"] == "text") {
|
||||||
var and = this._getTerm("and");
|
var and = this._getTerm("and");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1342,7 +1363,7 @@ CSL.prototype._getFieldValue = function(name, element, item, format, bibCitEleme
|
||||||
} else if(child.name == "physicalLocation") {
|
} else if(child.name == "physicalLocation") {
|
||||||
string = item.getField("archiveLocation");
|
string = item.getField("archiveLocation");
|
||||||
} else if(child.name == "text") {
|
} else if(child.name == "text") {
|
||||||
string = this._getTerm(child["term-name"]);
|
string = this._getTerm(child["term-name"], false, child["form"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(string) {
|
if(string) {
|
||||||
|
@ -1392,7 +1413,7 @@ CSL.prototype._getFieldValue = function(name, element, item, format, bibCitEleme
|
||||||
// implode with delimiter
|
// implode with delimiter
|
||||||
data = childData.join((element["delimiter"] ? element["delimiter"] : ""));
|
data = childData.join((element["delimiter"] ? element["delimiter"] : ""));
|
||||||
} else if(name == "text") {
|
} else if(name == "text") {
|
||||||
data = this._getTerm(element["term-name"]);
|
data = this._getTerm(element["term-name"], false, element["form"]);
|
||||||
dontEscape = false;
|
dontEscape = false;
|
||||||
} else if(name == "isbn" || name == "doi") {
|
} else if(name == "isbn" || name == "doi") {
|
||||||
var field = item.getField(name.toUpperCase());
|
var field = item.getField(name.toUpperCase());
|
||||||
|
|
128
scrapers.sql
128
scrapers.sql
|
@ -1,4 +1,4 @@
|
||||||
-- 63
|
-- 64
|
||||||
|
|
||||||
-- Set the following timestamp to the most recent scraper update date
|
-- Set the following timestamp to the most recent scraper update date
|
||||||
REPLACE INTO "version" VALUES ('repository', STRFTIME('%s', '2006-08-15 15:42:00'));
|
REPLACE INTO "version" VALUES ('repository', STRFTIME('%s', '2006-08-15 15:42:00'));
|
||||||
|
@ -6189,3 +6189,129 @@ REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/chicago-note.c
|
||||||
</layout>
|
</layout>
|
||||||
</citation>
|
</citation>
|
||||||
</style>');
|
</style>');
|
||||||
|
|
||||||
|
REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/mla.csl', '2006-08-29 23:05:00', 'Modern Language Association',
|
||||||
|
'<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<?oxygen RNGSchema="../schema/trunk/csl.rnc" type="compact"?>
|
||||||
|
<style xmlns="http://purl.org/net/xbiblio/csl" class="author" xml:lang="en">
|
||||||
|
<info>
|
||||||
|
<title>Modern Language Association</title>
|
||||||
|
<id>http://purl.org/net/xbiblio/csl/styles/mla.csl</id>
|
||||||
|
<link>http://purl.org/net/xbiblio/csl/styles/mla.csl</link>
|
||||||
|
<author>
|
||||||
|
<name>Bruce D’Arcus</name>
|
||||||
|
<email>bdarcus@sourceforge.net</email>
|
||||||
|
</author>
|
||||||
|
<contributor>
|
||||||
|
<name>Johan Kool</name>
|
||||||
|
<email>johankool@users.sourceforge.net</email>
|
||||||
|
</contributor>
|
||||||
|
<contributor>
|
||||||
|
<name>Simon Kornblith</name>
|
||||||
|
<email>simon@simonster.com</email>
|
||||||
|
</contributor>
|
||||||
|
<updated>2006-08-29T23:05:00+05:00</updated>
|
||||||
|
</info>
|
||||||
|
<defaults>
|
||||||
|
<contributor name-as-sort-order="first">
|
||||||
|
<name and="text" sort-separator=", " delimiter=", "/>
|
||||||
|
<label form="short" suffix="."/>
|
||||||
|
</contributor>
|
||||||
|
<author>
|
||||||
|
<substitute>
|
||||||
|
<choose>
|
||||||
|
<editor/>
|
||||||
|
<titles/>
|
||||||
|
</choose>
|
||||||
|
</substitute>
|
||||||
|
</author>
|
||||||
|
<locator>
|
||||||
|
<number/>
|
||||||
|
</locator>
|
||||||
|
<titles>
|
||||||
|
<title/>
|
||||||
|
</titles>
|
||||||
|
<date>
|
||||||
|
<year/>
|
||||||
|
</date>
|
||||||
|
<publisher>
|
||||||
|
<place suffix=": "/>
|
||||||
|
<name/>
|
||||||
|
</publisher>
|
||||||
|
<access>
|
||||||
|
<date>
|
||||||
|
<day suffix=" "/>
|
||||||
|
<month suffix=" "/>
|
||||||
|
<year/>
|
||||||
|
</date>
|
||||||
|
<url prefix=" <" suffix=">"/>
|
||||||
|
</access>
|
||||||
|
</defaults>
|
||||||
|
<citation prefix="(" suffix=")" delimiter="; ">
|
||||||
|
<et-al min-authors="6" use-first="6" position="first"/>
|
||||||
|
<et-al min-authors="6" use-first="1" position="subsequent"/>
|
||||||
|
<layout>
|
||||||
|
<item>
|
||||||
|
<author form="short"/>
|
||||||
|
<title form="short" when-multiple-author-items="true" prefix="“" suffix="”"/>
|
||||||
|
<locator prefix=" "/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</citation>
|
||||||
|
<bibliography subsequent-author-substitute="---">
|
||||||
|
<sort algorithm="author-date"/>
|
||||||
|
<et-al min-authors="4" use-first="1"/>
|
||||||
|
<layout>
|
||||||
|
<list>
|
||||||
|
<heading>
|
||||||
|
<text term-name="references"/>
|
||||||
|
</heading>
|
||||||
|
</list>
|
||||||
|
<item>
|
||||||
|
<choose>
|
||||||
|
<type name="book">
|
||||||
|
<author suffix="."/>
|
||||||
|
<titles font-style="italic" prefix=" " suffix="."/>
|
||||||
|
<group prefix=" " suffix="." delimiter=", ">
|
||||||
|
<edition/>
|
||||||
|
<publisher/>
|
||||||
|
<date/>
|
||||||
|
</group>
|
||||||
|
<access prefix=" " suffix="."/>
|
||||||
|
</type>
|
||||||
|
<type name="chapter">
|
||||||
|
<author suffix="."/>
|
||||||
|
<titles prefix=" “" suffix=".”"/>
|
||||||
|
<group class="container" prefix=" " suffix=".">
|
||||||
|
<titles relation="container" font-style="italic" suffix="."/>
|
||||||
|
<editor prefix=" " suffix=".">
|
||||||
|
<label form="short" suffix=". " text-transform="capitalize"/>
|
||||||
|
<name and="text" delimiter=", "/>
|
||||||
|
</editor>
|
||||||
|
<titles relation="collection" prefix=" " suffix="."/>
|
||||||
|
<publisher prefix=" "/>
|
||||||
|
<date prefix=", "/>
|
||||||
|
</group>
|
||||||
|
<pages prefix=" " suffix="."/>
|
||||||
|
<access prefix=" " suffix="."/>
|
||||||
|
</type>
|
||||||
|
<type name="article">
|
||||||
|
<author suffix="."/>
|
||||||
|
<titles prefix=" “" suffix=".”"/>
|
||||||
|
<group class="container">
|
||||||
|
<editor prefix=" " suffix="."/>
|
||||||
|
<titles relation="container" font-style="italic" prefix=" " suffix="."/>
|
||||||
|
</group>
|
||||||
|
<volume prefix=" "/>
|
||||||
|
<issue prefix="."/>
|
||||||
|
<group prefix=" " suffix=".">
|
||||||
|
<date prefix=" (" suffix=")"/>
|
||||||
|
<pages prefix=": "/>
|
||||||
|
</group>
|
||||||
|
<access prefix=" " suffix="."/>
|
||||||
|
</type>
|
||||||
|
</choose>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</bibliography>
|
||||||
|
</style>');
|
Loading…
Add table
Add a link
Reference in a new issue