Exemple #1
0
 protected void Session_Start(object sender, EventArgs e)
 {
     WebUtils.ChangeThemeViaLang(WebUtils.Configinfo.DefaultLang);
 }
Exemple #2
0
        public ActionResult ChangeLanguage(string language)
        {
            DataCache.RemoveCache("CategoriesInfoCache");
            if (Session["CustomTheme"] == null || string.IsNullOrEmpty((string)Session["CustomTheme"]))
            {
                WebUtils.ChangeThemeViaLang(language);
            }
            var lang = language == "zh-cn" ? "" : language;

            Session["CurrentLanguage"] = new CultureInfo(lang);

            if (Request.UrlReferrer == null)
            {
                return(Redirect(Url.Content("~/")));
            }

            var referrerUrl = Request.UrlReferrer.AbsolutePath.TrimEnd('/');
            var absoluteUrl = Url.Content("~/").TrimEnd('/');
            var redirectUrl = Request.UrlReferrer.AbsoluteUri;

            if (!redirectUrl.ToLower().Contains("admin"))
            {
                if (!string.IsNullOrEmpty(referrerUrl) && !string.IsNullOrEmpty(absoluteUrl))
                {
                    referrerUrl = referrerUrl.Replace(absoluteUrl, "/");
                }
                else
                {
                    referrerUrl = "/";
                }
                var langStr = language.ToLower() != Configinfo.DefaultLang ? language : "";
                if (Configinfo.IfIndependentContentViaLang == 1)
                {
                    redirectUrl = langStr;
                }
                else
                {
                    referrerUrl = WebUtils.Langs.Aggregate(referrerUrl, (current, c) => current.Replace(c + "", ""));
                    if (!string.IsNullOrWhiteSpace(langStr) && !string.IsNullOrWhiteSpace(referrerUrl))
                    {
                        referrerUrl = ("/" + referrerUrl + "/").Replace("//", "/");
                        if (referrerUrl.Split('/')[1] == Configinfo.WebStaticFolderPart1)
                        {
                            referrerUrl = referrerUrl.Replace("/" + Configinfo.WebStaticFolderPart1, "");
                            redirectUrl = "/" + Configinfo.WebStaticFolderPart1 + "/" + langStr + "/" + referrerUrl;
                        }
                        else
                        {
                            redirectUrl = langStr + "/" + referrerUrl;
                        }
                    }
                    else
                    {
                        redirectUrl = string.Empty;
                    }
                }
                redirectUrl = absoluteUrl + "/" + redirectUrl.TrimStart('/');
                redirectUrl = redirectUrl.Replace("//", "/");
            }
            else
            {
                redirectUrl = Request.UrlReferrer.ToString();
            }

            return(Redirect(redirectUrl));
        }
Exemple #3
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);
        }