Add dynamic parameters to dynamic widget

pull/13311/head
Enis Necipoglu 3 years ago
parent ebc1170b9e
commit e90c6df8a9

@ -1,6 +1,6 @@
<div class="form-check mb-3"> @using Volo.CmsKit.ViewComponents
<input class="form-check-input" type="checkbox" id="NewOption" /> @model DecisionCommentDateViewModel
<label class="form-check-label text-primary d-block" for="NewOption">
Show date in the component <div class="form-check mb-3">
</label> <abp-input asp-for="IsShow" />
</div> </div>

@ -1,7 +1,10 @@
using System.Threading.Tasks; using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.UI.Widgets; using Volo.Abp.AspNetCore.Mvc.UI.Widgets;
using Volo.Abp.Localization;
namespace Volo.CmsKit.ViewComponents; namespace Volo.CmsKit.ViewComponents;
@ -18,6 +21,12 @@ public class DecisionCommentDateViewComponent : AbpViewComponent
public virtual async Task<IViewComponentResult> InvokeAsync() public virtual async Task<IViewComponentResult> InvokeAsync()
{ {
return View("~/ViewComponents/DecisionCommentDate.cshtml"); return View("~/ViewComponents/DecisionCommentDate.cshtml", new DecisionCommentDateViewModel());
} }
} }
public class DecisionCommentDateViewModel
{
[DisplayName("Show date in the component")]
public bool IsShow { get; set; } = true;
}

@ -329,9 +329,9 @@ $(function () {
}); });
} }
$('#GeneratedWidgetText').on('change', function () { $('#GeneratedWidgetText').on('change', function (text) {
var txt = $('#GeneratedWidgetText').val();
editor.insertText(txt); editor.insertText(text);
}); });
function createAddWidgetButton() { function createAddWidgetButton() {

@ -1,5 +1,6 @@
@page @page
@using Microsoft.AspNetCore.Mvc.Localization @using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@using Volo.CmsKit.Admin.Web.Pages @using Volo.CmsKit.Admin.Web.Pages
@using Volo.CmsKit.Localization @using Volo.CmsKit.Localization
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Contents; @using Volo.CmsKit.Admin.Web.Pages.CmsKit.Contents;
@ -20,15 +21,17 @@
<div class="container"> <div class="container">
@if (Model.Widgets.Count() > 1) @if (Model.Widgets.Count() > 1)
{ {
<abp-select asp-for="ViewModel.Widget" /> <abp-select asp-for="ViewModel.Widget" />
foreach (var item in Model.ViewModel.Details) foreach (var item in Model.ViewModel.Details)
{ {
<div hidden id="editor-@item.Name">@await Component.InvokeAsync(@item.EditorComponentName)</div> <div hidden id="editor-@item.Name">
<form data-check-form-on-close="false">
@await Component.InvokeAsync(@item.EditorComponentName)
</form>
</div>
} }
<div class="mb-3" id="PropertySideId">
</div>
<button class="btn btn-primary float-end" type="submit" id="save-changes">@L["Add"]</button>
} }
else else
{ {
@ -36,4 +39,7 @@
} }
</div> </div>
</abp-modal-body> </abp-modal-body>
<abp-modal-footer>
<button class="btn btn-primary float-end save-changes" type="submit">@L["Add"]</button>
</abp-modal-footer>
</abp-modal> </abp-modal>

@ -3,6 +3,8 @@ $(function () {
abp.modals.addWidgetModal = function () { abp.modals.addWidgetModal = function () {
var initModal = function () { var initModal = function () {
var activeEditor;
var activeForm;
let widgetName, widgetType; let widgetName, widgetType;
$("#ViewModel_Widget").change(function () { $("#ViewModel_Widget").change(function () {
@ -11,47 +13,28 @@ $(function () {
$('.widget-detail').attr('hidden', 'true'); $('.widget-detail').attr('hidden', 'true');
$('#editor-' + widgetName).removeAttr('hidden'); activeEditor = $('#editor-' + widgetName);
}); activeEditor.removeAttr('hidden');
$("#save-changes").click(function () { activeForm = $('#editor-' + widgetName + ' form');
var widgetKey = $("#WidgetCode").val(); });
if (widgetKey != undefined) {
let html = " <input hidden class=\"properties form-control\" value=\"" + widgetKey + "\" id=\"Code\" type=\"text\" />"
$("#PropertySideId").append(html);
}
else {
var val = $('#NewOption').is(":checked");
let html = " <input hidden class=\"properties form-control\" value=\"" + val + "\" id=\"IsShow\" type=\"text\" />"
$("#PropertySideId").append(html);
}
var keys = []; $(".save-changes").click(function () {
var values = [];
$(".properties").each(function () {
if (($.trim($(this).val()).length > 0)) {
keys.push(this.id);
values.push($(this).val());
}
});
let updatedText = ''; let properties = activeForm.serializeFormToObject();
if (widgetType != undefined) {
updatedText = "[Widget Type=\"" + widgetType + "\" "; let widgetText = "[Widget Type=\"" + widgetType + "\" ";
for (var i = 0; i < keys.length; i++) { for (var propertyName in properties) {
updatedText += keys[i] + "=\"" + values[i]; if (!propertyName.includes(']') && !propertyName.includes('[')) {
updatedText += i == (keys.length - 1) ? "\"" : "\" "; widgetText += propertyName + "=\"" + properties[propertyName] + "\" ";
} }
updatedText += "]";
} }
$('#GeneratedWidgetText').val(updatedText); widgetText = widgetText.trim() + "]";
$("#GeneratedWidgetText").trigger("change");
$('#GeneratedWidgetText').val(widgetText);
$("#GeneratedWidgetText").trigger("change");
$('#addWidgetModal').modal('hide'); $('#addWidgetModal').modal('hide');
}); });
}; };

Loading…
Cancel
Save