Search in sources :

Example 26 with Form

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>");
}
Also used : Form(org.olat.core.gui.components.form.flexible.impl.Form) AssessmentRenderFunctions.contentAsString(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.contentAsString)

Example 27 with Form

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>");
}
Also used : NameValuePair(org.olat.core.gui.components.form.flexible.impl.NameValuePair) Form(org.olat.core.gui.components.form.flexible.impl.Form) ItemSessionState(uk.ac.ed.ph.jqtiplus.state.ItemSessionState) AssessmentRenderFunctions.contentAsString(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.contentAsString)

Example 28 with Form

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>");
    }
}
Also used : NameValuePair(org.olat.core.gui.components.form.flexible.impl.NameValuePair) Form(org.olat.core.gui.components.form.flexible.impl.Form) TestSessionController(uk.ac.ed.ph.jqtiplus.running.TestSessionController) AssessmentRenderFunctions.contentAsString(org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.contentAsString)

Example 29 with Form

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;
}
Also used : NameValuePair(org.olat.core.gui.components.form.flexible.impl.NameValuePair) TestSessionState(uk.ac.ed.ph.jqtiplus.state.TestSessionState) Form(org.olat.core.gui.components.form.flexible.impl.Form) TestPart(uk.ac.ed.ph.jqtiplus.node.test.TestPart) TestSessionController(uk.ac.ed.ph.jqtiplus.running.TestSessionController) Event(org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event) CandidateEvent(org.olat.ims.qti21.model.audit.CandidateEvent) TestPartSessionState(uk.ac.ed.ph.jqtiplus.state.TestPartSessionState) TestPlanNodeKey(uk.ac.ed.ph.jqtiplus.state.TestPlanNodeKey)

Example 30 with Form

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("\">&nbsp;</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("\">&nbsp;</i>");
        }
        target.append("</a>");
    } else if (labelDelegate == null) {
        target.append(getLabel());
    } else {
        labelDelegate.render(renderer, target, cellValue, row, source, ubu, translator);
    }
}
Also used : NameValuePair(org.olat.core.gui.components.form.flexible.impl.NameValuePair) Form(org.olat.core.gui.components.form.flexible.impl.Form)

Aggregations

Form (org.olat.core.gui.components.form.flexible.impl.Form)64 NameValuePair (org.olat.core.gui.components.form.flexible.impl.NameValuePair)42 AssessmentRenderFunctions.contentAsString (org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.contentAsString)10 Component (org.olat.core.gui.components.Component)4 FlexiTableFilter (org.olat.core.gui.components.form.flexible.elements.FlexiTableFilter)4 FlexiTableSort (org.olat.core.gui.components.form.flexible.elements.FlexiTableSort)4 StringOutput (org.olat.core.gui.render.StringOutput)4 TestSessionController (uk.ac.ed.ph.jqtiplus.running.TestSessionController)4 File (java.io.File)2 ArrayList (java.util.ArrayList)2 Calendar (java.util.Calendar)2 HashSet (java.util.HashSet)2 Matcher (java.util.regex.Matcher)2 SortKey (org.olat.core.commons.persistence.SortKey)2 TextBoxListElementComponent (org.olat.core.gui.components.form.flexible.impl.elements.TextBoxListElementComponent)2 TextBoxListElementImpl (org.olat.core.gui.components.form.flexible.impl.elements.TextBoxListElementImpl)2 TextModeState (org.olat.core.gui.components.form.flexible.impl.elements.richText.RichTextElementImpl.TextModeState)2 FlexiTableElementImpl (org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableElementImpl)2 VelocityContainer (org.olat.core.gui.components.velocity.VelocityContainer)2 AJAXFlags (org.olat.core.gui.control.winmgr.AJAXFlags)2