From 34af1dd400a730fc8163f69f53f3283280fdd347 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Wed, 24 Jan 2007 02:31:25 +0000 Subject: [PATCH] Fixes #343, + column does not sort Closes ##399, provide ability to view columns in middle pane for any field that shows up in all item types Added Publisher and Date column options Note that new columns will be out of order until Restore Natural Order is selected Also: - Switched around column XUL ids to make things easier --- chrome/content/zotero/addCitationDialog.xul | 8 ++-- chrome/content/zotero/itemPane.js | 1 + chrome/content/zotero/overlay.xul | 32 ++++++++++------ chrome/content/zotero/selectItemsDialog.xul | 8 ++-- chrome/content/zotero/xpcom/itemTreeView.js | 42 ++++++++++++--------- chrome/locale/en-US/zotero/zotero.dtd | 5 ++- 6 files changed, 58 insertions(+), 38 deletions(-) diff --git a/chrome/content/zotero/addCitationDialog.xul b/chrome/content/zotero/addCitationDialog.xul index 92a69ca749..b288619791 100644 --- a/chrome/content/zotero/addCitationDialog.xul +++ b/chrome/content/zotero/addCitationDialog.xul @@ -69,22 +69,22 @@ onselect="Zotero_Citation_Dialog.treeItemSelected();"> diff --git a/chrome/content/zotero/itemPane.js b/chrome/content/zotero/itemPane.js index 7dc5fe05ae..0bf2fccdcb 100644 --- a/chrome/content/zotero/itemPane.js +++ b/chrome/content/zotero/itemPane.js @@ -358,6 +358,7 @@ var ZoteroItemPane = new function() { var icon = document.createElement('image'); var linkMode = attachments[i].getAttachmentLinkMode(); + var itemType = ''; if(linkMode == Zotero.Attachments.LINK_MODE_IMPORTED_FILE) { itemType = "-file"; diff --git a/chrome/content/zotero/overlay.xul b/chrome/content/zotero/overlay.xul index c52b7b5500..3aafc131e5 100644 --- a/chrome/content/zotero/overlay.xul +++ b/chrome/content/zotero/overlay.xul @@ -187,39 +187,49 @@ flex="1"> - - diff --git a/chrome/content/zotero/selectItemsDialog.xul b/chrome/content/zotero/selectItemsDialog.xul index 7303f32aac..85d580be05 100644 --- a/chrome/content/zotero/selectItemsDialog.xul +++ b/chrome/content/zotero/selectItemsDialog.xul @@ -66,22 +66,22 @@ onselect="onItemSelected();"> diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js index a53517ef6f..365c8fab32 100644 --- a/chrome/content/zotero/xpcom/itemTreeView.js +++ b/chrome/content/zotero/xpcom/itemTreeView.js @@ -347,22 +347,22 @@ Zotero.ItemTreeView.prototype.getCellText = function(row, column) var obj = this._getItemAtRow(row); var val; - if(column.id == "zotero-items-numChildren-column") + if(column.id == "zotero-items-column-numChildren") { var c = obj.numChildren(); if(c) //don't display '0' val = c; } - else if(column.id == "zotero-items-typeIcon-column") + else if(column.id == "zotero-items-column-type") { val = Zotero.getString('itemTypes.'+Zotero.ItemTypes.getName(obj.getType())); } else { - val = obj.getField(column.id.substring(13, column.id.length-7)); + val = obj.getField(column.id.substring(20)); } - if(column.id == 'zotero-items-dateAdded-column' || column.id == 'zotero-items-dateModified-column') //this is not so much that we will use this format for date, but a simple template for later revisions. + if(column.id == 'zotero-items-column-dateAdded' || column.id == 'zotero-items-column-dateModified') //this is not so much that we will use this format for date, but a simple template for later revisions. { val = new Date(Date.parse(val.replace(/-/g,"/"))).toLocaleString(); } @@ -372,7 +372,7 @@ Zotero.ItemTreeView.prototype.getCellText = function(row, column) Zotero.ItemTreeView.prototype.getImageSrc = function(row, col) { - if(col.id == 'zotero-items-title-column') + if(col.id == 'zotero-items-column-title') { return this._getItemAtRow(row).ref.getImageSrc(); } @@ -521,10 +521,9 @@ Zotero.ItemTreeView.prototype.sort = function() column = this._treebox.columns.getFirstColumn(); } var order = column.element.getAttribute('sortDirection') == 'ascending'; - var columnField = column.id.substring(13, column.id.length-7); + var columnField = column.id.substring(20); - if(column.id == 'zotero-items-typeIcon-column') - { + if(columnField == 'type') { function columnSort(a,b) { var typeA = Zotero.getString('itemTypes.'+Zotero.ItemTypes.getName(a.getType())); @@ -533,19 +532,28 @@ Zotero.ItemTreeView.prototype.sort = function() return (typeA > typeB) ? -1 : (typeA < typeB) ? 1 : 0; } } - else if(column.id == 'zotero-items-numNotes-column') - { + else if (columnField == 'numChildren') { function columnSort(a,b) { - return b.numNotes() - a.numNotes(); + return b.numChildren() - a.numChildren(); } } else { + // Some fields (e.g. dates) need to be retrieved unformatted for sorting + switch (columnField) { + case 'date': + var unformatted = true; + break; + + default: + var unformatted = false; + } + function columnSort(a,b) { - var fieldA = a.getField(columnField); - var fieldB = b.getField(columnField); + var fieldA = a.getField(columnField, unformatted); + var fieldB = b.getField(columnField, unformatted); if(typeof fieldA == 'string') { @@ -860,8 +868,8 @@ Zotero.ItemTreeView.prototype.getSortField = function() { if (!column) { return false; } - // zotero.items._________.column - return column.substring(13, column.length-7); + // zotero-items-column-_________ + return column.substring(20); } @@ -1176,9 +1184,9 @@ Zotero.ItemTreeView.TreeRow.prototype.isRegularItem = function() return this.ref.isRegularItem(); } -Zotero.ItemTreeView.TreeRow.prototype.getField = function(field) +Zotero.ItemTreeView.TreeRow.prototype.getField = function(field, unformatted) { - return this.ref.getField(field); + return this.ref.getField(field, unformatted); } Zotero.ItemTreeView.TreeRow.prototype.getType = function() diff --git a/chrome/locale/en-US/zotero/zotero.dtd b/chrome/locale/en-US/zotero/zotero.dtd index aaeca1a3eb..ccfd91bc89 100644 --- a/chrome/locale/en-US/zotero/zotero.dtd +++ b/chrome/locale/en-US/zotero/zotero.dtd @@ -13,11 +13,12 @@ - + + - +