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();
}
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();
}
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());
}
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);
}
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());
}
Aggregations