public PageZone( PageElementDependencies dependencies, PageElement parent, IRegion region, IElement content, IPageData pageData) : base(dependencies, parent, region, pageData) { _dataContextBuilder = pageData.BeginAddElement(Element, this); content = content ?? region.Content; var layout = content as ILayout; var component = content as IComponent; if (layout != null) { var pageLayout = new PageLayout(dependencies, this, layout, null, pageData); _writeContent = pageLayout.WritePageArea; Children = new PageElement[] { pageLayout }; } else if (component != null) { var pageComponent = new PageComponent(dependencies, this, component, pageData); _writeContent = pageComponent.WritePageArea; Children = new PageElement[] { pageComponent }; } else { Children = null; _writeContent = (rc, pa) => WriteResult.Continue(); } pageData.EndAddElement(Element); }
public PageData(IPageDependenciesFactory dependencies, Page page) { _page = page; var assetDeployment = page.AssetDeployment; if (page.Module != null) { assetDeployment = page.Module.AssetDeployment; } if (assetDeployment == AssetDeployment.Inherit) { assetDeployment = AssetDeployment.PerModule; } if (assetDeployment == AssetDeployment.PerModule && page.Module == null) { assetDeployment = AssetDeployment.PerWebsite; } RootDataContextBuilder = dependencies.DataContextBuilderFactory.Create(page); _currentState = new State { MessagePrefix = page.Name + ": ", AssetDeployment = assetDeployment, DataContextBuilder = RootDataContextBuilder, Module = page.Module }; }
public DataContext Initialize( Action <IReusable> disposeAction, IRenderContext renderContext, IDataContextBuilder dataContextBuilder, DataContext parent) { if (dataContextBuilder == null) { throw new ArgumentNullException("dataContextBuilder"); } if (renderContext == null) { throw new ArgumentNullException("renderContext"); } Initialize(disposeAction); _properties.Clear(); _renderContext = renderContext; _parent = parent; DataContextBuilder = dataContextBuilder; return(this); }
public IDataContext Create( IRenderContext renderContext, IDataContextBuilder dataContextBuilder, DataContext parent) { var dataContext = (DataContext)Queue.DequeueOrDefault() ?? new DataContext(_dictionaryFactory, this, _dataDependencyFactory, _idManager); return(dataContext.Initialize(DisposeAction, renderContext, dataContextBuilder, parent)); }
public virtual void Initialize() { var data = new PageData(_dependencies, this); var elementDependencies = new PageElementDependencies { DictionaryFactory = _dependencies.DictionaryFactory, DataDependencyFactory = _dependencies.DataDependencyFactory }; if (Layout != null) { var regionElements = new List <Tuple <string, IRegion, IElement> >(); foreach (var zoneName in Layout.GetZoneNames()) { var element = _layoutZones != null && _layoutZones.ContainsKey(zoneName) ? _layoutZones[zoneName] : Layout.GetElement(zoneName); var region = element as IRegion; if (region == null) { region = Layout.GetRegion(zoneName); } else { element = null; } regionElements.Add(new Tuple <string, IRegion, IElement>(zoneName, region, element)); } _layout = new PageLayout(elementDependencies, null, Layout, regionElements, data); } if (_components == null) { _pageComponents = new PageComponent[0]; } else { _pageComponents = _components .ToList() .Select(c => new PageComponent(elementDependencies, null, c, data)) .ToArray(); foreach (var component in _components) { data.BeginAddElement(component, null); data.EndAddElement(component); } } _dataContextBuilder = data.RootDataContextBuilder; _dataContextBuilder.ResolveSupplies(); _referencedModules = new List <IModule>(); var styles = _dependencies.CssWriterFactory.Create(); var functions = _dependencies.JavascriptWriterFactory.Create(); #if TRACE System.Diagnostics.Trace.WriteLine("Page '" + Name + "' asset deployment"); #endif var elements = new HashSet <string>(); foreach (var element in data.Elements) { var name = string.IsNullOrEmpty(element.Element.Name) ? element.Element.GetType().Name : element.Element.Name; var elementUniqueName = element.Element.ElementType.ToString() + ":" + name; if (!elements.Add(elementUniqueName)) { continue; } string deployment; switch (element.AssetDeployment) { case AssetDeployment.PerWebsite: deployment = "website assets"; _dependencies.AssetManager.AddWebsiteAssets(element.Element); break; case AssetDeployment.PerModule: deployment = element.Module.Name + " module"; _dependencies.AssetManager.AddModuleAssets(element.Element, element.Module); if (_referencedModules.All(m => m.Name != element.Module.Name)) { _referencedModules.Add(element.Module); } break; case AssetDeployment.PerPage: deployment = "page assets"; _dependencies.AssetManager.AddPageAssets(element.Element, this); break; case AssetDeployment.InPage: deployment = "page head"; element.Element.WriteStaticCss(styles); element.Element.WriteStaticJavascript(functions); break; default: deployment = element.AssetDeployment.ToString().ToLower(); break; } #if DEBUG System.Diagnostics.Trace.WriteLine(" " + name + " deployed to " + deployment); #endif } _inPageCssLines = styles.ToLines(); _inPageScriptLines = functions.ToLines(); }
IDataContext IDataContext.CreateChild(IDataContextBuilder dataContextBuilder) { return(_dataContextFactory.Create(_renderContext, dataContextBuilder, this)); }
public IDataContext Create( IRenderContext renderContext, IDataContextBuilder dataContextBuilder) { return(Create(renderContext, dataContextBuilder, null)); }
IDataContext IDataContext.CreateChild(IDataContextBuilder dataContextBuilder) { throw new Exception("You can not create child data contexts for a service endpoint"); }
public IDataContext CreateChild(IDataContextBuilder dataContextBuilder = null) { return(this); }