Beispiel #1
0
        public FakeItem WithLanguage(Sitecore.Globalization.Language language)
        {
            Item.Language.Returns(language);

            Item.Database.GetItem(Item.ID, Item.Language).Returns(Item);
            Item.Database.GetItem(Item.ID.ToString(), Item.Language).Returns(Item);
            Item.Database.GetItem(Item.ID, Item.Language, Item.Version ?? Version.First).Returns(Item);
            Item.Database.GetItem(Item.ID.ToString(), Item.Language, Item.Version ?? Version.First).Returns(Item);
            return(this);
        }
 public static Models.Language Create(Sitecore.Globalization.Language language)
 {
     return(new Models.Language
     {
         Name = language.CultureInfo.NativeName,
         Url = GetItemUrlByLanguage(language),
         Icon = string.Concat("/~/icon/", language.GetIcon(Context.Database)),
         TwoLetterCode = language.CultureInfo.TwoLetterISOLanguageName
     });
 }
 private static string GetItemUrlByLanguage(Sitecore.Globalization.Language language)
 {
     using (new LanguageSwitcher(language))
     {
         var options = new UrlOptions
         {
             AlwaysIncludeServerUrl = true,
             LanguageEmbedding      = LanguageEmbedding.Always,
             LowercaseUrls          = true
         };
         var url = LinkManager.GetItemUrl(Context.Item, options);
         return(StringUtil.EnsurePostfix('/', url).ToLower());
     }
 }
Beispiel #4
0
        protected override Item GetItem(ID itemId, Sitecore.Globalization.Language language, Version version, Database database)
        {
            var item = base.GetItem(itemId, language, version, database);

            if (item == null)
            {
                return(item);
            }

            if (item.Versions.GetVersionNumbers().Length > 0)
            {
                return(item);
            }

            var fallbackLanguage = Sitecore.Context.Site.GetFallbackLanguage();

            if (fallbackLanguage == null)
            {
                return(item);
            }

            Item fallback = base.GetItem(itemId, fallbackLanguage, Version.Latest, database);

            if (fallback == null)
            {
                return(item);
            }

            if (fallback.Versions.GetVersionNumbers().Length == 0)
            {
                return(item);
            }

            var stubData = new ItemData(fallback.InnerData.Definition, fallback.Language, fallback.Version, fallback.InnerData.Fields);
            var stub     = new LanguageStub(itemId, stubData, database)
            {
                OriginalLanguage = item.Language
            };

            stub.RuntimeSettings.SaveAll = true;

            return(stub);
        }
Beispiel #5
0
        public static Sitecore.Layouts.RenderingReference GetRenderingReference(Sitecore.Mvc.Presentation.Rendering rendering, Sitecore.Globalization.Language language, Sitecore.Data.Database database)
        {
            Sitecore.Diagnostics.Assert.IsNotNull(rendering, "rendering");
            Sitecore.Diagnostics.Assert.IsNotNull(language, "language");
            Sitecore.Diagnostics.Assert.IsNotNull(database, "database");
            string text = rendering.Properties["RenderingXml"];

            if (!string.IsNullOrEmpty(text))
            {
                return(new Sitecore.Layouts.RenderingReference(XElement.Parse(text).ToXmlNode(), language, database));
            }
            return(null);
        }
        protected override Item GetItem(ID itemId, Sitecore.Globalization.Language language, Version version, Database database)
        {
            var item = base.GetItem(itemId, language, version, database);

            if (item == null)
            {
                return(item);
            }

            if (item.Versions.GetVersionNumbers().Length > 0)
            {
                return(item);
            }

            //Try Default Language
            var defaultLang = Sitecore.Configuration.Settings.GetSetting("SF.LanguageStrategy.DefaultLanguage");

            if (string.IsNullOrEmpty(defaultLang))
            {
                return(item);
            }

            var fallbackLanguage = LanguageManager.GetLanguage(defaultLang);

            if (fallbackLanguage == null)
            {
                return(item);
            }

            Item fallback = base.GetItem(itemId, fallbackLanguage, Version.Latest, database);

            if (fallback != null && fallback.Versions.GetVersionNumbers().Length > 0)
            {
                var stubData = new ItemData(fallback.InnerData.Definition, fallback.Language, fallback.Version, fallback.InnerData.Fields);
                var stub     = new LanguageStub(itemId, stubData, database)
                {
                    OriginalLanguage = item.Language
                };
                stub.RuntimeSettings.SaveAll = true;

                return(stub);
            }

            //Item doesn't exist in default language, Let's take any other version.
            var installedLanguages = LanguageManager.GetLanguages(database);

            //Assume this will be in same order of languages as defined in System Languages
            foreach (var installedLanguage in installedLanguages)
            {
                fallback = base.GetItem(itemId, installedLanguage, Version.Latest, database);

                if (fallback != null && fallback.Versions.GetVersionNumbers().Length > 0)
                {
                    var stubData = new ItemData(fallback.InnerData.Definition, fallback.Language, fallback.Version, fallback.InnerData.Fields);
                    var stub     = new LanguageStub(itemId, stubData, database)
                    {
                        OriginalLanguage = item.Language
                    };
                    stub.RuntimeSettings.SaveAll = true;

                    return(stub);
                }
            }

            //Nothing Worked return the null item
            return(item);
        }