Addresses #842, Mappings required

This commit is contained in:
Elena Razlogova 2007-11-28 16:44:58 +00:00
parent d8b1f533b7
commit e5d9639549
3 changed files with 49 additions and 20 deletions

View File

@ -12,6 +12,8 @@
<term name="no date">n.d.</term>
<term name="and">and</term>
<term name="et-al">et al.</term>
<term name="interview">interview</term>
<term name="letter">letter</term>
<!-- LONG LOCATOR FORMS -->
<term name="book">
@ -129,6 +131,8 @@
<!-- VERB ROLE FORMS -->
<term name="editor" form="verb">edited by</term>
<term name="translator" form="verb">translated by</term>
<term name="recipient" form="verb">to</term>
<term name="interviewer" form="verb">interview by</term>
<!-- SHORT VERB ROLE FORMS -->
<term name="editor" form="verb-short">ed</term>

View File

@ -309,6 +309,8 @@ Zotero.CSL._dateVariables = {
Zotero.CSL._namesVariables = {
"editor":true,
"translator":true,
"recipient":true,
"interviewer":true,
"author":true
}
@ -1765,7 +1767,7 @@ Zotero.CSL.Item._zoteroFieldMap = {
"title":"title",
"container-title":"publicationTitle",
"collection-title":["seriesTitle", "series"],
"publisher":"publisher",
"publisher":["publisher", "distributor"],
"publisher-place":"place",
"page":"pages",
"volume":"volume",
@ -1773,6 +1775,11 @@ Zotero.CSL.Item._zoteroFieldMap = {
"number-of-volumes":"numberOfVolumes",
"edition":"edition",
"genre":"type",
"medium":"medium",
"archive":"repository",
"archive_location":"archiveLocation",
"event":"meetingName",
"event-place":"place",
"abstract":"abstractNote",
"URL":"url",
"DOI":"DOI",
@ -1843,7 +1850,7 @@ Zotero.CSL.Item._optionalTypeMap = {
film:"motion_picture",
artwork:"graphic",
webpage:"webpage",
report:"paper-conference", // ??
report:"book", // ??
bill:"bill",
case:"legal_case",
hearing:"bill", // ??
@ -1870,10 +1877,10 @@ Zotero.CSL.Item._fallbackTypeMap = {
journalArticle:"article",
magazineArticle:"article",
newspaperArticle:"article",
thesis:"book",
thesis:"article",
letter:"article",
manuscript:"book",
interview:"book",
manuscript:"article",
interview:"article",
film:"book",
artwork:"book",
webpage:"article",
@ -1888,9 +1895,9 @@ Zotero.CSL.Item._fallbackTypeMap = {
blogPost:"article",
instantMessage:"article",
forumPost:"article",
audioRecording:"article",
audioRecording:"book",
presentation:"article",
videoRecording:"article",
videoRecording:"book",
tvBroadcast:"article",
radioBroadcast:"article",
podcast:"article",
@ -2159,6 +2166,8 @@ Zotero.CSL.ItemSet.prototype.resort = function() {
var names = this.items[i].getNames("author");
if(!names) names = this.items[i].getNames("editor");
if(!names) names = this.items[i].getNames("translator");
if(!names) names = this.items[i].getNames("recipient");
if(!names) names = this.items[i].getNames("interviewer");
if(!names) continue;
namesByItem[i] = names;
}

View File

@ -74,6 +74,8 @@ Zotero.CSL.Compat.Global = new function() {
author:"contributor",
editor:"contributor",
translator:"contributor",
recipient:"contributor",
interviewer:"contributor",
pages:"locator",
volume:"locator",
issue:"locator",
@ -92,7 +94,7 @@ Zotero.CSL.Compat.Global = new function() {
"graphic":"article",
"interview":"article",
"legal case":"article",
"manuscript":"book",
"manuscript":"article",
"map":"article",
"motion picture":"book",
"musical score":"article",
@ -103,7 +105,7 @@ Zotero.CSL.Compat.Global = new function() {
"report":"book",
"song":"article",
"speech":"article",
"thesis":"book",
"thesis":"article",
"treaty":"article",
"webpage":"article",
}
@ -401,11 +403,13 @@ Zotero.CSL.Compat.ItemSet.prototype.resort = function() {
item._csl = new Object();
item._csl.dateModified = dateModified;
// separate item into authors, editors, translators
// separate item into authors, editors, translators, recipients, interviewers
var creators = this.csl._separateItemCreators(item);
item._csl.authors = creators[0];
item._csl.editors = creators[1];
item._csl.translators = creators[2];
item._csl.recipients = creators[3];
item._csl.interviewers = creators[4];
// parse date
item._csl.date = Zotero.CSL.Compat.prototype._processDate(this.csl._getField(item, "date"));
@ -1284,6 +1288,10 @@ Zotero.CSL.Compat.prototype._getFieldValue = function(name, element, item, forma
dataAppended = formattedString.concat(this._processCreators(name, element, item._csl.editors, formattedString.format, bibCitElement, position), element);
} else if(name == "translator") {
dataAppended = formattedString.concat(this._processCreators(name, element, item._csl.translators, formattedString.format, bibCitElement, position), element);
} else if(name == "recipient") {
dataAppended = formattedString.concat(this._processCreators(name, element, item._csl.recipients, formattedString.format, bibCitElement, position), element);
} else if(name == "interviewer") {
dataAppended = formattedString.concat(this._processCreators(name, element, item._csl.interviewers, formattedString.format, bibCitElement, position), element);
} else if(name == "titles") {
var data = new Zotero.CSL.Compat.FormattedString(this, formattedString.format);
@ -1865,22 +1873,22 @@ Zotero.CSL.Compat.FormattedString.prototype.appendDate = function(date, element)
magazineArticle:"article-magazine",
newspaperArticle:"article-newspaper",
thesis:"thesis",
letter:"personal communication",
letter:"personal_communication",
manuscript:"manuscript",
interview:"interview",
film:"motion picture",
artwork:"graphic",
webpage:"webpage",
report:"paper-conference", // ??
report:"book", // ??
bill:"bill",
case:"legal case",
hearing:"bill", // ??
patent:"patent",
statute:"bill", // ??
email:"personal communication",
email:"personal_communication",
map:"map",
blogPost:"webpage",
instantMessage:"personal communication",
instantMessage:"personal_communication",
forumPost:"webpage",
audioRecording:"song", // ??
presentation:"paper-conference",
@ -1899,8 +1907,8 @@ Zotero.CSL.Compat.Global.fallbackTypeMappings = {
newspaperArticle:"article",
thesis:"book",
letter:"article",
manuscript:"book",
interview:"book",
manuscript:"article",
interview:"article",
film:"book",
artwork:"book",
webpage:"article",
@ -1915,9 +1923,9 @@ Zotero.CSL.Compat.Global.fallbackTypeMappings = {
blogPost:"article",
instantMessage:"article",
forumPost:"article",
audioRecording:"article",
audioRecording:"book",
presentation:"article",
videoRecording:"article",
videoRecording:"book",
tvBroadcast:"article",
radioBroadcast:"article",
podcast:"article",
@ -1948,16 +1956,20 @@ Zotero.CSL.Compat.prototype._getTypeFromItem = function(item) {
}
/*
* separate creators object into authors, editors, and translators
* separate creators object into authors, editors, translators, recipients, and interviewers
*/
Zotero.CSL.Compat.prototype._separateItemCreators = function(item) {
var authors = new Array();
var editors = new Array();
var translators = new Array();
var recipients = new Array();
var interviewers = new Array();
var authorID = Zotero.CreatorTypes.getPrimaryIDForType(item.getType());
var editorID = Zotero.CreatorTypes.getID("editor");
var translatorID = Zotero.CreatorTypes.getID("translator");
var recipientID = Zotero.CreatorTypes.getID("recipient");
var interviewerID = Zotero.CreatorTypes.getID("interviewer");
var creators = item.getCreators();
for each(var creator in creators) {
@ -1965,13 +1977,17 @@ Zotero.CSL.Compat.prototype._separateItemCreators = function(item) {
editors.push(creator);
} else if(creator.creatorTypeID == translatorID) {
translators.push(creator);
} else if(creator.creatorTypeID == recipientID) {
recipients.push(creator);
} else if(creator.creatorTypeID == interviewerID) {
interviewers.push(creator);
} else if(creator.creatorTypeID == authorID) {
// TODO: do we just ignore contributors?
authors.push(creator);
}
}
return [authors, editors, translators];
return [authors, editors, translators, recipients, interviewers];
}
/*