Closes #346, mapping for new item types

Closes #227, Indent nested collections in search drop-down
Addresses #528, Make search condition drop-down menu less unwieldy

- Created new distinct fields for differently labeled fields
- Mapped lots of fields to base fields
- Made base field search conditions search type-specific fields as well
- Removed type-specific fields that are based on base fields not show up in search conditions drop-down
- Added a tooltip when hovering over a condition in the search conditions drop-down that shows the fields it searches (when there's more than one)
- Moved search dialog CSS to separate file
This commit is contained in:
Dan Stillman 2007-02-17 09:39:51 +00:00
parent 1be37c6aa7
commit 97d1e0b844
9 changed files with 369 additions and 105 deletions

View File

@ -28,6 +28,10 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="search-box">
<resources>
<stylesheet src="chrome://zotero/skin/bindings/search.css"/>
</resources>
<implementation>
<field name="searchRef"/>
<property name="search" onget="return this.searchRef;">
@ -190,7 +194,7 @@
</implementation>
<content>
<xul:vbox flex="1" onkeypress="this.parentNode.handleKeyPress(event)">
<xul:vbox id="search-box" flex="1" onkeypress="this.parentNode.handleKeyPress(event)">
<xul:groupbox xbl:inherits="flex">
<xul:caption align="center">
<xul:label value="&zotero.search.joinMode.prefix;"/>
@ -215,6 +219,10 @@
<binding id="search-condition">
<resources>
<stylesheet src="chrome://zotero/skin/bindings/search.css"/>
</resources>
<implementation>
<field name="conditionID"/>
<field name="selectedCondition"/>
@ -238,7 +246,76 @@
for(var i=0, len=conditions.length; i<len; i++)
{
conditionsList.appendItem(conditions[i]['localized'], conditions[i]['name']);
var menuitem = conditionsList.appendItem(conditions[i]['localized'], conditions[i]['name']);
var baseFields = null;
try {
baseFields = Zotero.ItemFields.getTypeFieldsFromBase(conditions[i]['name']);
}
catch (e) {}
if (baseFields) {
// Build tooltip if it doesn't already exist
if (!this.id(conditions[i]['name'] + '-tooltip')) {
var fieldName = null;
try {
fieldName = Zotero.getString('itemFields.' + conditions[i]['name']);
}
catch (e) {}
if (fieldName) {
var localized = [fieldName];
}
else {
var localized = [];
}
for (var j in baseFields) {
var str = Zotero.SearchConditions.getLocalizedName(Zotero.ItemFields.getName(baseFields[j]));
if (localized.indexOf(str) == -1) {
localized.push(str);
}
}
localized.sort();
var tt = document.createElement('tooltip');
tt.setAttribute('id', conditions[i]['name'] + '-tooltip');
tt.setAttribute('orient', 'vertical');
tt.setAttribute('noautohide', true);
var grid = document.createElement('grid');
var columns = document.createElement('columns');
var col1 = document.createElement('column');
var col2 = document.createElement('column');
columns.appendChild(col1);
columns.appendChild(col2);
var rows = document.createElement('rows');
var fieldRow = document.createElement('row');
var label = document.createElement('label');
label.setAttribute('value', Zotero.getString('searchConditions.tooltip.fields'));
fieldRow.appendChild(label);
var vbox = document.createElement('vbox');
for each(var str in localized) {
var label = document.createElement('label')
label.setAttribute('value', str);
vbox.appendChild(label);
}
fieldRow.appendChild(vbox);
rows.appendChild(fieldRow);
grid.appendChild(rows);
tt.appendChild(grid);
this.id('condition-tooltips').appendChild(tt);
}
menuitem.setAttribute('tooltip', conditions[i]['name'] + '-tooltip');
}
}
conditionsList.selectedIndex = 0;
]]>
@ -281,7 +358,15 @@
var cols = Zotero.getCollections(false, true);
for (var i in cols)
{
merged.push([cols[i].getName(), 'C' + cols[i].getID()]);
// Indent subcollections
var indent = '';
if (cols[i].level) {
for (var j=1; j<cols[i].level; j++) {
indent += ' ';
}
indent += '- ';
}
merged.push([indent + cols[i].getName(), 'C' + cols[i].getID()]);
}
var searches = Zotero.Searches.getAll();
@ -558,13 +643,17 @@
<parameter name="id"/>
<body>
<![CDATA[
return document.getAnonymousNodes(this)[0].getElementsByAttribute('id',id)[0];
var elems = document.getAnonymousNodes(this)[0].getElementsByAttribute('id',id);
return elems[0] ? elems[0] : false;
]]>
</body>
</method>
</implementation>
<content>
<xul:hbox xbl:inherits="flex">
<xul:hbox id="search-condition" xbl:inherits="flex">
<xul:popupset id="condition-tooltips"/>
<xul:menulist id="conditionsmenu" oncommand="this.parentNode.parentNode.onConditionSelected(); event.stopPropagation()">
<xul:menupopup/>
</xul:menulist>
@ -576,6 +665,7 @@
<xul:menupopup/>
</xul:menulist>
<xul:zoterosearchagefield id="value-date-age" hidden="true" flex="1"/>
<!-- Adding elements below will break disable/enableRemoveButton() -->
<xul:toolbarbutton id="remove" class="zotero-clicky" label="-" oncommand="this.parentNode.parentNode.onRemoveClicked(event); event.stopPropagation()"/>
<xul:toolbarbutton id="add" class="zotero-clicky" label="+" oncommand="this.parentNode.parentNode.onAddClicked(event); event.stopPropagation()"/>
</xul:hbox>
@ -585,6 +675,10 @@
<binding id="search-textbox">
<resources>
<stylesheet src="chrome://zotero/skin/bindings/search.css"/>
</resources>
<implementation>
<property name="value"
onget="return document.getAnonymousNodes(this)[0].value"
@ -718,7 +812,7 @@
</implementation>
<content>
<xul:textbox id="textbox" xbl:inherits="flex">
<xul:textbox id="search-textbox" xbl:inherits="hasOptions,flex">
<xul:popupset>
<xul:menupopup id="textbox-fulltext-menu">
<xul:menuitem type="radio" checked="true" label="&zotero.search.textModes.phrase;"/>
@ -736,6 +830,10 @@
<binding id="search-in-the-last">
<resources>
<stylesheet src="chrome://zotero/skin/bindings/search.css"/>
</resources>
<implementation>
<property name="value">
<getter>
@ -779,7 +877,7 @@
</implementation>
<content>
<xul:hbox flex="1">
<xul:hbox id="search-in-the-last" flex="1">
<xul:textbox flex="1"/>
<xul:menulist>
<xul:menupopup flex="1">

View File

@ -2830,13 +2830,18 @@ Zotero.Collection.prototype._loadChildItems = function(){
/**
* Returns an array of descendent collections and items
* (rows of 'id', 'type' ('item' or 'collection'), and, if collection, 'name')
* (rows of 'id', 'type' ('item' or 'collection'), and, if collection, 'name'
* and the nesting 'level')
*
* nested: Return multidimensional array with 'children' nodes instead of flat array
**/
Zotero.Collection.prototype.getDescendents = function(nested, type){
Zotero.Collection.prototype.getDescendents = function(nested, type, level){
var toReturn = new Array();
if (!level) {
level = 1;
}
// 0 == collection
// 1 == item
var children = Zotero.DB.query('SELECT collectionID AS id, '
@ -2866,12 +2871,13 @@ Zotero.Collection.prototype.getDescendents = function(nested, type){
toReturn.push({
id: children[i]['id'],
name: children[i]['collectionName'],
type: 'collection'
type: 'collection',
level: level
});
}
var descendents =
Zotero.Collections.get(children[i]['id']).getDescendents(nested, type);
Zotero.Collections.get(children[i]['id']).getDescendents(nested, type, level+1);
if (nested){
toReturn[toReturn.length-1]['children'] = descendents;
@ -3823,6 +3829,7 @@ Zotero.ItemFields = new function(){
this.isInteger = isInteger;
this.getItemTypeFields = getItemTypeFields;
this.isBaseField = isBaseField;
this.getBaseMappedFields = getBaseMappedFields;
this.getFieldIDFromTypeAndBase = getFieldIDFromTypeAndBase;
this.getBaseIDFromTypeAndField = getBaseIDFromTypeAndField;
this.getTypeFieldsFromBase = getTypeFieldsFromBase;
@ -3875,7 +3882,7 @@ Zotero.ItemFields = new function(){
_fieldCheck(fieldID, 'isValidForType');
if (!_fields[fieldID]['itemTypes']){
throw('No associated itemTypes for fieldID ' + fieldID);
return false;
}
return !!_fields[fieldID]['itemTypes'][itemTypeID];
@ -3922,6 +3929,11 @@ Zotero.ItemFields = new function(){
}
function getBaseMappedFields() {
return Zotero.DB.columnQuery("SELECT DISTINCT fieldID FROM baseFieldMappings");
}
/*
* Returns the fieldID of a type-specific field for a given base field
* or false if none
@ -3943,7 +3955,7 @@ Zotero.ItemFields = new function(){
}
if (!baseFieldID) {
throw ("Invalid base field '" + baseField + '" in ItemFields.getFieldIDFromTypeAndBase()');
throw ("Invalid field '" + baseField + '" for base field in ItemFields.getFieldIDFromTypeAndBase()');
}
// If the base field is already valid for the type, just return that
@ -4126,6 +4138,14 @@ Zotero.getCollections = function(parent, recursive){
throw ('Collection ' + desc[j] + ' not found');
}
// TODO: This is a quick hack so that we can indent subcollections
// in the search dialog -- ideally collections would have a
// getLevel() method, but there's no particularly quick way
// of calculating that without either storing it in the DB or
// changing the schema to Modified Preorder Tree Traversal,
// and I don't know if we'll actually need it anywhere else.
obj2.level = desc[j].level;
toReturn.push(obj2);
}
}

View File

@ -761,6 +761,29 @@ Zotero.Schema = new function(){
Zotero.DB.query("INSERT INTO itemNotes SELECT * FROM itemNotesTemp")
Zotero.DB.query("DROP TABLE itemNotesTemp");
}
if (i==20) {
Zotero.DB.query("UPDATE itemData SET fieldID=91 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=13) AND fieldID=12;");
Zotero.DB.query("UPDATE itemData SET fieldID=92 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=15) AND fieldID=60;");
Zotero.DB.query("UPDATE itemData SET fieldID=93 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=16) AND fieldID=60;");
Zotero.DB.query("UPDATE itemData SET fieldID=94 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=16) AND fieldID=4;");
Zotero.DB.query("UPDATE itemData SET fieldID=95 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=16) AND fieldID=10;");
Zotero.DB.query("UPDATE itemData SET fieldID=96 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=17) AND fieldID=14;");
Zotero.DB.query("UPDATE itemData SET fieldID=97 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=17) AND fieldID=4;");
Zotero.DB.query("UPDATE itemData SET fieldID=98 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=17) AND fieldID=10;");
Zotero.DB.query("UPDATE itemData SET fieldID=99 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=18) AND fieldID=60;");
Zotero.DB.query("UPDATE itemData SET fieldID=100 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=20) AND fieldID=14;");
Zotero.DB.query("UPDATE itemData SET fieldID=101 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=20) AND fieldID=60;");
Zotero.DB.query("UPDATE itemData SET fieldID=102 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=19) AND fieldID=7;");
Zotero.DB.query("UPDATE itemData SET fieldID=50 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=19) AND fieldID=60;");
Zotero.DB.query("UPDATE itemData SET fieldID=104 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=25) AND fieldID=12;");
Zotero.DB.query("UPDATE itemData SET fieldID=105 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=29) AND fieldID=60;");
Zotero.DB.query("UPDATE itemData SET fieldID=105 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=30) AND fieldID=60;");
Zotero.DB.query("UPDATE itemData SET fieldID=105 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=31) AND fieldID=60;");
Zotero.DB.query("UPDATE itemData SET fieldID=107 WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=23) AND fieldID=12;");
Zotero.DB.query("INSERT OR IGNORE INTO itemData SELECT itemID, 52, value FROM itemData WHERE fieldID IN (14, 52) AND itemID IN (SELECT itemID FROM items WHERE itemTypeID=19) LIMIT 1");
Zotero.DB.query("DELETE FROM itemData WHERE itemID IN (SELECT itemID FROM items WHERE itemTypeID=19) AND fieldID=14");
}
}
_updateSchema('userdata');

View File

@ -577,13 +577,27 @@ Zotero.Search.prototype._buildQuery = function(){
switch (condition['name']){
case 'field':
case 'datefield':
case 'numberfield':
if (!condition['alias']){
break;
}
condSQL += 'fieldID=? AND ';
condSQLParams.push(
Zotero.ItemFields.getID(condition['alias'])
);
var typeFields = Zotero.ItemFields.getTypeFieldsFromBase(condition['alias']);
if (typeFields) {
condSQL += 'fieldID IN (';
for each(var fieldID in typeFields) {
condSQL += '?,';
condSQLParams.push(fieldID);
}
condSQL = condSQL.substr(0, condSQL.length - 1);
condSQL += ') AND ';
}
else {
condSQL += 'fieldID=? AND ';
condSQLParams.push(
Zotero.ItemFields.getID(condition['alias'])
);
}
break;
case 'collectionID':
@ -973,6 +987,7 @@ Zotero.SearchConditions = new function(){
this.get = get;
this.getStandardConditions = getStandardConditions;
this.hasOperator = hasOperator;
this.getLocalizedName = getLocalizedName;
this.parseSearchString = parseSearchString;
this.parseCondition = parseCondition;
@ -980,6 +995,8 @@ Zotero.SearchConditions = new function(){
var _conditions = [];
var _standardConditions = [];
var self = this;
/*
* Define the advanced search operators
*/
@ -1281,23 +1298,29 @@ Zotero.SearchConditions = new function(){
var sortKeys = [];
var sortValues = [];
var baseMappedFields = Zotero.ItemFields.getBaseMappedFields();
// Separate standard conditions for menu display
for (var i in _conditions){
// If explicitly special or a template master (e.g. 'field') or
// no table and not explicitly unspecial, skip
var fieldID = false;
if (['field', 'datefield', 'numberfield'].indexOf(_conditions[i]['name']) != -1) {
fieldID = Zotero.ItemFields.getID(i);
}
// If explicitly special...
if (_conditions[i]['special'] ||
// or a template master (e.g. 'field')...
(_conditions[i]['template'] && i==_conditions[i]['name']) ||
// or no table and not explicitly unspecial...
(!_conditions[i]['table'] &&
typeof _conditions[i]['special'] == 'undefined')){
typeof _conditions[i]['special'] == 'undefined') ||
// or field is a type-specific version of a base field...
(fieldID && baseMappedFields.indexOf(fieldID) != -1)) {
// ...then skip
continue;
}
try {
var localized = Zotero.getString('searchConditions.' + i)
}
catch (e){
var localized = Zotero.getString('itemFields.' + i);
}
var localized = self.getLocalizedName(i);
sortKeys.push(localized);
sortValues[localized] = {
@ -1366,6 +1389,16 @@ Zotero.SearchConditions = new function(){
}
function getLocalizedName(str) {
try {
return Zotero.getString('searchConditions.' + str)
}
catch (e) {
return Zotero.getString('itemFields.' + str);
}
}
/*
* Parses a search into words and "double-quoted phrases"
*

View File

@ -168,7 +168,7 @@ itemFields.issueDate = Issue Date
itemFields.references = References
itemFields.legalStatus = Legal Status
itemFields.codeNumber = Code Number
itemFields.artworkMedium = Artwork Medium
itemFields.artworkMedium = Medium
itemFields.number = Number
itemFields.artworkSize = Artwork Size
itemFields.repository = Repository
@ -199,6 +199,22 @@ itemFields.language = Language
itemFields.programmingLanguage = Language
itemFields.university = University
itemFields.abstract = Abstract
itemFields.websiteTitle = Website Title
itemFields.reportNumber = Report Number
itemFields.billNumber = Bill Number
itemFields.codeVolume = Code Volume
itemFields.codePages = Code Pages
itemFields.dateDecided = Date Decided
itemFields.reporterVolume = Reporter Volume
itemFields.firstPage = First Page
itemFields.documentNumber = Document Number
itemFields.dateEnacted = Date Enacted
itemFields.publicLawNumber = Public Law Number
itemFields.country = Country
itemFields.applicationNumber = Application Number
itemFields.forumTitle = Forum/Listserv Title
itemFields.episodeNumber = Episode Number
itemFields.blogTitle = Blog Title
creatorTypes.author = Author
creatorTypes.contributor = Contributor
@ -279,27 +295,32 @@ searchOperator.isBefore = is before
searchOperator.isAfter = is after
searchOperator.isInTheLast = is in the last
searchConditions.tooltip.fields = Fields:
searchConditions.collectionID = Collection
searchConditions.itemTypeID = Item Type
searchConditions.tag = Tag
searchConditions.note = Note
searchConditions.childNote = Child Note
searchConditions.creator = Creator
searchConditions.type = Type
searchConditions.thesisType = Thesis Type
searchConditions.reportType = Report Type
searchConditions.videoRecordingType = Video Recording Type
searchConditions.audioFileType = Audio File Type
searchConditions.audioRecordingType = Audio Recording Type
searchConditions.letterType = Letter Type
searchConditions.interviewMedium = Interview Medium
searchConditions.manuscriptType = Manuscript Type
searchConditions.presentationType = Presentation Type
searchConditions.mapType = Map Type
searchConditions.medium = Medium
searchConditions.artworkMedium = Artwork Medium
searchConditions.dateModified = Date Modified
searchConditions.fulltextContent = Attachment Content
searchConditions.programmingLanguage = Programming Language
searchConditions.audioFileType = Audio File Type
searchConditions.fileTypeID = Attachment File Type
exportOptions.exportNotes = Export Notes
exportOptions.exportFileData = Export Files

View File

@ -0,0 +1,67 @@
#search-box
{
width: 60em;
}
#search-condition menulist[id="operatorsmenu"]
{
width: 15em;
}
#condition-tooltips tooltip
{
background: red !important;
}
#condition-tooltips row > label
{
font-weight: bold;
}
#search-textbox toolbarbutton
{
padding: 0;
cursor: default;
}
#search-textbox:not([hasOptions=true]) toolbarbutton
{
display: none;
}
#search-textbox .toolbarbutton-text
{
margin: 0;
padding: 0;
}
#search-textbox .toolbarbutton-menu-dropmarker
{
padding: 0 2px;
}
#search-in-the-last textbox
{
min-width: 3em;
}
#zotero-advanced-search-dialog
{
padding: 8px 8px 14px;
height: 400px;
}
#zotero-advanced-search-dialog #zotero-search-buttons
{
margin: 3px 0;
}
#zotero-advanced-search-dialog checkbox
{
margin-right: .5em;
}
#zotero-advanced-search-dialog #zotero-items-tree
{
min-height: 170px;
}

View File

@ -21,7 +21,6 @@
padding:0;
}
#zotero-toolbar-button
{
list-style-image: url('chrome://zotero/skin/zotero-z-24px.png');
@ -54,7 +53,6 @@ toolbar[iconsize="small"] #zotero-toolbar-button:active
/* Bindings */
textbox[type="conditional-timed"]
{
-moz-binding: url('chrome://zotero/content/bindings/conditional-timed-textbox.xml#conditional-timed-textbox');
@ -94,7 +92,6 @@ seealsobox
zoterosearch
{
-moz-binding: url('chrome://zotero/content/bindings/zoterosearch.xml#search-box');
width:60em;
}
zoterotagselector
@ -108,48 +105,17 @@ searchcondition
-moz-binding: url('chrome://zotero/content/bindings/zoterosearch.xml#search-condition');
}
searchcondition menulist[id="operatorsmenu"]
{
width:15em;
}
zoterosearchtextbox
{
-moz-binding: url('chrome://zotero/content/bindings/zoterosearch.xml#search-textbox');
}
zoterosearchtextbox toolbarbutton
{
padding:0;
cursor:default;
}
zoterosearchtextbox:not([hasOptions=true]) toolbarbutton
{
display:none;
}
zoterosearchtextbox .toolbarbutton-text
{
margin:0;
padding:0;
}
zoterosearchtextbox .toolbarbutton-menu-dropmarker
{
padding:0 2px;
}
zoterosearchagefield
{
-moz-binding: url('chrome://zotero/content/bindings/zoterosearch.xml#search-in-the-last');
}
zoterosearchagefield textbox
{
min-width:3em;
}
.zotero-clicky
{
-moz-border-radius: 6px;
@ -217,26 +183,4 @@ zoterosearchagefield textbox
.zotero-scrape-popup-collection
{
list-style-image: url('chrome://zotero/skin/treesource-collection.png');
}
#zotero-advanced-search-dialog
{
padding: 8px 8px 14px;
height: 400px;
}
#zotero-advanced-search-dialog #zotero-search-buttons
{
margin: 3px 0;
}
#zotero-advanced-search-dialog checkbox
{
margin-right: .5em;
}
#zotero-advanced-search-dialog #zotero-items-tree
{
min-height: 170px;
}

View File

@ -1,4 +1,4 @@
-- 12
-- 13
-- This file creates system tables that can be safely wiped and reinitialized
-- at any time, as long as existing ids are preserved.
@ -242,6 +242,24 @@ INSERT INTO fields VALUES (87,'language',NULL);
INSERT INTO fields VALUES (88,'programmingLanguage',NULL);
INSERT INTO fields VALUES (89,'university',NULL);
INSERT INTO fields VALUES (90,'abstract',NULL);
INSERT INTO fields VALUES (91,'websiteTitle',NULL);
INSERT INTO fields VALUES (92,'reportNumber',NULL);
INSERT INTO fields VALUES (93,'billNumber',NULL);
INSERT INTO fields VALUES (94,'codeVolume',NULL);
INSERT INTO fields VALUES (95,'codePages',NULL);
INSERT INTO fields VALUES (96,'dateDecided',NULL);
INSERT INTO fields VALUES (97,'reporterVolume',NULL);
INSERT INTO fields VALUES (98,'firstPage',NULL);
INSERT INTO fields VALUES (99,'documentNumber',NULL);
INSERT INTO fields VALUES (100,'dateEnacted',NULL);
INSERT INTO fields VALUES (101,'publicLawNumber',NULL);
INSERT INTO fields VALUES (102,'country',NULL);
INSERT INTO fields VALUES (103,'applicationNumber',NULL);
INSERT INTO fields VALUES (104,'forumTitle',NULL);
INSERT INTO fields VALUES (105,'episodeNumber',NULL);
INSERT INTO fields VALUES (107,'blogTitle',NULL);
INSERT INTO fields VALUES (108,'type',NULL);
INSERT INTO fields VALUES (109,'medium',NULL);
INSERT INTO itemTypeFields VALUES (2, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (2, 3, NULL, 2);
@ -406,7 +424,7 @@ INSERT INTO itemTypeFields VALUES (12, 27, NULL, 10);
INSERT INTO itemTypeFields VALUES (12, 2, NULL, 11);
INSERT INTO itemTypeFields VALUES (12, 22, NULL, 12);
INSERT INTO itemTypeFields VALUES (13, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (13, 12, NULL, 2);
INSERT INTO itemTypeFields VALUES (13, 91, NULL, 2);
INSERT INTO itemTypeFields VALUES (13, 70, NULL, 3);
INSERT INTO itemTypeFields VALUES (13, 14, NULL, 4);
INSERT INTO itemTypeFields VALUES (13, 1, NULL, 5);
@ -417,12 +435,12 @@ INSERT INTO itemTypeFields VALUES (13, 22, NULL, 9);
INSERT INTO itemTypeFields VALUES (14, 27, NULL, 1);
INSERT INTO itemTypeFields VALUES (14, 1, NULL, 2);
INSERT INTO itemTypeFields VALUES (15, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (15, 60, NULL, 2);
INSERT INTO itemTypeFields VALUES (15, 92, NULL, 2);
INSERT INTO itemTypeFields VALUES (15, 32, NULL, 3);
INSERT INTO itemTypeFields VALUES (15, 28, NULL, 4);
INSERT INTO itemTypeFields VALUES (15, 7, NULL, 5);
INSERT INTO itemTypeFields VALUES (15, 31, NULL, 6);
INSERT INTO itemTypeFields VALUES (15, 14, NULL, 7);
INSERT INTO itemTypeFields VALUES (15, 100, NULL, 7);
INSERT INTO itemTypeFields VALUES (15, 10, NULL, 8);
INSERT INTO itemTypeFields VALUES (15, 87, NULL, 9);
INSERT INTO itemTypeFields VALUES (15, 1, NULL, 10);
@ -433,11 +451,11 @@ INSERT INTO itemTypeFields VALUES (15, 62, NULL, 14);
INSERT INTO itemTypeFields VALUES (15, 2, NULL, 15);
INSERT INTO itemTypeFields VALUES (15, 22, NULL, 16);
INSERT INTO itemTypeFields VALUES (16, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (16, 60, NULL, 2);
INSERT INTO itemTypeFields VALUES (16, 93, NULL, 2);
INSERT INTO itemTypeFields VALUES (16, 36, NULL, 3);
INSERT INTO itemTypeFields VALUES (16, 4, NULL, 4);
INSERT INTO itemTypeFields VALUES (16, 94, NULL, 4);
INSERT INTO itemTypeFields VALUES (16, 15, NULL, 5);
INSERT INTO itemTypeFields VALUES (16, 10, NULL, 6);
INSERT INTO itemTypeFields VALUES (16, 95, NULL, 6);
INSERT INTO itemTypeFields VALUES (16, 41, NULL, 7);
INSERT INTO itemTypeFields VALUES (16, 40, NULL, 8);
INSERT INTO itemTypeFields VALUES (16, 42, NULL, 9);
@ -449,11 +467,11 @@ INSERT INTO itemTypeFields VALUES (16, 2, NULL, 14);
INSERT INTO itemTypeFields VALUES (16, 22, NULL, 15);
INSERT INTO itemTypeFields VALUES (17, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (17, 43, NULL, 2);
INSERT INTO itemTypeFields VALUES (17, 4, NULL, 3);
INSERT INTO itemTypeFields VALUES (17, 97, NULL, 3);
INSERT INTO itemTypeFields VALUES (17, 44, NULL, 4);
INSERT INTO itemTypeFields VALUES (17, 10, NULL, 5);
INSERT INTO itemTypeFields VALUES (17, 98, NULL, 5);
INSERT INTO itemTypeFields VALUES (17, 42, NULL, 6);
INSERT INTO itemTypeFields VALUES (17, 14, NULL, 7);
INSERT INTO itemTypeFields VALUES (17, 96, NULL, 7);
INSERT INTO itemTypeFields VALUES (17, 87, NULL, 8);
INSERT INTO itemTypeFields VALUES (17, 1, NULL, 9);
INSERT INTO itemTypeFields VALUES (17, 27, NULL, 10);
@ -464,7 +482,7 @@ INSERT INTO itemTypeFields VALUES (18, 46, NULL, 2);
INSERT INTO itemTypeFields VALUES (18, 7, NULL, 3);
INSERT INTO itemTypeFields VALUES (18, 8, NULL, 4);
INSERT INTO itemTypeFields VALUES (18, 45, NULL, 5);
INSERT INTO itemTypeFields VALUES (18, 60, NULL, 6);
INSERT INTO itemTypeFields VALUES (18, 99, NULL, 6);
INSERT INTO itemTypeFields VALUES (18, 10, NULL, 7);
INSERT INTO itemTypeFields VALUES (18, 41, NULL, 8);
INSERT INTO itemTypeFields VALUES (18, 40, NULL, 9);
@ -478,10 +496,10 @@ INSERT INTO itemTypeFields VALUES (18, 22, NULL, 16);
INSERT INTO itemTypeFields VALUES (19, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (19, 7, NULL, 2);
INSERT INTO itemTypeFields VALUES (19, 48, NULL, 3);
INSERT INTO itemTypeFields VALUES (19, 60, NULL, 4);
INSERT INTO itemTypeFields VALUES (19, 50, NULL, 4);
INSERT INTO itemTypeFields VALUES (19, 14, NULL, 5);
INSERT INTO itemTypeFields VALUES (19, 10, NULL, 6);
INSERT INTO itemTypeFields VALUES (19, 50, NULL, 7);
INSERT INTO itemTypeFields VALUES (19, 103, NULL, 7);
INSERT INTO itemTypeFields VALUES (19, 51, NULL, 8);
INSERT INTO itemTypeFields VALUES (19, 52, NULL, 9);
INSERT INTO itemTypeFields VALUES (19, 53, NULL, 10);
@ -494,7 +512,7 @@ INSERT INTO itemTypeFields VALUES (19, 22, NULL, 16);
INSERT INTO itemTypeFields VALUES (20, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (20, 36, NULL, 2);
INSERT INTO itemTypeFields VALUES (20, 55, NULL, 3);
INSERT INTO itemTypeFields VALUES (20, 60, NULL, 4);
INSERT INTO itemTypeFields VALUES (20, 101, NULL, 4);
INSERT INTO itemTypeFields VALUES (20, 14, NULL, 5);
INSERT INTO itemTypeFields VALUES (20, 10, NULL, 6);
INSERT INTO itemTypeFields VALUES (20, 15, NULL, 7);
@ -530,7 +548,7 @@ INSERT INTO itemTypeFields VALUES (22, 27, NULL, 15);
INSERT INTO itemTypeFields VALUES (22, 2, NULL, 16);
INSERT INTO itemTypeFields VALUES (22, 22, NULL, 17);
INSERT INTO itemTypeFields VALUES (23, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (23, 12, NULL, 2);
INSERT INTO itemTypeFields VALUES (23, 107, NULL, 2);
INSERT INTO itemTypeFields VALUES (23, 70, NULL, 3);
INSERT INTO itemTypeFields VALUES (23, 14, NULL, 4);
INSERT INTO itemTypeFields VALUES (23, 1, NULL, 5);
@ -546,7 +564,7 @@ INSERT INTO itemTypeFields VALUES (24, 87, NULL, 5);
INSERT INTO itemTypeFields VALUES (24, 2, NULL, 6);
INSERT INTO itemTypeFields VALUES (24, 22, NULL, 7);
INSERT INTO itemTypeFields VALUES (25, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (25, 12, NULL, 2);
INSERT INTO itemTypeFields VALUES (25, 104, NULL, 2);
INSERT INTO itemTypeFields VALUES (25, 79, NULL, 3);
INSERT INTO itemTypeFields VALUES (25, 14, NULL, 4);
INSERT INTO itemTypeFields VALUES (25, 1, NULL, 5);
@ -602,7 +620,7 @@ INSERT INTO itemTypeFields VALUES (28, 27, NULL, 17);
INSERT INTO itemTypeFields VALUES (28, 22, NULL, 18);
INSERT INTO itemTypeFields VALUES (29, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (29, 28, NULL, 2);
INSERT INTO itemTypeFields VALUES (29, 60, NULL, 3);
INSERT INTO itemTypeFields VALUES (29, 105, NULL, 3);
INSERT INTO itemTypeFields VALUES (29, 63, NULL, 4);
INSERT INTO itemTypeFields VALUES (29, 7, NULL, 5);
INSERT INTO itemTypeFields VALUES (29, 78, NULL, 6);
@ -618,7 +636,7 @@ INSERT INTO itemTypeFields VALUES (29, 2, NULL, 15);
INSERT INTO itemTypeFields VALUES (29, 22, NULL, 16);
INSERT INTO itemTypeFields VALUES (30, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (30, 28, NULL, 2);
INSERT INTO itemTypeFields VALUES (30, 60, NULL, 3);
INSERT INTO itemTypeFields VALUES (30, 105, NULL, 3);
INSERT INTO itemTypeFields VALUES (30, 71, NULL, 4);
INSERT INTO itemTypeFields VALUES (30, 7, NULL, 5);
INSERT INTO itemTypeFields VALUES (30, 78, NULL, 6);
@ -634,7 +652,7 @@ INSERT INTO itemTypeFields VALUES (30, 27, NULL, 15);
INSERT INTO itemTypeFields VALUES (30, 22, NULL, 16);
INSERT INTO itemTypeFields VALUES (31, 90, NULL, 1);
INSERT INTO itemTypeFields VALUES (31, 28, NULL, 2);
INSERT INTO itemTypeFields VALUES (31, 60, NULL, 3);
INSERT INTO itemTypeFields VALUES (31, 105, NULL, 3);
INSERT INTO itemTypeFields VALUES (31, 80, NULL, 4);
INSERT INTO itemTypeFields VALUES (31, 77, NULL, 5);
INSERT INTO itemTypeFields VALUES (31, 1, NULL, 6);
@ -727,11 +745,51 @@ INSERT INTO itemTypeFields VALUES (36, 27, NULL, 18);
INSERT INTO itemTypeFields VALUES (36, 2, NULL, 19);
INSERT INTO itemTypeFields VALUES (36, 22, NULL, 20);
INSERT INTO baseFieldMappings VALUES (16, 4, 94); -- bill/volume/codeVolume
INSERT INTO baseFieldMappings VALUES (17, 4, 97); -- case/volume/reporterVolume
INSERT INTO baseFieldMappings VALUES (19, 7, 102); -- patent/place/country
INSERT INTO baseFieldMappings VALUES (7, 8, 89); -- thesis/publisher/university
INSERT INTO baseFieldMappings VALUES (15, 8, 31); -- report/publisher/institution
INSERT INTO baseFieldMappings VALUES (26, 8, 72); -- audioRecording/publisher/label
INSERT INTO baseFieldMappings VALUES (28, 8, 76); -- videoRecording/publisher/studio
INSERT INTO baseFieldMappings VALUES (30, 8, 78); -- radioBroadcast/publisher/network
INSERT INTO baseFieldMappings VALUES (32, 8, 83); -- computerProgram/publisher/company
INSERT INTO baseFieldMappings VALUES (7, 8, 89); -- thesis/publisher/university
INSERT INTO baseFieldMappings VALUES (13, 12, 91); -- webpage/publicationTitle/websiteTitle
INSERT INTO baseFieldMappings VALUES (19, 14, 52); -- patent/date/issueDate
INSERT INTO baseFieldMappings VALUES (16, 10, 95); -- bill/pages/codePages
INSERT INTO baseFieldMappings VALUES (17, 10, 98); -- case/pages/firstPage
INSERT INTO baseFieldMappings VALUES (23, 12, 107); -- blogPost/publicationTitle/blogTitle
INSERT INTO baseFieldMappings VALUES (25, 12, 104); -- forumPost/publicationTitle/forumTitle
INSERT INTO baseFieldMappings VALUES (35, 12, 85); -- encyclopediaEntry/publicationTitle/encyclopediaTitle
INSERT INTO baseFieldMappings VALUES (36, 12, 86); -- dictionaryEntry/publicationTitle/dictionaryTitle
INSERT INTO baseFieldMappings VALUES (17, 14, 96); -- case/date/dateDecided
INSERT INTO baseFieldMappings VALUES (20, 14, 100); -- statute/date/dateEnacted
INSERT INTO baseFieldMappings VALUES (15, 60, 92); -- report/number/reportNumber
INSERT INTO baseFieldMappings VALUES (16, 60, 93); -- bill/number/billNumber
INSERT INTO baseFieldMappings VALUES (18, 60, 99); -- hearing/number/documentNumber
INSERT INTO baseFieldMappings VALUES (19, 60, 50); -- patent/number/patentNumber
INSERT INTO baseFieldMappings VALUES (20, 60, 101); -- statute/number/publicLawNumber
INSERT INTO baseFieldMappings VALUES (29, 60, 105); -- tvBroadcast/number/episodeNumber
INSERT INTO baseFieldMappings VALUES (30, 60, 105); -- radioBroadcast/number/episodeNumber
INSERT INTO baseFieldMappings VALUES (31, 60, 105); -- podcast/number/episodeNumber
INSERT INTO baseFieldMappings VALUES (7, 108, 69); -- thesis/type/thesisType
INSERT INTO baseFieldMappings VALUES (8, 108, 65); -- letter/type/letterType
INSERT INTO baseFieldMappings VALUES (9, 108, 66); -- manuscript/type/manuscriptType
INSERT INTO baseFieldMappings VALUES (11, 108, 63); -- film/type/videoRecordingType
INSERT INTO baseFieldMappings VALUES (13, 108, 70); -- webpage/type/websiteType
INSERT INTO baseFieldMappings VALUES (15, 108, 32); -- report/type/reportType
INSERT INTO baseFieldMappings VALUES (22, 108, 67); -- map/type/mapType
INSERT INTO baseFieldMappings VALUES (23, 108, 70); -- blogPost/type/websiteType
INSERT INTO baseFieldMappings VALUES (25, 108, 79); -- forumPost/type/postType
INSERT INTO baseFieldMappings VALUES (26, 108, 71); -- audioRecording/type/audioRecordingType
INSERT INTO baseFieldMappings VALUES (27, 108, 74); -- presentation/type/presentationType
INSERT INTO baseFieldMappings VALUES (28, 108, 63); -- videoRecording/type/videoRecodingType
INSERT INTO baseFieldMappings VALUES (29, 108, 63); -- tvBroadcast/type/videoRecodingType
INSERT INTO baseFieldMappings VALUES (30, 108, 71); -- radioBroadcast/type/audioRecordingType
INSERT INTO baseFieldMappings VALUES (31, 108, 80); -- podcast/type/audioFileType
INSERT INTO baseFieldMappings VALUES (10, 109, 64); -- interview/medium/interviewMedium
INSERT INTO baseFieldMappings VALUES (12, 109, 59); -- artwork/medium/artworkMedium
INSERT INTO creatorTypes VALUES(1, "author");
INSERT INTO creatorTypes VALUES(2, "contributor");

View File

@ -1,4 +1,4 @@
-- 19
-- 20
-- This file creates tables containing user-specific data -- any changes
-- to existing tables made here must be mirrored in transition steps in