Пример #1
0
        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));
        }
Пример #2
0
 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);
        }
Пример #5
0
 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);
        }