Skip to content

Commit fb2d4cc

Browse files
DRY Fix: Merged GetOverrideKeys & UpdateSettings with their corresponding methods for updating localized settings
1 parent e2d903b commit fb2d4cc

1 file changed

Lines changed: 44 additions & 92 deletions

File tree

src/Presentation/SmartStore.Web.Framework/Settings/StoreDependingSettingHelper.cs

Lines changed: 44 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public StoreDependingSettingHelper(ViewDataDictionary viewData)
1919
}
2020

2121
public static string ViewDataKey { get { return "StoreDependingSettingData"; } }
22+
2223
public StoreDependingSettingData Data
2324
{
2425
get
@@ -38,16 +39,19 @@ private bool IsOverrideChecked(string settingKey, FormCollection form)
3839
}
3940
return false;
4041
}
42+
4143
public bool IsOverrideChecked(object settings, string name, FormCollection form)
4244
{
4345
var key = settings.GetType().Name + "." + name;
4446
return IsOverrideChecked(key, form);
4547
}
48+
4649
public void AddOverrideKey(object settings, string name)
4750
{
4851
var key = settings.GetType().Name + "." + name;
4952
Data.OverrideSettingKeys.Add(key);
5053
}
54+
5155
public void CreateViewDataObject(int activeStoreScopeConfiguration, string rootSettingClass = null)
5256
{
5357
_viewData[ViewDataKey] = new StoreDependingSettingData()
@@ -57,112 +61,60 @@ public void CreateViewDataObject(int activeStoreScopeConfiguration, string rootS
5761
};
5862
}
5963

60-
public void GetOverrideKeys(object settings, object model, int storeId, ISettingService settingService, bool isRootModel = true)
61-
{
62-
if (storeId <= 0)
63-
return; // single store mode -> there are no overrides
64+
public void GetOverrideKeys(object settings, object model, int storeId, ISettingService settingService, bool isRootModel = true, ILocalizedModelLocal localized = null, int? index = null)
65+
{
66+
if (storeId <= 0)
67+
return; // single store mode -> there are no overrides
6468

65-
var data = Data;
66-
if (data == null)
67-
data = new StoreDependingSettingData();
69+
var data = Data;
70+
if (data == null)
71+
data = new StoreDependingSettingData();
6872

69-
var settingName = settings.GetType().Name;
70-
var properties = settings.GetType().GetProperties();
73+
var settingName = settings.GetType().Name;
74+
var properties = settings.GetType().GetProperties();
75+
var localizedEntityService = EngineContext.Current.Resolve<ILocalizedEntityService>();
7176

7277
var modelType = model.GetType();
7378

74-
foreach (var prop in properties)
75-
{
76-
var name = prop.Name;
77-
var modelProperty = modelType.GetProperty(name);
78-
79-
if (modelProperty == null)
80-
continue; // setting is not configurable or missing or whatever... however we don't need the override info
81-
82-
var key = settingName + "." + name;
83-
var setting = settingService.GetSettingByKey<string>(key, storeId: storeId);
84-
85-
if (setting != null)
86-
data.OverrideSettingKeys.Add(key);
87-
}
88-
89-
if (isRootModel)
90-
{
91-
data.ActiveStoreScopeConfiguration = storeId;
92-
data.RootSettingClass = settingName;
93-
94-
_viewData[ViewDataKey] = data;
95-
}
96-
}
97-
98-
// DRY?
99-
public void GetOverrideKeysLocalized(object settings, object model, int storeId, ISettingService settingService, bool isRootModel = true, ILocalizedModelLocal localized = null, int? index = null)
100-
{
101-
if (storeId <= 0)
102-
return; // single store mode -> there are no overrides
103-
104-
var data = Data;
105-
if (data == null)
106-
data = new StoreDependingSettingData();
107-
108-
var settingName = settings.GetType().Name;
109-
var properties = localized.GetType().GetProperties();
110-
var localizedEntityService = EngineContext.Current.Resolve<ILocalizedEntityService>();
111-
112-
var modelType = model.GetType();
113-
114-
foreach (var prop in properties)
115-
{
116-
var name = prop.Name;
79+
foreach (var prop in properties)
80+
{
81+
var name = prop.Name;
11782
var modelProperty = modelType.GetProperty(name);
11883

119-
if (modelProperty == null)
120-
continue; // setting is not configurable or missing or whatever... however we don't need the override info
121-
122-
var key = "Locales[" + index.ToString() + "]." + name;
84+
if (modelProperty == null)
85+
continue; // setting is not configurable or missing or whatever... however we don't need the override info
12386

124-
var resultStr = localizedEntityService.GetLocalizedValue(localized.LanguageId, 0, settingName, name);
87+
var key = String.Empty;
88+
var setting = String.Empty;
12589

126-
if (!String.IsNullOrEmpty(resultStr))
127-
data.OverrideSettingKeys.Add(key);
128-
}
90+
if (localized == null)
91+
{
92+
key = settingName + "." + name;
93+
setting = settingService.GetSettingByKey<string>(key, storeId: storeId);
94+
}
95+
else
96+
{
97+
key = "Locales[" + index.ToString() + "]." + name;
98+
setting = localizedEntityService.GetLocalizedValue(localized.LanguageId, 0, settingName, name);
99+
}
129100

130-
if (isRootModel)
131-
{
132-
data.ActiveStoreScopeConfiguration = storeId;
133-
data.RootSettingClass = settingName;
101+
if (!String.IsNullOrEmpty(setting))
102+
data.OverrideSettingKeys.Add(key);
103+
}
134104

135-
_viewData[ViewDataKey] = data;
136-
}
137-
}
105+
if (isRootModel)
106+
{
107+
data.ActiveStoreScopeConfiguration = storeId;
108+
data.RootSettingClass = settingName;
138109

139-
public void UpdateSettings(object settings, FormCollection form, int storeId, ISettingService settingService)
140-
{
141-
var settingName = settings.GetType().Name;
142-
var properties = FastProperty.GetProperties(settings.GetType()).Values;
143-
144-
foreach (var prop in properties)
145-
{
146-
var name = prop.Name;
147-
var key = settingName + "." + name;
148-
149-
if (storeId == 0 || IsOverrideChecked(key, form))
150-
{
151-
dynamic value = prop.GetValue(settings);
152-
settingService.SetSetting(key, value == null ? "" : value, storeId, false);
153-
}
154-
else if (storeId > 0)
155-
{
156-
settingService.DeleteSetting(key, storeId);
157-
}
158-
}
159-
}
110+
_viewData[ViewDataKey] = data;
111+
}
112+
}
160113

161-
// DRY?
162-
public void UpdateLocalizedSettings(object settings, FormCollection form, int storeId, ISettingService settingService, ILocalizedModelLocal localized)
114+
public void UpdateSettings(object settings, FormCollection form, int storeId, ISettingService settingService, ILocalizedModelLocal localized = null)
163115
{
164116
var settingName = settings.GetType().Name;
165-
var properties = FastProperty.GetProperties(localized.GetType()).Values;
117+
var properties = FastProperty.GetProperties(localized == null ? settings.GetType() : localized.GetType()).Values;
166118

167119
foreach (var prop in properties)
168120
{
@@ -171,7 +123,7 @@ public void UpdateLocalizedSettings(object settings, FormCollection form, int st
171123

172124
if (storeId == 0 || IsOverrideChecked(key, form))
173125
{
174-
dynamic value = prop.GetValue(settings);
126+
dynamic value = prop.GetValue(localized == null ? settings : localized);
175127
settingService.SetSetting(key, value == null ? "" : value, storeId, false);
176128
}
177129
else if (storeId > 0)

0 commit comments

Comments
 (0)