Exemple #1
0
        protected void Application_AcquireRequestState(object sender, EventArgs e)
        {
            var url         = Request.Url.AbsoluteUri.ToLower();
            var files       = new[] { ".axd", ".asmx", "/upload/", "/content/", ".ashx", ".css", ".js", ".png", ".gif", ".jpg", ".jpeg", ".bmp", ".swf", ".xml" };
            var currentfile = Array.Find(files,
                                         element =>
                                         url.IndexOf(element, StringComparison.Ordinal) >
                                         -1);

            if (!string.IsNullOrEmpty(currentfile))
            {
                return;
            }
            if (HttpContext.Current.Session == null)
            {
                return;
            }

            var customTheme = (HttpContext.Current.Request["theme"] ?? string.Empty).Trim();

            if (!string.IsNullOrEmpty(customTheme) && customTheme != "default")
            {
                Session.Remove("CustomTheme");
                Session.Add("CustomTheme", customTheme);
                WebUtils.ChangeTheme(customTheme);
            }

            //set lang start
            var referer = HttpContext.Current.Request.ServerVariables["HTTP_REFERER"];

            if (string.IsNullOrEmpty(referer))
            {
                DataCache.RemoveCache("CategoriesInfoCache");
                Session["CurrentLanguage"] = null;
            }
            var defaultlang = WebUtils.Configinfo.DefaultLang;
            var currentlang = (Session["CurrentLanguage"] != null
                                  ? Session["CurrentLanguage"].ToString()
                                  : defaultlang).ToLower();

            var lang = currentlang == "" ? defaultlang : currentlang;

            if (!url.Contains("/admin/") || url.Contains("u/admin"))
            {
                lang = Array.Find(WebUtils.Langs,
                                  element =>
                                  url.IndexOf(element, StringComparison.Ordinal) >
                                  -1);
                lang = string.IsNullOrWhiteSpace(lang) ? defaultlang : lang.Trim('/');
            }

            var ci = (CultureInfo)Session["CurrentLanguage"];

            if (ci == null || lang != currentlang || string.IsNullOrEmpty(referer))
            {
                ci = new CultureInfo(lang == "zh-cn" ? "" : lang);
                Session["CurrentLanguage"] = ci;

                if (Session["CustomTheme"] == null)
                {
                    WebUtils.ChangeThemeViaLang(lang);
                }
            }
            //set lang end

            if (customTheme == "default")
            {
                Session.Remove("CustomTheme");
                WebUtils.ChangeThemeViaLang(lang);
            }

            var currentThemeFolder = string.Empty;
            var rve = (BlogViewEngine)ViewEngines.Engines.FirstOrDefault(a => a.GetType() == typeof(BlogViewEngine));

            if (rve != null && rve.PartialViewLocationFormats != null && rve.PartialViewLocationFormats.Any())
            {
                currentThemeFolder = rve.PartialViewLocationFormats[0].StartsWith("~/Views/") ? "" : rve.PartialViewLocationFormats[0].Split('/')[2];
            }

            if (Session["CustomTheme"] != null)
            {
                if (currentThemeFolder != Session["CustomTheme"].ToString())
                {
                    WebUtils.ChangeTheme(Session["CustomTheme"].ToString());
                }
            }
            else
            {
                var theme = WebUtils.GetLangTemplate(lang);
                if (currentThemeFolder != theme)
                {
                    WebUtils.ChangeTheme(theme);
                }
            }

            Thread.CurrentThread.CurrentUICulture = ci;
            Thread.CurrentThread.CurrentCulture   = CultureInfo.CreateSpecificCulture(ci.Name);
        }