use of org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event in project openolat by klemens.
the class AssessmentItemFormItem method evalFormRequest.
@Override
public void evalFormRequest(UserRequest ureq) {
String uri = ureq.getModuleURI();
if (uri == null) {
QTIWorksAssessmentItemEvent event = null;
String cmd = ureq.getParameter("cid");
if (StringHelper.containsNonWhitespace(cmd)) {
switch(QTIWorksAssessmentItemEvent.Event.valueOf(cmd)) {
case solution:
event = new QTIWorksAssessmentItemEvent(solution, this);
break;
case resethard:
event = new QTIWorksAssessmentItemEvent(resethard, this);
break;
case resetsoft:
event = new QTIWorksAssessmentItemEvent(resetsoft, this);
break;
case close:
event = new QTIWorksAssessmentItemEvent(close, this);
break;
case tmpResponse:
{
event = new QTIWorksAssessmentItemEvent(tmpResponse, this);
break;
}
case exit:
event = new QTIWorksAssessmentItemEvent(exit, this);
break;
default:
event = null;
}
}
if (event != null) {
getRootForm().fireFormEvent(ureq, event);
}
}
}
use of org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event in project openolat by klemens.
the class AssessmentObjectComponentRenderer method renderExtendedTextBox.
/*
<xsl:template match="qti:extendedTextInteraction" mode="multibox">
<xsl:param name="responseInput" as="element(qw:responseInput)?"/>
<xsl:param name="checkJavaScript" as="xs:string?"/>
<xsl:param name="stringsCount" as="xs:integer"/>
<xsl:param name="allowCreate" select="false()" as="xs:boolean"/>
<xsl:variable name="interaction" select="." as="element(qti:extendedTextInteraction)"/>
<xsl:for-each select="1 to $stringsCount">
<xsl:variable name="i" select="." as="xs:integer"/>
<xsl:apply-templates select="$interaction" mode="singlebox">
<xsl:with-param name="responseInputString" select="$responseInput/qw:string[position()=$i]"/>
<xsl:with-param name="checkJavaScript" select="$checkJavaScript"/>
<xsl:with-param name="allowCreate" select="$allowCreate and $i=$stringsCount"/>
</xsl:apply-templates>
<br />
</xsl:for-each>
</xsl:template>
<xsl:template match="qti:extendedTextInteraction" mode="singlebox">
<xsl:param name="responseInputString" as="xs:string?"/>
<xsl:param name="checkJavaScript" as="xs:string?"/>
<xsl:param name="allowCreate" select="false()" as="xs:boolean"/>
<xsl:variable name="is-bad-response" select="qw:is-bad-response(@responseIdentifier)" as="xs:boolean"/>
<xsl:variable name="is-invalid-response" select="qw:is-invalid-response(@responseIdentifier)" as="xs:boolean"/>
<textarea cols="72" rows="6" name="qtiworks_response_{@responseIdentifier}">
<xsl:if test="$isItemSessionEnded">
<xsl:attribute name="disabled">disabled</xsl:attribute>
</xsl:if>
<xsl:if test="$is-bad-response or $is-invalid-response">
<xsl:attribute name="class" select="'badResponse'"/>
</xsl:if>
<xsl:if test="@expectedLines">
<xsl:attribute name="rows" select="@expectedLines"/>
</xsl:if>
<xsl:if test="@expectedLines and @expectedLength">
<xsl:attribute name="cols" select="ceiling(@expectedLength div @expectedLines)"/>
</xsl:if>
<xsl:if test="$checkJavaScript">
<xsl:attribute name="onchange" select="$checkJavaScript"/>
</xsl:if>
<xsl:if test="$allowCreate">
<xsl:attribute name="onkeyup" select="'QtiWorksRendering.addNewTextBox(this)'"/>
</xsl:if>
<xsl:value-of select="$responseInputString"/>
</textarea>
</xsl:template>
*/
protected void renderExtendedTextBox(AssessmentRenderer renderer, StringOutput sb, AssessmentObjectComponent component, AssessmentItem assessmentItem, ItemSessionState itemSessionState, ExtendedTextInteraction interaction, String responseInputString) {
String responseUniqueId = component.getResponseUniqueIdentifier(itemSessionState, interaction);
boolean ended = component.isItemSessionEnded(itemSessionState, renderer.isSolutionMode());
int expectedLines = interaction.getExpectedLines() == null ? 6 : interaction.getExpectedLines().intValue();
if (ended) {
sb.append("<div id='oo_").append(responseUniqueId).append("' style='min-height:").append(expectedLines * 1.5).append("em;' class='form-control textarea_disabled o_disabled o_form_element_disabled");
} else {
sb.append("<textarea id='oo_").append(responseUniqueId).append("' name='qtiworks_response_").append(responseUniqueId).append("'");
if (StringHelper.containsNonWhitespace(interaction.getPlaceholderText())) {
sb.append(" placeholder=\"").append(StringHelper.escapeHtml(interaction.getPlaceholderText())).append("\"");
}
sb.append(" rows='").append(expectedLines).append("'");
if (interaction.getExpectedLength() == null) {
sb.append(" cols='72'");
} else {
int cols = interaction.getExpectedLength().intValue() / expectedLines;
sb.append(" cols='").append(cols).append("'");
}
ResponseDeclaration responseDeclaration = getResponseDeclaration(assessmentItem, interaction.getResponseIdentifier());
String checkJavascript = checkJavaScript(responseDeclaration, interaction.getPatternMask());
if (StringHelper.containsNonWhitespace(checkJavascript)) {
sb.append(" onchange=\"").append(checkJavascript).append("\"");
}
sb.append(" class='form-control");
}
if (isBadResponse(itemSessionState, interaction.getResponseIdentifier()) || isInvalidResponse(itemSessionState, interaction.getResponseIdentifier())) {
sb.append(" badResponse");
}
sb.append("'>");
if (renderer.isSolutionMode()) {
String placeholder = interaction.getPlaceholderText();
if (StringHelper.containsNonWhitespace(placeholder)) {
sb.append(placeholder);
}
} else if (StringHelper.containsNonWhitespace(responseInputString)) {
sb.append(responseInputString);
}
if (ended) {
sb.append("</div>");
} else {
sb.append("</textarea>");
FormJSHelper.appendFlexiFormDirty(sb, component.getQtiItem().getRootForm(), "oo_" + responseUniqueId);
sb.append(FormJSHelper.getJSStartWithVarDeclaration("oo_" + responseUniqueId)).append("oo_").append(responseUniqueId).append(".on('keypress', function(event, target){if (13 == event.keyCode) {event.stopPropagation()} })").append(FormJSHelper.getJSEnd());
Form form = component.getQtiItem().getRootForm();
sb.append(FormJSHelper.getJSStart()).append("jQuery(function() {\n").append(" jQuery('#").append("oo_").append(responseUniqueId).append("').qtiAutosave({\n").append(" responseUniqueId:'").append(responseUniqueId).append("',\n").append(" formName:'").append(form.getFormName()).append("',\n").append(" dispIdField:'").append(form.getDispatchFieldId()).append("',\n").append(" dispId:'").append(component.getQtiItem().getFormDispatchId()).append("',\n").append(" eventIdField:'").append(form.getEventFieldId()).append("'\n").append(" }).tabOverride();\n").append("})\n").append(FormJSHelper.getJSEnd());
}
}
use of org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event in project openolat by klemens.
the class CorrectionIdentityAssessmentItemListController method formInnerEvent.
@Override
protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
if (tableEl == source) {
if (event instanceof SelectionEvent) {
SelectionEvent se = (SelectionEvent) event;
String cmd = se.getCommand();
if ("select".equals(cmd)) {
CorrectionIdentityAssessmentItemRow row = tableModel.getObject(se.getIndex());
doSelect(ureq, row);
}
}
} else if (saveButton == source) {
List<AssessmentTestSession> sessions = Collections.singletonList(candidateSession);
AssessmentTest assessmentTest = model.getResolvedAssessmentTest().getRootNodeLookup().extractIfSuccessful();
fireEvent(ureq, new CompleteAssessmentTestSessionEvent(sessions, assessmentTest, AssessmentEntryStatus.done));
}
super.formInnerEvent(ureq, source, event);
}
use of org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event in project openolat by klemens.
the class CorrectionIdentityListController method formInnerEvent.
@Override
protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
if (tableEl == source) {
if (event instanceof SelectionEvent) {
SelectionEvent se = (SelectionEvent) event;
String cmd = se.getCommand();
if ("select".equals(cmd)) {
CorrectionIdentityRow row = tableModel.getObject(se.getIndex());
doSelect(ureq, row);
}
}
} else if (saveTestsButton == source) {
doConfirmSaveTests(ureq);
}
super.formInnerEvent(ureq, source, event);
}
use of org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event in project openolat by klemens.
the class AssessmentItemEditorController method event.
@Override
protected void event(UserRequest ureq, Component source, Event event) {
if (tabbedPane == source) {
Controller selectedCtrl = tabbedPane.getSelectedController();
if (selectedCtrl instanceof SyncAssessmentItem) {
((SyncAssessmentItem) selectedCtrl).sync(ureq, itemBuilder);
} else if (selectedCtrl == displayCtrl) {
if (testEntry != null) {
AssessmentEntry assessmentEntry = assessmentService.getOrCreateAssessmentEntry(getIdentity(), null, testEntry, null, testEntry);
displayCtrl = new AssessmentItemPreviewController(ureq, getWindowControl(), resolvedAssessmentItem, itemRef, testEntry, assessmentEntry, rootDirectory, itemFile);
} else {
displayCtrl = new AssessmentItemPreviewController(ureq, getWindowControl(), resolvedAssessmentItem, rootDirectory, itemFile);
}
listenTo(displayCtrl);
tabbedPane.replaceTab(displayTabPosition, displayCtrl);
} else if (selectedCtrl == solutionCtrl) {
solutionCtrl = new AssessmentItemPreviewSolutionController(ureq, getWindowControl(), resolvedAssessmentItem, rootDirectory, itemFile);
listenTo(displayCtrl);
tabbedPane.replaceTab(solutionTabPosition, solutionCtrl);
}
}
}
Aggregations