Index: assignment-api/api/src/java/org/sakaiproject/assignment/api/model/PeerAssessmentItem.java =================================================================== --- assignment-api/api/src/java/org/sakaiproject/assignment/api/model/PeerAssessmentItem.java (revision 133768) +++ assignment-api/api/src/java/org/sakaiproject/assignment/api/model/PeerAssessmentItem.java (revision 133769) @@ -71,4 +71,8 @@ public void setSubmitted(boolean submitted) { this.submitted = submitted; } + + public boolean isDraft(){ + return !submitted && (getScore() != null || (getComment() != null && !"".equals(getComment().trim()))); + } } Index: assignment-bundles/resources/assignment.properties =================================================================== --- assignment-bundles/resources/assignment.properties (revision 133768) +++ assignment-bundles/resources/assignment.properties (revision 133769) @@ -902,3 +902,10 @@ peerassessment.restored=Successfully restored review for student's submission peerassessment.peerReviewDueDate=Peer review due date: peerassessment.peerGradeInfo=You are able to accept or override the averaged peer review grade in this section. Once this grade is released, this is the grade that will appear in the gradebook. +peerassessment.submissionReq=Assignment submission required +peerassessment.notOpen=Not open +peerassessment.notStarted=Not started +peerassessment.incomplete=Incomplete +peerassessment.submitted=Submitted +peerassessment.student=Student {0} +peerassessment.draftInProgress=Draft - in progress \ No newline at end of file Index: assignment-tool/tool/src/java/org/sakaiproject/assignment/tool/AssignmentAction.java =================================================================== --- assignment-tool/tool/src/java/org/sakaiproject/assignment/tool/AssignmentAction.java (revision 133768) +++ assignment-tool/tool/src/java/org/sakaiproject/assignment/tool/AssignmentAction.java (revision 133769) @@ -2049,27 +2049,14 @@ context.put("assignments", assignments.iterator()); // allow add assignment? - Map peerAssessmentItemsMap = new HashMap(); + Map> peerAssessmentItemsMap = new HashMap>(); boolean allowAddAssignment = AssignmentService.allowAddAssignment(contextString); if(!allowAddAssignment){ //this is the same requirement for displaying the assignment link for students //now lets create a map for peer reviews for each eligible assignment for(Assignment assignment : (List) assignments){ - if(assignment.getAllowPeerAssessment() && assignment.isPeerAssessmentOpen()){ - List items = assignmentPeerAssessmentService.getPeerAssessmentItems(assignment.getId(), UserDirectoryService.getCurrentUser().getId()); - if(items == null || items.size() == 0){ - //something is wrong here, there are no peer assessments for this user, set to -1 for UI to know - peerAssessmentItemsMap.put(assignment.getId(), -1); - }else{ - Integer count = 0; - //only count peer review items that the student hasn't submitted - for(PeerAssessmentItem item : items){ - if(!item.isSubmitted()){ - count++; - } - } - peerAssessmentItemsMap.put(assignment.getId(), count); - } + if(assignment.getAllowPeerAssessment() && (assignment.isPeerAssessmentOpen() || assignment.isPeerAssessmentClosed())){ + peerAssessmentItemsMap.put(assignment.getId(), assignmentPeerAssessmentService.getPeerAssessmentItems(assignment.getId(), UserDirectoryService.getCurrentUser().getId())); } } } Index: assignment-tool/tool/src/webapp/vm/assignment/chef_assignments_student_review_edit.vm =================================================================== --- assignment-tool/tool/src/webapp/vm/assignment/chef_assignments_student_review_edit.vm (revision 133768) +++ assignment-tool/tool/src/webapp/vm/assignment/chef_assignments_student_review_edit.vm (revision 133769) @@ -93,7 +93,7 @@ - $tlang.getString("gen.reviewing"):  #if(!$view_only && $assignment.getPeerAssessmentAnonEval()) - $tlang.getString("gen.student") #$!anonNumber + $tlang.getString("gen.student") #else #set ($submitterNames = "") ## replace it with submitter sort names Index: assignment-tool/tool/src/webapp/vm/assignment/chef_assignments_list_assignments.vm =================================================================== --- assignment-tool/tool/src/webapp/vm/assignment/chef_assignments_list_assignments.vm 2014-08-01 14:34:41.000000000 +0200 +++ assignment-tool/tool/src/webapp/vm/assignment/chef_assignments_list_assignments.vm 2014-08-01 14:41:27.000000000 +0200 @@ -504,27 +504,12 @@ $!assignment.getStatus() #else #if ($!submission) - #if($assignment.isPeerAssessmentOpen()) - ##student has submitted, check if the assignment is peer assessment - ##and if the time is available - #set($totalReviews = $peerAssessmentItemsMap.get($assignment.id)) - #if($totalReviews == -1) - ##something is wrong here, don't show anything to the user, just show the peer review start date (could be waiting for the job to run) - $tlang.getString("peerassessment.reviewStarts") $!assignment.closeTime.toStringLocalFull() - #elseif($totalReviews == 0) - ##user has submitted every review already - $tlang.getString("gen.peerreview") ($tlang.getString("gen.subm4")) - #else - ##user still has at least one review to submit - $tlang.getString("gen.peerreview") ($totalReviews) -  ($tlang.getString("gen.due") $!assignment.peerAssessmentPeriod.toStringLocalFull()) - #end - #elseif ($assignment.isPeerAssessmentPending() && $submission.getSubmitted()) - $tlang.getString("peerassessment.reviewStarts") $!assignment.closeTime.toStringLocalFull() - #else - $submission.getStatus() - #end - + $submission.getStatus() + #if ($submission.getSubmitted()) + #if ($assignment.getDueTime() && $submission.getTimeSubmitted() && $submission.getTimeSubmitted().after($assignment.getDueTime())) + $tlang.getString("gen.late2") + #end + #end #else $tlang.getString("gen.notsta") #end @@ -593,6 +578,167 @@ #end + + #if($assignment.getAllowPeerAssessment() && !($allowAddAssignment && $!view.equals('lisofass1'))) + #set($reviews = $peerAssessmentItemsMap.get($assignment.id)) + + + + + + + + + $tlang.getString("peerAssessmentName") + + + #if ($!groups && $!allowGradeSubmission) + + + #end + + + #if ($!submission) + #if($assignment.isPeerAssessmentPending()) + + #if ($submission.getSubmitted()) + $tlang.getString("peerassessment.notOpen") + #else + + $tlang.getString("peerassessment.submissionReq") + #end + #else + + + #if(!$reviews || $reviews.size() == 0) + + $tlang.getString("peerassessment.notOpen") + #else + #set($completedReviews = true) + #set($anyDraftReviews = false) + #set($anyCompleteReviews = false) + #foreach ($review in $reviews) + #if(!$review.isSubmitted()) + #set($completedReviews = false) + #if($review.isDraft()) + #set($anyDraftReviews = true) + #end + #else + #set($anyCompleteReviews = true) + #end + #end + #if($completedReviews) + + $tlang.getString("peerassessment.submitted") + #elseif($anyDraftReviews || $anyCompleteReviews) + + $tlang.getString("peerassessment.incomplete") + #else + + $tlang.getString("peerassessment.notStarted") + #end + #end + #end + #else + + $tlang.getString("peerassessment.submissionReq") + #end + + + + $!assignment.closeTime.toStringLocalFull() + + + + $!assignment.peerAssessmentPeriod.toStringLocalFull() + + + #if ($!allowGradeSubmission) + #if ($!view.equals('lisofass1')) + #if ($!showNumSubmissionColumn) + + + #end + #end + #end + #if ($withGrade && $!allowGradeSubmission) + + + #end + #if ($!allowRemoveAssignment && $!view.equals('lisofass1')) + + + #end + + + + + + + + + #if($review.isSubmitted()) + $tlang.getFormattedMessage("peerassessment.student", $reviewCount)  + #else + + $tlang.getFormattedMessage("peerassessment.student", $reviewCount) + + #end + + + #if ($!groups && $!allowGradeSubmission) + + + #end + + + #if($review.isSubmitted()) + $tlang.getString("peerassessment.submitted") + #elseif($review.isDraft()) + $tlang.getString("peerassessment.draftInProgress") + #else + $tlang.getString("peerassessment.notStarted") + #end + + + + + + + + + #if ($!allowGradeSubmission) + #if ($!view.equals('lisofass1')) + #if ($!showNumSubmissionColumn) + + + #end + #end + #end + #if ($withGrade && $!allowGradeSubmission) + + + #end + #if ($!allowRemoveAssignment && $!view.equals('lisofass1')) + + + #end + + #end + #end + + #end #end #if ($!allowRemoveAssignment && $!view.equals('lisofass1'))