diff --git a/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld b/gemeinsamforschen/src/main/webapp/core/gemeinsamForschen.tld similarity index 100% rename from gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld rename to gemeinsamforschen/src/main/webapp/core/gemeinsamForschen.tld diff --git a/gemeinsamforschen/src/main/webapp/core/management/create-project.jsp b/gemeinsamforschen/src/main/webapp/core/management/create-project.jsp new file mode 100644 index 0000000000000000000000000000000000000000..cbfb9ce16ae8769661c470d7d6db718885ed4805 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/create-project.jsp @@ -0,0 +1,98 @@ +<%-- + Created by IntelliJ IDEA. + User: dehne + Date: 12.09.2018 + Time: 12:06 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<!DOCTYPE html> +<html> + +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>dozent-view-alternativ slider</title> + <link rel="stylesheet" href="../../assets/bootstrap/css/bootstrap.min.css"> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Ubuntu:400,700"> + <link rel="stylesheet" href="../../assets/css/Login-Form-Clean.css"> + <link rel="stylesheet" href="../../assets/css/Navigation-with-Button1.css"> + <link rel="stylesheet" href="../../assets/css/Sidebar-Menu.css"> + <link rel="stylesheet" href="../../assets/css/Sidebar-Menu1.css"> + <link rel="stylesheet" href="../../assets/css/styles.css"> + <link rel="stylesheet" type="text/css" href="../../assets/jQuery-Tags-Input-master/src/jquery.tagsinput.css"/> + <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> + <script type="text/javascript" src="../../assets/jQuery-Tags-Input-master/src/jquery.tagsinput.js"></script> + <script src="../assets/js/config.js"></script> + <script src="../assets/js/newProject.js"></script> + <script src="../../assets/js/utility.js"></script> + <script src="../../assets/bootstrap/js/bootstrap.min.js"></script> + <script src="../../assets/js/Sidebar-Menu.js"></script> +</head> + +<body> +<p id="user" hidden><?php echo $userName; ?></p> + +<div class="loader-inactive" id="loader"> + <div class="sk-cube1 sk-cube"></div> + <div class="sk-cube2 sk-cube"></div> + <div class="sk-cube4 sk-cube"></div> + <div class="sk-cube3 sk-cube"></div> +</div> + +<div id="wrapper" style="margin:0px;"> + <?php + include_once 'menu.php' + ?> + <div class="page-content-wrapper"> + <div class="container-fluid"> + <div class="row"> + <div class="col-md-12"> + <div> + <p></p> + <h3> Erstellen Sie ein neues Projekt.</h3> + </div> + </div> + </div> + </div> + </div> + <div class="contact-clean"> + <p>Name des Projekts</p> + <div class="alert alert-danger" role="alert" style="width:475px" id="projectNameExists"> + Dieser Projektname exisitiert bereits. + </div> + <div class="alert alert-danger" role="alert" style="width:475px" id="exactNumberOfTags"> + Es müssen genau 5 Tags eingegeben werden. + </div> + <div class="alert alert-danger" role="alert" style="width:475px" id="specialChars"> + Der Projektname darf keine Sonderzeichen enthalten. + </div> + <div class="alert alert-danger" role="alert" style="width:475px" id="projectIsMissing"> + Tragen sie einen Projektnamen ein. + </div> + <div class="form-group"><input class="form-control" name="name" placeholder="Name" + style="width:286px;margin-left:50px;" id="nameProject"></div> + <p> Passwort zum Teilnehmen (optional) </p> + <div class="form-group"><input class="form-control" name="password" placeholder="Passwort" + style="width:287px;margin-left:51px;" id="passwordProject"></div> + <p> Passwort zum Löschen (sonst: 1234) </p> + <div class="form-group"><input class="form-control" name="adminpassword" placeholder="Passwort" + style="width:287px;margin-left:51px;" id="adminPassword"></div> + <p>Tags </p> + <div id="tagHelper" class="alert alert-warning" style="width:475px;"> + Fügen sie zudem 5 Tags zu ihrem Projekt hinzu, welche ihr Projekt inhaltlich umreißen. + </div> + <div class="form-group"><input class="tags" data-role="tags" name="Tags" placeholder="Tags" + id="tagsProject"> + </div> + <label>An Kurs selbst teilnehmen <input type="checkbox" id="Teilnehmer"></label> + + <div class="form-group"> + <button class="btn btn-primary" style="margin-left:129px;" id="sendProject">erstellen</button> + </div> + </div> +</div> + +</body> + +</html> diff --git a/gemeinsamforschen/src/main/webapp/core/management/css/projects.css b/gemeinsamforschen/src/main/webapp/core/management/css/projects.css new file mode 100644 index 0000000000000000000000000000000000000000..e175d05822f1525c1bbaac947faa83d0d191bd6d --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/css/projects.css @@ -0,0 +1,27 @@ +.tagLabel { + color: #000 !important; + text-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + display: inline !important;; + padding: .2em .6em .3em !important; + margin: 3px !important; + font-size: 75% !important;; + font-weight: 700 !important;; + line-height: 1 !important;; + color: #fff !important;; + text-align: center !important;; + white-space: nowrap !important;; + vertical-align: baseline !important;; + border-radius: .25em !important;; + background-color: #5cb85c !important; + +} + +.label { + border: 1px solid #000; +} + + + + diff --git a/gemeinsamforschen/src/main/webapp/core/management/js/Sidebar-Menu.js b/gemeinsamforschen/src/main/webapp/core/management/js/Sidebar-Menu.js new file mode 100644 index 0000000000000000000000000000000000000000..75d87e9ab3437b44784b97cf2e600b636f8b4257 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/js/Sidebar-Menu.js @@ -0,0 +1,4 @@ +$("#menu-toggle").click(function(e) { + e.preventDefault(); + $("#wrapper").toggleClass("toggled"); +}); \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/core/management/js/config.js b/gemeinsamforschen/src/main/webapp/core/management/js/config.js new file mode 100644 index 0000000000000000000000000000000000000000..af79dfc9d5b448c751e0f1bf6ef47fc2b0e569b8 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/js/config.js @@ -0,0 +1,3 @@ +//var compbaseUrl = "https://esb.uni-potsdam.de:8243/services/competenceBase"; +//var compbaseUrl = "http://fleckenroller.cs.uni-potsdam.de/app/competence-database-prod"; +var compbaseUrl = "https://apiup.uni-potsdam.de/endpoints/competenceAPI"; diff --git a/gemeinsamforschen/src/main/webapp/core/management/js/createPreferences.js b/gemeinsamforschen/src/main/webapp/core/management/js/createPreferences.js new file mode 100644 index 0000000000000000000000000000000000000000..90b4243fbcaf44130bdc34b880fa01bedde101e3 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/js/createPreferences.js @@ -0,0 +1,148 @@ +/** + * Created by fides-WHK on 15.03.2018. + */ + + +$(document).ready(function () { +var projectName = getProjectByToken(); + getTags(projectName); + $("#competencies0").focus(); + $("#studentFormSubmit").on("click", function () { + takesPartInProject(); + }); + $("#addCompetenceButton").on("click", function () { + addInput("competencies"); //creates a new input-Field with the ID 'competenciesX' where X is number of elements with 'competencies' as ID + }); + $("#subtractCompetenceButton").on("click", function () { + deletInput("competencies"); //deletes latest input-Field with the ID 'competenciesX' where X is number of elements with 'competencies' as ID + }); + $("#addResearchQuestionButton").on("click", function () { + addInput("researchQuestion"); //creates a new input-Field with the ID 'researchQuestionX' where X is number of elements with 'researchQuestion' as ID + }); + $("#subtractCResearchQuestionButton").on("click", function () { + deletInput("researchQuestion"); //deletes the latest input-Field with ID 'researchQuestionX' where X is number of elements with 'researchQuestion' as ID + }); + +}); + +function getProjectByToken(){ + return $('#projectName').text().trim(); +} + +function addInput(name) { //creates a new input-Field with the ID 'nameX' where X is number of elements with 'name' as ID + var i = document.getElementsByName(name).length; + var newInput = document.createElement("span"); + newInput.innerHTML = "<input class='form-control' " + + "type='text' " + + "name='" + name + "' " + + "id='" + name + i + "' " + + "style='max-width:417px;margin-left:14px;padding-top:10px;margin-top:2px;margin-bottom:13px;'>"; + var div = document.getElementById(name); + div.appendChild(newInput); +} + +function deletInput(name) { //deletes latest input-Field with the ID 'nameX' where X is number of elements with 'name' as ID + var i = document.getElementsByName(name).length; + if (i > 1) { + var lastEntry = document.getElementById(name + "" + (i - 1)); + lastEntry.parentNode.removeChild(lastEntry); + } +} + +function getTags(projectName) { + var url = "../database/getTags.php?project=" + projectName; + $.ajax({ + url: url, + Accept: "text/plain; charset=utf-8", + contentType: "text/plain", + success: function (response) { + response = JSON.parse(response); + var tagList = []; + var i = 0; + for (i = 0; i < response.length; i++) + tagList.push(response[i].tag); + for (i = 0; i < tagList.length; i++) { + var newInput = document.createElement("label"); + newInput.innerHTML = + "<div class='checkbox checkbox-primary' >" + + "<input id='tag" + i + "' " + " class='styled' " + "name='tag'" + "type='checkbox' " + ">" + + "<label for='tag" + i + "' "+ ">" + tagList[i] + "</label>" + + "</div>"; + var div = document.getElementById('tags'); + div.appendChild(newInput); + } + }, + error: function (a, b, c) { + console.log(a); + } + }); +} + +function takesPartInProject() { + var userID = $("#user").text().trim(); + var projectID = $("#projectName").text().trim(); + document.getElementById('loader').className = "loader"; + document.getElementById('wrapper').className = "wrapper-inactive"; + + var allTheTags = []; + var allTheCompetencies = []; + var allTheResearchQuestions = []; + for (i = 0; i < document.getElementsByName("competencies").length; i++) { //goes through all competencies and adds them to allTheCompetencies + allTheCompetencies.push(document.getElementsByName("competencies")[i].value); + } + for (i = 0; i < document.getElementsByName("researchQuestions").length; i++) { //goes through all competencies and adds them to allTheResearchQuestions + allTheResearchQuestions.push(document.getElementsByName("researchQuestions")[i].value); + } + for (i = 0; i < document.getElementsByName("tag").length; i++) { //goes through all tags and adds them to allTheTags + if (document.getElementById("tag" + i).checked) { + allTheTags.push(document.getElementById("tag" + i).value); + } + if ($("#tag"+i).prop("checked")) + allTheCompetencies.push("Die Studierenden interessieren sich für " + $("#tag" + i).val()); //todo: Die Tags werden hinter der Schnittstelle noch nicht verwertet, daher diese schnelle Lösung + } + if (allTheTags.length > 2) { + //alert('Sie haben zu viele Tags ausgewählt'); + $(".alert").css('background-color', 'lightcoral'); + allTheTags = []; + document.getElementById('loader').className = "loader-inactive"; + document.getElementById('wrapper').className = "wrapper"; + return false; + } + if (allTheTags.length < 2) { + //alert('Sie haben zu wenig Tags ausgewählt'); + $(".alert").css('background-color', 'lightcoral'); + allTheTags = []; + document.getElementById('loader').className = "loader-inactive"; + document.getElementById('wrapper').className = "wrapper"; + return false; + } + var data = { //JSON object 'data' collects everything to send + "competences": allTheCompetencies, + "researchQuestions": allTheResearchQuestions, + "tagsSelected": allTheTags + }; + var dataString = JSON.stringify(data); //to send correctly, data needs to be stringified + var url = compbaseUrl + "/api2/user/" + userID + "/projects/" + projectID + "/preferences"; + $.ajax({ + url: url, + type: 'PUT', + Accept: "text/plain; charset=utf-8", + contentType: "application/json", + data: dataString, + success: function (response) { + console.log(response); + document.getElementById('loader').className = "loader-inactive"; + document.getElementById('wrapper').className = "wrapper"; + 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]); + } + location.href = "projects.php?token=" + $_GET['token']; + }, + error: function (a, b, c) { + console.log(a); + } + }); +} \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/core/management/js/deleteProject.js b/gemeinsamforschen/src/main/webapp/core/management/js/deleteProject.js new file mode 100644 index 0000000000000000000000000000000000000000..b429639c4f044f74c749a3d6c3c8d737bc218954 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/js/deleteProject.js @@ -0,0 +1,57 @@ +/** + * Created by dehne on 28.03.2018. + */ +$(document).ready(function () { + $("#projectWrongPassword").hide(); + $("#projectIsMissing").hide(); + + $("#deleteProject").on('click', function () { + deleteProject($('#projectName').val().trim()); + }); +}); + +function deleteProject(projectName) { + var token = getUserTokenFromUrl(); + var url = "../database/deleteProject.php?project=" + projectName + "&password=" + document.getElementById('projectPassword').value.trim() + "&token=" + token; + if (projectName === "") { + return false; + } else { + $.ajax({ + url: url, + projectName: projectName, + Accept: "text/plain; charset=utf-8", + contentType: "text/plain", + success: function (response) { + if (response === "project missing") { + $("#projectIsMissing").show(); + } else { + if (response !== "wrong password") { //if response !== project missing and not wrong password, its the projectToken + $.ajax({ + url: compbaseUrl+"/api1/courses/"+projectName, + Accept: "text/plain; charset=utf-8", + type: 'DELETE', + contentType: "text/plain", + async: false, + success: function (response) { + + }, + error: function (a, b, c) { + console.log(a); + } + }); + window.location.href = " ../pages/projects.php?token="+getUserTokenFromUrl(); + } else { + $("#projectIsMissing").hide(); + $('#projectWrongPassword').show(); + } + } + }, + error: function (a, b, c) { + console.log(a); + } + }); + + + } + +} diff --git a/gemeinsamforschen/src/main/webapp/core/management/js/getProjects.js b/gemeinsamforschen/src/main/webapp/core/management/js/getProjects.js new file mode 100644 index 0000000000000000000000000000000000000000..6c2c507836b67795160bfd77471b164b65f68ead --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/js/getProjects.js @@ -0,0 +1,31 @@ +/** + * Created by dehne on 28.03.2018. + */ + +function getProjectsOfAuthor(author, printedProjects, handleProjects) { + var url = "../database/getProjectsOfAuthor.php?author=" + author; + $.ajax({ + url: url, + Accept: "text/plain; charset=utf-8", + contentType: "text/plain", + success: function (response) { + var authoredProjects = JSON.parse(response); + if (authoredProjects != null) { + if (printedProjects != null) { + for (var i = 0; i < printedProjects.length; i++) { + authoredProjects = authoredProjects.filter(function (el) { + return el !== printedProjects[i]; + }); + } + handleProjects(authoredProjects, printedProjects.length); + } else { + handleProjects(authoredProjects, 0); + } + + } + }, + error: function (a, b, c) { + console.log(a); + } + }); +} \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/core/management/js/myGroupsInit.js b/gemeinsamforschen/src/main/webapp/core/management/js/myGroupsInit.js new file mode 100644 index 0000000000000000000000000000000000000000..11d871a4c901abf49866f35f480bf574c3606fa6 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/js/myGroupsInit.js @@ -0,0 +1,125 @@ +/** + * Created by fides-WHK on 22.01.2018. + */ +$(document).ready(function () { + //todo: Buttons im Eventhandler steuern und nicht auf der HTML-Seite. + getProjects(document.getElementById('user').innerHTML); + //getMembers($('#projectDropdown').innerHTML,$('#user').innerHTML); +}); + +function printProjectDropdown(projects, numberOfProjectsPrinted) { + var menu = document.getElementById("dropdownOptions"); //the unordered list of buttons called by the dropdown button + var limit = projects.length; + for (var i = 0; i < limit; i++) { //show every project a student takes + // part in + var option = document.createElement("SPAN"); //and create a span, containing a button with it + option.innerHTML = "<button class='dropdown-item' " + //which carries the event onClick, the name of the group and a design + "onClick=" + + '"showProject(' + "'" + projects[i] + "',document.getElementById('user').innerHTML);" + '"' + ">" + + projects[i] + + "</button>"; + menu.appendChild(option); + } +} +function getProjects(user) { + var url = compbaseUrl + "/api2/user/" + user + "/projects"; + $.ajax({ + url: url, + user: user, + type: 'GET', + contentType: "application/json", + dataType: "json", + success: function (data) { + if (data.length !== 0) { + var projects = []; + if (data.data != null) { + projects = data.data; + printProjectDropdown(projects, 0); + } + getProjectsOfAuthor(user, projects, printProjectDropdown) + } else { + document.getElementById("projectDropdown").innerHTML = "keine Projekte verfügbar"; //no projects of the students where found + } + } + }); +} + + +function printGroupTable(student1, student2, student3, student4) { + var innerurl = "../database/getAdresses.php?student1=" + student1 + "&student2=" + student2 + "&student3=" + student3 + "&student4=" + student4; + /*if (student4) { + innerurl = innerurl + "&student4=" + student4; + }*/ + $.ajax({ //get email adresses in this ajax. + student1: "" + student1, + student2: "" + student2, + student3: "" + student3, + student4: "" + student4, + url: innerurl, + type: 'GET', + contentType: "application/json", + dataType: "json", + success: function (innerData) { + var tableStart = '<table class="table table-striped table-bordered table-list"' + + ' style="width: 40%;margin-top:' + + ' 10px;"> <thead id="tableHead"> ' + + ' <tr>' + + ' <th class="hidden-xs">Student</th>' + + ' <th>E-Mail</th>' + + ' </tr>'; + var tableFinish = '</thead>' + '</table>'; + for (var k2 = 0; k2 < innerData.length; k2++) { + if (innerData[k2].name === student1) { + tableStart = tableStart + ("<tr><td>" + student1 + "</td><td><a" + + " href='mailto:" + innerData[k2].email + "'>" + innerData[k2].email + "</a></td></tr>"); + } else if (innerData[k2].name === student2) { + tableStart = tableStart + ("<tr><td>" + student2 + "</td><td><a" + + " href='mailto:" + innerData[k2].email + "'>" + innerData[k2].email + "</a></td></tr>"); + } else if (innerData[k2].name === student3) { + tableStart = tableStart + ("<tr><td>" + student3 + "</td><td><a" + + " href='mailto:" + innerData[k2].email + "'>" + innerData[k2].email + "</a></td></tr>"); + } else if (innerData[k2].name === student4 && (student4 != null)) { + tableStart = tableStart + ("<tr><td>" + student4 + "</td><td><a" + + " href='mailto:" + innerData[k2].email + "'>" + innerData[k2].email + "</a></td></tr>"); + } + } + + var tableString = tableStart + tableFinish; + $("#tablesHolder").append(tableString); + } + }); + return innerurl; +} +function getMembers(project, user) { //gets all Members in the chosen Project user is a part of with email adresses + + $("#tablesHolder").empty(); + var url = compbaseUrl + "/api2/groups/" + project; //this API is used, since fleckenroller has security issues + // with CORS + // and stuff + $.ajax({ + url: url, + user: user, + type: 'GET', + contentType: "application/json", + dataType: "json", //{groups: [id, users:[]] } + success: function (data) { + for (var i = 0; i < data.groups.length; i++) { + + var student1 = data.groups[i].users[0]; + var student2 = data.groups[i].users[1]; + var student3 = data.groups[i].users[2]; + var student4 = data.groups[i].users[3]; + printGroupTable(student1, student2, student3, student4); + } + }, + error: function(data) { + $("#tablesHolder").append("<p>Es wurden keine Gruppen gefunden. Das Projekt muss mehr als 5 Teilnehmer haben!</p>") + } + + }); +} + +function showProject(project, user) { //will display the chosen option in the dropdown button and show all students in a unordered list + $("#projectDropdown").text(project); //the dropdown button + getMembers(project, user); //the students +} \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/core/management/js/newProject.js b/gemeinsamforschen/src/main/webapp/core/management/js/newProject.js new file mode 100644 index 0000000000000000000000000000000000000000..bf2eaf856cefd4156189b5814e2a7cf9826eb248 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/js/newProject.js @@ -0,0 +1,162 @@ +/** + * Created by fides-WHK on 19.02.2018. + */ +$(document).ready(function () { + var allTheTags = []; + $("#nameProject").focus(); + $('#projectNameExists').hide(); + $('#projectIsMissing').hide(); + $('#exactNumberOfTags').hide(); + $('#specialChars').hide(); + $(function () { + $('#tagsProject').tagsInput({ + width: '475px', + onAddTag: function (tag) { + allTheTags.push(tag); + }, + onRemoveTag: function (tag) { + allTheTags.pop(); //todo: löscht noch nicht den gewählten tag sondern den letzten + } + }); + }); + $('#sendProject').on('click', function () { + var activ = "1"; + createNewProject(allTheTags, activ); + }); + + +}); + + +function createNewProject(allTheTags, activ) { + $("#nameProject").focus(); + $('#projectNameExists').hide(); + $('#projectIsMissing').hide(); + $('#exactNumberOfTags').hide(); + $('#specialChars').hide(); + + var projectName = $("#nameProject").val().trim(); + var password = $("#passwordProject").val().trim(); + var adminPassword = $("#adminPassword").val().trim(); + if (adminPassword == "") { + adminPassword = "1234"; + } + + var reguexp = /^[a-zA-Z0-9äüöÄÜÖ\ ]+$/; + if (!reguexp.test(projectName)) { + $('#specialChars').show(); + return false; + } + if (projectName === "") { //project has no name, so abort function + $('#projectIsMissing').show(); + return false; + } + + document.getElementById('loader').className = "loader"; + document.getElementById('wrapper').className = "wrapper-inactive"; + var localurl = "../database/getProjects.php?project=" + projectName; + if (allTheTags.length !== 5) { + document.getElementById('tagHelper').className = "alert alert-warning"; + } else { + document.getElementById('tagHelper').className = ""; + } + + + $('#projectIsMissing').hide(); + $.ajax({ //check local DB for existence of projectName + url: localurl, + projectName: projectName, + activ: activ, + Accept: "text/plain; charset=utf-8", + contentType: "text/plain", + success: function (response) { + if (response !== "project missing") { + $('#projectNameExists').show(); + document.getElementById('loader').className = "loader-inactive"; + document.getElementById('wrapper').className = "wrapper"; + return true; + } else { + $('#projectNameExists').hide(); + if (allTheTags.length !== 5) { + document.getElementById('tagHelper').className = "alert alert-warning"; + document.getElementById('loader').className = "loader-inactive"; + document.getElementById('wrapper').className = "wrapper"; + $('#exactNumberOfTags').show(); + return false; + } + document.getElementById('tagHelper').className = ""; + var obj = { + "courseId": projectName, + "printableName": projectName, + "competences": allTheTags + }; + var url = compbaseUrl + "/api1/courses/" + $("#nameProject").val(); + var dataString = JSON.stringify(obj); + var addProjectNeo4j = $.ajax({ + url: url, + contentType: 'application/json', + activ: activ, + type: 'PUT', + data: dataString, + success: function (response) { + console.log(response); + document.getElementById('loader').className = "loader-inactive"; + document.getElementById('wrapper').className = "wrapper"; + }, + error: function (a, b, c) { + console.log(a); + document.getElementById('loader').className = "loader-inactive"; + document.getElementById('wrapper').className = "wrapper"; + return false; + } + }); + $.when(addProjectNeo4j, addProjectToLocalDB(allTheTags, projectName, password, activ, adminPassword)).done(function () { + document.getElementById('loader').className = "loader-inactive"; + document.getElementById('wrapper').className = "wrapper"; + if ($('#Teilnehmer').prop("checked")) { //if author wants to join the course, he needs to be redirected to preferences.php + var url = "../database/getProjects.php?project=" + projectName + "&password=" + document.getElementById('passwordProject').value; + $.ajax({ + url: url, + projectName: projectName, + Accept: "text/plain; charset=utf-8", + contentType: "text/plain", + success: function (response) { + location.href = "preferences.php?token=" + getUserTokenFromUrl() + "&projectToken=" + response; + }, + error: function (a, b, c) { + console.log(a); + } + }); + } else { //if author is just author and not member, he will be directed to projects.php + location.href = "projects.php?token=" + getUserTokenFromUrl(); + } + }); + } + }, + error: function (a, b, c) { + console.log(a); + document.getElementById('loader').className = "loader-inactive"; + document.getElementById('wrapper').className = "wrapper"; + return true; + } + }); + +} + +function addProjectToLocalDB(allTheTags, projectName, password, activ, adminPassword) { + var tags = JSON.stringify(allTheTags); + var author = $("#user").text().trim(); + var url = "../database/putProject.php?project=" + projectName + "&password=" + password + "&activ=" + activ + "&token=" + getUserTokenFromUrl() + "&adminpassword=" + adminPassword + "&author=" + author; + return $.ajax({ + url: url, + //contentType: 'application/json', + type: 'POST', + data: tags, + success: function (response) { + console.log("Tags were added to local DB"); + }, + error: function (a, b, c) { + console.log(a); + } + }); +} \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/core/management/js/overview.js b/gemeinsamforschen/src/main/webapp/core/management/js/overview.js new file mode 100644 index 0000000000000000000000000000000000000000..a66538baa5732073685e411e7eab5864e8d7cc51 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/js/overview.js @@ -0,0 +1,176 @@ +/** + * Created by fides-WHK on 02.03.2018. + */ + +$(document).ready(function () { + getProjectOverview(document.getElementById('user').innerHTML); + //getMembers($('#projectDropdown').innerHTML,$('#user').innerHTML); + +}); + + +function printProjects(projects, offset) { + var table = document.getElementById("projectTable"); + var i = 0; + if (projects != null) { + for (i = 0; i < projects.length; i++) { + var project = projects[i]; + var content = document.createElement("TR"); + content.role = "button"; + content.style = "cursor:pointer;"; + content.id = project; + + //'<a class="btn btn-default"><em class="fa fa-pencil" ></em></a>' + + //'<button id="deleteButton' +i+ '" class="btn btn-danger fa fa-trash deleteButton"></button>' + + content.innerHTML = '<td align="center">' + + '<a href="deleteProject.php?token='+getUserTokenFromUrl()+'" class="btn btn-danger fa fa-trash"></a>' + + '</td>' + + '<td class="hidden-xs" href="#Div_Promo_Carousel" data-slide="next">' + projects[i] + '</td>' + + '<td id="projectTags' + (i + offset) + '" href="#Div_Promo_Carousel" data-slide="next"></td>'; + table.appendChild(content); + getTags(project, i + offset); + $('#' + project).click(function () { + getGroups(this.id); + }); + } + } + + + //$('#deleteModal').modal('show'); + +} +function getProjectOverview(user) { + var url = compbaseUrl + "/api2/user/" + user + "/projects"; + $.ajax({ + url: url, + user: user, + type: 'GET', + contentType: "application/json", + dataType: "json", + success: function (data) { + var projects = data.data; + printProjects(projects, 0); + getProjectsOfAuthor(user, projects, printProjects); + }, + error: function (a, b, c) { + console.log(a); + } + }); +} + +function getTags(projectName, number) { + var url = "../database/getTags.php?project=" + projectName; + $.ajax({ + url: url, + Accept: "text/plain; charset=utf-8", + contentType: "text/plain", + success: function (response) { + response = JSON.parse(response); + var tagString = ""; + var i = 0; + var table = document.getElementById("projectTags" + number); + for (i = 0; i < response.length; i++) { + tagString += "<label class=\"tagLabel\">" + response[i].tag + "</label>"; + ; + //tagString += response[i].tag + " "; + } + + table.innerHTML = tagString; + //table.innerHTML = tagHtml; + }, + error: function (a, b, c) { + console.log(a); + } + }); +} + + + + +function getGroups(projectName) { + var pathName = document.getElementsByName("pathProject"); + pathName[0].innerHTML = projectName; + pathName[1].innerHTML = projectName; + var url = compbaseUrl + "/api2/groups/" + projectName; //this API is used, since fleckenroller has security + // issues with + // CORS and stuff + $.ajax({ + url: url, + type: 'GET', + contentType: "application/json", + dataType: "json", + success: function (data) { + var table = document.getElementById("groupTable"); + table.innerHTML = ''; + for (var i = 0; i < data.groups.length; i++) { + var content = document.createElement("TR"); + content.role = "button"; + content.style = "cursor:pointer;"; + content.id = 'Gruppe' + data.groups[i].id; + var groupMembers = '<td align="center">' + + '<a class="btn btn-default"><em class="fa fa-pencil"></em></a>' + + '<a class="btn btn-danger"><em class="fa fa-trash"></em></a>' + + '</td>' + + '<td class="hidden-xs" href="#Div_Promo_Carousel" data-slide="next">Gruppe' + data.groups[i].id + '</td>' + + '<td id="memberOf' + content.id + '" href="#Div_Promo_Carousel" data-slide="next">'; + for (var j = 0; j < data.groups[i].users.length; j++) { + groupMembers += data.groups[i].users[j] + " "; + } + groupMembers += '</td>'; + content.innerHTML = groupMembers; + table.appendChild(content); + $('#Gruppe' + data.groups[i].id).click(function () { + var memberString = $('#memberOf' + this.id).html(); + getDetailsOfMembers(this.id, memberString); + }); + } + }, + error: function (a, b, c) { + console.log(a); + var table = document.getElementById("groupTable"); + table.innerHTML = ''; + var content = document.createElement("TR"); + content.innerHTML = '<td align="center">' + + '</td>' + + '<td class="hidden-xs">Es liegen noch keine Gruppen vor</td>' + + '<td></td>'; + table.appendChild(content); + } + }); +} + +function getDetailsOfMembers(group, studentString) { + var pathName = document.getElementsByName("pathGruppe"); + pathName[0].innerHTML = group; + var students = studentString.split(" "); + var innerurl = "../database/getAdresses.php?student1=" + students[0] + "&student2=" + students[1] + "&student3=" + students[2] + "&student4=" + students[3] + "&student5=" + students[4]; + $.ajax({ + student1: "" + students[0], + student2: "" + students[1], + student3: "" + students[2], + student4: "" + students[3], + student5: "" + students[4], + url: innerurl, + type: 'GET', + contentType: "application/json", + dataType: "json", + success: function (response) { + var table = document.getElementById("studentTable"); + table.innerHTML = ''; + var k; + for (k = 0; k < response.length; k++) { + var content = document.createElement("TR"); + content.innerHTML = '<td align="center">' + + '<a class="btn btn-default"><em class="fa fa-pencil"></em></a>' + + '<a class="btn btn-danger"><em class="fa fa-trash"></em></a>' + + '</td>' + + '<td class="hidden-xs">' + response[k].name + '</td>' + + '<td> <a href="mailto:' + response[k].email + '">' + response[k].email + '</a></td>'; + table.appendChild(content); + } + }, + error: function (a, b, c) { + console.log(a); + } + }); +} diff --git a/gemeinsamforschen/src/main/webapp/core/management/js/register.js b/gemeinsamforschen/src/main/webapp/core/management/js/register.js new file mode 100644 index 0000000000000000000000000000000000000000..08f1aea00289d4a3693b70632d4582dee2b399fe --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/js/register.js @@ -0,0 +1,7 @@ +/** + * Created by dehne on 23.02.2018. + */ + +$(document).ready(function () { + $("") +}); diff --git a/gemeinsamforschen/src/main/webapp/core/management/js/showProjects.js b/gemeinsamforschen/src/main/webapp/core/management/js/showProjects.js new file mode 100644 index 0000000000000000000000000000000000000000..ec4771b77b5e0cad7aec62634f303cd254241f7e --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/js/showProjects.js @@ -0,0 +1,50 @@ +/** + * Created by fides-WHK on 09.01.2018. + */ +$(document).ready(function () { + $("#projectWrongPassword").hide(); + $("#projectIsMissing").hide(); + + $("#projectName").keypress(function (e) { + if (e.which == 13) { + document.getElementById("projectPassword").focus(); + } + }); + $("#projectPassword").keypress(function (e) { + if (e.which == 13) { + seeProject($('#projectName').val()); + } + }); + $("#seeProject").on('click', function () { + seeProject($('#projectName').val()); + }); +}); + +function seeProject(projectName) { + var url = "../database/getProjects.php?project=" + projectName + "&password=" + document.getElementById('projectPassword').value; + if (projectName === "") { + return false; + } else { + $.ajax({ + url: url, + projectName: projectName, + Accept: "text/plain; charset=utf-8", + contentType: "text/plain", + success: function (response) { + if (response === "project missing") { + $("#projectIsMissing").show(); + } else { + if (response !== "wrong password") { //if response !== project missing and not wrong password, its the projectToken + location.href="preferences.php?token="+getUserTokenFromUrl()+"&projectToken="+response; + } else { + $("#projectIsMissing").hide(); + $('#projectWrongPassword').show(); + } + } + }, + error: function (a, b, c) { + console.log(a); + } + }); + } +} \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/core/management/js/utility.js b/gemeinsamforschen/src/main/webapp/core/management/js/utility.js new file mode 100644 index 0000000000000000000000000000000000000000..dac28eb2de49b29e1df606bb4f4cbe2abd9f4627 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/management/js/utility.js @@ -0,0 +1,10 @@ +function getUserTokenFromUrl() { + 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['token']; +} + diff --git a/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld.orig b/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld.orig deleted file mode 100644 index 464689080655114907b3461748349ae320db9d88..0000000000000000000000000000000000000000 --- a/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld.orig +++ /dev/null @@ -1,40 +0,0 @@ -<taglib> - <tlib-version>1.0</tlib-version> - <jsp-version>2.0</jsp-version> - <short-name>hiddenUserTag</short-name> - - <tag> - <name>hiddenUserTag</name> - <tag-class>unipotsdam.gf.core.management.user.HiddenUserTag</tag-class> - <body-content>empty</body-content> - </tag> - - <tag> - <name>menu</name> - <tag-class>unipotsdam.gf.core.management.user.Menu</tag-class> - <body-content>empty</body-content> - </tag> - - <tag> -<<<<<<< HEAD - <name>headLine</name> - <tag-class>unipotsdam.gf.core.management.user.headLine</tag-class> -======= - <name>session</name> - <tag-class>unipotsdam.gf.core.session.SessionTag</tag-class> ->>>>>>> origin/session_management - <body-content>empty</body-content> - </tag> - - <tag> -<<<<<<< HEAD - <name>omniDependencies</name> - <tag-class>unipotsdam.gf.core.management.user.omniDependencies</tag-class> -======= - <name>context</name> - <tag-class>unipotsdam.gf.core.session.ContextTag</tag-class> ->>>>>>> origin/session_management - <body-content>empty</body-content> - </tag> - -</taglib> \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/session/session_example_1.jsp b/gemeinsamforschen/src/main/webapp/core/session/session_example_1.jsp similarity index 100% rename from gemeinsamforschen/src/main/webapp/session/session_example_1.jsp rename to gemeinsamforschen/src/main/webapp/core/session/session_example_1.jsp diff --git a/gemeinsamforschen/src/main/webapp/session/session_example_2.jsp b/gemeinsamforschen/src/main/webapp/core/session/session_example_2.jsp similarity index 100% rename from gemeinsamforschen/src/main/webapp/session/session_example_2.jsp rename to gemeinsamforschen/src/main/webapp/core/session/session_example_2.jsp diff --git a/gemeinsamforschen/src/main/webapp/pages/view_groupfinding_docent.html b/gemeinsamforschen/src/main/webapp/groupfinding/view_groupfinding_docent.html similarity index 100% rename from gemeinsamforschen/src/main/webapp/pages/view_groupfinding_docent.html rename to gemeinsamforschen/src/main/webapp/groupfinding/view_groupfinding_docent.html diff --git a/gemeinsamforschen/src/main/webapp/pages/view_start_groupfinding.html b/gemeinsamforschen/src/main/webapp/groupfinding/view_start_groupfinding.html similarity index 100% rename from gemeinsamforschen/src/main/webapp/pages/view_start_groupfinding.html rename to gemeinsamforschen/src/main/webapp/groupfinding/view_start_groupfinding.html diff --git a/gemeinsamforschen/src/main/webapp/pages/view_student_criteriachoice.html b/gemeinsamforschen/src/main/webapp/groupfinding/view_student_criteriachoice.html similarity index 100% rename from gemeinsamforschen/src/main/webapp/pages/view_student_criteriachoice.html rename to gemeinsamforschen/src/main/webapp/groupfinding/view_student_criteriachoice.html diff --git a/gemeinsamforschen/src/main/webapp/munchkin/js/munschkinloader.js b/gemeinsamforschen/src/main/webapp/munchkin/js/munschkinloader.js deleted file mode 100644 index 205c0005b665424d0e2ed31a26d702db8c079e51..0000000000000000000000000000000000000000 --- a/gemeinsamforschen/src/main/webapp/munchkin/js/munschkinloader.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Created by dehne on 25.04.2018. - */ - -function xmlToString(xmlData) { - - var xmlString; - //IE - if (window.ActiveXObject) { - xmlString = xmlData.xml; - } - // code for Mozilla, Firefox, Opera, etc. - else { - xmlString = (new XMLSerializer()).serializeToString(xmlData); - } - return xmlString; -} - - -$(document).ready(function () { - $.ajax({ - type: "get", - url: "http://localhost:8080/gemeinsamforschen/rest/api/munschkin/1", - dataType: "xml", - success: function (data) { - /* handle data here */ - //var munschkin = $.parseXML(data) - $("#munschkin").append(xmlToString(data)); - }, - error: function (xhr, status) { - alert("Server down .... ogottogottogottt") - } - }); - -}); - diff --git a/gemeinsamforschen/src/main/webapp/pages/annotation-document.jsp b/gemeinsamforschen/src/main/webapp/pages/annotation-document.jsp index d8e499fe40ffe6c526d9785794e086efae0434a0..eade463667e6887d498e754002ed7fdb61f9a2a3 100644 --- a/gemeinsamforschen/src/main/webapp/pages/annotation-document.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/annotation-document.jsp @@ -6,6 +6,8 @@ <!DOCTYPE html> <html> +<!-- TODO refactor @Sven: bitte nutze einen Unterordner für dein Modul z.B. webapp/annotation/ --> + <head> <omniDependencies:omniDependencies/> diff --git a/gemeinsamforschen/src/main/webapp/pages/assessmentCalculator.jsp b/gemeinsamforschen/src/main/webapp/pages/assessmentCalculator.jsp index 67b2861e38ad3e55fc6f0dd2db9acbab315608c6..c7d44f13736c7ec10eb7c87c6218cc676026b14d 100644 --- a/gemeinsamforschen/src/main/webapp/pages/assessmentCalculator.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/assessmentCalculator.jsp @@ -3,6 +3,9 @@ <%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> <%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> +<!-- TODO refactor @Sven: bitte nutze einen Unterordner für dein Modul z.B. webapp/annotation/ --> + + <!DOCTYPE html> <html lang="en"> <head>