public ActionResult GeneralCommon(GeneralCommonSettingsModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); //store information _storeInformationSettings.StoreName = model.StoreInformationSettings.StoreName; if (model.StoreInformationSettings.StoreUrl == null) model.StoreInformationSettings.StoreUrl = ""; _storeInformationSettings.StoreUrl = model.StoreInformationSettings.StoreUrl; //ensure we have "/" at the end if (!_storeInformationSettings.StoreUrl.EndsWith("/")) _storeInformationSettings.StoreUrl += "/"; _storeInformationSettings.StoreClosed = model.StoreInformationSettings.StoreClosed; _storeInformationSettings.StoreClosedAllowForAdmins = model.StoreInformationSettings.StoreClosedAllowForAdmins; _storeInformationSettings.DefaultStoreThemeForDesktops = model.StoreInformationSettings.DefaultStoreThemeForDesktops; _storeInformationSettings.AllowCustomerToSelectTheme = model.StoreInformationSettings.AllowCustomerToSelectTheme; //store whether MobileDevicesSupported setting has been changed (requires application restart) bool mobileDevicesSupportedChanged = _storeInformationSettings.MobileDevicesSupported != model.StoreInformationSettings.MobileDevicesSupported; _storeInformationSettings.MobileDevicesSupported = model.StoreInformationSettings.MobileDevicesSupported; _storeInformationSettings.DefaultStoreThemeForMobileDevices = model.StoreInformationSettings.DefaultStoreThemeForMobileDevices; //EU Cookie law _storeInformationSettings.DisplayEuCookieLawWarning = model.StoreInformationSettings.DisplayEuCookieLawWarning; _settingService.SaveSetting(_storeInformationSettings); //seo settings _seoSettings.PageTitleSeparator = model.SeoSettings.PageTitleSeparator; _seoSettings.DefaultTitle = model.SeoSettings.DefaultTitle; _seoSettings.DefaultMetaKeywords = model.SeoSettings.DefaultMetaKeywords; _seoSettings.DefaultMetaDescription = model.SeoSettings.DefaultMetaDescription; _seoSettings.ConvertNonWesternChars = model.SeoSettings.ConvertNonWesternChars; _seoSettings.CanonicalUrlsEnabled = model.SeoSettings.CanonicalUrlsEnabled; _seoSettings.PageTitleSeoAdjustment = model.SeoSettings.PageTitleSeoAdjustment; _settingService.SaveSetting(_seoSettings); //security settings if (_securitySettings.AdminAreaAllowedIpAddresses == null) _securitySettings.AdminAreaAllowedIpAddresses = new List<string>(); _securitySettings.AdminAreaAllowedIpAddresses.Clear(); if (!String.IsNullOrEmpty(model.SecuritySettings.AdminAreaAllowedIpAddresses)) foreach (string s in model.SecuritySettings.AdminAreaAllowedIpAddresses.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) if (!String.IsNullOrWhiteSpace(s)) _securitySettings.AdminAreaAllowedIpAddresses.Add(s.Trim()); _securitySettings.HideAdminMenuItemsBasedOnPermissions = model.SecuritySettings.HideAdminMenuItemsBasedOnPermissions; _settingService.SaveSetting(_securitySettings); _captchaSettings.Enabled = model.SecuritySettings.CaptchaEnabled; _captchaSettings.ShowOnLoginPage = model.SecuritySettings.CaptchaShowOnLoginPage; _captchaSettings.ShowOnRegistrationPage = model.SecuritySettings.CaptchaShowOnRegistrationPage; _captchaSettings.ShowOnContactUsPage = model.SecuritySettings.CaptchaShowOnContactUsPage; _captchaSettings.ShowOnEmailWishlistToFriendPage = model.SecuritySettings.CaptchaShowOnEmailWishlistToFriendPage; _captchaSettings.ShowOnEmailProductToFriendPage = model.SecuritySettings.CaptchaShowOnEmailProductToFriendPage; _captchaSettings.ShowOnBlogCommentPage = model.SecuritySettings.CaptchaShowOnBlogCommentPage; _captchaSettings.ShowOnNewsCommentPage = model.SecuritySettings.CaptchaShowOnNewsCommentPage; _captchaSettings.ShowOnProductReviewPage = model.SecuritySettings.CaptchaShowOnProductReviewPage; _captchaSettings.ReCaptchaPublicKey = model.SecuritySettings.ReCaptchaPublicKey; _captchaSettings.ReCaptchaPrivateKey = model.SecuritySettings.ReCaptchaPrivateKey; _settingService.SaveSetting(_captchaSettings); if (_captchaSettings.Enabled && (String.IsNullOrWhiteSpace(_captchaSettings.ReCaptchaPublicKey) || String.IsNullOrWhiteSpace(_captchaSettings.ReCaptchaPrivateKey))) { //captcha is enabled but the keys are not entered ErrorNotification("Captcha is enabled but the appropriate keys are not entered"); } //save SSL settings try { if (AppDomain.CurrentDomain.IsFullyTrusted) { //full trust bool useSsl = !String.IsNullOrEmpty(ConfigurationManager.AppSettings["UseSSL"]) && Convert.ToBoolean(ConfigurationManager.AppSettings["UseSSL"]); string sharedSslUrl = ConfigurationManager.AppSettings["SharedSSLUrl"]; string nonSharedSslUrl = ConfigurationManager.AppSettings["NonSharedSSLUrl"]; //use this field to prevent web.config saving if not changes are done (can cause application restart) bool sslChanged = false; var config = WebConfigurationManager.OpenWebConfiguration("~"); if (useSsl != model.SecuritySettings.UseSsl) { config.AppSettings.Settings["UseSSL"].Value = model.SecuritySettings.UseSsl.ToString(); sslChanged = true; } if (model.SecuritySettings.SharedSslUrl == null) model.SecuritySettings.SharedSslUrl = ""; if (sharedSslUrl != model.SecuritySettings.SharedSslUrl) { config.AppSettings.Settings["SharedSSLUrl"].Value = model.SecuritySettings.SharedSslUrl; sslChanged = true; } if (model.SecuritySettings.NonSharedSslUrl == null) model.SecuritySettings.NonSharedSslUrl = ""; if (nonSharedSslUrl != model.SecuritySettings.NonSharedSslUrl) { config.AppSettings.Settings["NonSharedSSLUrl"].Value = model.SecuritySettings.NonSharedSslUrl; sslChanged = true; } if (sslChanged) config.Save(ConfigurationSaveMode.Modified); } else { //medium trust ErrorNotification("SSL settings cannot be saved in medium trust. Manually update web.config file."); } } catch (Exception exc) { ErrorNotification("SSL settings cannot be saved in medium trust. Manually update web.config file. " + exc.Message); } //PDF settings _pdfSettings.Enabled = model.PdfSettings.Enabled; _pdfSettings.LetterPageSizeEnabled = model.PdfSettings.LetterPageSizeEnabled; _pdfSettings.LogoPictureId = model.PdfSettings.LogoPictureId; _settingService.SaveSetting(_pdfSettings); //localization settings _localizationSettings.UseImagesForLanguageSelection = model.LocalizationSettings.UseImagesForLanguageSelection; if (_localizationSettings.SeoFriendlyUrlsForLanguagesEnabled != model.LocalizationSettings.SeoFriendlyUrlsForLanguagesEnabled) { _localizationSettings.SeoFriendlyUrlsForLanguagesEnabled = model.LocalizationSettings.SeoFriendlyUrlsForLanguagesEnabled; //clear cached values of routes System.Web.Routing.RouteTable.Routes.ClearSeoFriendlyUrlsCachedValueForRoutes(); } _settingService.SaveSetting(_localizationSettings); //full-text _commonSettings.FullTextMode = model.FullTextSettings.SearchMode; _settingService.SaveSetting(_commonSettings); //activity log _customerActivityService.InsertActivity("EditSettings", _localizationService.GetResource("ActivityLog.EditSettings")); if (mobileDevicesSupportedChanged) { //MobileDevicesSupported setting has been changed //restart application _webHelper.RestartAppDomain(); } SuccessNotification(_localizationService.GetResource("Admin.Configuration.Updated")); return RedirectToAction("GeneralCommon"); }
public ActionResult ChangeEnryptionKey(GeneralCommonSettingsModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); //set page timeout to 5 minutes this.Server.ScriptTimeout = 300; try { if (model.SecuritySettings.EncryptionKey == null) model.SecuritySettings.EncryptionKey = ""; model.SecuritySettings.EncryptionKey = model.SecuritySettings.EncryptionKey.Trim(); var newEncryptionPrivateKey = model.SecuritySettings.EncryptionKey; if (String.IsNullOrEmpty(newEncryptionPrivateKey) || newEncryptionPrivateKey.Length != 16) throw new NopException(_localizationService.GetResource("Admin.Configuration.Settings.GeneralCommon.EncryptionKey.TooShort")); string oldEncryptionPrivateKey = _securitySettings.EncryptionKey; if (oldEncryptionPrivateKey == newEncryptionPrivateKey) throw new NopException(_localizationService.GetResource("Admin.Configuration.Settings.GeneralCommon.EncryptionKey.TheSame")); //update encrypted order info var orders = _orderService.LoadAllOrders(); foreach (var order in orders) { string decryptedCardType = _encryptionService.DecryptText(order.CardType, oldEncryptionPrivateKey); string decryptedCardName = _encryptionService.DecryptText(order.CardName, oldEncryptionPrivateKey); string decryptedCardNumber = _encryptionService.DecryptText(order.CardNumber, oldEncryptionPrivateKey); string decryptedMaskedCreditCardNumber = _encryptionService.DecryptText(order.MaskedCreditCardNumber, oldEncryptionPrivateKey); string decryptedCardCvv2 = _encryptionService.DecryptText(order.CardCvv2, oldEncryptionPrivateKey); string decryptedCardExpirationMonth = _encryptionService.DecryptText(order.CardExpirationMonth, oldEncryptionPrivateKey); string decryptedCardExpirationYear = _encryptionService.DecryptText(order.CardExpirationYear, oldEncryptionPrivateKey); string encryptedCardType = _encryptionService.EncryptText(decryptedCardType, newEncryptionPrivateKey); string encryptedCardName = _encryptionService.EncryptText(decryptedCardName, newEncryptionPrivateKey); string encryptedCardNumber = _encryptionService.EncryptText(decryptedCardNumber, newEncryptionPrivateKey); string encryptedMaskedCreditCardNumber = _encryptionService.EncryptText(decryptedMaskedCreditCardNumber, newEncryptionPrivateKey); string encryptedCardCvv2 = _encryptionService.EncryptText(decryptedCardCvv2, newEncryptionPrivateKey); string encryptedCardExpirationMonth = _encryptionService.EncryptText(decryptedCardExpirationMonth, newEncryptionPrivateKey); string encryptedCardExpirationYear = _encryptionService.EncryptText(decryptedCardExpirationYear, newEncryptionPrivateKey); order.CardType = encryptedCardType; order.CardName = encryptedCardName; order.CardNumber = encryptedCardNumber; order.MaskedCreditCardNumber = encryptedMaskedCreditCardNumber; order.CardCvv2 = encryptedCardCvv2; order.CardExpirationMonth = encryptedCardExpirationMonth; order.CardExpirationYear = encryptedCardExpirationYear; _orderService.UpdateOrder(order); } //update user information //optimization - load only users with PasswordFormat.Encrypted var customers = _customerService.GetAllCustomersByPasswordFormat(PasswordFormat.Encrypted); foreach (var customer in customers) { string decryptedPassword = _encryptionService.DecryptText(customer.Password, oldEncryptionPrivateKey); string encryptedPassword = _encryptionService.EncryptText(decryptedPassword, newEncryptionPrivateKey); customer.Password = encryptedPassword; _customerService.UpdateCustomer(customer); } _securitySettings.EncryptionKey = newEncryptionPrivateKey; _settingService.SaveSetting(_securitySettings); SuccessNotification(_localizationService.GetResource("Admin.Configuration.Settings.GeneralCommon.EncryptionKey.Changed")); } catch (Exception exc) { ErrorNotification(exc); } return RedirectToAction("GeneralCommon", new { selectedTab = "security" }); }
public ActionResult GeneralCommon(string selectedTab) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); //set page timeout to 5 minutes this.Server.ScriptTimeout = 300; //store information var model = new GeneralCommonSettingsModel(); model.StoreInformationSettings.StoreName = _storeInformationSettings.StoreName; model.StoreInformationSettings.StoreUrl = _storeInformationSettings.StoreUrl; model.StoreInformationSettings.StoreClosed = _storeInformationSettings.StoreClosed; model.StoreInformationSettings.StoreClosedAllowForAdmins = _storeInformationSettings.StoreClosedAllowForAdmins; //desktop themes model.StoreInformationSettings.DefaultStoreThemeForDesktops = _storeInformationSettings.DefaultStoreThemeForDesktops; model.StoreInformationSettings.AvailableStoreThemesForDesktops = _themeProvider .GetThemeConfigurations() .Where(x => !x.MobileTheme) //do not display themes for mobile devices .Select(x => { return new SelectListItem() { Text = x.ThemeTitle, Value = x.ThemeName, Selected = x.ThemeName.Equals(_storeInformationSettings.DefaultStoreThemeForDesktops, StringComparison.InvariantCultureIgnoreCase) }; }) .ToList(); model.StoreInformationSettings.AllowCustomerToSelectTheme = _storeInformationSettings.AllowCustomerToSelectTheme; model.StoreInformationSettings.MobileDevicesSupported = _storeInformationSettings.MobileDevicesSupported; //mobile device themes model.StoreInformationSettings.DefaultStoreThemeForMobileDevices = _storeInformationSettings.DefaultStoreThemeForMobileDevices; model.StoreInformationSettings.AvailableStoreThemesForMobileDevices = _themeProvider .GetThemeConfigurations() .Where(x => x.MobileTheme) //do not display themes for desktops .Select(x => { return new SelectListItem() { Text = x.ThemeTitle, Value = x.ThemeName, Selected = x.ThemeName.Equals(_storeInformationSettings.DefaultStoreThemeForMobileDevices, StringComparison.InvariantCultureIgnoreCase) }; }) .ToList(); //EU Cookie law model.StoreInformationSettings.DisplayEuCookieLawWarning = _storeInformationSettings.DisplayEuCookieLawWarning; //seo settings model.SeoSettings.PageTitleSeparator = _seoSettings.PageTitleSeparator; model.SeoSettings.DefaultTitle = _seoSettings.DefaultTitle; model.SeoSettings.DefaultMetaKeywords = _seoSettings.DefaultMetaKeywords; model.SeoSettings.DefaultMetaDescription = _seoSettings.DefaultMetaDescription; model.SeoSettings.ConvertNonWesternChars = _seoSettings.ConvertNonWesternChars; model.SeoSettings.CanonicalUrlsEnabled = _seoSettings.CanonicalUrlsEnabled; model.SeoSettings.PageTitleSeoAdjustmentValues = _seoSettings.PageTitleSeoAdjustment.ToSelectList(); //security settings model.SecuritySettings.EncryptionKey = _securitySettings.EncryptionKey; if (_securitySettings.AdminAreaAllowedIpAddresses!=null) for (int i=0;i<_securitySettings.AdminAreaAllowedIpAddresses.Count; i++) { model.SecuritySettings.AdminAreaAllowedIpAddresses += _securitySettings.AdminAreaAllowedIpAddresses[i]; if (i != _securitySettings.AdminAreaAllowedIpAddresses.Count - 1) model.SecuritySettings.AdminAreaAllowedIpAddresses += ","; } model.SecuritySettings.HideAdminMenuItemsBasedOnPermissions = _securitySettings.HideAdminMenuItemsBasedOnPermissions; model.SecuritySettings.CaptchaEnabled = _captchaSettings.Enabled; model.SecuritySettings.CaptchaShowOnLoginPage = _captchaSettings.ShowOnLoginPage; model.SecuritySettings.CaptchaShowOnRegistrationPage = _captchaSettings.ShowOnRegistrationPage; model.SecuritySettings.CaptchaShowOnContactUsPage = _captchaSettings.ShowOnContactUsPage; model.SecuritySettings.CaptchaShowOnEmailWishlistToFriendPage = _captchaSettings.ShowOnEmailWishlistToFriendPage; model.SecuritySettings.CaptchaShowOnEmailProductToFriendPage = _captchaSettings.ShowOnEmailProductToFriendPage; model.SecuritySettings.CaptchaShowOnBlogCommentPage = _captchaSettings.ShowOnBlogCommentPage; model.SecuritySettings.CaptchaShowOnNewsCommentPage = _captchaSettings.ShowOnNewsCommentPage; model.SecuritySettings.CaptchaShowOnProductReviewPage = _captchaSettings.ShowOnProductReviewPage; model.SecuritySettings.ReCaptchaPublicKey = _captchaSettings.ReCaptchaPublicKey; model.SecuritySettings.ReCaptchaPrivateKey = _captchaSettings.ReCaptchaPrivateKey; bool useSsl = !String.IsNullOrEmpty(ConfigurationManager.AppSettings["UseSSL"]) && Convert.ToBoolean(ConfigurationManager.AppSettings["UseSSL"]); string sharedSslUrl = ConfigurationManager.AppSettings["SharedSSLUrl"]; string nonSharedSslUrl = ConfigurationManager.AppSettings["NonSharedSSLUrl"]; model.SecuritySettings.UseSsl = useSsl; model.SecuritySettings.SharedSslUrl = sharedSslUrl; model.SecuritySettings.NonSharedSslUrl = nonSharedSslUrl; //PDF settings model.PdfSettings.Enabled = _pdfSettings.Enabled; model.PdfSettings.LetterPageSizeEnabled = _pdfSettings.LetterPageSizeEnabled; model.PdfSettings.LogoPictureId = _pdfSettings.LogoPictureId; //localization model.LocalizationSettings.UseImagesForLanguageSelection = _localizationSettings.UseImagesForLanguageSelection; model.LocalizationSettings.SeoFriendlyUrlsForLanguagesEnabled = _localizationSettings.SeoFriendlyUrlsForLanguagesEnabled; //full-text support model.FullTextSettings.Supported = _fulltextService.IsFullTextSupported(); model.FullTextSettings.Enabled = _commonSettings.UseFullTextSearch; model.FullTextSettings.SearchModeValues = _commonSettings.FullTextMode.ToSelectList(); ViewData["selectedTab"] = selectedTab; return View(model); }
public ActionResult GeneralCommon() { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); //set page timeout to 5 minutes this.Server.ScriptTimeout = 300; //store information var model = new GeneralCommonSettingsModel(); model.StoreInformationSettings.StoreName = _storeInformationSettings.StoreName; model.StoreInformationSettings.StoreUrl = _storeInformationSettings.StoreUrl; model.StoreInformationSettings.StoreClosed = _storeInformationSettings.StoreClosed; model.StoreInformationSettings.StoreClosedAllowForAdmins = _storeInformationSettings.StoreClosedAllowForAdmins; model.StoreInformationSettings.DefaultStoreTheme = _storeInformationSettings.DefaultStoreTheme; model.StoreInformationSettings.AvailableStoreThemes = _themeProvider .GetThemeConfigurations().Select(x => { return new SelectListItem() { Text = x.ThemeTitle, Value = x.ThemeName, Selected = x.ThemeName.Equals(_storeInformationSettings.DefaultStoreTheme, StringComparison.InvariantCultureIgnoreCase) }; }).ToList(); model.StoreInformationSettings.AllowCustomerToSelectTheme = _storeInformationSettings.AllowCustomerToSelectTheme; //seo settings model.SeoSettings.PageTitleSeparator = _seoSettings.PageTitleSeparator; model.SeoSettings.DefaultTitle = _seoSettings.DefaultTitle; model.SeoSettings.DefaultMetaKeywords = _seoSettings.DefaultMetaKeywords; model.SeoSettings.DefaultMetaDescription = _seoSettings.DefaultMetaDescription; model.SeoSettings.ConvertNonWesternChars = _seoSettings.ConvertNonWesternChars; model.SeoSettings.CanonicalUrlsEnabled = _seoSettings.CanonicalUrlsEnabled; //security settings model.SecuritySettings.EncryptionKey = _securitySettings.EncryptionKey; if (_securitySettings.AdminAreaAllowedIpAddresses!=null) for (int i=0;i<_securitySettings.AdminAreaAllowedIpAddresses.Count; i++) { model.SecuritySettings.AdminAreaAllowedIpAddresses += _securitySettings.AdminAreaAllowedIpAddresses[i]; if (i != _securitySettings.AdminAreaAllowedIpAddresses.Count - 1) model.SecuritySettings.AdminAreaAllowedIpAddresses += ","; } model.SecuritySettings.HideAdminMenuItemsBasedOnPermissions = _securitySettings.HideAdminMenuItemsBasedOnPermissions; model.SecuritySettings.CaptchaEnabled = _captchaSettings.Enabled; model.SecuritySettings.ReCaptchaPublicKey = _captchaSettings.ReCaptchaPublicKey; model.SecuritySettings.ReCaptchaPrivateKey = _captchaSettings.ReCaptchaPrivateKey; bool useSsl = !String.IsNullOrEmpty(ConfigurationManager.AppSettings["UseSSL"]) && Convert.ToBoolean(ConfigurationManager.AppSettings["UseSSL"]); string sharedSslUrl = ConfigurationManager.AppSettings["SharedSSLUrl"]; string nonSharedSslUrl = ConfigurationManager.AppSettings["NonSharedSSLUrl"]; model.SecuritySettings.UseSsl = useSsl; model.SecuritySettings.SharedSslUrl = sharedSslUrl; model.SecuritySettings.NonSharedSslUrl = nonSharedSslUrl; //PDF settings model.PdfSettings.Enabled = _pdfSettings.Enabled; model.PdfSettings.LetterPageSizeEnabled = _pdfSettings.LetterPageSizeEnabled; model.PdfSettings.LogoPictureId = _pdfSettings.LogoPictureId; //lcoalization model.LocalizationSettings.UseImagesForLanguageSelection = _localizationSettings.UseImagesForLanguageSelection; model.LocalizationSettings.SeoFriendlyUrlsForLanguagesEnabled = _localizationSettings.SeoFriendlyUrlsForLanguagesEnabled; return View(model); }
public ActionResult ToggleFullText(GeneralCommonSettingsModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); try { if (! _fulltextService.IsFullTextSupported()) throw new NopException(_localizationService.GetResource("Admin.Configuration.Settings.GeneralCommon.FullTextSettings.NotSupported")); if (_commonSettings.UseFullTextSearch) { _fulltextService.DisableFullText(); _commonSettings.UseFullTextSearch = false; _settingService.SaveSetting(_commonSettings); SuccessNotification(_localizationService.GetResource("Admin.Configuration.Settings.GeneralCommon.FullTextSettings.Disabled")); } else { _fulltextService.EnableFullText(); _commonSettings.UseFullTextSearch = true; _settingService.SaveSetting(_commonSettings); SuccessNotification(_localizationService.GetResource("Admin.Configuration.Settings.GeneralCommon.FullTextSettings.Enabled")); } } catch (Exception exc) { ErrorNotification(exc); } return RedirectToAction("GeneralCommon", new { selectedTab = "fulltext" }); }
public ActionResult GeneralCommon() { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); //set page timeout to 5 minutes this.Server.ScriptTimeout = 300; var model = new GeneralCommonSettingsModel(); var storeScope = this.GetActiveStoreScopeConfiguration(_storeService, _workContext); model.ActiveStoreScopeConfiguration = storeScope; //store information var storeInformationSettings = _settingService.LoadSetting<StoreInformationSettings>(storeScope); var commonSettings = _settingService.LoadSetting<CommonSettings>(storeScope); model.StoreInformationSettings.StoreClosed = storeInformationSettings.StoreClosed; model.StoreInformationSettings.StoreClosedAllowForAdmins = storeInformationSettings.StoreClosedAllowForAdmins; //themes model.StoreInformationSettings.DefaultStoreTheme = storeInformationSettings.DefaultStoreTheme; model.StoreInformationSettings.AvailableStoreThemes = _themeProvider .GetThemeConfigurations() .Select(x => new GeneralCommonSettingsModel.StoreInformationSettingsModel.ThemeConfigurationModel { ThemeTitle = x.ThemeTitle, ThemeName = x.ThemeName, PreviewImageUrl = x.PreviewImageUrl, PreviewText = x.PreviewText, SupportRtl = x.SupportRtl, Selected = x.ThemeName.Equals(storeInformationSettings.DefaultStoreTheme, StringComparison.InvariantCultureIgnoreCase) }) .ToList(); model.StoreInformationSettings.AllowCustomerToSelectTheme = storeInformationSettings.AllowCustomerToSelectTheme; //EU Cookie law model.StoreInformationSettings.DisplayEuCookieLawWarning = storeInformationSettings.DisplayEuCookieLawWarning; //social pages model.StoreInformationSettings.FacebookLink = storeInformationSettings.FacebookLink; model.StoreInformationSettings.TwitterLink = storeInformationSettings.TwitterLink; model.StoreInformationSettings.YoutubeLink = storeInformationSettings.YoutubeLink; model.StoreInformationSettings.GooglePlusLink = storeInformationSettings.GooglePlusLink; //contact us model.StoreInformationSettings.SubjectFieldOnContactUsForm = commonSettings.SubjectFieldOnContactUsForm; model.StoreInformationSettings.UseSystemEmailForContactUsForm = commonSettings.UseSystemEmailForContactUsForm; //override settings if (storeScope > 0) { model.StoreInformationSettings.StoreClosed_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.StoreClosed, storeScope); model.StoreInformationSettings.StoreClosedAllowForAdmins_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.StoreClosedAllowForAdmins, storeScope); model.StoreInformationSettings.DefaultStoreTheme_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.DefaultStoreTheme, storeScope); model.StoreInformationSettings.AllowCustomerToSelectTheme_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.AllowCustomerToSelectTheme, storeScope); model.StoreInformationSettings.DisplayEuCookieLawWarning_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.DisplayEuCookieLawWarning, storeScope); model.StoreInformationSettings.FacebookLink_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.FacebookLink, storeScope); model.StoreInformationSettings.TwitterLink_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.TwitterLink, storeScope); model.StoreInformationSettings.YoutubeLink_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.YoutubeLink, storeScope); model.StoreInformationSettings.GooglePlusLink_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.GooglePlusLink, storeScope); model.StoreInformationSettings.SubjectFieldOnContactUsForm_OverrideForStore = _settingService.SettingExists(commonSettings, x => x.SubjectFieldOnContactUsForm, storeScope); model.StoreInformationSettings.UseSystemEmailForContactUsForm_OverrideForStore = _settingService.SettingExists(commonSettings, x => x.UseSystemEmailForContactUsForm, storeScope); } //seo settings var seoSettings = _settingService.LoadSetting<SeoSettings>(storeScope); model.SeoSettings.PageTitleSeparator = seoSettings.PageTitleSeparator; model.SeoSettings.PageTitleSeoAdjustment = (int)seoSettings.PageTitleSeoAdjustment; model.SeoSettings.PageTitleSeoAdjustmentValues = seoSettings.PageTitleSeoAdjustment.ToSelectList(); model.SeoSettings.DefaultTitle = seoSettings.DefaultTitle; model.SeoSettings.DefaultMetaKeywords = seoSettings.DefaultMetaKeywords; model.SeoSettings.DefaultMetaDescription = seoSettings.DefaultMetaDescription; model.SeoSettings.GenerateProductMetaDescription = seoSettings.GenerateProductMetaDescription; model.SeoSettings.ConvertNonWesternChars = seoSettings.ConvertNonWesternChars; model.SeoSettings.CanonicalUrlsEnabled = seoSettings.CanonicalUrlsEnabled; model.SeoSettings.WwwRequirement = (int)seoSettings.WwwRequirement; model.SeoSettings.WwwRequirementValues = seoSettings.WwwRequirement.ToSelectList(); model.SeoSettings.EnableJsBundling = seoSettings.EnableJsBundling; model.SeoSettings.EnableCssBundling = seoSettings.EnableCssBundling; model.SeoSettings.TwitterMetaTags = seoSettings.TwitterMetaTags; model.SeoSettings.OpenGraphMetaTags = seoSettings.OpenGraphMetaTags; //override settings if (storeScope > 0) { model.SeoSettings.PageTitleSeparator_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.PageTitleSeparator, storeScope); model.SeoSettings.PageTitleSeoAdjustment_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.PageTitleSeoAdjustment, storeScope); model.SeoSettings.DefaultTitle_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.DefaultTitle, storeScope); model.SeoSettings.DefaultMetaKeywords_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.DefaultMetaKeywords, storeScope); model.SeoSettings.DefaultMetaDescription_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.DefaultMetaDescription, storeScope); model.SeoSettings.GenerateProductMetaDescription_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.GenerateProductMetaDescription, storeScope); model.SeoSettings.ConvertNonWesternChars_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.ConvertNonWesternChars, storeScope); model.SeoSettings.CanonicalUrlsEnabled_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.CanonicalUrlsEnabled, storeScope); model.SeoSettings.WwwRequirement_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.WwwRequirement, storeScope); model.SeoSettings.EnableJsBundling_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.EnableJsBundling, storeScope); model.SeoSettings.EnableCssBundling_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.EnableCssBundling, storeScope); model.SeoSettings.TwitterMetaTags_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.TwitterMetaTags, storeScope); model.SeoSettings.OpenGraphMetaTags_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.OpenGraphMetaTags, storeScope); } //security settings var securitySettings = _settingService.LoadSetting<SecuritySettings>(storeScope); var captchaSettings = _settingService.LoadSetting<CaptchaSettings>(storeScope); model.SecuritySettings.EncryptionKey = securitySettings.EncryptionKey; if (securitySettings.AdminAreaAllowedIpAddresses != null) for (int i = 0; i < securitySettings.AdminAreaAllowedIpAddresses.Count; i++) { model.SecuritySettings.AdminAreaAllowedIpAddresses += securitySettings.AdminAreaAllowedIpAddresses[i]; if (i != securitySettings.AdminAreaAllowedIpAddresses.Count - 1) model.SecuritySettings.AdminAreaAllowedIpAddresses += ","; } model.SecuritySettings.ForceSslForAllPages = securitySettings.ForceSslForAllPages; model.SecuritySettings.EnableXsrfProtectionForAdminArea = securitySettings.EnableXsrfProtectionForAdminArea; model.SecuritySettings.EnableXsrfProtectionForPublicStore = securitySettings.EnableXsrfProtectionForPublicStore; model.SecuritySettings.HoneypotEnabled = securitySettings.HoneypotEnabled; model.SecuritySettings.CaptchaEnabled = captchaSettings.Enabled; model.SecuritySettings.CaptchaShowOnLoginPage = captchaSettings.ShowOnLoginPage; model.SecuritySettings.CaptchaShowOnRegistrationPage = captchaSettings.ShowOnRegistrationPage; model.SecuritySettings.CaptchaShowOnContactUsPage = captchaSettings.ShowOnContactUsPage; model.SecuritySettings.CaptchaShowOnEmailWishlistToFriendPage = captchaSettings.ShowOnEmailWishlistToFriendPage; model.SecuritySettings.CaptchaShowOnEmailProductToFriendPage = captchaSettings.ShowOnEmailProductToFriendPage; model.SecuritySettings.CaptchaShowOnBlogCommentPage = captchaSettings.ShowOnBlogCommentPage; model.SecuritySettings.CaptchaShowOnNewsCommentPage = captchaSettings.ShowOnNewsCommentPage; model.SecuritySettings.CaptchaShowOnProductReviewPage = captchaSettings.ShowOnProductReviewPage; model.SecuritySettings.ReCaptchaPublicKey = captchaSettings.ReCaptchaPublicKey; model.SecuritySettings.ReCaptchaPrivateKey = captchaSettings.ReCaptchaPrivateKey; //PDF settings var pdfSettings = _settingService.LoadSetting<PdfSettings>(storeScope); model.PdfSettings.LetterPageSizeEnabled = pdfSettings.LetterPageSizeEnabled; model.PdfSettings.LogoPictureId = pdfSettings.LogoPictureId; model.PdfSettings.DisablePdfInvoicesForPendingOrders = pdfSettings.DisablePdfInvoicesForPendingOrders; model.PdfSettings.InvoiceFooterTextColumn1 = pdfSettings.InvoiceFooterTextColumn1; model.PdfSettings.InvoiceFooterTextColumn2 = pdfSettings.InvoiceFooterTextColumn2; //override settings if (storeScope > 0) { model.PdfSettings.LetterPageSizeEnabled_OverrideForStore = _settingService.SettingExists(pdfSettings, x => x.LetterPageSizeEnabled, storeScope); model.PdfSettings.LogoPictureId_OverrideForStore = _settingService.SettingExists(pdfSettings, x => x.LogoPictureId, storeScope); model.PdfSettings.DisablePdfInvoicesForPendingOrders_OverrideForStore = _settingService.SettingExists(pdfSettings, x => x.DisablePdfInvoicesForPendingOrders, storeScope); model.PdfSettings.InvoiceFooterTextColumn1_OverrideForStore = _settingService.SettingExists(pdfSettings, x => x.InvoiceFooterTextColumn1, storeScope); model.PdfSettings.InvoiceFooterTextColumn2_OverrideForStore = _settingService.SettingExists(pdfSettings, x => x.InvoiceFooterTextColumn2, storeScope); } //localization var localizationSettings = _settingService.LoadSetting<LocalizationSettings>(storeScope); model.LocalizationSettings.UseImagesForLanguageSelection = localizationSettings.UseImagesForLanguageSelection; model.LocalizationSettings.SeoFriendlyUrlsForLanguagesEnabled = localizationSettings.SeoFriendlyUrlsForLanguagesEnabled; model.LocalizationSettings.AutomaticallyDetectLanguage = localizationSettings.AutomaticallyDetectLanguage; model.LocalizationSettings.LoadAllLocaleRecordsOnStartup = localizationSettings.LoadAllLocaleRecordsOnStartup; model.LocalizationSettings.LoadAllLocalizedPropertiesOnStartup = localizationSettings.LoadAllLocalizedPropertiesOnStartup; model.LocalizationSettings.LoadAllUrlRecordsOnStartup = localizationSettings.LoadAllUrlRecordsOnStartup; //full-text support model.FullTextSettings.Supported = _fulltextService.IsFullTextSupported(); model.FullTextSettings.Enabled = commonSettings.UseFullTextSearch; model.FullTextSettings.SearchMode = (int)commonSettings.FullTextMode; model.FullTextSettings.SearchModeValues = commonSettings.FullTextMode.ToSelectList(); return View(model); }
public ActionResult ChangeEnryptionKey(GeneralCommonSettingsModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); //set page timeout to 5 minutes this.Server.ScriptTimeout = 300; try { if (model.SecuritySettings.EncryptionKey == null) model.SecuritySettings.EncryptionKey = ""; model.SecuritySettings.EncryptionKey = model.SecuritySettings.EncryptionKey.Trim(); var newEncryptionPrivateKey = model.SecuritySettings.EncryptionKey; if (String.IsNullOrEmpty(newEncryptionPrivateKey) || newEncryptionPrivateKey.Length != 16) throw new NopException("Encryption private key must be 16 characters long"); string oldEncryptionPrivateKey = _securitySettings.EncryptionKey; if (oldEncryptionPrivateKey == newEncryptionPrivateKey) throw new NopException("The new ecryption key is the same as the old one"); //update encrypted order info var orders = _orderService.LoadAllOrders(); foreach (var order in orders) { string decryptedCardType = _encryptionService.DecryptText(order.CardType, oldEncryptionPrivateKey); string decryptedCardName = _encryptionService.DecryptText(order.CardName, oldEncryptionPrivateKey); string decryptedCardNumber = _encryptionService.DecryptText(order.CardNumber, oldEncryptionPrivateKey); string decryptedMaskedCreditCardNumber = _encryptionService.DecryptText(order.MaskedCreditCardNumber, oldEncryptionPrivateKey); string decryptedCardCvv2 = _encryptionService.DecryptText(order.CardCvv2, oldEncryptionPrivateKey); string decryptedCardExpirationMonth = _encryptionService.DecryptText(order.CardExpirationMonth, oldEncryptionPrivateKey); string decryptedCardExpirationYear = _encryptionService.DecryptText(order.CardExpirationYear, oldEncryptionPrivateKey); string encryptedCardType = _encryptionService.EncryptText(decryptedCardType, newEncryptionPrivateKey); string encryptedCardName = _encryptionService.EncryptText(decryptedCardName, newEncryptionPrivateKey); string encryptedCardNumber = _encryptionService.EncryptText(decryptedCardNumber, newEncryptionPrivateKey); string encryptedMaskedCreditCardNumber = _encryptionService.EncryptText(decryptedMaskedCreditCardNumber, newEncryptionPrivateKey); string encryptedCardCvv2 = _encryptionService.EncryptText(decryptedCardCvv2, newEncryptionPrivateKey); string encryptedCardExpirationMonth = _encryptionService.EncryptText(decryptedCardExpirationMonth, newEncryptionPrivateKey); string encryptedCardExpirationYear = _encryptionService.EncryptText(decryptedCardExpirationYear, newEncryptionPrivateKey); order.CardType = encryptedCardType; order.CardName = encryptedCardName; order.CardNumber = encryptedCardNumber; order.MaskedCreditCardNumber = encryptedMaskedCreditCardNumber; order.CardCvv2 = encryptedCardCvv2; order.CardExpirationMonth = encryptedCardExpirationMonth; order.CardExpirationYear = encryptedCardExpirationYear; _orderService.UpdateOrder(order); } //update user information //TODO optimization - load only users with PasswordFormat.Encrypted (don't filter them here) var customers = _customerService.GetAllCustomers(null, null, null, null, null, null, null, 0, 0, false, null, 0, int.MaxValue) .Where(u => u.PasswordFormat == PasswordFormat.Encrypted); foreach (var customer in customers) { string decryptedPassword = _encryptionService.DecryptText(customer.Password, oldEncryptionPrivateKey); string encryptedPassword = _encryptionService.EncryptText(decryptedPassword, newEncryptionPrivateKey); customer.Password = encryptedPassword; _customerService.UpdateCustomer(customer); } _securitySettings.EncryptionKey = newEncryptionPrivateKey; _settingService.SaveSetting(_securitySettings); SuccessNotification("Encryption key is changed"); } catch (Exception exc) { ErrorNotification(exc); } return RedirectToAction("GeneralCommon"); }
public ActionResult ToggleFullText(GeneralCommonSettingsModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); var storeScope = this.GetActiveStoreScopeConfiguration(_storeService, _workContext); var commonSettings = _settingService.LoadSetting<CommonSettings>(storeScope); try { if (! _fulltextService.IsFullTextSupported()) throw new NopException(_localizationService.GetResource("Admin.Configuration.Settings.GeneralCommon.FullTextSettings.NotSupported")); if (commonSettings.UseFullTextSearch) { _fulltextService.DisableFullText(); commonSettings.UseFullTextSearch = false; _settingService.SaveSetting(commonSettings); SuccessNotification(_localizationService.GetResource("Admin.Configuration.Settings.GeneralCommon.FullTextSettings.Disabled")); } else { _fulltextService.EnableFullText(); commonSettings.UseFullTextSearch = true; _settingService.SaveSetting(commonSettings); SuccessNotification(_localizationService.GetResource("Admin.Configuration.Settings.GeneralCommon.FullTextSettings.Enabled")); } } catch (Exception exc) { ErrorNotification(exc); } //selected tab SaveSelectedTabIndex(); return RedirectToAction("GeneralCommon"); }
public ActionResult GeneralCommon(GeneralCommonSettingsModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); //load settings for a chosen store scope var storeScope = this.GetActiveStoreScopeConfiguration(_storeService, _workContext); //store information settings var storeInformationSettings = _settingService.LoadSetting<StoreInformationSettings>(storeScope); var commonSettings = _settingService.LoadSetting<CommonSettings>(storeScope); storeInformationSettings.StoreClosed = model.StoreInformationSettings.StoreClosed; storeInformationSettings.StoreClosedAllowForAdmins = model.StoreInformationSettings.StoreClosedAllowForAdmins; storeInformationSettings.DefaultStoreTheme = model.StoreInformationSettings.DefaultStoreTheme; storeInformationSettings.AllowCustomerToSelectTheme = model.StoreInformationSettings.AllowCustomerToSelectTheme; //EU Cookie law storeInformationSettings.DisplayEuCookieLawWarning = model.StoreInformationSettings.DisplayEuCookieLawWarning; //social pages storeInformationSettings.FacebookLink = model.StoreInformationSettings.FacebookLink; storeInformationSettings.TwitterLink = model.StoreInformationSettings.TwitterLink; storeInformationSettings.YoutubeLink = model.StoreInformationSettings.YoutubeLink; storeInformationSettings.GooglePlusLink = model.StoreInformationSettings.GooglePlusLink; //contact us commonSettings.SubjectFieldOnContactUsForm = model.StoreInformationSettings.SubjectFieldOnContactUsForm; commonSettings.UseSystemEmailForContactUsForm = model.StoreInformationSettings.UseSystemEmailForContactUsForm; /* We do not clear cache after each setting update. * This behavior can increase performance because cached settings will not be cleared * and loaded from database after each update */ if (model.StoreInformationSettings.StoreClosed_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.StoreClosed, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.StoreClosed, storeScope); if (model.StoreInformationSettings.StoreClosedAllowForAdmins_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.StoreClosedAllowForAdmins, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.StoreClosedAllowForAdmins, storeScope); if (model.StoreInformationSettings.DefaultStoreTheme_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.DefaultStoreTheme, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.DefaultStoreTheme, storeScope); if (model.StoreInformationSettings.AllowCustomerToSelectTheme_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.AllowCustomerToSelectTheme, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.AllowCustomerToSelectTheme, storeScope); if (model.StoreInformationSettings.DisplayEuCookieLawWarning_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.DisplayEuCookieLawWarning, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.DisplayEuCookieLawWarning, storeScope); if (model.StoreInformationSettings.FacebookLink_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.FacebookLink, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.FacebookLink, storeScope); if (model.StoreInformationSettings.TwitterLink_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.TwitterLink, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.TwitterLink, storeScope); if (model.StoreInformationSettings.YoutubeLink_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.YoutubeLink, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.YoutubeLink, storeScope); if (model.StoreInformationSettings.GooglePlusLink_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.GooglePlusLink, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.GooglePlusLink, storeScope); if (model.StoreInformationSettings.SubjectFieldOnContactUsForm_OverrideForStore || storeScope == 0) _settingService.SaveSetting(commonSettings, x => x.SubjectFieldOnContactUsForm, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(commonSettings, x => x.SubjectFieldOnContactUsForm, storeScope); if (model.StoreInformationSettings.UseSystemEmailForContactUsForm_OverrideForStore || storeScope == 0) _settingService.SaveSetting(commonSettings, x => x.UseSystemEmailForContactUsForm, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(commonSettings, x => x.UseSystemEmailForContactUsForm, storeScope); //now clear settings cache _settingService.ClearCache(); //seo settings var seoSettings = _settingService.LoadSetting<SeoSettings>(storeScope); seoSettings.PageTitleSeparator = model.SeoSettings.PageTitleSeparator; seoSettings.PageTitleSeoAdjustment = (PageTitleSeoAdjustment)model.SeoSettings.PageTitleSeoAdjustment; seoSettings.DefaultTitle = model.SeoSettings.DefaultTitle; seoSettings.DefaultMetaKeywords = model.SeoSettings.DefaultMetaKeywords; seoSettings.DefaultMetaDescription = model.SeoSettings.DefaultMetaDescription; seoSettings.GenerateProductMetaDescription = model.SeoSettings.GenerateProductMetaDescription; seoSettings.ConvertNonWesternChars = model.SeoSettings.ConvertNonWesternChars; seoSettings.CanonicalUrlsEnabled = model.SeoSettings.CanonicalUrlsEnabled; seoSettings.WwwRequirement = (WwwRequirement)model.SeoSettings.WwwRequirement; seoSettings.EnableJsBundling = model.SeoSettings.EnableJsBundling; seoSettings.EnableCssBundling = model.SeoSettings.EnableCssBundling; seoSettings.TwitterMetaTags = model.SeoSettings.TwitterMetaTags; seoSettings.OpenGraphMetaTags = model.SeoSettings.OpenGraphMetaTags; /* We do not clear cache after each setting update. * This behavior can increase performance because cached settings will not be cleared * and loaded from database after each update */ if (model.SeoSettings.PageTitleSeparator_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.PageTitleSeparator, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.PageTitleSeparator, storeScope); if (model.SeoSettings.PageTitleSeoAdjustment_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.PageTitleSeoAdjustment, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.PageTitleSeoAdjustment, storeScope); if (model.SeoSettings.DefaultTitle_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.DefaultTitle, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.DefaultTitle, storeScope); if (model.SeoSettings.DefaultMetaKeywords_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.DefaultMetaKeywords, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.DefaultMetaKeywords, storeScope); if (model.SeoSettings.DefaultMetaDescription_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.DefaultMetaDescription, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.DefaultMetaDescription, storeScope); if (model.SeoSettings.GenerateProductMetaDescription_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.GenerateProductMetaDescription, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.GenerateProductMetaDescription, storeScope); if (model.SeoSettings.ConvertNonWesternChars_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.ConvertNonWesternChars, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.ConvertNonWesternChars, storeScope); if (model.SeoSettings.CanonicalUrlsEnabled_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.CanonicalUrlsEnabled, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.CanonicalUrlsEnabled, storeScope); if (model.SeoSettings.WwwRequirement_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.WwwRequirement, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.WwwRequirement, storeScope); if (model.SeoSettings.EnableJsBundling_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.EnableJsBundling, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.EnableJsBundling, storeScope); if (model.SeoSettings.EnableCssBundling_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.EnableCssBundling, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.EnableCssBundling, storeScope); if (model.SeoSettings.TwitterMetaTags_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.TwitterMetaTags, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.TwitterMetaTags, storeScope); if (model.SeoSettings.OpenGraphMetaTags_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.OpenGraphMetaTags, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.OpenGraphMetaTags, storeScope); //now clear settings cache _settingService.ClearCache(); //security settings var securitySettings = _settingService.LoadSetting<SecuritySettings>(storeScope); var captchaSettings = _settingService.LoadSetting<CaptchaSettings>(storeScope); if (securitySettings.AdminAreaAllowedIpAddresses == null) securitySettings.AdminAreaAllowedIpAddresses = new List<string>(); securitySettings.AdminAreaAllowedIpAddresses.Clear(); if (!String.IsNullOrEmpty(model.SecuritySettings.AdminAreaAllowedIpAddresses)) foreach (string s in model.SecuritySettings.AdminAreaAllowedIpAddresses.Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries)) if (!String.IsNullOrWhiteSpace(s)) securitySettings.AdminAreaAllowedIpAddresses.Add(s.Trim()); securitySettings.ForceSslForAllPages = model.SecuritySettings.ForceSslForAllPages; securitySettings.EnableXsrfProtectionForAdminArea = model.SecuritySettings.EnableXsrfProtectionForAdminArea; securitySettings.EnableXsrfProtectionForPublicStore = model.SecuritySettings.EnableXsrfProtectionForPublicStore; securitySettings.HoneypotEnabled = model.SecuritySettings.HoneypotEnabled; _settingService.SaveSetting(securitySettings); captchaSettings.Enabled = model.SecuritySettings.CaptchaEnabled; captchaSettings.ShowOnLoginPage = model.SecuritySettings.CaptchaShowOnLoginPage; captchaSettings.ShowOnRegistrationPage = model.SecuritySettings.CaptchaShowOnRegistrationPage; captchaSettings.ShowOnContactUsPage = model.SecuritySettings.CaptchaShowOnContactUsPage; captchaSettings.ShowOnEmailWishlistToFriendPage = model.SecuritySettings.CaptchaShowOnEmailWishlistToFriendPage; captchaSettings.ShowOnEmailProductToFriendPage = model.SecuritySettings.CaptchaShowOnEmailProductToFriendPage; captchaSettings.ShowOnBlogCommentPage = model.SecuritySettings.CaptchaShowOnBlogCommentPage; captchaSettings.ShowOnNewsCommentPage = model.SecuritySettings.CaptchaShowOnNewsCommentPage; captchaSettings.ShowOnProductReviewPage = model.SecuritySettings.CaptchaShowOnProductReviewPage; captchaSettings.ReCaptchaPublicKey = model.SecuritySettings.ReCaptchaPublicKey; captchaSettings.ReCaptchaPrivateKey = model.SecuritySettings.ReCaptchaPrivateKey; _settingService.SaveSetting(captchaSettings); if (captchaSettings.Enabled && (String.IsNullOrWhiteSpace(captchaSettings.ReCaptchaPublicKey) || String.IsNullOrWhiteSpace(captchaSettings.ReCaptchaPrivateKey))) { //captcha is enabled but the keys are not entered ErrorNotification("Captcha is enabled but the appropriate keys are not entered"); } //PDF settings var pdfSettings = _settingService.LoadSetting<PdfSettings>(storeScope); pdfSettings.LetterPageSizeEnabled = model.PdfSettings.LetterPageSizeEnabled; pdfSettings.LogoPictureId = model.PdfSettings.LogoPictureId; pdfSettings.DisablePdfInvoicesForPendingOrders = model.PdfSettings.DisablePdfInvoicesForPendingOrders; pdfSettings.InvoiceFooterTextColumn1 = model.PdfSettings.InvoiceFooterTextColumn1; pdfSettings.InvoiceFooterTextColumn2 = model.PdfSettings.InvoiceFooterTextColumn2; /* We do not clear cache after each setting update. * This behavior can increase performance because cached settings will not be cleared * and loaded from database after each update */ if (model.PdfSettings.LetterPageSizeEnabled_OverrideForStore || storeScope == 0) _settingService.SaveSetting(pdfSettings, x => x.LetterPageSizeEnabled, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(pdfSettings, x => x.LetterPageSizeEnabled, storeScope); if (model.PdfSettings.LogoPictureId_OverrideForStore || storeScope == 0) _settingService.SaveSetting(pdfSettings, x => x.LogoPictureId, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(pdfSettings, x => x.LogoPictureId, storeScope); if (model.PdfSettings.DisablePdfInvoicesForPendingOrders_OverrideForStore || storeScope == 0) _settingService.SaveSetting(pdfSettings, x => x.DisablePdfInvoicesForPendingOrders, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(pdfSettings, x => x.DisablePdfInvoicesForPendingOrders, storeScope); if (model.PdfSettings.InvoiceFooterTextColumn1_OverrideForStore || storeScope == 0) _settingService.SaveSetting(pdfSettings, x => x.InvoiceFooterTextColumn1, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(pdfSettings, x => x.InvoiceFooterTextColumn1, storeScope); if (model.PdfSettings.InvoiceFooterTextColumn2_OverrideForStore || storeScope == 0) _settingService.SaveSetting(pdfSettings, x => x.InvoiceFooterTextColumn2, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(pdfSettings, x => x.InvoiceFooterTextColumn2, storeScope); //now clear settings cache _settingService.ClearCache(); //localization settings var localizationSettings = _settingService.LoadSetting<LocalizationSettings>(storeScope); localizationSettings.UseImagesForLanguageSelection = model.LocalizationSettings.UseImagesForLanguageSelection; if (localizationSettings.SeoFriendlyUrlsForLanguagesEnabled != model.LocalizationSettings.SeoFriendlyUrlsForLanguagesEnabled) { localizationSettings.SeoFriendlyUrlsForLanguagesEnabled = model.LocalizationSettings.SeoFriendlyUrlsForLanguagesEnabled; //clear cached values of routes System.Web.Routing.RouteTable.Routes.ClearSeoFriendlyUrlsCachedValueForRoutes(); } localizationSettings.AutomaticallyDetectLanguage = model.LocalizationSettings.AutomaticallyDetectLanguage; localizationSettings.LoadAllLocaleRecordsOnStartup = model.LocalizationSettings.LoadAllLocaleRecordsOnStartup; localizationSettings.LoadAllLocalizedPropertiesOnStartup = model.LocalizationSettings.LoadAllLocalizedPropertiesOnStartup; localizationSettings.LoadAllUrlRecordsOnStartup = model.LocalizationSettings.LoadAllUrlRecordsOnStartup; _settingService.SaveSetting(localizationSettings); //full-text commonSettings.FullTextMode = (FulltextSearchMode)model.FullTextSettings.SearchMode; _settingService.SaveSetting(commonSettings); //activity log _customerActivityService.InsertActivity("EditSettings", _localizationService.GetResource("ActivityLog.EditSettings")); SuccessNotification(_localizationService.GetResource("Admin.Configuration.Updated")); //selected tab SaveSelectedTabIndex(); return RedirectToAction("GeneralCommon"); }
public ActionResult ToggleFullText(GeneralCommonSettingsModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); var storeScope = this.GetActiveStoreScopeConfiguration(_storeService, _workContext); var commonSettings = _settingService.LoadSetting<CommonSettings>(storeScope); try { if (commonSettings.UseFullTextSearch) { commonSettings.UseFullTextSearch = false; _settingService.SaveSetting(commonSettings); _productRepository.Collection.Indexes.DropOneAsync("ProductText"); SuccessNotification(_localizationService.GetResource("Admin.Configuration.Settings.GeneralCommon.FullTextSettings.Disabled")); } else { commonSettings.UseFullTextSearch = true; _settingService.SaveSetting(commonSettings); var index = Builders<Product>.IndexKeys.Text("$**"); _productRepository.Collection.Indexes.CreateOneAsync(index, new CreateIndexOptions() { Name = "ProductText" }); SuccessNotification(_localizationService.GetResource("Admin.Configuration.Settings.GeneralCommon.FullTextSettings.Enabled")); } } catch (Exception exc) { ErrorNotification(exc); } //selected tab SaveSelectedTabIndex(); return RedirectToAction("GeneralCommon"); }
public ActionResult GeneralCommon(string selectedTab) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); //set page timeout to 5 minutes this.Server.ScriptTimeout = 300; var model = new GeneralCommonSettingsModel(); var storeScope = this.GetActiveStoreScopeConfiguration(_storeService, _workContext); model.ActiveStoreScopeConfiguration = storeScope; //store information var storeInformationSettings = _settingService.LoadSetting<StoreInformationSettings>(storeScope); model.StoreInformationSettings.StoreClosed = storeInformationSettings.StoreClosed; model.StoreInformationSettings.StoreClosedAllowForAdmins = storeInformationSettings.StoreClosedAllowForAdmins; //desktop themes model.StoreInformationSettings.DefaultStoreThemeForDesktops = storeInformationSettings.DefaultStoreThemeForDesktops; model.StoreInformationSettings.AvailableStoreThemesForDesktops = _themeProvider .GetThemeConfigurations() .Where(x => !x.MobileTheme) .Select(x => { return new SelectListItem() { Text = x.ThemeTitle, Value = x.ThemeName, Selected = x.ThemeName.Equals(storeInformationSettings.DefaultStoreThemeForDesktops, StringComparison.InvariantCultureIgnoreCase) }; }) .ToList(); model.StoreInformationSettings.AllowCustomerToSelectTheme = storeInformationSettings.AllowCustomerToSelectTheme; model.StoreInformationSettings.MobileDevicesSupported = storeInformationSettings.MobileDevicesSupported; //mobile device themes model.StoreInformationSettings.DefaultStoreThemeForMobileDevices = storeInformationSettings.DefaultStoreThemeForMobileDevices; model.StoreInformationSettings.AvailableStoreThemesForMobileDevices = _themeProvider .GetThemeConfigurations() .Where(x => x.MobileTheme) .Select(x => { return new SelectListItem() { Text = x.ThemeTitle, Value = x.ThemeName, Selected = x.ThemeName.Equals(storeInformationSettings.DefaultStoreThemeForMobileDevices, StringComparison.InvariantCultureIgnoreCase) }; }) .ToList(); //EU Cookie law model.StoreInformationSettings.DisplayEuCookieLawWarning = storeInformationSettings.DisplayEuCookieLawWarning; //override settings if (storeScope > 0) { model.StoreInformationSettings.MobileDevicesSupported_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.MobileDevicesSupported, storeScope); model.StoreInformationSettings.StoreClosed_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.StoreClosed, storeScope); model.StoreInformationSettings.StoreClosedAllowForAdmins_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.StoreClosedAllowForAdmins, storeScope); model.StoreInformationSettings.DefaultStoreThemeForDesktops_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.DefaultStoreThemeForDesktops, storeScope); model.StoreInformationSettings.DefaultStoreThemeForMobileDevices_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.DefaultStoreThemeForMobileDevices, storeScope); model.StoreInformationSettings.AllowCustomerToSelectTheme_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.AllowCustomerToSelectTheme, storeScope); model.StoreInformationSettings.DisplayEuCookieLawWarning_OverrideForStore = _settingService.SettingExists(storeInformationSettings, x => x.DisplayEuCookieLawWarning, storeScope); } //seo settings var seoSettings = _settingService.LoadSetting<SeoSettings>(storeScope); model.SeoSettings.PageTitleSeparator = seoSettings.PageTitleSeparator; model.SeoSettings.PageTitleSeoAdjustment = (int)seoSettings.PageTitleSeoAdjustment; model.SeoSettings.PageTitleSeoAdjustmentValues = seoSettings.PageTitleSeoAdjustment.ToSelectList(); model.SeoSettings.DefaultTitle = seoSettings.DefaultTitle; model.SeoSettings.DefaultMetaKeywords = seoSettings.DefaultMetaKeywords; model.SeoSettings.DefaultMetaDescription = seoSettings.DefaultMetaDescription; model.SeoSettings.ConvertNonWesternChars = seoSettings.ConvertNonWesternChars; model.SeoSettings.CanonicalUrlsEnabled = seoSettings.CanonicalUrlsEnabled; //override settings if (storeScope > 0) { model.SeoSettings.PageTitleSeparator_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.PageTitleSeparator, storeScope); model.SeoSettings.PageTitleSeoAdjustment_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.PageTitleSeoAdjustment, storeScope); model.SeoSettings.DefaultTitle_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.DefaultTitle, storeScope); model.SeoSettings.DefaultMetaKeywords_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.DefaultMetaKeywords, storeScope); model.SeoSettings.DefaultMetaDescription_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.DefaultMetaDescription, storeScope); model.SeoSettings.ConvertNonWesternChars_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.ConvertNonWesternChars, storeScope); model.SeoSettings.CanonicalUrlsEnabled_OverrideForStore = _settingService.SettingExists(seoSettings, x => x.CanonicalUrlsEnabled, storeScope); } //security settings var securitySettings = _settingService.LoadSetting<SecuritySettings>(storeScope); var captchaSettings = _settingService.LoadSetting<CaptchaSettings>(storeScope); model.SecuritySettings.EncryptionKey = securitySettings.EncryptionKey; if (securitySettings.AdminAreaAllowedIpAddresses != null) for (int i = 0; i < securitySettings.AdminAreaAllowedIpAddresses.Count; i++) { model.SecuritySettings.AdminAreaAllowedIpAddresses += securitySettings.AdminAreaAllowedIpAddresses[i]; if (i != securitySettings.AdminAreaAllowedIpAddresses.Count - 1) model.SecuritySettings.AdminAreaAllowedIpAddresses += ","; } model.SecuritySettings.HideAdminMenuItemsBasedOnPermissions = securitySettings.HideAdminMenuItemsBasedOnPermissions; model.SecuritySettings.CaptchaEnabled = captchaSettings.Enabled; model.SecuritySettings.CaptchaShowOnLoginPage = captchaSettings.ShowOnLoginPage; model.SecuritySettings.CaptchaShowOnRegistrationPage = captchaSettings.ShowOnRegistrationPage; model.SecuritySettings.CaptchaShowOnContactUsPage = captchaSettings.ShowOnContactUsPage; model.SecuritySettings.CaptchaShowOnEmailWishlistToFriendPage = captchaSettings.ShowOnEmailWishlistToFriendPage; model.SecuritySettings.CaptchaShowOnEmailProductToFriendPage = captchaSettings.ShowOnEmailProductToFriendPage; model.SecuritySettings.CaptchaShowOnBlogCommentPage = captchaSettings.ShowOnBlogCommentPage; model.SecuritySettings.CaptchaShowOnNewsCommentPage = captchaSettings.ShowOnNewsCommentPage; model.SecuritySettings.CaptchaShowOnProductReviewPage = captchaSettings.ShowOnProductReviewPage; model.SecuritySettings.ReCaptchaPublicKey = captchaSettings.ReCaptchaPublicKey; model.SecuritySettings.ReCaptchaPrivateKey = captchaSettings.ReCaptchaPrivateKey; //PDF settings var pdfSettings = _settingService.LoadSetting<PdfSettings>(storeScope); model.PdfSettings.Enabled = pdfSettings.Enabled; model.PdfSettings.LetterPageSizeEnabled = pdfSettings.LetterPageSizeEnabled; model.PdfSettings.LogoPictureId = pdfSettings.LogoPictureId; //override settings if (storeScope > 0) { model.PdfSettings.Enabled_OverrideForStore = _settingService.SettingExists(pdfSettings, x => x.Enabled, storeScope); model.PdfSettings.LetterPageSizeEnabled_OverrideForStore = _settingService.SettingExists(pdfSettings, x => x.LetterPageSizeEnabled, storeScope); model.PdfSettings.LogoPictureId_OverrideForStore = _settingService.SettingExists(pdfSettings, x => x.LogoPictureId, storeScope); } //localization var localizationSettings = _settingService.LoadSetting<LocalizationSettings>(storeScope); model.LocalizationSettings.UseImagesForLanguageSelection = localizationSettings.UseImagesForLanguageSelection; model.LocalizationSettings.SeoFriendlyUrlsForLanguagesEnabled = localizationSettings.SeoFriendlyUrlsForLanguagesEnabled; model.LocalizationSettings.LoadAllLocaleRecordsOnStartup = localizationSettings.LoadAllLocaleRecordsOnStartup; //full-text support var commonSettings = _settingService.LoadSetting<CommonSettings>(storeScope); model.FullTextSettings.Supported = _fulltextService.IsFullTextSupported(); model.FullTextSettings.Enabled = commonSettings.UseFullTextSearch; model.FullTextSettings.SearchMode = (int)commonSettings.FullTextMode; model.FullTextSettings.SearchModeValues = commonSettings.FullTextMode.ToSelectList(); ViewData["selectedTab"] = selectedTab; return View(model); }
public ActionResult GeneralCommon(GeneralCommonSettingsModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) return AccessDeniedView(); //load settings for a chosen store scope var storeScope = this.GetActiveStoreScopeConfiguration(_storeService, _workContext); //store information settings var storeInformationSettings = _settingService.LoadSetting<StoreInformationSettings>(storeScope); storeInformationSettings.StoreClosed = model.StoreInformationSettings.StoreClosed; storeInformationSettings.StoreClosedAllowForAdmins = model.StoreInformationSettings.StoreClosedAllowForAdmins; storeInformationSettings.DefaultStoreThemeForDesktops = model.StoreInformationSettings.DefaultStoreThemeForDesktops; storeInformationSettings.AllowCustomerToSelectTheme = model.StoreInformationSettings.AllowCustomerToSelectTheme; //store whether MobileDevicesSupported setting has been changed (requires application restart) bool mobileDevicesSupportedChanged = storeInformationSettings.MobileDevicesSupported != model.StoreInformationSettings.MobileDevicesSupported; storeInformationSettings.MobileDevicesSupported = model.StoreInformationSettings.MobileDevicesSupported; storeInformationSettings.DefaultStoreThemeForMobileDevices = model.StoreInformationSettings.DefaultStoreThemeForMobileDevices; //EU Cookie law storeInformationSettings.DisplayEuCookieLawWarning = model.StoreInformationSettings.DisplayEuCookieLawWarning; /* We do not clear cache after each setting update. * This behavior can increase performance because cached settings will not be cleared * and loaded from database after each update */ if (model.StoreInformationSettings.MobileDevicesSupported_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.MobileDevicesSupported, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.MobileDevicesSupported, storeScope); if (model.StoreInformationSettings.StoreClosed_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.StoreClosed, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.StoreClosed, storeScope); if (model.StoreInformationSettings.StoreClosedAllowForAdmins_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.StoreClosedAllowForAdmins, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.StoreClosedAllowForAdmins, storeScope); if (model.StoreInformationSettings.DefaultStoreThemeForDesktops_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.DefaultStoreThemeForDesktops, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.DefaultStoreThemeForDesktops, storeScope); if (model.StoreInformationSettings.DefaultStoreThemeForMobileDevices_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.DefaultStoreThemeForMobileDevices, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.DefaultStoreThemeForMobileDevices, storeScope); if (model.StoreInformationSettings.AllowCustomerToSelectTheme_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.AllowCustomerToSelectTheme, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.AllowCustomerToSelectTheme, storeScope); if (model.StoreInformationSettings.DisplayEuCookieLawWarning_OverrideForStore || storeScope == 0) _settingService.SaveSetting(storeInformationSettings, x => x.DisplayEuCookieLawWarning, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(storeInformationSettings, x => x.DisplayEuCookieLawWarning, storeScope); //now clear settings cache _settingService.ClearCache(); //seo settings var seoSettings = _settingService.LoadSetting<SeoSettings>(storeScope); seoSettings.PageTitleSeparator = model.SeoSettings.PageTitleSeparator; seoSettings.PageTitleSeoAdjustment = (PageTitleSeoAdjustment)model.SeoSettings.PageTitleSeoAdjustment; seoSettings.DefaultTitle = model.SeoSettings.DefaultTitle; seoSettings.DefaultMetaKeywords = model.SeoSettings.DefaultMetaKeywords; seoSettings.DefaultMetaDescription = model.SeoSettings.DefaultMetaDescription; seoSettings.ConvertNonWesternChars = model.SeoSettings.ConvertNonWesternChars; seoSettings.CanonicalUrlsEnabled = model.SeoSettings.CanonicalUrlsEnabled; /* We do not clear cache after each setting update. * This behavior can increase performance because cached settings will not be cleared * and loaded from database after each update */ if (model.SeoSettings.PageTitleSeparator_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.PageTitleSeparator, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.PageTitleSeparator, storeScope); if (model.SeoSettings.PageTitleSeoAdjustment_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.PageTitleSeoAdjustment, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.PageTitleSeoAdjustment, storeScope); if (model.SeoSettings.DefaultTitle_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.DefaultTitle, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.DefaultTitle, storeScope); if (model.SeoSettings.DefaultMetaKeywords_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.DefaultMetaKeywords, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.DefaultMetaKeywords, storeScope); if (model.SeoSettings.DefaultMetaDescription_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.DefaultMetaDescription, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.DefaultMetaDescription, storeScope); if (model.SeoSettings.ConvertNonWesternChars_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.ConvertNonWesternChars, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.ConvertNonWesternChars, storeScope); if (model.SeoSettings.CanonicalUrlsEnabled_OverrideForStore || storeScope == 0) _settingService.SaveSetting(seoSettings, x => x.CanonicalUrlsEnabled, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(seoSettings, x => x.CanonicalUrlsEnabled, storeScope); //now clear settings cache _settingService.ClearCache(); //security settings var securitySettings = _settingService.LoadSetting<SecuritySettings>(storeScope); var captchaSettings = _settingService.LoadSetting<CaptchaSettings>(storeScope); if (securitySettings.AdminAreaAllowedIpAddresses == null) securitySettings.AdminAreaAllowedIpAddresses = new List<string>(); securitySettings.AdminAreaAllowedIpAddresses.Clear(); if (!String.IsNullOrEmpty(model.SecuritySettings.AdminAreaAllowedIpAddresses)) foreach (string s in model.SecuritySettings.AdminAreaAllowedIpAddresses.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) if (!String.IsNullOrWhiteSpace(s)) securitySettings.AdminAreaAllowedIpAddresses.Add(s.Trim()); securitySettings.HideAdminMenuItemsBasedOnPermissions = model.SecuritySettings.HideAdminMenuItemsBasedOnPermissions; _settingService.SaveSetting(securitySettings); captchaSettings.Enabled = model.SecuritySettings.CaptchaEnabled; captchaSettings.ShowOnLoginPage = model.SecuritySettings.CaptchaShowOnLoginPage; captchaSettings.ShowOnRegistrationPage = model.SecuritySettings.CaptchaShowOnRegistrationPage; captchaSettings.ShowOnContactUsPage = model.SecuritySettings.CaptchaShowOnContactUsPage; captchaSettings.ShowOnEmailWishlistToFriendPage = model.SecuritySettings.CaptchaShowOnEmailWishlistToFriendPage; captchaSettings.ShowOnEmailProductToFriendPage = model.SecuritySettings.CaptchaShowOnEmailProductToFriendPage; captchaSettings.ShowOnBlogCommentPage = model.SecuritySettings.CaptchaShowOnBlogCommentPage; captchaSettings.ShowOnNewsCommentPage = model.SecuritySettings.CaptchaShowOnNewsCommentPage; captchaSettings.ShowOnProductReviewPage = model.SecuritySettings.CaptchaShowOnProductReviewPage; captchaSettings.ReCaptchaPublicKey = model.SecuritySettings.ReCaptchaPublicKey; captchaSettings.ReCaptchaPrivateKey = model.SecuritySettings.ReCaptchaPrivateKey; _settingService.SaveSetting(captchaSettings); if (captchaSettings.Enabled && (String.IsNullOrWhiteSpace(captchaSettings.ReCaptchaPublicKey) || String.IsNullOrWhiteSpace(captchaSettings.ReCaptchaPrivateKey))) { //captcha is enabled but the keys are not entered ErrorNotification("Captcha is enabled but the appropriate keys are not entered"); } //PDF settings var pdfSettings = _settingService.LoadSetting<PdfSettings>(storeScope); pdfSettings.Enabled = model.PdfSettings.Enabled; pdfSettings.LetterPageSizeEnabled = model.PdfSettings.LetterPageSizeEnabled; pdfSettings.LogoPictureId = model.PdfSettings.LogoPictureId; /* We do not clear cache after each setting update. * This behavior can increase performance because cached settings will not be cleared * and loaded from database after each update */ if (model.PdfSettings.Enabled_OverrideForStore || storeScope == 0) _settingService.SaveSetting(pdfSettings, x => x.Enabled, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(pdfSettings, x => x.Enabled, storeScope); if (model.PdfSettings.LetterPageSizeEnabled_OverrideForStore || storeScope == 0) _settingService.SaveSetting(pdfSettings, x => x.LetterPageSizeEnabled, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(pdfSettings, x => x.LetterPageSizeEnabled, storeScope); if (model.PdfSettings.LogoPictureId_OverrideForStore || storeScope == 0) _settingService.SaveSetting(pdfSettings, x => x.LogoPictureId, storeScope, false); else if (storeScope > 0) _settingService.DeleteSetting(pdfSettings, x => x.LogoPictureId, storeScope); //now clear settings cache _settingService.ClearCache(); //localization settings var localizationSettings = _settingService.LoadSetting<LocalizationSettings>(storeScope); localizationSettings.UseImagesForLanguageSelection = model.LocalizationSettings.UseImagesForLanguageSelection; if (localizationSettings.SeoFriendlyUrlsForLanguagesEnabled != model.LocalizationSettings.SeoFriendlyUrlsForLanguagesEnabled) { localizationSettings.SeoFriendlyUrlsForLanguagesEnabled = model.LocalizationSettings.SeoFriendlyUrlsForLanguagesEnabled; //clear cached values of routes System.Web.Routing.RouteTable.Routes.ClearSeoFriendlyUrlsCachedValueForRoutes(); } localizationSettings.LoadAllLocaleRecordsOnStartup = model.LocalizationSettings.LoadAllLocaleRecordsOnStartup; _settingService.SaveSetting(localizationSettings); //full-text var commonSettings = _settingService.LoadSetting<CommonSettings>(storeScope); commonSettings.FullTextMode = (FulltextSearchMode)model.FullTextSettings.SearchMode; _settingService.SaveSetting(commonSettings); //activity log _customerActivityService.InsertActivity("EditSettings", _localizationService.GetResource("ActivityLog.EditSettings")); if (mobileDevicesSupportedChanged) { //MobileDevicesSupported setting has been changed //restart application _webHelper.RestartAppDomain(); } SuccessNotification(_localizationService.GetResource("Admin.Configuration.Updated")); return RedirectToAction("GeneralCommon"); }