package origo.helpers.forms; import controllers.origo.core.SubmitController; import origo.helpers.SettingsHelper; import origo.helpers.URLHelper; import play.modules.origo.core.Node; import play.modules.origo.core.ui.UIElement; import play.mvc.Scope; import java.util.HashMap; import java.util.Map; public class FormHelper { private static final String NODE_ID = "_core_node_id"; private static final String NODE_VERSION = "_core_node_version"; public static UIElement createFormElement(Node node, String withType) { return createFormElement(SettingsHelper.Core.getDefaultFormProviderType(), node, withType); } public static UIElement createFormElement(String formProviderType, Node node, String withType) { OnLoadFormHelper.triggerBeforeListener(withType, node); UIElement formElement = ProvidesFormHelper.triggerListener(formProviderType, node, String.class, withType); addNodeIdAndVersion(formElement, node); Map<Class, Object> args = new HashMap<Class, Object>(); args.put(UIElement.class, formElement); args.put(String.class, withType); OnLoadFormHelper.triggerAfterListener(withType, node, args); return formElement; } public static String getPostURL() { return URLHelper.getReverseURL(SubmitController.class, "submit"); } public static String getNodeIdParamName() { return NODE_ID; } public static String getNodeVersionParamName() { return NODE_VERSION; } public static String getNodeId(Scope.Params params) { return params.get(NODE_ID); } public static Long getNodeVersion(Scope.Params params) { try { return Long.parseLong(params.get(NODE_VERSION)); } catch (NumberFormatException e) { throw new RuntimeException("Version is not a number: " + e.getLocalizedMessage(), e); } } public static void addNodeIdAndVersion(UIElement form, Node node) { form. addChild(new UIElement(UIElement.INPUT_HIDDEN).addAttribute("name", FormHelper.getNodeIdParamName()).addAttribute("value", node.getNodeId())). addChild(new UIElement(UIElement.INPUT_HIDDEN).addAttribute("name", FormHelper.getNodeVersionParamName()).addAttribute("value", String.valueOf(node.getVersion()))); } }