From 0e690ba00ec83c0d3e0248b26a3e853874604b49 Mon Sep 17 00:00:00 2001
From: Thomas Schnaak <schnaak@uni-potsdam.de>
Date: Sun, 19 Aug 2018 20:47:56 +0200
Subject: [PATCH] #64 feat: implemented add/delete Link

---
 .../journal/model/dao/LinkDAOImpl.java        |  2 +-
 .../service/ProjectDescriptionImpl.java       | 10 +++++++---
 .../journal/view/ProjectDescriptionView.java  |  9 ++++-----
 .../src/main/webapp/assets/js/e-portfolio.js  | 19 ++++++++++---------
 .../src/main/webapp/pages/eportfolio.jsp      |  3 ++-
 5 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImpl.java
index 704af8d7..f78a69f7 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImpl.java
@@ -36,7 +36,7 @@ public class LinkDAOImpl implements LinkDAO{
         MysqlConnect connection = new MysqlConnect();
         connection.connect();
 
-        // build and execute request
+        // build and execute requestxam
         String request = "DELETE FROM links WHERE id = ?;";
         connection.issueInsertOrDeleteStatement(request, linkId);
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java
index feb20170..77ed95bb 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java
@@ -25,13 +25,17 @@ public class ProjectDescriptionImpl implements ProjectDescriptionService {
             descriptionDAO.createDescription(description);
         }
 
-        return descriptionDAO.getDescription(studentIdentifier);
+        ProjectDescription returnDesc = descriptionDAO.getDescription(studentIdentifier);
+        returnDesc.setLinks(linkDAO.getAllLinks(returnDesc.getId()));
+        return returnDesc;
 
     }
 
     @Override
     public ProjectDescription getProjectbyId(String id) {
-        return descriptionDAO.getDescription(id);
+        ProjectDescription returnDesc = descriptionDAO.getDescription(id);
+        returnDesc.setLinks(linkDAO.getAllLinks(returnDesc.getId()));
+        return returnDesc;
     }
 
     @Override
@@ -44,7 +48,7 @@ public class ProjectDescriptionImpl implements ProjectDescriptionService {
 
     @Override
     public void addLink(String project, String link, String name) {
-        Link newLink = new Link("0",project,name,link);
+        Link newLink = new Link(project,project,name,link);
         linkDAO.addLink(newLink);
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java
index 9426b28a..2b9fe312 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/view/ProjectDescriptionView.java
@@ -45,7 +45,6 @@ public class ProjectDescriptionView {
     @Path("/saveText")
     public Response saveProjectText(@FormParam("student") String student, @FormParam("project") String project, @FormParam("text") String text) {
         log.debug(">>> saveText: " + text);
-
         descriptionService.saveProjectText(new StudentIdentifier(project,student),text);
 
         //TODO token
@@ -69,14 +68,15 @@ public class ProjectDescriptionView {
     @POST
     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
     @Path("/addLink")
-    public Response addLink(@FormParam("link") String link, @FormParam("name") String name){
+    public Response addLink(@FormParam("link") String link, @FormParam("name") String name, @FormParam("projectdescriptionId") String project){
         log.debug(">>> addLink: " + name + ":" + link);
 
-        descriptionService.addLink("0",link, name );
+        ProjectDescription desc = descriptionService.getProjectbyId(project);
+        descriptionService.addLink(project,link, name );
 
 
         try {
-            URI location = new URI("../pages/eportfolio.jsp");
+            URI location = new URI("../pages/eportfolio.jsp?token="+ desc.getStudent().getStudentId()+"&projectId="+desc.getStudent().getProjectId());
             log.debug("<<< addLink: redirect to "  +location.toString());
             return Response.temporaryRedirect(location).build();
 
@@ -124,7 +124,6 @@ public class ProjectDescriptionView {
 
         StudentIdentifier student = descriptionService.getProjectbyId(desc).getStudent();
         descriptionService.closeDescription(desc);
-        //TODO token
         try {
             URI location = new URI("../pages/eportfolio.jsp?token=" + student.getStudentId() + "&projectId=" + student.getProjectId());
             log.debug("<<< closeDescription: redirect to "  +location.toString());
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/e-portfolio.js b/gemeinsamforschen/src/main/webapp/assets/js/e-portfolio.js
index c4f98590..7ec0e356 100644
--- a/gemeinsamforschen/src/main/webapp/assets/js/e-portfolio.js
+++ b/gemeinsamforschen/src/main/webapp/assets/js/e-portfolio.js
@@ -1,19 +1,22 @@
 var student = getQueryVariable("token");
 var project = getQueryVariable("projectId");
 var description = 0;
-$(document).ready(function() {
 
+$(document).ready(function() {
     $.ajax({
         url: "../rest/projectdescription/" + project + "/" + student
     }).then(function(data) {
         console.log("desc: " + data);
         description = data.id;
+        $('#projectdescriptionId').val(description);
+
         if (!data.open){
             $("#description-edit").remove();
         }
         $('.journal-description-text').append(data.descriptionHTML);
-        for(var link in data.links){
-            $('.journal-description-links').append('<button class="btn btn-default btn-xs" onclick=\'linkLoeschen("'+link+'")\'> <i class="fa fa-trash" aria-hidden="true" ></i></button><a href=\' + data.links[link] + \'>' + link + '</a> <br/>');
+        for(var ii in data.links){
+            console.log(data.links[ii])
+            $('.journal-description-links').append('<button class="btn btn-default btn-xs" onclick=\'linkLoeschen("'+data.links[ii].id +'")\'> <i class="fa fa-trash" aria-hidden="true" ></i></button><a href=' + data.links[ii].link + '>' + data.links[ii].name + '</a> <br/>');
         }
         $('.journal-description-links').append('<button type="button" class="btn btn-default btn-xs" data-toggle="modal" data-target="#addLinkModal"><i class="fa fa-plus" aria-hidden="true"></i></button>');
 
@@ -35,7 +38,6 @@ $(document).ready(function() {
     });
 
     $('#editDescriptionLink').on('click', function () {
-        /*TODO getJournal*/
         location.href = "editDescription.jsp?project=" + project + "&token=" + student + "&projectId=" + project;
     });
 
@@ -108,21 +110,20 @@ function loadJournals(data) {
         $('.journal').append(journalString)
     }};
 
-function linkLoeschen(name) {
-    console.log("löschen" + name);
+function linkLoeschen(id) {
+    console.log("löschen" + id);
     $.ajax({
         type: "POST",
         url: "../rest/projectdescription/deleteLink",
-        data: JSON.stringify(eval(name)),
+        data: id,
         contentType: "application/json; charset=utf-8",
         crossDomain: true,
         dataType: "json",
         success: function (data, status, jqXHR) {
 
-            alert(success);
         }
     });
-
+    location.reload();
 }
 
 function closeJournal() {
diff --git a/gemeinsamforschen/src/main/webapp/pages/eportfolio.jsp b/gemeinsamforschen/src/main/webapp/pages/eportfolio.jsp
index c42159cf..ee473b42 100644
--- a/gemeinsamforschen/src/main/webapp/pages/eportfolio.jsp
+++ b/gemeinsamforschen/src/main/webapp/pages/eportfolio.jsp
@@ -92,11 +92,12 @@
             </div>
             <div class="modal-body">
                 <form id="linkform" method="POST" action="../rest/projectdescription/addLink" >
+                    <input type="hidden" name="projectdescriptionId" id="projectdescriptionId" value=""/>
                     Name:<br>
                     <input type="text" name="name" form="linkform">
                     <br>
                     URL:<br>
-                    <input type="text" name="link" form="linkform">
+                    <input type="url" name="link" form="linkform">
                     <br><br>
                     <input class="btn btn-default" type="submit"  >
                     <button type="button" class="btn btn-default" data-dismiss="modal">Abbrechen</button>
-- 
GitLab