/// <summary> /// Prepare paged pickup point provider list model /// </summary> /// <param name="searchModel">Pickup point provider search model</param> /// <returns> /// A task that represents the asynchronous operation /// The task result contains the pickup point provider list model /// </returns> public virtual async Task <PickupPointProviderListModel> PreparePickupPointProviderListModelAsync(PickupPointProviderSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //get pickup point providers var pickupPointProviders = (await _pickupPluginManager.LoadAllPluginsAsync()).ToPagedList(searchModel); //prepare grid model var model = await new PickupPointProviderListModel().PrepareToGridAsync(searchModel, pickupPointProviders, () => { return(pickupPointProviders.SelectAwait(async provider => { //fill in model values from the entity var pickupPointProviderModel = provider.ToPluginModel <PickupPointProviderModel>(); //fill in additional values (not existing in the entity) pickupPointProviderModel.IsActive = _pickupPluginManager.IsPluginActive(provider); pickupPointProviderModel.ConfigurationUrl = provider.GetConfigurationPageUrl(); pickupPointProviderModel.LogoUrl = await _pickupPluginManager.GetPluginLogoUrlAsync(provider); return pickupPointProviderModel; })); }); return(model); }
/// <summary> /// Prepare plugins enabled warning model /// </summary> /// <param name="models">List of system warning models</param> protected virtual void PreparePluginsEnabledWarningModel(List <SystemWarningModel> models) { var plugins = _pluginService.GetPlugins <IPlugin>(); var notEnabled = new List <string>(); foreach (var plugin in plugins) { var isEnabled = true; switch (plugin) { case IPaymentMethod paymentMethod: isEnabled = _paymentPluginManager.IsPluginActive(paymentMethod); break; case IShippingRateComputationMethod shippingRateComputationMethod: isEnabled = _shippingPluginManager.IsPluginActive(shippingRateComputationMethod); break; case IPickupPointProvider pickupPointProvider: isEnabled = _pickupPluginManager.IsPluginActive(pickupPointProvider); break; case ITaxProvider taxProvider: isEnabled = _taxPluginManager.IsPluginActive(taxProvider); break; case IExternalAuthenticationMethod externalAuthenticationMethod: isEnabled = _authenticationPluginManager.IsPluginActive(externalAuthenticationMethod); break; case IWidgetPlugin widgetPlugin: isEnabled = _widgetPluginManager.IsPluginActive(widgetPlugin); break; case IExchangeRateProvider exchangeRateProvider: isEnabled = _exchangeRatePluginManager.IsPluginActive(exchangeRateProvider); break; } if (isEnabled) { continue; } notEnabled.Add(plugin.PluginDescriptor.FriendlyName); } if (notEnabled.Any()) { models.Add(new SystemWarningModel { Level = SystemWarningLevel.Warning, Text = $"{_localizationService.GetResource("Admin.System.Warnings.PluginNotEnabled")}: {string.Join(", ", notEnabled)}" }); } }
/// <summary> /// Prepare plugin model properties of the installed plugin /// </summary> /// <param name="model">Plugin model</param> /// <param name="plugin">Plugin</param> protected virtual void PrepareInstalledPluginModel(PluginModel model, IPlugin plugin) { if (model == null) { throw new ArgumentNullException(nameof(model)); } if (plugin == null) { throw new ArgumentNullException(nameof(plugin)); } //prepare configuration URL model.ConfigurationUrl = plugin.GetConfigurationPageUrl(); //prepare enabled/disabled (only for some plugin types) model.CanChangeEnabled = true; switch (plugin) { case IPaymentMethod paymentMethod: model.IsEnabled = _paymentPluginManager.IsPluginActive(paymentMethod); break; case IShippingRateComputationMethod shippingRateComputationMethod: model.IsEnabled = _shippingPluginManager.IsPluginActive(shippingRateComputationMethod); break; case IPickupPointProvider pickupPointProvider: model.IsEnabled = _pickupPluginManager.IsPluginActive(pickupPointProvider); break; case ITaxProvider taxProvider: model.IsEnabled = _taxPluginManager.IsPluginActive(taxProvider); break; case IExternalAuthenticationMethod externalAuthenticationMethod: model.IsEnabled = _authenticationPluginManager.IsPluginActive(externalAuthenticationMethod); break; case IMultiFactorAuthenticationMethod multiFactorAuthenticationMethod: model.IsEnabled = _multiFactorAuthenticationPluginManager.IsPluginActive(multiFactorAuthenticationMethod); break; case IWidgetPlugin widgetPlugin: model.IsEnabled = _widgetPluginManager.IsPluginActive(widgetPlugin); break; default: model.CanChangeEnabled = false; break; } }
public virtual async Task <IActionResult> PickupPointProviderUpdate(PickupPointProviderModel model) { if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageShippingSettings)) { return(AccessDeniedView()); } var pickupPointProvider = await _pickupPluginManager.LoadPluginBySystemNameAsync(model.SystemName); if (_pickupPluginManager.IsPluginActive(pickupPointProvider)) { if (!model.IsActive) { //mark as disabled _shippingSettings.ActivePickupPointProviderSystemNames.Remove(pickupPointProvider.PluginDescriptor.SystemName); await _settingService.SaveSettingAsync(_shippingSettings); } } else { if (model.IsActive) { //mark as active _shippingSettings.ActivePickupPointProviderSystemNames.Add(pickupPointProvider.PluginDescriptor.SystemName); await _settingService.SaveSettingAsync(_shippingSettings); } } var pluginDescriptor = pickupPointProvider.PluginDescriptor; pluginDescriptor.DisplayOrder = model.DisplayOrder; //update the description file pluginDescriptor.Save(); //raise event await _eventPublisher.PublishAsync(new PluginUpdatedEvent(pluginDescriptor)); return(new NullJsonResult()); }
public virtual IActionResult EditPopup(PluginModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManagePlugins)) { return(AccessDeniedView()); } //try to get a plugin with the specified system name var pluginDescriptor = _pluginService.GetPluginDescriptorBySystemName <IPlugin>(model.SystemName, LoadPluginsMode.All); if (pluginDescriptor == null) { return(RedirectToAction("List")); } if (ModelState.IsValid) { ViewBag.RefreshPage = true; //we allow editing of 'friendly name', 'display order', store mappings pluginDescriptor.FriendlyName = model.FriendlyName; pluginDescriptor.DisplayOrder = model.DisplayOrder; pluginDescriptor.LimitedToStores.Clear(); if (model.SelectedStoreIds.Any()) { pluginDescriptor.LimitedToStores = model.SelectedStoreIds; } pluginDescriptor.LimitedToCustomerRoles.Clear(); if (model.SelectedCustomerRoleIds.Any()) { pluginDescriptor.LimitedToCustomerRoles = model.SelectedCustomerRoleIds; } //update the description file pluginDescriptor.Save(); //raise event _eventPublisher.Publish(new PluginUpdatedEvent(pluginDescriptor)); //locales var pluginInstance = pluginDescriptor.Instance <IPlugin>(); foreach (var localized in model.Locales) { _localizationService.SaveLocalizedFriendlyName(pluginInstance, localized.LanguageId, localized.FriendlyName); } //enabled/disabled if (!pluginDescriptor.Installed) { return(View(model)); } var pluginIsActive = false; switch (pluginInstance) { case IPaymentMethod paymentMethod: pluginIsActive = _paymentPluginManager.IsPluginActive(paymentMethod); if (pluginIsActive && !model.IsEnabled) { //mark as disabled _paymentSettings.ActivePaymentMethodSystemNames.Remove(pluginDescriptor.SystemName); _settingService.SaveSetting(_paymentSettings); break; } if (!pluginIsActive && model.IsEnabled) { //mark as enabled _paymentSettings.ActivePaymentMethodSystemNames.Add(pluginDescriptor.SystemName); _settingService.SaveSetting(_paymentSettings); } break; case IShippingRateComputationMethod shippingRateComputationMethod: pluginIsActive = _shippingPluginManager.IsPluginActive(shippingRateComputationMethod); if (pluginIsActive && !model.IsEnabled) { //mark as disabled _shippingSettings.ActiveShippingRateComputationMethodSystemNames.Remove(pluginDescriptor.SystemName); _settingService.SaveSetting(_shippingSettings); break; } if (!pluginIsActive && model.IsEnabled) { //mark as enabled _shippingSettings.ActiveShippingRateComputationMethodSystemNames.Add(pluginDescriptor.SystemName); _settingService.SaveSetting(_shippingSettings); } break; case IPickupPointProvider pickupPointProvider: pluginIsActive = _pickupPluginManager.IsPluginActive(pickupPointProvider); if (pluginIsActive && !model.IsEnabled) { //mark as disabled _shippingSettings.ActivePickupPointProviderSystemNames.Remove(pluginDescriptor.SystemName); _settingService.SaveSetting(_shippingSettings); break; } if (!pluginIsActive && model.IsEnabled) { //mark as enabled _shippingSettings.ActivePickupPointProviderSystemNames.Add(pluginDescriptor.SystemName); _settingService.SaveSetting(_shippingSettings); } break; case ITaxProvider taxProvider: if (!model.IsEnabled) { //mark as disabled _taxSettings.ActiveTaxProviderSystemName = string.Empty; _settingService.SaveSetting(_taxSettings); break; } //mark as enabled _taxSettings.ActiveTaxProviderSystemName = model.SystemName; _settingService.SaveSetting(_taxSettings); break; case IExternalAuthenticationMethod externalAuthenticationMethod: pluginIsActive = _authenticationPluginManager.IsPluginActive(externalAuthenticationMethod); if (pluginIsActive && !model.IsEnabled) { //mark as disabled _externalAuthenticationSettings.ActiveAuthenticationMethodSystemNames.Remove(pluginDescriptor.SystemName); _settingService.SaveSetting(_externalAuthenticationSettings); break; } if (!pluginIsActive && model.IsEnabled) { //mark as enabled _externalAuthenticationSettings.ActiveAuthenticationMethodSystemNames.Add(pluginDescriptor.SystemName); _settingService.SaveSetting(_externalAuthenticationSettings); } break; case IWidgetPlugin widgetPlugin: pluginIsActive = _widgetPluginManager.IsPluginActive(widgetPlugin); if (pluginIsActive && !model.IsEnabled) { //mark as disabled _widgetSettings.ActiveWidgetSystemNames.Remove(pluginDescriptor.SystemName); _settingService.SaveSetting(_widgetSettings); break; } if (!pluginIsActive && model.IsEnabled) { //mark as enabled _widgetSettings.ActiveWidgetSystemNames.Add(pluginDescriptor.SystemName); _settingService.SaveSetting(_widgetSettings); } break; } //activity log _customerActivityService.InsertActivity("EditPlugin", string.Format(_localizationService.GetResource("ActivityLog.EditPlugin"), pluginDescriptor.FriendlyName)); return(View(model)); } //prepare model model = _pluginModelFactory.PreparePluginModel(model, pluginDescriptor, true); //if we got this far, something failed, redisplay form return(View(model)); }
/// <summary> /// Prepare plugins enabled warning model /// </summary> /// <param name="models">List of system warning models</param> protected virtual void PreparePluginsEnabledWarningModel(List <SystemWarningModel> models) { var plugins = _pluginService.GetPlugins <IPlugin>(); var notEnabled = new List <string>(); var notEnabledSystemNames = new List <string>(); foreach (var plugin in plugins) { var isEnabled = true; switch (plugin) { case IPaymentMethod paymentMethod: isEnabled = _paymentPluginManager.IsPluginActive(paymentMethod); break; case IShippingRateComputationMethod shippingRateComputationMethod: isEnabled = _shippingPluginManager.IsPluginActive(shippingRateComputationMethod); break; case IPickupPointProvider pickupPointProvider: isEnabled = _pickupPluginManager.IsPluginActive(pickupPointProvider); break; case ITaxProvider taxProvider: isEnabled = _taxPluginManager.IsPluginActive(taxProvider); break; case IExternalAuthenticationMethod externalAuthenticationMethod: isEnabled = _authenticationPluginManager.IsPluginActive(externalAuthenticationMethod); break; case IWidgetPlugin widgetPlugin: isEnabled = _widgetPluginManager.IsPluginActive(widgetPlugin); break; case IExchangeRateProvider exchangeRateProvider: isEnabled = _exchangeRatePluginManager.IsPluginActive(exchangeRateProvider); break; } if (isEnabled) { continue; } notEnabled.Add(plugin.PluginDescriptor.FriendlyName); notEnabledSystemNames.Add(plugin.PluginDescriptor.SystemName); } if (notEnabled.Any()) { //get URL helper var urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext); models.Add(new SystemWarningModel { Level = SystemWarningLevel.Warning, DontEncode = true, Text = $"{_localizationService.GetResource("Admin.System.Warnings.PluginNotEnabled")}: {string.Join(", ", notEnabled)} (<a href=\"{urlHelper.Action("UninstallAndDeleteUnusedPlugins", "Plugin", new { names=notEnabledSystemNames.ToArray() })}\">{_localizationService.GetResource("Admin.System.Warnings.PluginNotEnabled.AutoFixAndRestart")}</a>)" }); } }