From b2f01aee6dbc831ec492495ba72ea35862e6b121 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 25 Jun 2015 11:47:08 +0200
Subject: [PATCH] OO-1575: fix wrong for attribute some disabled element, for
 date chooser, render hour and minute for disabled date chooser element,
 escape blank in Confluence URL...

---
 .../services/help/spi/ConfluenceLinkSPI.java  |  2 +-
 .../flexible/impl/elements/JSDateChooser.java |  9 +++++-
 .../impl/elements/JSDateChooserRenderer.java  | 30 ++++++++++++++++---
 .../impl/elements/TextElementRenderer.java    |  4 +--
 .../richText/RichTextElementImpl.java         |  5 ++++
 .../richText/RichTextElementRenderer.java     |  2 +-
 6 files changed, 43 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/olat/core/commons/services/help/spi/ConfluenceLinkSPI.java b/src/main/java/org/olat/core/commons/services/help/spi/ConfluenceLinkSPI.java
index 6a967e954a4..662ff8975fc 100644
--- a/src/main/java/org/olat/core/commons/services/help/spi/ConfluenceLinkSPI.java
+++ b/src/main/java/org/olat/core/commons/services/help/spi/ConfluenceLinkSPI.java
@@ -55,7 +55,7 @@ public class ConfluenceLinkSPI implements HelpLinkSPI {
 		String version = Settings.getVersion();
 		sb.append(generateSpace(version, locale));
 		if (page != null) {
-			sb.append(page);			
+			sb.append(page.replace(" ", "%20"));			
 		}
 		return sb.toString();
 	}
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooser.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooser.java
index d80884cdd24..8b1b682ee48 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooser.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooser.java
@@ -86,10 +86,17 @@ public class JSDateChooser extends TextElementImpl implements DateChooser {
 		dateComponent = (TextElementComponent) super.getFormItemComponent();
 	}
 
+	@Override
+	public String getForId() {
+		return dateComponent.getFormDispatchId();
+	}
+
+	@Override
 	public void setDisplaySize(int dispSize){
 		displaySize = dispSize;
 	}
-	
+
+	@Override
 	protected Component getFormItemComponent() {
 		return jscomponent;
 	}
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooserRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooserRenderer.java
index 9bcfda54335..8a6b09c07ef 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooserRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/JSDateChooserRenderer.java
@@ -141,7 +141,7 @@ class JSDateChooserRenderer extends DefaultComponentRenderer {
 				sb.append("</div>");
 			}
 		} else{
-			renderTextElementReadonly(sb, teC, maxlength);
+			renderTextElementReadonly(sb, jsdcc, maxlength);
 		}
 		sb.append("</div>");
 	}
@@ -154,7 +154,8 @@ class JSDateChooserRenderer extends DefaultComponentRenderer {
 		return dc;
 	}
 
-	private void renderTextElementReadonly(StringOutput sb, TextElementComponent teC, int maxlength) {
+	private void renderTextElementReadonly(StringOutput sb, JSDateChooserComponent jsdcc, int maxlength) {
+		TextElementComponent teC = jsdcc.getTextElementComponent();
 		TextElementImpl te = teC.getTextElementImpl();
 		//display size cannot be bigger the maxlenght given by dateformat
 		te.displaySize = te.displaySize <= maxlength ? te.displaySize : maxlength;
@@ -166,7 +167,7 @@ class JSDateChooserRenderer extends DefaultComponentRenderer {
 			value = "";
 		}
 		value = StringEscapeUtils.escapeHtml(value);
-		sb.append("<span\" id=\"").append(id).append("\" ")
+		sb.append("<span id='").append(id).append("_wp' ")
 		  .append(FormJSHelper.getRawJSFor(te.getRootForm(), id, te.getAction()))
 		  .append("title=\"").append(value).append("\">");
 		String shorter;
@@ -181,9 +182,30 @@ class JSDateChooserRenderer extends DefaultComponentRenderer {
 				shorter += "&nbsp;";
 			}
 		}				
-		sb.append("<input disabled=\"disabled\" class=\"o_form_element_disabled\" size=\"")
+		sb.append("<input id='").append(id).append("' disabled='disabled' class='o_form_element_disabled' size=\"")
 		  .append(te.displaySize)
 		  .append("\" value=\"").append(shorter).append("\" /></span>");
+		
+		if (jsdcc.isDateChooserTimeEnabled()) {
+			int hour, minute;
+			Date currentDate = jsdcc.getDate();
+			if(currentDate == null) {
+				hour = minute = 0;
+			} else {
+				Calendar cal = Calendar.getInstance();
+				cal.setTime(currentDate);
+				hour = cal.get(Calendar.HOUR_OF_DAY);
+				minute = cal.get(Calendar.MINUTE);
+			}
+			sb.append("<span class='o_form_element_disabled'> ")
+			  .append(hour)
+			  .append(" : ");
+			if(minute < 10) {
+				sb.append("0");
+			}
+			sb.append(minute)
+			  .append("</span>");
+		}
 	}
 	
 	private void renderTextElement(StringOutput sb, TextElementComponent teC, int maxlength) {
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextElementRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextElementRenderer.java
index 600ee7cf2ef..0a258f138bf 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextElementRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextElementRenderer.java
@@ -88,13 +88,13 @@ class TextElementRenderer extends DefaultComponentRenderer {
 			FormJSHelper.appendFlexiFormDirty(sb, te.getRootForm(), teC.getFormDispatchId());	
 		} else {
 			//read only view
-			sb.append("<span id=\"").append(id).append("\" ")
+			sb.append("<span id=\"").append(id).append("_wp\" ")
 			  .append(FormJSHelper.getRawJSFor(te.getRootForm(), id, te.getAction()))
 			  .append(" title=\"").append(htmlVal) //the uncutted value in tooltip
 			  .append("\" ").append(" >");
 			// use the longer from display size or real value length
 			int size = (te.displaySize > value.length() ? te.displaySize : value.length());
-			sb.append("<input type=\"").append(te.getHtmlInputType())
+			sb.append("<input id=\"").append(id).append("\" type=\"").append(te.getHtmlInputType())
 			  .append("\" disabled=\"disabled\" class=\"form-control o_disabled\" size=\"")
 			  .append(size)
 			  .append("\" value=\"").append(htmlVal).append("\" />")
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementImpl.java
index 4562ad3830e..b1e6a8b8a14 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementImpl.java
@@ -91,6 +91,11 @@ public class RichTextElementImpl extends AbstractTextElement implements
 		configuration = new RichTextConfiguration(getFormDispatchId(), rootForm.getDispatchFieldId());
 	}
 	
+	@Override
+	public String getForId() {
+		return isEnabled() ? super.getForId() : null;
+	}
+	
 	/**
 	 * @see org.olat.core.gui.components.form.flexible.impl.elements.AbstractTextElement#getValue()
 	 * The returned value is XSS save and
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementRenderer.java
index 715ab9ed95b..1e669c6044b 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextElementRenderer.java
@@ -77,7 +77,7 @@ class RichTextElementRenderer extends DefaultComponentRenderer {
 			sb.append(FormJSHelper.getRawJSFor(te.getRootForm(), domID, te.getAction()));
 			sb.append(" id=\"");
 			sb.append(domID);
-			sb.append("_disabled\" readonly class='form-control-static o_disabled' style=\"");
+			sb.append("_disabled\" class='form-control-static o_disabled' style=\"");
 			if (rows != -1) {
 				sb.append(" min-height:").append(rows).append("em;");
 			}
-- 
GitLab