Skip to content
Snippets Groups Projects
Commit f8fae505 authored by Julian Dehne's avatar Julian Dehne
Browse files

Merge remote-tracking branch 'origin/single-user-project' into single-user-project

# Conflicts:
#	gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
parents cbd47ea9 194c92ea
No related branches found
No related tags found
No related merge requests found
Showing
with 167 additions and 592 deletions
......@@ -9,8 +9,6 @@ import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
import unipotsdam.gf.modules.group.DummyGroupfinding;
import unipotsdam.gf.modules.group.DummyProjectCreationService;
import unipotsdam.gf.modules.group.GroupDAO;
import unipotsdam.gf.modules.group.GroupfindingImpl;
import unipotsdam.gf.modules.journal.service.IJournalImpl;
import unipotsdam.gf.modules.project.Management;
import unipotsdam.gf.modules.project.ManagementImpl;
import unipotsdam.gf.modules.project.ProjectConfigurationDAO;
......@@ -31,20 +29,17 @@ import unipotsdam.gf.session.GFContexts;
public class GFApplicationBinder extends AbstractBinder {
/**
* TODO replace DummyImplementation
*/
@Override
protected void configure() {
bind(CommunicationDummyService.class).to(ICommunication.class);
bind(ManagementImpl.class).to(Management.class);
bind(PeerAssessment.class).to(IPeerAssessment.class);
bind(PhasesImpl.class).to(IPhases.class);
bind(ManagementImpl.class).to(Management.class);
bind(DummyResearchReportManagement.class).to(ResearchReportManagement.class);
bind(DummyGroupfinding.class).to(IGroupFinding.class);
bind(IJournalImpl.class).to(IJournal.class);
bind(GroupfindingImpl.class).to(IGroupFinding.class);
bind(AssessmentDBCommunication.class).to(AssessmentDBCommunication.class);
bind(GFContexts.class).to(GFContexts.class);
bind(ProjectCreationProcess.class).to(ProjectCreationProcess.class);
......
......@@ -42,7 +42,7 @@ public class AssessmentDBCommunication {
ArrayList<Map<String, Double>> result = new ArrayList<>();
connect.connect();
String mysqlRequest = "SELECT * FROM `workrating` WHERE `projectName`=? AND `userName`=?";
String mysqlRequest = "SELECT * FROM `workrating` WHERE `projectName`=? AND `userEmail`=?";
VereinfachtesResultSet vereinfachtesResultSet =
connect.issueSelectStatement(mysqlRequest, student.getProjectName(), student.getUserEmail());
boolean next = vereinfachtesResultSet.next();
......@@ -60,7 +60,7 @@ public class AssessmentDBCommunication {
Boolean getWorkRating(StudentIdentifier student, String fromStudent) {
connect.connect();
String mysqlRequest = "SELECT * FROM `workrating` WHERE `projectName`=? AND `userName`=? AND `fromPeer`=?";
String mysqlRequest = "SELECT * FROM `workrating` WHERE `projectName`=? AND `userEmail`=? AND `fromPeer`=?";
VereinfachtesResultSet vereinfachtesResultSet =
connect.issueSelectStatement(mysqlRequest, student.getProjectName(), student.getUserEmail(),
fromStudent);
......@@ -74,32 +74,21 @@ public class AssessmentDBCommunication {
VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(mysqlRequest, projectID);
boolean next = vereinfachtesResultSet.next();
while (next) {
result.add(vereinfachtesResultSet.getString("userID"));
result.add(vereinfachtesResultSet.getString("userEmail"));
next = vereinfachtesResultSet.next();
}
return result;
}
Integer getGroupByStudent(StudentIdentifier student) {
Integer result;
connect.connect();
String mysqlRequest = "SELECT groupId FROM `groupuser` WHERE `projectName`=? AND `userName`=?";
VereinfachtesResultSet vereinfachtesResultSet =
connect.issueSelectStatement(mysqlRequest, student.getProjectName(), student.getUserEmail());
vereinfachtesResultSet.next();
result = vereinfachtesResultSet.getInt("groupId");
return result;
}
ArrayList<String> getStudentsByGroupAndProject(Integer groupId, String projectName) {
ArrayList<String> getStudentsByGroupAndProject(Integer groupId) {
ArrayList<String> result = new ArrayList<>();
connect.connect();
String mysqlRequest = "SELECT * FROM `groupuser` WHERE `groupId`=? AND `projectName`=?";
String mysqlRequest = "SELECT * FROM `groupuser` WHERE `groupId`=?";
VereinfachtesResultSet vereinfachtesResultSet =
connect.issueSelectStatement(mysqlRequest, groupId, projectName);
connect.issueSelectStatement(mysqlRequest, groupId);
Boolean next = vereinfachtesResultSet.next();
while (next) {
result.add(vereinfachtesResultSet.getString("userName"));
result.add(vereinfachtesResultSet.getString("userEmail"));
next = vereinfachtesResultSet.next();
}
return result;
......@@ -148,7 +137,7 @@ public class AssessmentDBCommunication {
ArrayList<Integer> getAnsweredQuizzes(StudentIdentifier student) {
ArrayList<Integer> result = new ArrayList<>();
connect.connect();
String mysqlRequest = "SELECT * FROM `answeredquiz` WHERE `projectName`=? AND `userName`=?";
String mysqlRequest = "SELECT * FROM `answeredquiz` WHERE `projectName`=? AND `userEmail`=?";
VereinfachtesResultSet vereinfachtesResultSet =
connect.issueSelectStatement(mysqlRequest, student.getProjectName(), student.getUserEmail());
boolean next = vereinfachtesResultSet.next();
......@@ -164,7 +153,7 @@ public class AssessmentDBCommunication {
connect.connect();
for (String question : questions.keySet()) {
String mysqlRequest =
"INSERT INTO `answeredquiz`(`projectName`, `userName`, `question`, `correct`) VALUES (?,?,?,?)";
"INSERT INTO `answeredquiz`(`projectName`, `userEmail`, `question`, `correct`) VALUES (?,?,?,?)";
connect.issueInsertOrDeleteStatement(mysqlRequest, student.getProjectName(), student.getUserEmail(),
question, questions.get(question));
}
......@@ -174,7 +163,7 @@ public class AssessmentDBCommunication {
void writeWorkRatingToDB(StudentIdentifier student, String fromStudent, Map<String, Integer> workRating) {
connect.connect();
String mysqlRequest =
"INSERT INTO `workrating`(`projectName`, `userName`, `fromPeer`, " + "`responsibility`, " + "`partOfWork`, " + "`cooperation`, " + "`communication`, " + "`autonomous`" + ") VALUES (?,?,?,?,?,?,?,?)";
"INSERT INTO `workrating`(`projectName`, `userEmail`, `fromPeer`, " + "`responsibility`, " + "`partOfWork`, " + "`cooperation`, " + "`communication`, " + "`autonomous`" + ") VALUES (?,?,?,?,?,?,?,?)";
connect.issueInsertOrDeleteStatement(mysqlRequest, student.getProjectName(), student.getUserEmail(),
fromStudent, workRating.get("responsibility"), workRating.get("partOfWork"),
workRating.get("cooperation"), workRating.get("communication"), workRating.get("autonomous"));
......@@ -184,7 +173,7 @@ public class AssessmentDBCommunication {
Integer getWhichGroupToRate(StudentIdentifier student) {
Integer result;
connect.connect();
String mysqlRequest1 = "SELECT groupId FROM `groupuser` WHERE `projectName`=? AND `userName`=? ";
String mysqlRequest1 = "SELECT groupId FROM `groupuser` WHERE `projectName`=? AND `userEmail`=? ";
VereinfachtesResultSet vereinfachtesResultSet1 =
connect.issueSelectStatement(mysqlRequest1, student.getProjectName(), student.getUserEmail());
vereinfachtesResultSet1.next();
......@@ -213,7 +202,7 @@ public class AssessmentDBCommunication {
void writeContributionRatingToDB(String groupId, String fromStudent, Map<String, Integer> contributionRating) {
connect.connect();
String mysqlRequest =
"INSERT INTO `contributionrating`(" + "`groupId`, " + "`fromPeer`, " + "`dossier`, " + "`research`) " + "VALUES (?,?,?,?)";
"INSERT INTO `contributionrating`(`groupId`, `fromPeer`, `dossier`, `research`) VALUES (?,?,?,?)";
connect.issueInsertOrDeleteStatement(mysqlRequest, groupId, fromStudent, contributionRating.get("dossier"),
contributionRating.get("research"));
connect.close();
......@@ -221,7 +210,7 @@ public class AssessmentDBCommunication {
void writeGradesToDB(Map<StudentIdentifier, Double> grade) {
connect.connect();
String mysqlRequest = "INSERT INTO `grades`(`projectName`, `userName`, `grade`) VALUES (?,?,?)";
String mysqlRequest = "INSERT INTO `grades`(`projectName`, `userEmail`, `grade`) VALUES (?,?,?)";
for (StudentIdentifier student : grade.keySet()) {
connect.issueInsertOrDeleteStatement(mysqlRequest, student.getProjectName(), student.getUserEmail(),
grade.get(student));
......
package unipotsdam.gf.modules.assessment.controller.service;
import unipotsdam.gf.modules.group.GroupDAO;
import unipotsdam.gf.modules.project.Management;
import unipotsdam.gf.modules.project.Project;
import unipotsdam.gf.process.constraints.ConstraintsMessages;
......@@ -26,6 +27,9 @@ public class PeerAssessment implements IPeerAssessment {
@Inject
private AssessmentDBCommunication assessmentDBCommunication;
@Inject
private GroupDAO groupDAO;
@Override
public void finalizeAssessment(String projectName){
cheatCheckerMethods method = assessmentDBCommunication.getAssessmentMethod(projectName);
......@@ -70,8 +74,8 @@ public class PeerAssessment implements IPeerAssessment {
@Override
public String whatToRate(StudentIdentifier student) {
Integer groupId = assessmentDBCommunication.getGroupByStudent(student);
ArrayList<String> groupMembers = assessmentDBCommunication.getStudentsByGroupAndProject(groupId, student.getProjectName());
Integer groupId = groupDAO.getGroupByStudent(student);
ArrayList<String> groupMembers = assessmentDBCommunication.getStudentsByGroupAndProject(groupId);
for (String peer : groupMembers) {
if (!peer.equals(student.getUserEmail())) {
StudentIdentifier groupMember = new StudentIdentifier(student.getProjectName(), peer);
......@@ -130,7 +134,7 @@ public class PeerAssessment implements IPeerAssessment {
Integer groupId;
Performance performance = new Performance();
StudentIdentifier userNameentifier = new StudentIdentifier(projectName, student);
groupId = assessmentDBCommunication.getGroupByStudent(userNameentifier);
groupId = groupDAO.getGroupByStudent(userNameentifier);
//todo: answered quizzes vervöllstandigen
Integer numberOfQuizzes = assessmentDBCommunication.getQuizCount(projectName);
List<Integer> answeredQuizzes = assessmentDBCommunication.getAnsweredQuizzes(userNameentifier);
......
......@@ -23,7 +23,8 @@ import java.util.Map;
@Path("/assessments")
public class QuizView {
private static IPeerAssessment peer = new PeerAssessment(); //correct DB-conn and stuff
@Inject
private IPeerAssessment peer; //correct DB-conn and stuff
@Inject
Management management;
......
......@@ -21,6 +21,7 @@ import java.util.Objects;
@Singleton
public class GroupDAO {
@Inject
private MysqlConnect connect;
@Inject
......@@ -28,28 +29,33 @@ public class GroupDAO {
this.connect = connect;
}
public ArrayList<String> getStudentsInSameGroupAs(StudentIdentifier student) {
ArrayList<String> getStudentsInSameGroupAs(StudentIdentifier student) {
connect.connect();
ArrayList<String> result = new ArrayList<>();
Integer groupId;
String mysqlRequest1 = "SELECT groupId FROM `groupuser` WHERE `projectName`=? AND `userEmail`=?";
VereinfachtesResultSet vereinfachtesResultSet1 =
connect.issueSelectStatement(mysqlRequest1, student.getProjectName(), student.getUserEmail());
vereinfachtesResultSet1.next();
groupId = vereinfachtesResultSet1.getInt("groupId");
String mysqlRequest2 = "SELECT * FROM `groupuser` WHERE `groupId`=?";
VereinfachtesResultSet vereinfachtesResultSet2 = connect.issueSelectStatement(mysqlRequest2, groupId);
boolean next2 = vereinfachtesResultSet2.next();
int groupId= getGroupByStudent(student);
String mysqlRequest = "SELECT * FROM `groupuser` WHERE `groupId`=?";
VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(mysqlRequest, groupId);
boolean next2 = vereinfachtesResultSet.next();
while (next2) {
String peer = vereinfachtesResultSet2.getString("userName");
String peer = vereinfachtesResultSet.getString("userEmail");
if (!peer.equals(student.getUserEmail()))
result.add(peer);
next2 = vereinfachtesResultSet2.next();
next2 = vereinfachtesResultSet.next();
}
connect.close();
return result;
}
public Integer getGroupByStudent(StudentIdentifier student) {
Integer result;
connect.connect();
String mysqlRequest = "SELECT groupId FROM `groupuser` gu JOIN groups g WHERE g.`projectName`=? AND gu.groupid=g.id AND gu.userEmail=? ";
VereinfachtesResultSet vereinfachtesResultSet =
connect.issueSelectStatement(mysqlRequest, student.getProjectName(), student.getUserEmail());
vereinfachtesResultSet.next();
result = vereinfachtesResultSet.getInt("groupId");
return result;
}
// refactor (you get the id as a return value when inserting into the db)
public void persist(Group group) {
......
......@@ -5,8 +5,8 @@
* @param responseHandler The response handler
*/
function createFullSubmission(fullSubmissionPostRequest, responseHandler) {
var url = "../rest/submissions/full";
var json = JSON.stringify(fullSubmissionPostRequest);
let url = "../rest/submissions/full";
let json = JSON.stringify(fullSubmissionPostRequest);
$.ajax({
url: url,
type: "POST",
......
......@@ -11,10 +11,10 @@ $(document).ready(function () {
let text = $('#upload-textarea').val();
// build request
var fullSubmissionPostRequest = {
let fullSubmissionPostRequest = {
user: user,
text: text,
projectName: getQueryVariable("projectName")
projectName: $('#projectName').text().trim()
};
// save request in database
......@@ -23,7 +23,7 @@ $(document).ready(function () {
$('#upload-textarea').val("");
// jump to next page
location.href = "create-unstructured-annotation.jsp?projectName=" + getQueryVariable("projectName") + "&submissionId=" + response.id;
location.href = "create-unstructured-annotation.jsp?projectName=" + $('#projectName').text().trim() + "&submissionId=" + response.id;
});
}
});
......
......@@ -2,6 +2,7 @@
<%@ taglib uri="../taglibs/gemeinsamForschen.tld" prefix="menu" %>
<%@ taglib uri="../taglibs/gemeinsamForschen.tld" prefix="headLine" %>
<%@ taglib uri="../taglibs/gemeinsamForschen.tld" prefix="omniDependencies" %>
<%@ taglib uri="../taglibs/gemeinsamForschen.tld" prefix="footer" %>
<!DOCTYPE html>
......@@ -27,37 +28,28 @@
<body>
<menu:menu hierarchy="1"/>
<div id="wrapper">
<div class="page-content-wrapper full-height">
<div class="container-fluid full-height">
<div class="container-fluid-content">
<div class="flex">
<headLine:headLine/>
</div>
<div class="content-mainpage">
<form id="upload-textarea-form">
<div class="form-group upload-text" id="documentText">
<label for="upload-textarea">Texteingabe</label>
<textarea class="upload-text-textarea form-control" placeholder="Text einfügen..."
id="upload-textarea" name="uploadtextarea"></textarea>
</div>
</form>
<div>
<label for="file">Alternativ bitte Datei wählen</label>
<input type="file" id="file" name="file">
</div>
<div class="document-text-buttons">
<%--<button type="button" class="btn btn-secondary document-text-buttons-back" id="btnBack">Zurück
</button>--%>
<button type="button" class="btn btn-primary document-text-buttons-next" id="btnNext">Weiter
</button>
</div>
</div>
</div>
<div class="col span_l_of_2"> <!-- col right-->
<headLine:headLine/>
<form id="upload-textarea-form">
<div class="form-group upload-text" id="documentText">
<label for="upload-textarea">Texteingabe</label>
<textarea class="upload-text-textarea form-control" placeholder="Text einfügen..."
id="upload-textarea" name="uploadtextarea"></textarea>
</div>
</form>
<div>
<label for="file">Alternativ bitte Datei wählen</label>
<input type="file" id="file" name="file">
</div>
<div class="document-text-buttons">
<%--<button type="button" class="btn btn-secondary document-text-buttons-back" id="btnBack">Zurück
</button>--%>
<button type="button" class="btn btn-primary document-text-buttons-next" id="btnNext">Weiter
</button>
</div>
</div>
<footer:footer/>
</body>
</html>
......@@ -27,101 +27,16 @@ function buildTablesForPeers() {
success: function (peers) {
let div = document.getElementById('peerTable');
for (let peer = 0; peer < peers.length; peer++) {
let tablePeer = document.createElement('DIV');
if (peer === 0) {
tablePeer.className = "item active";
} else {
tablePeer.className = "item";
}
let innerPeerTable = '<table class="table-striped peerStudent" id="' + peers[peer] + '">' +
'<tr>' +
'<td align="center">' +
'<img src="../assets/img/noImg.png" alt="' + peers[peer] + '" style="width:20%;">' +
'</td>' +
'</tr>' +
'<tr>' +
'<td align="center">' +
'<h3>Verantwortungsbewusstsein</h3>' +
'</td>' +
'</tr>' +
'<tr>' +
'<td align="center">' +
'<label>stark ausgeprägt<input type="radio" value="5" name="responsibility' + peers[peer] + '"></label>' +
'<input type="radio" value="4" name="responsibility' + peers[peer] + '">' +
'<input type="radio" value="3" name="responsibility' + peers[peer] + '">' +
'<input type="radio" value="2" name="responsibility' + peers[peer] + '">' +
'<label><input type="radio" value="1" name="responsibility' + peers[peer] + '">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="partOfWork' + peers[peer] + '"></label>' +
'<input type="radio" value="4" name="partOfWork' + peers[peer] + '">' +
'<input type="radio" value="3" name="partOfWork' + peers[peer] + '">' +
'<input type="radio" value="2" name="partOfWork' + peers[peer] + '">' +
'<label><input type="radio" value="1" name="partOfWork' + peers[peer] + '">geringer Anteil</label>' +
'</td>' +
'</tr>' +
'<tr>' +
'<td align="center">' +
'<h3>Kooperationsbereitschaft</h3>' +
'</td>' +
'</tr>' +
'<tr>' +
'<td align="center">' +
'<label>sehr kooperativ<input type="radio" value="5" name="cooperation' + peers[peer] + '">' +
'</label>' +
'<input type="radio" value="4" name="cooperation' + peers[peer] + '">' +
'<input type="radio" value="3" name="cooperation' + peers[peer] + '">' +
'<input type="radio" value="2" name="cooperation' + peers[peer] + '">' +
'<label><input type="radio" value="1" name="cooperation' + peers[peer] + '">nicht kooperativ</label>' +
'</td>' +
'</tr>' +
'<tr>' +
'<td align="center">' +
'<h3>Disskusionsfähigkeit</h3>' +
'</td>' +
'</tr>' +
'<tr>' +
'<td align="center">' +
'<label>gut kommuniziert und Meinung vertreten<input type="radio" value="5" name="communication' + peers[peer] + '">' +
'</label>' +
'<input type="radio" value="4" name="communication' + peers[peer] + '">' +
'<input type="radio" value="3" name="communication' + peers[peer] + '">' +
'<input type="radio" value="2" name="communication' + peers[peer] + '">' +
'<label><input type="radio" value="1" name="communication' + peers[peer] + '">keine Meinung und schlecht kommuniziert</label>' +
'</td>' +
'</tr>' +
'<tr>' +
'<td align="center">' +
'<h3>Selbstständigkeit</h3>' +
'</td>' +
'</tr>' +
'<tr>' +
'<td align="center">' +
'<label>selbstständig<input type="radio" value="5" name="autonomous' + peers[peer] + '">' +
'</label>' +
'<input type="radio" value="4" name="autonomous' + peers[peer] + '">' +
'<input type="radio" value="3" name="autonomous' + peers[peer] + '">' +
'<input type="radio" value="2" name="autonomous' + peers[peer] + '">' +
'<label><input type="radio" value="1" name="autonomous' + peers[peer] + '">abhängig</label>' +
'</td>' +
'</tr>' +
'</table>' +
'<div align="center">' +
' <button class="btn btn-primary" id="btnJournal' + peers[peer] + '">' +
' zeige Lernzieltagebuch</button>' +
' <div id="eJournal' + peers[peer] + '">Fasel Blubba Bla</div>' +
'</div>';
tablePeer.innerHTML = innerPeerTable;
div.appendChild(tablePeer);
$('#btnJournal' + peers[peer]).on("click", function () {
$('#eJournal' + peers[peer]).toggle();
let peerId = peers[peer].replace("@","").replace(".","");
let tmplObject={
peerId: peerId,
first: null
};
if (peer===0)
tmplObject.first=1;
$('#peerTemplate').tmpl(tmplObject).appendTo(div);
$('#btnJournal' +peerId).on("click", function () {
$('#eJournal' +peerId).toggle();
});
}
},
......
......@@ -55,133 +55,6 @@
</script>
</div>
<!-- Aufgabe -->
<%--
<!-- Aufgabe -->
<div class="card card-draft">
<div class="col span_s_of_2 icon grouptask">
</div>
<div class="col span_l_of_2">
<button class="primary" id="create-feedback">Schreibe ein Feedback</button>
</div>
<div class="status icon"><p>Noch drei Tage Zeit</p></div>
<div style="clear:left"></div>
</div>
<!-- Aufgabe -->
<div class="card card-draft">
<div class="col span_s_of_2 icon grouptask">
</div>
<div class="col span_l_of_2">
<a href="#">Gib Feedback zu einem Forschungsdossier</a>
</div>
<div class="status icon"><p>Noch drei Tage Zeit</p></div>
<div style="clear:left"></div>
</div>
<div class="card card-feedback">
<div class="col span_s_of_2 icon infotask">
</div>
<div class="col span_l_of_2">
<h4> Erhalte 3 Feedbacks </h4>
<div class="shoulds">
<i class="fas fa-check-circle"></i>&nbsp;
<i class="fas fa-check-circle"></i>&nbsp;
<i class="far fa-circle"></i>
</div>
<ul class="list">
<li><a href="#">Feedback 1</a></li>
<li><a href="#">Feedback 2</a></li>
</ul>
</div>
<div class="status icon"><p>Noch drei Tage Zeit</p></div>
<div style="clear:left"></div>
</div>
<!-- Aufgabe -->
<div class="card card-grouping">
<div class="col span_s_of_2 icon usertask">
</div>
<div class="col span_l_of_2">
<button class="primary">Schreibe ein Feedback</button>
<a href="#">Regeln fürs Feedback schreiben</a>
</div>
<div class="status alert icon"><p>Du bist zu spät.</p></div>
<div style="clear:left"></div>
</div>
<!-- Aufgabe -->
<div class="card card-execution">
<div class="col span_s_of_2 icon grouptask ">
</div>
<div class="col span_l_of_2">
<button class="primary">Schließe das Dossier ab</button>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore
et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
rebum.</p>
</div>
<div class="status icon"></div>
<div style="clear:left"></div>
</div>
<!-- Aufgabe -->
<div class="card card-assessment">
<div class="col span_s_of_2 icon grouptask ">
</div>
<div class="col span_l_of_2">
<button class="primary">Schließe das Dossier ab</button>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore
et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
rebum.</p>
</div>
<div class="status icon"><p>Noch drei Tage Zeit</p></div>
<div style="clear:left"></div>
</div>
<!-- Aufgabe -->
<div class="card card-grades">
<div class="col span_s_of_2 icon grouptask ">
</div>
<div class="col span_l_of_2">
<button class="primary">Schließe das Dossier ab</button>
<br>
<input type="checkbox" name="vehicle1" value="Bike"> Is erledigt <br>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore
et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
rebum.</p>
</div>
<div class="status icon"></div>
<div style="clear:left"></div>
</div>--%>
</div>
<footer:footer/>
</body>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment