From 36843b0ac3b5b1b99ed4c4285bf3aabdcf8f30f7 Mon Sep 17 00:00:00 2001 From: Pradeep Date: Wed, 5 May 2021 16:28:22 -0700 Subject: [PATCH 001/114] [VSPC-147] Intial changes and new files created for Bibliography block in slides --- .../core/data/BiblioBlockRepository.java | 13 ++ .../core/factory/IBiblioBlockFactory.java | 10 + .../core/factory/impl/BiblioBlockFactory.java | 24 +++ .../vspace/core/model/IBiblioBlock.java | 25 +++ .../vspace/core/model/impl/BiblioBlock.java | 89 +++++++++ .../core/services/IContentBlockManager.java | 10 + .../services/impl/ContentBlockManager.java | 46 +++++ .../web/staff/AddBiblioBlockController.java | 35 ++++ .../views/staff/modules/slides/slide.html | 173 +++++++++++++++++- 9 files changed, 421 insertions(+), 4 deletions(-) create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/data/BiblioBlockRepository.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/IBiblioBlockFactory.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/BiblioBlockFactory.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/IBiblioBlock.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/BiblioBlock.java create mode 100644 vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddBiblioBlockController.java diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/data/BiblioBlockRepository.java b/vspace/src/main/java/edu/asu/diging/vspace/core/data/BiblioBlockRepository.java new file mode 100644 index 000000000..5ee3ae26c --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/data/BiblioBlockRepository.java @@ -0,0 +1,13 @@ +package edu.asu.diging.vspace.core.data; + +import org.javers.spring.annotation.JaversSpringDataAuditable; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.stereotype.Repository; + +import edu.asu.diging.vspace.core.model.impl.BiblioBlock; + +@Repository +@JaversSpringDataAuditable +public interface BiblioBlockRepository extends PagingAndSortingRepository { + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IBiblioBlockFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IBiblioBlockFactory.java new file mode 100644 index 000000000..59847d956 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/IBiblioBlockFactory.java @@ -0,0 +1,10 @@ +package edu.asu.diging.vspace.core.factory; + +import edu.asu.diging.vspace.core.model.IBiblioBlock; +import edu.asu.diging.vspace.core.model.ISlide; + +public interface IBiblioBlockFactory { + + IBiblioBlock createBiblioBlock(ISlide slide, IBiblioBlock biblioBlockData); + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/BiblioBlockFactory.java b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/BiblioBlockFactory.java new file mode 100644 index 000000000..602bef4b0 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/factory/impl/BiblioBlockFactory.java @@ -0,0 +1,24 @@ +package edu.asu.diging.vspace.core.factory.impl; + +import org.springframework.stereotype.Service; + +import edu.asu.diging.vspace.core.factory.IBiblioBlockFactory; +import edu.asu.diging.vspace.core.model.IBiblioBlock; +import edu.asu.diging.vspace.core.model.ISlide; + +@Service +public class BiblioBlockFactory implements IBiblioBlockFactory { + + /* + * (non-Javadoc) + * + * @see + * edu.asu.diging.vspace.core.factory.impl.IBiblioBlockFactory#createBiblioBlock( + * java.lang.String, ) + */ + @Override + public IBiblioBlock createBiblioBlock(ISlide slide, IBiblioBlock biblioBlockData) { + return biblioBlockData; + } + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IBiblioBlock.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IBiblioBlock.java new file mode 100644 index 000000000..537042cd0 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IBiblioBlock.java @@ -0,0 +1,25 @@ +package edu.asu.diging.vspace.core.model; + +public interface IBiblioBlock extends IContentBlock { + + void setTitle(String title); + + String getTitle(); + + void setAuthor(String author); + + String getAuthor(); + + int getYear(); + + void setYear(int year); + + String getJournal(); + + void setJournal(String journal); + + void setId(String id); + + String getId(); + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/BiblioBlock.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/BiblioBlock.java new file mode 100644 index 000000000..609921d6e --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/BiblioBlock.java @@ -0,0 +1,89 @@ +package edu.asu.diging.vspace.core.model.impl; + +import javax.persistence.Entity; +import javax.persistence.Lob; +import javax.persistence.Transient; + +import org.commonmark.node.Node; +import org.commonmark.parser.Parser; +import org.commonmark.renderer.html.HtmlRenderer; + +import edu.asu.diging.vspace.core.model.IBiblioBlock; +import edu.asu.diging.vspace.core.model.ITextBlock; + +@Entity +public class BiblioBlock extends ContentBlock implements IBiblioBlock { + + @Lob + private String title; + + @Lob + private String author; + + @Lob + private int year; + + @Lob + private String journal; + + + /* + * (non-Javadoc) + * + * @see edu.asu.diging.vspace.core.model.impl.IBiblioBlock#getTitle() + */ + @Override + public String getTitle() { + return title; + } + + /* + * (non-Javadoc) + * + * @see + * edu.asu.diging.vspace.core.model.impl.IBiblioBlock#setTitle(java.lang.String) + */ + @Override + public void setTitle(String title) { + this.title = title; + } + + @Transient + public String htmlRenderedText() { + Parser parser = Parser.builder().build(); + Node document = parser.parse(title); + HtmlRenderer renderer = HtmlRenderer.builder().build(); + return renderer.render(document); + } + + @Override + public void setAuthor(String author) { + this.author = author; + } + + @Override + public String getAuthor() { + return author; + } + + @Override + public int getYear() { + return year; + } + + @Override + public void setYear(int year) { + this.year = year; + } + + @Override + public String getJournal() { + return journal; + } + + @Override + public void setJournal(String journal) { + this.journal = journal; + } + +} diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IContentBlockManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IContentBlockManager.java index f39fbe3aa..ab8d4d3a2 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/IContentBlockManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/IContentBlockManager.java @@ -4,10 +4,12 @@ import edu.asu.diging.vspace.core.exception.BlockDoesNotExistException; import edu.asu.diging.vspace.core.exception.ImageCouldNotBeStoredException; +import edu.asu.diging.vspace.core.model.IBiblioBlock; import edu.asu.diging.vspace.core.model.IChoiceBlock; import edu.asu.diging.vspace.core.model.IContentBlock; import edu.asu.diging.vspace.core.model.IImageBlock; import edu.asu.diging.vspace.core.model.ITextBlock; +import edu.asu.diging.vspace.core.model.impl.BiblioBlock; import edu.asu.diging.vspace.core.model.impl.TextBlock; import edu.asu.diging.vspace.core.services.impl.CreationReturnValue; @@ -17,20 +19,28 @@ public interface IContentBlockManager { CreationReturnValue createImageBlock(String slideId, byte[] image, String filename, Integer contentOrder) throws ImageCouldNotBeStoredException; + + IBiblioBlock createBiblioBlock(String slideId, IBiblioBlock biblioData); List getAllContentBlocks(String slideId); void deleteTextBlockById(String blockid) throws BlockDoesNotExistException; void deleteImageBlockById(String blockid) throws BlockDoesNotExistException; + + void deleteBiblioBlockById(String blockid) throws BlockDoesNotExistException; void deleteChoiceBlockById(String blockid) throws BlockDoesNotExistException; void updateTextBlock(TextBlock textBlock); + + void updateBiblioBlock(BiblioBlock biblioBlock); IImageBlock getImageBlock(String imgBlockId); ITextBlock getTextBlock(String textBlockId); + + IBiblioBlock getBiblioBlock(String biblioBlockId); IChoiceBlock getChoiceBlock(String choiceBlockId); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ContentBlockManager.java b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ContentBlockManager.java index 0a62a9106..df5da8bb7 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ContentBlockManager.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/services/impl/ContentBlockManager.java @@ -12,6 +12,7 @@ import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.stereotype.Service; +import edu.asu.diging.vspace.core.data.BiblioBlockRepository; import edu.asu.diging.vspace.core.data.ChoiceContentBlockRepository; import edu.asu.diging.vspace.core.data.ImageContentBlockRepository; import edu.asu.diging.vspace.core.data.ImageRepository; @@ -19,11 +20,13 @@ import edu.asu.diging.vspace.core.exception.BlockDoesNotExistException; import edu.asu.diging.vspace.core.exception.FileStorageException; import edu.asu.diging.vspace.core.exception.ImageCouldNotBeStoredException; +import edu.asu.diging.vspace.core.factory.IBiblioBlockFactory; import edu.asu.diging.vspace.core.factory.IChoiceBlockFactory; import edu.asu.diging.vspace.core.factory.IImageBlockFactory; import edu.asu.diging.vspace.core.factory.IImageFactory; import edu.asu.diging.vspace.core.factory.ITextBlockFactory; import edu.asu.diging.vspace.core.file.IStorageEngine; +import edu.asu.diging.vspace.core.model.IBiblioBlock; import edu.asu.diging.vspace.core.model.IChoice; import edu.asu.diging.vspace.core.model.IChoiceBlock; import edu.asu.diging.vspace.core.model.IContentBlock; @@ -31,6 +34,7 @@ import edu.asu.diging.vspace.core.model.ISlide; import edu.asu.diging.vspace.core.model.ITextBlock; import edu.asu.diging.vspace.core.model.IVSImage; +import edu.asu.diging.vspace.core.model.impl.BiblioBlock; import edu.asu.diging.vspace.core.model.impl.ChoiceBlock; import edu.asu.diging.vspace.core.model.impl.ImageBlock; import edu.asu.diging.vspace.core.model.impl.TextBlock; @@ -50,6 +54,9 @@ public class ContentBlockManager implements IContentBlockManager { @Autowired private ITextBlockFactory textBlockFactory; + + @Autowired + private IBiblioBlockFactory biblioBlockFactory; @Autowired private IImageBlockFactory imageBlockFactory; @@ -62,6 +69,9 @@ public class ContentBlockManager implements IContentBlockManager { @Autowired private TextContentBlockRepository textBlockRepo; + + @Autowired + private BiblioBlockRepository biblioBlockRepo; @Autowired private ImageContentBlockRepository imageBlockRepo; @@ -266,4 +276,40 @@ public IChoiceBlock createChoiceBlock(String slideId, List selectedChoic return choiceBlockRepo.save((ChoiceBlock)choiceBlock); } + @Override + public IBiblioBlock createBiblioBlock(String slideId, IBiblioBlock biblioData) { + ISlide slide = slideManager.getSlide(slideId); + IBiblioBlock biblioBlock = biblioBlockFactory.createBiblioBlock(slide, biblioData); + biblioBlock = biblioBlockRepo.save((BiblioBlock) biblioBlock); + return biblioBlock; + } + + @Override + public void deleteBiblioBlockById(String id) throws BlockDoesNotExistException { + if (id == null) { + return; + } + try { + biblioBlockRepo.deleteById(id); + } catch (EmptyResultDataAccessException e) { + throw new BlockDoesNotExistException(e); + } + } + + @Override + public void updateBiblioBlock(BiblioBlock biblioBlock) { + biblioBlockRepo.save((BiblioBlock) biblioBlock); + } + + @Override + public IBiblioBlock getBiblioBlock(String biblioBlockId) { + Optional biblioBlock = biblioBlockRepo.findById(biblioBlockId); + if (biblioBlock.isPresent()) { + return biblioBlock.get(); + } + return null; + } + + + } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddBiblioBlockController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddBiblioBlockController.java new file mode 100644 index 000000000..fa7561e97 --- /dev/null +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/AddBiblioBlockController.java @@ -0,0 +1,35 @@ +package edu.asu.diging.vspace.web.staff; + +import java.io.IOException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; + +import edu.asu.diging.vspace.core.model.IBiblioBlock; +import edu.asu.diging.vspace.core.model.ITextBlock; +import edu.asu.diging.vspace.core.model.impl.BiblioBlock; +import edu.asu.diging.vspace.core.services.IContentBlockManager; + +@Controller +public class AddBiblioBlockController { + + @Autowired + private IContentBlockManager contentBlockManager; + + @RequestMapping(value = "/staff/module/{moduleId}/slide/{id}/bibliography", method = RequestMethod.POST) + public ResponseEntity addTextBlock(@PathVariable("id") String slideId, + @PathVariable("moduleId") String moduleId, @RequestBody BiblioBlock biblioBlockData) throws IOException { + + IBiblioBlock biblioBlock = contentBlockManager.createBiblioBlock(slideId, biblioBlockData); + + return new ResponseEntity<>(biblioBlock.getId(), HttpStatus.OK); + } + +} \ No newline at end of file diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html index e7c631327..ff3838da7 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html @@ -289,6 +289,10 @@ uploadImage(); }); + $("#addBibliography").click(function() { + $("#addBiblioAlert").show(); + }); + $("#addChoice").click(function() { $("#addChoiceAlert").show(); }); @@ -329,6 +333,10 @@ $("#confirmDeleteImageAlert").hide(); }); + $("#cancelSubmitBiblio").click(function() { + $("#addBiblioAlert").hide(); + }); + $("#cancelDeleteChoiceBlock").click(function() { $("#confirmDeleteChoiceBlockAlert").find('input').remove(); $("#confirmDeleteTextAlert").find('input').remove(); @@ -492,6 +500,51 @@ }); }); + /* $("#sendBiblioForm").on('submit', function(e){ */ + $("#submitBiblio").on("click", function(e) { + e.preventDefault(); + // ------------- creating Bibliography content blocks ------------ + + var formData = new FormData(); + alert($("#titleBiblio").val()); + formData.append('title', $("#titleBiblio").val()); + formData.append('author', $("#authorBiblio").val()); + formData.append('year', $("#yearBiblio").val()); + formData.append('journal', $("#journalBiblio").val()); + + $("#addBiblioAlert").hide(); + ++contentCount; + formData.append('contentOrder', contentCount); + $.ajax({ + url: "[(@{'/staff/module/'+${module.id}+'/slide/'+${slide.id}+'/bibliography?'+${_csrf.parameterName}+'='+${_csrf.token}})]", + type: 'POST', + cache : false, + contentType : 'application/json; charset=utf-8', + processData : false, + dataType: 'json', + data: JSON.stringify(formData), + + success: function(data) { + + var textblock = $('

'+text+'

'); + $(textblock).css({ + 'margin': "10px" + }); + $(textblock[0]).mouseenter(onMouseEnter).mouseleave(onMouseLeave).dblclick(onDoubleClick); + $('#slideSpace').append(textblock); + }, + error: function(data) { + if (data.status == 403){ + $("#loginAlert").show(); + } + else { + var alert = $(''); + $('.error').append(alert); + } + } + }); + }); + $('input:checkbox').click(function() { if ($(this).is(':checked')) { $('#submitChoices').prop("disabled", false); @@ -616,9 +669,46 @@ } } }); - }); + }); + + $("#submitBiblioBlock").on("click", function(e){ + e.preventDefault(); + // ------------- editting Bibliography content blocks ------------ + + var text = markDown.value(); + markDown.value(''); + var formData = new FormData(); + var blockId = $(".open").attr("id"); + formData.append('textBlockDesc', text); + formData.append('textBlockId', blockId); + $("#editTextAlert").hide(); + $.ajax({ + url: "[(@{'/staff/module/'+${module.id}+'/slide/'+${slide.id}+'/text/edit?'+${_csrf.parameterName}+'='+${_csrf.token}})]", + type: 'POST', + cache : false, + contentType : false, + processData : false, + data: formData, + enctype: 'multipart/form-data', + success: function(data) { + // replace text box with new description + updateTextBox(blockId, text) + $(".open").removeClass("open"); + }, + error: function(data) { + if (data.status == 403) { + $("#loginAlert").show(); + } + else { + var alert = $(''); + $('.error').append(alert); + } + } + }); + }); }); + $(window).on('load', function () { var divWindow = $(".valueDiv"); $(".deleteText").css('position', 'absolute'); @@ -680,6 +770,8 @@

Slide: [[${slide.name}]] +     +  

Double Click on a Block to Edit it

@@ -762,8 +854,6 @@

Are you sure you want to delete this - - - - - - - - + + - - + + + + + + + - - - + + -
-
-
- - - -
-
-

[[${contents.text}]]

- - - -
-
+
+
+ + + + + +
+
+

[[${contents.text}]]

+ + + + + +
+

Title: [[${contents.title}]], Author: [[${contents.author}]], Year: [[${contents.year}]], Journal: [[${contents.journal}]]

-
- -
-
-
- \ No newline at end of file + +
+ + + diff --git a/vspace/src/main/webapp/resources/extra/Home.css b/vspace/src/main/webapp/resources/extra/Home.css index 55be1ee01..69360098e 100644 --- a/vspace/src/main/webapp/resources/extra/Home.css +++ b/vspace/src/main/webapp/resources/extra/Home.css @@ -729,6 +729,13 @@ text-align: justify; } +.biblioDivStaff { + position: relative; + top: 0px; + overflow: visible; + text-align: justify; +} + .choiceDiv { position: relative; top: 0px; From 4eb90917c809d77a3916381278ab028ad0f934b9 Mon Sep 17 00:00:00 2001 From: Pradeep Kumar <56213738+pradeep-017@users.noreply.github.com> Date: Wed, 12 May 2021 09:35:24 -0700 Subject: [PATCH 005/114] [VSPC-147] Code indentation changes for slide.html --- .../views/staff/modules/slides/slide.html | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html index 7ad16611f..d28f4570d 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html @@ -779,7 +779,7 @@ }); $("#submitBiblioBlock").on("click", function(e){ - e.preventDefault(); + e.preventDefault(); // ------------- editting Bibliography content blocks ------------ var formData = new FormData(); @@ -808,19 +808,18 @@ processData : false, data: jsonData, success: function(data) { - //replace Biblio box with new values - updateBiblioBox(blockId, formData, null) - $(".open").removeClass("open"); + //replace Biblio box with new values + updateBiblioBox(blockId, formData, null) + $(".open").removeClass("open"); }, error: function(data) { - console.log(data) - if (data.status == 403) { - $("#loginAlert").show(); - } - else { - var alert = $(''); - $('.error').append(alert); - } + if (data.status == 403) { + $("#loginAlert").show(); + } + else { + var alert = $(''); + $('.error').append(alert); + } } }); }); From 9ccba7fa7a900f1d5073d9e131c39f180adb23fc Mon Sep 17 00:00:00 2001 From: Pradeep Kumar <56213738+pradeep-017@users.noreply.github.com> Date: Wed, 12 May 2021 10:48:19 -0700 Subject: [PATCH 006/114] [VSPC-147] Code indentation fix for slide.html --- .../views/staff/modules/slides/slide.html | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html index d28f4570d..c64cd9ebd 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html @@ -66,29 +66,27 @@ $(".open").css('overflow-y', 'scroll'); $(".open").css('height', '400px'); } else if(divName.includes("biblioDivStaff")){ + $(e.target).closest('.biblioDivStaff').addClass("open"); + var description = $("div.open p:eq(0)").text(); + defaultValue = description; - $(e.target).closest('.biblioDivStaff').addClass("open"); - var description = $("div.open p:eq(0)").text(); - defaultValue = description; - - var title = $("div.open p span:eq(0)").text(); - var author = $("div.open p span:eq(1)").text(); - var year = $("div.open p span:eq(2)").text(); - var journal = $("div.open p span:eq(3)").text(); - - //showing the edit bibliography form with all the respective values - $("#editBiblioAlert").show(); + var title = $("div.open p span:eq(0)").text(); + var author = $("div.open p span:eq(1)").text(); + var year = $("div.open p span:eq(2)").text(); + var journal = $("div.open p span:eq(3)").text(); - $("#editTitleBiblio").val(title); - $("#editAuthorBiblio").val(author); - $("#editYearBiblio").val(year); - $("#editJournalBiblio").val(journal); + //showing the edit bibliography form with all the respective values + $("#editBiblioAlert").show(); - //remove card border - $(".open").css('display', 'none'); - $(".open").css('overflow-y', 'scroll'); - $(".open").css('max-height', '200px'); + $("#editTitleBiblio").val(title); + $("#editAuthorBiblio").val(author); + $("#editYearBiblio").val(year); + $("#editJournalBiblio").val(journal); + //remove card border + $(".open").css('display', 'none'); + $(".open").css('overflow-y', 'scroll'); + $(".open").css('max-height', '200px'); } else { // store image ID selected by the user to replace, onDoubleClick From c6a3aacf1984ed091375c5180e95e6e087143af8 Mon Sep 17 00:00:00 2001 From: Pradeep Kumar Date: Wed, 12 May 2021 15:27:58 -0700 Subject: [PATCH 007/114] [VSPC-147] Adding more fields for bibliography - Work in progress --- .../vspace/core/model/IBiblioBlock.java | 28 +++++++ .../vspace/core/model/impl/BiblioBlock.java | 83 +++++++++++++++++++ .../web/staff/EditBiblioBlockController.java | 7 ++ .../views/staff/modules/slides/slide.html | 30 ++++++- 4 files changed, 144 insertions(+), 4 deletions(-) diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IBiblioBlock.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IBiblioBlock.java index 537042cd0..1a8182285 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/IBiblioBlock.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/IBiblioBlock.java @@ -17,6 +17,34 @@ public interface IBiblioBlock extends IContentBlock { String getJournal(); void setJournal(String journal); + + String getUrl(); + + void setUrl(String url); + + String getVolume(); + + void setVolume(String volume); + + String getIssue(); + + void setIssue(String issue); + + String getPages(); + + void setPages(String pages); + + String getEditors(); + + void setEditors(String editors); + + String getType(); + + void setType(String type); + + String getNote(); + + void setNote(String note); void setId(String id); diff --git a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/BiblioBlock.java b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/BiblioBlock.java index c5277d199..2647c9ebf 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/BiblioBlock.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/core/model/impl/BiblioBlock.java @@ -20,6 +20,19 @@ public class BiblioBlock extends ContentBlock implements IBiblioBlock { private String journal; + private String url; + + private String volume; + + private String issue; + + private String pages; + + private String editors; + + private String type; + + private String note; /* * (non-Javadoc) @@ -79,5 +92,75 @@ public String getJournal() { public void setJournal(String journal) { this.journal = journal; } + + @Override + public String getUrl() { + return url; + } + + @Override + public void setUrl(String url) { + this.url = url; + } + + @Override + public String getVolume() { + return volume; + } + + @Override + public void setVolume(String volume) { + this.volume = volume; + } + + @Override + public String getIssue() { + return issue; + } + + @Override + public void setIssue(String issue) { + this.issue = issue; + } + + @Override + public String getPages() { + return pages; + } + + @Override + public void setPages(String pages) { + this.pages = pages; + } + + @Override + public String getEditors() { + return editors; + } + + @Override + public void setEditors(String editors) { + this.editors = editors; + } + + @Override + public String getType() { + return type; + } + + @Override + public void setType(String type) { + this.type = type; + } + + @Override + public String getNote() { + return note; + } + + @Override + public void setNote(String note) { + this.note = note; + } } diff --git a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditBiblioBlockController.java b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditBiblioBlockController.java index 5e97b551a..2d40a2d43 100644 --- a/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditBiblioBlockController.java +++ b/vspace/src/main/java/edu/asu/diging/vspace/web/staff/EditBiblioBlockController.java @@ -29,6 +29,13 @@ public ResponseEntity editTextBlock(@PathVariable("id") String slideId, biblioBlock.setAuthor(biblioBlockData.getAuthor()); biblioBlock.setYear(biblioBlockData.getYear()); biblioBlock.setJournal(biblioBlockData.getJournal()); + biblioBlock.setUrl(biblioBlockData.getUrl()); + biblioBlock.setVolume(biblioBlockData.getVolume()); + biblioBlock.setIssue(biblioBlockData.getIssue()); + biblioBlock.setPages(biblioBlockData.getPages()); + biblioBlock.setEditors(biblioBlockData.getEditors()); + biblioBlock.setType(biblioBlockData.getType()); + biblioBlock.setNote(biblioBlockData.getNote()); contentBlockManager.updateBiblioBlock((BiblioBlock) biblioBlock); return new ResponseEntity(HttpStatus.OK); diff --git a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html index 7ad16611f..4b7854b5b 100644 --- a/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html +++ b/vspace/src/main/webapp/WEB-INF/views/staff/modules/slides/slide.html @@ -607,8 +607,12 @@ success: function(data) { console.log(data) var biblioblock = $('

Title: ' + title + ', Author: ' + author + ', Year:' - + year + ', Journal: ' + journal + '' - +'

'); + + '' + year + ', Journal: ' + journal + ', ' + + 'Url: ' + url + ', Volume: ' + volume + ', ' + + 'Issue: ' + issue + ', Pages: ' + pages + ', ' + + 'Editors: ' + editors + ', Type: ' + type + ', ' + + 'Note: ' + note + '' + + '

'); $(biblioblock).css({ 'margin': "10px" }); @@ -718,7 +722,11 @@ // clear biblio box and buttons $(".open").empty(); if(formData!=null) - $(".open").append('

Title: ' + formData.get('title')+ ', Author: ' + formData.get('author') + ', Year: ' + formData.get('year') + ', Journal: ' + formData.get('journal') + '

'); + $(".open").append('

Title: ' + formData.get('title')+ ', Author: ' + formData.get('author') + ', Year: ' + formData.get('year') + ', Journal: ' + formData.get('journal') + + ', Url: ' + formData.get('url') + ', Volume: ' + formData.get('volume') + ', Issue: ' + formData.get('issue') + + ', Pages: ' + formData.get(pages) + ', Editors: ' + formData.get(editors) + ', Type: ' + formData.get(type) + + ', Note: ' + formData.get(note) + + '

'); else if(defaultValue!=null) { $(".open").append('

' + defaultValue + '

'); } @@ -1173,6 +1181,16 @@ +
+ + + + + +
+
+
'); + + '

'); $(biblioblock).css({ 'margin': "10px" }); @@ -722,11 +750,11 @@ if(formData!=null) $(".open").append('

Title: ' + formData.get('title')+ ', Author: ' + formData.get('author') + ', Year: ' + formData.get('year') + ', Journal: ' + formData.get('journal') + ', Url: ' + formData.get('url') + ', Volume: ' + formData.get('volume') + ', Issue: ' + formData.get('issue') - + ', Pages: ' + formData.get(pages) + ', Editors: ' + formData.get(editors) + ', Type: ' + formData.get(type) - + ', Note: ' + formData.get(note) - + '

'); + + ', Pages: ' + formData.get('pages') + ', Editors: ' + formData.get('editors') + ', Type: ' + formData.get('type') + + ', Note: ' + formData.get('note') + + '

'); else if(defaultValue!=null) { - $(".open").append('

' + defaultValue + '

'); + $(".open").append('

' + defaultValue + '

'); } //reset border of the card //rebind event handlers @@ -793,12 +821,26 @@ var author = $("#editAuthorBiblio").val(); var year = $("#editYearBiblio").val(); var journal = $("#editJournalBiblio").val(); + var url = $("#editUrlBiblio").val(); + var volume = $("#editVolumeBiblio").val(); + var issue = $("#editIssueBiblio").val(); + var pages = $("#editPagesBiblio").val(); + var editors = $("#editEditorsBiblio").val(); + var type = $("#editTypeBiblio").val(); + var note = $("#editNoteBiblio").val(); var blockId = $(".open").attr("id"); formData.append('title', title); formData.append('author', author); formData.append('year', year); formData.append('journal', journal); + formData.append('url', url); + formData.append('volume', volume); + formData.append('issue', issue); + formData.append('pages', pages); + formData.append('editors', editors); + formData.append('type', type); + formData.append('note', note); formData.append('id', blockId); $("#editBiblioAlert").hide(); @@ -836,7 +878,7 @@ $(".deleteText").css('position', 'absolute'); $(".deleteText").css('right', '0'); $(".deleteBiblio").css('position', 'absolute'); - $(".deleteBiblio").css('right', '60px'); + $(".deleteBiblio").css('right', '0px'); var images = $(".imgDiv"); resizeImage(images); @@ -894,47 +936,13 @@

Slide: [[${slide.name}]] +     +  

Double Click on a Block to Edit it

-

- Slide: - [[${slide.name}]]   - - - -

-

[[${slide.description}]]

- -
- -   - -   - -   - -

Double Click on a Block to Edit it

-
- +
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
+
+ + + + + +
+
+
- +