Skip to content
Snippets Groups Projects
Commit 7b6c7ce5 authored by srosse's avatar srosse
Browse files

no-jira: working version with MathAssess

parent 98b15893
No related branches found
No related tags found
No related merge requests found
Showing
with 74 additions and 2 deletions
......@@ -49,6 +49,8 @@ function o_start(){
}
/* ]]> */
</script>
## <script src='http://localhost/cdnjax/MathJax.js?config=MML_HTMLorMML'></script>
<script src='//cdn.mathjax.org/mathjax/2.1-latest/MathJax.js?config=MML_HTMLorMML'></script>
<script type="text/javascript" src='$r.staticLink("js/jsMath/easy/load.js")'></script>
## jQuery libraries
<!--[if lt IE 9]>
......
......@@ -314,7 +314,6 @@ public class QTI21ServiceImpl implements QTI21Service {
Document stateDocument = TestSessionStateXmlMarshaller.marshal(testSessionState);
File sessionFile = getTestSessionStateFile(candidateEvent);
storeStateDocument(stateDocument, sessionFile);
System.out.println("Store state: " + sessionFile);
}
private File getTestSessionStateFile(CandidateEvent candidateEvent) {
......
package org.olat.ims.qti21.restapi;
import java.util.Date;
import java.util.Map;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.CacheControl;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import uk.ac.ed.ph.jqtiplus.xmlutils.xslt.SimpleXsltStylesheetCache;
import uk.ac.ed.ph.jqtiplus.xmlutils.xslt.XsltStylesheetCache;
import uk.ac.ed.ph.qtiworks.mathassess.XsltStylesheetCacheAdapter;
import uk.ac.ed.ph.qtiworks.mathassess.glue.AsciiMathHelper;
@Path("math")
public class MathWebService {
private static final CacheControl cc = new CacheControl();
static {
cc.setMaxAge(-1);
}
@POST
@Path("verifyAsciiMath")
@Produces({MediaType.APPLICATION_JSON})
public Response verifyAsciiMath(@FormParam("input") String asciiMathInput) {
XsltStylesheetCache stylesheetCache = new SimpleXsltStylesheetCache();
AsciiMathHelper asciiMathHelper = new AsciiMathHelper(new XsltStylesheetCacheAdapter(stylesheetCache));
Map<String, String> upConvertedAsciiMathInput = asciiMathHelper.upConvertAsciiMathInput(asciiMathInput);
return Response.ok(upConvertedAsciiMathInput).lastModified(new Date()).cacheControl(cc).build();
}
}
......@@ -80,6 +80,9 @@ public abstract class AbstractAssessmentComponent extends AbstractComponent {
JSAndCSSAdder jsa = vr.getJsAndCSSAdder();
jsa.addRequiredStaticJsFile("assessment/rendering/javascript/QtiWorksRendering.js");
jsa.addRequiredStaticJsFile("assessment/rendering/javascript/AsciiMathInputController.js");
jsa.addRequiredStaticJsFile("assessment/rendering/javascript/UpConversionAjaxController.js");
jsa.addRequiredStaticJsFile("js/jquery/maphilight/jquery.maphilight.js");
jsa.addRequiredStaticJsFile("js/jquery/ui/jquery-ui-1.11.4.custom.dnd.min.js");
}
......
......@@ -35,6 +35,7 @@ import org.olat.core.gui.render.StringOutput;
import org.olat.core.gui.render.URLBuilder;
import org.olat.core.gui.translator.Translator;
import org.olat.core.logging.OLATRuntimeException;
import org.olat.core.util.WebappHelper;
import org.olat.ims.qti21.UserTestSession;
import org.olat.ims.qti21.model.CandidateItemEventType;
import org.olat.ims.qti21.model.jpa.CandidateEvent;
......@@ -71,6 +72,17 @@ public class AssessmentItemComponentRenderer extends DefaultComponentRenderer {
ItemSessionController itemSessionController = cmp.getItemSessionController();
AssessmentItemFormItem item = cmp.getQtiItem();
String restapi = WebappHelper.getServletContextPath() + "/restapi/math/verifyAsciiMath";
sb.append("<script>/n")
.append("jQuery(function() {\n")
.append(" console.log('Load','").append(restapi).append("');")
.append(" UpConversionAjaxController.setUpConversionServiceUrl('/").append(restapi).append("');\n")
.append(" UpConversionAjaxController.setDelay(300);\n")
.append("});")
.append("</script>/n");
//if(itemSessionController.getItemSessionState().isEnded()) {
// sb.append("<h1>The End <small>say the renderer</small></h1>");
//} else {
......
......@@ -34,7 +34,9 @@ import org.olat.core.gui.render.Renderer;
import org.olat.core.gui.render.StringOutput;
import org.olat.core.gui.render.URLBuilder;
import org.olat.core.gui.translator.Translator;
import org.olat.core.helpers.Settings;
import org.olat.core.logging.OLATRuntimeException;
import org.olat.core.util.WebappHelper;
import org.olat.ims.qti21.UserTestSession;
import org.olat.ims.qti21.model.CandidateTestEventType;
import org.olat.ims.qti21.model.jpa.CandidateEvent;
......@@ -73,6 +75,16 @@ public class AssessmentTestComponentRenderer extends DefaultComponentRenderer {
TestSessionController testSessionController = cmp.getTestSessionController();
AssessmentTestFormItem item = cmp.getQtiItem();
/*
String restapi = "/olat/restapi/math/verifyAsciiMath";
sb.append("<script>/n")
//.append("jQuery(function() {\n")
.append(" UpConversionAjaxController.setUpConversionServiceUrl('").append(restapi).append("');\n")
.append(" UpConversionAjaxController.setDelay(300);\n")
//.append("});")
.append("</script>/n");
*/
if(testSessionController.getTestSessionState().isEnded()) {
sb.append("<h1>The End <small>say the renderer</small></h1>");
} else {
......
......@@ -470,6 +470,7 @@ public class AssessmentRenderer {
xsltParameters.put("qtiWorksVersion", "1.0-SNAPSH0T-OO");
xsltParameters.put("webappContextPath", "");
xsltParameters.put("fullWebappContextPath", Settings.createServerURI());
xsltParameters.put("olatWebappContextPath", Settings.getServerContextPathURI());
StringOutput target = new StringOutput();
StaticMediaDispatcher.renderStaticURI(target, "", true);
xsltParameters.put("staticContextPath", target.toString());
......
......@@ -46,6 +46,7 @@
<value>org.olat.course.nodes.bc.BCWebService</value>
<value>org.olat.course.assessment.restapi.EfficiencyStatementWebService</value>
<value>org.olat.course.certificate.restapi.CertificationWebService</value>
<value>org.olat.ims.qti21.restapi.MathWebService</value>
<value>org.olat.modules.wiki.restapi.WikisWebService</value>
<value>org.olat.modules.fo.restapi.ForumImportWebService</value>
<value>org.olat.modules.fo.restapi.ForumCourseNodeWebService</value>
......
......@@ -38,6 +38,9 @@
</div>
</div>
<script type="text/javascript">
UpConversionAjaxController.setUpConversionServiceUrl('<xsl:value-of select="$olatWebappContextPath"/>/restapi/math/verifyAsciiMath');
UpConversionAjaxController.setDelay(300);
QtiWorksRendering.registerReadyCallback(function() {
var inputControlId = 'qtiworks_id_mathEntryInput_<xsl:value-of select="@responseIdentifier"/>';
var messageContainerId = 'qtiworks_id_mathEntryMessages_<xsl:value-of select="@responseIdentifier"/>';
......
......@@ -22,6 +22,7 @@ rendering.
<xsl:param name="webappContextPath" as="xs:string" required="yes"/>
<xsl:param name="staticContextPath" as="xs:string" required="yes"/>
<xsl:param name="fullWebappContextPath" as="xs:string" required="yes"/>
<xsl:param name="olatWebappContextPath" as="xs:string" required="yes"/>
<!-- QTIWorks version number -->
<xsl:param name="qtiWorksVersion" as="xs:string" required="yes"/>
......
......@@ -96,7 +96,7 @@ NB: This is used both while being presented, and during review.
<script src="{$webappContextPath}/rendering/javascript/UpConversionAjaxController.js?v={$qtiWorksVersion}"/>
<script src="{$webappContextPath}/rendering/javascript/AsciiMathInputController.js?v={$qtiWorksVersion}"/>
<script>
UpConversionAjaxController.setUpConversionServiceUrl('<xsl:value-of select="$webappContextPath"/>/candidate/verifyAsciiMath');
UpConversionAjaxController.setUpConversionServiceUrl('<xsl:value-of select="$webappContextPath"/>restapi/math/verifyAsciiMath');
UpConversionAjaxController.setDelay(300);
</script>
</xsl:if>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment