public IEnumerable <ChromeLanguageInfo> GetLanguageInfo(PageData page)
        {
            List <ChromeLanguageInfo> languages     = new List <ChromeLanguageInfo>();
            ReadOnlyStringList        pageLanguages = page.PageLanguages;
            string currentLanguage = page.LanguageBranch;

            foreach (string language in pageLanguages)
            {
                LanguageBranch languageBranch = _languageBranchRepository.ListEnabled().FirstOrDefault(l => l.LanguageID.Equals(language, StringComparison.InvariantCultureIgnoreCase));
                if (languageBranch != null)
                {
                    languages.Add(new ChromeLanguageInfo()
                    {
                        DisplayName = languageBranch.Name,
                        IconUrl     = languageBranch.ResolvedIconPath, //"/Content/Images/flags/" + language + ".png",
                        // We use this to enable language switching inside edit mode too
                        Url      = languageBranch.CurrentUrlSegment,
                        EditUrl  = PageEditing.GetEditUrlForLanguage(page.ContentLink, languageBranch.LanguageID),
                        Selected = string.Compare(language, currentLanguage, StringComparison.InvariantCultureIgnoreCase) == 0
                    });
                }
            }

            return(languages);
        }
Пример #2
0
 private static string JoinString(ReadOnlyStringList input, char separator)
 {
     return(input == null || input.Count == 0 ? null : input.Join(separator.ToString()));
 }
Пример #3
0
        private static void AddEventStatesForSources(ISourceParent parent, IEnumerable <string> eventsToCheck,
                                                     IList enabled, IList disabled, IList mixed, bool setFromFirstSource)
        {
            IEnumerator enumerator = parent.Sources.GetEnumerator();

            if (setFromFirstSource)
            {
                // When processing the first source just set our states from its states.

                if (enumerator.MoveNext())
                {
                    var source = (Source)enumerator.Current;
                    ReadOnlyStringList childEnabled = source.EnabledEvents;

                    foreach (string eventName in eventsToCheck)
                    {
                        if (childEnabled.Contains(eventName))
                        {
                            enabled.Add(eventName);
                        }
                        else
                        {
                            disabled.Add(eventName);
                        }
                    }
                }
            }

            while (enumerator.MoveNext())
            {
                // For subsequent children look for states that change our state for an event from enabled or
                // disabled to mixed. Once an event is in "mixed" state that won't change.

                var source = (Source)enumerator.Current;
                ReadOnlyStringList childEnabled = source.EnabledEvents;

                int index = 0;
                while (index < enabled.Count)
                {
                    var eventName = (string)enabled[index];
                    if (!childEnabled.Contains(eventName))
                    {
                        // This event was enabled for all children so far, but not for this one - now it's mixed.

                        enabled.RemoveAt(index);
                        mixed.Add(eventName);
                    }
                    else
                    {
                        index++;
                    }
                }

                index = 0;
                while (index < disabled.Count)
                {
                    var eventName = (string)disabled[index];
                    if (childEnabled.Contains(eventName))
                    {
                        // This event was disabled for all children so far, but not for this one - now it's mixed.

                        disabled.RemoveAt(index);
                        mixed.Add(eventName);
                    }
                    else
                    {
                        index++;
                    }
                }
            }
        }
Пример #4
0
        public static bool AddEventStatesForChildNamespaces(INamespaceParent parent, string[] eventsToCheck,
                                                            IList enabled, IList disabled, IList mixed)
        {
            IEnumerator enumerator = parent.Namespaces.GetEnumerator();

            if (enumerator.MoveNext())
            {
                // When processing the first namespace just set our states from its states.

                var childNs = (Namespace)enumerator.Current;
                ReadOnlyStringList childEnabled = childNs.EnabledEvents;
                ReadOnlyStringList childMixed   = childNs.MixedEvents;

                foreach (string eventName in eventsToCheck)
                {
                    if (childEnabled.Contains(eventName))
                    {
                        enabled.Add(eventName);
                    }
                    else if (childMixed.Contains(eventName))
                    {
                        mixed.Add(eventName);
                    }
                    else
                    {
                        disabled.Add(eventName);
                    }
                }
            }
            else
            {
                return(false);                // No namespaces to process.
            }
            while (enumerator.MoveNext())
            {
                // For subsequent children look for states that change our state for an event from enabled or
                // disabled to mixed. Once an event is in "mixed" state that won't change.

                var childNs = (Namespace)enumerator.Current;
                ReadOnlyStringList childEnabled = childNs.EnabledEvents;
                ReadOnlyStringList childMixed   = childNs.MixedEvents;

                int index = 0;
                while (index < enabled.Count)
                {
                    var eventName = (string)enabled[index];
                    if (!childEnabled.Contains(eventName))
                    {
                        // This event was enabled for all children so far, but not for this one - now it's mixed.

                        enabled.RemoveAt(index);
                        mixed.Add(eventName);
                    }
                    else
                    {
                        index++;
                    }
                }

                index = 0;
                while (index < disabled.Count)
                {
                    var eventName = (string)disabled[index];
                    if (childEnabled.Contains(eventName) || childMixed.Contains(eventName))
                    {
                        // This event was disabled for all children so far, but not for this one - now it's mixed.

                        disabled.RemoveAt(index);
                        mixed.Add(eventName);
                    }
                    else
                    {
                        index++;
                    }
                }
            }

            return(true);
        }
Пример #5
0
 private bool EqualDetails(Namespace other)
 {
     return(_isEnsured == other._isEnsured &&
            ReadOnlyStringList.Equals(EnabledEvents, other.EnabledEvents) &&
            ReadOnlyStringList.Equals(MixedEvents, other.MixedEvents));
 }
Пример #6
0
 private bool EqualDetails(Source other)
 {
     return(ReadOnlyStringList.Equals(EnabledEvents, other.EnabledEvents));
 }