From 9ab9e871c5974fd255cac48ea7510947c1e237a6 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 21 Nov 2024 09:27:57 +0100 Subject: [PATCH] livescreen, productboxoverlay --- .../AuctionDefaults.cs | 1 + .../AuctionPlugin.cs | 7 +- .../Components/AuctionPublicViewComponent.cs | 9 +- .../Components/AuctionViewComponent.cs | 30 +++++-- .../LiveAnnouncementViewComponent.cs | 2 +- .../Controllers/AuctionController.cs | 7 ++ .../AuctionUpdateNotificationMessage.cs | 18 ++++ .../Hubs/SignalRMessageHandler.cs | 23 ++++- .../Infrastructure/RouteProvider.cs | 4 + .../Models/AuctionPublicInfoModel.cs | 10 ++- .../Models/LiveScreenViewModel.cs | 18 ++++ .../Models/ProductBidBoxViewModel.cs | 1 + .../Nop.Plugin.Misc.AuctionPlugin.csproj | 16 ++++ .../Views/Auction/LiveScreenRoot.cshtml | 22 +++++ .../Views/Auction/_LiveScreenLayout.cshtml | 84 +++++++++++++++++++ .../Views/Auction/_ViewImports.cshtml | 32 +++++++ .../Views/LiveScreen.cshtml | 21 +++++ .../Views/PublicInfo.cshtml | 49 +++++++++-- .../Views/PublicProductBidBox.cshtml | 23 +++-- 19 files changed, 347 insertions(+), 30 deletions(-) create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionUpdateNotificationMessage.cs create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Models/LiveScreenViewModel.cs create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Views/Auction/LiveScreenRoot.cshtml create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Views/Auction/_LiveScreenLayout.cshtml create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Views/Auction/_ViewImports.cshtml create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Views/LiveScreen.cshtml diff --git a/Nop.Plugin.Misc.AuctionPlugin/AuctionDefaults.cs b/Nop.Plugin.Misc.AuctionPlugin/AuctionDefaults.cs index e69e9e8..15bbc3f 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/AuctionDefaults.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/AuctionDefaults.cs @@ -33,6 +33,7 @@ public static class AuctionDefaults public static string BidNotificationRouteName => "Plugin.Misc.AuctionPlugin.BidNotification"; public static string RefreshAuctionWidgetRouteName => "Plugin.Misc.AuctionPlugin.RefreshAuctionWidget"; public static string AssignProductToAuction => "Plugin.Misc.AuctionPlugin.AssignProductToAuction"; + public static string LiveScreenRouteName => "Plugin.Misc.AuctionPlugin.LiveScreenRouteName"; /// /// Gets the name of autosuggest component diff --git a/Nop.Plugin.Misc.AuctionPlugin/AuctionPlugin.cs b/Nop.Plugin.Misc.AuctionPlugin/AuctionPlugin.cs index ad77a43..a7f7a7a 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/AuctionPlugin.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/AuctionPlugin.cs @@ -7,7 +7,6 @@ using Nop.Data; using Nop.Plugin.Misc.AuctionPlugin.Areas.Admin.Components; using Nop.Plugin.Misc.AuctionPlugin.Components; - //using Nop.Plugin.Misc.AuctionPlugin.Components; using Nop.Services.Catalog; using Nop.Services.Cms; @@ -112,7 +111,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin return typeof(AuctionAdminViewComponent); } - if (widgetZone.Equals(PublicWidgetZones.HeaderAfter)) + if (widgetZone.Equals(PublicWidgetZones.BodyStartHtmlTagAfter)) { return typeof(LiveAnnouncementViewComponent); } @@ -130,8 +129,8 @@ namespace Nop.Plugin.Misc.AuctionPlugin return Task.FromResult>(new List { PublicWidgetZones.ProductDetailsOverviewTop, - PublicWidgetZones.ProductDetailsBottom, - PublicWidgetZones.HeaderAfter, + PublicWidgetZones.ProductBoxAddinfoBefore, + PublicWidgetZones.BodyStartHtmlTagAfter, AdminWidgetZones.ProductDetailsButtons //AdminWidgetZones.OrderBillingAddressDetailsBottom, diff --git a/Nop.Plugin.Misc.AuctionPlugin/Components/AuctionPublicViewComponent.cs b/Nop.Plugin.Misc.AuctionPlugin/Components/AuctionPublicViewComponent.cs index 2adaa56..2522d9f 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Components/AuctionPublicViewComponent.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Components/AuctionPublicViewComponent.cs @@ -135,11 +135,18 @@ public class AuctionPublicViewComponent : NopViewComponent } - var productToAuctionId = await _auctionService.GetProductToAuctionByAuctionIdAndProductIdAsync(auctionId, productDetailsModel.Id); + List productToAuctionId = await _auctionService.GetProductToAuctionByAuctionIdAndProductIdAsync(auctionId, productDetailsModel.Id); + + AuctionStatus status = productToAuctionId.FirstOrDefault().AuctionStatus; + bool isActive = status.HasFlag(AuctionStatus.Active); + bool isFirstWarning = status.HasFlag(AuctionStatus.FirstWarning); + productBidBoxViewModel.IsAdmin = await _customerService.IsAdminAsync(customer); productBidBoxViewModel.IsGuest = await _customerService.IsGuestAsync(customer); productBidBoxViewModel.AuctionClosed = auction.Closed; + productBidBoxViewModel.Status = productToAuctionId.FirstOrDefault().AuctionStatus; + productBidBoxViewModel.WidgetZone = widgetZone; productBidBoxViewModel.BasePrice = productDetailsModel.ProductPrice.OldPriceValue; productBidBoxViewModel.CurrentPrice = productDetailsModel.ProductPrice.PriceValue; diff --git a/Nop.Plugin.Misc.AuctionPlugin/Components/AuctionViewComponent.cs b/Nop.Plugin.Misc.AuctionPlugin/Components/AuctionViewComponent.cs index f47cc4a..cd6f9cb 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Components/AuctionViewComponent.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Components/AuctionViewComponent.cs @@ -1,6 +1,8 @@ using Microsoft.AspNetCore.Mvc; using Nop.Core; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; using Nop.Plugin.Misc.AuctionPlugin.Models; +using Nop.Plugin.Misc.AuctionPlugin.Services; using Nop.Services.Cms; using Nop.Services.Logging; using Nop.Web.Framework.Components; @@ -16,6 +18,7 @@ public class AuctionViewComponent : NopViewComponent protected readonly ILogger _logger; protected readonly IWidgetPluginManager _widgetPluginManager; protected readonly IWorkContext _workContext; + AuctionService _auctionService; protected readonly AuctionSettings _auctionSettings; #endregion @@ -25,11 +28,13 @@ public class AuctionViewComponent : NopViewComponent public AuctionViewComponent(ILogger logger, IWidgetPluginManager widgetPluginManager, IWorkContext workContext, + AuctionService auctionService, AuctionSettings auctionSettings) { _logger = logger; _widgetPluginManager = widgetPluginManager; _workContext = workContext; + _auctionService = auctionService; _auctionSettings = auctionSettings; } @@ -73,19 +78,28 @@ public class AuctionViewComponent : NopViewComponent //} var model = new AuctionPublicInfoModel(); - if (widgetZone.Equals(PublicWidgetZones.ProductDetailsBottom)) + if (!widgetZone.Equals(PublicWidgetZones.ProductBoxAddinfoBefore)) { - - model.Message = $"Auction plugin is active, setting = {_auctionSettings.SomeText}, productId = {((ProductDetailsModel)additionalData).Name}"; - + return Content(string.Empty); } - else + + var productId = ((ProductOverviewModel)additionalData).Id; + model.ProductId = productId; + var productToAuctionMapping = (await _auctionService.GetProductToAuctionsByProductIdAsync(productId)).FirstOrDefault(); + + if (productToAuctionMapping == null) { - - model.Message = _auctionSettings.SomeText; - + return Content(string.Empty); } + model.ProductToAuctionMappingId = productToAuctionMapping.Id; + var auction = await _auctionService.GetAuctionDtoByProductToAuctionIdAsync(productToAuctionMapping.Id); + model.StartDate = auction.StartDateUtc; + AuctionStatus status = productToAuctionMapping.AuctionStatus; + model.IsActive = status.HasFlag(AuctionStatus.Active); + + bool isFirstWarning = status.HasFlag(AuctionStatus.FirstWarning); + return View("~/Plugins/Misc.AuctionPlugin/Views/PublicInfo.cshtml", model); } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Components/LiveAnnouncementViewComponent.cs b/Nop.Plugin.Misc.AuctionPlugin/Components/LiveAnnouncementViewComponent.cs index aad80c9..4993a2e 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Components/LiveAnnouncementViewComponent.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Components/LiveAnnouncementViewComponent.cs @@ -35,7 +35,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Components await _logger.InformationAsync("SignalR Widget: widget active"); - if (!widgetZone.Equals(PublicWidgetZones.HeaderAfter)) + if (!widgetZone.Equals(PublicWidgetZones.BodyStartHtmlTagAfter)) { return Content(string.Empty); } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Controllers/AuctionController.cs b/Nop.Plugin.Misc.AuctionPlugin/Controllers/AuctionController.cs index e0cecb9..8bdfc8d 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Controllers/AuctionController.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Controllers/AuctionController.cs @@ -1,6 +1,7 @@ using AyCode.Core.Extensions; using Microsoft.AspNetCore.Mvc; using Nop.Data; +using Nop.Plugin.Misc.AuctionPlugin.Areas.Admin.Models; using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; using Nop.Plugin.Misc.AuctionPlugin.Models; using Nop.Plugin.Misc.AuctionPlugin.Services; @@ -69,4 +70,10 @@ public class AuctionController : BasePluginController return ViewComponent("AuctionPublic", new { widgetZone = request.WidgetZone, additionalData = detailsModel }); } + + public async Task LiveScreen() + { + var model = new LiveScreenViewModel(); + return View("~/Plugins/Misc.AuctionPlugin/Views/LiveScreen.cshtml", model); + } } \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionUpdateNotificationMessage.cs b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionUpdateNotificationMessage.cs new file mode 100644 index 0000000..41a5a0e --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionUpdateNotificationMessage.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos; + +namespace Nop.Plugin.Misc.AuctionPlugin.Models +{ + public class AuctionUpdateNotificationMessage : AuctionBidDto + { + public int AuctionId { get; set; } + //public string BidPrice { get; set; } + //public int ProductId { get; set; } + //public int CustomerId { get; set; } + + } +} diff --git a/Nop.Plugin.Misc.AuctionPlugin/Hubs/SignalRMessageHandler.cs b/Nop.Plugin.Misc.AuctionPlugin/Hubs/SignalRMessageHandler.cs index 018bd01..8b20e90 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Hubs/SignalRMessageHandler.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Hubs/SignalRMessageHandler.cs @@ -12,6 +12,8 @@ using Newtonsoft.Json.Serialization; using Microsoft.AspNetCore.SignalR; using Nop.Core; using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; +using MimeKit; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities.Interfaces; namespace Nop.Plugin.Misc.AuctionPlugin.Hubs { @@ -64,7 +66,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs } } - private async Task HandleOpenItemMessageRequest(int SenderId, OpenItemRequest openItemMessage) + private async Task HandleOpenItemMessageRequest(int senderId, OpenItemRequest openItemMessage) { if (openItemMessage == null) { @@ -86,6 +88,25 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs await _logger.InformationAsync($"SignalRMessageHandler.HandleOpenItemMessageRequest(); Auction {auction.Id}, ProducToAuction {productToAuction.Id}"); //_auctionService.UpdateAuctionAsync(auction); + var notification = new AuctionUpdateNotificationMessage + { + AuctionId = auction.Id, + }; + + + + var bid = new MessageWrapper + { + MessageType = "auctionEventNotification", + SenderId = senderId, + Data = notification.ToJson() + + }; + + //await _hubContext.Clients.All.SendAsync("send", bid.ToJson()); + + + } catch (Exception ex) { diff --git a/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/RouteProvider.cs b/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/RouteProvider.cs index 4eb605d..138a654 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/RouteProvider.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/RouteProvider.cs @@ -53,6 +53,10 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Infrastructure endpointRouteBuilder.MapControllerRoute(name: AuctionDefaults.AssignProductToAuction, pattern: "Admin/Auction/AssignProductToAuction", defaults: new { controller = "AuctionPluginAdmin", action = "AssignProductToAuction" }); + + endpointRouteBuilder.MapControllerRoute(name: AuctionDefaults.LiveScreenRouteName, + pattern: "Auction/LiveScreen", + defaults: new { controller = "Auction", action = "LiveScreen" }); } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Models/AuctionPublicInfoModel.cs b/Nop.Plugin.Misc.AuctionPlugin/Models/AuctionPublicInfoModel.cs index a5d5eb0..f4a55b7 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Models/AuctionPublicInfoModel.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Models/AuctionPublicInfoModel.cs @@ -5,8 +5,14 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Models { public record AuctionPublicInfoModel : BaseNopModel { - [NopResourceDisplayName("Message")] - public string Message { get; set; } + + public int ProductId { get; set; } + + public int ProductToAuctionMappingId { get; set; } + + public DateTime StartDate { get; set; } + + public bool IsActive { get; set; } } } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Models/LiveScreenViewModel.cs b/Nop.Plugin.Misc.AuctionPlugin/Models/LiveScreenViewModel.cs new file mode 100644 index 0000000..a130851 --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Models/LiveScreenViewModel.cs @@ -0,0 +1,18 @@ +using Nop.Web.Framework.Models; +using Nop.Web.Framework.Mvc.ModelBinding; + +namespace Nop.Plugin.Misc.AuctionPlugin.Models +{ + public record LiveScreenViewModel : BaseNopModel + { + + public int ProductId { get; set; } + + public int ProductToAuctionMappingId { get; set; } + + public DateTime StartDate { get; set; } + + public bool IsActive { get; set; } + + } +} diff --git a/Nop.Plugin.Misc.AuctionPlugin/Models/ProductBidBoxViewModel.cs b/Nop.Plugin.Misc.AuctionPlugin/Models/ProductBidBoxViewModel.cs index 3707101..1ecc510 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Models/ProductBidBoxViewModel.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Models/ProductBidBoxViewModel.cs @@ -15,6 +15,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Models public bool IsGuest { get; set; } public int AuctionId { get; set; } public bool AuctionClosed { get; set; } + public AuctionStatus Status { get; set; } public int ProductId { get; set; } public int CustomerId { get; set; } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Nop.Plugin.Misc.AuctionPlugin.csproj b/Nop.Plugin.Misc.AuctionPlugin/Nop.Plugin.Misc.AuctionPlugin.csproj index 28fdb01..9bf6545 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Nop.Plugin.Misc.AuctionPlugin.csproj +++ b/Nop.Plugin.Misc.AuctionPlugin/Nop.Plugin.Misc.AuctionPlugin.csproj @@ -22,8 +22,12 @@ + + + + @@ -61,9 +65,21 @@ Always + + Always + + + Always + Always + + Always + + + Always + Always diff --git a/Nop.Plugin.Misc.AuctionPlugin/Views/Auction/LiveScreenRoot.cshtml b/Nop.Plugin.Misc.AuctionPlugin/Views/Auction/LiveScreenRoot.cshtml new file mode 100644 index 0000000..3c29b53 --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Views/Auction/LiveScreenRoot.cshtml @@ -0,0 +1,22 @@ +@{ + Layout = "_LiveScreenLayout.cshtml"; +} +@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.BodyStartHtmlTagAfter }) +@{ + await Html.RenderPartialAsync("_Notifications"); +} +@{ + await Html.RenderPartialAsync("_JavaScriptDisabledWarning"); +} + +
+ + +
+
+ @RenderBody() +
+
+
+ +@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.BodyEndHtmlTagBefore }) diff --git a/Nop.Plugin.Misc.AuctionPlugin/Views/Auction/_LiveScreenLayout.cshtml b/Nop.Plugin.Misc.AuctionPlugin/Views/Auction/_LiveScreenLayout.cshtml new file mode 100644 index 0000000..dbc4a71 --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Views/Auction/_LiveScreenLayout.cshtml @@ -0,0 +1,84 @@ +@using Nop.Core.Configuration +@using Nop.Core.Domain.Catalog +@using Nop.Core.Domain.Common +@using Nop.Core.Domain.Seo +@using Nop.Services.Security +@using Nop.Core.Events +@inject CatalogSettings catalogSettings +@inject CommonSettings commonSettings +@inject IEventPublisher eventPublisher +@inject IPermissionService permissionService +@inject SeoSettings seoSettings +@inject AppSettings appSettings +@{ + if (catalogSettings.DisplayAllPicturesOnCatalogPages) + { + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/swiper/swiper-bundle.min.js"); + } + + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/Themes/CypherClean/Content/scripts/bootstrap.bundle.min.js"); + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/Themes/CypherClean/Content/scripts/tether.min.js"); + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/js/public.countryselect.js"); + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/js/public.ajaxcart.js"); + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/js/public.common.js"); + //when jQuery migrate script logging is active you will see the log in the browser console + if (commonSettings.JqueryMigrateScriptLoggingActive) + { + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery-migrate/jquery-migrate.js"); + } + else + { + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery-migrate/jquery-migrate.min.js"); + } + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery-ui-dist/jquery-ui.min.js"); + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"); + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery-validation/jquery.validate.min.js"); + NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery/jquery.min.js"); + + //custom tag(s); + if (!string.IsNullOrEmpty(seoSettings.CustomHeadTags)) + { + NopHtml.AppendHeadCustomParts(seoSettings.CustomHeadTags); + } + //event + await eventPublisher.PublishAsync(new PageRenderingEvent(NopHtml)); + var title = await NopHtml.GenerateTitleAsync(); + var description = await @NopHtml.GenerateMetaDescriptionAsync(); + var keywords = await NopHtml.GenerateMetaKeywordsAsync(); +} + + + + @title + + + + + + @NopHtml.GenerateHeadCustom() + @*This is used so that themes can inject content into the header*@ + @await Html.PartialAsync("Head") + + @NopHtml.GenerateCssFiles() + + @await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HeadHtmlTag }) + @NopHtml.GenerateScripts(ResourceLocation.Head) + @NopHtml.GenerateCanonicalUrls() + @await Component.InvokeAsync(typeof(NewsRssHeaderLinkViewComponent)) + @await Component.InvokeAsync(typeof(BlogRssHeaderLinkViewComponent)) + @*Insert favicon and app icons head code*@ + @await Component.InvokeAsync(typeof(FaviconViewComponent)) + @NopHtml.GenerateScripts(ResourceLocation.Head) + @NopHtml.GenerateInlineScripts(ResourceLocation.Head) + + + @Html.Raw(commonSettings.HeaderCustomHtml) + + + + @RenderBody() + @NopHtml.GenerateScripts(ResourceLocation.Footer) + @NopHtml.GenerateInlineScripts(ResourceLocation.Footer) + @Html.Raw(commonSettings.FooterCustomHtml) + + diff --git a/Nop.Plugin.Misc.AuctionPlugin/Views/Auction/_ViewImports.cshtml b/Nop.Plugin.Misc.AuctionPlugin/Views/Auction/_ViewImports.cshtml new file mode 100644 index 0000000..7c4352d --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Views/Auction/_ViewImports.cshtml @@ -0,0 +1,32 @@ +@inherits Nop.Web.Framework.Mvc.Razor.NopRazorPage +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Nop.Web.Framework + +@inject INopHtmlHelper NopHtml + +@using System.Globalization; +@using System.Text.Encodings.Web +@using Microsoft.AspNetCore.Mvc.ViewFeatures +@using System.Text.Encodings.Web +@using Newtonsoft.Json +@using Nop.Core +@using Nop.Core.Infrastructure +@using Nop.Core.Domain.Catalog +@using Nop.Core.Domain.Seo; +@using Nop.Services.Events +@using Nop.Web.Components +@using Nop.Web.Framework +@using Nop.Web.Framework.Events +@using Nop.Web.Framework.Infrastructure +@using Nop.Web.Extensions +@using Nop.Web.Framework.Extensions +@using Nop.Web.Framework.Models +@using Nop.Web.Framework.Models.DataTables +@using Nop.Web.Framework.Security.Captcha +@using Nop.Web.Framework.Security.Honeypot +@using Nop.Web.Framework.Themes +@using Nop.Web.Framework.UI +@using Nop.Web.Areas.Admin.Models.Catalog +@using Nop.Plugin.Misc.AuctionPlugin +@using Nop.Plugin.Misc.AuctionPlugin.Models +@using Nop.Plugin.Misc.AuctionPlugin.Services diff --git a/Nop.Plugin.Misc.AuctionPlugin/Views/LiveScreen.cshtml b/Nop.Plugin.Misc.AuctionPlugin/Views/LiveScreen.cshtml new file mode 100644 index 0000000..957f43a --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Views/LiveScreen.cshtml @@ -0,0 +1,21 @@ +@model LiveScreenViewModel +@using Nop.Core.Infrastructure +@using Nop.Web.Framework + +@{ + var defaultGridPageSize = EngineContext.Current.Resolve().DefaultGridPageSize; + var gridPageSizes = EngineContext.Current.Resolve().GridPageSizes; + Layout = "Auction/LiveScreenRoot.cshtml"; + //page title + +} +
+ +

Live screen

+ +
+ + + + + diff --git a/Nop.Plugin.Misc.AuctionPlugin/Views/PublicInfo.cshtml b/Nop.Plugin.Misc.AuctionPlugin/Views/PublicInfo.cshtml index 90d678d..de46a6f 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Views/PublicInfo.cshtml +++ b/Nop.Plugin.Misc.AuctionPlugin/Views/PublicInfo.cshtml @@ -1,9 +1,44 @@ @model AuctionPublicInfoModel -
-

Auction viewcomponent

- -
-

General widget info: @Model.Message

-
-
+ + + + diff --git a/Nop.Plugin.Misc.AuctionPlugin/Views/PublicProductBidBox.cshtml b/Nop.Plugin.Misc.AuctionPlugin/Views/PublicProductBidBox.cshtml index 91b0d75..97867f5 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Views/PublicProductBidBox.cshtml +++ b/Nop.Plugin.Misc.AuctionPlugin/Views/PublicProductBidBox.cshtml @@ -19,7 +19,7 @@
Bid Step: - @String.Format("{0:c}", Model.LicitStep) + @String.Format("{0:c}", Model.LicitStep)