Index: eprms-tap/pom.xml
===================================================================
--- eprms-tap/pom.xml	(revision 128696269765019a881f764a66fc7dd45745a752)
+++ eprms-tap/pom.xml	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
@@ -14,5 +14,5 @@
 	<groupId>info.ajanovski.eprms</groupId>
 	<artifactId>eprms-tap</artifactId>
-	<version>0.0.9-SNAPSHOT</version>
+	<version>0.0.10-SNAPSHOT</version>
 	<name>EPRMS - Educational Project and Resource Management System</name>
 
@@ -39,5 +39,5 @@
 
 		<spring-boot-version>2.6.3</spring-boot-version>
-		<tapestry-version>5.8.2</tapestry-version>
+		<tapestry-version>5.8.3</tapestry-version>
 		<tapestry-testify-version>1.0.4</tapestry-testify-version>
 		<tapestry-xpath-version>1.0.1</tapestry-xpath-version>
@@ -71,5 +71,5 @@
 			<groupId>info.ajanovski.eprms</groupId>
 			<artifactId>model</artifactId>
-			<version>0.0.8-SNAPSHOT</version>
+			<version>0.0.10-SNAPSHOT</version>
 		</dependency>
 
@@ -266,5 +266,5 @@
 			<groupId>org.webjars</groupId>
 			<artifactId>webjars-locator</artifactId>
-			<version>0.42</version>
+			<version>0.48</version>
 		</dependency>
 		<dependency>
@@ -276,5 +276,5 @@
 			<groupId>org.webjars.npm</groupId>
 			<artifactId>feather-icons</artifactId>
-			<version>4.28.0</version>
+			<version>4.29.0</version>
 		</dependency>
 		<dependency>
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/DiscussionDao.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/DiscussionDao.java	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/DiscussionDao.java	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
@@ -0,0 +1,19 @@
+package info.ajanovski.eprms.tap.data;
+
+import java.util.List;
+
+import info.ajanovski.eprms.model.entities.DiscussionPost;
+import info.ajanovski.eprms.model.entities.DiscussionPostEvaluation;
+import info.ajanovski.eprms.model.entities.DiscussionSession;
+import info.ajanovski.eprms.model.entities.Person;
+
+public interface DiscussionDao {
+
+	List<Person> getPersonsActiveInDiscussionSession(DiscussionSession discussionSession);
+
+	List<DiscussionPost> getPersonsDiscussionPostsInDiscussionSession(DiscussionSession discussionSession,
+			Person person);
+
+	List<DiscussionPostEvaluation> getDiscussionPostEvaluations(long discussionPostId);
+
+}
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/DiscussionDaoImpl.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/DiscussionDaoImpl.java	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/data/DiscussionDaoImpl.java	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
@@ -0,0 +1,85 @@
+package info.ajanovski.eprms.tap.data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tapestry5.ioc.annotations.Inject;
+import org.hibernate.Session;
+
+import info.ajanovski.eprms.model.entities.DiscussionPost;
+import info.ajanovski.eprms.model.entities.DiscussionPostEvaluation;
+import info.ajanovski.eprms.model.entities.DiscussionSession;
+import info.ajanovski.eprms.model.entities.Person;
+
+public class DiscussionDaoImpl implements DiscussionDao {
+
+	@Inject
+	private Session session;
+
+	private Session getEntityManager() {
+		return session.getSession();
+	}
+
+	@Override
+	public List<Person> getPersonsActiveInDiscussionSession(DiscussionSession discussionSession) {
+		try {
+			return getEntityManager().createQuery("""
+					select distinct p
+					from
+						DiscussionPost dp
+						join dp.person p
+						join dp.discussionOnCourseProject dcp
+						join dcp.discussionSession ds
+					where ds.discussionSessionId=:discussionSessionId
+					""").setParameter("discussionSessionId", discussionSession.getDiscussionSessionId())
+					.getResultList();
+		} catch (Exception e) {
+			return new ArrayList<Person>();
+		}
+	}
+
+	@Override
+	public List<DiscussionPost> getPersonsDiscussionPostsInDiscussionSession(DiscussionSession discussionSession,
+			Person person) {
+		if (person != null) {
+			try {
+				return getEntityManager().createQuery("""
+							select distinct dp
+							from
+								DiscussionPost dp
+								join dp.person p
+								join dp.discussionOnCourseProject docp
+								join docp.discussionSession ds
+							where ds.discussionSessionId=:discussionSessionId and
+									p.personId=:personId
+						""").setParameter("discussionSessionId", discussionSession.getDiscussionSessionId())
+						.setParameter("personId", person.getPersonId()).getResultList();
+			} catch (Exception e) {
+				return new ArrayList<DiscussionPost>();
+			}
+		} else {
+			return new ArrayList<DiscussionPost>();
+		}
+	}
+
+	@Override
+	public List<DiscussionPostEvaluation> getDiscussionPostEvaluations(long discussionPostId) {
+		try {
+			List<DiscussionPostEvaluation> l = getEntityManager().createQuery("""
+						select dpe
+						from
+							DiscussionPostEvaluation dpe
+							join dpe.discussionPost dp
+						where dp.discussionPostId=:discussionPostId
+					""").setParameter("discussionPostId", discussionPostId).getResultList();
+			if (l != null && l.size() > 0) {
+				return l;
+			} else {
+				return null;
+			}
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
+}
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/DiscussProject.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/DiscussProject.java	(revision 128696269765019a881f764a66fc7dd45745a752)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/DiscussProject.java	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
@@ -19,4 +19,5 @@
 import info.ajanovski.eprms.model.entities.DiscussionOnCourseProject;
 import info.ajanovski.eprms.model.entities.DiscussionPost;
+import info.ajanovski.eprms.model.entities.DiscussionPostEvaluation;
 import info.ajanovski.eprms.model.entities.Person;
 import info.ajanovski.eprms.model.util.ComparatorDiscussionPostByReplyTo;
@@ -24,6 +25,9 @@
 import info.ajanovski.eprms.tap.annotations.InstructorPage;
 import info.ajanovski.eprms.tap.annotations.StudentPage;
+import info.ajanovski.eprms.tap.services.DiscussionManager;
 import info.ajanovski.eprms.tap.services.GenericService;
 import info.ajanovski.eprms.tap.services.PersonManager;
+import info.ajanovski.eprms.tap.services.SystemConfigService;
+import info.ajanovski.eprms.tap.util.AppConstants;
 import info.ajanovski.eprms.tap.util.UserInfo;
 
@@ -40,4 +44,7 @@
 
 	@Inject
+	private SystemConfigService systemConfigService;
+
+	@Inject
 	private PersonManager personManager;
 
@@ -56,4 +63,7 @@
 	@Property
 	DiscussionPost discussionPost;
+
+	@Property
+	DiscussionPostEvaluation discussionPostEvaluation;
 
 	@Persist
@@ -134,25 +144,53 @@
 
 	public String getPostAuthor() {
-		String fullName = discussionPost.getPerson().getLastName() + " " + discussionPost.getPerson().getFirstName()
-				+ " [" + discussionPost.getPerson().getUserName() + "]";
-		if (personManager.isAdministrator(discussionPost.getPerson().getPersonId())) {
+		String fullName = personManager.getPersonFullNameWithId(discussionPost.getPerson());
+		if (personManager.isInstructor(discussionPost.getPerson().getPersonId())) {
 			return fullName;
 		} else if (isPostAuthorProjectTeamMember()) {
 			return fullName;
 		} else if (discussionPost.getPublicPosting()) {
-			return discussionPost.getPerson().getLastName() + " " + discussionPost.getPerson().getFirstName() + " ["
-					+ discussionPost.getPerson().getUserName() + "]";
-		} else {
-			return "Anon";
+			return fullName;
+		} else {
+			if (userInfo.isInstructor()) {
+				return "Anon" + " - " + fullName;
+			} else {
+				return "Anon";
+			}
 		}
 	}
 
 	public String getClassOfPostAuthor() {
-		if (personManager.isAdministrator(discussionPost.getPerson().getPersonId())) {
-			return "border-dark personAdmin";
-		} else if (isPostAuthorProjectTeamMember()) {
-			return "border-primary personProjectTeamMember";
+		if (personManager.isInstructor(discussionPost.getPerson().getPersonId())) {
+			return "border-primary personAdmin";
+		} else if (personManager.isAdministrator(discussionPost.getPerson().getPersonId())) {
+			return "border-primary personAdmin";
+		} else if (isPostAuthorProjectTeamMember()) {
+			return "border-dark personProjectTeamMember";
 		} else {
 			return "border-light";
+		}
+	}
+
+	public String getRoleOfPostAuthor() {
+		if (personManager.isInstructor(discussionPost.getPerson().getPersonId())) {
+			return ModelConstants.RoleInstructor;
+		} else if (personManager.isAdministrator(discussionPost.getPerson().getPersonId())) {
+			return ModelConstants.RoleAdministrator;
+		} else if (isPostAuthorProjectTeamMember()) {
+			return ModelConstants.TeamMemberRoleMember;
+		} else {
+			return "";
+		}
+	}
+
+	public String getIconOfPostAuthor() {
+		if (personManager.isInstructor(discussionPost.getPerson().getPersonId())) {
+			return "award";
+		} else if (personManager.isAdministrator(discussionPost.getPerson().getPersonId())) {
+			return "cpu";
+		} else if (isPostAuthorProjectTeamMember()) {
+			return "users";
+		} else {
+			return "";
 		}
 	}
@@ -161,3 +199,92 @@
 		editDiscussionPost = null;
 	}
+
+	@Inject
+	private DiscussionManager discussionManager;
+
+	public List<DiscussionPostEvaluation> getDiscussionPostEvaluations() {
+		return discussionManager.getDiscussionPostEvaluations(discussionPost.getDiscussionPostId());
+	}
+
+	public void createDiscussionPostEvaluation(String type, DiscussionPost dp) {
+		discussionManager.createDiscussionPostEvaluation(type,
+				genericService.getByPK(Person.class, userInfo.getPersonId()), dp);
+	}
+
+	@CommitAfter
+	public void onActionFromEvaluatePostFunctionality(DiscussionPost discussionPost) {
+		createDiscussionPostEvaluation(ModelConstants.DiscussionPostEvaluationTypeFunctionality, discussionPost);
+		if (request.isXHR()) {
+			ajaxResponseRenderer.addRender(zAllPosts);
+		}
+	}
+
+	@CommitAfter
+	public void onActionFromEvaluatePostBug(DiscussionPost discussionPost) {
+		createDiscussionPostEvaluation(ModelConstants.DiscussionPostEvaluationTypeBug, discussionPost);
+		if (request.isXHR()) {
+			ajaxResponseRenderer.addRender(zAllPosts);
+		}
+	}
+
+	@CommitAfter
+	public void onActionFromEvaluatePostModel(DiscussionPost discussionPost) {
+		createDiscussionPostEvaluation(ModelConstants.DiscussionPostEvaluationTypeModel, discussionPost);
+		if (request.isXHR()) {
+			ajaxResponseRenderer.addRender(zAllPosts);
+		}
+	}
+
+	@CommitAfter
+	public void onActionFromEvaluatePostIdea(DiscussionPost discussionPost) {
+		createDiscussionPostEvaluation(ModelConstants.DiscussionPostEvaluationTypeIdea, discussionPost);
+		if (request.isXHR()) {
+			ajaxResponseRenderer.addRender(zAllPosts);
+		}
+	}
+
+	@CommitAfter
+	public void onActionFromEvaluatePostOther(DiscussionPost discussionPost) {
+		createDiscussionPostEvaluation(ModelConstants.DiscussionPostEvaluationTypeOther, discussionPost);
+		if (request.isXHR()) {
+			ajaxResponseRenderer.addRender(zAllPosts);
+		}
+	}
+
+	@CommitAfter
+	public void onActionFromDeleteDiscussionPostEvaluation(DiscussionPostEvaluation discussionPostEvaluation) {
+		genericService.delete(discussionPostEvaluation);
+		if (request.isXHR()) {
+			ajaxResponseRenderer.addRender(zAllPosts);
+		}
+	}
+
+	@CommitAfter
+	public void onActionFromSetAcceptedDiscussionPostEvaluation(DiscussionPostEvaluation discussionPostEvaluation) {
+		if (discussionPostEvaluation.getAccepted() != null) {
+			discussionPostEvaluation.setAccepted(!discussionPostEvaluation.getAccepted());
+		} else {
+			discussionPostEvaluation.setAccepted(true);
+		}
+		if (request.isXHR()) {
+			ajaxResponseRenderer.addRender(zAllPosts);
+		}
+	}
+
+	@CommitAfter
+	public void onActionFromSetEvaluatedPostingAsATeamDiscussionPostEvaluation(
+			DiscussionPostEvaluation discussionPostEvaluation) {
+		if (discussionPostEvaluation.getEvaluatePostingAsATeam() != null) {
+			discussionPostEvaluation.setEvaluatePostingAsATeam(!discussionPostEvaluation.getEvaluatePostingAsATeam());
+		} else {
+			discussionPostEvaluation.setEvaluatePostingAsATeam(true);
+		}
+		if (request.isXHR()) {
+			ajaxResponseRenderer.addRender(zAllPosts);
+		}
+	}
+
+	public String getPMProjectURLPrefix() {
+		return systemConfigService.getString(AppConstants.SystemParameterPMProjectURLPrefix);
+	}
 }
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/Discussions.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/Discussions.java	(revision 128696269765019a881f764a66fc7dd45745a752)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/pages/user/Discussions.java	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
@@ -14,4 +14,5 @@
 import info.ajanovski.eprms.model.entities.DiscussionPost;
 import info.ajanovski.eprms.model.entities.DiscussionSession;
+import info.ajanovski.eprms.model.entities.Person;
 import info.ajanovski.eprms.model.entities.Responsibility;
 import info.ajanovski.eprms.model.entities.TeamMember;
@@ -20,4 +21,5 @@
 import info.ajanovski.eprms.tap.annotations.StudentPage;
 import info.ajanovski.eprms.tap.services.CourseManager;
+import info.ajanovski.eprms.tap.services.DiscussionManager;
 import info.ajanovski.eprms.tap.services.GenericService;
 import info.ajanovski.eprms.tap.util.UserInfo;
@@ -36,4 +38,7 @@
 	@Inject
 	private CourseManager courseManager;
+
+	@Inject
+	private DiscussionManager discussionManager;
 
 	@Inject
@@ -59,4 +64,10 @@
 	@Property
 	private TeamMember teamMember;
+
+	@Property
+	private Person activePerson;
+
+	@Property
+	private DiscussionPost personPost;
 
 	void onActivate() {
@@ -85,3 +96,11 @@
 	}
 
+	public List<Person> getActivePersons() {
+		return discussionManager.getPersonsActiveInDiscussionSession(selectedDiscussionSession);
+	}
+
+	public List<DiscussionPost> getPersonPosts() {
+		return discussionManager.getPersonsDiscussionPostsInDiscussionSession(selectedDiscussionSession, activePerson);
+	}
+
 }
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/AppModule.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/AppModule.java	(revision 128696269765019a881f764a66fc7dd45745a752)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/AppModule.java	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
@@ -57,4 +57,5 @@
 import info.ajanovski.eprms.model.util.ModelConstants;
 import info.ajanovski.eprms.mq.MessagingService;
+import info.ajanovski.eprms.tap.data.DiscussionDao;
 import info.ajanovski.eprms.tap.data.GenericDao;
 import info.ajanovski.eprms.tap.data.PersonDao;
@@ -84,4 +85,6 @@
 		binder.bind(TranslationService.class);
 		binder.bind(SystemConfigService.class);
+		binder.bind(DiscussionManager.class);
+		binder.bind(DiscussionDao.class);
 	}
 
@@ -159,6 +162,6 @@
 
 					Person loggedInPerson = (Person) session.getSession()
-							.createQuery("from Person p where userName=:userName").setParameter("userName", userName)
-							.getSingleResult();
+							.createQuery("from Person p where active=true and userName=:userName")
+							.setParameter("userName", userName).getSingleResult();
 
 					if (loggedInPerson == null) {
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/DiscussionManager.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/DiscussionManager.java	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/DiscussionManager.java	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
@@ -0,0 +1,21 @@
+package info.ajanovski.eprms.tap.services;
+
+import java.util.List;
+
+import info.ajanovski.eprms.model.entities.DiscussionPost;
+import info.ajanovski.eprms.model.entities.DiscussionPostEvaluation;
+import info.ajanovski.eprms.model.entities.DiscussionSession;
+import info.ajanovski.eprms.model.entities.Person;
+
+public interface DiscussionManager {
+
+	public List<Person> getPersonsActiveInDiscussionSession(DiscussionSession discussionSession);
+
+	public List<DiscussionPost> getPersonsDiscussionPostsInDiscussionSession(DiscussionSession discussionSession,
+			Person person);
+
+	public List<DiscussionPostEvaluation> getDiscussionPostEvaluations(long discussionPostId);
+
+	public void createDiscussionPostEvaluation(String type, Person person, DiscussionPost dp);
+
+}
Index: eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/DiscussionManagerImpl.java
===================================================================
--- eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/DiscussionManagerImpl.java	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
+++ eprms-tap/src/main/java/info/ajanovski/eprms/tap/services/DiscussionManagerImpl.java	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
@@ -0,0 +1,50 @@
+package info.ajanovski.eprms.tap.services;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.tapestry5.ioc.annotations.Inject;
+
+import info.ajanovski.eprms.model.entities.DiscussionPost;
+import info.ajanovski.eprms.model.entities.DiscussionPostEvaluation;
+import info.ajanovski.eprms.model.entities.DiscussionSession;
+import info.ajanovski.eprms.model.entities.Person;
+import info.ajanovski.eprms.tap.data.DiscussionDao;
+
+public class DiscussionManagerImpl implements DiscussionManager {
+
+	@Inject
+	private DiscussionDao discussionDao;
+
+	@Inject
+	private GenericService genericService;
+
+	@Override
+	public List<Person> getPersonsActiveInDiscussionSession(DiscussionSession discussionSession) {
+		return discussionDao.getPersonsActiveInDiscussionSession(discussionSession);
+	}
+
+	@Override
+	public List<DiscussionPost> getPersonsDiscussionPostsInDiscussionSession(DiscussionSession discussionSession,
+			Person person) {
+		return discussionDao.getPersonsDiscussionPostsInDiscussionSession(discussionSession, person);
+	}
+
+	@Override
+	public List<DiscussionPostEvaluation> getDiscussionPostEvaluations(long discussionPostId) {
+		return discussionDao.getDiscussionPostEvaluations(discussionPostId);
+	}
+
+	@Override
+	public void createDiscussionPostEvaluation(String type, Person person, DiscussionPost dp) {
+		DiscussionPostEvaluation dpe = new DiscussionPostEvaluation();
+		dpe.setDiscussionPost(genericService.getByPK(DiscussionPost.class, dp.getDiscussionPostId()));
+		dpe.setEvaluatedOn(new Date());
+		dpe.setPerson(genericService.getByPK(Person.class, person.getPersonId()));
+		dpe.setMessage("");
+		dpe.setPoints(null);
+		dpe.setType(type);
+		genericService.save(dpe);
+	}
+
+}
Index: eprms-tap/src/main/resources/META-INF/assets/DiscussProject.css
===================================================================
--- eprms-tap/src/main/resources/META-INF/assets/DiscussProject.css	(revision 128696269765019a881f764a66fc7dd45745a752)
+++ eprms-tap/src/main/resources/META-INF/assets/DiscussProject.css	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
@@ -1,8 +1,10 @@
 .indentation0 {
 	margin: 0rem;
+	margin-top: 1rem;
 }
 
 .indentation1 {
 	margin-left: 0rem;
+	margin-top: 5rem;
 }
 
@@ -40,18 +42,5 @@
 
 .feedback img {
-	width: 100%;	
+	width: 100%;
 }
 
-.personAdmin #postAuthor::after {
-	content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='16' height='16' stroke='currentColor' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Crect x='4' y='4' width='16' height='16' rx='2' ry='2'%3E%3C/rect%3E%3Crect x='9' y='9' width='6' height='6'%3E%3C/rect%3E%3Cline x1='9' y1='1' x2='9' y2='4'%3E%3C/line%3E%3Cline x1='15' y1='1' x2='15' y2='4'%3E%3C/line%3E%3Cline x1='9' y1='20' x2='9' y2='23'%3E%3C/line%3E%3Cline x1='15' y1='20' x2='15' y2='23'%3E%3C/line%3E%3Cline x1='20' y1='9' x2='23' y2='9'%3E%3C/line%3E%3Cline x1='20' y1='14' x2='23' y2='14'%3E%3C/line%3E%3Cline x1='1' y1='9' x2='4' y2='9'%3E%3C/line%3E%3Cline x1='1' y1='14' x2='4' y2='14'%3E%3C/line%3E%3C/svg%3E");
-    display: inline-block;
-	margin-left:0.5em;
-	 vertical-align: -3px;
-}
-
-.personProjectTeamMember #postAuthor::after {
-	content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='16' height='16' stroke='currentColor' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpath d='M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='9' cy='7' r='4'%3E%3C/circle%3E%3Cpath d='M23 21v-2a4 4 0 0 0-3-3.87'%3E%3C/path%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'%3E%3C/path%3E%3C/svg%3E");    
-	display: inline-block;
-	margin-left:0.5em;
-	 vertical-align: -3px;
-}
Index: eprms-tap/src/main/resources/info/ajanovski/eprms/tap/pages/user/DiscussProject.tml
===================================================================
--- eprms-tap/src/main/resources/info/ajanovski/eprms/tap/pages/user/DiscussProject.tml	(revision 128696269765019a881f764a66fc7dd45745a752)
+++ eprms-tap/src/main/resources/info/ajanovski/eprms/tap/pages/user/DiscussProject.tml	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
@@ -5,9 +5,11 @@
 <h1>${message:user/Discussions-pagelink}</h1>
 
-<h2>Project:
-	${discussionOnCourseProject?.courseProject?.project?.title}</h2>
+<h2>
+	Project: <a
+		href="${PMProjectURLPrefix}${discussionOnCourseProject?.courseProject?.project?.code}">${discussionOnCourseProject?.courseProject?.project?.title}</a>
+</h2>
 
 <div t:type="zone" t:id="zAllPosts">
-	<div t:type='if' t:test="editDiscussionPost">
+	<div t:type="if" t:test="editDiscussionPost">
 		<t:modalbox>
 			<form t:type="form" t:id="FrmEditPost">
@@ -17,7 +19,7 @@
 						<t:unless t:test="editDiscussionPost.replyTo">
 							<div class="form-group">
-								<label t:type="label" t:for="selectPostType" /> <select
+								<label t:type="label" t:for="selectPostType"></label> <select
 									t:type="select" t:id="selectPostType" t:model="postTypes"
-									t:value="editDiscussionPost.type" />
+									t:value="editDiscussionPost.type" ></select>
 							</div>
 						</t:unless>
@@ -28,5 +30,5 @@
 							<textarea t:id="message" t:type="textarea"
 								t:value="editDiscussionPost.message" t:mixins="webeditor"
-								t:WebEditor.areaType="" />
+								t:WebEditor.areaType="" ></textarea>
 						</div>
 					</p:message>
@@ -39,20 +41,76 @@
 	</div>
 
-	<div class="card mb-1 bg-light ${classOfPostAuthor} ${indentation}"
+	<div
+		class="card mb-1 pb-0 bg-light ${indentation} ${classOfPostAuthor}"
 		t:type="loop" t:source="allDiscussionPosts" t:value="discussionPost">
-		<div class="card-header  p-2">
+		<div class="card-header p-1">
 			<div class="row">
-				<div class="col-9" id="postAuthor">${postAuthor}</div>
+				<div class="col-9 " id="postAuthor">${postAuthor}<span
+						class="badge badge-light ml-3"> <svg t:type="svgicon"
+							t:path="${iconOfPostAuthor}" t:height="16" />${roleOfPostAuthor}</span>
+				</div>
 				<div class="col-3 float-right text-right">${discussionPost.type}
 					- ${discussionPost.postedOn}</div>
 			</div>
 		</div>
-		<div class="card-body p-2">
+		<div class="card-body pl-2 pr-2 pt-1 pb-2 ">
 			<t:outputraw t:value="discussionPost.message" />
-			<p>
-				<a href="" class="btn btn-sm btn-secondary" t:type="iconactionlink"
-					t:id="replyToPost" t:context="discussionPost"
-					t:path="corner-down-left" t:zone="zAllPosts">${message:replyTo-label}</a>
-			</p>
+			<div class="row">
+				<div class="col-3">
+					<a href="" class="btn btn-sm btn-secondary" t:type="iconactionlink"
+						t:id="replyToPost" t:context="discussionPost"
+						t:path="corner-down-left" t:zone="zAllPosts">${message:replyTo-label}</a>
+				</div>
+				<div class="col-9 text-right">
+					<div t:type="if" t:test="userInfo.isInstructor()">
+						<p class="">
+							${message:evalDiscussionPostFor-label}: <a href=""
+								class="btn btn-sm btn-success" t:type="actionlink"
+								t:id="evaluatePostIdea" t:context="discussionPost" t:path="edit"
+								t:zone="zAllPosts">${message:DiscussionPostEvaluationTypeIdea-label}</a>
+							<a href="" class="btn btn-sm btn-outline-success"
+								t:type="actionlink" t:id="evaluatePostModel"
+								t:context="discussionPost" t:path="edit" t:zone="zAllPosts">${message:DiscussionPostEvaluationTypeModel-label}</a>
+							<a href="" class="btn btn-sm btn-info" t:type="actionlink"
+								t:id="evaluatePostFunctionality" t:context="discussionPost"
+								t:path="edit" t:zone="zAllPosts">${message:DiscussionPostEvaluationTypeFunctionality-label}</a>
+							<a href="" class="btn btn-sm btn-danger" t:type="actionlink"
+								t:id="evaluatePostBug" t:context="discussionPost" t:path="edit"
+								t:zone="zAllPosts">${message:DiscussionPostEvaluationTypeBug-label}</a>
+							<a href="" class="btn btn-sm btn-outline-secondary"
+								t:type="actionlink" t:id="evaluatePostOther"
+								t:context="discussionPost" t:path="edit" t:zone="zAllPosts">${message:DiscussionPostEvaluationTypeOther-label}</a>
+						</p>
+						<p class="mt-2" t:type="if" t:test="discussionPostEvaluations">
+							<p:then>
+								<table class="table table-sm table-dark table-hover"
+									t:exclude="discussionPostEvaluationId" t:type="grid"
+									t:source="discussionPostEvaluations"
+									t:row="discussionPostEvaluation" t:add="actions">
+									<p:actionsCell>
+										<a href="" class="btn btn-sm btn-outline-primary"
+											t:type="iconactionlink"
+											t:id="setEvaluatedPostingAsATeamDiscussionPostEvaluation"
+											t:context="discussionPostEvaluation" t:path="repeat"
+											t:zone="zAllPosts">${message:evaluatePostingAsATeam-label}</a>
+										<a href="" class="btn btn-sm btn-outline-info"
+											t:type="iconactionlink"
+											t:id="setAcceptedDiscussionPostEvaluation"
+											t:context="discussionPostEvaluation" t:path="repeat"
+											t:zone="zAllPosts">${message:setAccepted-label}</a>
+										<a href="" class="btn btn-sm btn-outline-danger"
+											t:mixins="confirm" t:type="actionlink"
+											t:id="deleteDiscussionPostEvaluation"
+											t:context="discussionPostEvaluation" t:path="trash"
+											t:zone="zAllPosts">${message:remove-label}</a>
+									</p:actionsCell>
+								</table>
+							</p:then>
+							<p:else>
+							</p:else>
+						</p>
+					</div>
+				</div>
+			</div>
 		</div>
 
Index: eprms-tap/src/main/resources/info/ajanovski/eprms/tap/pages/user/Discussions.tml
===================================================================
--- eprms-tap/src/main/resources/info/ajanovski/eprms/tap/pages/user/Discussions.tml	(revision 128696269765019a881f764a66fc7dd45745a752)
+++ eprms-tap/src/main/resources/info/ajanovski/eprms/tap/pages/user/Discussions.tml	(revision c0ae8e0776efd1f8c21b805b9f387c58f2edc01a)
@@ -32,15 +32,44 @@
 	</t:if>
 
-	<div t:type="zone" t:id="discussionSessonZone">
+	<div t:type="zone" t:id="discussionSessionZone">
 		<div t:type="if" t:test="selectedDiscussionSession">
+
+			<div t:type="if" t:test="userInfo.isInstructor()">
+				<!--
+				<h2>Active Persons</h2>
+
+				<div t:type="loop" t:source="activePersons" t:value="activePerson"
+					class="card mb-3 bg-light">
+					<div class="card-header">${activePerson.lastName}
+						${activePerson.firstName} [${activePerson.userName}]</div>
+					<div class="card-body p-0">
+						<div class="row m-0">
+							<div t:type="loop" t:source="personPosts" t:value="personPost"
+								class="card card-body col-3">
+								<b>To:
+									${personPost.discussionOnCourseProject.courseProject.project.title}</b><br />
+								<t:outputRaw t:value="personPost.message" />
+							</div>
+						</div>
+					</div>
+				</div>
+ 				-->
+			</div>
+
+
+			<div class="row p-3">
 			<div t:type="loop"
 				t:source="selectedDiscussionSession.discussionsOnCourseProjects"
 				t:value="discussionOnCourseProject"
-				class="card mb-3 card-body bg-light p-1">
-				<div class="card-body pb-0 pt-1 pl-1">
-					<p class="float-right m-0 mt-2">
+				class="col-4 p-1">
+				<div class="card bg-light h-100">
+				<div class="card-header pl-2 pr-1 pt-2 pb-0">
+					<h3>${discussionOnCourseProject.courseProject.project.title}</h3>
+				</div>
+				<div class="card-body p-2">
+					<p class="mt-2 mb-3">
 						${message:team-label}: <span t:type="loop"
 							t:source="discussionOnCourseProject.courseProject.project.responsibilities"
-							t:value="responsibility" class="border p-1 ml-2"> <span
+							t:value="responsibility" class="p-1 ml-1"> <span
 							t:type="loop" t:source="responsibility.team.teamMembers"
 							t:value="teamMember"> ${teamMember.person.firstName}
@@ -48,7 +77,6 @@
 						</span>
 					</p>
-					<h3>${discussionOnCourseProject.courseProject.project.title}</h3>
-					<p>
-						<a class="btn btn-primary" t:type="pagelink"
+					<p class="text-center">
+						<a class="btn btn-secondary" t:type="pagelink"
 							t:page="user/DiscussProject"
 							t:context="discussionOnCourseProject"><svg t:type="svgicon"
@@ -58,5 +86,8 @@
 
 				</div>
+				</div>
 			</div>
+			</div>
+
 		</div>
 	</div>
