Exemple #1
0
        public static string AwesomeHeaders(this IFubuPage page, object model)
        {
            var type   = model.GetType();
            var result = new StringBuilder();
            var tags   = page.Tags(model);
            var sl     = page.Get <IServiceLocator>();

            tags.SetProfile(AwesomeConfiguration.TagProfile);
            var tr = new HtmlTag("tr");

            foreach (var prop in getProperties(type))
            {
                var p = new SingleProperty(prop, type);
                var elementRequest = new ElementRequest(model, p, sl);
                var accessRight    = page.Get <IFieldAccessService>().RightsFor(elementRequest);


                HtmlTag display = tags.LabelFor(elementRequest).Authorized(accessRight.Read);
                var     td      = new HtmlTag("th").Append(display);
                tr.Append(td);
            }
            tr.Append(new HtmlTag("th"));
            tr.Append(new HtmlTag("th"));
            result.Append(tr.ToString());

            return(result.ToString());
        }
        public static FormLineExpression <T> Show <T>(this IFubuPage <T> page, Expression <Func <T, object> > expression) where T : class
        {
            var tags        = page.Tags();
            var request     = tags.GetRequest(expression);
            var accessRight = page.Get <IFieldAccessService>().RightsFor(request);

            return(new FormLineExpression <T>(tags, tags.NewFieldLayout(), request).Access(accessRight));
        }
Exemple #3
0
        /// <summary>
        /// Renders a partial view for the view model
        /// </summary>
        /// <typeparam name="TViewModel">The type of the view model</typeparam>
        /// <param name="viewPage"></param>
        /// <param name="model"></param>
        /// <returns></returns>
        public static RenderPartialExpression <TViewModel> RenderPartialFor <TViewModel>(
            this IFubuPage viewPage, TViewModel model) where TViewModel : class
        {
            var renderer = viewPage.Get <IPartialRenderer>();

            return
                (new RenderPartialExpression <TViewModel>(model, viewPage, renderer, viewPage.Tags <TViewModel>(), viewPage.Get <IEndpointService>()).For(
                     model));
        }
Exemple #4
0
        public static string AwesomeFields(this IFubuPage page, object model)
        {
            var type   = model.GetType();
            var result = new StringBuilder();
            var tags   = page.Tags <AwesomeEditModel>();
            var sl     = page.Get <IServiceLocator>();

            tags.SetProfile(AwesomeConfiguration.TagProfile);

            foreach (var prop in getProperties(type))
            {
                var p = new SingleProperty(prop, type);
                var elementRequest = new ElementRequest(model, p, sl);
                var accessRight    = page.Get <IFieldAccessService>().RightsFor(elementRequest);

                var line = new FormLineExpression <AwesomeEditModel>(tags, tags.NewFieldLayout(), elementRequest)
                           .Access(accessRight)
                           .Editable(true);

                result.Append(line.ToString());
            }

            return(result.ToString());
        }
Exemple #5
0
        /// <summary>
        /// Renders a partial view for a sequence of items on the view model
        /// </summary>
        /// <typeparam name="TViewModel">The type of the view model</typeparam>
        /// <typeparam name="TPartialViewModel">The type of the items in the sequence</typeparam>
        /// <param name="viewPage"></param>
        /// <param name="expression">An expression that retrieves the sequence from the view model</param>
        /// <returns></returns>
        public static RenderPartialExpression <TViewModel> RenderPartialForEachOf
        <TViewModel, TPartialViewModel>(this IFubuPage <TViewModel> viewPage,
                                        Expression <Func <TViewModel, IEnumerable <TPartialViewModel> > > expression)
            where TViewModel : class
            where TPartialViewModel : class
        {
            var renderer = viewPage.Get <IPartialRenderer>();

            return
                (new RenderPartialExpression <TViewModel>(viewPage.Model, viewPage, renderer, viewPage.Tags(), viewPage.Get <IEndpointService>()).ForEachOf(
                     expression));
        }
Exemple #6
0
        public static RenderPartialExpression <TInputModel> PartialForEach <TInputModel, TPartialModel>(
            this IFubuPage <TInputModel> page, Expression <Func <TInputModel, IEnumerable <TPartialModel> > > listExpression)
            where TInputModel : class
            where TPartialModel : class
        {
            var expression = new RenderPartialExpression <TInputModel>(page.Model, page, page.Get <IPartialRenderer>(), page.Tags(), page.Get <IEndpointService>())
                             .ForEachOf(listExpression, page.ElementPrefix);

            SearchPartialView <TInputModel, TPartialModel>(page, expression);
            return(expression);
        }
Exemple #7
0
        /// <summary>
        /// Renders a partial view for an object from the view model
        /// </summary>
        /// <typeparam name="TViewModel">The type of the view model</typeparam>
        /// <typeparam name="TPartialViewModel">The type of property from the view model</typeparam>
        /// <param name="viewPage"></param>
        /// <param name="expression">An expression that retrieves the property value from the view model</param>
        /// <returns></returns>
        public static RenderPartialExpression <TViewModel> RenderPartialFor
        <TViewModel, TPartialViewModel>(
            this IFubuPage <TViewModel> viewPage, Expression <Func <TViewModel, TPartialViewModel> > expression)
            where TViewModel : class
            where TPartialViewModel : class
        {
            var      renderer     = viewPage.Get <IPartialRenderer>();
            Accessor accessor     = ReflectionHelper.GetAccessor(expression);
            var      partialModel = accessor.GetValue(viewPage.Model) as TPartialViewModel;

            return
                (new RenderPartialExpression <TViewModel>(viewPage.Model, viewPage, renderer, viewPage.Tags(), viewPage.Get <IEndpointService>()).For(
                     partialModel));
        }
Exemple #8
0
 /// <summary>
 ///   Builds a tag that displays the current value of a property on a given model
 /// </summary>
 /// <typeparam name = "T">The type of the given model</typeparam>
 /// <param name = "page">The view</param>
 /// <param name = "model">The model used to provide values for the tag</param>
 /// <param name = "expression">An expression that specifies a property on the provided model</param>
 /// <returns></returns>
 public static HtmlTag DisplayFor <T>(this IFubuPage page, T model, Expression <Func <T, object> > expression)
     where T : class
 {
     return(page.Tags(model).DisplayFor(expression));
 }
Exemple #9
0
 /// <summary>
 ///   Builds a tag that displays the name of a property on a model retrieved from the <see cref = "IFubuRequest" />
 /// </summary>
 /// <typeparam name = "T">The type to retrieve from the request</typeparam>
 /// <param name = "page">The view</param>
 /// <param name = "expression">An expression that specifies a property on the retrieved type instance</param>
 /// <returns></returns>
 public static HtmlTag LabelFor <T>(this IFubuPage page, Expression <Func <T, object> > expression) where T : class
 {
     return(page.Tags <T>().LabelFor(expression));
 }
Exemple #10
0
 /// <summary>
 ///   Builds a tag that accepts user input for a property of the page's view model
 /// </summary>
 /// <typeparam name = "T">The model type of the strongly typed view</typeparam>
 /// <param name = "page">The view</param>
 /// <param name = "expression">An expression that specifies a property on the model</param>
 /// <returns></returns>
 public static HtmlTag InputFor <T>(this IFubuPage <T> page, Expression <Func <T, object> > expression)
     where T : class
 {
     return(page.Tags().InputFor(expression));
 }