diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java index b3b86098e0bdef1e1bccc0bf449db9863e8f44ff..6053a7f44dd257078940e619a536e303126a8b6c 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java @@ -30,8 +30,8 @@ public class SubmissionController implements ISubmission { connection.connect(); // build and execute request - String request = "INSERT INTO fullsubmissions (`id`, `user`, `text`) VALUES (?,?,?);"; - connection.issueInsertOrDeleteStatement(request, uuid, fullSubmissionPostRequest.getUser(), fullSubmissionPostRequest.getText()); + String request = "INSERT INTO fullsubmissions (`id`, `user`, `text`, `projectId`) VALUES (?,?,?,?);"; + connection.issueInsertOrDeleteStatement(request, uuid, fullSubmissionPostRequest.getUser(), fullSubmissionPostRequest.getText(), fullSubmissionPostRequest.getProjectId()); // get the new submission from database FullSubmission fullSubmission = getFullSubmission(uuid); @@ -283,8 +283,9 @@ public class SubmissionController implements ISubmission { long timestamp = rs.getTimestamp("timestamp").getTime(); String user = rs.getString("user"); String text = rs.getString("text"); + String projectId = rs.getString("projectId"); - return new FullSubmission(id, timestamp, user, text); + return new FullSubmission(id, timestamp, user, text, projectId); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java index 725db4b265cf24f6d6c99852fdaf451f26205ac9..37b35c9fb9809ee409548f374c3623d73e204170 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java @@ -11,13 +11,15 @@ public class FullSubmission { private long timestamp; private String user; private String text; + private String projectId; // constructor - public FullSubmission(String id, long timestamp, String user, String text) { + public FullSubmission(String id, long timestamp, String user, String text, String projectId) { this.id = id; this.timestamp = timestamp; this.user = user; this.text = text; + this.projectId = projectId; } // methods @@ -53,6 +55,14 @@ public class FullSubmission { this.text = text; } + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + @Override public String toString() { return "FullSubmission{" + @@ -60,6 +70,7 @@ public class FullSubmission { ", timestamp=" + timestamp + ", user='" + user + '\'' + ", text='" + text + '\'' + + ", projectId='" + projectId + '\'' + '}'; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java index a807283adb526caafd7cf8ec197ffb20117e751e..48a2dfe748498fcd1f672ac5eb6ed2bc126af227 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java @@ -9,11 +9,13 @@ public class FullSubmissionPostRequest { // variables private String user; private String text; + private String projectId; // constructors - public FullSubmissionPostRequest(String user, String text) { + public FullSubmissionPostRequest(String user, String text, String projectId) { this.user = user; this.text = text; + this.projectId = projectId; } public FullSubmissionPostRequest() {} @@ -35,11 +37,20 @@ public class FullSubmissionPostRequest { this.text = text; } + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + @Override public String toString() { return "FullSubmissionPostRequest{" + "user='" + user + '\'' + ", text='" + text + '\'' + + ", projectId='" + projectId + '\'' + '}'; } diff --git a/gemeinsamforschen/src/main/webapp/assets/js/project-student.js b/gemeinsamforschen/src/main/webapp/assets/js/project-student.js index b8f739b417098461694312ea541feebd73292769..3a487384323d183de46d1ec44f56294085e29469 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/project-student.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/project-student.js @@ -18,6 +18,6 @@ $(document).ready(function(){ }); $('#btnUnstructuredUpload').click(function () { - location.href="unstructured-upload.jsp?token="+getUserTokenFromUrl(); + location.href="unstructured-upload.jsp?token="+getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); }) }); \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js index 8c770dfd5940506ec1c391b74ef9e063aac16869..6ffb2c1a00c252c8b94e2fa2440b8808198c9e9c 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js @@ -26,7 +26,7 @@ $(document).ready(function() { }, function () { // jump to upload page on error - location.href="unstructured-upload.jsp?token="+getUserTokenFromUrl(); + location.href="unstructured-upload.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); }); // set click listener to save button @@ -246,6 +246,8 @@ function addSelectionDataToList(startCharacter, endCharacter, category) { function saveButtonHandler() { // show alert message if (window.confirm("Möchten Sie wirklich ihre Annotationen speichern?")) { + // declare array of promises + let promises = [] $('#annotations').find('.category-card').each(function () { let array = $(this).data('array'); if (array != null) { @@ -273,13 +275,21 @@ function saveButtonHandler() { submissionPartPostRequest.body.push(submissionPartBodyElement); } - // send the post request to the back-end - createSubmissionPart(submissionPartPostRequest, function (response) { + // send the post request to the back-end and save promise + promises.push(createSubmissionPart(submissionPartPostRequest, function (response) { console.log("send " + response.category + "'s post request to back-end") - }) + })); } }); + + $.when.apply($, promises).then(function () { + // redirect user to project page after saving + location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); + }); + + // redirect user to project page after saving + // location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); } } diff --git a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js index 047018efac765464de02fd05353cf2ab1396f6b1..3e678ca612eb7c75f189ddaab92ddc3b8b4c29de 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js @@ -48,11 +48,12 @@ function getFullSubmission(id, responseHandler, errorHandler) { * * @param submissionPartPostRequest The post request * @param responseHandler The response handler + * @returns A promise object */ function createSubmissionPart(submissionPartPostRequest, responseHandler) { var url = "../rest/submissions/part/"; var json = JSON.stringify(submissionPartPostRequest); - $.ajax({ + return $.ajax({ url: url, type: "POST", data: json, diff --git a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js index e9beb2f4bca2bf55ea59e3b3687a9a00b6dda7c5..265a0a907ebd8bd020d5a5f8d14328c4240808ed 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js @@ -13,7 +13,8 @@ $(document).ready(function() { // build request var fullSubmissionPostRequest = { user: user, - text: text + text: text, + projectId: getProjectIdFromUrl() }; // save request in database @@ -22,7 +23,7 @@ $(document).ready(function() { $('#upload-textarea').val(""); // jump to next page - location.href="unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&submission=" + response.id; + location.href="unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl() + "&submission=" + response.id; }); } }); @@ -36,13 +37,15 @@ $(document).ready(function() { $('#upload-textarea').val(""); // jump to previous page - location.href="project-student.jsp?token="+getUserTokenFromUrl(); + window.history.back(); + //location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); } } // nothing to check else { // jump to previous page - location.href="project-student.jsp?token="+getUserTokenFromUrl(); + window.history.back(); + //location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); } }); @@ -63,6 +66,3 @@ $(document).ready(function() { }); }); - - - diff --git a/gemeinsamforschen/src/main/webapp/assets/js/utility.js b/gemeinsamforschen/src/main/webapp/assets/js/utility.js index 33be09a5afb07442f689e89f4ef61a8c09ebc698..ad821640f2142940cf7424d7219d2ea2452c286f 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/utility.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/utility.js @@ -13,3 +13,14 @@ function getUserTokenFromUrl() { } +function getProjectIdFromUrl() { + var parts = window.location.search.substr(1).split("&"); + var $_GET = {}; + for (var i = 0; i < parts.length; i++) { + var temp = parts[i].split("="); + $_GET[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]); + } + return $_GET['projectId']; + +} + diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql index 1a069f1b37b580532de97074911d5d1f2a98184d..978bd4b9bcaa80fc3c20db0201cdf2f07a0b7a27 100644 --- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql +++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql @@ -126,6 +126,7 @@ CREATE TABLE if not exists `fullsubmissions` ( `timestamp` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `user` VARCHAR(120) NOT NULL, `text` MEDIUMTEXT NOT NULL, + `projectId` VARCHAR(120) NOT NULL, PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARSET=utf8;