Browse Source

Added dynamic properties for hard-coded definition

pull/13242/head
malik masis 4 years ago
parent
commit
c0c78c90ae
  1. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/ContentWidgetDto.cs
  2. 9
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Contents/ContentAdminAppService.cs
  3. 14
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml
  4. 14
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs
  5. 23
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/addWidgetModal.js
  6. 6
      modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentWidgetConfig.cs

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/ContentWidgetDto.cs

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
namespace Volo.CmsKit.Admin.Contents;
@ -6,4 +7,5 @@ namespace Volo.CmsKit.Admin.Contents;
public class ContentWidgetDto
{
public string Key { get; set; }
public List<string> Properties { get; set; } = new();
}

9
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Contents/ContentAdminAppService.cs

@ -17,14 +17,19 @@ public class ContentAdminAppService : CmsKitAdminAppServiceBase, IContentAdminAp
public Task<ListResultDto<ContentWidgetDto>> GetWidgetsAsync()
{
var aa = _options.WidgetConfigs.ToList();
//TODO remove
if (!_options.WidgetConfigs.Any())
{
_options.AddWidget("Poll", "CmsPollByCode");
}
return Task.FromResult(new ListResultDto<ContentWidgetDto>()
{
Items = _options.WidgetConfigs
.Select(n =>
new ContentWidgetDto
{
Key = n.Key
Key = n.Key,
Properties = n.Value.Properties
}).ToList()
});

14
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml

@ -17,13 +17,23 @@
}
<abp-modal size="Large" id="addWidgetModal">
<abp-modal-header title="@L["Edit"].Value"></abp-modal-header>
<abp-modal-body>
<div class="container row md-3">
<div class="container row">
<abp-select asp-for="ViewModel.Widget" />
<input hidden id="textId" type="text" />
<div id="PropertySideId">
@foreach (var item in Model.ViewModel.Properties.FirstOrDefault(p=>p.Key == "Poll").Properties)
{
<div class="form-group">
<label for="@(item)">@item</label>
<input class="properties form-control" id="@(item)" type="text" />
</div>
}
</div>
<button class="btn btn-primary float-end" type="submit" id="save-changes">@L["Save"]</button>
</div>
</abp-modal-body>
</abp-modal>

14
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
@ -26,8 +27,14 @@ public class AddWidgetModal : AbpPageModel
public async Task OnGetAsync()
{
ViewModel = new ContentViewModel();
var widgets = await ContentAdminAppService.GetWidgetsAsync();
ViewModel.Properties = widgets.Items.ToArray();
Widgets = new List<SelectListItem>() { new("", "") };
Widgets.AddRange((await ContentAdminAppService.GetWidgetsAsync())
Widgets.AddRange(widgets
.Items
.Select(w => new SelectListItem(w.Key, w.Key))
.ToList());
@ -37,5 +44,8 @@ public class AddWidgetModal : AbpPageModel
{
[SelectItems(nameof(Widgets))]
public string Widget { get; set; }
public ContentWidgetDto[] Properties { get; set; } = Array.Empty<ContentWidgetDto>();
}
}

23
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/addWidgetModal.js

@ -3,11 +3,32 @@ $(function () {
abp.modals.addWidgetModal = function () {
var initModal = function () {
$('#PropertySideId').hide();
$("#ViewModel_Widget").change(function () {
$('#PropertySideId').show();
});
$("#save-changes").click(function () {
var updatedText = $("#textId").val();
var keys = [];
var values = [];
$(".properties").each(function () {
if (($.trim($(this).val()).length > 0)) {
keys.push(this.id);
values.push($(this).val());
}
});
var contentEditorText = $("#ContentEditor")[0].innerText.split("\n")[2];
var updatedText = "[Widget ";
for (var i = 0; i < keys.length; i++) {
updatedText += keys[i] + "=\"" + values[i] + "\" ";
}
updatedText += "]";
$('.ProseMirror div').contents()[0].data = contentEditorText + updatedText;
$('#addWidgetModal').modal('hide');

6
modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentWidgetConfig.cs

@ -1,8 +1,12 @@
namespace Volo.CmsKit.Contents;
using System.Collections.Generic;
namespace Volo.CmsKit.Contents;
public class ContentWidgetConfig
{
public string Name { get; }
//TODO remove - just for example
public List<string> Properties { get; } = new() { "Type", "Code" };
public ContentWidgetConfig(string widgetName)
{

Loading…
Cancel
Save