Ejemplo n.º 1
0
        private static void AutoDiscoverTemplates()
        {
            ForEachType(type =>
            {
                var attribute = type.GetCustomAttribute <MvcTemplateAttribute>(false);
                if (attribute == null)
                {
                    return;
                }

                var template = new MvcPageTemplateDescriptor(type);

                GlobalConfiguration.Current.Templates.Add(template);
            });
        }
Ejemplo n.º 2
0
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var pageUrlData = PageUrls.ParseUrl(HttpContext.Request.Path);

            if (pageUrlData == null)
            {
                return;
            }

            C1PageRoute.PageUrlData = pageUrlData;

            _mvcContext = new MvcRenderingContext(ControllerContext);

            var page = PageRenderer.CurrentPage;

            ViewData.Add("C1PreviewContent", HttpContext.Items["C1PreviewContent"]);

            _template = PageTemplateFacade.GetPageTemplate(page.TemplateId) as MvcPageTemplateDescriptor;
            if (_template == null)
            {
                throw new InvalidOperationException(String.Format("The pagetemplate '{0}' is not a valid mvc template", page.TemplateId));
            }

            var templateModel = Activator.CreateInstance(_template.TypeInfo.Item1);

            if (_template.PlaceholderDescriptions != null && _template.PlaceholderDescriptions.Any())
            {
                foreach (var placeholder in _template.PlaceholderDescriptions)
                {
                    var name    = placeholder.Id;
                    var prop    = _template.TypeInfo.Item2[name];
                    var content = GetPlaceholderContent(name);

                    BindPlaceholder(templateModel, prop, content);
                }
            }

            ViewData.Add("TemplateModel", templateModel);

            base.OnActionExecuting(filterContext);
        }
Ejemplo n.º 3
0
        public static void UseCompositeC1ContribMvc(this IAppBuilder app, Action <IBootstrapperConfiguration> configurationAction)
        {
            Verify.ArgumentNotNull(app, "app");
            Verify.ArgumentNotNull(configurationAction, "configurationAction");

            var configuration = new BootstrapperConfiguration();

            configurationAction(configuration);

            AutoDiscoverTemplates();

            if (configuration.TemplateTypes != null)
            {
                foreach (var type in configuration.TemplateTypes)
                {
                    var template = new MvcPageTemplateDescriptor(type);

                    GlobalConfiguration.Current.Templates.Add(template);
                }
            }

            AutoDiscoverFunctions();

            var routes      = RouteTable.Routes;
            var c1PageRoute = routes["c1 page route"];

            routes.Remove(c1PageRoute);

            if (configuration.RouteRegistrator != null)
            {
                configuration.RouteRegistrator(routes);
            }

            routes.Add("default mvc route", new DefaultCatchAllRoute());

            routes.Add(c1PageRoute);
        }