Search in sources :

Example 1 with Submit

use of org.olat.core.gui.components.form.flexible.elements.Submit in project OpenOLAT by OpenOLAT.

the class Form method evalFormRequest.

/**
 * @param ureq
 */
public void evalFormRequest(UserRequest ureq) {
    // Initialize temporary request parameters
    if (isMultipartEnabled() && isMultipartContent(ureq.getHttpReq())) {
        doInitRequestMultipartDataParameter(ureq);
    } else {
        doInitRequestParameter(ureq);
    }
    String dispatchUri = getRequestParameter("dispatchuri");
    String dispatchAction = getRequestParameter("dispatchevent");
    boolean invalidDispatchUri = dispatchUri == null || dispatchUri.equals(FORM_UNDEFINED);
    boolean invalidDispatchAct = dispatchAction == null || dispatchAction.equals(FORM_UNDEFINED);
    // see also OLAT-3141
    boolean implicitFormSubmit = false;
    if (invalidDispatchAct && invalidDispatchUri) {
        // case if:
        // enter was pressed in Safari / IE
        // crawler tries form links
        SubmitFormComponentVisitor efcv = new SubmitFormComponentVisitor();
        new FormComponentTraverser(efcv, formLayout, false).visitAll(ureq);
        Submit submitFormItem = efcv.getSubmit();
        if (submitFormItem != null) {
            // if we have submit form item
            // assume a click on this item
            dispatchUri = FormBaseComponentIdProvider.DISPPREFIX + submitFormItem.getComponent().getDispatchID();
            action = FormEvent.ONCLICK;
        } else {
            // instead of
            // throw new AssertException("You have an input field but no submit item defined! this is no good if enter is pressed.");
            // assume a desired implicit form submit
            // see also OLAT-3141
            implicitFormSubmit = true;
        }
    } else {
        try {
            action = Integer.valueOf(dispatchAction);
        } catch (Exception e) {
            throw new InvalidRequestParameterException();
        }
    }
    hasAlreadyFired = false;
    isValidAndSubmitted = false;
    // 
    // step 1: call evalFormRequest(ureq) on each FormComponent this gives
    // ....... for each element the possibility to intermediate save a value.
    // ....... As a sideeffect the formcomponent to be dispatched is found.
    EvaluatingFormComponentVisitor efcv = new EvaluatingFormComponentVisitor(dispatchUri);
    FormComponentTraverser ct = new FormComponentTraverser(efcv, formLayout, false);
    ct.visitAll(ureq);
    // step 2: dispatch to the form component
    // ......... only one component to be dispatched can be found, e.g. clicked
    // ......... element....................................................
    // ......... dispatch changes server model -> rerendered
    // ......... dispatch may also request a form validation by
    // ......... calling the submit
    FormItem dispatchFormItem = efcv.getDispatchToComponent();
    // .......... the code goes further with step 3.........................
    if (implicitFormSubmit) {
        // implicit Submit (Press Enter without on a Field without submit item.)
        // see also OLAT-3141
        submit(ureq);
    } else {
        if (dispatchFormItem == null) {
            // source not found. This "never happens". Try to produce some hints.
            String fbc = new String();
            for (FormBasicController i : formListeners) {
                if (fbc.length() > 0) {
                    fbc += ",";
                }
                fbc += (i.getClass().getName());
            }
            log.warn("OLAT-5061: Could not determine request source in FlexiForm >" + formName + "<. Check >" + fbc + "<", null);
            // TODO: what now?
            // Assuming the same as "implicitFormSubmit" for now.
            submit(ureq);
        } else {
            // ****************************************
            // explicit Submit or valid form dispatch *
            // ****************************************
            dispatchFormItem.doDispatchFormRequest(ureq);
            // step 3: find parent container of dispatched component
            // .......... check dependency rules
            // .......... apply dependency rules
            FindParentFormComponentVisitor fpfcv = new FindParentFormComponentVisitor(dispatchFormItem);
            ct = new FormComponentTraverser(fpfcv, formLayout, false);
            ct.visitAll(ureq);
            fpfcv.getParent().evalDependencyRuleSetFor(ureq, dispatchFormItem);
        }
    }
    // 
    action = -1;
    // End of request dispatch: cleanup temp files: ureq requestParams and multipart files
    doClearRequestParameterAndMultipartData();
}
Also used : FormComponentTraverser(org.olat.core.util.component.FormComponentTraverser) FormItem(org.olat.core.gui.components.form.flexible.FormItem) Submit(org.olat.core.gui.components.form.flexible.elements.Submit) AssertException(org.olat.core.logging.AssertException) ServletException(javax.servlet.ServletException) IOException(java.io.IOException)

Example 2 with Submit

use of org.olat.core.gui.components.form.flexible.elements.Submit in project openolat by klemens.

the class Form method evalFormRequest.

/**
 * @param ureq
 */
public void evalFormRequest(UserRequest ureq) {
    // Initialize temporary request parameters
    if (isMultipartEnabled() && isMultipartContent(ureq.getHttpReq())) {
        doInitRequestMultipartDataParameter(ureq);
    } else {
        doInitRequestParameter(ureq);
    }
    String dispatchUri = getRequestParameter("dispatchuri");
    String dispatchAction = getRequestParameter("dispatchevent");
    boolean invalidDispatchUri = dispatchUri == null || dispatchUri.equals(FORM_UNDEFINED);
    boolean invalidDispatchAct = dispatchAction == null || dispatchAction.equals(FORM_UNDEFINED);
    // see also OLAT-3141
    boolean implicitFormSubmit = false;
    if (invalidDispatchAct && invalidDispatchUri) {
        // case if:
        // enter was pressed in Safari / IE
        // crawler tries form links
        SubmitFormComponentVisitor efcv = new SubmitFormComponentVisitor();
        new FormComponentTraverser(efcv, formLayout, false).visitAll(ureq);
        Submit submitFormItem = efcv.getSubmit();
        if (submitFormItem != null) {
            // if we have submit form item
            // assume a click on this item
            dispatchUri = FormBaseComponentIdProvider.DISPPREFIX + submitFormItem.getComponent().getDispatchID();
            action = FormEvent.ONCLICK;
        } else {
            // instead of
            // throw new AssertException("You have an input field but no submit item defined! this is no good if enter is pressed.");
            // assume a desired implicit form submit
            // see also OLAT-3141
            implicitFormSubmit = true;
        }
    } else {
        try {
            action = Integer.valueOf(dispatchAction);
        } catch (Exception e) {
            throw new InvalidRequestParameterException();
        }
    }
    hasAlreadyFired = false;
    isValidAndSubmitted = false;
    // 
    // step 1: call evalFormRequest(ureq) on each FormComponent this gives
    // ....... for each element the possibility to intermediate save a value.
    // ....... As a sideeffect the formcomponent to be dispatched is found.
    EvaluatingFormComponentVisitor efcv = new EvaluatingFormComponentVisitor(dispatchUri);
    FormComponentTraverser ct = new FormComponentTraverser(efcv, formLayout, false);
    ct.visitAll(ureq);
    // step 2: dispatch to the form component
    // ......... only one component to be dispatched can be found, e.g. clicked
    // ......... element....................................................
    // ......... dispatch changes server model -> rerendered
    // ......... dispatch may also request a form validation by
    // ......... calling the submit
    FormItem dispatchFormItem = efcv.getDispatchToComponent();
    // .......... the code goes further with step 3.........................
    if (implicitFormSubmit) {
        // implicit Submit (Press Enter without on a Field without submit item.)
        // see also OLAT-3141
        submit(ureq);
    } else {
        if (dispatchFormItem == null) {
            // source not found. This "never happens". Try to produce some hints.
            String fbc = new String();
            for (FormBasicController i : formListeners) {
                if (fbc.length() > 0) {
                    fbc += ",";
                }
                fbc += (i.getClass().getName());
            }
            log.warn("OLAT-5061: Could not determine request source in FlexiForm >" + formName + "<. Check >" + fbc + "<", null);
            // TODO: what now?
            // Assuming the same as "implicitFormSubmit" for now.
            submit(ureq);
        } else {
            // ****************************************
            // explicit Submit or valid form dispatch *
            // ****************************************
            dispatchFormItem.doDispatchFormRequest(ureq);
            // step 3: find parent container of dispatched component
            // .......... check dependency rules
            // .......... apply dependency rules
            FindParentFormComponentVisitor fpfcv = new FindParentFormComponentVisitor(dispatchFormItem);
            ct = new FormComponentTraverser(fpfcv, formLayout, false);
            ct.visitAll(ureq);
            fpfcv.getParent().evalDependencyRuleSetFor(ureq, dispatchFormItem);
        }
    }
    // 
    action = -1;
    // End of request dispatch: cleanup temp files: ureq requestParams and multipart files
    doClearRequestParameterAndMultipartData();
}
Also used : FormComponentTraverser(org.olat.core.util.component.FormComponentTraverser) FormItem(org.olat.core.gui.components.form.flexible.FormItem) Submit(org.olat.core.gui.components.form.flexible.elements.Submit) AssertException(org.olat.core.logging.AssertException) ServletException(javax.servlet.ServletException) IOException(java.io.IOException)

Example 3 with Submit

use of org.olat.core.gui.components.form.flexible.elements.Submit in project OpenOLAT by OpenOLAT.

the class FileCreatorController method initForm.

@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
    setFormTitle("filecreator.text.newfile");
    // Global target directory
    String path = "/ " + baseContainer.getName();
    VFSContainer container = baseContainer.getParentContainer();
    while (container != null) {
        path = "/ " + container.getName() + " " + path;
        container = container.getParentContainer();
    }
    uifactory.addStaticTextElement("ul.target", path, formLayout);
    // Sub path, can be modified
    targetSubPath = uifactory.addInlineTextElement("ul.target.child", subfolderPath, formLayout, this);
    targetSubPath.setLabel("ul.target.child", null);
    // The file name of the new file
    fileNameElement = FormUIFactory.getInstance().addTextElement("fileName", "filecreator.filename", 50, "", formLayout);
    fileNameElement.setPlaceholderKey("filecreator.filename.placeholder", null);
    fileNameElement.setMandatory(true);
    // Add buttons
    FormLayoutContainer buttons = FormLayoutContainer.createButtonLayout("buttonGroupLayout", getTranslator());
    formLayout.add(buttons);
    Submit createFile = new FormSubmit("submit", "button.create");
    buttons.add(createFile);
    uifactory.addFormCancelButton("cancel", buttons, ureq, getWindowControl());
}
Also used : FormSubmit(org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit) VFSContainer(org.olat.core.util.vfs.VFSContainer) FormLayoutContainer(org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer) Submit(org.olat.core.gui.components.form.flexible.elements.Submit) FormSubmit(org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit)

Example 4 with Submit

use of org.olat.core.gui.components.form.flexible.elements.Submit in project OpenOLAT by OpenOLAT.

the class ChoiceController method initForm.

/**
 * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer,
 *      org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)
 */
@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
    if (singleSelection && layoutVertical) {
        entrySelector = uifactory.addRadiosVertical(selectionName, null, formLayout, keysIn, translatedKeys);
    } else if (singleSelection && !layoutVertical) {
        entrySelector = uifactory.addRadiosHorizontal(selectionName, null, formLayout, keysIn, translatedKeys);
    } else if (!singleSelection && layoutVertical) {
        entrySelector = uifactory.addCheckboxesVertical(selectionName, null, formLayout, keysIn, translatedKeys, 1);
    } else if (!singleSelection && !layoutVertical) {
        entrySelector = uifactory.addCheckboxesHorizontal(selectionName, null, formLayout, keysIn, translatedKeys);
    }
    // add Submit
    Submit subm = new FormSubmit("subm", submitI18nKey);
    formLayout.add(subm);
}
Also used : FormSubmit(org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit) Submit(org.olat.core.gui.components.form.flexible.elements.Submit) FormSubmit(org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit)

Example 5 with Submit

use of org.olat.core.gui.components.form.flexible.elements.Submit in project openolat by klemens.

the class FileCreatorController method initForm.

@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
    setFormTitle("filecreator.text.newfile");
    // Global target directory
    String path = "/ " + baseContainer.getName();
    VFSContainer container = baseContainer.getParentContainer();
    while (container != null) {
        path = "/ " + container.getName() + " " + path;
        container = container.getParentContainer();
    }
    uifactory.addStaticTextElement("ul.target", path, formLayout);
    // Sub path, can be modified
    targetSubPath = uifactory.addInlineTextElement("ul.target.child", subfolderPath, formLayout, this);
    targetSubPath.setLabel("ul.target.child", null);
    // The file name of the new file
    fileNameElement = FormUIFactory.getInstance().addTextElement("fileName", "filecreator.filename", 50, "", formLayout);
    fileNameElement.setPlaceholderKey("filecreator.filename.placeholder", null);
    fileNameElement.setMandatory(true);
    // Add buttons
    FormLayoutContainer buttons = FormLayoutContainer.createButtonLayout("buttonGroupLayout", getTranslator());
    formLayout.add(buttons);
    Submit createFile = new FormSubmit("submit", "button.create");
    buttons.add(createFile);
    uifactory.addFormCancelButton("cancel", buttons, ureq, getWindowControl());
}
Also used : FormSubmit(org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit) VFSContainer(org.olat.core.util.vfs.VFSContainer) FormLayoutContainer(org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer) Submit(org.olat.core.gui.components.form.flexible.elements.Submit) FormSubmit(org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit)

Aggregations

Submit (org.olat.core.gui.components.form.flexible.elements.Submit)6 FormSubmit (org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit)4 IOException (java.io.IOException)2 ServletException (javax.servlet.ServletException)2 FormItem (org.olat.core.gui.components.form.flexible.FormItem)2 FormLayoutContainer (org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer)2 AssertException (org.olat.core.logging.AssertException)2 FormComponentTraverser (org.olat.core.util.component.FormComponentTraverser)2 VFSContainer (org.olat.core.util.vfs.VFSContainer)2