Esempio n. 1
0
        private void ListProjects(IRenderContext context)
        {
            WriteHead(context, "Visual Studio Projects");

            var template = _nameManager.ResolveTemplate("/data/project");

            if (template != null)
            {
                context.Html.WriteOpenTag("ul", "class", Package.NamespaceName + "_index " + Package.NamespaceName + "_project-index");
                context.Html.WriteLine();

                foreach (var project in SiteMap.Instance.Projects.OrderBy(p => p.ProjectName))
                {
                    context.Data.Set(project);
                    context.Data.Set(project.Document);
                    context.Data.Set(project.Repository);

                    context.Html.WriteOpenTag("li", "class", Package.NamespaceName + "_index " + Package.NamespaceName + "_project-index");
                    context.Html.WriteLine();

                    template.WritePageArea(context, PageArea.Body);

                    context.Html.WriteCloseTag("li");
                    context.Html.WriteLine();
                }

                context.Html.WriteCloseTag("ul");
                context.Html.WriteLine();
            }
        }
        public ITemplateDefinition AddTemplate(string templatePath)
        {
            _nameManager.AddResolutionHandler(NameResolutionPhase.ResolveElementReferences, nm =>
            {
                AddConsumerNeeds(nm.ResolveTemplate(templatePath) as IDataConsumer);
            });

            HeadActions.Add(r =>
            {
                var t = _nameManager.ResolveTemplate(templatePath);
                if (t != null)
                {
                    t.WritePageArea(r, PageArea.Head);
                }
            });

            ScriptActions.Add(r =>
            {
                var t = _nameManager.ResolveTemplate(templatePath);
                if (t != null)
                {
                    t.WritePageArea(r, PageArea.Scripts);
                }
            });

            StyleActions.Add(r =>
            {
                var t = _nameManager.ResolveTemplate(templatePath);
                if (t != null)
                {
                    t.WritePageArea(r, PageArea.Styles);
                }
            });

            BodyActions.Add(r =>
            {
                var t = _nameManager.ResolveTemplate(templatePath);
                if (t != null)
                {
                    t.WritePageArea(r, PageArea.Body);
                }
            });

            InitializationActions.Add(r =>
            {
                var t = _nameManager.ResolveTemplate(templatePath);
                if (t != null)
                {
                    t.WritePageArea(r, PageArea.Initialization);
                }
            });

            return(this);
        }
        private void AddTemplateDependencies(INameManager nm, string templatePath)
        {
            var template     = nm.ResolveTemplate(templatePath);
            var dataConsumer = template as IDataConsumer;

            if (dataConsumer == null)
            {
                return;
            }

            // Note that if you change the template and dynamically reload it
            // whilst the website is running you can not change the data dependencies

            var needs = dataConsumer.GetConsumerNeeds();

            if (needs == null)
            {
                return;
            }

            var thisDataConsumer = this as IDataConsumer;

            if (needs.DataDependencies != null)
            {
                foreach (var dependency in needs.DataDependencies)
                {
                    thisDataConsumer.HasDependency(dependency.DataType, dependency.ScopeName);
                }
            }

            if (needs.DataSupplyDependencies != null)
            {
                foreach (var dataSupply in needs.DataSupplyDependencies)
                {
                    thisDataConsumer.HasDependency(dataSupply);
                }
            }

            if (needs.DataSupplierDependencies != null)
            {
                foreach (var dataSupplier in needs.DataSupplierDependencies)
                {
                    thisDataConsumer.HasDependency(dataSupplier.Item1, dataSupplier.Item2);
                }
            }
        }