diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IReference.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IReference.java index 51df38522..5173b65ce 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IReference.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IReference.java @@ -57,5 +57,10 @@ public interface IReference extends IVSpaceElement { void setId(String id); String getId(); + + void setVisibility(boolean visible); + + boolean getVisibility(); + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Reference.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Reference.java index df3aef041..5f2dacbd7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Reference.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/Reference.java @@ -53,6 +53,8 @@ public class Reference extends VSpaceElement implements IReference { private String type; private String note; + + private boolean visibility; @Override public String getTitle() { @@ -182,4 +184,13 @@ public void setBiblios(List biblios) { this.biblios = biblios; } + @Override + public void setVisibility(boolean visibility) { + this.visibility = visibility; + } + + @Override + public boolean getVisibility() { + return visibility; + } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ReferenceData.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ReferenceData.java index 8a43372ad..290b63858 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ReferenceData.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/ReferenceData.java @@ -13,6 +13,7 @@ public class ReferenceData { private String editors; private String type; private String note; + private String visibility; public String getTitle() { @@ -81,5 +82,11 @@ public String getNote() { public void setNote(String note) { this.note = note; } + public String getVisibility() { + return note; + } + public void setVisibility(String visibility) { + this.visibility = visibility; + } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IReferenceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IReferenceManager.java index b11361241..ef990a775 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IReferenceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IReferenceManager.java @@ -10,7 +10,7 @@ public interface IReferenceManager { IReference getReference(String referenceId); - IReference createReference(String biblioId, String title, String author,String year,String journal, String url, String volume,String issue, String pages,String editor, String type, String note); + IReference createReference(String biblioId, String title, String author,String year,String journal, String url, String volume,String issue, String pages,String editor, String type, String note, String visibility); void updateReference(IReference reference); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ReferenceManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ReferenceManager.java index 34e23a74f..fcb2c6f37 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ReferenceManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ReferenceManager.java @@ -29,7 +29,8 @@ public class ReferenceManager implements IReferenceManager { private IContentBlockManager contentBlockManager; @Override - public IReference createReference(String biblioId, String title, String author,String year,String journal, String url, String volume,String issue, String pages,String editor, String type, String note) { + public IReference createReference(String biblioId, String title, String author,String year,String journal, String url, String volume,String issue, String pages,String editor, String type, String note, String visibility) { + IReference reference = new Reference(); reference.setAuthor(author); reference.setTitle(title); @@ -42,6 +43,13 @@ public IReference createReference(String biblioId, String title, String author,S reference.setEditors(editor); reference.setType(type); reference.setNote(note); + if(visibility == "Private") { + reference.setVisibility(false); + } + else { + reference.setVisibility(true); + } + BiblioBlock biblio = contentBlockManager.getBiblioBlock(biblioId); reference.getBiblios().add(biblio); return referenceRepo.save((Reference) reference); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddReferenceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddReferenceController.java index 7ddc0eb2b..2ff35628b 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddReferenceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddReferenceController.java @@ -23,7 +23,8 @@ public class AddReferenceController { @RequestMapping(value = "/staff/module/{id}/slide/{slideId}/bibliography/{biblioId}/reference/add", method = RequestMethod.POST) - public ResponseEntity addReference(@PathVariable("id") String moduleId, + public ResponseEntity addReference(@PathVariable("id") String moduleId, + @PathVariable("slideId") String slideId, @PathVariable("biblioId") String biblioId, @RequestBody ReferenceData referenceData, @@ -40,9 +41,10 @@ public ResponseEntity addReference(@PathVariable("id") String module referenceData.getPages(), referenceData.getEditors(), referenceData.getType(), - referenceData.getNote() + referenceData.getNote(), + referenceData.getVisibility() ); - return ResponseEntity.ok(ref); + return ResponseEntity.ok((Reference) ref); } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditReferenceController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditReferenceController.java index e0fc54c0d..2d27d8ac8 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditReferenceController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditReferenceController.java @@ -65,7 +65,6 @@ public ResponseEntity editReference(@PathVariable("id") String slideId, reference.setEditors(editor); reference.setType(type); reference.setNote(note); - referenceManager.updateReference(reference); return new ResponseEntity(HttpStatus.OK); } diff --git a/vspace/src/main/webapp/WEB-INF/views/exhibition/module.html b/vspace/src/main/webapp/WEB-INF/views/exhibition/module.html index f30770549..0497c8a8f 100644 --- a/vspace/src/main/webapp/WEB-INF/views/exhibition/module.html +++ b/vspace/src/main/webapp/WEB-INF/views/exhibition/module.html @@ -133,6 +133,30 @@ function closeModal(){ $("#moduleOverviewModal").hide(); } + + document.addEventListener('DOMContentLoaded', function() { + const sortSelect = document.getElementById('referenceSort'); + const refList = document.getElementById('referenceList'); + + sortSelect.addEventListener('change', function() { + const sortBy = this.value; + let items = Array.from(refList.getElementsByTagName('li')); + + items.sort((a, b) => { + const aValue = a.querySelector('.referenceDiv').getAttribute('data-' + sortBy); + const bValue = b.querySelector('.referenceDiv').getAttribute('data-' + sortBy); + + if (sortBy === 'year') { + return parseInt(aValue) - parseInt(bValue); + } else { + return aValue.localeCompare(bValue); + } + }); + + refList.innerHTML = ''; + items.forEach(item => refList.appendChild(item)); + }); + });