closes #157, add database infrastructure for different CSL styles

CSL is stored in a new "csl" table. only metadata relevant to updates and selection (ID, date updated, and title) is stored in columns.
This commit is contained in:
Simon Kornblith 2006-08-03 04:54:16 +00:00
parent 30af2c89df
commit b4c8dbe700
5 changed files with 126 additions and 11 deletions

View file

@ -80,7 +80,6 @@ Scholar_File_Interface = new function() {
// get translators again, bc now we can check against the file
translators = translation.getTranslators();
if(translators.length) {
// TODO: display a list of available translators
translation.setTranslator(translators[0]);
// show progress indicator
translation.setHandler("itemDone", _importItemDone);

View file

@ -8,13 +8,23 @@ Scholar.Cite = new function() {
this.getStyles = getStyles;
function getStyles() {
// TODO: return key/values from database
return {1:"American Psychological Association"};
// get styles
var sql = "SELECT cslID, title FROM csl ORDER BY title";
var styles = Scholar.DB.query(sql);
// convert to associative array
var stylesObject = new Object();
for each(var style in styles) {
stylesObject[style.cslID] = style.title;
}
return stylesObject;
}
function getBibliography(style, items) {
// TODO: retrieve style from the database
style = '<citationstyle xmlns="http://purl.org/net/xbiblio/csl" xml:lang="en"> <info> <title>American Psychological Association</title> <title-short>APA</title-short> <edition>5</edition> <author> <name>Bruce DÕArcus</name> <email>bdarcus@sourceforge.net</email> </author> <dateCreated>2005-05-18</dateCreated> <dateModified>2006-07-09</dateModified> <source href="http://www.english.uiuc.edu/cws/wworkshop/writer_resources/citation_styles/apa/apa.htm" >Citation Styles Handbook: APA</source> <field>psychology</field> <description>Style for the American Psychological Association.</description> </info> <general> <names and="text" sort-separator=", " initialize-with="."> <original-script position="after" prefix=" "/> </names> <contributors> <label position="before-unless-first" type="verb"/> </contributors> <locators> <label position="before" form="short"/> </locators> <titles> <original-script position="after" prefix=" "/> </titles> <dates format="year, month day" month="full"> <original position="after" prefix=" [" suffix="]"/> </dates> <publishers order="address-publisher" separator=":"/> <access order="url-date" separator=", "/> </general> <citation delimiter=";" type="author-year" sort-order="author-date" prefix="(" suffix=")"> <use-et_al min-authors="6" use-first="6" position="first"/> <use-et_al min-authors="6" use-first="1" position="subsequent"/> <item-layout> <author form="short" suffix=", "/> <year/> <point-locator prefix=": " include-label="false"/> </item-layout> </citation> <bibliography author-as-sort-order="all" author-shorten-with="ÑÑÑ." sort-order="author-date"> <use-et_al min-authors="4" use-first="3"/> <list-layout> <heading label="references"/> </list-layout> <item-layout suffix="."> <reftype name="book"> <author alternate="editor"/> <year prefix=" (" suffix=")."/> <title font-style="italic" prefix=" " suffix="."/> <editor prefix=", "/> <publisher/> <access prefix=" "/> </reftype> <reftype name="chapter"> <author alternate="editor"/> <year prefix=" (" suffix=")."/> <title prefix=" "/> <group class="container"> <text idref="in"/> <editor/> <title type="container" font-style="italic" prefix=" " suffix="."/> <title type="series" prefix=" " suffix="."/> <publisher/> </group> <access prefix=" "/> <pages prefix=", "/> </reftype> <reftype name="article"> <author alternate="container-title"/> <year prefix=" (" suffix=")."/> <title prefix=" "/> <group class="container"> <editor/> <title type="container" font-style="italic" prefix=" " suffix="."/> </group> <access prefix=" "/> <volume prefix=" "/> <issue prefix="(" suffix=")"/> <pages prefix=", "/> </reftype> <reftype name="legalcase"> <title/> <year prefix=" (" suffix=")"/> <access prefix=", "/> </reftype> </item-layout> </bibliography></citationstyle>';
function getBibliography(cslID, items) {
// get style
var sql = "SELECT csl FROM csl WHERE cslID = ?";
var style = Scholar.DB.valueQuery(sql, [cslID]);
// get item arrays
var itemArrays = new Array();

View file

@ -391,7 +391,7 @@ Scholar.Schema = new function(){
//
// Change this value to match the schema version
//
var toVersion = 31;
var toVersion = 32;
if (toVersion != _getSchemaSQLVersion()){
throw('Schema version does not match version in _migrateSchema()');
@ -415,7 +415,7 @@ Scholar.Schema = new function(){
}
}
if (i==31){
if (i==32){
_initializeSchema();
}
}

View file

@ -1,4 +1,4 @@
-- 31
-- 32
DROP TABLE IF EXISTS version;
CREATE TABLE version (
@ -232,6 +232,14 @@
FOREIGN KEY (transactionID) REFERENCES transactions(transactionID)
);
DROP TABLE IF EXISTS csl;
CREATE TABLE csl (
cslID TEXT PRIMARY KEY,
updated DATETIME,
title TEXT,
csl TEXT
);
INSERT INTO itemTypes VALUES (1,'note');
INSERT INTO itemTypes VALUES (2,'book');

View file

@ -3916,7 +3916,6 @@ MARC_Record.prototype._associateDBField = function(item, fieldNo, part, fieldNam
value = execMe(value, arg1, arg2);
}
// TODO: handle creators better
if(fieldName == "creator") {
item.creators.push(value);
} else {
@ -4073,4 +4072,103 @@ function doImport(url) { // the URL is actually here for other translators
holdOver += text;
}
}
}');
}');
REPLACE INTO "csl" VALUES('id-not-yet-given', '2006-08-03 00:33:00', 'American Psychological Association',
'<citationstyle xmlns="http://purl.org/net/xbiblio/csl" xml:lang="en">
<info>
<title>American Psychological Association</title>
<title-short>APA</title-short>
<edition>5</edition>
<author>
<name>Bruce DÕArcus</name>
<email>bdarcus@sourceforge.net</email>
</author>
<dateCreated>2005-05-18</dateCreated>
<dateModified>2006-07-09</dateModified>
<source
href="http://www.english.uiuc.edu/cws/wworkshop/writer_resources/citation_styles/apa/apa.htm"
>Citation Styles Handbook: APA</source>
<field>psychology</field>
<description>Style for the American Psychological
Association.</description>
</info>
<general>
<names and="text" sort-separator=", " initialize-with=".">
<original-script position="after" prefix=" "/>
</names>
<contributors>
<label position="before-unless-first" type="verb"/>
</contributors>
<locators>
<label position="before" form="short"/>
</locators>
<titles>
<original-script position="after" prefix=" "/>
</titles>
<dates format="year, month day" month="full">
<original position="after" prefix=" [" suffix="]"/>
</dates>
<publishers order="address-publisher" separator=":"/>
<access order="url-date" separator=", "/>
</general>
<citation delimiter=";" type="author-year" sort-order="author-date"
prefix="(" suffix=")">
<use-et_al min-authors="6" use-first="6" position="first"/>
<use-et_al min-authors="6" use-first="1" position="subsequent"/>
<item-layout>
<author form="short" suffix=", "/>
<year/>
<point-locator prefix=": " include-label="false"/>
</item-layout>
</citation>
<bibliography author-as-sort-order="all" author-shorten-with="ÑÑÑ."
sort-order="author-date">
<use-et_al min-authors="4" use-first="3"/>
<list-layout>
<heading label="references"/>
</list-layout>
<item-layout suffix=".">
<reftype name="book">
<author alternate="editor"/>
<year prefix=" (" suffix=")."/>
<title font-style="italic" prefix=" " suffix="."/>
<editor prefix=", "/>
<publisher/>
<access prefix=" "/>
</reftype>
<reftype name="chapter">
<author alternate="editor"/>
<year prefix=" (" suffix=")."/>
<title prefix=" "/>
<group class="container">
<text idref="in"/>
<editor/>
<title type="container" font-style="italic" prefix=" " suffix="."/>
<title type="series" prefix=" " suffix="."/>
<publisher/>
</group>
<access prefix=" "/>
<pages prefix=", "/>
</reftype>
<reftype name="article">
<author alternate="container-title"/>
<year prefix=" (" suffix=")."/>
<title prefix=" "/>
<group class="container">
<editor/>
<title type="container" font-style="italic" prefix=" " suffix="."/>
</group>
<access prefix=" "/>
<volume prefix=" "/>
<issue prefix="(" suffix=")"/>
<pages prefix=", "/>
</reftype>
<reftype name="legalcase">
<title/>
<year prefix=" (" suffix=")"/>
<access prefix=", "/>
</reftype>
</item-layout>
</bibliography>
</citationstyle>');