From 41eef455f14bc783d40f05cfd3e83ded5ebf0eff Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 6 May 2015 14:38:29 +0200
Subject: [PATCH] OO-991: implements feedback, fix some HTML errors in tables

---
 .../table/AbstractFlexiTableRenderer.java     | 12 ++++----
 .../gui/components/table/TableRenderer.java   | 22 +++++++-------
 .../course/editor/EditorStatusController.java |  2 +-
 .../org/olat/course/nodes/GTACourseNode.java  |  2 +-
 .../gta/ui/GTAParticipantController.java      |  7 +++++
 .../course/nodes/gta/ui/_content/run.html     | 29 +++++++++++++++++--
 .../gta/ui/_i18n/LocalStrings_de.properties   |  1 +
 .../gta/ui/_i18n/LocalStrings_en.properties   |  1 +
 8 files changed, 54 insertions(+), 22 deletions(-)

diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java
index 23fb984fc82..7ce770e7885 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/AbstractFlexiTableRenderer.java
@@ -315,16 +315,16 @@ public abstract class AbstractFlexiTableRenderer extends DefaultComponentRendere
 
 			sb.append("<div class='o_table_footer'><div class='o_table_checkall input-sm'>");
 
-			sb.append("<label class='checkbox-inline'><a id=\"")
-			  .append(dispatchId).append("\" href=\"javascript:o_table_toggleCheck('").append(formName).append("', true);")
+			sb.append("<label class='checkbox-inline'><a id='")
+			  .append(dispatchId).append("_sa' href=\"javascript:o_table_toggleCheck('").append(formName).append("', true);")
 			  .append(FormJSHelper.getXHRFnCallFor(ftE.getRootForm(), dispatchId, 1, new NameValuePair("select", "checkall")))
-			  .append("\"><input type='checkbox' checked='checked' disabled='disabled' /><span>").append(translator.translate("form.checkall"))
+			  .append("\"><i class='o_icon o_icon-lg o_icon_check_on'> </i> <span>").append(translator.translate("form.checkall"))
 			  .append("</span></a></label>");
 
-			sb.append("<label class='checkbox-inline'><a id=\"")
-			  .append(dispatchId).append("\" href=\"javascript:o_table_toggleCheck('").append(formName).append("', false);")
+			sb.append("<label class='checkbox-inline'><a id='")
+			  .append(dispatchId).append("_dsa' href=\"javascript:o_table_toggleCheck('").append(formName).append("', false);")
 			  .append(FormJSHelper.getXHRFnCallFor(ftE.getRootForm(), dispatchId, 1, new NameValuePair("select", "uncheckall")))
-			  .append("\"><input type='checkbox' disabled='disabled' /><span>").append(translator.translate("form.uncheckall"))
+			  .append("\"><i class='o_icon o_icon-lg o_icon_check_off'> </i> <span>").append(translator.translate("form.uncheckall"))
 			  .append("</span></a></label>");
 
 			sb.append("</div></div>");
diff --git a/src/main/java/org/olat/core/gui/components/table/TableRenderer.java b/src/main/java/org/olat/core/gui/components/table/TableRenderer.java
index 89b681d8237..5a5e659c3b3 100644
--- a/src/main/java/org/olat/core/gui/components/table/TableRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/table/TableRenderer.java
@@ -220,17 +220,17 @@ public class TableRenderer extends DefaultComponentRenderer {
 
 	private void appendSelectDeselectAllButtons(final StringOutput target, final Translator translator, Table table, String formName, int rows, int resultsPerPage) {
 		if (table.isMultiSelect()) {
-			target.append("<div class='o_table_checkall input-sm'>");
-			target.append("<label class='checkbox-inline'>");
-			target.append("<a href='#' onclick=\"javascript:o_table_toggleCheck('").append(formName).append("', true)\">");
-			target.append("<input type='checkbox' checked='checked' disabled='disabled' />");
-			target.append(translator.translate("checkall"));
-			target.append("</a></label>");
-			target.append("<label class='checkbox-inline'><a href=\"#\" onclick=\"javascript:o_table_toggleCheck('").append(formName).append("', false)\">");
-			target.append("<input type='checkbox' disabled='disabled' />");
-			target.append(translator.translate("uncheckall"));
-			target.append("</a></label>");
-			target.append("</div>");
+			target.append("<div class='o_table_checkall input-sm'>")
+			  .append("<label class='checkbox-inline'>")
+			  .append("<a href='#' onclick=\"javascript:o_table_toggleCheck('").append(formName).append("', true)\">")
+			  .append("<i class='o_icon o_icon-lg o_icon_check_on'> </i> ")
+			  .append(translator.translate("checkall"))
+			  .append("</a></label>");
+			target.append("<label class='checkbox-inline'><a href=\"#\" onclick=\"javascript:o_table_toggleCheck('").append(formName).append("', false)\">")
+			  .append("<i class='o_icon o_icon-lg o_icon_check_off'> </i> ")
+			  .append(translator.translate("uncheckall"))
+			  .append("</a></label>")
+			  .append("</div>");
 		}
 
 		if (table.isShowAllSelected() && (rows > resultsPerPage)) {
diff --git a/src/main/java/org/olat/course/editor/EditorStatusController.java b/src/main/java/org/olat/course/editor/EditorStatusController.java
index 0b15a0570a8..9710b086548 100644
--- a/src/main/java/org/olat/course/editor/EditorStatusController.java
+++ b/src/main/java/org/olat/course/editor/EditorStatusController.java
@@ -78,7 +78,7 @@ public class EditorStatusController extends BasicController {
 		
 		long lpTimeStamp = cetm.getLatestPublishTimestamp();
 		if (lpTimeStamp == -1) {				
-			main.contextPut("publishInfos", "published.never.yet");
+			main.contextPut("publishInfos", translate("published.never.yet"));
 		} else { // course has been published before
 			Date d = new Date(lpTimeStamp);
 			main.contextPut("publishInfos", translate("published.latest", Formatter.getInstance(getLocale()).formatDateAndTime(d)));
diff --git a/src/main/java/org/olat/course/nodes/GTACourseNode.java b/src/main/java/org/olat/course/nodes/GTACourseNode.java
index 4486129d868..de5b7633159 100644
--- a/src/main/java/org/olat/course/nodes/GTACourseNode.java
+++ b/src/main/java/org/olat/course/nodes/GTACourseNode.java
@@ -219,7 +219,7 @@ public class GTACourseNode extends AbstractAccessableCourseNode implements Asses
 		boolean hasScoring = config.getBooleanSafe(GTASK_GRADING);
 		if (hasScoring) {
 			if(!config.getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD)
-					&& !config.getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD)) {
+					&& !config.getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_PASSED_FIELD)) {
 
 				addStatusErrorDescription("error.missing.score.config", GTAEditController.PANE_TAB_GRADING, sdList);
 			}
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
index 3ae3c7cb9a4..6e61e8196f7 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
@@ -46,6 +46,7 @@ import org.olat.core.util.mail.MailTemplate;
 import org.olat.core.util.mail.MailerResult;
 import org.olat.core.util.vfs.VFSContainer;
 import org.olat.course.nodes.GTACourseNode;
+import org.olat.course.nodes.MSCourseNode;
 import org.olat.course.nodes.gta.AssignmentResponse;
 import org.olat.course.nodes.gta.GTAType;
 import org.olat.course.nodes.gta.Task;
@@ -436,6 +437,11 @@ public class GTAParticipantController extends GTAAbstractController {
 			}
 		}
 		
+		String infoTextUser = config.getStringValue(MSCourseNode.CONFIG_KEY_INFOTEXT_USER);
+	    if(StringHelper.containsNonWhitespace(infoTextUser)) {
+	    	mainVC.contextPut("gradingInfoTextUser", StringHelper.xssScan(infoTextUser));
+	    }
+		
 		if(config.getBooleanSafe(GTACourseNode.GTASK_ASSIGNMENT)
 				|| config.getBooleanSafe(GTACourseNode.GTASK_SUBMIT)
 				|| config.getBooleanSafe(GTACourseNode.GTASK_REVIEW_AND_CORRECTION)
@@ -486,6 +492,7 @@ public class GTAParticipantController extends GTAAbstractController {
 	private void setGroupHeaders(BusinessGroup group) {
 		mainVC.contextPut("groupName", group.getName());
 		openGroupButton = LinkFactory.createButton("open.group", mainVC, this);
+		openGroupButton.setIconLeftCSS("o_icon o_icon_group");
 	}
 	
 	private void setMultiGroupsSelection() {
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/_content/run.html b/src/main/java/org/olat/course/nodes/gta/ui/_content/run.html
index c1b48931140..fbfa7ac6fcb 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/_content/run.html
+++ b/src/main/java/org/olat/course/nodes/gta/ui/_content/run.html
@@ -1,5 +1,6 @@
-$r.render("contextualSubscription")
-<div class="o_block">[ugly]</div>
+<div class="clearfix">
+	$r.render("contextualSubscription")
+</div>
 
 #if($noGroupError)
 <div class="o_error" role="alert">$r.translate("error.no.group")</div>
@@ -115,11 +116,33 @@ $r.render("contextualSubscription")
 		<div class="o_bar"></div>
 		<h4 class="o_title">$r.translate("run.grading")</h4>
 		<div class="o_content">
+			#if($gradingInfoTextUser && !$gradingInfoTextUser.isEmpty())
+			<div class="panel panel-default o_disclaimer">
+			  	<div class="panel-heading" data-toggle="collapse" data-target="#collapseDisclaimer">
+			  		<h4 class="panel-title">
+			  			<i id="collapseDisclaimerToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i>
+			  			$r.translate("info.title")
+			  		</h4>
+			  	</div>
+				<div id="collapseDisclaimer" class="panel-collapse collapse in"><div class="panel-body">
+					$r.formatLatexFormulas($gradingInfoTextUser)
+		  		</div></div>
+			</div>
+			<script type="text/javascript">
+				/* <![CDATA[ */
+					jQuery('#collapseDisclaimer').on('hide.bs.collapse', function () {
+						jQuery('#collapseDisclaimerToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox');
+					})
+					jQuery('#collapseDisclaimer').on('show.bs.collapse', function () {
+						jQuery('#collapseDisclaimerToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox');
+					})
+				/* ]]> */
+			</script>
+			#end
 			#if($r.available("grading"))
 				$r.render("grading")
 			#end
 		</div>
-		
 		#if($userLog || $groupLog)
 		<div class="o_box">
 		    #o_togglebox_start("o_course_run_log" $r.translate("log.title"))
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_de.properties
index 732afa31825..117d5ed8fe3 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_de.properties
@@ -61,6 +61,7 @@ group.apply.toall=F\u00FCr die ganze Gruppe
 group.passed=Gruppe bestanden/nicht bestanden
 group.score=Gruppe Punkte
 group.title=Leistungs\u00FCbersicht
+info.title=$org.olat.course.nodes.ms\:info.title
 log.title=\u00C4nderungsverlauf
 mail.confirm.assignment.body=Zuweisung war erfolgreich
 mail.confirm.assignment.subject=Zuweisung
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_en.properties
index f21b3b7ee84..6e503aff3e4 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_en.properties
@@ -61,6 +61,7 @@ group.apply.toall=For the whole group
 group.passed=Groups passed/failed
 group.score=Group score
 group.title=Score summary
+info.title=$org.olat.course.nodes.ms\:info.title
 log.title=Change log
 mail.confirm.assignment.body=Assignment was successful
 mail.confirm.assignment.subject=Assignment
-- 
GitLab