/// <summary> /// Adjust the Culture Info and let DateTime.ToString() to provide translated text. /// </summary> /// <param name="lang">Language Code</param> private static void setCurrentCultureInfo(CmsLanguage lang) { CmsLanguage[] langArray = CmsConfig.Languages; CultureInfo[] cultureArray = CmsConfig.CultureInformation; int index = CmsLanguage.IndexOf(lang.shortCode, langArray); CultureInfo targetCulture = cultureArray[index]; Thread.CurrentThread.CurrentCulture = targetCulture; Thread.CurrentThread.CurrentUICulture = targetCulture; }
/// <summary> /// get a config value from a multi-language setting string. /// The format of the string is: /// [ key = "key_1" value = "language_1|language_2" ] where "|" is the separator. /// </summary> /// <param name="key"></param> /// <param name="defaultValue"></param> /// <param name="lang"></param> /// <returns></returns> public static string getConfigValue(string key, string returnOnBlankOrError, CmsLanguage lang) { string[] msgArray = getConfigValue(key, returnOnBlankOrError.ToString()).Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); CmsLanguage[] langArray = CmsConfig.Languages; int x = CmsLanguage.IndexOf(lang.shortCode, langArray); if (msgArray.Length < langArray.Length || x < 0) { return(returnOnBlankOrError); } return(msgArray[x]); }
/// <summary> /// get a config value from a multi-language setting string. /// The format of the string is: /// [ key = "key_1" value = "language_1|language_2" ] where "|" is the separator. /// </summary> /// <param name="key"></param> /// <param name="defaultValue"></param> /// <param name="lang"></param> /// <returns></returns> public static bool getConfigValue(string key, bool defaultValue, CmsLanguage lang) { string[] msgArray = getConfigValue(key, defaultValue.ToString()).Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); CmsLanguage[] langArray = CmsConfig.Languages; int x = CmsLanguage.IndexOf(lang.shortCode, langArray); if (msgArray.Length < langArray.Length || x < 0) { return(defaultValue); } try { return(Convert.ToBoolean(msgArray[x])); } catch { } return(defaultValue); }
public string RunInlineGlossaryFilter(CmsPage pageBeingFiltered, string placeholderHtml) { try { bool enabled = CmsConfig.getConfigValue("GlossaryHighlightFilter:Enable", false); // disabled by default if (!enabled || CmsContext.currentEditMode == CmsEditMode.Edit) { return(placeholderHtml); } #if DEBUG CmsContext.currentPage.HeadSection.AddCSSStyleStatements("span.InlineGlossaryTerm { border-bottom: 1px dotted red; }"); #endif // -- get the glossaryID to get data for (language specific) int glossaryId = 2; string glossaryIds = CmsConfig.getConfigValue("GlossaryHighlightFilter:GlossaryId", ""); try { string[] glossaryIdsParts = glossaryIds.Split(new char[] { CmsConfig.PerLanguageConfigSplitter }, StringSplitOptions.RemoveEmptyEntries); if (glossaryIdsParts.Length >= CmsConfig.Languages.Length) { int index = CmsLanguage.IndexOf(CmsContext.currentLanguage.shortCode, CmsConfig.Languages); if (index >= 0) { glossaryId = Convert.ToInt32(glossaryIdsParts[index]); } } } catch (Exception ex) { throw new Exception("Error: GlossaryHighlightFilter is incorrectly configured!"); } // -- get the glossary data from the database. The data is cached so that we don't hit the database for this info every time. GlossaryData[] gData; string cacheKey = "GlossaryHighlightFilter_Data_" + glossaryId; if (!CmsContext.currentUserIsLoggedIn && System.Web.Hosting.HostingEnvironment.Cache[cacheKey] != null) { gData = (GlossaryData[])System.Web.Hosting.HostingEnvironment.Cache[cacheKey]; } else { GlossaryDb db = new GlossaryDb(); gData = db.getGlossaryData(glossaryId); if (!CmsContext.currentUserIsLoggedIn) { System.Web.Hosting.HostingEnvironment.Cache.Insert(cacheKey, gData, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration); } // go through longer words first (longer words/phrases are usually more specific than shorter ones) gData = GlossaryData.SortByWordLength(gData, SortDirection.Descending); } // -- short-circuit processing if there aren't any glossary terms in the system. if (gData.Length == 0) { return(placeholderHtml); } // -- process the placeholderHTML string html = placeholderHtml; List <string> toSurround = new List <string>(); List <string> prefixs = new List <string>(); List <string> suffixs = new List <string>(); foreach (GlossaryData d in gData) { int index = html.IndexOf(d.word.Trim(), StringComparison.CurrentCultureIgnoreCase); if (index >= 0 && d.word.Trim().Length > 0) { // string safeDesc = StringUtils.AddSlashes(d.description); string safeDesc = HttpUtility.HtmlEncode(d.word + ": " + d.description); safeDesc = safeDesc.Replace("\n", " "); safeDesc = safeDesc.Replace("\r", " "); safeDesc = safeDesc.Replace("\t", " "); safeDesc = safeDesc.Replace(" ", " "); string prefix = "<span title=\"" + safeDesc + "\" class=\"InlineGlossaryTerm\">"; string suffix = "</span>"; toSurround.Add(d.word.Trim()); prefixs.Add(prefix); suffixs.Add(suffix); } } // foreach word html = SurroundInHtml(toSurround.ToArray(), prefixs.ToArray(), suffixs.ToArray(), html); return(html.ToString()); } catch (Exception ex) { placeholderHtml += ("<!-- GlossaryHighlightingFilter Error: " + ex.Message + " -->"); } return(placeholderHtml); }