@@ -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