@@ -162,14 +162,72 @@ public void CreateRedirectPages(SiteConfigurationElement configuration, string o
162
162
}
163
163
public void GeneratePage ( SiteConfigurationElement configuration , PageData page , CultureInfo lang , bool ? useTemporaryAttribute , bool ignoreHtmlDependencies , ConcurrentDictionary < string , string > generatedResources = null )
164
164
{
165
- GetUrlsForPage ( page , lang , out string pageUrl , out string simpleAddress ) ;
166
- GeneratePage ( configuration , pageUrl , useTemporaryAttribute , ignoreHtmlDependencies , simpleAddress , generatedResources ) ;
165
+ var urls = GetUrlsForPage ( configuration , page , lang , out string simpleAddress ) ;
166
+
167
+ var firstUrl = urls . FirstOrDefault ( ) ;
168
+ if ( ! string . IsNullOrEmpty ( firstUrl ) )
169
+ {
170
+ GeneratePage ( configuration , firstUrl , useTemporaryAttribute , ignoreHtmlDependencies , simpleAddress , generatedResources ) ;
171
+ }
172
+
173
+ urls = urls . Skip ( 1 ) . ToList ( ) ;
174
+ foreach ( var url in urls )
175
+ {
176
+ GeneratePage ( configuration , url , useTemporaryAttribute , ignoreHtmlDependencies , null , generatedResources ) ;
177
+ }
167
178
}
168
179
169
- public void GetUrlsForPage ( PageData page , CultureInfo lang , out string pageUrl , out string simpleAddress )
180
+ public List < string > GetUrlsForPage ( SiteConfigurationElement configuration , PageData page , CultureInfo lang , out string simpleAddress )
170
181
{
182
+ var urls = new List < string > ( ) ;
183
+
171
184
simpleAddress = string . IsNullOrEmpty ( page . ExternalURL ) ? null : "/" + page . ExternalURL ;
172
- pageUrl = GetPageUrl ( page . ContentLink . ToReferenceWithoutVersion ( ) , lang ) ;
185
+ var pageUrl = GetPageUrl ( page . ContentLink . ToReferenceWithoutVersion ( ) , lang ) ;
186
+
187
+ if ( ! string . IsNullOrEmpty ( pageUrl ) )
188
+ {
189
+ urls . Add ( pageUrl ) ;
190
+
191
+ // TODO: Add configuration.UseFallbackLanguage?
192
+ if ( true )
193
+ {
194
+ urls . AddRange ( GetFallbackUrlsForPageUrl ( page . Language . TwoLetterISOLanguageName , pageUrl ) ) ;
195
+ }
196
+ }
197
+
198
+ return urls ;
199
+ }
200
+
201
+ private IEnumerable < string > GetFallbackUrlsForPageUrl ( string twoLetterISOLanguageName , string pageUrl )
202
+ {
203
+ var urls = new List < string > ( ) ;
204
+
205
+ var langList = new Dictionary < string , List < string > > ( ) ;
206
+ var languageSettingsList = ServiceLocator . Current . GetInstance < EPiServer . DataAbstraction . ContentLanguageSettingRepository > ( ) . List ( ) ;
207
+ foreach ( var languageSetting in languageSettingsList )
208
+ {
209
+ var fallbackLangeuageKey = languageSetting . LanguageBranch ;
210
+ foreach ( var languageKey in languageSetting . LanguageBranchFallback )
211
+ {
212
+ if ( ! langList . ContainsKey ( languageKey ) )
213
+ {
214
+ langList . Add ( languageKey , new List < string > { fallbackLangeuageKey } ) ;
215
+ } else
216
+ {
217
+ langList [ languageKey ] . Add ( fallbackLangeuageKey ) ;
218
+ }
219
+ }
220
+ }
221
+
222
+ if ( langList . ContainsKey ( twoLetterISOLanguageName ) )
223
+ {
224
+ foreach ( string langKey in langList [ twoLetterISOLanguageName ] )
225
+ {
226
+ urls . Add ( pageUrl . Replace ( $ "/{ twoLetterISOLanguageName } /", $ "/{ langKey } /") ) ;
227
+ }
228
+ }
229
+
230
+ return urls ;
173
231
}
174
232
175
233
public void GeneratePage ( SiteConfigurationElement configuration , string pageUrl , bool ? useTemporaryAttribute , bool ignoreHtmlDependencies , string simpleAddress = null , ConcurrentDictionary < string , string > generatedResources = null )
0 commit comments