use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.
the class AssessmentTestComponentRenderer method renderControl.
private void renderControl(StringOutput sb, AssessmentTestComponent component, String title, boolean primary, String cssClass, NameValuePair... pairs) {
Form form = component.getQtiItem().getRootForm();
String dispatchId = component.getQtiItem().getFormDispatchId();
sb.append("<button type='button' onclick=\"");
sb.append(FormJSHelper.getXHRFnCallFor(form, dispatchId, 1, true, true, pairs)).append(";\" class='btn ").append("btn-primary ", "btn-default ", primary).append(cssClass).append("'").append("><span>").append(title).append("</span></button>");
}
use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.
the class AssessmentTestComponentRenderer method renderNavigationAssessmentItem.
private void renderNavigationAssessmentItem(StringOutput sb, AssessmentTestComponent component, TestPlanNode itemNode, Translator translator) {
String key = itemNode.getKey().toString();
sb.append("<li class='o_assessmentitem'>");
sb.append("<button type='button' onclick=\"");
Form form = component.getQtiItem().getRootForm();
String dispatchId = component.getQtiItem().getFormDispatchId();
sb.append(FormJSHelper.getXHRFnCallFor(form, dispatchId, 1, true, true, new NameValuePair("cid", Event.selectItem.name()), new NameValuePair("item", key)));
sb.append(";\" class='btn btn-default'><span class='questionTitle'>").append(StringHelper.escapeHtml(itemNode.getSectionPartTitle())).append("</span>");
ItemSessionState itemSessionState = component.getItemSessionState(itemNode.getKey());
if (itemSessionState.getEndTime() != null) {
renderItemStatusMessage("ended", "assessment.item.status.finished", sb, translator);
} else if (itemSessionState.getUnboundResponseIdentifiers().size() > 0 || itemSessionState.getInvalidResponseIdentifiers().size() > 0) {
renderItemStatusMessage("invalid", "assessment.item.status.needsAttention", sb, translator);
} else if (itemSessionState.isResponded() || itemSessionState.hasUncommittedResponseValues()) {
renderItemStatusMessage("answered", "assessment.item.status.answered", sb, translator);
} else if (itemSessionState.getEntryTime() != null) {
renderItemStatusMessage("notAnswered", "assessment.item.status.notAnswered", sb, translator);
} else {
renderItemStatusMessage("notPresented", "assessment.item.status.notSeen", sb, translator);
}
sb.append("</button>");
sb.append("</li>");
}
use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.
the class AssessmentTestComponentRenderer method renderNavigation.
private void renderNavigation(AssessmentRenderer renderer, StringOutput sb, AssessmentTestComponent component, URLBuilder ubu, Translator translator) {
if (component.isRenderNavigation()) {
sb.append("<div id='o_qti_menu' class='qtiworks o_assessmenttest o_testpartnavigation o_qti_menu_buttonstyle'>");
// title
boolean multiPartTest = component.hasMultipleTestParts();
String title = multiPartTest ? translator.translate("assessment.test.nav.title.multiPartTestMenu") : translator.translate("assessment.test.nav.title.questionMenu");
sb.append("<h3>").append(title).append("</h3>");
// part, sections and item refs
sb.append("<ul class='o_testpartnavigation list-unstyled'>");
component.getCurrentTestPartNode().getChildren().forEach((node) -> renderNavigation(renderer, sb, component, node, ubu, translator));
sb.append("</ul>");
// test controls
TestSessionController testSessionController = component.getTestSessionController();
boolean allowedToEndTestPart = testSessionController.getTestSessionState().getCurrentTestPartKey() != null && testSessionController.mayEndCurrentTestPart();
sb.append("<div class='o_button_group'>");
sb.append("<button type='button' onclick=\"");
if (allowedToEndTestPart) {
Form form = component.getQtiItem().getRootForm();
String dispatchId = component.getQtiItem().getFormDispatchId();
sb.append(FormJSHelper.getXHRFnCallFor(form, dispatchId, 1, true, true, new NameValuePair("cid", Event.endTestPart.name())));
} else {
sb.append("javascript:");
}
String endTestTitle = multiPartTest ? translator.translate("assessment.test.end.testPart") : translator.translate("assessment.test.end.test");
sb.append(";\" class='btn btn-default o_sel_end_testpart'").append(" disabled", !allowedToEndTestPart).append("><span>").append(endTestTitle).append("</span>");
sb.append("</button>");
sb.append("</div></div>");
}
}
use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.
the class AssessmentTreeComponentRenderer method renderAssessmentItemLink.
/**
* @param sb
* @param component
* @param itemNode
* @return The event used or null
*/
private Event renderAssessmentItemLink(StringOutput sb, AssessmentTreeComponent component, TestPlanNode itemNode, Translator translator) {
String key = itemNode.getKey().toString();
Form form = component.getQtiItem().getRootForm();
String dispatchId = component.getQtiItem().getFormDispatchId();
TestSessionController testSessionController = component.getTestSessionController();
TestSessionState testSessionState = testSessionController.getTestSessionState();
TestPart testPart = testSessionController.getCurrentTestPart();
TestPlanNodeKey currentTestPartKey = testSessionState.getCurrentTestPartKey();
TestPartSessionState currentTestPartSessionState = testSessionState.getTestPartSessionStates().get(currentTestPartKey);
Event event;
if (testPart == null || testPart.getNavigationMode() == NavigationMode.NONLINEAR) {
if (testSessionState.isEnded() || currentTestPartSessionState.isEnded()) {
if (itemNode.getEffectiveItemSessionControl().isAllowReview() || itemNode.getEffectiveItemSessionControl().isShowFeedback()) {
event = Event.reviewItem;
} else {
event = null;
}
} else {
event = Event.selectItem;
}
} else {
event = null;
}
if (event == null) {
sb.append("<span class='o_assessmentitem_nav_disabled'>");
} else {
sb.append("<a href='javascript:;' onclick=\"").append(FormJSHelper.getXHRFnCallFor(form, dispatchId, 1, true, true, new NameValuePair("cid", event.name()), new NameValuePair("item", key))).append(";\" class='o_sel_assessmentitem'>");
}
String title;
if (component.isShowTitles()) {
title = StringHelper.escapeHtml(itemNode.getSectionPartTitle());
} else {
int num = component.getCandidateSessionContext().getNumber(itemNode);
title = translator.translate("question.title", new String[] { Integer.toString(num) });
}
sb.append("<span class='questionTitle'>").append(title).append("</span>");
if (event == null) {
sb.append("</span>");
} else {
sb.append("</a>");
}
return event;
}
use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.
the class StaticFlexiCellRenderer method render.
@Override
public void render(Renderer renderer, StringOutput target, Object cellValue, int row, FlexiTableComponent source, URLBuilder ubu, Translator translator) {
String cellAction = getAction();
if (StringHelper.containsNonWhitespace(cellAction)) {
FlexiTableElementImpl ftE = source.getFlexiTableElement();
String id = source.getFormDispatchId();
Form rootForm = ftE.getRootForm();
NameValuePair pair = new NameValuePair(cellAction, Integer.toString(row));
String jsCode = FormJSHelper.getXHRFnCallFor(rootForm, id, 1, true, true, pair);
target.append("<a href=\"javascript:").append(jsCode).append(";\"");
if (StringHelper.containsNonWhitespace(linkTitle)) {
target.append(" title=\"").append(StringEscapeUtils.escapeHtml(linkTitle)).append("\"");
}
if (StringHelper.containsNonWhitespace(linkCSS)) {
target.append(" class=\"").append(linkCSS).append("\"");
}
target.append(">");
if (StringHelper.containsNonWhitespace(iconLeftCSS)) {
target.append("<i class=\"o_icon ").append(iconLeftCSS).append("\"> </i>");
}
if (labelDelegate == null) {
target.append(getLabel());
} else {
labelDelegate.render(renderer, target, cellValue, row, source, ubu, translator);
}
if (StringHelper.containsNonWhitespace(iconRightCSS)) {
target.append(" <i class=\"o_icon ").append(iconRightCSS).append("\"> </i>");
}
target.append("</a>");
} else if (labelDelegate == null) {
target.append(getLabel());
} else {
labelDelegate.render(renderer, target, cellValue, row, source, ubu, translator);
}
}
Aggregations