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;
using System.Collections.Generic;
namespace Volo.CmsKit.Admin.Contents; namespace Volo.CmsKit.Admin.Contents;
@ -6,4 +7,5 @@ namespace Volo.CmsKit.Admin.Contents;
public class ContentWidgetDto public class ContentWidgetDto
{ {
public string Key { get; set; } 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() 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>() return Task.FromResult(new ListResultDto<ContentWidgetDto>()
{ {
Items = _options.WidgetConfigs Items = _options.WidgetConfigs
.Select(n => .Select(n =>
new ContentWidgetDto new ContentWidgetDto
{ {
Key = n.Key Key = n.Key,
Properties = n.Value.Properties
}).ToList() }).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 size="Large" id="addWidgetModal">
<abp-modal-header title="@L["Edit"].Value"></abp-modal-header> <abp-modal-header title="@L["Edit"].Value"></abp-modal-header>
<abp-modal-body> <abp-modal-body>
<div class="container row md-3"> <div class="container row">
<abp-select asp-for="ViewModel.Widget" /> <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> <button class="btn btn-primary float-end" type="submit" id="save-changes">@L["Save"]</button>
</div> </div>
</abp-modal-body> </abp-modal-body>
</abp-modal> </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.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@ -26,8 +27,14 @@ public class AddWidgetModal : AbpPageModel
public async Task OnGetAsync() public async Task OnGetAsync()
{ {
ViewModel = new ContentViewModel();
var widgets = await ContentAdminAppService.GetWidgetsAsync();
ViewModel.Properties = widgets.Items.ToArray();
Widgets = new List<SelectListItem>() { new("", "") }; Widgets = new List<SelectListItem>() { new("", "") };
Widgets.AddRange((await ContentAdminAppService.GetWidgetsAsync()) Widgets.AddRange(widgets
.Items .Items
.Select(w => new SelectListItem(w.Key, w.Key)) .Select(w => new SelectListItem(w.Key, w.Key))
.ToList()); .ToList());
@ -37,5 +44,8 @@ public class AddWidgetModal : AbpPageModel
{ {
[SelectItems(nameof(Widgets))] [SelectItems(nameof(Widgets))]
public string Widget { get; set; } 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 () { abp.modals.addWidgetModal = function () {
var initModal = function () { var initModal = function () {
$('#PropertySideId').hide();
$("#ViewModel_Widget").change(function () {
$('#PropertySideId').show();
});
$("#save-changes").click(function () { $("#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 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; $('.ProseMirror div').contents()[0].data = contentEditorText + updatedText;
$('#addWidgetModal').modal('hide'); $('#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 class ContentWidgetConfig
{ {
public string Name { get; } public string Name { get; }
//TODO remove - just for example
public List<string> Properties { get; } = new() { "Type", "Code" };
public ContentWidgetConfig(string widgetName) public ContentWidgetConfig(string widgetName)
{ {

Loading…
Cancel
Save