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); }
private static string JoinString(ReadOnlyStringList input, char separator) { return(input == null || input.Count == 0 ? null : input.Join(separator.ToString())); }
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++; } } } }
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); }
private bool EqualDetails(Namespace other) { return(_isEnsured == other._isEnsured && ReadOnlyStringList.Equals(EnabledEvents, other.EnabledEvents) && ReadOnlyStringList.Equals(MixedEvents, other.MixedEvents)); }
private bool EqualDetails(Source other) { return(ReadOnlyStringList.Equals(EnabledEvents, other.EnabledEvents)); }