@RequestMapping("/fbuilder/app/(*:appId)/(~:appVersion)/form/(*:formId)/element/preview") public String previewElement( ModelMap model, @RequestParam("appId") String appId, @RequestParam(value = "appVersion", required = false) String appVersion, @RequestParam("formId") String formId, @RequestParam("json") String json) { try { FormUtil.setProcessedFormJson(json); model.addAttribute("appId", appId); model.addAttribute("appVersion", appVersion); AppDefinition appDef = appService.getAppDefinition(appId, appVersion); String tempJson = json; if (tempJson.contains(SecurityUtil.ENVELOPE) || tempJson.contains(PropertyUtil.PASSWORD_PROTECTED_VALUE)) { FormDefinition formDef = formDefinitionDao.loadById(formId, appDef); if (formDef != null) { tempJson = PropertyUtil.propertiesJsonStoreProcessing(formDef.getJson(), tempJson); } } String elementHtml = formService.previewElement(tempJson); model.addAttribute("elementTemplate", elementHtml); model.addAttribute("elementJson", json); } finally { FormUtil.clearProcessedFormJson(); } return "fbuilder/previewElement"; }
@RequestMapping("/console/app/(*:appId)/(~:version)/form/builder/(*:formId)") public String formBuilder( ModelMap model, @RequestParam("appId") String appId, @RequestParam(value = "version", required = false) String version, @RequestParam("formId") String formId, @RequestParam(required = false) String json) { // verify app version ConsoleWebPlugin consoleWebPlugin = (ConsoleWebPlugin) pluginManager.getPlugin(ConsoleWebPlugin.class.getName()); String page = consoleWebPlugin.verifyAppVersion(appId, version); if (page != null) { return page; } // set flag in request FormUtil.setFormBuilderActive(true); // load form definition model.addAttribute("appId", appId); AppDefinition appDef = appService.getAppDefinition(appId, version); FormDefinition formDef = null; if (appDef == null) { // TODO: handle invalid app } else { model.addAttribute("appDefinition", appDef); formDef = formDefinitionDao.loadById(formId, appDef); } if (formDef != null) { String formJson = null; if (json != null && !json.trim().isEmpty()) { // read custom JSON from request formJson = json; } else { // get JSON from form definition formJson = formDef.getJson(); } if (formJson != null && formJson.trim().length() > 0) { String processedformJson = PropertyUtil.propertiesJsonLoadProcessing(formJson); try { FormUtil.setProcessedFormJson(processedformJson); String elementHtml = formService.previewElement(formJson); model.addAttribute("elementHtml", elementHtml); model.addAttribute("elementJson", processedformJson); } finally { FormUtil.clearProcessedFormJson(); } } else { // default empty form String tableName = formDef.getTableName(); if (tableName == null || tableName.isEmpty()) { tableName = formDef.getId(); } String escapedFormName = StringEscapeUtils.escapeJavaScript(formDef.getName()); String defaultJson = "{className: 'org.joget.apps.form.model.Form', \"properties\":{ \"id\":\"" + formId + "\", \"name\":\"" + escapedFormName + "\", \"tableName\":\"" + tableName + "\", \"loadBinder\":{ \"className\":\"org.joget.apps.form.lib.WorkflowFormBinder\" }, \"storeBinder\":{ \"className\":\"org.joget.apps.form.lib.WorkflowFormBinder\" } }}"; String formHtml = formService.previewElement(defaultJson); model.addAttribute("elementHtml", formHtml); } } else { // default empty form String formJson = "{className: 'org.joget.apps.form.model.Form', \"properties\":{ \"id\":\"" + formId + "\", \"name\":\"\" \"loadBinder\":{ \"className\":\"org.joget.apps.form.lib.WorkflowFormBinder\" }, \"storeBinder\":{ \"className\":\"org.joget.apps.form.lib.WorkflowFormBinder\" } }}"; String formHtml = formService.previewElement(formJson); model.addAttribute("elementHtml", formHtml); } // add palette model.addAttribute("palette", formBuilderPalette); // add form def id model.addAttribute("formId", formId); model.addAttribute("formDef", formDef); return "fbuilder/formBuilder"; }