Exemple #1
0
        /// <summary>
        /// Handle admin tabstrip created event
        /// </summary>
        /// <param name="eventMessage">Event message</param>
        public async void HandleEvent(AdminTabStripCreated eventMessage)
        {
            if (eventMessage?.Helper == null)
            {
                return;
            }

            //we need customer details page
            var tabsElementId = "customer-edit";

            if (!eventMessage.TabStripName.Equals(tabsElementId))
            {
                return;
            }

            //check whether the payment plugin is installed and is active
            var worldpayPaymentMethod = _paymentService.LoadPaymentMethodBySystemName(WorldpayPaymentDefaults.SystemName);

            if (!(worldpayPaymentMethod?.PluginDescriptor?.Installed ?? false) || !_paymentService.IsPaymentMethodActive(worldpayPaymentMethod))
            {
                return;
            }

            //get the view model
            if (!(eventMessage.Helper.ViewData.Model is CustomerModel customerModel))
            {
                return;
            }

            //check whether a customer exists and isn't guest
            var customer = _customerService.GetCustomerById(customerModel.Id);

            if (customer == null || customer.IsGuest())
            {
                return;
            }

            //try to get stored in Vault customer
            var vaultCustomer = _worldpayPaymentManager.GetCustomer(_genericAttributeService.GetAttribute <string>(customer, WorldpayPaymentDefaults.CustomerIdAttribute));

            //prepare model
            var model = new WorldpayCustomerModel
            {
                Id                 = customerModel.Id,
                CustomerExists     = vaultCustomer != null,
                WorldpayCustomerId = vaultCustomer?.CustomerId
            };

            //create a new tab
            var tabName      = _localizationService.GetResource("Plugins.Payments.Worldpay.WorldpayCustomer");
            var url          = "~/Plugins/Payments.Worldpay/Views/Customer/_CreateOrUpdate.Worldpay.cshtml";
            var contentModel = (await eventMessage.Helper.PartialAsync(url, model)).RenderHtmlContent()
                               .Replace("</script>", "<\\/script>"); //we need escape a closing script tag to prevent terminating the script block early
            var worldpayCustomerTab = eventMessage.TabContentByModel("tab-worldpay", tabName, contentModel);

            //add this tab as a block to render on the customer details page
            eventMessage.BlocksToRender.Add(worldpayCustomerTab);
        }
Exemple #2
0
 /// <summary>
 /// Add a tab to TabStrip
 /// </summary>
 /// <param name="eventMessage">AdminTabStripCreated</param>
 /// <param name="tabId">Tab Id</param>
 /// <param name="tabName">Tab name</param>
 /// <param name="contentModel">Content model</param>
 /// <returns>Html content of new Tab</returns>
 public static IHtmlContent TabContentByModel(this AdminTabStripCreated eventMessage, string tabId, string tabName, string contentModel)
 {
     return(new HtmlString($@"
         <script>
             $(document).ready(function() {{
                 $(`<li><a data-tab-name='{tabId}' data-toggle='tab' href='#{tabId}'>{tabName}</a></li>`).appendTo('#{eventMessage.TabStripName} .nav-tabs:first');
                 $(`<div class='tab-pane' id='{tabId}'>{contentModel}</div>`).appendTo('#{eventMessage.TabStripName} .tab-content:first');
             }});
         </script>"));
 }
Exemple #3
0
        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            ViewContext.ViewData[typeof(AdminTabContentTagHelper).FullName] = new List <string>();
            var content = await output.GetChildContentAsync();

            var list = (List <string>)ViewContext.ViewData[typeof(AdminTabContentTagHelper).FullName];

            if (_resolver.Device.Type != DeviceType.Desktop && SetTabPos)
            {
                SetTabPos = false;
            }

            output.TagName = "div";
            output.Attributes.SetAttribute("id", Name);
            output.Attributes.SetAttribute("style", "display:none");
            var rnd = new Random().Next(0, 100);
            var sb  = new StringBuilder();

            sb.AppendLine("<script>");
            sb.AppendLine("$(document).ready(function () {");
            sb.AppendLine($"$('#{Name}').show();");
            sb.AppendLine($"var tab_{rnd} = $('#{Name}').kendoTabStrip({{ ");
            sb.AppendLine($"     tabPosition: '{(SetTabPos ? "left" : "top")}',");
            sb.AppendLine($"     animation: {{ open: {{ effects: 'fadeIn'}} }},");
            sb.AppendLine("     select: tabstrip_on_tab_select");
            sb.AppendLine("  }).data('kendoTabStrip');");

            var eventMessage = new AdminTabStripCreated(Name);
            await _mediator.Publish(eventMessage);

            int i = 0;

            foreach (var eventBlock in eventMessage.BlocksToRender)
            {
                i++;
                sb.AppendLine($"tab_{rnd}.append({{");
                sb.AppendLine($"    text: '{eventBlock.tabname}',");
                sb.AppendLine($"    content: '{eventBlock.content}'");
                sb.AppendLine("});");
            }

            sb.AppendLine("})");

            sb.AppendLine("</script>");
            sb.AppendLine($"<input type='hidden' id='selected-tab-index' name='selected-tab-index' value='{GetSelectedTabIndex()}'>");


            output.PostContent.AppendHtml(string.Concat(list));
            output.PreElement.AppendHtml(sb.ToString());
        }
Exemple #4
0
        /// <summary>
        /// Handle admin tabstrip created event
        /// </summary>
        /// <param name="eventMessage">Event message</param>
        public void HandleEvent(AdminTabStripCreated eventMessage)
        {
            if (eventMessage?.Helper == null)
            {
                return;
            }

            //we need customer details page
            var tabsElementId = "customer-edit";

            if (!eventMessage.TabStripName.Equals(tabsElementId))
            {
                return;
            }

            //check whether the payment plugin is installed and is active
            var worldpayPaymentMethod = _paymentService.LoadPaymentMethodBySystemName(WorldpayPaymentDefaults.SystemName);

            if (!(worldpayPaymentMethod?.PluginDescriptor?.Installed ?? false) || !worldpayPaymentMethod.IsPaymentMethodActive(_paymentSettings))
            {
                return;
            }

            //get the view model
            if (!(eventMessage.Helper.ViewData.Model is CustomerModel customerModel))
            {
                return;
            }

            //check whether a customer exists and isn't guest
            var customer = _customerService.GetCustomerById(customerModel.Id);

            if (customer == null || customer.IsGuest())
            {
                return;
            }

            //try to get stored in Vault customer
            var vaultCustomer = _worldpayPaymentManager.GetCustomer(customer.GetAttribute <string>(WorldpayPaymentDefaults.CustomerIdAttribute));

            //prepare model
            var model = new WorldpayCustomerModel
            {
                Id                 = customerModel.Id,
                CustomerExists     = vaultCustomer != null,
                WorldpayCustomerId = vaultCustomer?.CustomerId
            };

            //compose script to create a new tab
            var worldpayCustomerTabElementId = "tab-worldpay";
            var worldpayCustomerTab          = new HtmlString($@"
                <script>
                    $(document).ready(function() {{
                        $(`
                            <li>
                                <a data-tab-name='{worldpayCustomerTabElementId}' data-toggle='tab' href='#{worldpayCustomerTabElementId}'>
                                    {_localizationService.GetResource("Plugins.Payments.Worldpay.WorldpayCustomer")}
                                </a>
                            </li>
                        `).appendTo('#{tabsElementId} .nav-tabs:first');
                        $(`
                            <div class='tab-pane' id='{worldpayCustomerTabElementId}'>
                                {
                                    eventMessage.Helper.Partial("~/Plugins/Payments.Worldpay/Views/Customer/_CreateOrUpdate.Worldpay.cshtml", model).RenderHtmlContent()
                                        .Replace("</script>", "<\\/script>") //we need escape a closing script tag to prevent terminating the script block early
                                }
                            </div>
                        `).appendTo('#{tabsElementId} .tab-content:first');
                    }});
                </script>");

            //add this tab as a block to render on the customer details page
            eventMessage.BlocksToRender.Add(worldpayCustomerTab);
        }
Exemple #5
0
        /// <summary>
        /// Handle admin tabstrip created event
        /// </summary>
        /// <param name="eventMessage">Event message</param>
        public async void HandleEvent(AdminTabStripCreated eventMessage)
        {
            if (eventMessage?.Helper == null)
            {
                return;
            }

            //we need vendor details page
            var tabsElementId = "vendor-edit";

            if (!eventMessage.TabStripName.Equals(tabsElementId))
            {
                return;
            }

            //check whether the plugin is installed and is active
            var pluginDescriptor = _pluginFinder.GetPluginDescriptorBySystemName("Nop.Plugin.Misc.VendorEnhanced");

            if (pluginDescriptor == null)
            {
                return;
            }

            if (!pluginDescriptor?.Installed ?? false)
            {
                return;
            }

            //get the view model
            if (!(eventMessage.Helper.ViewData.Model is VendorModel vendorModel))
            {
                return;
            }

            //check whether a vendor exists
            var vendor = _vendorService.GetVendorById(vendorModel.Id);

            var model = new Models.VendorModel();

            if (vendor == null)
            {
                model.Id = 0;
            }
            else
            {
                model.Id = vendorModel.Id;
            }


            if (_vendorEnhancedSettings.EnableVendorQRCode)
            {
                //compose script to create a new tab for qrcode
                var vendorQRCodeTabElementId = "tab-qrcode";
                var vendorQRCodeTab          = new HtmlString($@"
                <script>
                    $(document).ready(function() {{
                        $(`
                            <li>
                                <a data-tab-name='{vendorQRCodeTabElementId}' data-toggle='tab' href='#{vendorQRCodeTabElementId}'>
                                    {_localizationService.GetResource("VendorEnhanced.QRCode")}
                                </a>
                            </li>
                        `).appendTo('#{tabsElementId} .nav-tabs:first');
                        $(`
                            <div class='tab-pane' id='{vendorQRCodeTabElementId}'>
                                {
                                        (await eventMessage.Helper.PartialAsync("~/Plugins/Nop.Plugin.Misc.VendorEnhanced/Views/_VendorQRCode.cshtml", model)).RenderHtmlContent()
                                            .Replace("</script>", "<\\/script>") //we need escape a closing script tag to prevent terminating the script block early
                                    }
                            </div>
                        `).appendTo('#{tabsElementId} .tab-content:first');
                    }});
                </script>");

                //add this tab as a block to render on the vendor details page
                eventMessage.BlocksToRender.Add(vendorQRCodeTab);
            }


            if (_vendorEnhancedSettings.EnableVendorPictures)
            {
                //compose script to create a new tab for pictures
                var vendorPicturesTabElementId = "tab-pictures";
                var vendorPicturesTab          = new HtmlString($@"
                <script>
                    $(document).ready(function() {{
                        $(`
                            <li>
                                <a data-tab-name='{vendorPicturesTabElementId}' data-toggle='tab' href='#{vendorPicturesTabElementId}'>
                                    {_localizationService.GetResource("VendorEnhanced.Pictures")}
                                </a>
                            </li>
                        `).appendTo('#{tabsElementId} .nav-tabs:first');
                        $(`
                            <div class='tab-pane' id='{vendorPicturesTabElementId}'>
                                {
                                        (await eventMessage.Helper.PartialAsync("~/Plugins/Nop.Plugin.Misc.VendorEnhanced/Views/_VendorPictures.cshtml", model)).RenderHtmlContent()
                                            .Replace("</script>", "<\\/script>") //we need escape a closing script tag to prevent terminating the script block early
                                    }
                            </div>
                        `).appendTo('#{tabsElementId} .tab-content:first');
                    }});
                </script>");

                //add this tab as a block to render on the vendor details page
                eventMessage.BlocksToRender.Add(vendorPicturesTab);
            }
        }