diff --git a/.gitignore b/.gitignore index 2c0bec3c9dca32efe6064b2203aeefe09c340116..fdd8abe91e7a54c6db8d2dce5d522e4c8a61ff12 100644 --- a/.gitignore +++ b/.gitignore @@ -19,5 +19,5 @@ **/.classpath /.idea/vcs.xml /.idea/workspace.xml - -**/.idea \ No newline at end of file +**/.idea +**/GFRocketChatConfig.java \ No newline at end of file diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFRocketChatConfig.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFRocketChatConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..feac0c4e9926ffabdf27fad4ff2c1620d8b0b680 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFRocketChatConfig.java @@ -0,0 +1,8 @@ +package unipotsdam.gf.config; + +public class GFRocketChatConfig { + + public static final String ROCKET_CHAT_LINK = "https://rocket.farm.uni-potsdam.de/"; + public static final String ADMIN_USERNAME = ""; + public static final String ADMIN_PASSWORD = ""; +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java index 1ee2cf14cbceb21ad8f2222dd3373dd17bb05cfd..5d1dcc695c48252733445714859443160c1a89bc 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java @@ -10,7 +10,6 @@ import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.core.management.user.UserInterests; import unipotsdam.gf.core.management.user.UserProfile; import unipotsdam.gf.core.states.ProjectPhase; -import unipotsdam.gf.modules.assessment.controller.model.Quiz; import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; import javax.annotation.ManagedBean; @@ -218,36 +217,6 @@ public class ManagementImpl implements Management { * @param quizId * @return */ - public Quiz getQuizByProjectGroupId(String projectId, String quizId){ - MysqlConnect connect = new MysqlConnect(); - connect.connect(); - String mysqlRequest = "SELECT * FROM quiz where projectId=" + projectId + " , question="+quizId; - VereinfachtesResultSet vereinfachtesResultSet = - connect.issueSelectStatement(mysqlRequest, ""); - boolean next = vereinfachtesResultSet.next(); - String question = ""; - ArrayList<String> correctAnswers = new ArrayList<String>(); - ArrayList<String> incorrectAnswers = new ArrayList<String>(); - String answer = ""; - Boolean correct = false; - String mcType = ""; - while (next) { - mcType = vereinfachtesResultSet.getString("mcType"); - question = vereinfachtesResultSet.getString("question"); - answer = vereinfachtesResultSet.getString("answer"); - correct = vereinfachtesResultSet.getBoolean("correct"); - if (correct){ - correctAnswers.add(answer); - }else{ - incorrectAnswers.add(answer); - } - next = vereinfachtesResultSet.next(); - } - Quiz quiz = new Quiz(mcType,question, correctAnswers, incorrectAnswers); - connect.close(); - return quiz; - } - private User getUserByField(String field, String value) { MysqlConnect connect = new MysqlConnect(); connect.connect(); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig new file mode 100644 index 0000000000000000000000000000000000000000..406fbafeadaa1c4f59ef933dbd831623b4aa5c48 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig @@ -0,0 +1,349 @@ +package unipotsdam.gf.core.management; + +import unipotsdam.gf.core.database.mysql.MysqlConnect; +import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; +import unipotsdam.gf.core.management.group.Group; +import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.management.project.ProjectConfiguration; +import unipotsdam.gf.core.management.project.ProjectConfigurationDAO; +import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.management.user.UserInterests; +import unipotsdam.gf.core.management.user.UserProfile; +<<<<<<< HEAD +======= +import unipotsdam.gf.core.states.ProjectPhase; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; +>>>>>>> origin/session_management +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; + +import javax.annotation.ManagedBean; +import javax.annotation.Resource; +import javax.inject.Singleton; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + * Created by dehne on 31.05.2018. + */ +@ManagedBean +@Resource +@Singleton +public class ManagementImpl implements Management { + @Override + public void delete(StudentIdentifier identifier) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "DELETE FROM users where email = (?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, identifier.getStudentId()); + connect.close(); + } + + @Override + public void create(User user, UserProfile profile) { + UUID uuid = UUID.randomUUID(); + String token = uuid.toString(); + + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "INSERT INTO users (`name`, `password`, `email`, `token`,`isStudent`," + + "`rocketChatId`,`rocketChatAuthToken`) values (?,?,?,?,?,?,?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(), + token, user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken()); + connect.close(); + + // TODO implmement UserProfile @Mar + } + + // TODO: naming convention discussion? all is named create, but group is named createGroup + @Override + public void create(Project project) { + UUID uuid = UUID.randomUUID(); + String token = uuid.toString(); + + + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = + "INSERT INTO projects (`id`, `password`, `active`, `timecreated`, `author`, " + + "`adminPassword`, `token`, `phase`) values (?,?,?,?,?,?,?,?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), project.getPassword(), project.isActive(), + project.getTimecreated(), project.getAuthor(), project.getAdminPassword(), token, project.getPhase() + == null ? ProjectPhase.CourseCreation : project.getPhase()); + connect.close(); + } + + @Override + public void delete(Project project) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "DELETE FROM projects where id = (?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId()); + connect.close(); + } + + @Override + public void register(User user, Project project, UserInterests interests) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "INSERT INTO projectuser (`projectId`, `userId`) values (?,?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), user.getId()); + connect.close(); + } + + @Override + public void update(User user) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "UPDATE `users` SET `name`=?,`password`=?,`email`=?,`token`=?,`isStudent`=?, `rocketChatId`=?,`rocketChatAuthToken`=? WHERE email=? LIMIT 1"; + //TODO: maybe add handling if a line is actually updated + connect.issueUpdateStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(), + user.getToken(), user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken(), user.getEmail()); + connect.close(); + } + + @Override + public Boolean exists(User user) { + Boolean result; + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "SELECT * FROM users where email = ? and password = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, user.getEmail(), user.getPassword()); + result = vereinfachtesResultSet.next(); + connect.close(); + return result; + } + + @Override + public Boolean exists(Project project) { + Boolean result; + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "SELECT * FROM projects where id = ? and adminPassword = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, project.getId(), project.getAdminPassword()); + result = vereinfachtesResultSet.next(); + connect.close(); + return result; + } + + @Override + public List<User> getUsers(Project project) { + String query = + "SELECT * FROM users u " + + " JOIN projectuser pu ON u.email=pu.userId" + + " JOIN projects p ON pu.projectId = p.id" + + " WHERE pu.projectId = ?"; + + ArrayList<User> result = new ArrayList<>(); + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(query, project.getId()); + while (!vereinfachtesResultSet.isLast()) { + Boolean next = vereinfachtesResultSet.next(); + if (next) { + User user = getUserFromResultSet(vereinfachtesResultSet); + String token = vereinfachtesResultSet.getString("token"); + user.setToken(token); + result.add(user); + } else { + break; + } + } + connect.close(); + return result; + } + + private User getUserFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) { + String name = vereinfachtesResultSet.getString("name"); + String password = vereinfachtesResultSet.getString("password"); + String email = vereinfachtesResultSet.getString("email"); + String rocketChatId = vereinfachtesResultSet.getString("rocketChatId"); + String rocketChatAuthToken = vereinfachtesResultSet.getString("rocketChatAuthToken"); + Boolean isStudent = vereinfachtesResultSet.getBoolean("isStudent"); + return new User(name, password, email, rocketChatId, rocketChatAuthToken, isStudent); + } + + private Project getProjectFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) { + String id = vereinfachtesResultSet.getString("id"); + String password = vereinfachtesResultSet.getString("password"); + boolean active = vereinfachtesResultSet.getBoolean("active"); + Timestamp timestamp = vereinfachtesResultSet.getTimestamp("timecreated"); + String author = vereinfachtesResultSet.getString("author"); + String adminPassword = vereinfachtesResultSet.getString("adminpassword"); + String token = vereinfachtesResultSet.getString("token"); + String phase = vereinfachtesResultSet.getString("phase"); + + return new Project(id, password, active, timestamp, author, adminPassword, token); + } + + private Group getGroupFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) { + int id = vereinfachtesResultSet.getInt("id"); + String projectId = vereinfachtesResultSet.getString("projectId"); + String chatRoomId = vereinfachtesResultSet.getString("chatRoomId"); + // TODO: determine how to get all User + return new Group(id, new ArrayList<>(), projectId, chatRoomId); + } + + @Override + public String getUserToken(User user) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "SELECT * FROM users where email = ? and password = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, user.getEmail(), user.getPassword()); + boolean next = vereinfachtesResultSet.next(); + if (!next) { + connect.close(); + return null; + } + String token = vereinfachtesResultSet.getString("token"); + connect.close(); + return token; + } + + @Override + public User getUserByToken(String token) { + return getUserByField("token", token); + } + + @Override + public User getUserByEmail(String email) { + return getUserByField("email", email); + } + +<<<<<<< HEAD +======= + + /** + * TODO @Axel bitte in modules/asessment verschieben + * @param projectId + * @param quizId + * @return + */ + public Quiz getQuizByProjectGroupId(String projectId, String quizId){ + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "SELECT * FROM quiz where projectId=" + projectId + " , question="+quizId; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, ""); + boolean next = vereinfachtesResultSet.next(); + String question = ""; + ArrayList<String> correctAnswers = new ArrayList<String>(); + ArrayList<String> incorrectAnswers = new ArrayList<String>(); + String answer = ""; + Boolean correct = false; + String mcType = ""; + while (next) { + mcType = vereinfachtesResultSet.getString("mcType"); + question = vereinfachtesResultSet.getString("question"); + answer = vereinfachtesResultSet.getString("answer"); + correct = vereinfachtesResultSet.getBoolean("correct"); + if (correct){ + correctAnswers.add(answer); + }else{ + incorrectAnswers.add(answer); + } + next = vereinfachtesResultSet.next(); + } + Quiz quiz = new Quiz(mcType,question, correctAnswers, incorrectAnswers); + connect.close(); + return quiz; + } + +>>>>>>> origin/session_management + private User getUserByField(String field, String value) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "SELECT * FROM users where " + field + " = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, value); + boolean next = vereinfachtesResultSet.next(); + if (next) { + User user = getUserFromResultSet(vereinfachtesResultSet); + connect.close(); + return user; + } else { + connect.close(); + return null; + } + } + + @Override + public Project getProjectById(String id) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "SELECT * FROM projects where id = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, id); + boolean next = vereinfachtesResultSet.next(); + if (next) { + Project project = getProjectFromResultSet(vereinfachtesResultSet); + connect.close(); + return project; + } else { + connect.close(); + return null; + } + } + + + @Override + public void createGroup(Group group, String projectId) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + + Project project = getProjectById(projectId); + + for (User groupMember : group.getMembers()) { + String mysqlRequest2 = "INSERT INTO groupuser (`userEmail`, `groupId`) values (?,?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest2, groupMember.getEmail(), project.getId()); + } + connect.close(); + } + + @Override + public void addGroupMember(User groupMember, int groupId) { + + } + + @Override + public void deleteGroupMember(User groupMember, int groupId) { + + } + + @Override + public List<Group> getGroupsByProjectId(String projectId) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + // TODO: implement correct join and finish implementation + String mysqlRequest = "SELECT * FROM groups g " + + "JOIN groupuser gu u ON g.id=gu.groupId " + "JOIN users u ON gu.userEmail=u.email" + + "where g.projectId = ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, projectId); + ArrayList<Group> groups = new ArrayList<>(); + while (vereinfachtesResultSet.next()) { + //groups.add() + } + if (groups.isEmpty()) { + return null; + } else { + return groups; + } + } + + @Override + public void create(ProjectConfiguration projectConfiguration, Project project) { + ProjectConfigurationDAO projectConfigurationDAO = new ProjectConfigurationDAO(); + projectConfigurationDAO.persistProjectConfiguration(projectConfiguration,project); + } + + @Override + public ProjectConfiguration getProjectConfiguration(Project project) { + ProjectConfigurationDAO projectConfigurationDAO = new ProjectConfigurationDAO(); + return projectConfigurationDAO.loadProjectConfiguration(project); + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java index 06bd24d75edced5f007ff2db5a58b1bbcd6b30ab..2fb7b840289b1b9056c7da73329bb2bbef6de38d 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java @@ -122,5 +122,18 @@ public class Project { return timecreated; } - + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("Project{"); + sb.append("id='").append(id).append('\''); + sb.append(", password='").append(password).append('\''); + sb.append(", active=").append(active); + sb.append(", timecreated=").append(timecreated); + sb.append(", author='").append(author).append('\''); + sb.append(", adminPassword='").append(adminPassword).append('\''); + sb.append(", token='").append(token).append('\''); + sb.append(", phase='").append(phase).append('\''); + sb.append('}'); + return sb.toString(); + } } \ No newline at end of file diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/Menu.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/Menu.java index 16e3f3ffe900a17b77df2719adfc93ee1d5b6053..f62ec00b1b93c7d3b504e6f4cf196249fd13b4e1 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/Menu.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/Menu.java @@ -16,6 +16,7 @@ public class Menu extends SimpleTagSupport { PageContext pageContext = (PageContext) getJspContext(); HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); String token = request.getParameter("token"); + String projectId = request.getParameter("projectId"); ManagementImpl management = new ManagementImpl(); JspWriter out = getJspContext().getOut(); if (token!=null){ @@ -24,20 +25,20 @@ public class Menu extends SimpleTagSupport { if (isStudent){ out.println("<div id=\"sidebar-wrapper\">\n" + " <ul class=\"sidebar-nav\">\n" + - " <li class=\"sidebar-brand\"><a href=\"overview-student.jsp?token="+token+"\">overview</a></li>\n" + - " <li><a href=\"profile.jsp?token="+token+"\">Profil</a></li>\n" + - " <li><a href=\"Quiz.jsp?token="+token+"\">Quizfrage</a></li>\n" + - " <li><a href=\"eportfolio.jsp?token="+token+"\">ePortfolio</a></li>\n" + - " <li><a href=\"researchReportTitle.jsp?token="+token+"\">Beitrag</a></li>\n" + - " <li><a href=\"finalAssessments.jsp?token="+token+"\">Bewertung</a></li>\n" + + " <li class=\"sidebar-brand\"><a href=\"overview-student.jsp?token="+token+"&projectId="+projectId+"\">overview</a></li>\n" + + " <li><a href=\"profile.jsp?token="+token+"&projectId="+projectId+"\">Profil</a></li>\n" + + " <li><a href=\"Quiz.jsp?token="+token+"&projectId="+projectId+"\">Quizfrage</a></li>\n" + + " <li><a href=\"eportfolio.jsp?token="+token+"&projectId="+projectId+"\">ePortfolio</a></li>\n" + + " <li><a href=\"researchReportTitle.jsp?token="+token+"&projectId="+projectId+"\">Beitrag</a></li>\n" + + " <li><a href=\"finalAssessments.jsp?token="+token+"&projectId="+projectId+"\">Bewertung</a></li>\n" + " <li><a href=\"../index.jsp\">Logout</a></li>\n" + " </ul>\n" + " </div>"); } else { out.println("<div id=\"sidebar-wrapper\">\n" + " <ul class=\"sidebar-nav\">\n" + - " <li class=\"sidebar-brand\"><a href=\"overview-docent.jsp?token="+token+"\">overview</a></li>\n" + - " <li><a href=\"Quiz.jsp?token="+token+"\">Quizfrage</a></li>\n" + + " <li class=\"sidebar-brand\"><a href=\"overview-docent.jsp?token="+token+"&projectId="+projectId+"\">overview</a></li>\n" + + " <li><a href=\"Quiz.jsp?token="+token+"&projectId="+projectId+"\">Quizfrage</a></li>\n" + " <li><a href=\"#\">ePortfolio</a></li>\n" + " <li><a href=\"#\">Beitrag</a></li>\n" + " <li><a href=\"#\">Gruppen erstellen</a></li>\n" + @@ -53,6 +54,11 @@ public class Menu extends SimpleTagSupport { "</div>"); //in active System this will be the point to redirect to index.jsp, because token is "wrong" } + if (projectId!=null) + out.println("<p id=\"projectId\" hidden>"+projectId+"</p>"); + User user = management.getUserByToken(token); + if (user != null) + out.println("<p id=\"user\" hidden>"+user.getName()+"</p>"); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/headLine.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/headLine.java new file mode 100644 index 0000000000000000000000000000000000000000..087a26f8dfd29728abc9de226ef1511a26c59c82 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/headLine.java @@ -0,0 +1,63 @@ +package unipotsdam.gf.core.management.user; + +import unipotsdam.gf.core.management.ManagementImpl; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.SimpleTagSupport; +import java.io.IOException; + +public class headLine extends SimpleTagSupport { + public void doTag() throws JspException, IOException { + PageContext pageContext = (PageContext) getJspContext(); + HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); + String projectId = request.getParameter("projectId"); + String token = request.getParameter("token"); + ManagementImpl management = new ManagementImpl(); + JspWriter out = getJspContext().getOut(); + User user = management.getUserByToken(token); + Boolean isStudent = user.getStudent(); + out.println("<div class=\"container-fluid\">\n" + + " <table style=\"width:100%\">\n" + + " <tr>\n" + + " <td style=\"width:70%\"><h2 id=\"headLineProject\">"); + if (projectId!=null){ + out.println(projectId); + }else{ + if (isStudent){ + out.println("Studentenübersicht "+user.getName()); + }else{ + out.println("Dozentenübersicht "+user.getName()); + } + + } + out.println("</h2></td>\n" + + " <td style=\"width:30%\">\n" + + " <div align=\"right\" class=\"dropdown\">\n" + + " <button style=\"right: 50px;margin-top:-4px;\" class=\"btn btn-primary dropdown-toggle\" type=\"button\"\n" + + " data-toggle=\"dropdown\">\n" + + "\n" + + " <i class=\"glyphicon glyphicon-envelope\"></i>\n" + + " </button>\n" + + "\n" + + " <ul class=\"dropdown-menu\">\n" + + " <li><a class=\"viewfeedback\" role=\"button\">Feedback A</a></li>\n" + + " <li><a class=\"viewfeedback\" role=\"button\">Feedback B</a></li>\n" + + " <li><a class=\"viewfeedback\" role=\"button\">Feedback C</a></li>\n" + + " </ul>\n" + + "\n" + + " <a href=\"#\">\n" + + " <span class=\"glyphicon glyphicon-cog\"\n" + + " style=\"font-size:29px;margin-right:30px;\"></span>\n" + + " </a>\n" + + " </div>\n" + + " </td>\n" + + " </tr>\n" + + " </table>\n" + + " </div>"); + } + + +}; \ No newline at end of file diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/omniDependencies.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/omniDependencies.java new file mode 100644 index 0000000000000000000000000000000000000000..e4b3272b2dac3479a79f5271598981a0e04db3d6 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/omniDependencies.java @@ -0,0 +1,35 @@ +package unipotsdam.gf.core.management.user; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.SimpleTagSupport; +import java.io.IOException; + +public class omniDependencies extends SimpleTagSupport { + public void doTag() throws JspException, IOException { + PageContext pageContext = (PageContext) getJspContext(); + HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); + String projectId = request.getParameter("projectId"); + JspWriter out = getJspContext().getOut(); + out.println("<meta charset=\"utf-8\">\n" + + " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" + + " <title>fltrail</title>\n" + + " <link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\">\n" + + " <link rel=\"stylesheet\" href=\"../assets/css/styles.css\">\n" + + " <link rel=\"stylesheet\" href=\"../assets/css/footer.css\">\n" + + " <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js\"></script>\n" + + " <script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js\"></script>\n" + + " <link rel=\"stylesheet\" href=\"../assets/fonts/font-awesome.min.css\">\n" + + " <link rel=\"stylesheet\" href=\"../assets/css/Sidebar-Menu-1.css\">\n" + + " <link rel=\"stylesheet\" href=\"../assets/css/Sidebar-Menu.css\">\n" + + " <script src=\"../assets/js/Sidebar-Menu.js\"></script>\n" + + " <script src=\"../assets/js/utility.js\"></script>\n" + + " <script src=\"../assets/js/footer.js\"></script>\n" + + " <link rel=\"stylesheet\" href=\"https://use.fontawesome.com/releases/v5.1.0/css/all.css\"\n" + + " integrity=\"sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt\" crossorigin=\"anonymous\">"); + } + + +}; \ No newline at end of file diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/ContextTag.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/ContextTag.java new file mode 100644 index 0000000000000000000000000000000000000000..741d3eb28a69d4a2ebef9f63b9749e7d8a9204ec --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/ContextTag.java @@ -0,0 +1,27 @@ +package unipotsdam.gf.core.session; + +import unipotsdam.gf.core.management.project.Project; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.SimpleTagSupport; +import java.io.IOException; + +public class ContextTag extends SimpleTagSupport { + public void doTag() throws IOException { + PageContext pageContext = (PageContext) getJspContext(); + HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); + // sessionID is created with first call and persisted throughout the user's session< + JspWriter out = getJspContext().getOut(); + // lets add some context to the site + + /** + * We assume that the project context is added to the session, when a project is selected + * in the view, then the project is loaded from db and added via setAttribute like below + */ + GFContext gfContext = (GFContext) request.getSession().getAttribute("gf_context"); + out.println("<p>project:"+gfContext.getProject().toString()+"</p>"); + + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/GFContext.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/GFContext.java new file mode 100644 index 0000000000000000000000000000000000000000..bdbac9ae7b6b1171b82063e4d34f320fadf242fd --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/GFContext.java @@ -0,0 +1,77 @@ +package unipotsdam.gf.core.session; + +import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.ProjectPhase; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; +import unipotsdam.gf.modules.communication.model.chat.ChatRoom; + +public class GFContext { + Project project; + User user; + ProjectPhase projectPhase; + ChatRoom chatRoom; + // could be quizState .... + Quiz quiz; + + public GFContext( + Project project, User user, ProjectPhase projectPhase, ChatRoom chatRoom, Quiz quiz) { + this.project = project; + this.user = user; + this.projectPhase = projectPhase; + this.chatRoom = chatRoom; + this.quiz = quiz; + } + + public Project getProject() { + return project; + } + + public void setProject(Project project) { + this.project = project; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public ProjectPhase getProjectPhase() { + return projectPhase; + } + + public void setProjectPhase(ProjectPhase projectPhase) { + this.projectPhase = projectPhase; + } + + public ChatRoom getChatRoom() { + return chatRoom; + } + + public void setChatRoom(ChatRoom chatRoom) { + this.chatRoom = chatRoom; + } + + public Quiz getQuiz() { + return quiz; + } + + public void setQuiz(Quiz quiz) { + this.quiz = quiz; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("GFContext{"); + sb.append("project=").append(project); + sb.append(", user=").append(user); + sb.append(", projectPhase=").append(projectPhase); + sb.append(", chatRoom=").append(chatRoom); + sb.append(", quiz=").append(quiz); + sb.append('}'); + return sb.toString(); + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/SessionTag.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/SessionTag.java new file mode 100644 index 0000000000000000000000000000000000000000..eae3f549fe2061b4533e4092dbcd1e0d52632edb --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/SessionTag.java @@ -0,0 +1,51 @@ +package unipotsdam.gf.core.session; + +import uk.co.jemos.podam.api.PodamFactory; +import uk.co.jemos.podam.api.PodamFactoryImpl; +import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.management.user.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.SimpleTagSupport; +import java.io.IOException; + +public class SessionTag extends SimpleTagSupport { + + /** + * Utility to creaty dummy data for students + */ + PodamFactory factory = new PodamFactoryImpl(); + + + public void doTag() throws IOException { + PageContext pageContext = (PageContext) getJspContext(); + HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); + // sessionID is created with first call and persisted throughout the user's session< + JspWriter out = getJspContext().getOut(); + out.println("<p id=\"sessionId\"> SessionId:"+request.getSession().getId()+"</p>"); + + // lets add some context to the site + + /** + * We assume that the project context is added to the session, when a project is selected + * in the view, then the project is loaded from db and added via setAttribute like below + * this is only done here for the purpose of example + */ + + // create dummy context + String context1 = factory.manufacturePojo(GFContext.class).toString(); + // set dummy context in sessions + request.getSession().setAttribute("gf_context", context1); + + // you can update it + Project project = factory.manufacturePojo(Project.class); + GFContext context2 = (GFContext) request.getSession().getAttribute("gf_context"); + context2.setProject(project); + // updated context set in session + request.getSession().setAttribute("gf_context", context2); + + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java index e204835e7693c672b2073dc9bce3839643cdadc2..4d272a101ef35ae94b8d370d70b94133d2c7f754 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java @@ -19,7 +19,7 @@ public interface IPeerAssessment { */ void addAssessmentDataToDB(Assessment assessment); - Quiz getQuiz(String projectId, String groupId); + Quiz getQuiz(String projectId, String groupId, String author); /** * will return a saved assessment from the DB * @@ -58,7 +58,7 @@ public interface IPeerAssessment { * @param ProjectId * @return */ - int meanOfAssessement(String ProjectId); + int meanOfAssessment(String ProjectId); /** * returns all quizzes in a project @@ -83,4 +83,5 @@ public interface IPeerAssessment { * @param quizAnswer */ void answerQuiz(StudentAndQuiz studentAndQuiz, QuizAnswer quizAnswer); + void deleteQuiz(String quizId); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java.orig new file mode 100644 index 0000000000000000000000000000000000000000..134a601324f48c9a437cb87d92d5d2566775c4a4 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java.orig @@ -0,0 +1,90 @@ +package unipotsdam.gf.interfaces; + +import unipotsdam.gf.assignments.NotImplementedLogger; +import unipotsdam.gf.modules.assessment.QuizAnswer; +import unipotsdam.gf.modules.assessment.controller.model.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by dehne on 18.05.2018. + */ +public interface IPeerAssessment { + + /** + * student and performance are written to DB + * + * @param assessment + */ + void addAssessmentDataToDB(Assessment assessment); + + Quiz getQuiz(String projectId, String groupId, String author); + /** + * will return a saved assessment from the DB + * + * @param student + * @return Assessement = studentIdentifier , performance + */ + Assessment getAssessmentDataFromDB(StudentIdentifier student); + + /** + * writes a quiz-question into the DB so other students can benefit from another's insights. + * + * @param studentAndQuiz + */ + void createQuiz(StudentAndQuiz studentAndQuiz) ; + + /** + * calculate grades for everyone in a list. + * either it will be overwritten by choice of co- or peer-assessment or it gets a parameter which specifies it. + * + * + * @param totalPerformance @return + */ + List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance); // calculates marks for every performance and writes it to an array + + + /** + * + * @param studentIdentifier + * @return + */ + ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier); + + /** + * calculates the mean value of all assessments in a project. + * + * @param ProjectId + * @return + */ + int meanOfAssessment(String ProjectId); + + /** + * returns all quizzes in a project + * + * @param projectId + * @return all quizzes in projectId + */ + ArrayList<Quiz> getQuiz(String projectId); + + /** + * writes the peerRatings into db + * + * @param peerRatings + * @param projectId + * @param groupId + */ + void postPeerRating(ArrayList<PeerRating> peerRatings, String projectId, String groupId); + +<<<<<<< HEAD + void deleteQuiz(String quizId); +======= + /** + * + * @param studentAndQuiz + * @param quizAnswer + */ + void answerQuiz(StudentAndQuiz studentAndQuiz, QuizAnswer quizAnswer); +>>>>>>> origin/session_management +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/StudentAndQuiz.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/StudentAndQuiz.java index ce8d9bfdff59fbe2edfcf6ec56137cecf1bb1ca1..b995fc294603c2796555cc13b205e3fc6b5a4fc8 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/StudentAndQuiz.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/model/StudentAndQuiz.java @@ -5,6 +5,9 @@ package unipotsdam.gf.modules.assessment.controller.model; * TODO @Axel: Normally a quiz would have a student field property instead of creating a new class */ public class StudentAndQuiz { + private Quiz quiz; + private StudentIdentifier studentIdentifier; + @Override public String toString() { return "StudentAndQuiz{" + @@ -15,8 +18,6 @@ public class StudentAndQuiz { public StudentAndQuiz(){} - private StudentIdentifier studentIdentifier; - public StudentIdentifier getStudentIdentifier() { return studentIdentifier; } @@ -33,8 +34,6 @@ public class StudentAndQuiz { this.quiz = quiz; } - private Quiz quiz; - public StudentAndQuiz(StudentIdentifier studentIdentifier, Quiz quiz) { this.studentIdentifier = studentIdentifier; this.quiz = quiz; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDBCommunication.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDBCommunication.java new file mode 100644 index 0000000000000000000000000000000000000000..24289a14da1aab0670e842e754f42bf7c18ee0d7 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDBCommunication.java @@ -0,0 +1,57 @@ +package unipotsdam.gf.modules.assessment.controller.service; + +import unipotsdam.gf.core.database.mysql.MysqlConnect; +import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; +import unipotsdam.gf.modules.assessment.controller.model.Assessment; +import unipotsdam.gf.modules.assessment.controller.model.Performance; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; + +import javax.annotation.ManagedBean; +import javax.annotation.Resource; +import javax.inject.Singleton; +import java.util.ArrayList; + +@ManagedBean +@Resource +@Singleton +public class AssessmentDBCommunication { + public Assessment getAssessment(StudentIdentifier student){ + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "SELECT * FROM `peerAssessment` WHERE `projectId`=? AND `studentId`=?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, student.getProjectId(), student.getStudentId()); + boolean next = vereinfachtesResultSet.next(); + String question = ""; + ArrayList<String> correctAnswers = new ArrayList<String>(); + ArrayList<String> incorrectAnswers = new ArrayList<String>(); + String answer; + Boolean correct; + String mcType = ""; + while (next) { + mcType = vereinfachtesResultSet.getString("mcType"); + question = vereinfachtesResultSet.getString("question"); + answer = vereinfachtesResultSet.getString("answer"); + correct = vereinfachtesResultSet.getBoolean("correct"); + if (correct){ + correctAnswers.add(answer); + }else{ + incorrectAnswers.add(answer); + } + next = vereinfachtesResultSet.next(); + } + Performance performance=null; + Assessment assessment = new Assessment(student, performance); + connect.close(); + return assessment; + } + + public void deleteQuiz(String quizId) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "DELETE FROM quiz where question = (?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, quizId); + connect.close(); + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java index a00736d6be46da151e31deb2323b3c4c3115eba6..0de6aa34c5c74904885c1c27031cc6d197dd4b54 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java @@ -17,7 +17,7 @@ public class FBAssessement extends AssessmentDAO { } @Override - public Quiz getQuiz(String projectId, String groupId) { + public Quiz getQuiz(String projectId, String groupId, String author) { return null; } @@ -45,7 +45,7 @@ public class FBAssessement extends AssessmentDAO { } @Override - public int meanOfAssessement(String projectId) { + public int meanOfAssessment(String projectId) { return 0; } @@ -63,4 +63,9 @@ public class FBAssessement extends AssessmentDAO { public void answerQuiz(StudentAndQuiz studentAndQuiz, QuizAnswer quizAnswer) { } + + @Override + public void deleteQuiz(String quizId) { + + } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java.orig new file mode 100644 index 0000000000000000000000000000000000000000..76c82f4dd1ee5d8f9652d9f44002d173198dea7a --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java.orig @@ -0,0 +1,70 @@ +package unipotsdam.gf.modules.assessment.controller.service; + +import unipotsdam.gf.modules.assessment.QuizAnswer; +import unipotsdam.gf.modules.assessment.controller.model.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by dehne on 18.05.2018. + */ +public class FBAssessement extends AssessmentDAO { + + @Override + public void addAssessmentDataToDB(Assessment assessment) { + // write it to db + } + + @Override + public Quiz getQuiz(String projectId, String groupId, String author) { + return null; + } + + @Override + public void createQuiz(StudentAndQuiz studentAndQuiz) { + + } + + @Override + public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) { + return null; + } + + @Override + public ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier) { + return null; + } + + public void createQuiz(StudentIdentifier student, String question, String[] answers){ //writes a new question into the DB + + } + + public boolean permission(int feedbackCount){ + return true; + } + + @Override + public int meanOfAssessment(String projectId) { + return 0; + } + + @Override + public ArrayList<Quiz> getQuiz(String projectId) { + return null; + } + + @Override + public void postPeerRating(ArrayList<PeerRating> peerRatings, String projectId, String groupId) { + + } + + @Override +<<<<<<< HEAD + public void deleteQuiz(String quizId) { +======= + public void answerQuiz(StudentAndQuiz studentAndQuiz, QuizAnswer quizAnswer) { +>>>>>>> origin/session_management + + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java index a4ff7b02053678a112a681d5e6cba1866fe0109a..4faf3d93e2dd1ae3179fdbef6a2520e6c302c26f 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java @@ -1,11 +1,11 @@ package unipotsdam.gf.modules.assessment.controller.service; -import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.interfaces.IPeerAssessment; import unipotsdam.gf.modules.assessment.QuizAnswer; import unipotsdam.gf.modules.assessment.controller.model.*; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class PeerAssessment implements IPeerAssessment { @@ -15,28 +15,75 @@ public class PeerAssessment implements IPeerAssessment { } @Override//returns one quiz - public Quiz getQuiz(String projectId, String quizId) { - return new ManagementImpl().getQuizByProjectGroupId(projectId,quizId); + public Quiz getQuiz(String projectId, String quizId, String author) { + return new QuizDBCommunication().getQuizByProjectQuizId(projectId, quizId, author); } @Override //returns all quizzes in the course public ArrayList<Quiz> getQuiz(String projectId) { - return null; + return new QuizDBCommunication().getQuizByProjectId(projectId); } @Override public Assessment getAssessmentDataFromDB(StudentIdentifier student) { - return null; + return new AssessmentDBCommunication().getAssessment(student); } @Override public void createQuiz(StudentAndQuiz studentAndQuiz) { + new QuizDBCommunication().createQuiz(studentAndQuiz.getQuiz(),studentAndQuiz.getStudentIdentifier().getStudentId(), studentAndQuiz.getStudentIdentifier().getProjectId()); + } + @Override + public void deleteQuiz(String quizId) { + new QuizDBCommunication().deleteQuiz(quizId); } @Override public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) { - return null; + List<Grading> quizMean = meanOfQuizzes(totalPerformance); + List<Grading> workRateMean = meanOfWorkRate(totalPerformance); + Grading[] grading = new Grading[totalPerformance.size()]; + for (int i=0; i<quizMean.size(); i++){ + double grade = quizMean.get(i).getGrade() * workRateMean.get(i).getGrade(); + grading[i] = new Grading(totalPerformance.get(i).getStudentIdentifier(), grade); + } + + return Arrays.asList(grading); + } + + private List<Grading> meanOfQuizzes(ArrayList<Performance> totalPerformance){ + double[] allAssessments = new double[totalPerformance.size()]; + Grading[] grading = new Grading[totalPerformance.size()]; + + for (int i = 0; i < totalPerformance.size(); i++) { + for (int j = 0; j < totalPerformance.get(i).getQuizAnswer().length; j++) { + allAssessments[i] += totalPerformance.get(i).getQuizAnswer()[j]; + } + allAssessments[i] = allAssessments[i] / totalPerformance.get(i).getQuizAnswer().length; + } + for (int i = 0; i < totalPerformance.size(); i++) { + Grading shuttle = new Grading(totalPerformance.get(i).getStudentIdentifier(), allAssessments[i]); + grading[i] = shuttle; + } + return Arrays.asList(grading); + } + + private List<Grading> meanOfWorkRate(ArrayList<Performance> totalPerformance){ + double[] allAssessments = new double[totalPerformance.size()]; + Grading[] grading = new Grading[totalPerformance.size()]; + + for (int i = 0; i < totalPerformance.size(); i++) { + for (int j = 0; j < totalPerformance.get(i).getWorkRating().length; j++) { + allAssessments[i] += 6-totalPerformance.get(i).getWorkRating()[j]; + } + allAssessments[i] = allAssessments[i] / totalPerformance.get(i).getWorkRating().length; + } + for (int i = 0; i < totalPerformance.size(); i++) { + Grading shuttle = new Grading(totalPerformance.get(i).getStudentIdentifier(), allAssessments[i]); + grading[i] = shuttle; + } + return Arrays.asList(grading); } @Override @@ -45,7 +92,7 @@ public class PeerAssessment implements IPeerAssessment { } @Override - public int meanOfAssessement(String ProjectId) { + public int meanOfAssessment(String ProjectId) { return 0; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java.orig new file mode 100644 index 0000000000000000000000000000000000000000..5335af53fd1b59c1b49775f877918fa61b469715 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java.orig @@ -0,0 +1,114 @@ +package unipotsdam.gf.modules.assessment.controller.service; + +<<<<<<< HEAD +======= +import unipotsdam.gf.core.management.ManagementImpl; +>>>>>>> origin/session_management +import unipotsdam.gf.interfaces.IPeerAssessment; +import unipotsdam.gf.modules.assessment.QuizAnswer; +import unipotsdam.gf.modules.assessment.controller.model.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class PeerAssessment implements IPeerAssessment { + @Override + public void addAssessmentDataToDB(Assessment assessment) { + + } + + @Override//returns one quiz + public Quiz getQuiz(String projectId, String quizId, String author) { + return new QuizDBCommunication().getQuizByProjectQuizId(projectId, quizId, author); + } + + @Override //returns all quizzes in the course + public ArrayList<Quiz> getQuiz(String projectId) { + return new QuizDBCommunication().getQuizByProjectId(projectId); + } + + @Override + public Assessment getAssessmentDataFromDB(StudentIdentifier student) { + return new AssessmentDBCommunication().getAssessment(student); + } + + @Override + public void createQuiz(StudentAndQuiz studentAndQuiz) { + new QuizDBCommunication().createQuiz(studentAndQuiz.getQuiz(),studentAndQuiz.getStudentIdentifier().getStudentId(), studentAndQuiz.getStudentIdentifier().getProjectId()); + } + + @Override + public void deleteQuiz(String quizId) { + new QuizDBCommunication().deleteQuiz(quizId); + } + + @Override + public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) { + List<Grading> quizMean = meanOfQuizzes(totalPerformance); + List<Grading> workRateMean = meanOfWorkRate(totalPerformance); + Grading[] grading = new Grading[totalPerformance.size()]; + for (int i=0; i<quizMean.size(); i++){ + double grade = quizMean.get(i).getGrade() * workRateMean.get(i).getGrade(); + grading[i] = new Grading(totalPerformance.get(i).getStudentIdentifier(), grade); + } + + return Arrays.asList(grading); + } + + private List<Grading> meanOfQuizzes(ArrayList<Performance> totalPerformance){ + double[] allAssessments = new double[totalPerformance.size()]; + Grading[] grading = new Grading[totalPerformance.size()]; + + for (int i = 0; i < totalPerformance.size(); i++) { + for (int j = 0; j < totalPerformance.get(i).getQuizAnswer().length; j++) { + allAssessments[i] += totalPerformance.get(i).getQuizAnswer()[j]; + } + allAssessments[i] = allAssessments[i] / totalPerformance.get(i).getQuizAnswer().length; + } + for (int i = 0; i < totalPerformance.size(); i++) { + Grading shuttle = new Grading(totalPerformance.get(i).getStudentIdentifier(), allAssessments[i]); + grading[i] = shuttle; + } + return Arrays.asList(grading); + } + + private List<Grading> meanOfWorkRate(ArrayList<Performance> totalPerformance){ + double[] allAssessments = new double[totalPerformance.size()]; + Grading[] grading = new Grading[totalPerformance.size()]; + + for (int i = 0; i < totalPerformance.size(); i++) { + for (int j = 0; j < totalPerformance.get(i).getWorkRating().length; j++) { + allAssessments[i] += 6-totalPerformance.get(i).getWorkRating()[j]; + } + allAssessments[i] = allAssessments[i] / totalPerformance.get(i).getWorkRating().length; + } + for (int i = 0; i < totalPerformance.size(); i++) { + Grading shuttle = new Grading(totalPerformance.get(i).getStudentIdentifier(), allAssessments[i]); + grading[i] = shuttle; + } + return Arrays.asList(grading); + } + + @Override + public ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier) { + return null; + } + + @Override + public int meanOfAssessment(String ProjectId) { + return 0; + } + + + + @Override + public void postPeerRating(ArrayList<PeerRating> peerRatings, String projectId, String groupId) { + + } + + @Override + public void answerQuiz(StudentAndQuiz studentAndQuiz, QuizAnswer quizAnswer) { + + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java index fced4060a23c7b245db8a4c8918913077a8d6b07..61f53cc8c15ee050db92d20c9b37be376684ac6a 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java @@ -16,7 +16,7 @@ public class PeerAssessmentDummy implements IPeerAssessment { } @Override - public Quiz getQuiz(String projectId, String quizId) { + public Quiz getQuiz(String projectId, String quizId, String author) { ArrayList<String> correctAnswers = new ArrayList<String>(); ArrayList<String> incorrectAnswers = new ArrayList<String>(); Quiz sampleQuiz; @@ -72,6 +72,11 @@ public class PeerAssessmentDummy implements IPeerAssessment { NotImplementedLogger.logAssignment(Assignee.AXEL, IPeerAssessment.class); } + @Override + public void deleteQuiz(String quizId) { + + } + @Override public Assessment getAssessmentDataFromDB(StudentIdentifier student) { int[] quizAnswer = {1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1}; @@ -92,7 +97,7 @@ public class PeerAssessmentDummy implements IPeerAssessment { Grading[] grading = new Grading[totalPerformance.size()]; for (int i = 0; i < totalPerformance.size(); i++) { - for (int j = 0; j < totalPerformance.get(i).getQuizAnswer().length; j++) { + for (int j = totalPerformance.get(i).getQuizAnswer().length; j > 0; j--) { allAssessments[i] += totalPerformance.get(i).getQuizAnswer()[j]; } allAssessments[i] = allAssessments[i] / totalPerformance.get(i).getQuizAnswer().length; @@ -122,7 +127,7 @@ public class PeerAssessmentDummy implements IPeerAssessment { } @Override - public int meanOfAssessement(String ProjectId) { + public int meanOfAssessment(String ProjectId) { return 0; } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java.orig new file mode 100644 index 0000000000000000000000000000000000000000..be8e569d866af00d85f2cc45b582eb7baa0b8d99 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java.orig @@ -0,0 +1,133 @@ +package unipotsdam.gf.modules.assessment.controller.service; + +import unipotsdam.gf.assignments.Assignee; +import unipotsdam.gf.assignments.NotImplementedLogger; +import unipotsdam.gf.interfaces.IPeerAssessment; +import unipotsdam.gf.modules.assessment.QuizAnswer; +import unipotsdam.gf.modules.assessment.controller.model.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class PeerAssessmentDummy implements IPeerAssessment { + @Override + public void addAssessmentDataToDB(Assessment assessment) { + } + + @Override + public Quiz getQuiz(String projectId, String quizId, String author) { + ArrayList<String> correctAnswers = new ArrayList<String>(); + ArrayList<String> incorrectAnswers = new ArrayList<String>(); + Quiz sampleQuiz; + if (quizId.equals("2")) { + correctAnswers.add("42"); + correctAnswers.add("" + projectId + " " + quizId); + + incorrectAnswers.add("a god created creature"); + incorrectAnswers.add( "a sum of my mistakes"); + sampleQuiz = new Quiz("multiple", "Who am I and if so, how many?", correctAnswers, incorrectAnswers); + } else { + correctAnswers.add("ja, nicht?!"); + correctAnswers.add("nee, oder doch?!"); + incorrectAnswers.add("Mephistopheles"); + incorrectAnswers.add("Der alte Hexenmeister!?"); + incorrectAnswers.add("Der Schimmelreiter"); + incorrectAnswers.add("alle beide"); + sampleQuiz = new Quiz("multiple", "Ist das nun des Pudels wahrer Kern?", correctAnswers, incorrectAnswers); + } + + return sampleQuiz; + } + + public ArrayList<Quiz> getQuiz(String projectId) { + ArrayList<String> correctAnswers = new ArrayList<String>(); + ArrayList<String> incorrectAnswers = new ArrayList<String>(); + ArrayList<Quiz> sampleQuiz = new ArrayList<Quiz>(); + correctAnswers.add("42"); + correctAnswers.add("" + projectId + " 24"); + incorrectAnswers.add("a god created creature"); + incorrectAnswers.add( "a sum of my mistakes"); + sampleQuiz.add(new Quiz("multiple", "Who am I and if so, how many?", correctAnswers, incorrectAnswers)); + correctAnswers.clear(); + incorrectAnswers.clear(); + correctAnswers.add("ja, nicht?!"); + correctAnswers.add("nee, oder doch?!"); + incorrectAnswers.add("Mephistopheles"); + incorrectAnswers.add("Der alte Hexenmeister!?"); + incorrectAnswers.add("Der Schimmelreiter"); + incorrectAnswers.add("alle beide"); + sampleQuiz.add(new Quiz("multiple", "Ist das nun des Pudels wahrer Kern?", correctAnswers, incorrectAnswers)); + + return sampleQuiz; +} + + @Override + public void postPeerRating(ArrayList<PeerRating> peerRatings, String projectId, String groupId) { + int breakpoint = 0; //todo: print an http-answer for the ajax-request to receive + } + + @Override +<<<<<<< HEAD + public void deleteQuiz(String quizId) { + +======= + public void answerQuiz(StudentAndQuiz studentAndQuiz, QuizAnswer quizAnswer) { + NotImplementedLogger.logAssignment(Assignee.AXEL, IPeerAssessment.class); +>>>>>>> origin/session_management + } + + @Override + public Assessment getAssessmentDataFromDB(StudentIdentifier student) { + int[] quizAnswer = {1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1}; + int[] workRating = {1, 5, 3, 4, 1, 5, 5}; + Performance performance = new Performance(student, quizAnswer, "what a nice guy", workRating); + Assessment assessment = new Assessment(student, performance); + return assessment; + } + + @Override + public void createQuiz(StudentAndQuiz studentAndQuiz) { + NotImplementedLogger.logAssignment(Assignee.AXEL, PeerAssessmentDummy.class); + } + + @Override + public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) { + double[] allAssessments = new double[totalPerformance.size()]; + Grading[] grading = new Grading[totalPerformance.size()]; + + for (int i = 0; i < totalPerformance.size(); i++) { + for (int j = totalPerformance.get(i).getQuizAnswer().length; j > 0; j--) { + allAssessments[i] += totalPerformance.get(i).getQuizAnswer()[j]; + } + allAssessments[i] = allAssessments[i] / totalPerformance.get(i).getQuizAnswer().length; + } + for (int i = 0; i < totalPerformance.size(); i++) { + Grading shuttle = new Grading(totalPerformance.get(i).getStudentIdentifier(), allAssessments[i]); + grading[i] = shuttle; + } + return Arrays.asList(grading); + } + + @Override + public ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier) { + StudentIdentifier[] students = new StudentIdentifier[2]; + StudentIdentifier student1 = new StudentIdentifier("gemeinsamForschen", "Haralf"); + StudentIdentifier student2 = new StudentIdentifier("gemeinsamForschen", "Regine"); + ArrayList<Performance> performances = new ArrayList<Performance>(); + int[] quiz = {1, 0, 1, 0, 0, 0, 1}; + int[] quiz2 = {0, 1, 0, 1, 1, 1, 0}; + int[] work = {5, 4, 3, 2, 1}; + int[] work2 = {1, 2, 3, 4, 5}; + Performance performance = new Performance(student1, quiz, "toller dude", work); + performances.add(performance); + performance = new Performance(student2, quiz2, "tolle dudine", work2); + performances.add(performance); + return performances; + } + + @Override + public int meanOfAssessment(String ProjectId) { + return 0; + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/QuizDBCommunication.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/QuizDBCommunication.java new file mode 100644 index 0000000000000000000000000000000000000000..49867e1df50e81195f5065e1f994e3cf4640203a --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/QuizDBCommunication.java @@ -0,0 +1,129 @@ +package unipotsdam.gf.modules.assessment.controller.service; + +import unipotsdam.gf.core.database.mysql.MysqlConnect; +import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; + +import javax.annotation.ManagedBean; +import javax.annotation.Resource; +import javax.inject.Singleton; +import java.util.ArrayList; + +@ManagedBean +@Resource +@Singleton +public class QuizDBCommunication { + public Quiz getQuizByProjectQuizId(String projectId, String quizId, String author){ + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "SELECT * FROM `quiz` WHERE `projectId`=? AND `question`=? AND `author`=?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, projectId,quizId,author); + boolean next = vereinfachtesResultSet.next(); + String question = ""; + ArrayList<String> correctAnswers = new ArrayList<String>(); + ArrayList<String> incorrectAnswers = new ArrayList<String>(); + String answer; + Boolean correct; + String mcType = ""; + while (next) { + mcType = vereinfachtesResultSet.getString("mcType"); + question = vereinfachtesResultSet.getString("question"); + answer = vereinfachtesResultSet.getString("answer"); + correct = vereinfachtesResultSet.getBoolean("correct"); + if (correct){ + correctAnswers.add(answer); + }else{ + incorrectAnswers.add(answer); + } + next = vereinfachtesResultSet.next(); + } + Quiz quiz = new Quiz(mcType,question, correctAnswers, incorrectAnswers); + connect.close(); + return quiz; + } + + public ArrayList<Quiz> getQuizByProjectId(String projectId) { + MysqlConnect connect = new MysqlConnect(); + ArrayList<Quiz> result= new ArrayList<Quiz>(); + connect.connect(); + String mysqlRequest = "SELECT * FROM quiz where projectId= ?"; + VereinfachtesResultSet vereinfachtesResultSet = + connect.issueSelectStatement(mysqlRequest, projectId); + boolean next = vereinfachtesResultSet.next(); + String question = ""; + ArrayList<String> correctAnswers = new ArrayList<String>(); + ArrayList<String> incorrectAnswers = new ArrayList<String>(); + String answer; + String oldQuestion=""; + Boolean correct; + String mcType = ""; + Quiz quiz =null; + while (next) { + mcType = vereinfachtesResultSet.getString("mcType"); + question = vereinfachtesResultSet.getString("question"); + answer = vereinfachtesResultSet.getString("answer"); + correct = vereinfachtesResultSet.getBoolean("correct"); + if (oldQuestion.equals(question)){ + if (correct){ + correctAnswers.add(answer); + }else{ + incorrectAnswers.add(answer); + } + }else{ + quiz = new Quiz(mcType,oldQuestion, correctAnswers, incorrectAnswers); + result.add(quiz); + quiz=null; + correctAnswers=new ArrayList<String>(); + incorrectAnswers=new ArrayList<String>(); + if (correct){ + correctAnswers.add(answer); + }else{ + incorrectAnswers.add(answer); + } + + } + oldQuestion = question; + next = vereinfachtesResultSet.next(); + } + quiz = new Quiz(mcType,oldQuestion, correctAnswers, incorrectAnswers); + result.add(quiz); + return result; + } + + public void deleteQuiz(String quizId) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mysqlRequest = "DELETE FROM quiz where question = (?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, quizId); + connect.close(); + } + + public void createQuiz(Quiz quiz, String author, String projectId) { + MysqlConnect connect = new MysqlConnect(); + connect.connect(); + String mcType; + String question; + String answer; + boolean correct; + ArrayList<String> correctAnswers = quiz.getCorrectAnswers(); + for (int i=0; i<correctAnswers.size(); i++) { + answer = correctAnswers.get(i); + mcType = quiz.getType(); + question = quiz.getQuestion(); + correct = true; + String mysqlRequest = "INSERT INTO `quiz`(`author`, `projectId`, `question`, `mcType`, `answer`, `correct`) VALUES (?,?,?,?,?,?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, author, projectId, question, mcType, answer, correct); + } + ArrayList<String> incorrectAnswers = quiz.getIncorrectAnswers(); + for (int i=0; i<incorrectAnswers.size(); i++) { + answer = incorrectAnswers.get(i); + mcType = quiz.getType(); + question = quiz.getQuestion(); + correct = false; + String mysqlRequest = "INSERT INTO `quiz`(`author`, `projectId`, `question`, `mcType`, `answer`, `correct`) VALUES (?,?,?,?,?,?)"; + connect.issueInsertOrDeleteStatement(mysqlRequest, author, projectId, question, mcType, answer, correct); + } + connect.close(); + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java index e0b8b99371a91ecad1853d22b855f81b7b9ddd4e..e5d30daa824a778fcd03807afd55db8d000de145 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java @@ -3,24 +3,31 @@ package unipotsdam.gf.modules.assessment.controller.view; import unipotsdam.gf.interfaces.IPeerAssessment; import unipotsdam.gf.modules.assessment.QuizAnswer; import unipotsdam.gf.modules.assessment.controller.model.*; +import unipotsdam.gf.modules.assessment.controller.service.PeerAssessment; import unipotsdam.gf.modules.assessment.controller.service.PeerAssessmentDummy; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; +import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; @Path("/assessments") public class QuizView implements IPeerAssessment { - private static IPeerAssessment peer = new PeerAssessmentDummy(); //TestSubject - //private static IPeerAssessment peer = new PeerAssessment(); //correct DB-conn and stuff + //private static IPeerAssessment peer = new PeerAssessmentDummy(); //TestSubject + private static IPeerAssessment peer = new PeerAssessment(); //correct DB-conn and stuff @GET @Produces(MediaType.APPLICATION_JSON) - @Path("/project/{projectId}/quiz/{quizId}") + @Path("/project/{projectId}/quiz/{quizId}/author/{author}") @Override - public Quiz getQuiz(@PathParam("projectId") String projectId, @PathParam("quizId") String quizId) { - return peer.getQuiz(projectId, quizId); - } ///////////////////////////////funktioniert wie geplant////////////////////////////////// + public Quiz getQuiz(@PathParam("projectId") String projectId, @PathParam("quizId") String quizId, @PathParam("author") String author) { + try{ + String question=java.net.URLDecoder.decode(quizId,"UTF-8"); + return peer.getQuiz(projectId, question, author); + }catch(UnsupportedEncodingException e){ + throw new AssertionError("UTF-8 is unknown"); + } + } ///////////////////////////////funktioniert////////////////////////////////// @GET @Produces(MediaType.APPLICATION_JSON) @@ -29,6 +36,7 @@ public class QuizView implements IPeerAssessment { public ArrayList<Quiz> getQuiz(@PathParam("projectId") String projectId) { return peer.getQuiz(projectId); } + //////////////////////////////////////////funktioniert/////////////////////////////////////// @POST @Consumes(MediaType.APPLICATION_JSON) @@ -44,6 +52,20 @@ public class QuizView implements IPeerAssessment { } + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Path("/quiz/{quizId}") + @Override + public void deleteQuiz(@PathParam("quizId") String quizId) { + try { + String question = java.net.URLDecoder.decode(quizId, "UTF-8"); + peer.deleteQuiz(question); + }catch(UnsupportedEncodingException e){ + throw new AssertionError("UTF-8 is unknown"); + } + } + ////////////////////////////funktioniert//////////////////////////////////////////////////////// + @POST @Produces(MediaType.TEXT_PLAIN) @Consumes(MediaType.APPLICATION_JSON) @@ -53,7 +75,6 @@ public class QuizView implements IPeerAssessment { peer.addAssessmentDataToDB(assessment); } - @Override public Assessment getAssessmentDataFromDB(StudentIdentifier student){ return peer.getAssessmentDataFromDB(student); @@ -61,11 +82,11 @@ public class QuizView implements IPeerAssessment { @GET @Produces(MediaType.APPLICATION_JSON) - @Path("/project/{projectId}/student/{studentId}") + @Path("/get/project/{projectId}/student/{studentId}") public Assessment getAssessmentDataFromDB(@PathParam("projectId") String projectId,@PathParam("studentId") String studentId){ StudentIdentifier student = new StudentIdentifier(projectId, studentId); return getAssessmentDataFromDB(student); - } ///////////////////////////////funktioniert wie geplant////////////////////////////////// + } //////////dummy//////////////funktioniert wie geplant////////////////////////////////// @POST @@ -76,6 +97,7 @@ public class QuizView implements IPeerAssessment { public void createQuiz(StudentAndQuiz studentAndQuiz) { peer.createQuiz(studentAndQuiz); } + ////////////////////////////////funktioniert/////////////////////////////////////////// @POST @Consumes(MediaType.APPLICATION_JSON) @@ -85,14 +107,15 @@ public class QuizView implements IPeerAssessment { public List<Grading> calculateAssessment(ArrayList<Performance> totalPerformance) { return peer.calculateAssessment(totalPerformance); } + ///////////////dummy/////////funktioniert glaube ich!?//////////////////////////////////////// @GET @Produces(MediaType.APPLICATION_JSON) @Path("/mean/project/{projectId}") @Override - public int meanOfAssessement(@PathParam("projectId") String ProjectId) { + public int meanOfAssessment(@PathParam("projectId") String ProjectId) { - return peer.meanOfAssessement(ProjectId); + return peer.meanOfAssessment(ProjectId); } ///////////////////////////////return 0////////////////////////////////// @GET @@ -101,12 +124,12 @@ public class QuizView implements IPeerAssessment { public ArrayList<Performance> getTotalAssessment(@PathParam("projectId") String ProjectId,@PathParam("student") String student){ StudentIdentifier studentIdentifier = new StudentIdentifier(ProjectId, student); return getTotalAssessment(studentIdentifier); - } ///////////////////////////////funktioniert wie geplant////////////////////////////////// + } //////////dummy/////////////funktioniert wie geplant////////////////////////////////// @Override public ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier) { return peer.getTotalAssessment(studentIdentifier); - } ///////////////////////////////funktioniert wie geplant////////////////////////////////// + } /////////dummy/////////////funktioniert wie geplant////////////////////////////////// @GET @@ -121,6 +144,6 @@ public class QuizView implements IPeerAssessment { result.add(pf); result.add(pf2); return result; - } ///////////////////////////////returns what i expect it to return!!!!!////////////////////////////////// + } /////////dummy////////////returns what i expect it to return!!!!!////////////////////////////////// } diff --git a/gemeinsamforschen/src/main/webapp/assets/js/Quiz.js b/gemeinsamforschen/src/main/webapp/assets/js/Quiz.js index afd43343d62eb5b43aa235ceb3c94683ede88baf..cc9a73e5ddf695081e45c3dd1261410b9d590fc2 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/Quiz.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/Quiz.js @@ -1,6 +1,8 @@ $(document).ready(function(){ + var projectId = document.getElementById('projectId').innerText.trim(); $.ajax({ - url: '../rest/assessments/project/1/quiz/', + url: '../rest/assessments/project/'+projectId+'/quiz/', + projectId: projectId, type: 'GET', success: function (data) { var table = document.getElementById('myQuizzes'); @@ -10,7 +12,10 @@ $(document).ready(function(){ var trQuestion = document.createElement('TR'); trQuestion.className="pageChanger"; trQuestion.innerHTML = '<td colspan="' + colspan + '"><h3>' + - '<a href="viewQuiz.jsp?token='+getUserTokenFromUrl()+'&quizId='+ encodeURI(data[quiz].question) + '"</a>' + + '<a href="viewQuiz.jsp' + + '?token='+getUserTokenFromUrl()+ + '&projectId='+projectId+ + '&quizId='+ encodeURIComponent(data[quiz].question)+'"</a>' + data[quiz].question+'</h3></td>'; table.appendChild(trQuestion); } @@ -21,6 +26,6 @@ $(document).ready(function(){ }); $('#newQuiz').on('click', function(){ - location.href="createQuiz.jsp?token="+getUserTokenFromUrl(); + location.href="createQuiz.jsp?token="+getUserTokenFromUrl()+"&projectId="+$('#projectId').html().trim(); }); }); diff --git a/gemeinsamforschen/src/main/webapp/assets/js/createQuiz.js b/gemeinsamforschen/src/main/webapp/assets/js/createQuiz.js index 764a7a90dfd06ce45531d359c31d592b3a39c0f7..b8e097d0a5e1ae22d441c4cc3ac79d3d04c21ab6 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/createQuiz.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/createQuiz.js @@ -1,5 +1,71 @@ $(document).ready(function () { + $('#addCorrectAnswer').on('click', function(){ + var divCorrectAnswer = document.getElementById('correctAnswers'); + var i = divCorrectAnswer.children.length; + var inputCorrectAnswer = document.createElement('INPUT'); + inputCorrectAnswer.id='correctAnswer'+i; + divCorrectAnswer.appendChild(inputCorrectAnswer); + }); + + $('#addIncorrectAnswer').on('click', function(){ + var divIncorrectAnswer = document.getElementById('incorrectAnswers'); + var i = divIncorrectAnswer.children.length; + var inputIncorrectAnswer = document.createElement('INPUT'); + inputIncorrectAnswer.id='incorrectAnswer'+i; + divIncorrectAnswer.appendChild(inputIncorrectAnswer); + }); + + $('#deleteCorrectAnswer').on('click', function(){ + var divCorrectAnswer = document.getElementById('correctAnswers'); + divCorrectAnswer.removeChild(divCorrectAnswer.lastChild); + }); + + $('#deleteIncorrectAnswer').on('click', function(){ + var divIncorrectAnswer = document.getElementById('incorrectAnswers'); + divIncorrectAnswer.removeChild(divIncorrectAnswer.lastChild); + }); + $("#save").on('click', function () { - document.location = "Quiz.jsp?token=" + getUserTokenFromUrl(); + var correctAnswers= []; + var incorrectAnswers= []; + var shuttleList = document.getElementById('correctAnswers'); + for (var i=0; i<shuttleList.children.length; i++) + { + correctAnswers.push(shuttleList.children[i].value.trim()) + } + shuttleList = document.getElementById('incorrectAnswers'); + for (i=0; i<shuttleList.children.length; i++) + { + incorrectAnswers.push(shuttleList.children[i].value.trim()) + } + var quiz = { + question: $('#question').val().trim(), + type: 'mc', + correctAnswers: correctAnswers, + incorrectAnswers: incorrectAnswers + }; + var studentIdentifier = { + studentId: $('#user').html().trim(), + projectId: $('#projectId').html().trim() + }; + var data = JSON.stringify({ + studentIdentifier: studentIdentifier, + quiz: quiz + }); + $.ajax({ + data: data, + url: '../rest/assessments/quiz', + headers: { + "Content-Type": "application/json", + "Cache-Control": "no-cache" + }, + type: 'POST', + success: function(){ + location.href="Quiz.jsp?token="+getUserTokenFromUrl()+"&projectId="+$('#projectId').html().trim(); + }, + error: function(a){ + + } + }); }); }); diff --git a/gemeinsamforschen/src/main/webapp/assets/js/finalAssessment.js b/gemeinsamforschen/src/main/webapp/assets/js/finalAssessment.js index 7cefb9d460fc4665b58ae33f96bed4267a86b0bb..6af08b9e84c647d9fcf13f9d0bb4e988158a6346 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/finalAssessment.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/finalAssessment.js @@ -1,4 +1,5 @@ $(document).ready(function() { + $('#notAllRated').hide(); $(".carousel").carousel({ interval: false }); @@ -7,21 +8,34 @@ $(document).ready(function() { }); }); -function getUser(){//todo: you can see what you need to do - return "dummy"; -} - function assessPeer(){ + ///////initialize variables/////// var peerRating = { - "fromPeer": getUser(), + "fromPeer": $('#user').html().trim(), "toPeer": "", "workRating": [] }; var dataP = []; + var workRating = []; + var rateThis = ['responsibility','partOfWork','cooperation','communication','autonomous']; + + ///////read values from html/////// var peerStudents =$('.peerStudent'); - for (var i=0; i< peerStudents.length; i++){ - peerRating.toPeer = peerStudents[i].id; - peerRating.workRating = [5,4,3,2] + for (var peer=0; peer< peerStudents.length; peer++){ + for (var rate=0; rate<rateThis.length; rate++ ){ + workRating.push($('input[name='+rateThis[rate]+peerStudents[peer].id+']:checked').val()); + } + for (var i=0; i<workRating.length; i++){ + if(workRating[i]===undefined){ + $('#notAllRated').show(); + return; + } + } + peerRating.toPeer = peerStudents[peer].id; + peerRating.workRating = workRating; + workRating=[]; + //////write values in Post-Variable + dataP.push(peerRating); } dataP.push(peerRating); $.ajax({ @@ -33,7 +47,7 @@ function assessPeer(){ }, data: JSON.stringify(dataP), success: function(){ - location.href="takeQuiz.jsp?token="+getUserTokenFromUrl(); + location.href="takeQuiz.jsp?token="+getUserTokenFromUrl()+"&projectId="+$('#projectId').html().trim(); }, error: function(a,b,c){ diff --git a/gemeinsamforschen/src/main/webapp/assets/js/overview-student.js b/gemeinsamforschen/src/main/webapp/assets/js/overview-student.js index 2cf207efe43ac69de868491e3264e78c837b0e9c..898f3f5e00183d9549a84cb5c3028be9aa7f5bd6 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/overview-student.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/overview-student.js @@ -1,6 +1,9 @@ $(document).ready(function(){ $('#project1Link').on('click', function(){ - location.href="project-student.jsp?token="+getUserTokenFromUrl(); + location.href="project-student.jsp?token="+getUserTokenFromUrl()+'&projectId='+'gemeinsamForschen'; + }); + $('#project2Link').on('click', function(){ + location.href="project-student.jsp?token="+getUserTokenFromUrl()+'&projectId='+'Kaleo'; }); $('#enrollProject').on('click', function(){ location.href="enrollProject.jsp?token="+getUserTokenFromUrl(); diff --git a/gemeinsamforschen/src/main/webapp/assets/js/takeQuiz.js b/gemeinsamforschen/src/main/webapp/assets/js/takeQuiz.js index 9bc226153048dc0874087970dddf8a9965b3295e..1a8afcfa36d89450466a323728f57dc7f0ffb973 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/takeQuiz.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/takeQuiz.js @@ -28,8 +28,9 @@ $(document).ready(function () { return 'CORRECT'; }; + var projectId = document.getElementById('projectId').innerText.trim(); $.ajax({ - url: '../rest/assessments/project/1/quiz/', + url: '../rest/assessments/project/'+projectId+'/quiz/', type: 'GET', success: function (data) { var table = document.getElementById('tableQuiz'); @@ -68,7 +69,7 @@ $(document).ready(function () { } }); $("#submitQuiz").on("click", function () { - document.location="rateContribution.jsp?token="+getUserTokenFromUrl(); + document.location="rateContribution.jsp?token="+getUserTokenFromUrl()+'&projectId='+$('#projectId').html().trim(); }); }); diff --git a/gemeinsamforschen/src/main/webapp/assets/js/utility.js b/gemeinsamforschen/src/main/webapp/assets/js/utility.js index bbbf0394ae1ca308e21b690477ddb39619fd9161..33be09a5afb07442f689e89f4ef61a8c09ebc698 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/utility.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/utility.js @@ -1,3 +1,7 @@ +$(document).ready(function(){ + $('#headLineProject').html($('#projectId').html()); +}); + function getUserTokenFromUrl() { var parts = window.location.search.substr(1).split("&"); var $_GET = {}; diff --git a/gemeinsamforschen/src/main/webapp/assets/js/viewQuiz.js b/gemeinsamforschen/src/main/webapp/assets/js/viewQuiz.js index 362479e7371bfb8ea4637c238ec8dc0c874b3543..a763697c7dd3fc87785125d29aabcc4e7978b715 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/viewQuiz.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/viewQuiz.js @@ -33,10 +33,11 @@ $(document).ready(function () { var temp = parts[i].split("="); $_GET[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]); } - var quizId = $_GET['quizId']; - + var quizId = encodeURIComponent($_GET['quizId']); + var author = $('#user').html().trim(); + var projectId = document.getElementById('projectId').innerText.trim(); $.ajax({ - url: '../rest/assessments/project/1/quiz/'+quizId, + url: '../rest/assessments/project/'+projectId+'/quiz/'+quizId+'/author/'+author, type: 'GET', success: function (data) { var table = document.getElementById('tableQuiz'); @@ -61,7 +62,16 @@ $(document).ready(function () { alert('Fehler ' + a); } }); - $("#submitQuiz").on("click", function () { - + $("#deleteQuiz").on("click", function () { + $.ajax({ + url: '../rest/assessments/quiz/' + encodeURIComponent(quizId), + type: 'POST', + success: function () { + document.location.href="Quiz.jsp?token="+getUserTokenFromUrl()+"&projectId="+$('#projectId').html().trim(); + }, + error: function(a){ + alert(a) + } + }); }); }); \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld b/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld index 3704c718e3338de67f5165d78f3d5785f983b11a..3c2db0269960c9ff430c6e6d82e74a225d195972 100644 --- a/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld +++ b/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld @@ -15,4 +15,28 @@ <body-content>empty</body-content> </tag> + <tag> + <name>session</name> + <tag-class>unipotsdam.gf.core.session.SessionTag</tag-class> + <body-content>empty</body-content> + </tag> + + <tag> + <name>omniDependencies</name> + <tag-class>unipotsdam.gf.core.management.user.omniDependencies</tag-class> + <body-content>empty</body-content> + </tag> + + <tag> + <name>headLine</name> + <tag-class>unipotsdam.gf.core.management.user.headLine</tag-class> + <body-content>empty</body-content> + </tag> + + <tag> + <name>context</name> + <tag-class>unipotsdam.gf.core.session.ContextTag</tag-class> + <body-content>empty</body-content> + </tag> + </taglib> \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld.orig b/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld.orig new file mode 100644 index 0000000000000000000000000000000000000000..464689080655114907b3461748349ae320db9d88 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/core/pages/gemeinsamForschen.tld.orig @@ -0,0 +1,40 @@ +<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/pages/Quiz.jsp b/gemeinsamforschen/src/main/webapp/pages/Quiz.jsp index 276a9e024dcc1658c5290b3774cde54dd4029047..f5f04d45e484bec9d965916f9910f85a5fb176cf 100644 --- a/gemeinsamforschen/src/main/webapp/pages/Quiz.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/Quiz.jsp @@ -1,45 +1,19 @@ -<%-- - Created by IntelliJ IDEA. - User: fides-WHK - Date: 21.06.2018 - Time: 12:37 - To change this template use File | Settings | File Templates. ---%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> <html> <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>fltrail</title> - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> - <link rel="stylesheet" href="../assets/css/styles.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> - <script src="../assets/js/utility.js"></script> + <omniDependencies:omniDependencies/> <script src="../assets/js/Quiz.js"></script> - <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css"> - <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css"> </head> <body> <div id="wrapper"> - <menu:menu></menu:menu> + <menu:menu/> <div class="page-content-wrapper"> - <div class="container-fluid"> - <h1 id="projectId">project1 - <a href="#"> - <span class="glyphicon glyphicon-envelope" - style="font-size:27px;margin-top:-17px;margin-left:600px;"></span> - </a> - <a href="#"> - <span class="glyphicon glyphicon-cog" - style="font-size:29px;margin-left:5px;margin-top:-25px;"></span> - </a></h1> - </div> + <headLine:headLine/> <table class="table-striped"> <tbody id="myQuizzes"> diff --git a/gemeinsamforschen/src/main/webapp/pages/assessmentCalculator.jsp b/gemeinsamforschen/src/main/webapp/pages/assessmentCalculator.jsp index e8cc29e1bd261c4649369c70ac15a3f6ed4c03d3..67b2861e38ad3e55fc6f0dd2db9acbab315608c6 100644 --- a/gemeinsamforschen/src/main/webapp/pages/assessmentCalculator.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/assessmentCalculator.jsp @@ -1,18 +1,18 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> <html lang="en"> <head> - <meta charset="utf-8"> - <title>assessment calculator</title> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> + <omniDependencies:omniDependencies/> <script src="../assets/js/assessmentCalculator.js"></script> - <script src="../assets/js/utility.js"></script> </head> <body> +<menu:menu/> <button id="calculateNow">Post Performance</button> <button id="giveItBack">Get TotalPerformance</button> -<menu:menu></menu:menu> +<headLine:headLine/> </body> </html> \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/pages/createProject.jsp b/gemeinsamforschen/src/main/webapp/pages/createProject.jsp index b13361095939684046b7ab9328d3f42eb6f3bbf2..3984538cbfcaa344fa73305dcfd271d368ce6209 100644 --- a/gemeinsamforschen/src/main/webapp/pages/createProject.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/createProject.jsp @@ -1,37 +1,22 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> <html> <head> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>fltrail</title> - <link rel="stylesheet" href="../assets/css/styles.css"> - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> - <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css"> - <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css"> - <script src="../assets/js/utility.js"></script> + <omniDependencies:omniDependencies/> <script src="../assets/js/createProject.js"></script> </head> <body> <div id="wrapper"> - <menu:menu></menu:menu> + <menu:menu/> <div class="page-content-wrapper"> - <div class="container-fluid"> - - <h1>Einschreiben in einen Kurs</h1> - <a href="#"><span class="glyphicon glyphicon-envelope" - style="font-size:27px;margin-top:-17px;margin-left:600px;"></span></a> - <a href="#"><span class="glyphicon glyphicon-cog" - style="font-size:29px;margin-left:5px;margin-top:-25px;"></span></a> - </div> + <headLine:headLine/> <div style="margin-left: 2%;"> <br><br> <label>Projektname: <input placeholder="Projektname"></label> diff --git a/gemeinsamforschen/src/main/webapp/pages/createQuiz.jsp b/gemeinsamforschen/src/main/webapp/pages/createQuiz.jsp index ad122bc926c195526ea109c12152f1a24209e498..512844f6c308bac4903aaa02e3f92af58f0405a1 100644 --- a/gemeinsamforschen/src/main/webapp/pages/createQuiz.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/createQuiz.jsp @@ -1,45 +1,30 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> <html> <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>fltrail</title> - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> - <link rel="stylesheet" href="../assets/css/styles.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> - <script src="../assets/js/utility.js"></script> + <omniDependencies:omniDependencies/> <script src="../assets/js/createQuiz.js"></script> - - <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css"> - <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css"> - </head> <body> <div id="wrapper"> - <menu:menu></menu:menu> + <menu:menu/> <div class="page-content-wrapper"> - <div class="container-fluid"> - <h1>Projekt1</h1> - <a href="#"><span class="glyphicon glyphicon-envelope" - style="font-size:27px;margin-top:-17px;margin-left:600px;"></span></a> - <a href="#"><span class="glyphicon glyphicon-cog" - style="font-size:29px;margin-left:5px;margin-top:-25px;"></span></a> - </div> + <headLine:headLine/> <div style="margin-left:50px;"> <div> - <input placeholder="Ihre Frage"> + <label>Frage: <input placeholder="Ihre Frage" id="question"></label><!--todo: remember to cut out whitespace and signs (?.,;)--> </div> - <div><label><input type="radio" name="type">Schwierigkeit 3</label></div> - <div><label><input type="radio" name="type">Schwierigkeit 2</label></div> - <div><label><input type="radio" name="type">Schwierigkeit 1</label></div> - <div><input placeholder="korrekte Antwort"><button> + </button><button> - </button></div> - <div><input placeholder="inkorrekte Antwort"><button> + </button><button> - </button></div> + <div><label><input type="radio" name="type" checked="checked">multiple choice</label></div> + <div><label><input type="radio" name="type" disabled>Freitext</label></div> + <div><label><input type="radio" name="type" disabled>rhetorische Frage</label></div> + <div id="correctAnswers"><input placeholder="korrekte Antwort" id="correctAnswer"></div> + <button id="addCorrectAnswer"> + </button><button id="deleteCorrectAnswer"> - </button> + <div id="incorrectAnswers"><input placeholder="inkorrekte Antwort" id="incorrectAnswer"></div> + <button id="addIncorrectAnswer"> + </button><button id="deleteIncorrectAnswer"> - </button> <button id="save">speichern</button> </div> </div> diff --git a/gemeinsamforschen/src/main/webapp/pages/finalAssessments.jsp b/gemeinsamforschen/src/main/webapp/pages/finalAssessments.jsp index 09ec382b8294edad32f29670b1ea81ec835e3ef8..1273a5887b11dd21268eb8c61084693d21ef565c 100644 --- a/gemeinsamforschen/src/main/webapp/pages/finalAssessments.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/finalAssessments.jsp @@ -1,45 +1,45 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> <html> <head> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>muster-gemeinsam-forschen</title> - - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> - <link rel="stylesheet" href="../assets/css/styles.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> - <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css"> - <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> - <script src="../assets/js/utility.js"></script> + <omniDependencies:omniDependencies/> <script src="../assets/js/finalAssessment.js"></script> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css"> + </head> <body> <div id="wrapper"> - <menu:menu></menu:menu> + <menu:menu/> <div class="page-content-wrapper"> - <div class="container-fluid"> - <h1 id="projectId">project1 - <a href="#"> - <span class="glyphicon glyphicon-envelope" - style="font-size:27px;margin-top:-17px;margin-left:600px;"></span> - </a> - <a href="#"> - <span class="glyphicon glyphicon-cog" - style="font-size:29px;margin-left:5px;margin-top:-25px;"></span> - </a></h1> - </div> + <headLine:headLine/> <div> <table> <tr> <td id="yourContent"> <h1>Assessment for project1 </h1> + + <!-- Vorschläge für Bewertungen: + ++Verantwortungsbewusstsein + ++Disskusionsfähigkeit + ++Anteil am Produkt + ++Kooperationsbereitschaft + ++Selbstständigkeit + -+Führungsqualität + -+Pünktlichkeit + -+Motivation + -+Gewissenhaftigkeit + -+respektvoller Umgang mit anderen + -+Wert der Beiträge + --kann sich an Vereinbarungen halten + --emotionale Stabilität + --Hilfsbereitschaft + --> + <!-- here will be all the content --> <div class="container"> <div id="myCarousel" class="carousel slide" data-ride="carousel" data-interval="false"> @@ -51,10 +51,14 @@ </ol> <!-- Wrapper for slides --> + <div class="alert alert-info" id="notAllRated"> + Es wurden noch nicht alle Studenten vollständig bewertet + </div> + <div class="carousel-inner"> <div class="item active"> <table class="table-striped peerStudent" - style="width:70%;border:1px solid; margin:auto;" id="student1"> + style="width:70%;border:1px solid; margin:auto;" id="Student1"> <tr> <td align="center"> <img src="../assets/img/1.jpg" alt="student1" @@ -63,20 +67,36 @@ </tr> <tr> <td align="center"> - <h3>Führungsqualität</h3> + <h3>Verantwortungsbewusstsein</h3> </td> </tr> <tr> <td align="center"> - <label>gut<input type="radio" value="5" - name="leadership1"></label> - <input type="radio" value="4" name="leadership1"> - <input type="radio" value="3" name="leadership1"> - <input type="radio" value="2" name="leadership1"> - <label><input type="radio" value="1" name="leadership1"> + <label>stark ausgeprägt<input type="radio" value="5" + name="responsibilityStudent1"></label> + <input type="radio" value="4" name="responsibilityStudent1"> + <input type="radio" value="3" name="responsibilityStudent1"> + <input type="radio" value="2" name="responsibilityStudent1"> + <label><input type="radio" value="1" name="responsibilityStudent1"> ungenügend</label> </td> </tr> + <tr> + <td align="center"> + <h3>Anteil am Produkt</h3> + </td> + </tr> + <tr> + <td align="center"> + <label>großer Anteil<input type="radio" value="5" + name="partOfWorkStudent1"></label> + <input type="radio" value="4" name="partOfWorkStudent1"> + <input type="radio" value="3" name="partOfWorkStudent1"> + <input type="radio" value="2" name="partOfWorkStudent1"> + <label><input type="radio" value="1" name="partOfWorkStudent1"> + geringer Anteil</label> + </td> + </tr> <tr> <td align="center"> <h3>Kooperationsbereitschaft</h3> @@ -84,29 +104,29 @@ </tr> <tr> <td align="center"> - <label><input type="radio" value="5" name="cooparation1"> - gut</label> - <input type="radio" value="4" name="cooparation1"> - <input type="radio" value="3" name="cooparation1"> - <input type="radio" value="2" name="cooparation1"> - <label><input type="radio" value="1" name="cooparation1"> - ungenügend</label> + <label>sehr kooperativ<input type="radio" value="5" name="cooperationStudent1"> + </label> + <input type="radio" value="4" name="cooperationStudent1"> + <input type="radio" value="3" name="cooperationStudent1"> + <input type="radio" value="2" name="cooperationStudent1"> + <label><input type="radio" value="1" name="cooperationStudent1"> + nicht kooperativ</label> </td> </tr> <tr> <td align="center"> - <h3>Pünktlichkeit</h3> + <h3>Disskusionsfähigkeit</h3> </td> </tr> <tr> <td align="center"> - <label><input type="radio" value="5" name="punctual1"> - gut</label> - <input type="radio" value="4" name="punctual1"> - <input type="radio" value="3" name="punctual1"> - <input type="radio" value="2" name="punctual1"> - <label><input type="radio" value="1" name="punctual1"> - ungenügend</label> + <label>gut kommuniziert und Meinung vertreten<input type="radio" value="5" name="communicationStudent1"> + </label> + <input type="radio" value="4" name="communicationStudent1"> + <input type="radio" value="3" name="communicationStudent1"> + <input type="radio" value="2" name="communicationStudent1"> + <label><input type="radio" value="1" name="communicationStudent1"> + keine Meinung und schlecht kommuniziert</label> </td> </tr> <tr> @@ -116,13 +136,13 @@ </tr> <tr> <td align="center"> - <label><input type="radio" value="5" name="autonomous1"> - gut</label> - <input type="radio" value="4" name="autonomous1"> - <input type="radio" value="3" name="autonomous1"> - <input type="radio" value="2" name="autonomous1"> - <label><input type="radio" value="1" name="autonomous1"> - ungenügend</label> + <label>selbstständig<input type="radio" value="5" name="autonomousStudent1"> + </label> + <input type="radio" value="4" name="autonomousStudent1"> + <input type="radio" value="3" name="autonomousStudent1"> + <input type="radio" value="2" name="autonomousStudent1"> + <label><input type="radio" value="1" name="autonomousStudent1"> + abhängig</label> </td> </tr> </table> @@ -130,29 +150,45 @@ <div class="item"> <table class="table-striped peerStudent" - style="width:70%;border:1px solid; margin:auto;" id="student2"> + style="width:70%;border:1px solid; margin:auto;" id="Student2"> <tr> <td align="center"> - <img src="../assets/img/2.jpg" alt="student2" + <img src="../assets/img/2.jpg" alt="Student2" style="width:20%;"> </td> </tr> <tr> <td align="center"> - <h3>Führungsqualität</h3> + <h3>Verantwortungsbewusstsein</h3> </td> </tr> <tr> <td align="center"> - <label>gut<input type="radio" value="5" - name="leadership2"></label> - <input type="radio" value="4" name="leadership2"> - <input type="radio" value="3" name="leadership2"> - <input type="radio" value="2" name="leadership2"> - <label><input type="radio" value="1" name="leadership2"> + <label>stark ausgeprägt<input type="radio" value="5" + name="responsibilityStudent2"></label> + <input type="radio" value="4" name="responsibilityStudent2"> + <input type="radio" value="3" name="responsibilityStudent2"> + <input type="radio" value="2" name="responsibilityStudent2"> + <label><input type="radio" value="1" name="responsibilityStudent2"> ungenügend</label> </td> </tr> + <tr> + <td align="center"> + <h3>Anteil am Produkt</h3> + </td> + </tr> + <tr> + <td align="center"> + <label>großer Anteil<input type="radio" value="5" + name="partOfWorkStudent2"></label> + <input type="radio" value="4" name="partOfWorkStudent2"> + <input type="radio" value="3" name="partOfWorkStudent2"> + <input type="radio" value="2" name="partOfWorkStudent2"> + <label><input type="radio" value="1" name="partOfWorkStudent2"> + geringer Anteil</label> + </td> + </tr> <tr> <td align="center"> <h3>Kooperationsbereitschaft</h3> @@ -160,29 +196,29 @@ </tr> <tr> <td align="center"> - <label><input type="radio" value="5" name="cooparation2"> - gut</label> - <input type="radio" value="4" name="cooparation2"> - <input type="radio" value="3" name="cooparation2"> - <input type="radio" value="2" name="cooparation2"> - <label><input type="radio" value="1" name="cooparation2"> - ungenügend</label> + <label>sehr kooperativ<input type="radio" value="5" name="cooperationStudent2"> + </label> + <input type="radio" value="4" name="cooperationStudent2"> + <input type="radio" value="3" name="cooperationStudent2"> + <input type="radio" value="2" name="cooperationStudent2"> + <label><input type="radio" value="1" name="cooperationStudent2"> + nicht kooperativ</label> </td> </tr> <tr> <td align="center"> - <h3>Pünktlichkeit</h3> + <h3>Disskusionsfähigkeit</h3> </td> </tr> <tr> <td align="center"> - <label><input type="radio" value="5" name="punctual2"> - gut</label> - <input type="radio" value="4" name="punctual2"> - <input type="radio" value="3" name="punctual2"> - <input type="radio" value="2" name="punctual2"> - <label><input type="radio" value="1" name="punctual2"> - ungenügend</label> + <label>gut kommuniziert und Meinung vertreten<input type="radio" value="5" name="communicationStudent2"> + </label> + <input type="radio" value="4" name="communicationStudent2"> + <input type="radio" value="3" name="communicationStudent2"> + <input type="radio" value="2" name="communicationStudent2"> + <label><input type="radio" value="1" name="communicationStudent2"> + keine Meinung und schlecht kommuniziert</label> </td> </tr> <tr> @@ -192,13 +228,13 @@ </tr> <tr> <td align="center"> - <label><input type="radio" value="5" name="autonomous2"> - gut</label> - <input type="radio" value="4" name="autonomous2"> - <input type="radio" value="3" name="autonomous2"> - <input type="radio" value="2" name="autonomous2"> - <label><input type="radio" value="1" name="autonomous2"> - ungenügend</label> + <label>selbstständig<input type="radio" value="5" name="autonomousStudent2"> + </label> + <input type="radio" value="4" name="autonomousStudent2"> + <input type="radio" value="3" name="autonomousStudent2"> + <input type="radio" value="2" name="autonomousStudent2"> + <label><input type="radio" value="1" name="autonomousStudent2"> + abhängig</label> </td> </tr> </table> @@ -206,29 +242,45 @@ <div class="item"> <table class="table-striped peerStudent" - style="width:70%;border:1px solid; margin:auto;" id="student3"> + style="width:70%;border:1px solid; margin:auto;" id="Student3"> <tr> <td align="center"> - <img src="../assets/img/3.jpg" alt="student3" + <img src="../assets/img/3.jpg" alt="Student3" style="width:20%;"> </td> </tr> <tr> <td align="center"> - <h3>Führungsqualität</h3> + <h3>Verantwortungsbewusstsein</h3> </td> </tr> <tr> <td align="center"> - <label>gut<input type="radio" value="5" - name="leadership3"></label> - <input type="radio" value="4" name="leadership3"> - <input type="radio" value="3" name="leadership3"> - <input type="radio" value="2" name="leadership3"> - <label><input type="radio" value="1" name="leadership3"> + <label>stark ausgeprägt<input type="radio" value="5" + name="responsibilityStudent3"></label> + <input type="radio" value="4" name="responsibilityStudent3"> + <input type="radio" value="3" name="responsibilityStudent3"> + <input type="radio" value="2" name="responsibilityStudent3"> + <label><input type="radio" value="1" name="responsibilityStudent3"> ungenügend</label> </td> </tr> + <tr> + <td align="center"> + <h3>Anteil am Produkt</h3> + </td> + </tr> + <tr> + <td align="center"> + <label>großer Anteil<input type="radio" value="5" + name="partOfWorkStudent3"></label> + <input type="radio" value="4" name="partOfWorkStudent3"> + <input type="radio" value="3" name="partOfWorkStudent3"> + <input type="radio" value="2" name="partOfWorkStudent3"> + <label><input type="radio" value="1" name="partOfWorkStudent3"> + geringer Anteil</label> + </td> + </tr> <tr> <td align="center"> <h3>Kooperationsbereitschaft</h3> @@ -236,29 +288,29 @@ </tr> <tr> <td align="center"> - <label><input type="radio" value="5" name="cooparation3"> - gut</label> - <input type="radio" value="4" name="cooparation3"> - <input type="radio" value="3" name="cooparation3"> - <input type="radio" value="2" name="cooparation3"> - <label><input type="radio" value="1" name="cooparation3"> - ungenügend</label> + <label>sehr kooperativ<input type="radio" value="5" name="cooperationStudent3"> + </label> + <input type="radio" value="4" name="cooperationStudent3"> + <input type="radio" value="3" name="cooperationStudent3"> + <input type="radio" value="2" name="cooperationStudent3"> + <label><input type="radio" value="1" name="cooperationStudent3"> + nicht kooperativ</label> </td> </tr> <tr> <td align="center"> - <h3>Pünktlichkeit</h3> + <h3>Disskusionsfähigkeit</h3> </td> </tr> <tr> <td align="center"> - <label><input type="radio" value="5" name="punctual3"> - gut</label> - <input type="radio" value="4" name="punctual3"> - <input type="radio" value="3" name="punctual3"> - <input type="radio" value="2" name="punctual3"> - <label><input type="radio" value="1" name="punctual3"> - ungenügend</label> + <label>gut kommuniziert und Meinung vertreten<input type="radio" value="5" name="communicationStudent3"> + </label> + <input type="radio" value="4" name="communicationStudent3"> + <input type="radio" value="3" name="communicationStudent3"> + <input type="radio" value="2" name="communicationStudent3"> + <label><input type="radio" value="1" name="communicationStudent3"> + keine Meinung und schlecht kommuniziert</label> </td> </tr> <tr> @@ -268,13 +320,13 @@ </tr> <tr> <td align="center"> - <label><input type="radio" value="5" name="autonomous3"> - gut</label> - <input type="radio" value="4" name="autonomous3"> - <input type="radio" value="3" name="autonomous3"> - <input type="radio" value="2" name="autonomous3"> - <label><input type="radio" value="1" name="autonomous3"> - ungenügend</label> + <label>selbstständig<input type="radio" value="5" name="autonomousStudent3"> + </label> + <input type="radio" value="4" name="autonomousStudent3"> + <input type="radio" value="3" name="autonomousStudent3"> + <input type="radio" value="2" name="autonomousStudent3"> + <label><input type="radio" value="1" name="autonomousStudent3"> + abhängig</label> </td> </tr> </table> diff --git a/gemeinsamforschen/src/main/webapp/pages/overview-docent.jsp b/gemeinsamforschen/src/main/webapp/pages/overview-docent.jsp index a25d71d8d35bdaa5a3760e11eb5d7e23b3a044f0..66419d3734d4082bce9a7053868133e011c76ed7 100644 --- a/gemeinsamforschen/src/main/webapp/pages/overview-docent.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/overview-docent.jsp @@ -1,42 +1,27 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> <html> <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>fltrail</title> - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> - <link rel="stylesheet" href="../assets/css/styles.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> - <script src="../assets/js/utility.js"></script> + <omniDependencies:omniDependencies/> <script src="../assets/js/overview-docent.js"></script> - - <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css"> - <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css"> </head> <body> <div id="wrapper"> - <menu:menu></menu:menu> + <menu:menu/> <div class="page-content-wrapper"> - <h1>Übersicht für Dozent1</h1> - <a href="#"><span class="glyphicon glyphicon-envelope" - style="font-size:27px;margin-top:-17px;margin-left:600px;"></span></a> - <a href="#"><span class="glyphicon glyphicon-cog" - style="font-size:29px;margin-left:5px;margin-top:-25px;"></span></a> - <div> + <headLine:headLine/> <table id="projects"> <!-- getElementById('projects').append um neue Projekte anzufügen --> <tr class="pageChanger"> <td> <a id="project1Link"> - <h1>dummy Projekt1</h1> + <h1>gemeinsamForschen</h1> </a> </td> </tr> @@ -69,7 +54,7 @@ <tr class="pageChanger"> <td> <a id="project2Link"> - <h1>dummy Projekt2</h1> + <h1>Kaleo</h1> </a> </td> </tr> diff --git a/gemeinsamforschen/src/main/webapp/pages/overview-student.jsp b/gemeinsamforschen/src/main/webapp/pages/overview-student.jsp index ab21d52a2995b2e150d0883d456dd72fce018d53..8feef4d6d1bda9b41939b4bd5c2b386d070bbfec 100644 --- a/gemeinsamforschen/src/main/webapp/pages/overview-student.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/overview-student.jsp @@ -1,42 +1,28 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> <html> <head> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>fltrail</title> - <link rel="stylesheet" href="../assets/css/styles.css"> - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> - <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css"> - <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css"> - <script src="../assets/js/utility.js"></script> + <omniDependencies:omniDependencies/> <script src="../assets/js/overview-student.js"></script> </head> <body> <div id="wrapper"> - <menu:menu></menu:menu> + <menu:menu/> <div class="page-content-wrapper"> - <div class="container-fluid"> - <h1>Übersicht für Student1</h1> - <a href="#"><span class="glyphicon glyphicon-envelope" - style="font-size:27px;margin-top:-17px;margin-left:600px;"></span></a> - <a href="#"><span class="glyphicon glyphicon-cog" - style="font-size:29px;margin-left:5px;margin-top:-25px;"></span></a> - </div> + <headLine:headLine/> <div> <table id="projects"> <!-- getElementById('projects').append um neue Projekte anzufügen --> <tr class="pageChanger"> <td> <a id="project1Link"> - <h1>dummy Projekt1</h1> + <h1>gemeinsamForschen</h1> </a> </td> </tr> @@ -69,8 +55,8 @@ </tr> <tr class="pageChanger"> <td> - <a href="project-student.jsp"> - <h1>dummy Projekt2</h1> + <a id="project2Link"> + <h1>Kaleo</h1> </a> </td> </tr> diff --git a/gemeinsamforschen/src/main/webapp/pages/project-docent.jsp b/gemeinsamforschen/src/main/webapp/pages/project-docent.jsp index e7323fe38f582b0f9fccaba76f4a000b6175f2bf..1ec616d09fc96d633e7e712d19b6b5595950d3c4 100644 --- a/gemeinsamforschen/src/main/webapp/pages/project-docent.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/project-docent.jsp @@ -1,30 +1,20 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix = "communication" uri = "/communication/chatWindow.tld"%> -<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> <html> <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>fltrail</title> - <link rel="stylesheet" href="../assets/css/styles.css"> - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> - <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css"> - <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css"> - <script src="../assets/js/utility.js"></script> + <omniDependencies:omniDependencies/> </head> <body> <div id="wrapper"> - <menu:menu></menu:menu> - + <menu:menu/> <div class="page-content-wrapper"> <div class="container-fluid"> <h1>dummy Projekt1 für Dozent1</h1><button class="btn btn-default" type="button">Gruppen erstellen</button><button class="btn btn-default" type="button">Projekt finalisieren</button><button class="btn btn-default" type="button">Exportiere Projektergebnisse</button> diff --git a/gemeinsamforschen/src/main/webapp/pages/project-student.jsp b/gemeinsamforschen/src/main/webapp/pages/project-student.jsp index d67bfa0b603a4d3ab4a805976c19bc16b3c70bf6..55567371949904fc7116ef7cf01bab56f50def4a 100644 --- a/gemeinsamforschen/src/main/webapp/pages/project-student.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/project-student.jsp @@ -1,7 +1,8 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%--suppress XmlDuplicatedId --%> - -<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> <!--todo: E-mail an Studenten als Notifikation für Phasenwechsel --> @@ -11,54 +12,22 @@ <html> <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>muster-gemeinsam-forschen</title> - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> - <link rel="stylesheet" href="../assets/css/styles.css"> - <link rel="stylesheet" href="../assets/css/footer.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> - <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css"> - <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css"> - <script src="../assets/js/footer.js"></script> - <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous"> - <script src="../assets/js/utility.js"></script> + <omniDependencies:omniDependencies/> <script src="../assets/js/project-student.js"></script> - <script src="../assets/js/Sidebar-Menu.js"></script> + <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> + </head> <body> <div id="wrapper"> - <menu:menu></menu:menu> + <menu:menu/> <div class="page-content-wrapper"> - <div class="container-fluid"> - <h1 id="projectId">Project 1</h1> - </div> - <div align="right" class="dropdown"> - <button style= "position: absolute; right: 50px;" class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown"> - - <i class="glyphicon glyphicon-envelope"></i> - </button> - - <ul class="dropdown-menu"> - <li><a class="viewfeedback" role="button">Feedback A</a></li> - <li><a class="viewfeedback" role="button">Feedback B</a></li> - <li><a class="viewfeedback" role="button">Feedback C</a></li> - </ul> - - <a href="#"> - <span class="glyphicon glyphicon-cog" style="font-size:29px;margin-right:30px;margin-top:3px;"></span> - </a> - - </div> + <headLine:headLine/> <div> <table> <tr> - <td id="yourContent"> + <td id="yourContent"> <h1>Feedbackable Students</h1> <!-- here will be all the content --> <table id="myGroupMembers"> @@ -74,13 +43,15 @@ <li> Projektübersicht hochgeladen <a class="annotationview" role="button"> - <label style="font-size:10px;"><i class="far fa-comments" style="font-size:15px;"></i>feedback</label> + <label style="font-size:10px;"><i class="far fa-comments" + style="font-size:15px;"></i>feedback</label> </a> </li> <li> Blumen ins Hausaufgabenheft geklebt <a class="annotationview" role="button"> - <label style="font-size:10px;"><i class="far fa-comments" style="font-size:15px;"></i>feedback</label> + <label style="font-size:10px;"><i class="far fa-comments" + style="font-size:15px;"></i>feedback</label> </a> </li> </a> @@ -97,19 +68,22 @@ <li> Blumen an Vegetarier verfüttert <a class="annotationview" role="button"> - <label style="font-size:10px;"><i class="far fa-comments" style="font-size:15px;"></i>feedback</label> + <label style="font-size:10px;"><i class="far fa-comments" + style="font-size:15px;"></i>feedback</label> </a> </li> <li> Literaturverzeichnis hochgeladen <a class="annotationview" role="button"> - <label style="font-size:10px;"><i class="far fa-comments" style="font-size:15px;"></i>feedback</label> + <label style="font-size:10px;"><i class="far fa-comments" + style="font-size:15px;"></i>feedback</label> </a> </li> <li> Die armen Vegetarier <a class="annotationview" role="button"> - <label style="font-size:10px;"><i class="far fa-comments" style="font-size:15px;"></i>feedback</label> + <label style="font-size:10px;"><i class="far fa-comments" + style="font-size:15px;"></i>feedback</label> </a> </li> </ul> @@ -125,7 +99,8 @@ <li> "Viva la Floristika" - Titel hochgeladen <a class="annotationview" role="button"> - <label style="font-size:10px;"><i class="far fa-comments" style="font-size:15px;"></i>feedback</label> + <label style="font-size:10px;"><i class="far fa-comments" + style="font-size:15px;"></i>feedback</label> </a> </li> </ul> @@ -143,7 +118,7 @@ </script> </td> - <td id="chat"> + <td id="chat"> <div class="card"> <div class="card-header"> <h6 class="mb-0">Gruppen+Projekt Chat</h6> diff --git a/gemeinsamforschen/src/main/webapp/pages/rateContribution.jsp b/gemeinsamforschen/src/main/webapp/pages/rateContribution.jsp index 1cbd97668612b785995299c089e0dc8313a71732..e6898e77c5a1a3b2ef51c8c25c0e691dc0804773 100644 --- a/gemeinsamforschen/src/main/webapp/pages/rateContribution.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/rateContribution.jsp @@ -1,42 +1,23 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> <html> <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>muster-gemeinsam-forschen</title> - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> - <link rel="stylesheet" href="../assets/css/styles.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> + <omniDependencies:omniDependencies/> <script src="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.js"></script> <script src="https://cdn.rawgit.com/showdownjs/showdown/1.8.5/dist/showdown.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/inscrybmde@1.11.3/dist/inscrybmde.min.css"> <script src="../assets/js/rateContribution.js"></script> - <script src="../assets/js/utility.js"></script> - <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css"> - <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css"> </head> <body> <div id="wrapper"> - <menu:menu></menu:menu> + <menu:menu/> <div class="page-content-wrapper"> - <div class="container-fluid"> - <h1 id="projectId">project1 - <a href="#"> - <span class="glyphicon glyphicon-envelope" - style="font-size:27px;margin-top:-17px;margin-left:600px;"></span> - </a> - <a href="#"> - <span class="glyphicon glyphicon-cog" - style="font-size:29px;margin-left:5px;margin-top:-25px;"></span> - </a></h1> - </div> + <headLine:headLine/> <div> <table> <tr> diff --git a/gemeinsamforschen/src/main/webapp/pages/takeQuiz.jsp b/gemeinsamforschen/src/main/webapp/pages/takeQuiz.jsp index 9ddb24242d7dbd999ff642237437caf061612c30..4ea6f940f86c6e79ca065d8c95b166af70965480 100644 --- a/gemeinsamforschen/src/main/webapp/pages/takeQuiz.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/takeQuiz.jsp @@ -1,43 +1,26 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu"%> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %> <!DOCTYPE html> <html> <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>muster-gemeinsam-forschen</title> - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> - <link rel="stylesheet" href="../assets/css/styles.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> + <omniDependencies:omniDependencies/> <script src="../assets/js/takeQuiz.js"></script> - <script src="../assets/js/utility.js"></script> - <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css"> - <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css"> + </head> <body> <div id="wrapper"> - <menu:menu></menu:menu> + <menu:menu/> <div class="page-content-wrapper"> - <div class="container-fluid"> - <h1 id="projectId">project1 - <a href="#"> - <span class="glyphicon glyphicon-envelope" - style="font-size:27px;margin-top:-17px;margin-left:600px;"></span> - </a> - <a href="#"> - <span class="glyphicon glyphicon-cog" style="font-size:29px;margin-left:5px;margin-top:-25px;"></span> - </a></h1> - </div> + <headLine:headLine/> <div> <table> <tr> <td id="yourContent"> - <h1>Quiz for project1 </h1> + <h1>Quiz for gemeinsamForschen </h1> <!-- here will be all the content --> diff --git a/gemeinsamforschen/src/main/webapp/pages/viewQuiz.jsp b/gemeinsamforschen/src/main/webapp/pages/viewQuiz.jsp index a484d9381f9a963ff485ca311cae45714c357b14..e105590e4a126bb3c2c390e9c9db96ff145dee07 100644 --- a/gemeinsamforschen/src/main/webapp/pages/viewQuiz.jsp +++ b/gemeinsamforschen/src/main/webapp/pages/viewQuiz.jsp @@ -1,39 +1,22 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu"%> -<!DOCTYPE html> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %> +<%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %><!DOCTYPE html> <html> <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>muster-gemeinsam-forschen</title> - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> - <link rel="stylesheet" href="../assets/css/styles.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> + <omniDependencies:omniDependencies/> <script src="../assets/js/viewQuiz.js"></script> - <link rel="stylesheet" href="../assets/fonts/font-awesome.min.css"> - <link rel="stylesheet" href="../assets/css/Community-ChatComments.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu-1.css"> - <link rel="stylesheet" href="../assets/css/Sidebar-Menu.css"> + </head> <body> <div id="wrapper"> - <menu:menu></menu:menu> + <menu:menu/> <div class="page-content-wrapper"> - <div class="container-fluid"> - <h1 id="projectId">project1 - <a href="#"> - <span class="glyphicon glyphicon-envelope" - style="font-size:27px;margin-top:-17px;margin-left:600px;"></span> - </a> - <a href="#"> - <span class="glyphicon glyphicon-cog" style="font-size:29px;margin-left:5px;margin-top:-25px;"></span> - </a></h1> - </div> + <headLine:headLine/> <div> <table> <tr> diff --git a/gemeinsamforschen/src/main/webapp/session/session_example_1.jsp b/gemeinsamforschen/src/main/webapp/session/session_example_1.jsp new file mode 100644 index 0000000000000000000000000000000000000000..4f2ddf97366c1617b8aad74c34fe72937b36fea1 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/session/session_example_1.jsp @@ -0,0 +1,18 @@ +<%-- + Created by IntelliJ IDEA. + User: dehne + Date: 23.07.2018 + Time: 13:51 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib prefix="gf" uri="../core/pages/gemeinsamForschen.tld" %> +<html> +<head> + <title>Title</title> +</head> +<body> + <gf:session></gf:session> + <a href="session_example_2.jsp">click mich</a> +</body> +</html> diff --git a/gemeinsamforschen/src/main/webapp/session/session_example_2.jsp b/gemeinsamforschen/src/main/webapp/session/session_example_2.jsp new file mode 100644 index 0000000000000000000000000000000000000000..a6e570bc3814fac53418a447f95854fe729a2224 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/session/session_example_2.jsp @@ -0,0 +1,17 @@ +<%-- + Created by IntelliJ IDEA. + User: dehne + Date: 23.07.2018 + Time: 13:51 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib prefix="gf" uri="../core/pages/gemeinsamForschen.tld" %> +<html> +<head> + <title>Big Deal</title> +</head> +<body> + <gf:context/> +</body> +</html> diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql index 28f6d3080403bec40088fd1440913b88c6b2610c..9fa4f5d937c07ea125ab90d2ce2e64a48dccca3e 100644 --- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql +++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql @@ -145,6 +145,20 @@ CREATE TABLE if not exists quiz ENGINE = InnoDB + DEFAULT CHARSET = utf8; +CREATE TABLE if not exists grades + +( + + projectId varchar(400) NOT NULL, + + studentId varchar(400) NOT NULL, + + grade double NOT NULL +) + + ENGINE = InnoDB + DEFAULT CHARSET = utf8; CREATE TABLE if not exists tasks diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql.orig b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql.orig new file mode 100644 index 0000000000000000000000000000000000000000..0a4cf820cd2c5dae6d31fc8cb069ef2a37005018 --- /dev/null +++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql.orig @@ -0,0 +1,218 @@ +CREATE DATABASE IF NOT EXISTS `fltrail` + + DEFAULT CHARACTER SET utf8 + + COLLATE utf8_general_ci; + +USE `fltrail`; + +CREATE TABLE if not exists `projects` ( + + `id` varchar(100) NOT NULL, + + `password` varchar(400) NOT NULL, + + `active` tinyint(1) NOT NULL, + + `timecreated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP + ON UPDATE CURRENT_TIMESTAMP, + + `author` varchar(400) NOT NULL, + + `adminPassword` varchar(400) NOT NULL, + + `token` varchar(400) NOT NULL, + + `phase` varchar(400) NOT NULL + +) + + ENGINE = InnoDB + + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists `groups` ( + + `id` int NOT NULL AUTO_INCREMENT, + + `projectId` varchar(400) NOT NULL, + + `chatRoomId` varchar(400) NOT NULL, + + PRIMARY KEY (id) + +) + + ENGINE = InnoDB + + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists groupuser + +( + + userEmail varchar(400) NOT NULL, + + groupId int NOT NULL + +) + + ENGINE = InnoDB + + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists `tags` ( + + `projectId` varchar(100) NOT NULL, + + `tag` varchar(400) NOT NULL + +) + + ENGINE = InnoDB + + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists `users` ( + + `name` varchar(100) NOT NULL, + + `password` varchar(200) NOT NULL, + + `email` varchar(255) NOT NULL, + + `token` varchar(800) NOT NULL, + + `rocketChatId` varchar(400) NOT NULL, + + `rocketChatAuthToken` varchar(800) NOT NULL, + + UNIQUE (email) + +) + + ENGINE = InnoDB + + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists projectuser + +( + + projectId varchar(100) NOT NULL, + + userId varchar(100) NOT NULL + +) + + ENGINE = InnoDB + + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists `annotations` ( + `id` varchar(120) NOT NULL, + `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `userToken` varchar(120) DEFAULT NULL, + `targetId` int(11) DEFAULT NULL, + `title` varchar(120) DEFAULT NULL, + `comment` varchar(400) DEFAULT NULL, + `startCharacter` int(11) DEFAULT NULL, + `endCharacter` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +alter table users + + add isStudent tinyint(1) default '1' null; + +CREATE TABLE if not exists quiz + +( + + author varchar(400) NOT NULL, + + projectId varchar(400) NOT NULL, + + question varchar(400) NOT NULL, + + mcType varchar(400) NOT NULL, + + answer varchar(400) NOT NULL, + + correct tinyint(1) NOT NULL + +) + + ENGINE = InnoDB + + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists tasks + +( + + userId varchar(400) NOT NULL, + + projectId varchar(400) NOT NULL, + + taskUrl varchar(400) NOT NULL +) + + ENGINE = InnoDB + + DEFAULT CHARSET = utf8; + + +CREATE TABLE if not exists phasesSelected ( + `projectId` varchar(100) NOT NULL, + phaseSelected varchar(200) NOT NULL +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists categoriesSelected ( + `projectId` varchar(100) NOT NULL, + categorySelected varchar(200) NOT NULL +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists groupfindingMechanismSelected ( + `projectId` varchar(100) NOT NULL, + gfmSelected varchar(200) NOT NULL +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists assessmentMechanismSelected ( + `projectId` varchar(100) NOT NULL, + amSelected varchar(200) NOT NULL +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; + +<<<<<<< HEAD + DEFAULT CHARSET = utf8; + +CREATE TABLE if not exists grades + +( + + projectId varchar(400) NOT NULL, + + studentId varchar(400) NOT NULL, + + grade double NOT NULL +) + + ENGINE = InnoDB + + DEFAULT CHARSET = utf8; +======= +ALTER TABLE `projectuser` + ADD INDEX (`projectId`, `userId`); +ALTER TABLE `projectuser` + ADD UNIQUE (`projectId`, `userId`); +ALTER TABLE `projects` + ADD UNIQUE (`id`); +>>>>>>> origin/session_management