Metadata now is much more compact when not being edited.
Close buttons on the Metadata and Notes. The Collections list no longer throws an exception when the header is clicked. More minor interface improvements.
This commit is contained in:
parent
c561ca129e
commit
c42991a5bf
|
@ -187,6 +187,7 @@ Scholar.FolderTreeView.prototype.getImageSrc = function(row, col) { }
|
|||
Scholar.FolderTreeView.prototype.performAction = function(action) { }
|
||||
Scholar.FolderTreeView.prototype.performActionOnCell = function(action, row, col) { }
|
||||
Scholar.FolderTreeView.prototype.getProgressMode = function(row, col) { }
|
||||
Scholar.FolderTreeView.prototype.cycleHeader = function(column) { }
|
||||
|
||||
Scholar.FolderTreeView.prototype.deleteSelection = function()
|
||||
{
|
||||
|
|
|
@ -2,18 +2,19 @@ MetadataPane = new function()
|
|||
{
|
||||
var _dynamicFields;
|
||||
var _dynamicCreators;
|
||||
var _itemBeingEdited;
|
||||
var _creatorTypes = Scholar.CreatorTypes.getTypes();
|
||||
var _editButton;
|
||||
|
||||
this.init = init;
|
||||
var _itemBeingEdited;
|
||||
var _creatorTypes = Scholar.CreatorTypes.getTypes();
|
||||
|
||||
this.onLoad = onLoad;
|
||||
this.viewItem = viewItem;
|
||||
this.toggleEdit = toggleEdit;
|
||||
this.saveItem = saveItem;
|
||||
this.addCreator = addCreator;
|
||||
this.removeCreator = removeCreator;
|
||||
|
||||
function init()
|
||||
function onLoad()
|
||||
{
|
||||
_metadataPane = document.getElementById('scholar-metadata');
|
||||
_dynamicFields = document.getElementById('editpane-dynamic-fields');
|
||||
|
@ -23,37 +24,41 @@ MetadataPane = new function()
|
|||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Dynamically loads an item
|
||||
*/
|
||||
function viewItem(thisItem)
|
||||
{
|
||||
removeDynamicRows(_dynamicFields);
|
||||
removeDynamicRows(_dynamicCreators);
|
||||
|
||||
var fieldNames = getFullFieldList(thisItem);
|
||||
|
||||
var editingMode = _editButton.checked;
|
||||
|
||||
for(var i = 0; i<fieldNames.length; i++)
|
||||
{
|
||||
if(!thisItem.isPrimaryField(fieldNames[i]) || thisItem.isEditableField(fieldNames[i]))
|
||||
rowValue = thisItem.getField(fieldNames[i]);
|
||||
if(!editingMode || !thisItem.isPrimaryField(fieldNames[i]) || thisItem.isEditableField(fieldNames[i]))
|
||||
{
|
||||
var label = document.createElement("label");
|
||||
label.setAttribute("value",Scholar.getString("itemFields."+fieldNames[i])+":");
|
||||
label.setAttribute("control","dynamic-field-"+i);
|
||||
|
||||
//create the textbox
|
||||
var valueElement = document.createElement("textbox");
|
||||
valueElement.setAttribute("value",thisItem.getField(fieldNames[i]));
|
||||
valueElement.setAttribute("id","dynamic-field-"+i); //just so the label can be assigned to this valueElement
|
||||
valueElement.setAttribute("fieldName",fieldNames[i]); //we will use this later
|
||||
valueElement.setAttribute("disabled",true);
|
||||
|
||||
var row = document.createElement("row");
|
||||
row.appendChild(label);
|
||||
row.appendChild(valueElement);
|
||||
_dynamicFields.appendChild(row);
|
||||
if(editingMode || rowValue)
|
||||
addDynamicField(Scholar.getString("itemFields."+fieldNames[i])+":",rowValue,editingMode ? fieldNames[i] : null);
|
||||
}
|
||||
}
|
||||
|
||||
removeDynamicRows(_dynamicCreators);
|
||||
|
||||
|
||||
for(var i = 0, len=thisItem.numCreators(); i<len; i++)
|
||||
addCreator(thisItem.getCreator(i)['firstName'],thisItem.getCreator(i)['lastName'],thisItem.getCreator(i)['creatorTypeID']);
|
||||
{
|
||||
var creator = thisItem.getCreator(i);
|
||||
if(_editButton.checked)
|
||||
{
|
||||
addCreator(creator['firstName'],creator['lastName'],creator['creatorTypeID']);
|
||||
}
|
||||
else
|
||||
{
|
||||
addDynamicField(Scholar.getString('creatorTypes.'+Scholar.CreatorTypes.getTypeName(creator['creatorTypeID']))+":",
|
||||
creator['firstName']+' '+creator['lastName'],
|
||||
false);
|
||||
}
|
||||
}
|
||||
|
||||
_itemBeingEdited = thisItem;
|
||||
}
|
||||
|
@ -64,30 +69,8 @@ MetadataPane = new function()
|
|||
saveItem();
|
||||
|
||||
_editButton.checked = !_editButton.checked;
|
||||
var disabledElements = [];
|
||||
|
||||
for(var i = 0, row; row = _dynamicFields.childNodes[i]; i++)
|
||||
{
|
||||
disabledElements.push(row.lastChild);
|
||||
}
|
||||
|
||||
for(var i = 0, row; row = _dynamicCreators.childNodes[i]; i++)
|
||||
{
|
||||
for(var j = 0, col; col = row.childNodes[j]; j++)
|
||||
{
|
||||
disabledElements.push(col);
|
||||
}
|
||||
}
|
||||
|
||||
disabledElements.push(document.getElementById('tb-creator-add'));
|
||||
|
||||
for(var i = 0, elem; elem = disabledElements[i]; i++)
|
||||
{
|
||||
if(_editButton.checked)
|
||||
elem.removeAttribute("disabled");
|
||||
else
|
||||
elem.setAttribute("disabled",true);
|
||||
}
|
||||
document.getElementById('metadata-creators-toolbar').hidden = !_editButton.checked;
|
||||
viewItem(_itemBeingEdited);
|
||||
}
|
||||
|
||||
function saveItem()
|
||||
|
@ -113,21 +96,13 @@ MetadataPane = new function()
|
|||
for(var i = creatorRows.length; i < numCreatorsBefore; i++)
|
||||
_itemBeingEdited.setCreator(i, false);
|
||||
|
||||
if(!_itemBeingEdited.getID()) //NEW ITEM
|
||||
{
|
||||
/* get ref to myTreeView?
|
||||
myTreeView._showItem(_itemBeingEdited, 0, myTreeView.rowCount);
|
||||
myTreeView._treebox.rowCountChanged(myTreeView.rowCount-1,1);
|
||||
*/
|
||||
}
|
||||
|
||||
_itemBeingEdited.save();
|
||||
}
|
||||
|
||||
function getFullFieldList(item)
|
||||
{
|
||||
var fields = Scholar.ItemFields.getItemTypeFields(item.getField("itemTypeID"));
|
||||
var fieldNames = new Array("title","dateAdded","dateModified");
|
||||
var fields = Scholar.ItemFields.getItemTypeFields(item.getField("itemTypeID"));
|
||||
for(var i = 0; i<fields.length; i++)
|
||||
fieldNames.push(Scholar.ItemFields.getName(fields[i]));
|
||||
return fieldNames;
|
||||
|
@ -139,6 +114,30 @@ MetadataPane = new function()
|
|||
box.removeChild(box.firstChild);
|
||||
}
|
||||
|
||||
function addDynamicField(labelText, valueText, editable)
|
||||
{
|
||||
var label = document.createElement("label");
|
||||
label.setAttribute("value",labelText);
|
||||
|
||||
var valueElement;
|
||||
if(editable)
|
||||
{
|
||||
valueElement = document.createElement("textbox");
|
||||
valueElement.setAttribute("value",valueText);
|
||||
valueElement.setAttribute("fieldName",editable); //used for identifying the field for saving
|
||||
}
|
||||
else
|
||||
{
|
||||
valueElement = document.createElement("label");
|
||||
valueElement.appendChild(document.createTextNode(valueText));
|
||||
}
|
||||
|
||||
var row = document.createElement("row");
|
||||
row.appendChild(label);
|
||||
row.appendChild(valueElement);
|
||||
_dynamicFields.appendChild(row);
|
||||
}
|
||||
|
||||
function addCreator(firstname, lastname, typeID)
|
||||
{
|
||||
if(!lastname)
|
||||
|
@ -168,22 +167,21 @@ MetadataPane = new function()
|
|||
type.appendChild(typeMenu);
|
||||
|
||||
var remove = document.createElement("toolbarbutton");
|
||||
remove.setAttribute("label","x");
|
||||
remove.setAttribute("label","-");
|
||||
remove.setAttribute("class","addremove");
|
||||
remove.setAttribute("oncommand","MetadataPane.removeCreator(this.parentNode);");
|
||||
|
||||
if(!_editButton.checked)
|
||||
{
|
||||
first.setAttribute("disabled",true);
|
||||
last.setAttribute("disabled",true);
|
||||
type.setAttribute("disabled",true);
|
||||
remove.setAttribute("disabled",true);
|
||||
}
|
||||
var add = document.createElement("toolbarbutton");
|
||||
add.setAttribute("label","+");
|
||||
remove.setAttribute("class","addremove");
|
||||
add.setAttribute("oncommand","MetadataPane.addCreator();");
|
||||
|
||||
var row = document.createElement("row");
|
||||
row.appendChild(first);
|
||||
row.appendChild(last);
|
||||
row.appendChild(type);
|
||||
row.appendChild(remove);
|
||||
row.appendChild(add);
|
||||
_dynamicCreators.appendChild(row);
|
||||
|
||||
}
|
||||
|
@ -194,4 +192,4 @@ MetadataPane = new function()
|
|||
}
|
||||
}
|
||||
|
||||
addEventListener("load", function(e) { MetadataPane.init(e); }, false);
|
||||
addEventListener("load", function(e) { MetadataPane.onLoad(e); }, false);
|
||||
|
|
|
@ -15,23 +15,27 @@
|
|||
<rows id="editpane-dynamic-fields">
|
||||
</rows>
|
||||
</grid>
|
||||
<toolbar id="metadata-creators-toolbar" hidden="true">
|
||||
<label value="Creators"/>
|
||||
<spacer flex="1"/>
|
||||
<toolbarbutton label="+" oncommand="MetadataPane.addCreator()"/>
|
||||
</toolbar>
|
||||
<grid>
|
||||
<columns>
|
||||
<column flex="1"/>
|
||||
<column flex="1"/>
|
||||
<column/>
|
||||
<column/>
|
||||
<column/>
|
||||
</columns>
|
||||
|
||||
<rows id="editpane-dynamic-creators">
|
||||
</rows>
|
||||
</grid>
|
||||
<spacer flex="1"/>
|
||||
<toolbar>
|
||||
<toolbar id="metadata-toolbar">
|
||||
<toolbarbutton id="metadata-pane-edit-button" label="Edit" oncommand="MetadataPane.toggleEdit()"/>
|
||||
<spacer flex="1" />
|
||||
<toolbarbutton id="tb-creator-add" label="Add Creator" oncommand="MetadataPane.addCreator()" disabled="true"/>
|
||||
|
||||
</toolbar>
|
||||
</vbox>
|
||||
|
||||
|
|
|
@ -21,8 +21,19 @@
|
|||
|
||||
<window id="main-window">
|
||||
<vbox id="scholar-floater" hidden="true">
|
||||
<vbox id="scholar-metadata"/>
|
||||
<vbox id="scholar-metadata">
|
||||
<toolbar>
|
||||
<label value="Metadata"/>
|
||||
<spacer flex="1"/>
|
||||
<toolbarbutton class="tabs-closebutton" oncommand="ScholarPane.toggleView('metadata')"/>
|
||||
</toolbar>
|
||||
</vbox>
|
||||
<vbox id="scholar-notes">
|
||||
<toolbar>
|
||||
<label value="Notes"/>
|
||||
<spacer flex="1"/>
|
||||
<toolbarbutton class="tabs-closebutton" oncommand="ScholarPane.toggleView('notes')"/>
|
||||
</toolbar>
|
||||
<textbox value="Notes.... lorem ispum delorum..." multiline="true" flex="1"/>
|
||||
</vbox>
|
||||
</vbox>
|
||||
|
|
|
@ -74,15 +74,26 @@ tree #items-tree
|
|||
max-width: 400px;
|
||||
}
|
||||
|
||||
#scholar-metadata
|
||||
#scholar-floater vbox:first-child
|
||||
{
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#scholar-metadata toolbar
|
||||
#scholar-metadata
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#metadata-toolbar
|
||||
{
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
#scholar-metadata .addremove
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#scholar-notes
|
||||
{
|
||||
height: 100px;
|
||||
|
|
Loading…
Reference in New Issue
Block a user