diff --git a/src/main/java/org/olat/core/commons/fullWebApp/_content/fullwebapplayout.html b/src/main/java/org/olat/core/commons/fullWebApp/_content/fullwebapplayout.html index 263bcd259d6c99cf30278082041aa15f21a930e6..cf1a3feb375edf69eb45272be31de6ecaab514d7 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/_content/fullwebapplayout.html +++ b/src/main/java/org/olat/core/commons/fullWebApp/_content/fullwebapplayout.html @@ -52,29 +52,30 @@ function o_start() { o_info.initialPageLoadFinished = true; } function o_mathjax(fct_success) { - jQuery.ajax("${r.mathJaxCdn()}MathJax.js?config=TeX-AMS-MML_HTMLorMML", { + window.MathJax = { + extensions: ["jsMath2jax.js"], + messageStyle: 'none', + showProcessingMessages: false, + showMathMenu: false, + menuSettings: { }, + jsMath2jax: { + preview: "none" + }, + tex2jax: { + ignoreClass: "math" + }, + "HTML-CSS": { + EqnChunk: 5, EqnChunkFactor: 1, EqnChunkDelay: 100 + }, + "fast-preview": { + disabled: true + } + } + jQuery.ajax("${r.mathJaxCdn()}MathJax.js?config=${r.mathJaxConfig()}", { cache: true, dataType: "script", + crossDomain: true, success: function() { - MathJax.Hub.Config({ - extensions: ["jsMath2jax.js"], - messageStyle: 'none', - showProcessingMessages: false, - showMathMenu: false, - menuSettings: { }, - jsMath2jax: { - preview: "none" - }, - tex2jax: { - ignoreClass: "math" - }, - "HTML-CSS": { - EqnChunk: 5, EqnChunkFactor: 1, EqnChunkDelay: 100 - }, - "fast-preview": { - disabled: true - } - }); if(!(typeof fct_success === "undefined")) { fct_success(); } @@ -369,4 +370,4 @@ jQuery(function() { o_initEmPxFactor(); }); /* ]]> */ -</script></div></body></html> \ No newline at end of file +</script></div></body></html> diff --git a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java index 57ab19ecb5c27d99ff30e1aeb796bb9a5be4adaa..c181daa9d0029f628ca058bff9ea2151f32651ad 100644 --- a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java +++ b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDeliveryMapper.java @@ -597,33 +597,9 @@ public class IFrameDeliveryMapper implements Mapper { appendStaticJs("js/prototype/prototype.js"); } - /* - MathJax.Hub.Config({ - extensions: ["jsMath2jax.js"], - messageStyle: 'none', - showProcessingMessages: false, - showMathMenu: false, - menuSettings: { }, - jsMath2jax: { - preview: "none" - }, - tex2jax: { - ignoreClass: "math" - }, - "HTML-CSS": { - EqnChunk: 5, EqnChunkFactor: 1, EqnChunkDelay: 100 - }, - "fast-preview": { - disabled: true - } - }); - */ public void appendJsMath() { - append("<script type=\"text/javascript\" src=\""); - append(WebappHelper.getMathJaxCdn()); - append("MathJax.js?config=TeX-AMS-MML_HTMLorMML\"></script>\n"); append("<script type=\"text/javascript\">\n"); - append("MathJax.Hub.Config({\n"); + append("window.MathJax = {\n"); append(" extensions: [\"jsMath2jax.js\"],\n"); append(" messageStyle: 'none',\n"); append(" showProcessingMessages: false,\n"); @@ -641,8 +617,13 @@ public class IFrameDeliveryMapper implements Mapper { append(" \"fast-preview\": {\n"); append(" disabled: true\n"); append(" }\n"); - append("});"); + append("};"); append("</script>"); + append("<script type=\"text/javascript\" src=\""); + append(WebappHelper.getMathJaxCdn()); + append("MathJax.js?config="); + append(WebappHelper.getMathJaxConfig()); + append("\"></script>\n"); } public void appendGlossary() { diff --git a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java index ddb70d8a33b1faa681d7200d91f7c9f6b9292c2e..f9f420dd5503060c278c1a26d281c4c7b78b9a73 100644 --- a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java +++ b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java @@ -366,6 +366,12 @@ public class VelocityRenderDecorator implements Closeable { } return sb; } + + public StringOutput mathJaxConfig() { + StringOutput sb = new StringOutput(100); + sb.append(WebappHelper.getMathJaxConfig()); + return sb; + } public StringOutput contextPath() { StringOutput sb = new StringOutput(100); diff --git a/src/main/java/org/olat/core/util/WebappHelper.java b/src/main/java/org/olat/core/util/WebappHelper.java index 7fe810e3be566c02b04549d68785d0286cecc7b1..9b9431688e968da772d580a15e8ac3b1ab8ff70a 100644 --- a/src/main/java/org/olat/core/util/WebappHelper.java +++ b/src/main/java/org/olat/core/util/WebappHelper.java @@ -76,6 +76,7 @@ public class WebappHelper implements Initializable, Destroyable, ServletContextA private static long timeOfServerStartup = System.currentTimeMillis(); private static String mathJaxCdn; + private static String mathJaxConfig; private static String mobileContext; /** need to set this at least once before the actual request, since we cannot extract it from the servletContext, @@ -304,6 +305,14 @@ public class WebappHelper implements Initializable, Destroyable, ServletContextA WebappHelper.mathJaxCdn = mathJaxCdn; } + public static String getMathJaxConfig() { + return mathJaxConfig; + } + + public void setMathJaxConfig(String mathJaxConfig) { + WebappHelper.mathJaxConfig = mathJaxConfig; + } + public void setFullPathToSrc(String fullPathToSrc) { File path = new File(fullPathToSrc); if (path.exists()) { diff --git a/src/main/java/org/olat/core/util/_spring/utilCorecontext.xml b/src/main/java/org/olat/core/util/_spring/utilCorecontext.xml index 9dfa12cb1664b8ce59ba5ae8340f72c4e0b83ee3..42bb91e467cf2ecdbf158b4e23929c6f4a1f10b0 100644 --- a/src/main/java/org/olat/core/util/_spring/utilCorecontext.xml +++ b/src/main/java/org/olat/core/util/_spring/utilCorecontext.xml @@ -48,6 +48,7 @@ <property name="applicationName" value="${application.name}" /> <property name="mobileContext" value="${mobile.context}" /> <property name="mathJaxCdn" value="${mathjax.cdn}"/> + <property name="mathJaxConfig" value="${mathjax.config}"/> </bean> <bean id="org.olat.core.helpers.Settings" class="org.olat.core.helpers.Settings" depends-on="org.olat.core.util.WebappHelper"> diff --git a/src/main/java/org/olat/ims/qti21/resultexport/_content/qti21results.html b/src/main/java/org/olat/ims/qti21/resultexport/_content/qti21results.html index 8440db543e322e61088dd7958d1b83e2c3051505..010af363694a44c5ef88ef923598c1199e3d6ccc 100644 --- a/src/main/java/org/olat/ims/qti21/resultexport/_content/qti21results.html +++ b/src/main/java/org/olat/ims/qti21/resultexport/_content/qti21results.html @@ -26,29 +26,30 @@ function setFlexiFormDirtyByListener(e){ // } function o_mathjax() { - jQuery.ajax("${r.mathJaxCdnFullUrl()}MathJax.js?config=TeX-AMS-MML_HTMLorMML", { + window.MathJax = { + extensions: ["jsMath2jax.js"], + messageStyle: 'none', + showProcessingMessages: false, + showMathMenu: false, + menuSettings: { }, + jsMath2jax: { + preview: "none" + }, + tex2jax: { + ignoreClass: "math" + }, + "HTML-CSS": { + EqnChunk: 5, EqnChunkFactor: 1, EqnChunkDelay: 100 + }, + "fast-preview": { + disabled: true + } + } + jQuery.ajax("${r.mathJaxCdnFullUrl()}MathJax.js?config=${r.mathJaxConfig()}", { cache: true, dataType: "script", + crossDomain: true, success: function() { - MathJax.Hub.Config({ - extensions: ["jsMath2jax.js"], - messageStyle: 'none', - showProcessingMessages: false, - showMathMenu: false, - menuSettings: { }, - jsMath2jax: { - preview: "none" - }, - tex2jax: { - ignoreClass: "math" - }, - "HTML-CSS": { - EqnChunk: 5, EqnChunkFactor: 1, EqnChunkDelay: 100 - }, - "fast-preview": { - disabled: true - } - }); } }); } @@ -70,4 +71,4 @@ jQuery(function() { <body class="o_page_margins"> <div id="o_main">$r.render("results")</div> </body> -</html> \ No newline at end of file +</html> diff --git a/src/main/java/org/olat/repository/ui/catalog/CatalogEntryEditController.java b/src/main/java/org/olat/repository/ui/catalog/CatalogEntryEditController.java index fb766096e21fa9aa64db3fe6314faf656c481ab4..6736835495f611341d4d4c14a9a20dd0a1e55ec8 100644 --- a/src/main/java/org/olat/repository/ui/catalog/CatalogEntryEditController.java +++ b/src/main/java/org/olat/repository/ui/catalog/CatalogEntryEditController.java @@ -45,6 +45,7 @@ import org.olat.core.gui.components.form.flexible.impl.elements.FileElementEvent import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; +import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.core.util.WebappHelper; import org.olat.core.util.vfs.LocalFileImpl; @@ -164,8 +165,30 @@ public class CatalogEntryEditController extends FormBasicController { public void setElementCssClass(String cssClass) { flc.setElementCssClass(cssClass); } - - + + @Override + protected boolean validateFormLogic(UserRequest ureq) { + boolean allOk = true; + + nameEl.clearError(); + if(StringHelper.containsNonWhitespace(nameEl.getValue())) { + if(nameEl.getValue().length() > 99) { + nameEl.setErrorKey("input.toolong", new String[]{ "100" }); + allOk &= false; + } + } else { + nameEl.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } + + styleEl.clearError(); + if(!styleEl.isOneSelected()) { + styleEl.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } + + return allOk & super.validateFormLogic(ureq); + } @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties index 8d8ae453277057d9a4228613bb8a0292a977fb7a..15bed8ac593825b47e93aa4f72cec02beb8a9624 100644 --- a/src/main/resources/serviceconfig/olat.properties +++ b/src/main/resources/serviceconfig/olat.properties @@ -537,6 +537,7 @@ allow.cross.origin.domain.values=*,www.frentix.com ######################################################################## mathjax.cdn=//mathjax.openolat.org/mathjax/2.7-latest/ +mathjax.config=TeX-AMS-MML_HTMLorMML ######################################################################## # Database settings