diff --git a/src/main/java/com/viglet/shiohara/component/ShFormComponent.java b/src/main/java/com/viglet/shiohara/component/ShFormComponent.java index 6a19f16fc..3454dbfe0 100644 --- a/src/main/java/com/viglet/shiohara/component/ShFormComponent.java +++ b/src/main/java/com/viglet/shiohara/component/ShFormComponent.java @@ -15,9 +15,11 @@ import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostType; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; import com.viglet.shiohara.persistence.model.widget.ShWidget; +import com.viglet.shiohara.persistence.repository.object.ShObjectRepository; import com.viglet.shiohara.persistence.repository.post.type.ShPostTypeRepository; import com.viglet.shiohara.persistence.repository.widget.ShWidgetRepository; import com.viglet.shiohara.widget.ShSystemWidget; @@ -32,12 +34,13 @@ public class ShFormComponent { @Autowired private SpringTemplateEngine templateEngine; @Autowired - private ShWidgetRepository shWidgetRepository; + private ShObjectRepository shObjectRepository; - public String byPostType(String shPostTypeName, HttpServletRequest request) + public String byPostType(String shPostTypeName, String shObjectId, HttpServletRequest request) throws InstantiationException, IllegalAccessException, ClassNotFoundException { final Context ctx = new Context(); + ShObject shObject = shObjectRepository.findById(shObjectId).get(); ShPostType shPostType = shPostTypeRepository.findByName(shPostTypeName); CsrfToken csrf = (CsrfToken) request.getAttribute(CsrfToken.class.getName()); @@ -56,48 +59,9 @@ public int compare(ShPostTypeAttr o1, ShPostTypeAttr o2) { String className = shPostTypeAttr.getShWidget().getClassName(); ShWidgetImplementation object = (ShWidgetImplementation) Class.forName(className).newInstance(); applicationContext.getAutowireCapableBeanFactory().autowireBean(object); - fields.add(object.render(shPostTypeAttr)); + fields.add(object.render(shPostTypeAttr, shObject)); } - String token = null; - if (csrf != null) { - token = csrf.getToken(); - } - - ctx.setVariable("token", token); - ctx.setVariable("shPostType", shPostType); - ctx.setVariable("shPostTypeAttrs", shPostType.getShPostTypeAttrs()); - ctx.setVariable("fields", fields); - - return templateEngine.process("form", ctx); - } - - public String byPostTypeAndFolder(String shPostTypeName, String folderId, HttpServletRequest request) - throws InstantiationException, IllegalAccessException, ClassNotFoundException { - final Context ctx = new Context(); - - ShPostType shPostType = shPostTypeRepository.findByName(shPostTypeName); - CsrfToken csrf = (CsrfToken) request.getAttribute(CsrfToken.class.getName()); - - List fields = new ArrayList(); - - List postTypeAttrByOrdinal = new ArrayList(shPostType.getShPostTypeAttrs()); - - Collections.sort(postTypeAttrByOrdinal, new Comparator() { - - public int compare(ShPostTypeAttr o1, ShPostTypeAttr o2) { - return o1.getOrdinal() - o2.getOrdinal(); - } - }); - - for (ShPostTypeAttr shPostTypeAttr : postTypeAttrByOrdinal) { - String className = shPostTypeAttr.getShWidget().getClassName(); - ShWidgetImplementation object = (ShWidgetImplementation) Class.forName(className).newInstance(); - applicationContext.getAutowireCapableBeanFactory().autowireBean(object); - fields.add(object.render(shPostTypeAttr)); - } - - String token = null; if (csrf != null) { token = csrf.getToken(); diff --git a/src/main/java/com/viglet/shiohara/ecommerce/payment/ShPaymentSlip.java b/src/main/java/com/viglet/shiohara/ecommerce/payment/ShPaymentSlip.java index 8026f0d88..3b0754290 100644 --- a/src/main/java/com/viglet/shiohara/ecommerce/payment/ShPaymentSlip.java +++ b/src/main/java/com/viglet/shiohara/ecommerce/payment/ShPaymentSlip.java @@ -17,6 +17,7 @@ import com.viglet.shiohara.persistence.model.post.ShPostAttr; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; import com.viglet.shiohara.persistence.repository.post.ShPostRepository; +import com.viglet.shiohara.sites.ShSitesContextURL; import com.viglet.shiohara.utils.ShPostUtils; import com.viglet.shiohara.widget.ShSystemWidget; @@ -36,7 +37,8 @@ public class ShPaymentSlip { @Autowired private ShPostRepository shPostRepository; - public void payment(ShPost shPost, HttpServletResponse response) throws IOException { + public void payment(ShPost shPost, ShSitesContextURL shSitesContextURL) throws IOException { + Set shPostTypeAttrs = shPost.getShPostType().getShPostTypeAttrs(); String paymentTypeId = null; JSONObject ptdSettings = null; @@ -47,7 +49,12 @@ public void payment(ShPost shPost, HttpServletResponse response) throws IOExcept if (shPostTypeAttr.getShWidget().getName().equals(ShSystemWidget.PAYMENT)) { JSONObject settings = new JSONObject(shPostTypeAttr.getWidgetSettings()); product = settings.getJSONObject("product"); - shProductPost = shPostRepository.findById(product.getString("post")).get(); + + if (shSitesContextURL.getShObject() instanceof ShPost) { + shProductPost = (ShPost) shSitesContextURL.getShObject(); + } else { + shProductPost = shPostRepository.findById(product.getString("post")).get(); + } payer = settings.getJSONObject("payer"); JSONArray paymentTypes = settings.getJSONArray("paymentTypes"); for (int i = 0; i < paymentTypes.length(); i++) { @@ -98,7 +105,8 @@ public void payment(ShPost shPost, HttpServletResponse response) throws IOExcept // Quem paga o boleto Map shPostMap = shPostUtils.postToMap(shPost); Map shProductPostMap = shPostUtils.postToMap(shProductPost); - double paymentSlipValue = Double.parseDouble(shProductPostMap.get(product.getString("value")).getStrValue()); + double paymentSlipValue = Double + .parseDouble(shProductPostMap.get(product.getString("value")).getStrValue()); Pagador pagador = Pagador.novoPagador().comNome(shPostMap.get(payer.getString("name")).getStrValue()) .comDocumento(shPostMap.get(payer.getString("documentId")).getStrValue()); @@ -110,17 +118,18 @@ public void payment(ShPost shPost, HttpServletResponse response) throws IOExcept .comNumeroDoDocumento(ptdSettings.getString("documentNumber")).comInstrucoes(instructions) .comLocaisDePagamento(ptdSettings.getString("local")); - Boleto segundaParcela = Boleto.novoBoleto().comBanco(banco).comDatas(datas2nd).comBeneficiario(beneficiario) + /* Boleto segundaParcela = Boleto.novoBoleto().comBanco(banco).comDatas(datas2nd).comBeneficiario(beneficiario) .comPagador(pagador).comValorBoleto(paymentSlipValue) .comNumeroDoDocumento(ptdSettings.getString("documentNumber")).comInstrucoes(instructions) - .comLocaisDePagamento(ptdSettings.getString("local")); + .comLocaisDePagamento(ptdSettings.getString("local"));*/ - Boleto[] boletos = { primeraParcela, segundaParcela }; + Boleto[] boletos = { primeraParcela }; GeradorDeBoleto gerador = new GeradorDeBoleto(boletos); byte[] bPDF = gerador.geraPDF(); MimetypesFileTypeMap mimetypesFileTypeMap = new MimetypesFileTypeMap(); + HttpServletResponse response = shSitesContextURL.getResponse(); response.setContentType(mimetypesFileTypeMap.getContentType("PaymentSlip.pdf")); response.setHeader("Content-disposition", "attachment; filename=PaymentSlip.pdf"); response.getOutputStream().write(bPDF); diff --git a/src/main/java/com/viglet/shiohara/sites/ShSitesContext.java b/src/main/java/com/viglet/shiohara/sites/ShSitesContext.java index a631034c1..57d3c223a 100644 --- a/src/main/java/com/viglet/shiohara/sites/ShSitesContext.java +++ b/src/main/java/com/viglet/shiohara/sites/ShSitesContext.java @@ -35,6 +35,7 @@ import com.viglet.shiohara.persistence.model.post.type.ShPostType; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; import com.viglet.shiohara.persistence.model.site.ShSite; +import com.viglet.shiohara.persistence.repository.folder.ShFolderRepository; import com.viglet.shiohara.persistence.repository.post.ShPostRepository; import com.viglet.shiohara.persistence.repository.post.type.ShPostTypeAttrRepository; import com.viglet.shiohara.persistence.repository.post.type.ShPostTypeRepository; @@ -58,6 +59,8 @@ public class ShSitesContext { @Autowired private ShPostRepository shPostRepository; @Autowired + private ShFolderRepository shFolderRepository; + @Autowired private ShFolderUtils shFolderUtils; @Autowired private ShPostUtils shPostUtils; @@ -73,11 +76,11 @@ public class ShSitesContext { private ShSitesContextURL shSitesContextURL; @Autowired private ShPaymentWidget shPaymentWidget; - + @PostMapping("/sites/**") private RedirectView sitesPostForm(HttpServletRequest request, HttpServletResponse response) throws IOException, ScriptException, InstantiationException, IllegalAccessException, ClassNotFoundException { - shSitesContextURL.init(request); + shSitesContextURL.init(request, response); this.siteContextPost(shSitesContextURL, request, response); RedirectView redirectView = new RedirectView( @@ -90,18 +93,25 @@ public byte[] siteContextPost(ShSitesContextURL shSitesContextURL, HttpServletRe HttpServletResponse response) throws IOException, ScriptException, InstantiationException, IllegalAccessException, ClassNotFoundException { ShPost shPost = null; - if (shSitesContextURL.getShObject() instanceof ShFolder + if (request.getParameter("__sh-post-type-attr-__FORM_FOLDER_ID") != null + || shSitesContextURL.getShObject() instanceof ShFolder || (shSitesContextURL.getShObject() instanceof ShPost && ((ShPost) shSitesContextURL.getShObject()) .getShPostType().getName().equals(ShSystemPostType.FOLDER_INDEX))) { ShFolder shFolder = null; - if (shSitesContextURL.getShObject() instanceof ShFolder) { - shFolder = (ShFolder) shSitesContextURL.getShObject(); + + if (request.getParameter("__sh-post-type-attr-__FORM_FOLDER_ID") != null) { + shFolder = shFolderRepository.findById(request.getParameter("__sh-post-type-attr-__FORM_FOLDER_ID")) + .get(); } else { - shFolder = ((ShPost) shSitesContextURL.getShObject()).getShFolder(); + if (shSitesContextURL.getShObject() instanceof ShFolder) { + shFolder = (ShFolder) shSitesContextURL.getShObject(); + } else { + shFolder = ((ShPost) shSitesContextURL.getShObject()).getShFolder(); + } } String shPostTypeName = request.getParameter("__sh-post-type"); ShPostType shPostType = shPostTypeRepository.findByName(shPostTypeName); - + Enumeration parameters = request.getParameterNames(); if (shPostTypeName != null) { shPost = new ShPost(); @@ -115,7 +125,8 @@ public byte[] siteContextPost(ShSitesContextURL shSitesContextURL, HttpServletRe String param = parameters.nextElement(); String paramValue = request.getParameter(param); - if (param.startsWith("__sh-post-type-attr-")) { + if (param.startsWith("__sh-post-type-attr-") + && !param.equals("__sh-post-type-attr-__FORM_FOLDER_ID")) { String attribute = param.replaceFirst("__sh-post-type-attr-", ""); ShPostTypeAttr shPostTypeAttr = shPostTypeAttrRepository.findByShPostTypeAndName(shPostType, @@ -124,7 +135,7 @@ public byte[] siteContextPost(ShSitesContextURL shSitesContextURL, HttpServletRe String className = shPostTypeAttr.getShWidget().getClassName(); ShWidgetImplementation object = (ShWidgetImplementation) Class.forName(className).newInstance(); applicationContext.getAutowireCapableBeanFactory().autowireBean(object); - + @SuppressWarnings("unused") boolean attrStatus = object.validateForm(request, shPostTypeAttr); // TODO: Create validation Form logic @@ -142,8 +153,8 @@ public byte[] siteContextPost(ShSitesContextURL shSitesContextURL, HttpServletRe shPostAPI.postSave(shPost); } } - - shPaymentWidget.postRender(shPost, request, response); + + shPaymentWidget.postRender(shPost, shSitesContextURL); this.sitesFullGeneric(request, response); return null; @@ -155,7 +166,7 @@ private void sitesFullGeneric(HttpServletRequest request, HttpServletResponse re final int cacheMinutes = 1; - shSitesContextURL.init(request); + shSitesContextURL.init(request, response); if (shSitesContextURL.getShSite() != null) { if (!shSitesContextURL.isCacheEnabled()) { this.siteContext(shSitesContextURL, request, response); diff --git a/src/main/java/com/viglet/shiohara/sites/ShSitesContextURL.java b/src/main/java/com/viglet/shiohara/sites/ShSitesContextURL.java index f192462f8..dcecd95d6 100644 --- a/src/main/java/com/viglet/shiohara/sites/ShSitesContextURL.java +++ b/src/main/java/com/viglet/shiohara/sites/ShSitesContextURL.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -24,6 +25,8 @@ public class ShSitesContextURL { @Autowired private ShFolderUtils shFolderUtils; + private HttpServletRequest request = null; + private HttpServletResponse response = null; private String shContext = null; private String contextURL = null; private ShSite shSite = null; @@ -33,7 +36,10 @@ public class ShSitesContextURL { private ShObject shObject = null; private boolean cacheEnabled = true; - public void init(HttpServletRequest request) { + public void init(HttpServletRequest request, HttpServletResponse response) { + this.setRequest(request); + this.setResponse(response); + String shXSiteName = request.getHeader("x-sh-site"); cacheEnabled = request.getHeader("x-sh-nocache") != null && request.getHeader("x-sh-nocache").equals("1") ? false @@ -158,4 +164,20 @@ public void setCacheEnabled(boolean cacheEnabled) { this.cacheEnabled = cacheEnabled; } + public HttpServletRequest getRequest() { + return request; + } + + public void setRequest(HttpServletRequest request) { + this.request = request; + } + + public HttpServletResponse getResponse() { + return response; + } + + public void setResponse(HttpServletResponse response) { + this.response = response; + } + } diff --git a/src/main/java/com/viglet/shiohara/widget/ShAceEditorWidget.java b/src/main/java/com/viglet/shiohara/widget/ShAceEditorWidget.java index d214ecf80..57e50d9b9 100644 --- a/src/main/java/com/viglet/shiohara/widget/ShAceEditorWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ShAceEditorWidget.java @@ -7,6 +7,7 @@ import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; @Component @@ -15,7 +16,7 @@ public class ShAceEditorWidget implements ShWidgetImplementation { @Autowired private SpringTemplateEngine templateEngine; - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { final Context ctx = new Context(); ctx.setVariable("shPostTypeAttr", shPostTypeAttr); return templateEngine.process("widget/text/text-widget", ctx); diff --git a/src/main/java/com/viglet/shiohara/widget/ShComboBoxWidget.java b/src/main/java/com/viglet/shiohara/widget/ShComboBoxWidget.java index e37a0400c..64bf51403 100644 --- a/src/main/java/com/viglet/shiohara/widget/ShComboBoxWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ShComboBoxWidget.java @@ -11,6 +11,7 @@ import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; @Component @@ -18,7 +19,7 @@ public class ShComboBoxWidget implements ShWidgetImplementation { @Autowired private SpringTemplateEngine templateEngine; - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { String widgetSettings = shPostTypeAttr.getWidgetSettings(); JSONObject settings = new JSONObject(widgetSettings); diff --git a/src/main/java/com/viglet/shiohara/widget/ShContentSelectWidget.java b/src/main/java/com/viglet/shiohara/widget/ShContentSelectWidget.java index d7dc677bc..0751e2102 100644 --- a/src/main/java/com/viglet/shiohara/widget/ShContentSelectWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ShContentSelectWidget.java @@ -7,6 +7,7 @@ import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; @Component @@ -15,7 +16,7 @@ public class ShContentSelectWidget implements ShWidgetImplementation { @Autowired private SpringTemplateEngine templateEngine; - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { final Context ctx = new Context(); ctx.setVariable("shPostTypeAttr", shPostTypeAttr); return templateEngine.process("widget/text/text-widget", ctx); diff --git a/src/main/java/com/viglet/shiohara/widget/ShFileWidget.java b/src/main/java/com/viglet/shiohara/widget/ShFileWidget.java index cb55bc9a6..dab659645 100644 --- a/src/main/java/com/viglet/shiohara/widget/ShFileWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ShFileWidget.java @@ -7,6 +7,7 @@ import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; @Component @@ -15,7 +16,7 @@ public class ShFileWidget implements ShWidgetImplementation { @Autowired private SpringTemplateEngine templateEngine; - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { final Context ctx = new Context(); ctx.setVariable("shPostTypeAttr", shPostTypeAttr); return templateEngine.process("widget/text/text-widget", ctx); diff --git a/src/main/java/com/viglet/shiohara/widget/ShHTMLWidget.java b/src/main/java/com/viglet/shiohara/widget/ShHTMLWidget.java index dcfce3942..90948ae1d 100644 --- a/src/main/java/com/viglet/shiohara/widget/ShHTMLWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ShHTMLWidget.java @@ -7,6 +7,7 @@ import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; @Component @@ -15,7 +16,7 @@ public class ShHTMLWidget implements ShWidgetImplementation { @Autowired private SpringTemplateEngine templateEngine; - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { final Context ctx = new Context(); ctx.setVariable("shPostTypeAttr", shPostTypeAttr); return templateEngine.process("widget/text/text-widget", ctx); diff --git a/src/main/java/com/viglet/shiohara/widget/ShHiddenWidget.java b/src/main/java/com/viglet/shiohara/widget/ShHiddenWidget.java index 0d68c7f6b..b947ff13b 100644 --- a/src/main/java/com/viglet/shiohara/widget/ShHiddenWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ShHiddenWidget.java @@ -8,6 +8,7 @@ import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; @Component @@ -15,7 +16,7 @@ public class ShHiddenWidget implements ShWidgetImplementation { @Autowired private SpringTemplateEngine templateEngine; - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { String widgetSettings = shPostTypeAttr.getWidgetSettings(); JSONObject settings = new JSONObject(widgetSettings); diff --git a/src/main/java/com/viglet/shiohara/widget/ShReCaptchaWidget.java b/src/main/java/com/viglet/shiohara/widget/ShReCaptchaWidget.java index f22f1e0ba..5145400d3 100644 --- a/src/main/java/com/viglet/shiohara/widget/ShReCaptchaWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ShReCaptchaWidget.java @@ -14,6 +14,7 @@ import org.thymeleaf.spring5.SpringTemplateEngine; import com.google.gson.Gson; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; @Component @@ -21,7 +22,7 @@ public class ShReCaptchaWidget implements ShWidgetImplementation { @Autowired private SpringTemplateEngine templateEngine; - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { String widgetSettings = shPostTypeAttr.getWidgetSettings(); JSONObject settings = new JSONObject(widgetSettings); String siteKey = settings.getString("siteKey"); diff --git a/src/main/java/com/viglet/shiohara/widget/ShRelatorWidget.java b/src/main/java/com/viglet/shiohara/widget/ShRelatorWidget.java index 82d130c75..1fbedef33 100644 --- a/src/main/java/com/viglet/shiohara/widget/ShRelatorWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ShRelatorWidget.java @@ -7,6 +7,7 @@ import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; @Component @@ -15,7 +16,7 @@ public class ShRelatorWidget implements ShWidgetImplementation { @Autowired private SpringTemplateEngine templateEngine; - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { final Context ctx = new Context(); ctx.setVariable("shPostTypeAttr", shPostTypeAttr); return templateEngine.process("widget/text/text-widget", ctx); diff --git a/src/main/java/com/viglet/shiohara/widget/ShTextAreaWidget.java b/src/main/java/com/viglet/shiohara/widget/ShTextAreaWidget.java index 7e5626dfa..3e958a565 100644 --- a/src/main/java/com/viglet/shiohara/widget/ShTextAreaWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ShTextAreaWidget.java @@ -7,6 +7,7 @@ import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; @Component @@ -14,7 +15,7 @@ public class ShTextAreaWidget implements ShWidgetImplementation { @Autowired private SpringTemplateEngine templateEngine; - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { final Context ctx = new Context(); ctx.setVariable("shPostTypeAttr", shPostTypeAttr); return templateEngine.process("widget/text-area/text-area-widget", ctx); diff --git a/src/main/java/com/viglet/shiohara/widget/ShTextWidget.java b/src/main/java/com/viglet/shiohara/widget/ShTextWidget.java index d8b436762..b71dd3856 100644 --- a/src/main/java/com/viglet/shiohara/widget/ShTextWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ShTextWidget.java @@ -7,6 +7,7 @@ import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; @Component @@ -14,7 +15,7 @@ public class ShTextWidget implements ShWidgetImplementation { @Autowired private SpringTemplateEngine templateEngine; - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { final Context ctx = new Context(); ctx.setVariable("shPostTypeAttr", shPostTypeAttr); return templateEngine.process("widget/text/text-widget", ctx); diff --git a/src/main/java/com/viglet/shiohara/widget/ShWidgetImplementation.java b/src/main/java/com/viglet/shiohara/widget/ShWidgetImplementation.java index 2b8652d79..d6268ae11 100644 --- a/src/main/java/com/viglet/shiohara/widget/ShWidgetImplementation.java +++ b/src/main/java/com/viglet/shiohara/widget/ShWidgetImplementation.java @@ -4,10 +4,11 @@ import org.springframework.stereotype.Component; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; @Component public interface ShWidgetImplementation { - public String render(ShPostTypeAttr shPostTypeAttr); + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject); public boolean validateForm(HttpServletRequest request, ShPostTypeAttr shPostTypeAttr); } diff --git a/src/main/java/com/viglet/shiohara/widget/ecommerce/ShPaymentTypeDefinitionWidget.java b/src/main/java/com/viglet/shiohara/widget/ecommerce/ShPaymentTypeDefinitionWidget.java index 9e7fc282b..e8ee5f2ef 100644 --- a/src/main/java/com/viglet/shiohara/widget/ecommerce/ShPaymentTypeDefinitionWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ecommerce/ShPaymentTypeDefinitionWidget.java @@ -11,8 +11,10 @@ import org.thymeleaf.spring5.SpringTemplateEngine; import com.viglet.shiohara.ecommerce.payment.ShPaymentSlip; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.ShPost; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; +import com.viglet.shiohara.sites.ShSitesContextURL; import com.viglet.shiohara.widget.ShWidgetImplementation; @@ -24,7 +26,7 @@ public class ShPaymentTypeDefinitionWidget implements ShWidgetImplementation { private ShPaymentSlip shPaymentSlip; @Override - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { final Context ctx = new Context(); ctx.setVariable("shPostTypeAttr", shPostTypeAttr); return templateEngine.process("widget/payment/payment-widget", ctx); @@ -47,7 +49,7 @@ public boolean validateForm(HttpServletRequest request, ShPostTypeAttr shPostTyp return true; } - public void postRender(ShPost shPost, HttpServletRequest request, HttpServletResponse response) throws IOException { - shPaymentSlip.payment(shPost, response); + public void postRender(ShPost shPost, ShSitesContextURL shSitesContextURL) throws IOException { + shPaymentSlip.payment(shPost, shSitesContextURL); } } diff --git a/src/main/java/com/viglet/shiohara/widget/ecommerce/ShPaymentWidget.java b/src/main/java/com/viglet/shiohara/widget/ecommerce/ShPaymentWidget.java index e63189ef7..610036f88 100644 --- a/src/main/java/com/viglet/shiohara/widget/ecommerce/ShPaymentWidget.java +++ b/src/main/java/com/viglet/shiohara/widget/ecommerce/ShPaymentWidget.java @@ -6,7 +6,6 @@ import java.util.Set; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.json.JSONArray; import org.json.JSONObject; @@ -18,11 +17,13 @@ import com.viglet.shiohara.ecommerce.ShEcomProductBean; import com.viglet.shiohara.ecommerce.payment.ShPaymentSlip; import com.viglet.shiohara.persistence.model.ecommerce.ShEcomPaymentTypeDefinition; +import com.viglet.shiohara.persistence.model.object.ShObject; import com.viglet.shiohara.persistence.model.post.ShPost; import com.viglet.shiohara.persistence.model.post.ShPostAttr; import com.viglet.shiohara.persistence.model.post.type.ShPostTypeAttr; import com.viglet.shiohara.persistence.repository.ecommerce.ShEcomPaymentTypeDefinitionRepository; import com.viglet.shiohara.persistence.repository.post.ShPostRepository; +import com.viglet.shiohara.sites.ShSitesContextURL; import com.viglet.shiohara.utils.ShPostUtils; import com.viglet.shiohara.widget.ShWidgetImplementation; @@ -40,7 +41,7 @@ public class ShPaymentWidget implements ShWidgetImplementation { private ShEcomPaymentTypeDefinitionRepository shEcomPaymentTypeDefinitionRepository; @Override - public String render(ShPostTypeAttr shPostTypeAttr) { + public String render(ShPostTypeAttr shPostTypeAttr, ShObject shObject) { JSONObject settings = new JSONObject(shPostTypeAttr.getWidgetSettings()); JSONArray paymentTypesJSON = settings.getJSONArray("paymentTypes"); Set paymentTypes = new HashSet(); @@ -54,8 +55,7 @@ public String render(ShPostTypeAttr shPostTypeAttr) { ShPostAttr shPaymentTypeDefinitionPostAttr = shPaymentTypePostMap.get("PAYMENT_TYPE_DEFINITION"); JSONObject ptdJSON = new JSONObject(shPaymentTypeDefinitionPostAttr.getStrValue()); - - + ShEcomPaymentTypeDefinition shEcomPaymentTypeDefinition = shEcomPaymentTypeDefinitionRepository .findById(ptdJSON.getString("id")).get(); paymentType.put("formPath", shEcomPaymentTypeDefinition.getFormPath()); @@ -63,16 +63,24 @@ public String render(ShPostTypeAttr shPostTypeAttr) { // Product BEGIN JSONObject product = settings.getJSONObject("product"); - ShPost shProductPost = shPostRepository.findById(product.getString("post")).get(); - Map shProductPostMap = shPostUtils.postToMap(shProductPost); + ShPost shProductPost = null; + + if (shObject instanceof ShPost) { + shProductPost = (ShPost) shObject; + } else { + shProductPost = shPostRepository.findById(product.getString("post")).get(); + } + + Map shProductPostMap = shPostUtils.postToMap(shProductPost); + ShEcomProductBean shProduct = new ShEcomProductBean(); shProduct.setName(shProductPostMap.get(product.getString("name")).getStrValue()); shProduct.setDescription(shProductPostMap.get(product.getString("description")).getStrValue()); shProduct.setValue(Double.valueOf(shProductPostMap.get(product.getString("value")).getStrValue())); - + /// Product END - + final Context ctx = new Context(); ctx.setVariable("shPostTypeAttr", shPostTypeAttr); ctx.setVariable("shProduct", shProduct); @@ -98,7 +106,7 @@ public boolean validateForm(HttpServletRequest request, ShPostTypeAttr shPostTyp return true; } - public void postRender(ShPost shPost, HttpServletRequest request, HttpServletResponse response) throws IOException { - shPaymentSlip.payment(shPost, response); + public void postRender(ShPost shPost, ShSitesContextURL shSitesContextURL) throws IOException { + shPaymentSlip.payment(shPost, shSitesContextURL); } } diff --git a/src/main/resources/js/server-side/shObject.js b/src/main/resources/js/server-side/shObject.js index 80e863191..cd275f8a4 100644 --- a/src/main/resources/js/server-side/shObject.js +++ b/src/main/resources/js/server-side/shObject.js @@ -27,16 +27,9 @@ viglet.shiohara.shObject = function() { * @desc Returns Form from PostType * @public */ - this.formComponent = function(shPostTypeName) { - return shFormComponent.byPostType(shPostTypeName, request); - }, - /** - * @desc Returns Form from PostType And Folder - * @public - */ - this.formComponentByFolder = function(shPostTypeName, folderId) { - return shFormComponent.byPostTypeAndFolder(shPostTypeName, folderId, request); - }, + this.formComponent = function(shPostTypeName, shObjectId) { + return shFormComponent.byPostType(shPostTypeName, shObjectId, request); + }, /** * @desc Returns Search Result * @public