use of org.alfresco.web.config.WizardsConfigElement.ConditionalPageConfig in project acs-community-packaging by Alfresco.
the class WizardManager method determineCurrentPage.
/**
* Sets up the current page to show in the wizard
*/
protected void determineCurrentPage() {
// reset the current page config in the state object
this.currentWizardState.setCurrentPageCfg(null);
PageConfig currentPageCfg = null;
// get the config for the current step position
StepConfig stepCfg = this.currentWizardState.getSteps().get(this.currentWizardState.getCurrentStep() - 1);
// is the step conditional?
if (stepCfg.hasConditionalPages()) {
FacesContext context = FacesContext.getCurrentInstance();
// test each conditional page in turn
List<ConditionalPageConfig> pages = stepCfg.getConditionalPages();
for (ConditionalPageConfig pageCfg : pages) {
String condition = pageCfg.getCondition();
if (logger.isDebugEnabled())
logger.debug("Evaluating condition: " + condition);
ValueBinding vb = context.getApplication().createValueBinding(condition);
Object obj = vb.getValue(context);
if (obj instanceof Boolean && ((Boolean) obj).booleanValue()) {
currentPageCfg = pageCfg;
break;
}
}
}
// if none of the conditions passed use the default page
if (currentPageCfg == null) {
currentPageCfg = stepCfg.getDefaultPage();
}
if (currentPageCfg == null) {
throw new AlfrescoRuntimeException("Failed to determine page for step '" + stepCfg.getName() + "'. Make sure a default page is configured.");
}
// save the current page config in the state object
this.currentWizardState.setCurrentPageCfg(currentPageCfg);
if (logger.isDebugEnabled())
logger.debug("Config for current page: " + this.currentWizardState.getCurrentPageCfg());
}
use of org.alfresco.web.config.WizardsConfigElement.ConditionalPageConfig in project acs-community-packaging by Alfresco.
the class WizardsElementReader method parseStep.
/**
* Parses the given element which represents a step in a wizard
*
* @param step The Element representing the step
* @return A StepConfig object
*/
protected StepConfig parseStep(Element step) {
// get the name of the step and create the config object
String stepName = step.attributeValue(ATTR_NAME);
String stepTitle = step.attributeValue(ATTR_TITLE);
String stepTitleId = step.attributeValue(ATTR_TITLE_ID);
String stepDescription = step.attributeValue(ATTR_DESCRIPTION);
String stepDescriptionId = step.attributeValue(ATTR_DESCRIPTION_ID);
StepConfig stepCfg = new StepConfig(stepName, stepTitle, stepTitleId, stepDescription, stepDescriptionId);
// find and parse the default page
Element defaultPageElem = step.element(ELEMENT_PAGE);
if (defaultPageElem != null) {
String path = defaultPageElem.attributeValue(ATTR_PATH);
String title = defaultPageElem.attributeValue(ATTR_TITLE);
String titleId = defaultPageElem.attributeValue(ATTR_TITLE_ID);
String description = defaultPageElem.attributeValue(ATTR_DESCRIPTION);
String descriptionId = defaultPageElem.attributeValue(ATTR_DESCRIPTION_ID);
String instruction = defaultPageElem.attributeValue(ATTR_INSTRUCTION);
String instructionId = defaultPageElem.attributeValue(ATTR_INSTRUCTION_ID);
// create and set the page config on the step
stepCfg.setDefaultPage(new PageConfig(path, title, titleId, description, descriptionId, instruction, instructionId));
}
// find and parse any conditions that are present
Iterator<Element> conditions = step.elementIterator(ELEMENT_CONDITION);
while (conditions.hasNext()) {
Element conditionElem = conditions.next();
String ifAttr = conditionElem.attributeValue(ATTR_IF);
Element conditionalPageElem = conditionElem.element(ELEMENT_PAGE);
if (conditionalPageElem == null) {
throw new ConfigException("A condition in step '" + stepCfg.getName() + "' does not have a containing <page> element");
}
String path = conditionalPageElem.attributeValue(ATTR_PATH);
String title = conditionalPageElem.attributeValue(ATTR_TITLE);
String titleId = conditionalPageElem.attributeValue(ATTR_TITLE_ID);
String description = conditionalPageElem.attributeValue(ATTR_DESCRIPTION);
String descriptionId = conditionalPageElem.attributeValue(ATTR_DESCRIPTION_ID);
String instruction = conditionalPageElem.attributeValue(ATTR_INSTRUCTION);
String instructionId = conditionalPageElem.attributeValue(ATTR_INSTRUCTION_ID);
// create and add the page to the step
stepCfg.addConditionalPage(new ConditionalPageConfig(path, ifAttr, title, titleId, description, descriptionId, instruction, instructionId));
}
return stepCfg;
}
Aggregations