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)); }
/// <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)); }
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()); }
/// <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)); }
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); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }