/** * gets the redirect URL as workaround for opening a new window or refreshing a window (Noscript * version) */ private String getWindowOpener() { String result = ""; IServiceStateInfo stateInfo = ContextProvider.getStateInfo(); WebForm activeForm = FormManager.getActive(); WebForm[] allForms = FormManager.getAll(); boolean finished = false; for (int i = 0; !finished && i < allForms.length; i++) { WebForm form = allForms[i]; IFormAdapter formAdapter = WebFormUtil.getFormAdapter(form); if (stateInfo.isExpired()) { if (!formAdapter.getWindowOpenerBuffer().equals("")) { result = formAdapter.getWindowOpenerBuffer(); finished = true; } } else { if (WebComponentControl.openInNewWindow(form) || WebComponentControl.refreshWindow(form)) { result = "<meta http-equiv=\"refresh\" content=\"0; url=" + RenderUtil.createEncodedFormGetURL(form) + "\">"; formAdapter.addWindowOpenerBuffer(result); NoscriptFormStack.getInstance().push(activeForm); finished = true; } else { formAdapter.addWindowOpenerBuffer(""); } } } return result; }
private String getWindowCloser() { String result = ""; boolean isActiveForm = false; WebForm[] allForms = FormManager.getAll(); // remove all closed windows except the active window for (int i = 0; i < allForms.length; i++) { WebForm form = allForms[i]; if (form != FormManager.getActive()) { IWindow window = W4TContext.getWindowManager().findWindow(form); if (window != null && WindowManager.isClosing(window)) { NoscriptFormStack.getInstance().remove(form); } } } // 'close' active window IWindow activeWindow = WindowManager.getActive(); if (WindowManager.isClosing(activeWindow) && !WindowManager.isClosed(activeWindow)) { isActiveForm = true; NoscriptFormStack.getInstance().remove(FormManager.getActive()); WindowManager.setClosed(activeWindow, true); } // create meta tag to redirect to previous form if (isActiveForm && !NoscriptFormStack.getInstance().isEmpty()) { WebForm newForm = NoscriptFormStack.getInstance().pop(); result = "<meta http-equiv=\"refresh\" content=\"0; url=" + RenderUtil.createEncodedFormGetURL(newForm) + "\">"; } return result; }
/** builds the String containing attributes for the <body> tag */ StringBuffer getBodyAttributes() { StringBuffer result = new StringBuffer(); WebForm form = FormManager.getActive(); if (form != null) { HTMLUtil.attribute(result, HTML.BGCOLOR, form.getBgColor().toString()); HTMLUtil.attribute(result, HTML.TEXT, form.getTextColor().toString()); HTMLUtil.attribute(result, HTML.LEFTMARGIN, form.getLeftmargin()); HTMLUtil.attribute(result, HTML.TOPMARGIN, form.getTopmargin()); HTMLUtil.attribute(result, HTML.MARGINHEIGHT, form.getMarginheight()); HTMLUtil.attribute(result, HTML.MARGINWIDTH, form.getMarginwidth()); result.append(" "); result.append(WebComponentControl.getUniversalAttributes(form)); result.append(" "); } return result; }
public Form deserializeForm(Node nodeForm, String path, Map<String, Properties> resources) throws Exception { if (!nodeForm.getNodeName().equals(NODE_FORM)) return null; Form form = formManager.createForm(""); form.setId( Long.valueOf( StringEscapeUtils.unescapeXml( nodeForm.getAttributes().getNamedItem(ATTR_ID).getNodeValue()))); Set<Field> fields = new TreeSet<Field>(); NodeList childNodes = nodeForm.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { Node node = childNodes.item(i); if (node.getNodeName().equals(NODE_PROPERTY)) { String propName = node.getAttributes().getNamedItem(ATTR_NAME).getNodeValue(); String value = StringEscapeUtils.unescapeXml( node.getAttributes().getNamedItem(ATTR_VALUE).getNodeValue()); if ("subject".equals(propName)) { form.setSubject(value); } else if ("name".equals(propName)) { form.setName(value); } else if ("displayMode".equals(propName)) { form.setDisplayMode(value); } else if ("labelMode".equals(propName)) { form.setLabelMode(value); } else if ("showMode".equals(propName)) { form.setShowMode(value); } else if ("status".equals(propName)) { form.setStatus(Long.valueOf(value)); } else if ("formTemplate".equals(propName)) { form.setFormTemplate(value); } } else if (node.getNodeName().equals(NODE_FIELD)) { Field field = deserializeField(form, node, resources); field.setForm(form); fields.add(field); } else if (node.getNodeName().equals(NODE_DATA_HOLDER)) { String holderId = getNodeAttributeValue(node, ATTR_ID); String holderInputId = getNodeAttributeValue(node, ATTR_INPUT_ID); String holderOutId = getNodeAttributeValue(node, ATTR_OUT_ID); String holderType = getNodeAttributeValue(node, ATTR_TYPE); String holderValue = getNodeAttributeValue(node, ATTR_VALUE); String holderRenderColor = getNodeAttributeValue(node, ATTR_NAME); String holderSupportedType = getNodeAttributeValue(node, ATTR_SUPPORTED_TYPE); if (!StringUtils.isEmpty(holderId) && !StringUtils.isEmpty(holderType) && !StringUtils.isEmpty(holderValue)) { DataHolderBuildConfig config = new DataHolderBuildConfig( holderId, holderInputId, holderOutId, holderRenderColor, holderValue); config.addAttribute("path", path); if (!StringUtils.isEmpty(holderSupportedType)) config.addAttribute(ATTR_SUPPORTED_TYPE, holderSupportedType); DataHolder holder = dataHolderManager.createDataHolderByType(holderType, config); if (!StringUtils.isEmpty(holderId)) form.setDataHolder(holder); } } } if (fields != null) form.setFormFields(fields); return form; }
protected void recreateViews() { formManager.recreateViews(); }
public FormController getFormController() { return formManager.getFormController(); }