Disable creator add button on previous row when adding a new row (since bad things can happen if we don't) and undo on reverse
This commit is contained in:
parent
57f4e43507
commit
03d8097527
1 changed files with 41 additions and 12 deletions
|
@ -39,6 +39,7 @@ ScholarItemPane = new function()
|
|||
this.changeTypeTo = changeTypeTo;
|
||||
this.onOpenURLClick = onOpenURLClick;
|
||||
this.addCreatorRow = addCreatorRow;
|
||||
this.disableButton = disableButton;
|
||||
this.removeCreator = removeCreator;
|
||||
this.showEditor = showEditor;
|
||||
this.hideEditor = hideEditor;
|
||||
|
@ -153,12 +154,14 @@ ScholarItemPane = new function()
|
|||
}
|
||||
else
|
||||
{
|
||||
// Add default row
|
||||
addCreatorRow('', '', 1, true, true);
|
||||
}
|
||||
}
|
||||
|
||||
// Notes pane
|
||||
else if(index == 1)
|
||||
{
|
||||
//NOTES:
|
||||
while(_notesList.hasChildNodes())
|
||||
_notesList.removeChild(_notesList.firstChild);
|
||||
|
||||
|
@ -196,9 +199,10 @@ ScholarItemPane = new function()
|
|||
|
||||
_updateNoteCount();
|
||||
}
|
||||
|
||||
// Attachments pane
|
||||
else if(index == 2)
|
||||
{
|
||||
//ATTACHMENTS
|
||||
while(_attachmentsList.hasChildNodes())
|
||||
_attachmentsList.removeChild(_attachmentsList.firstChild);
|
||||
|
||||
|
@ -254,14 +258,16 @@ ScholarItemPane = new function()
|
|||
_updateAttachmentCount();
|
||||
|
||||
}
|
||||
|
||||
// Tags pane
|
||||
else if(index == 3)
|
||||
{
|
||||
//TAGS:
|
||||
_tagsBox.item = _itemBeingEdited;
|
||||
}
|
||||
|
||||
// Related pane
|
||||
else if(index == 4)
|
||||
{
|
||||
//RELATED
|
||||
_relatedBox.item = _itemBeingEdited;
|
||||
}
|
||||
}
|
||||
|
@ -294,6 +300,12 @@ ScholarItemPane = new function()
|
|||
|
||||
function addCreatorRow(firstName, lastName, typeID, unsaved, defaultRow)
|
||||
{
|
||||
// Disable the "+" button on previous rows
|
||||
var elems = _dynamicFields.getElementsByAttribute('value', '+');
|
||||
if (elems.length){
|
||||
ScholarItemPane.disableButton(elems[elems.length-1]);
|
||||
}
|
||||
|
||||
if(!firstName)
|
||||
firstName = "(" + Scholar.getString('pane.item.defaultFirstName') + ")";
|
||||
if(!lastName)
|
||||
|
@ -304,7 +316,7 @@ ScholarItemPane = new function()
|
|||
label.setAttribute("fieldname",'creator-'+_creatorCount+'-typeID');
|
||||
label.className = 'clicky';
|
||||
|
||||
// getCreatorFields() needs to be adjusted if the DOM changes
|
||||
// getCreatorFields() needs to be adjusted if this DOM structure changes
|
||||
var row = document.createElement("hbox");
|
||||
|
||||
var firstlast = document.createElement("hbox");
|
||||
|
@ -315,9 +327,9 @@ ScholarItemPane = new function()
|
|||
|
||||
var removeButton = document.createElement('label');
|
||||
removeButton.setAttribute("value","-");
|
||||
// If default first row, don't let user remove it
|
||||
if (defaultRow){
|
||||
removeButton.setAttribute("disabled",true);
|
||||
removeButton.setAttribute("class","unclicky");
|
||||
disableButton(removeButton);
|
||||
}
|
||||
else {
|
||||
removeButton.setAttribute("class","clicky");
|
||||
|
@ -327,15 +339,14 @@ ScholarItemPane = new function()
|
|||
|
||||
var addButton = document.createElement('label');
|
||||
addButton.setAttribute("value","+");
|
||||
// If row isn't saved, don't let user add more
|
||||
if (unsaved)
|
||||
{
|
||||
addButton.setAttribute("disabled",true);
|
||||
addButton.setAttribute("class","unclicky");
|
||||
disableButton(addButton);
|
||||
}
|
||||
else
|
||||
{
|
||||
addButton.setAttribute("class","clicky");
|
||||
addButton.setAttribute("onclick","ScholarItemPane.addCreatorRow('','',1,true);");
|
||||
_enablePlusButton(addButton);
|
||||
}
|
||||
row.appendChild(addButton);
|
||||
|
||||
|
@ -344,6 +355,20 @@ ScholarItemPane = new function()
|
|||
addDynamicRow(label, row, true);
|
||||
}
|
||||
|
||||
function disableButton(button)
|
||||
{
|
||||
button.setAttribute('disabled', true);
|
||||
button.setAttribute('class', 'unclicky');
|
||||
button.setAttribute('onclick', false);
|
||||
}
|
||||
|
||||
function _enablePlusButton(button)
|
||||
{
|
||||
button.setAttribute('disabled', false);
|
||||
button.setAttribute("class","clicky");
|
||||
button.setAttribute("onclick","ScholarItemPane.disableButton(this); ScholarItemPane.addCreatorRow('','',1,true);");
|
||||
}
|
||||
|
||||
function createValueElement(valueText, fieldName)
|
||||
{
|
||||
var valueElement = document.createElement("label");
|
||||
|
@ -373,6 +398,11 @@ ScholarItemPane = new function()
|
|||
// If unsaved row, just remove element
|
||||
if (!_itemBeingEdited.hasCreatorAt(index)){
|
||||
labelToDelete.parentNode.removeChild(labelToDelete);
|
||||
|
||||
// Enable the "+" button on the previous row
|
||||
var elems = _dynamicFields.getElementsByAttribute('value', '+');
|
||||
_enablePlusButton(elems[elems.length-1]);
|
||||
|
||||
_creatorCount--;
|
||||
return;
|
||||
}
|
||||
|
@ -471,7 +501,6 @@ ScholarItemPane = new function()
|
|||
var label1 = row.getElementsByTagName('hbox')[0].firstChild.firstChild;
|
||||
var label2 = label1.nextSibling;
|
||||
|
||||
// doesn't currently return creator type, since we don't need it anywhere
|
||||
return {
|
||||
lastName: label1.firstChild ? label1.firstChild.nodeValue
|
||||
// Strip trailing comma
|
||||
|
|
Loading…
Reference in a new issue