diff --git a/chrome/content/zotero-platform/mac/itembox.css b/chrome/content/zotero-platform/mac/itembox.css
index cd73a6b30c..8ff82d5a86 100644
--- a/chrome/content/zotero-platform/mac/itembox.css
+++ b/chrome/content/zotero-platform/mac/itembox.css
@@ -3,7 +3,7 @@ scrollbox
padding-top: 3px;
}
-row > label:first-child, .creator-type-label
+row > label:first-child, .creator-type-label, #more-creators-label
{
color: #7f7f7f;
}
diff --git a/chrome/content/zotero/bindings/itembox.xml b/chrome/content/zotero/bindings/itembox.xml
index cdf4c80601..a48b4ae0e7 100644
--- a/chrome/content/zotero/bindings/itembox.xml
+++ b/chrome/content/zotero/bindings/itembox.xml
@@ -52,6 +52,9 @@
+ 10
+
+
"view"
@@ -113,6 +116,12 @@
if (!(val instanceof Zotero.Item)) {
throw (".item must be a Zotero.Item");
}
+
+ // When changing items, reset truncation of creator list
+ if (!this._item || val.id != this._item.id) {
+ this._displayAllCreators = false;
+ }
+
this._item = val;
this.refresh();
]]>
@@ -509,20 +518,46 @@
}
this._creatorCount = 0;
- if (this.item.numCreators() > 0) {
- for (var i = 0, len=this.item.numCreators(); i 0) {
+ var max = Math.min(num, this._initialVisibleCreators);
+ // If fewer than five more, just display
+ if (num < max + 5 || this._displayAllCreators) {
+ max = num;
+ }
+ for (var i = 0; i < max; i++) {
this.addCreatorRow(this.item.getCreator(i).ref,
this.item.getCreator(i).creatorTypeID);
+
+ if (i == max - 2) {
+ this.disableCreatorAddButtons();
+ }
}
- if (this._addCreatorRow) {
- this.addCreatorRow(false, false, true);
- this._addCreatorRow = false;
+ // Additional creators not displayed
+ if (num > max) {
+ this.addMoreCreatorsRow(num - max);
+
+ this.disableCreatorAddButtons();
+ }
+ else {
+ // If we didn't start with creators truncated,
+ // don't truncate for as long as we're viewing
+ // this item, so that added creators aren't
+ // immediately hidden
+ this._displayAllCreators = true;
+
+ if (this._addCreatorRow) {
+ this.addCreatorRow(false, false, true);
+ this._addCreatorRow = false;
+ this.disableCreatorAddButtons();
+ }
}
}
else if (this.editable && Zotero.CreatorTypes.itemTypeHasCreators(this.item.itemTypeID)) {
// Add default row
this.addCreatorRow(false, false, true, true);
+ this.disableCreatorAddButtons();
}
// Move to next or previous field if (shift-)tab was pressed
@@ -636,12 +671,6 @@
};
}
- // Disable the "+" button on previous rows
- var elems = this._dynamicFields.getElementsByAttribute('value', '+');
- if (elems.length) {
- this.disableButton(elems[elems.length-1]);
- }
-
if (creator.fieldMode == 1) {
var firstName = '';
var lastName = creator.lastName ? creator.lastName : this._defaultFullName;
@@ -774,6 +803,27 @@
+
+
+
+
+
+
+
@@ -1117,18 +1167,31 @@