private bool PageExistsInLanguageContext(PageData page, ILanguageSelector languageSelector) { //Checks if page exist in current language context or if a fallback exist LanguageSelectorContext args = new LanguageSelectorContext(page); languageSelector.SelectPageLanguage(args); return(!String.IsNullOrEmpty(args.SelectedLanguage)); }
public virtual void SelectPageLanguage(LanguageSelectorContext context) { context.SelectedLanguage = _languageBranch ?? context.MasterLanguageBranch; if (_auto) { ContentItem translation = Context.Current.LanguageManager.GetTranslation(context.Page, context.SelectedLanguage); if (translation != null) context.SelectedLanguage = translation.Language ?? Context.Current.LanguageManager.GetDefaultLanguage(); else context.SelectedLanguage = _fallBackToMaster ? context.MasterLanguageBranch : null; } }
/// <summary> /// Load the content for a <see cref="ContentReference"/>. /// </summary> /// <param name="contentLink"> /// The content link. /// </param> /// <param name="languageSelector"> /// The language selector. /// </param> /// <returns> /// The <see cref="IContent"/>. /// </returns> /// <exception cref="System.ArgumentNullException"> /// contentLink /// </exception> /// <exception cref="System.NotSupportedException"> /// Only cloning of pages is supported /// </exception> protected override IContent LoadContent(ContentReference contentLink, ILanguageSelector languageSelector) { if (ContentReference.IsNullOrEmpty(contentLink) || contentLink.ID == 0) { throw new ArgumentNullException("contentLink"); } if (languageSelector == null) { languageSelector = LanguageSelector.AutoDetect(); } if (contentLink.WorkID > 0) { return(this.ContentStore.LoadVersion(contentLink, -1)); } ILanguageBranchRepository languageBranchRepository = ServiceLocator.Current.GetInstance <ILanguageBranchRepository>(); LanguageSelectorContext context = new LanguageSelectorContext( contentLink, languageBranchRepository, this.Load); if (contentLink.GetPublishedOrLatest) { languageSelector.SelectPageLanguage(context); LanguageBranch langBr = null; if (context.SelectedLanguage != null) { langBr = languageBranchRepository.Load(context.SelectedLanguage); } return(this.ContentStore.LoadVersion(contentLink, langBr != null ? langBr.ID : -1)); } languageSelector.SetInitializedLanguageBranch(context); // Get published version of Content IContent originalContent = this.ContentStore.Load( contentLink, context.SelectedLanguageBranch != null ? context.SelectedLanguageBranch.ID : -1); PageData page = originalContent as PageData; if (page == null) { throw new NotSupportedException("Only cloning of pages is supported"); } return(this.ClonePage(page)); }
public PageData CreateLanguageBranch(PageReference pageLink, ILanguageSelector selector, AccessLevel access) { PageData masterPage = GetPage(pageLink); LanguageSelectorContext ls = new LanguageSelectorContext(masterPage); selector.LoadLanguage(ls); PageData pageData = ConstructContentData <PageData>(masterPage.PageName, masterPage.PageLink, masterPage.ParentLink, ls.SelectedLanguage); List <String> languages = new List <string>(masterPage.PageLanguages); languages.Add(ls.SelectedLanguage); pageData.InitializeData(languages); pageData.PageGuid = masterPage.PageGuid; pageData.PageLink.ID = masterPage.PageLink.ID; return(pageData); }
public virtual void SetInitializedLanguageBranch(LanguageSelectorContext args) { if (!_auto && !_fallBackToMaster) args.SelectedLanguage = _languageBranch; }
/// <summary> /// Get existing language and page name /// </summary> /// <param name="key">Key</param> /// <param name="catalog">Catalog</param> /// <param name="pageLink">Page Link</param> /// <param name="languageSelector">Language selector</param> /// <param name="nodeType">Node type</param> /// <param name="pageName">Page name to return</param> /// <param name="languageBranchId"></param> /// <returns></returns> private static IList<string> GetExistingLanguage(IDictionary<string, string> key, CatalogDto.CatalogRow catalog, PageReference pageLink, ILanguageSelector languageSelector, NodeType nodeType, out string pageName, out string languageBranchId) { var context = new LanguageSelectorContext(pageLink); languageSelector.SetInitializedLanguageBranch(context); languageBranchId = context.MasterLanguageBranch; if (!string.IsNullOrEmpty(context.SelectedLanguage)) { languageBranchId = context.SelectedLanguage; } if (string.IsNullOrEmpty(languageBranchId)) { var langSelector = languageSelector as LanguageSelector; if (langSelector != null) languageBranchId = langSelector.LanguageBranch; } if (!string.IsNullOrEmpty(languageBranchId)) { languageBranchId = languageBranchId.ToUpperInvariant(); } var enabledLanguages = LanguageBranch.ListEnabled().Select(l => l.LanguageID); // get existing language from mediachase var existingLanguage = new List<string>(); if (!string.IsNullOrEmpty(catalog.DefaultLanguage) && enabledLanguages.Contains(catalog.DefaultLanguage, StringComparer.OrdinalIgnoreCase)) { existingLanguage.Add(catalog.DefaultLanguage.ToUpperInvariant()); } catalog.GetCatalogLanguageRows().ToList().ForEach(row => { if (!string.IsNullOrEmpty(row.LanguageCode) && !existingLanguage.Contains(row.LanguageCode, StringComparer.OrdinalIgnoreCase) && enabledLanguages.Contains(row.LanguageCode, StringComparer.OrdinalIgnoreCase)) { existingLanguage.Add(row.LanguageCode.ToUpperInvariant()); } }); pageName = key[CatalogName]; string results = string.Empty; switch (nodeType) { case NodeType.CatalogEntry: results = GetEntryPageName(key, existingLanguage, languageBranchId, catalog); if (results.Length > 0) { pageName = results; } break; case NodeType.CatalogNode: results = GetNodePageName(key, existingLanguage, languageBranchId, catalog); if (results.Length > 0) { pageName = results; } break; } return existingLanguage; }
protected override IContent LoadContent(ContentReference contentLink, ILanguageSelector languageSelector) { if (ContentReference.IsNullOrEmpty(contentLink) || contentLink.ID == 0) { throw new ArgumentNullException("contentLink"); } if (contentLink.WorkID > 0) { return ContentStore.LoadVersion(contentLink, -1); } var languageBranchRepository = ServiceLocator.Current.GetInstance<ILanguageBranchRepository>(); var context = new LanguageSelectorContext(contentLink, languageBranchRepository, Load); if (contentLink.GetPublishedOrLatest) { languageSelector.SelectPageLanguage(context); LanguageBranch langBr = null; if (context.SelectedLanguage != null) { langBr = languageBranchRepository.Load(context.SelectedLanguage); } return ContentStore.LoadVersion(contentLink, langBr != null ? langBr.ID : -1); } languageSelector.SetInitializedLanguageBranch(context); // Get published version of Content var originalContent = ContentStore.Load(contentLink, context.SelectedLanguageBranch != null ? context.SelectedLanguageBranch.ID : -1); var page = originalContent as PageData; if(page == null) { throw new NotSupportedException("Only cloning of pages is supported"); } return ClonePage(page); }