diff --git a/access/access-impl/impl/pom.xml b/access/access-impl/impl/pom.xml index f11887697b94..7a8c8217db48 100644 --- a/access/access-impl/impl/pom.xml +++ b/access/access-impl/impl/pom.xml @@ -43,7 +43,6 @@ commons-fileupload commons-fileupload - 1.1.1 org.sakaiproject.velocity diff --git a/assignment/api/src/java/org/sakaiproject/assignment/api/AssignmentService.java b/assignment/api/src/java/org/sakaiproject/assignment/api/AssignmentService.java index e57c26974130..8fa835c4d328 100644 --- a/assignment/api/src/java/org/sakaiproject/assignment/api/AssignmentService.java +++ b/assignment/api/src/java/org/sakaiproject/assignment/api/AssignmentService.java @@ -71,7 +71,11 @@ public interface AssignmentService extends EntityProducer { */ public List allowReceiveSubmissionNotificationUsers(String context); - Collection getGroupsAllowRemoveAssignment(String context); + /** + * @param context + * @return + */ + public Collection getGroupsAllowRemoveAssignment(String context); /** * Check permissions for adding an Assignment. @@ -116,7 +120,7 @@ public interface AssignmentService extends EntityProducer { * Describes the portlet context - generated with DefaultId.getChannel(). * @return The Collection (Group) of groups defined for the context of this site that the end user has add assignment permissions in, empty if none. */ - Collection getGroupsAllowAddAssignment(String context); + public Collection getGroupsAllowAddAssignment(String context); /** * Get the collection of Groups defined for the context of this site that the end user has grade assignment permissions in. @@ -125,7 +129,7 @@ public interface AssignmentService extends EntityProducer { * Describes the portlet context - generated with DefaultId.getChannel(). * @return The Collection (Group) of groups defined for the context of this site that the end user has grade assignment permissions in, empty if none. */ - Collection getGroupsAllowGradeAssignment(String context, String assignmentReference); + public Collection getGroupsAllowGradeAssignment(String context, String assignmentReference); /** * Check permissions for updating an Assignment. @@ -184,7 +188,7 @@ public interface AssignmentService extends EntityProducer { * @param context the context string * @return the list of user (ids) */ - public List allowAddAnySubmissionUsers(String context); + public List allowAddAnySubmissionUsers(String context); /** * Get the List of Users who can add assignment @@ -193,7 +197,7 @@ public interface AssignmentService extends EntityProducer { * Describes the portlet context - generated with DefaultId.getChannel(). * @return the List (User) of users who can add assignment */ - public List allowAddAssignmentUsers(String context); + public List allowAddAssignmentUsers(String context); /** * Check permissions for reading a Submission. @@ -317,11 +321,25 @@ public interface AssignmentService extends EntityProducer { */ public void removeSubmission(AssignmentSubmission submission) throws PermissionException; - void updateAssignment(Assignment assignment) throws PermissionException; + /** + * @param assignment + * @throws PermissionException + */ + public void updateAssignment(Assignment assignment) throws PermissionException; - void updateSubmission(AssignmentSubmission submission) throws PermissionException; + /** + * @param submission + * @throws PermissionException + */ + public void updateSubmission(AssignmentSubmission submission) throws PermissionException; - Assignment getAssignment(Reference reference) throws IdUnusedException, PermissionException; + /** + * @param reference + * @return + * @throws IdUnusedException + * @throws PermissionException + */ + public Assignment getAssignment(Reference reference) throws IdUnusedException, PermissionException; /** * Access the Assignment with the specified id. @@ -404,7 +422,8 @@ public interface AssignmentService extends EntityProducer { * The User who's Submission you would like. * @return AssignmentSubmission The user's submission for that Assignment, or null if one does not exist. */ - public AssignmentSubmission getSubmission(List submissions, User person); + @Deprecated + public AssignmentSubmission getSubmission(List submissions, User person); /** * Get the submissions for an assignment. @@ -415,14 +434,22 @@ public interface AssignmentService extends EntityProducer { */ public Set getSubmissions(Assignment assignment); - String getAssignmentStatus(String assignmentId); + /** + * @param assignmentId + * @return + */ + public String getAssignmentStatus(String assignmentId); - String getSubmissionStatus(String submissionId); + /** + * @param submissionId + * @return + */ + public String getSubmissionStatus(String submissionId); /** * Return a sorted list of users representing a group. */ - public List getSortedGroupUsers(Group g); + public List getSortedGroupUsers(Group g); /** * Get the number of submissions which has been submitted. @@ -507,15 +534,30 @@ public interface AssignmentService extends EntityProducer { /** * Whether a specific user can submit + * @param context + * @param a + * @param userId + * @return */ public boolean canSubmit(String context, Assignment a, String userId); /** * Whether the current user can submit + * @param context + * @param a + * @return */ public boolean canSubmit(String context, Assignment a); + /** + * @param searchFilterOnly + * @param allOrOneGroup + * @param searchString + * @param aRef + * @param contextString + * @return + */ public Collection getSubmitterGroupList(String searchFilterOnly, String allOrOneGroup, String searchString, String aRef, String contextString); /** @@ -547,9 +589,13 @@ public interface AssignmentService extends EntityProducer { */ public Map getSubmitterMap(String searchFilterOnly, String allOrOneGroup, String search, String aRef, String contextString); + /** + * @param accentedString + * @return + */ public String escapeInvalidCharsEntry(String accentedString); - /* + /** * If the assignment uses anonymous grading returns true, else false * * Params: AssignmentSubmission s @@ -563,7 +609,7 @@ public interface AssignmentService extends EntityProducer { */ public Integer getScaleFactor(); - /* + /** * This method allows you to know if there are submissions submitted * * Params: AssignmentSubmission s @@ -602,17 +648,45 @@ public String getDeepLinkWithPermissions(String context, String assignmentId, bo */ public String getCsvSeparator(); - String getXmlAssignment(Assignment assignment); + /** + * @param assignment + * @return + */ + public String getXmlAssignment(Assignment assignment); - String getGradeForUserInGradeBook(String assignmentId, String userId); + /** + * @param assignmentId + * @param userId + * @return + */ + public String getGradeForUserInGradeBook(String assignmentId, String userId); - String getGradeDisplay(String grade, Assignment.GradeType typeOfGrade, Integer scaleFactor); + /** + * @param grade + * @param typeOfGrade + * @param scaleFactor + * @return + */ + public String getGradeDisplay(String grade, Assignment.GradeType typeOfGrade, Integer scaleFactor); - String getMaxPointGradeDisplay(int factor, int maxGradePoint); + /** + * @param factor + * @param maxGradePoint + * @return + */ + public String getMaxPointGradeDisplay(int factor, int maxGradePoint); - Optional getSubmissionSubmittee(AssignmentSubmission submission); + /** + * @param submission + * @return + */ + public Optional getSubmissionSubmittee(AssignmentSubmission submission); - Collection getSubmissionSubmittersAsUsers(AssignmentSubmission submission); + /** + * @param submission + * @return + */ + public Collection getSubmissionSubmittersAsUsers(AssignmentSubmission submission); /** * peer assessment is set for this assignment and the current time @@ -637,9 +711,15 @@ public String getDeepLinkWithPermissions(String context, String assignmentId, bo */ public boolean isPeerAssessmentClosed(Assignment assignment); - void resetAssignment(Assignment assignment); + /** + * @param assignment + */ + public void resetAssignment(Assignment assignment); - void postReviewableSubmissonAttachments(String submissionId); + /** + * @param submissionId + */ + public void postReviewableSubmissonAttachments(String submissionId); /** * This will return the internationalized title of the tool. diff --git a/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java b/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java index 8d7e3d5a5464..65a6c6e11c18 100644 --- a/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java +++ b/assignment/impl/src/java/org/sakaiproject/assignment/impl/AssignmentServiceImpl.java @@ -452,7 +452,7 @@ public boolean allowGetAssignment(String context) { } @Override - public Collection getGroupsAllowAddAssignment(String context) { + public Collection getGroupsAllowAddAssignment(String context) { return getGroupsAllowFunction(SECURE_ACCESS_ASSIGNMENT, context, null); } @@ -472,7 +472,7 @@ public boolean allowRemoveAssignment(String assignmentReference) { } @Override - public Collection getGroupsAllowRemoveAssignment(String context) { + public Collection getGroupsAllowRemoveAssignment(String context) { return getGroupsAllowFunction(SECURE_REMOVE_ASSIGNMENT, context, null); } @@ -546,7 +546,7 @@ public List allowGradeAssignmentUsers(String assignmentReference) { } @Override - public List allowAddAnySubmissionUsers(String context) { + public List allowAddAnySubmissionUsers(String context) { List rv = new ArrayList<>(); try { @@ -568,7 +568,7 @@ public List allowAddAnySubmissionUsers(String context) { } @Override - public List allowAddAssignmentUsers(String context) { + public List allowAddAssignmentUsers(String context) { String resourceString = AssignmentReferenceReckoner.reckoner().context(context).reckon().getReference(); return securityService.unlockUsers(SECURE_ADD_ASSIGNMENT, resourceString); } @@ -1220,7 +1220,7 @@ private Map getUserSubmissionMap(Assignment assignme // } @Override - public AssignmentSubmission getSubmission(List submissions, User person) { + public AssignmentSubmission getSubmission(List submissions, User person) { throw new UnsupportedOperationException("Method is deprecated, remove"); } diff --git a/assignment/tool/src/java/org/sakaiproject/assignment/tool/AssignmentAction.java b/assignment/tool/src/java/org/sakaiproject/assignment/tool/AssignmentAction.java index 54b115bf45e2..6d7be26f2125 100644 --- a/assignment/tool/src/java/org/sakaiproject/assignment/tool/AssignmentAction.java +++ b/assignment/tool/src/java/org/sakaiproject/assignment/tool/AssignmentAction.java @@ -1054,6 +1054,7 @@ public String buildMainPanelContext(VelocityPortlet portlet, Context context, Ru context.put("tlang", rb); context.put("dateFormat", getDateFormatString()); context.put("cheffeedbackhelper", this); + context.put("service", assignmentService); String contextString = (String) state.getAttribute(STATE_CONTEXT_STRING); @@ -1383,7 +1384,11 @@ private String build_student_view_submission_context(VelocityPortlet portlet, Co if (assignment != null) { context.put("assignment", assignment); context.put("canSubmit", assignmentService.canSubmit(contextString, assignment)); - // SAK-26322 + + Map assignmentAttachmentReferences = new HashMap<>(); + assignment.getAttachments().forEach(r -> assignmentAttachmentReferences.put(r, entityManager.newReference(r))); + context.put("assignmentAttachmentReferences", assignmentAttachmentReferences); + if (assignment.getContentReview()) { Map properties = assignment.getProperties(); context.put("plagiarismNote", rb.getFormattedMessage("gen.yoursubwill", contentReviewService.getServiceName())); @@ -1465,7 +1470,6 @@ private String build_student_view_submission_context(VelocityPortlet portlet, Co assignment_resubmission_option_into_context(context, state); if (assignment.getIsGroup()) { - context.put("assignmentService", assignmentService); // get current site Collection groups = null; Site st = null; @@ -1890,11 +1894,15 @@ protected String build_student_preview_submission_context(VelocityPortlet portle Assignment assignment = getAssignment(aReference, "build_student_preview_submission_context", state); if (assignment != null) { context.put("assignment", assignment); + context.put("assignmentReference", AssignmentReferenceReckoner.reckoner().assignment(assignment).reckon().getReference()); + context.put("typeOfGradeString", getTypeOfGradeString(assignment.getTypeOfGrade())); + context.put("canSubmit", assignmentService.canSubmit((String) state.getAttribute(STATE_CONTEXT_STRING), assignment)); AssignmentSubmission submission = getSubmission(aReference, user, "build_student_preview_submission_context", state); - context.put("submission", submission); - - context.put("canSubmit", assignmentService.canSubmit((String) state.getAttribute(STATE_CONTEXT_STRING), assignment)); + if (submission != null) { + context.put("submission", submission); + context.put("submissionReference", AssignmentReferenceReckoner.reckoner().submission(submission).reckon().getReference()); + } setScoringAgentProperties(context, assignment, submission, false); @@ -1916,7 +1924,6 @@ protected String build_student_preview_submission_context(VelocityPortlet portle context.put("returnedFeedback", Boolean.TRUE); state.removeAttribute(RETURNED_FEEDBACK); } - } context.put("text", state.getAttribute(PREVIEW_SUBMISSION_TEXT)); @@ -1929,8 +1936,7 @@ protected String build_student_preview_submission_context(VelocityPortlet portle return template + TEMPLATE_STUDENT_PREVIEW_SUBMISSION; } // build_student_preview_submission_context - private void canViewAssignmentIntoContext(Context context, - Assignment assignment, AssignmentSubmission submission) { + private void canViewAssignmentIntoContext(Context context, Assignment assignment, AssignmentSubmission submission) { boolean canViewModelAnswer = assignmentSupplementItemService.canViewModelAnswer(assignment, submission); context.put("allowViewModelAnswer", Boolean.valueOf(canViewModelAnswer)); if (canViewModelAnswer) { @@ -1998,17 +2004,32 @@ protected String build_student_view_grade_context(VelocityPortlet portlet, Conte addDecoUrlMapToContext(session, context, false); SecurityAdvisor asgnAdvisor = pushSecurityAdvisor(session, "assignment.security.advisor", false); - AssignmentSubmission submission = null; - Assignment assignment = null; String submissionId = (String) state.getAttribute(VIEW_GRADE_SUBMISSION_ID); - submission = getSubmission(submissionId, "build_student_view_grade_context", state); + AssignmentSubmission submission = getSubmission(submissionId, "build_student_view_grade_context", state); + Assignment assignment = null; if (submission != null) { assignment = submission.getAssignment(); context.put("assignment", assignment); + + context.put("typeOfGradeString", getTypeOfGradeString(assignment.getTypeOfGrade())); if (assignment.getTypeOfSubmission() == Assignment.SubmissionType.NON_ELECTRONIC_ASSIGNMENT_SUBMISSION) { context.put("nonElectronicType", Boolean.TRUE); } + + context.put("users", assignmentService.getSubmissionSubmittersAsUsers(submission)); + + Map assignmentAttachmentReferences = new HashMap<>(); + assignment.getAttachments().forEach(r -> assignmentAttachmentReferences.put(r, entityManager.newReference(r))); + context.put("assignmentAttachmentReferences", assignmentAttachmentReferences); + context.put("submission", submission); + Map submissionAttachmentReferences = new HashMap<>(); + submission.getAttachments().forEach(r -> submissionAttachmentReferences.put(r, entityManager.newReference(r))); + context.put("submissionAttachmentReferences", submissionAttachmentReferences); + + Map submissionFeedbackAttachmentReferences = new HashMap<>(); + submission.getFeedbackAttachments().forEach(r -> submissionFeedbackAttachmentReferences.put(r, entityManager.newReference(r))); + context.put("submissionFeedbackAttachmentReferences", submissionFeedbackAttachmentReferences); if (assignment.getIsGroup()) { String grade_override = (StringUtils.trimToNull(assignment.getProperties().get(AssignmentServiceConstants.PROP_ASSIGNMENT_ASSOCIATE_GRADEBOOK_ASSIGNMENT)) != null) && (assignment.getTypeOfGrade() == SCORE_GRADE_TYPE) ? @@ -2119,7 +2140,6 @@ private String build_list_assignments_context(VelocityPortlet portlet, Context c String contextString = (String) state.getAttribute(STATE_CONTEXT_STRING); context.put("contextString", contextString); context.put("user", state.getAttribute(STATE_USER)); - context.put("service", assignmentService); context.put("AuthzGroupService", authzGroupService); context.put("LongObject", Instant.now().toEpochMilli()); context.put("currentTime", Instant.now()); @@ -3140,7 +3160,6 @@ protected String build_instructor_grade_submission_context(VelocityPortlet portl context.put("submissionTypeTable", submissionTypeTable()); context.put("instructorAttachments", state.getAttribute(ATTACHMENTS)); context.put("contentTypeImageService", contentTypeImageService); - context.put("service", assignmentService); // names context.put("name_grade_assignment_id", GRADE_SUBMISSION_ASSIGNMENT_ID); @@ -3771,7 +3790,6 @@ private String build_instructor_preview_grade_submission_context(VelocityPortlet context.put("user", user); context.put("submissionTypeTable", submissionTypeTable()); context.put("contentTypeImageService", contentTypeImageService); - context.put("service", assignmentService); // filter the feedback text for the instructor comment and mark it as red String feedbackText = (String) state.getAttribute(GRADE_SUBMISSION_FEEDBACK_TEXT); @@ -3821,7 +3839,6 @@ private String build_instructor_grade_assignment_context(VelocityPortlet portlet return template + TEMPLATE_INSTRUCTOR_VIEW_STUDENTS_DETAILS; } - context.put("service", assignmentService); context.put("user", state.getAttribute(STATE_USER)); // sorting related fields @@ -3998,11 +4015,7 @@ private String build_instructor_grade_assignment_context(VelocityPortlet portlet context.put("submissionTypeTable", submissionTypeTable()); context.put("attachments", state.getAttribute(ATTACHMENTS)); - - context.put("contentTypeImageService", contentTypeImageService); - context.put("service", assignmentService); - context.put("assignment_expand_flag", state.getAttribute(GRADE_ASSIGNMENT_EXPAND_FLAG)); context.put("submission_expand_flag", state.getAttribute(GRADE_SUBMISSION_EXPAND_FLAG)); @@ -4485,8 +4498,6 @@ private String build_student_review_edit_context(VelocityPortlet portlet, Contex context.put("submissionTypeTable", submissionTypeTable()); context.put("instructorAttachments", state.getAttribute(ATTACHMENTS)); context.put("contentTypeImageService", contentTypeImageService); - context.put("service", assignmentService); - // names context.put("name_grade_assignment_id", GRADE_SUBMISSION_ASSIGNMENT_ID); context.put("name_feedback_comment", GRADE_SUBMISSION_FEEDBACK_COMMENT); context.put("name_feedback_text", GRADE_SUBMISSION_FEEDBACK_TEXT); @@ -4673,8 +4684,6 @@ private String build_instructor_report_submissions(VelocityPortlet portlet, Cont pagingInfoToContext(state, context); - context.put("service", assignmentService); - addAdditionalNotesToContext(submissions, context, state); String template = getContext(data).get("template"); diff --git a/assignment/tool/src/webapp/vm/assignment/chef_assignments_list_assignments.vm b/assignment/tool/src/webapp/vm/assignment/chef_assignments_list_assignments.vm index b5c146a5791a..449eb4adce74 100644 --- a/assignment/tool/src/webapp/vm/assignment/chef_assignments_list_assignments.vm +++ b/assignment/tool/src/webapp/vm/assignment/chef_assignments_list_assignments.vm @@ -205,9 +205,10 @@ ## get submission instance only if 1) not an instructor type user or 2) is an instructor type user but in student view #set($submission=false) #set($submission=$service.getSubmission($assignment.Id, $user)) - #set($submissionReturned=$!submission.returned) - #set($submissionSubmitted=$!submission.submitted) - #set($submissionProperties=$!submission.getProperties()) + #set($submissionReference=$service.submissionReference($assignment.Context, $submission.Id, $assignment.Id)) + #set($submissionReturned=$!submission.Returned) + #set($submissionSubmitted=$!submission.Submitted) + #set($submissionProperties=$!submission.Properties) #set($submitTime=false) #set ($submitTime = $submission.DateSubmitted) #end diff --git a/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_preview_submission.vm b/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_preview_submission.vm index 397b28b4386b..bb3e5daf4be0 100644 --- a/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_preview_submission.vm +++ b/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_preview_submission.vm @@ -1,192 +1,196 @@
+

+ $tlang.getString("gen.assig") - $tlang.getString("gen.pre") +

-

- $tlang.getString("gen.assig") - $tlang.getString("gen.pre") -

- - #set($allowUpdateAssignment=$!service.allowUpdateAssignment($assignment.Reference)) - #if ($alertMessage)
$tlang.getString("gen.alert") $alertMessage
#end - - - - - - - - + + #end + ## show alert when assignment is modified and the modified date is after its open date + #set($newAssignment="false") + #set($newAssignment=$assignment.getProperties().get("newAssignment")) + #if ($!assignment.DateModified.after($assignment.OpenDate) && !$!newAssignment.equalsIgnoreCase("true")) + + + + + #end +
- $tlang.getString("gen.title") - - #assignmentTitleIcon($assignment) - $validator.escapeHtml($assignment.getTitle()) -
- $tlang.getString("gen.due"): - - - #if ($assignment.getContent().getHideDueDate() != "true" || $!allowUpdateAssignment) - $!assignment.dueTime.toStringLocalFull() + #set($allowUpdateAssignment = $!service.allowUpdateAssignment($assignmentReference)) + #if ($alertMessage) +
$tlang.getString("gen.alert") $alertMessage
+
#end + + + + + + + + - - #if($assignment.getContent().getTypeOfSubmission() != 4) - ##resubmit number - #if($!resubmitNumber) - - - - - #end - ## resubmit close time - #if ($!resubmitCloseTime) - - - - - #end - #end - #if ($withGrade) - - - + + #if($assignment.TypeOfSubmission.ordinal() != 4) + ##resubmit number + #if($!resubmitNumber) + + + + + #end + ## resubmit close time + #if ($!resubmitCloseTime) + + + + + #end + #end + #if ($withGrade) + + + - - - - + + + + - - #end - ##show alert when assignment is modified and the modified date is after its open date - #set($newAssignment="false") - #set($newAssignment=$assignment.getProperties().getProperty("newAssignment")) - #if ($assignment.getTimeLastModified().after($assignment.getOpenTime()) && !$!newAssignment.equalsIgnoreCase("true")) - - - - - #end -
+ $tlang.getString("gen.title") + + #assignmentTitleIcon($assignment) + $validator.escapeHtml($assignment.Title) +
+ $tlang.getString("gen.due"): + + #if (!$!assignment.HideDueDate || $!allowUpdateAssignment) + $!assignment.DueDate.toString() #end -
- $tlang.getString("allow.resubmit.number") - - $resubmitNumber -
- $tlang.getString("allow.resubmit.closeTime") - - $resubmitCloseTime -
- $tlang.getString("gen.status") - - #if ($!submission) - $!submission.Status +
+ $tlang.getString("allow.resubmit.number") + + $resubmitNumber +
+ $tlang.getString("allow.resubmit.closeTime") + + $resubmitCloseTime +
+ $tlang.getString("gen.status") + + #if ($!submission) + $!service.getSubmissionStatus($!submission) #else - $tlang.getString("gen.notsta") - #end -
- $tlang.getString("gen.grasca") - - #set ($gradeScale = $assignment.getContent().getTypeOfGradeString()) - $gradeScale - #if ($gradeTypeTable.get($assignment.getContent().getTypeOfGrade()) == $!tlang.getString("points")) - ($tlang.getString("stupresub.max") $assignment.getContent().getMaxGradePointDisplay()) - #end - - - #if($scoringComponentEnabled) - #parse ("/vm/assignment/chef_assignments_scoring_agent.vm") - #end + $tlang.getString("gen.notsta") + #end +
+ $tlang.getString("gen.grasca") + + #set ($gradeScale = $!typeOfGradeString) + $gradeScale + #if ($!assignment.TypeOfGrade.ordinal() == 3) + ($tlang.getString("stupresub.max") $!service.getMaxPointGradeDisplay($!assignment.ScaleFactor, $!assignment.MaxGradePoint)) + #end + + ## for grading via an external scoring service, if enabled for an associated gradebook item + #if($scoringComponentEnabled) + #parse ("/vm/assignment/chef_assignments_scoring_agent.vm") + #end -
- $tlang.getString("gen.modbyins") - - $assignment.getTimeLastModified().toStringLocalFull() -
-

- $tlang.getString("gen.submission") -

- #if ($!text.length()>0) -
- $validator.escapeHtmlFormattedText($text) -
- #end - #set ($size = 0) - #set ($props = false) - #foreach ($attachment in $attachments) - #set ($props = $attachment.Properties) - #if ($!props) - #set ($size = $size + 1) - #end - #end - #if ($size == 0) - ## $tlang.getString("gen.noatt") - #else -

- #if ($assignment.getContent().getTypeOfSubmission() == 5) +

+ $tlang.getString("gen.modbyins") + + $assignment.DateModified.toString() +
+

+ $tlang.getString("gen.submission") +

+ #if ($!text.length() > 0) +
+ $validator.escapeHtmlFormattedText($text) +
+ #end + + #set ($size = 0) + #set ($props = false) + #foreach ($attachment in $attachments) + #set ($props = $attachment.Properties) + #if ($!props) + #set ($size = $size + 1) + #end + #end + #if ($size > 0) +

+ #if ($!assignment.TypeOfSubmission.ordinal() == 5) $tlang.getString("gen.att.single") #else - $tlang.getString("gen.att") - #end -

- - #end -

- #if ($assignment.getContent().honorPledge!=1) - #if ($honor_pledge_yes.equals("true")) -

- - -

- #else -
- $tlang.getString("gen.honple2val") -
-

- - -

+ $tlang.getString("gen.att") + #end + + + #end - #end - ## $tlang.getString("gen.title") - #end -
- - - - ## submission information - #set($timeSubmitted=false) - #set($timeSubmitted=$submission.TimeSubmitted) - #set($submitted=false) - #set($submitted=$submission.getSubmitted()) -
- #if (!$!canSubmit) - - - - #else - #if ($submitted && $!timeSubmitted) - #set($name=$tlang.getString("resubmit")) - #else - #set($name=$tlang.getString("gen.subm3")) - #end - - - - #end -
- -
+

+ #if ($!assignment.HonorPledge) + #if ($honor_pledge_yes.equals("true")) +

+ +

+ #else +
+ $tlang.getString("gen.honple2val") +
+

+ +

+ + #end + #end +
+ + + + ## submission information +
+ #if (!$!canSubmit) + + + + #else + #if ($!submission.Submitted && $!submission.DateSubmitted) + #set($name=$tlang.getString("resubmit")) + #else + #set($name=$tlang.getString("gen.subm3")) + #end + + + + #end +
+ +
diff --git a/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_view_grade.vm b/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_view_grade.vm index 54981f6f5c4d..341e20f63b5a 100644 --- a/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_view_grade.vm +++ b/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_view_grade.vm @@ -1,513 +1,545 @@
- #set ($assignment = $submission.Assignment) - #if ($taggable) - #if (!$itemHelpers.isEmpty()) - - #end - #end -

- $validator.escapeHtml($assignment.getTitle()) - #if ($!assignment.isGroup() ) - - $tlang.getString("gen.groupassignment") + #if ($taggable) + #if (!$itemHelpers.isEmpty()) + + #end + #end +

$validator.escapeHtml($assignment.Title) + #if ($!assignment.IsGroup) + - $tlang.getString("gen.groupassignment") + #end + #if ($submission.Returned) + - $tlang.getString("gen.returned") + #elseif (!$submission.Submitted) + - $!service.getSubmissionStatus($!submission.Id) + #elseif (!$!nonElectronicType && $!submission.UserSubmission) + - $tlang.getString("gen.subm4") + #end +

+ + #if ($alertMessage) +
$tlang.getString("gen.alert") $alertMessage
+ #end + + #set($submitTime=false) + #set($submitTime=$submission.DateSubmitted) + #set($returnTime=false) + #set($returnTime=$submission.DateReturned) + + + + + + #if ($!assignment.IsGroup) + + + + + #end + + + + + #if ($!assignment.TypeOfSubmission.ordinal() != 4) + ## exclude non-electronic type of submission + + + + + #end + #if ($withGrade) + #set ($gradeScale = $!typeOfGradeString) + #if ($!submission.Graded && $!submission.GradeReleased) + + + + + #else + + + + + #end + #end - #if ($alertMessage)
$tlang.getString("gen.alert") $alertMessage
#end - #set($submitTime=false) - #set($submitTime=$submission.getTimeSubmitted()) - #set($returnTime=false) - #set($returnTime=$submission.getTimeReturned()) -
+ $tlang.getString("gen.title") + + #assignmentTitleIcon($assignment) $validator.escapeHtml($assignment.title) +
+ $tlang.getString('gen.group') + + #set($aGroup = $!site.getGroup($submission.GroupId)) + #if ($aGroup) + $aGroup.Title + #else + $tlang.getString("group.submission.not.found") + #end +
+ #if ($!assignment.IsGroup) + $tlang.getString("gen.students") + #else + $tlang.getString("gen.student") + #end + + #if (!$privateView) + #foreach ($user in $!users) + $validator.escapeHtml($user.DisplayName)
+ #end + #end +
+ $tlang.getString("gen.subm5") + + ## get submit time + #if ($!submitTime) + $submitTime.toString() + #end +
+
+ $tlang.getString("gen.gra") + + + #if ($!assignment.TypeOfGrade.ordinal() != 1) + #if ($!override) + $override + #else + $!service.getGradeDisplay($!submission.Grade, $!assignment.TypeOfGrade, $!assignment.ScaleFactor) + #end + #else + $tlang.getString("gen.nograd") + #end + #if ($!assignment.TypeOfGrade.ordinal() == 3) + ($tlang.getString("grade.max") $!service.getMaxPointGradeDisplay($!assignment.ScaleFactor, $!assignment.MaxGradePoint)) + + ## for grading via an external scoring service, if enabled for an associated gradebook item + #if($scoringComponentEnabled) + #parse ("/vm/assignment/chef_assignments_scoring_agent.vm") + #end + #end + +
+ $tlang.getString("gen.grasca") + + $gradeScale + #if ($!assignment.TypeOfGrade.ordinal() == 3) + ($tlang.getString("grade.max") $!assignment.MaxGradePoint) + + ## for grading via an external scoring service, if enabled for an associated gradebook item + #if($scoringComponentEnabled) + #parse ("/vm/assignment/chef_assignments_scoring_agent.vm") + #end #end - #if ($submission.Returned) - - $tlang.getString("gen.returned") - #elseif (!$submission.getSubmitted()) - - $submission.getStatus() - #elseif (!$!nonElectronicType && $!submission.isUserSubmission()) - - $tlang.getString("gen.subm4") - #end - +
- - - - - #if ($!assignment.isGroup()) - - - - - #end - - - - - #if ($!submissionType != 4) - ## exclude non-electronic type of submission - - - - - #end - #if ($withGrade) - #set ($gradeScale = $assignment.getContent().getTypeOfGradeString()) - #if ($submission.getGraded() && $submission.getGradeReleased()) - - - - - #else - - - - - #end - #end + ## Display content-review results when appropriate. If the assignment is non-electronic, we show content-review results if they exist + ## (happens when accepted submission type switched from something else) +## TODO Content Review Service +## #if($allowReviewService && $assignment.getContent().AllowReviewService && $assignment.getContent().AllowStudentViewReport && ($assignment.getContent().getTypeOfSubmission() != 4 || $submission.getContentReviewResults().size() > 0)) +## +## +## +## +## +## #end + +## TODO Submission Log +## #if ($!submission && $!submission.getSubmissionLog().size() > 0) +## +## +## +## +## #end +
- $tlang.getString("gen.title") - - #assignmentTitleIcon($assignment) - $validator.escapeHtml($assignment.title) -
- $tlang.getString('gen.group') - - #set($aGroup = $!site.getGroup($submission.getSubmitterId())) - #if ($aGroup) - $aGroup.getTitle() - #else - $tlang.getString("group.submission.not.found") - #end -
- #if ($!assignment.isGroup() ) - $tlang.getString("gen.students") - #else - $tlang.getString("gen.student") - #end - - #if (!$privateView) - #set ($submitters = $submission.submitters) - #foreach ($submitter in $submitters) - $validator.escapeHtml($submitter.DisplayName)
- #end - #end -
- $tlang.getString("gen.subm5") - - ## get submit time - #if($!submitTime)$submitTime.toStringLocalFull()#end
-
- $tlang.getString("gen.gra") - - - #if ($assignment.getContent().TypeOfGrade != 1) - #if($!override)$override#else$submission.GradeDisplay#end - #else - $tlang.getString("gen.nograd") - #end - #if ($gradeTypeTable.get($assignment.getContent().getTypeOfGrade()) == $!tlang.getString("points")) - ($tlang.getString("grade.max") $assignment.getContent().getMaxGradePointDisplay()) - - - #if($scoringComponentEnabled) - #parse ("/vm/assignment/chef_assignments_scoring_agent.vm") - #end - - #end - -
- $tlang.getString("gen.grasca") - - $gradeScale - #if ($gradeTypeTable.get($assignment.getContent().getTypeOfGrade()) == $!tlang.getString("points")) - ($tlang.getString("grade.max") $assignment.getContent().getMaxGradePointDisplay()) - - - #if($scoringComponentEnabled) - #parse ("/vm/assignment/chef_assignments_scoring_agent.vm") - #end - - #end -
+## $reviewServiceName $tlang.getString("review.report") +## +## #if (!$submission) +## $tlang.getString("review.notavail") +## #else +## #set($reviewResults=$submission.ContentReviewResults) +## #if ($reviewResults.size() >= 3) +##
+## +## ## TODO: reconsider for i18n +## $reviewResults.size() $tlang.getString("review.reports") +##
+## +## #end +## #end +##
$tlang.getString("gen.history") +## #foreach ($entry in $submission.getSubmissionLog()) +## $entry
+## #end +##
+## TODO Content Review Service +## #if($assignment.getContent().AllowReviewService && $assignment.getContent().AllowStudentViewReport) +## +## #end + +

+ $tlang.getString("gen.instr") +

+ + #if ($!assignment.Instructions.length() > 0) +
$validator.escapeHtmlFormattedText($!assignment.Instructions)
+ #end + + ## Assignment Attachments + #set ($attachments = $assignment.Attachments) + #if ($attachments) + #set ($size = $attachments.size()) + #if ($size < 1) + $tlang.getString("gen.noatt") + #else +

+ $tlang.getString("gen.addres2") +

+ + #end + #end + + ## Assignment Model Answer + #if($allowViewModelAnswer) + +
+

$validator.escapeHtml($!assignmentModelAnswerItem.getText())

+ #set ($mAttachments = $!assignmentModelAnswerItem.getAttachmentObjectSet()) +
    + #set ($size = 0) + #set ($props = false) + #foreach ($attachment in $!mAttachments) + #set ($props = $attachment.Properties) + #if ($!props) + #set ($size = $size + 1) + #end + #end + #if ($size == 0) + <

    + #if ($!assignment.TypeOfSubmission.ordinal() == 5) + $tlang.getString("gen.noatt.single") + #else + $tlang.getString("gen.noatt") + #end +

    + #else + #foreach ($attachment in $mAttachments) + #set ($props = false) + #set ($props = $attachment.Properties) + #if ($!props) +
  • + #if ($props.getBooleanProperty($props.NamePropIsCollection)) + $tlang.getString( + #else + $tlang.getString( + #end + $validator.escapeHtml($props.getPropertyFormatted($props.NamePropDisplayName)) + #propertyDetails($props) +
  • + #end + #end + #end +
+
+ #end + #if ($!allowReadAssignmentNoteItem) + +
+ $validator.escapeHtml($!assignmentNoteItem.getNote()) +
+ #end + + ## All Purpose + #if ($!allowViewAllPurposeItem) + +
+

$validator.escapeHtml($!assignmentAllPurposeItem.getTitle())

+

$validator.escapeHtml($!assignmentAllPurposeItem.getText())

+ #set ($aAttachments = $!assignmentAllPurposeItem.getAttachmentObjectSet()) +
    + #set ($size = 0) + #set ($props = false) + #foreach ($attachment in $!aAttachments) + #set ($props = $attachment.Properties) + #if ($!props) + #set ($size = $size + 1) + #end + #end + #if ($size == 0) +

    + #if ($!assignment.TypeOfSubmission.ordinal() == 5) + $tlang.getString("gen.noatt.single") + #else + $tlang.getString("gen.noatt") + #end +

    + #else + #foreach ($attachment in $aAttachments) + #set ($props = false) + #set ($props = $attachment.Properties) + #if ($!props) +
  • + #if ($props.getBooleanProperty($props.NamePropIsCollection)) + $tlang.getString( + #else + $tlang.getString( + #end + $validator.escapeHtml($props.getPropertyFormatted($props.NamePropDisplayName)) + #propertyDetails($props) +
  • + #end + #end + #end +
+
+ #end + #if ($taggable) + #parse ("/vm/assignment/chef_assignments_tags_list.vm") + #end +
+ ## show instructor feedback if the submission is (1) graded and release or (2) returned + #if (($submission.Graded && $submission.GradeReleased) || $submission.Returned) + ## show feedback text when submission is released or returned + #if ($!submission.FeedbackText && ($submission.FeedbackText.length() > 0)) +
$tlang.getString("gen.orisub2")
+
$submission.FeedbackText
+ #else + #set ($text = $submission.SubmittedText) + #if ($!text && $text.length() > 0) +

$tlang.getString("gen.orisub")

+
$submission.SubmittedText
+ #end + #end + #else + #set ($text = $submission.SubmittedText) + #if ($!text && $text.length() > 0) +

$tlang.getString("gen.orisub")

+
$submission.SubmittedText
+ #end + #end - ## Display content-review results when appropriate. If the assignment is non-electronic, we show content-review results if they exist - ## (happens when accepted submission type switched from something else) - #if($allowReviewService && $assignment.getContent().AllowReviewService && $assignment.getContent().AllowStudentViewReport && ($assignment.getContent().getTypeOfSubmission() != 4 || $submission.getContentReviewResults().size() > 0)) - - - $reviewServiceName $tlang.getString("review.report") - - - #if (!$submission) - $tlang.getString("review.notavail") - #else - #set($reviewResults=$submission.ContentReviewResults) - #if ($reviewResults.size() >= 3) -
- - ## TODO: reconsider for i18n - $reviewResults.size() $tlang.getString("review.reports") -
- - #end - #end - - - - #end - #if ($!submission && $!submission.getSubmissionLog().size() > 0) - - $tlang.getString("gen.history") - - #foreach ($entry in $submission.getSubmissionLog()) - $entry
- #end - - + ## Submission Attachments + #set ($attachments = $submission.Attachments) + #if ($attachments) + #set ($size = $attachments.size()) + #if ($size < 1) + $tlang.getString("gen.noattsubmitted") + #else +

+ #if ($assignment.TypeOfSubmission.ordinal() == 5) + $tlang.getString("gen.stuatt.single") + #else + $tlang.getString("gen.stuatt") + #end +

+
    + #foreach ($attachmentReference in $attachments) + #set ($reference = $submissionAttachmentReferences.get($attachmentReference)) + #if ($reference) + #set ($props = false) + #set ($props = $reference.Properties) + #if ($!props) +
  • + #if ($props.getBooleanProperty($props.NamePropIsCollection)) + $tlang.getString( + #else + $tlang.getString( #end - - #if($assignment.getContent().AllowReviewService && $assignment.getContent().AllowStudentViewReport) - - #end -

    - $tlang.getString("gen.instr") -

    - - #if ($!assignment.getContent().getInstructions().length()>0) -
    $validator.escapeHtmlFormattedText($!assignment.getContent().getInstructions())
    - #else - #end - ## assignment attachment - #set ($attachments = $assignment.getContent().Attachments) - #set ($size = 0) - #set ($size = 0) - #set ($props = false) - #foreach ($attachment in $attachments) - #set ($props = $attachment.Properties) - #if ($!props) - #set ($size = $size + 1) - #end - #end - #if ($size == 0) + #if ($decoratedUrlMap) + $validator.escapeHtml($props.getPropertyFormatted($props.NamePropDisplayName)) + #else + $validator.escapeHtml($props.getPropertyFormatted($props.NamePropDisplayName)) + #end + #propertyDetails($props) +
  • + #end + #end + #end +
+ #end + #end + + ## show instructor comment if the submission is (1) graded and release or (2) returned + #if (($submission.Graded && $submission.GradeReleased) || $submission.Returned) + ## show feedback comment and feedback comment when submission is released or returned + #if (($!submission.FeedbackComment) && ($submission.FeedbackComment.length() > 0)) +
$tlang.getString("gen.addinst")
+
$validator.escapeHtmlFormattedText($submission.FeedbackComment)
+ #end + + ## Feedback Attachments + #set ($attachments = $submission.feedbackAttachments) + #if ($attachments) + #set ($size = $attachments.size()) + #if ($size > 0) +

+ $tlang.getString("gen.addinstatts") +

+ + #end + #end - #else -

- $tlang.getString("gen.addres2") -

- - #end - ## model answer - #if($allowViewModelAnswer) - -
-

$validator.escapeHtml($!assignmentModelAnswerItem.getText())

- #set ($mAttachments = $!assignmentModelAnswerItem.getAttachmentObjectSet()) -
    - #set ($size = 0) - #set ($props = false) - #foreach ($attachment in $!mAttachments) - #set ($props = $attachment.Properties) - #if ($!props) - #set ($size = $size + 1) - #end - #end - #if ($size == 0) - <

    - #if ($submissionType == 5) - $tlang.getString("gen.noatt.single") - #else - $tlang.getString("gen.noatt") - #end -

    - #else - #foreach ($attachment in $mAttachments) - #set ($props = false) - #set ($props = $attachment.Properties) - #if ($!props) -
  • - #if ($props.getBooleanProperty($props.NamePropIsCollection)) - $tlang.getString( - #else - $tlang.getString( - #end - $validator.escapeHtml($props.getPropertyFormatted($props.NamePropDisplayName)) - #propertyDetails($props) -
  • - #end - #end - #end -
-
- #end - #if ($!allowReadAssignmentNoteItem) - -
- $validator.escapeHtml($!assignmentNoteItem.getNote()) -
- #end - ##all purpose - #if ($!allowViewAllPurposeItem) - -
-

$validator.escapeHtml($!assignmentAllPurposeItem.getTitle())

-

$validator.escapeHtml($!assignmentAllPurposeItem.getText())

- #set ($aAttachments = $!assignmentAllPurposeItem.getAttachmentObjectSet()) -
    - #set ($size = 0) - #set ($props = false) - #foreach ($attachment in $!aAttachments) - #set ($props = $attachment.Properties) - #if ($!props) - #set ($size = $size + 1) - #end - #end - #if ($size == 0) -

    - #if ($submissionType == 5) - $tlang.getString("gen.noatt.single") - #else - $tlang.getString("gen.noatt") - #end -

    - #else - #foreach ($attachment in $aAttachments) - #set ($props = false) - #set ($props = $attachment.Properties) - #if ($!props) -
  • - #if ($props.getBooleanProperty($props.NamePropIsCollection)) - $tlang.getString( - #else - $tlang.getString( - #end - $validator.escapeHtml($props.getPropertyFormatted($props.NamePropDisplayName)) - #propertyDetails($props) -
  • - #end - #end - #end -
-
- #end - #if ($taggable) - #parse ("/vm/assignment/chef_assignments_tags_list.vm") - #end -
- ##show instructor feedback if the submission is (1) graded and release or (2) returned - #if (($submission.Graded && $submission.GradeReleased) || $submission.Returned) - ## show feedback text when submission is released or returned - #if ($!submission.FeedbackText && ($submission.FeedbackText.length()>0)) -
$tlang.getString("gen.orisub2")
-
$submission.FeedbackFormattedText
- #else - #set ($text = $submission.getSubmittedText()) - #if ($!text && $text.length() > 0) -

$tlang.getString("gen.orisub")

-
$submission.getSubmittedText()
- #end - #end - #else - #set ($text = $submission.getSubmittedText()) - #if ($!text && $text.length() > 0) -

$tlang.getString("gen.orisub")

-
$submission.getSubmittedText()
- #end - #end - #set ($submittedAttachments = $submission.VisibleSubmittedAttachments) - #set ($size = 0) - #set ($props = false) - #foreach ($attachment in $submittedAttachments) - #set ($props = $attachment.Properties) - #if ($!props) - #set ($size = $size + 1) - #end - #end - #if ($size == 0) - ##$tlang.getString("gen.noatt") - #else -
- #if ($assignment.getContent().getTypeOfSubmission() == 5) - $tlang.getString("gen.stuatt.single") - #else - $tlang.getString("gen.stuatt") - #end -
- - #end - ##show instructor comment if the submission is (1) graded and release or (2) returned - #if (($submission.Graded && $submission.GradeReleased) || $submission.Returned) - ## show feedback comment and feedback comment when submission is released or returned - #if (($!submission.FeedbackComment) && ($submission.FeedbackComment.length()>0)) -
$tlang.getString("gen.addinst")
-
$validator.escapeHtmlFormattedText($submission.FeedbackComment)
- #end - #set ($size = 0) - #set ($props = false) - #set ($feedbackAttachments = $submission.FeedbackAttachments) - #set ($size = 0) - #set ($props = false) - #foreach ($attachment in $feedbackAttachments) - #set ($props = $attachment.Properties) - #if ($!props) - #set ($size = $size + 1) - #end - #end - #if ($size == 0) - #else -
$tlang.getString("gen.addinstatts")
- - #end - - ##Show reviewer feedback from peer review (if exist and the peer review is closed) - #if ($peerReviews) -

$tlang.getString("gen.peerReviews")

-
- #foreach($review in $peerReviews) -
$review.assessorDisplayName
-
- $tlang.getFormattedMessage("gen.score.display", $review.getScoreDisplay()) -
- #if($!review.getComment() && $review.getComment().length()>0) - $tlang.getString("gen.comments") -
$validator.escapeHtmlFormattedText($review.getComment())
- #end + ## Show reviewer feedback from peer review (if exist and the peer review is closed) + #if ($peerReviews) +

$tlang.getString("gen.peerReviews")

+
+ #foreach($review in $peerReviews) +
$review.assessorDisplayName
+
+ $tlang.getFormattedMessage("gen.score.display", $review.getScoreDisplay()) +
+ #if($!review.getComment() && $review.getComment().length()>0) + $tlang.getString("gen.comments") +
$validator.escapeHtmlFormattedText($review.getComment())
+ #end -
- #end -
- #end - #end -
-
- -
- -
-
+
+ #end +
+ #end + #end + +
+
+ +
+ +
+ diff --git a/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_view_submission.vm b/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_view_submission.vm index b45dbff1928b..0589c795b9bc 100644 --- a/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_view_submission.vm +++ b/assignment/tool/src/webapp/vm/assignment/chef_assignments_student_view_submission.vm @@ -188,7 +188,7 @@ $(document).ready(function(){ #if($!resubmitNumber && !$!resubmitNumber.equals("0") )
-
$tlang.getString("allow.resubmit.closeDate")
+
$tlang.getString("allow.resubmit.closeTime")
@@ -259,7 +259,7 @@ $(document).ready(function(){ $tlang.getString("gen.nograd") #end #if ($gradeTypeTable.get($gradeScale) == $!tlang.getString("points")) - ($tlang.getString("grade.max") $assignment.MaxGradePoint) + ($tlang.getString("grade.max") $!service.getMaxPointGradeDisplay($!assignment.ScaleFactor, $!assignment.MaxGradePoint)) #end @@ -279,7 +279,7 @@ $(document).ready(function(){
$gradeTypeTable.get($gradeScale) #if ($gradeTypeTable.get($gradeScale) == $!tlang.getString("points")) - ($tlang.getString("grade.max") $assignment.MaxGradePoint) + ($tlang.getString("grade.max") $!service.getMaxPointGradeDisplay($!assignment.ScaleFactor, $!assignment.MaxGradePoint)) #end @@ -366,38 +366,40 @@ $(document).ready(function(){ #if (!$!assignment.Instructions.isEmpty())
$validator.escapeHtmlFormattedText($!assignment.Instructions)
#end - ## assignment attachment - #set ($size = 0) - #set ($props = false) - #foreach ($attachment in $assignment.Attachments) - #set ($props = $attachment.Properties) - #if ($!props) - #set ($size = $size + 1) - #end - #end - #if ($size > 0) -

- $tlang.getString("gen.addres2") -

+ + ## Assignment Attachments + #set ($aAttachments = $assignment.Attachments) + #if ($aAttachments) + #set ($size = $aAttachments.size()) + #if ($size < 1) + $tlang.getString("gen.noatt") + #else +

+ $tlang.getString("gen.addres2") +

- ##end + #end #end + ## model answer #if($allowViewModelAnswer) @@ -626,7 +628,7 @@ $(document).ready(function(){ ##mozilla does not resize table children dynamically , so set here - #set($gusers = $assignmentService.getSortedGroupUsers($group)) + #set($gusers = $!service.getSortedGroupUsers($group)) #foreach ($user in $gusers) $user.getDisplayName() ##$!userDirectoryService.getUser($user).getDisplayName() diff --git a/common/import-parsers/blackboard_6/impl/pom.xml b/common/import-parsers/blackboard_6/impl/pom.xml index 6a8fd837faea..e45ed842e63c 100644 --- a/common/import-parsers/blackboard_6/impl/pom.xml +++ b/common/import-parsers/blackboard_6/impl/pom.xml @@ -35,7 +35,7 @@ org.jsoup jsoup - 1.8.1 + 1.10.3 commons-lang diff --git a/gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/panels/importExport/ExportPanel.html b/gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/panels/importExport/ExportPanel.html index eeef94a7e328..32258e31a8bf 100644 --- a/gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/panels/importExport/ExportPanel.html +++ b/gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/panels/importExport/ExportPanel.html @@ -108,6 +108,20 @@