/// <summary> /// Import language resources from XML file /// </summary> /// <param name="language">Language</param> /// <param name="xml">XML</param> public virtual void ImportLanguageFromXml(Language language, string xml) { if (language == null) { throw new ArgumentNullException("language"); } if (String.IsNullOrEmpty(xml)) { return; } var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xml); var nodes = xmlDoc.SelectNodes(@"//Language/LocaleResource"); foreach (XmlNode node in nodes) { string name = node.Attributes["Name"].InnerText.Trim(); string value = ""; var valueNode = node.SelectSingleNode("Value"); if (valueNode != null) { value = valueNode.InnerText; } if (String.IsNullOrEmpty(name)) { continue; } //do not use localizationservice because it'll clear cache and after adding each resoruce //let's bulk insert var resource = language.LocaleStringResources.Where(x => x.ResourceName.Equals(name, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (resource != null) { resource.ResourceValue = value; } else { language.LocaleStringResources.Add( new LocaleStringResource() { ResourceName = name, ResourceValue = value }); } } _languageService.UpdateLanguage(language); //clear cache _localizationService.ClearCache(); }
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) { return(RedirectToAction("List")); } if (ModelState.IsValid) { pluginDescriptor.FriendlyName = model.FriendlyName; pluginDescriptor.Description = model.Description; pluginDescriptor.DisplayOrder = model.DisplayOrder; PluginFileParser.SavePluginDescriptionFile(pluginDescriptor); string settingKey = pluginDescriptor.GetSettingKey("LimitedToStores"); if (model.LimitedToStores && model.SelectedStoreIds != null && model.SelectedStoreIds.Count() > 0) { _settingService.SetSetting <string>(settingKey, string.Join(",", model.SelectedStoreIds)); } else { _settingService.DeleteSetting(settingKey); } // reset plugin and string resources cache _pluginFinder.ReloadPlugins(); _localizationService.ClearCache(); var pluginInstance = pluginDescriptor.Instance(); foreach (var localized in model.Locales) { pluginInstance.SaveLocalizedValue(_localizationService, localized.LanguageId, "FriendlyName", localized.FriendlyName); pluginInstance.SaveLocalizedValue(_localizationService, localized.LanguageId, "Description", localized.Description); } //enabled/disabled if (pluginDescriptor.Installed) { 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 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)); }