public ActionResult EditPopup(string btnId, string formId, PluginModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManagePlugins)) return AccessDeniedView(); var pluginDescriptor = _pluginFinder.GetPluginDescriptorBySystemName(model.SystemName, LoadPluginsMode.All); if (pluginDescriptor == null) //No plugin found with the specified id return RedirectToAction("List"); if (ModelState.IsValid) { //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.ToList(); } PluginFileParser.SavePluginDescriptionFile(pluginDescriptor); //reset plugin cache _pluginFinder.ReloadPlugins(); //locales foreach (var localized in model.Locales) { pluginDescriptor.Instance().SaveLocalizedFriendlyName(_localizationService, localized.LanguageId, localized.FriendlyName); } //enabled/disabled if (pluginDescriptor.Installed) { var pluginInstance = pluginDescriptor.Instance(); if (pluginInstance is IPaymentMethod) { //payment plugin var pm = (IPaymentMethod)pluginInstance; if (pm.IsPaymentMethodActive(_paymentSettings)) { if (!model.IsEnabled) { //mark as disabled _paymentSettings.ActivePaymentMethodSystemNames.Remove(pm.PluginDescriptor.SystemName); _settingService.SaveSetting(_paymentSettings); } } else { if (model.IsEnabled) { //mark as active _paymentSettings.ActivePaymentMethodSystemNames.Add(pm.PluginDescriptor.SystemName); _settingService.SaveSetting(_paymentSettings); } } } else if (pluginInstance is IShippingRateComputationMethod) { //shipping rate computation method var srcm = (IShippingRateComputationMethod)pluginInstance; if (srcm.IsShippingRateComputationMethodActive(_shippingSettings)) { if (!model.IsEnabled) { //mark as disabled _shippingSettings.ActiveShippingRateComputationMethodSystemNames.Remove(srcm.PluginDescriptor.SystemName); _settingService.SaveSetting(_shippingSettings); } } else { if (model.IsEnabled) { //mark as active _shippingSettings.ActiveShippingRateComputationMethodSystemNames.Add(srcm.PluginDescriptor.SystemName); _settingService.SaveSetting(_shippingSettings); } } } else if (pluginInstance is IPickupPointProvider) { //pickup point provider var pickupPointProvider = (IPickupPointProvider)pluginInstance; if (pickupPointProvider.IsPickupPointProviderActive(_shippingSettings)) { if (!model.IsEnabled) { //mark as disabled _shippingSettings.ActivePickupPointProviderSystemNames.Remove(pickupPointProvider.PluginDescriptor.SystemName); _settingService.SaveSetting(_shippingSettings); } } else { if (model.IsEnabled) { //mark as active _shippingSettings.ActivePickupPointProviderSystemNames.Add(pickupPointProvider.PluginDescriptor.SystemName); _settingService.SaveSetting(_shippingSettings); } } } else if (pluginInstance is ITaxProvider) { //tax provider if (model.IsEnabled) { _taxSettings.ActiveTaxProviderSystemName = model.SystemName; _settingService.SaveSetting(_taxSettings); } else { _taxSettings.ActiveTaxProviderSystemName = ""; _settingService.SaveSetting(_taxSettings); } } else if (pluginInstance is IExternalAuthenticationMethod) { //external auth method var eam = (IExternalAuthenticationMethod)pluginInstance; if (eam.IsMethodActive(_externalAuthenticationSettings)) { if (!model.IsEnabled) { //mark as disabled _externalAuthenticationSettings.ActiveAuthenticationMethodSystemNames.Remove(eam.PluginDescriptor.SystemName); _settingService.SaveSetting(_externalAuthenticationSettings); } } else { if (model.IsEnabled) { //mark as active _externalAuthenticationSettings.ActiveAuthenticationMethodSystemNames.Add(eam.PluginDescriptor.SystemName); _settingService.SaveSetting(_externalAuthenticationSettings); } } } else if (pluginInstance is IWidgetPlugin) { //Misc plugins var widget = (IWidgetPlugin)pluginInstance; if (widget.IsWidgetActive(_widgetSettings)) { if (!model.IsEnabled) { //mark as disabled _widgetSettings.ActiveWidgetSystemNames.Remove(widget.PluginDescriptor.SystemName); _settingService.SaveSetting(_widgetSettings); } } else { if (model.IsEnabled) { //mark as active _widgetSettings.ActiveWidgetSystemNames.Add(widget.PluginDescriptor.SystemName); _settingService.SaveSetting(_widgetSettings); } } } } ViewBag.RefreshPage = true; ViewBag.btnId = btnId; ViewBag.formId = formId; return View(model); } //If we got this far, something failed, redisplay form return View(model); }
public ActionResult EditPopup(string btnId, string formId, PluginModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManagePlugins)) return AccessDeniedView(); var pluginDescriptor = _pluginFinder.GetPluginDescriptorBySystemName(model.SystemName, false); if (pluginDescriptor == null) //No plugin found with the specified id return RedirectToAction("List"); if (ModelState.IsValid) { //we allow editing of 'friendly name' and 'display order' pluginDescriptor.FriendlyName = model.FriendlyName; pluginDescriptor.DisplayOrder = model.DisplayOrder; PluginFileParser.SavePluginDescriptionFile(pluginDescriptor); //locales foreach (var localized in model.Locales) { pluginDescriptor.Instance().SaveLocalizedFriendlyName(_localizationService, localized.LanguageId, localized.FriendlyName); } ViewBag.RefreshPage = true; ViewBag.btnId = btnId; ViewBag.formId = formId; return View(model); } //If we got this far, something failed, redisplay form return View(model); }