Esempio n. 1
0
        public static string GetThemedFile(string file, string theme)
        {
            // n2's zip provider doesn't support ../../, so lets try to fix it manually
            var regex = new Regex(@"([^/]*/\.\./)");
            while (regex.IsMatch(file))
            {
                file = regex.Replace(file, "");
            }

            file = file.Replace("\\\\", "\\").Replace("\\", "/");

            if (file.StartsWith("/"))
                file = "~" + file;

            if (!IsThemeable(file))
                return file;

            HttpContext.Current.Items["theme"] = theme;
            var themeDirectory = Url.ResolveTokens("{ThemesUrl}").ToLower();
            var themedLocation = file.Replace("~" + themeDirectory, "");
            themedLocation = themedLocation.Substring(themedLocation.IndexOf("/", StringComparison.Ordinal));
            var helper = new UrlHelper(HttpContext.Current.Request.RequestContext);
            var result = helper.ThemedContent(themedLocation);
            if (System.Web.Hosting.HostingEnvironment.VirtualPathProvider.FileExists(result))
            {
                return System.Web.Hosting.HostingEnvironment.VirtualPathProvider.GetFile(result).VirtualPath;
            }
            return result;
        }