internal PageThemeCodeDomTreeGenerator(PageThemeParser parser) : base(parser) { this._controlSkinTypeNameCollection = new Hashtable(); this._controlSkinBuilderEntryList = new ArrayList(); this._controlSkinDelegateType = new CodeTypeReference(typeof(ControlSkinDelegate)); this._controlSkinType = new CodeTypeReference(typeof(ControlSkin)); this._themeParser = parser; }
public static Type GetCompiledType (string theme, HttpContext context) { string virtualPath = "~/App_Themes/" + theme + "/"; string physicalPath = context.Request.MapPath (virtualPath); if (!Directory.Exists (physicalPath)) throw new HttpException (String.Format ("Theme '{0}' cannot be found in the application or global theme directories.", theme)); string [] skin_files = Directory.GetFiles (physicalPath, "*.skin"); PageThemeParser ptp = new PageThemeParser (new VirtualPath (virtualPath), context); string[] css_files = Directory.GetFiles (physicalPath, "*.css"); string[] css_urls = new string[css_files.Length]; for (int i = 0; i < css_files.Length; i++) { ptp.AddDependency (css_files [i]); css_urls [i] = virtualPath + Path.GetFileName (css_files [i]); } Array.Sort (css_urls, StringComparer.OrdinalIgnoreCase); ptp.LinkedStyleSheets = css_urls; AspComponentFoundry shared_foundry = new AspComponentFoundry (); ptp.RootBuilder = new RootBuilder (); string skin_file_url; for (int i = 0; i < skin_files.Length; i ++) { skin_file_url = VirtualPathUtility.Combine (virtualPath, Path.GetFileName (skin_files [i])); PageThemeFileParser ptfp = new PageThemeFileParser (new VirtualPath (skin_file_url), skin_files[i], context); ptp.AddDependency (skin_files [i]); AspGenerator gen = new AspGenerator (ptfp); ptfp.RootBuilder.Foundry = shared_foundry; gen.Parse (); if (ptfp.RootBuilder.Children != null) foreach (object o in ptfp.RootBuilder.Children) { if (!(o is ControlBuilder)) continue; ptp.RootBuilder.AppendSubBuilder ((ControlBuilder)o); } foreach (string ass in ptfp.Assemblies) if (!ptp.Assemblies.Contains (ass)) ptp.AddAssemblyByFileName (ass); } PageThemeCompiler compiler = new PageThemeCompiler (ptp); return compiler.GetCompiledType (); }
protected override TemplateParser CreateParser (VirtualPath virtualPath, string inputFile, HttpContext context) { string vp = VirtualPathUtility.AppendTrailingSlash (virtualPath.Original); string physicalPath = virtualPath.PhysicalPath; if (!Directory.Exists (physicalPath)) throw new HttpException (String.Concat ("Theme '", virtualPath.Original ,"' cannot be found in the application or global theme directories.")); PageThemeParser ptp = new PageThemeParser (virtualPath, context); string[] css_files = Directory.GetFiles (physicalPath, "*.css"); string[] css_urls = new string [css_files.Length]; for (int i = 0; i < css_files.Length; i++) { css_urls [i] = VirtualPathUtility.Combine (vp, Path.GetFileName (css_files [i])); ptp.AddDependency (css_urls [i]); } Array.Sort (css_urls, StringComparer.OrdinalIgnoreCase); ptp.LinkedStyleSheets = css_urls; AspComponentFoundry shared_foundry = new AspComponentFoundry (); ptp.RootBuilder = new RootBuilder (); string [] skin_files = Directory.GetFiles (physicalPath, "*.skin"); string skin_file_url; AspGenerator generator; foreach (string skin_file in skin_files) { skin_file_url = VirtualPathUtility.Combine (vp, Path.GetFileName (skin_file)); PageThemeFileParser ptfp = new PageThemeFileParser (new VirtualPath (skin_file_url), skin_file, context); ptp.AddDependency (skin_file_url); generator = new AspGenerator (ptfp, shared_foundry); generator.Parse (); if (ptfp.RootBuilder.Children != null) foreach (object o in ptfp.RootBuilder.Children) { if (!(o is ControlBuilder)) continue; ptp.RootBuilder.AppendSubBuilder ((ControlBuilder)o); } foreach (string ass in ptfp.Assemblies) if (!ptp.Assemblies.Contains (ass)) ptp.AddAssemblyByFileName (ass); } return ptp; }
public PageThemeCompiler (PageThemeParser parser) : base (parser) { this.parser = parser; }
internal PageThemeCodeDomTreeGenerator(PageThemeParser parser) : base(parser) { _themeParser = parser; }
public static Type GetCompiledType(string theme, HttpContext context) { string virtualPath = "~/App_Themes/" + theme + "/"; string physicalPath = context.Request.MapPath(virtualPath); if (!Directory.Exists(physicalPath)) { throw new HttpException(String.Format("Theme '{0}' cannot be found in the application or global theme directories.", theme)); } string [] skin_files = Directory.GetFiles(physicalPath, "*.skin"); PageThemeParser ptp = new PageThemeParser(new VirtualPath(virtualPath), context); string[] css_files = Directory.GetFiles(physicalPath, "*.css"); string[] css_urls = new string[css_files.Length]; for (int i = 0; i < css_files.Length; i++) { ptp.AddDependency(css_files [i]); css_urls [i] = virtualPath + Path.GetFileName(css_files [i]); } Array.Sort(css_urls, StringComparer.OrdinalIgnoreCase); ptp.LinkedStyleSheets = css_urls; AspComponentFoundry shared_foundry = new AspComponentFoundry(); ptp.RootBuilder = new RootBuilder(); string skin_file_url; for (int i = 0; i < skin_files.Length; i++) { skin_file_url = VirtualPathUtility.Combine(virtualPath, Path.GetFileName(skin_files [i])); PageThemeFileParser ptfp = new PageThemeFileParser(new VirtualPath(skin_file_url), skin_files[i], context); ptp.AddDependency(skin_files [i]); AspGenerator gen = new AspGenerator(ptfp); ptfp.RootBuilder.Foundry = shared_foundry; gen.Parse(); if (ptfp.RootBuilder.Children != null) { foreach (object o in ptfp.RootBuilder.Children) { if (!(o is ControlBuilder)) { continue; } ptp.RootBuilder.AppendSubBuilder((ControlBuilder)o); } } foreach (string ass in ptfp.Assemblies) { if (!ptp.Assemblies.Contains(ass)) { ptp.AddAssemblyByFileName(ass); } } } PageThemeCompiler compiler = new PageThemeCompiler(ptp); return(compiler.GetCompiledType()); }