public ActionResult Index(TreePickerRenderModel model) { if (model != null && model.SelectedValue != null && !model.SelectedValue.Value.IsNullValueOrEmpty() && string.IsNullOrWhiteSpace(model.SelectedText)) { model.SelectedText = "Unknown"; var treeMetaData = _requestContext.RegisteredComponents .TreeControllers .Where(x => x.Metadata.Id == model.TreeControllerId) .SingleOrDefault(); //TreeVirtualRootId is obsolete, but if it is still used, we'll use the legacy way of checking for the node name. if (treeMetaData != null && model.SelectedValue.Value.Value == model.TreeVirtualRootId.Value) { model.SelectedText = treeMetaData.Metadata.TreeTitle; } else { var id = model.SelectedValue.Value; if (id.ProviderGroupRoot == new Uri("security://")) { var member = _requestContext.Application.Security.Members.GetById(id); model.SelectedText = member.Username; } else { using (var uow = _requestContext.Application.Hive.OpenReader <IContentStore>()) { var entity = uow.Repositories.Get <TypedEntity>(model.SelectedValue.Value); if (entity != null) { var nameAttr = entity.GetAttributeValueAsString(NodeNameAttributeDefinition.AliasValue, "Name"); // TODO: Can't guarantee attribute is "name"?) if (!string.IsNullOrEmpty(nameAttr)) { model.SelectedText = Server.UrlEncode(nameAttr).Replace("+", "%20"); } else if (model.SelectedValue.Value.IsSystem()) { //if the name is null, and the id is IsSystem, then we are going to happily assume that the //node should be the root and will display the tree's metadata title. model.SelectedText = treeMetaData.Metadata.TreeTitle; } } } } } } return(PartialView("TreePickerPartial", model)); }
public JsonResult GetPicker(TreePickerRenderModel model) { try { var htmlHelper = this.GetHtmlHelper(this.ControllerContext.RequestContext); var markup = htmlHelper.Action("Index", "TreePicker", new { model }); return(Json(new { Success = true, Markup = markup.ToString() })); } catch (Exception ex) { return(Json(new { Success = false, Exception = ex.Message })); } }
public ActionResult Index(TreePickerRenderModel model) { if (model != null && model.SelectedValue != null && !model.SelectedValue.Value.IsNullValueOrEmpty() && string.IsNullOrWhiteSpace(model.SelectedText)) { model.SelectedText = "Unknown"; var treeMetaData = _requestContext.RegisteredComponents .TreeControllers .Where(x => x.Metadata.Id == model.TreeControllerId) .SingleOrDefault(); if (treeMetaData != null && model.SelectedValue.Value.Value == model.TreeVirtualRootId.Value) { model.SelectedText = treeMetaData.Metadata.TreeTitle; } else { var hive = _requestContext.Application.Hive.GetReader <IContentStore>(model.SelectedValue.Value.ToUri()); if (hive != null) { using (var uow = hive.CreateReadonly()) { var entity = uow.Repositories.Get <TypedEntity>(model.SelectedValue.Value); if (entity != null) { var nameAttr = entity.GetAttributeValueAsString(NodeNameAttributeDefinition.AliasValue, "Name"); // TODO: Can't guarantee attribute is "name"?) if (!string.IsNullOrEmpty(nameAttr)) { model.SelectedText = Server.UrlEncode(nameAttr).Replace("+", "%20"); } } } } } } return(PartialView("TreePickerPartial", model)); }
/// <summary> /// Renders a Tree Picker for the given expression. /// </summary> /// <typeparam name="TModel">The type of the model.</typeparam> /// <typeparam name="TProperty">The type of the property.</typeparam> /// <param name="html">The HTML.</param> /// <param name="expression">The expression.</param> /// <param name="treePickerRenderModel">The tree picker render model.</param> /// <returns></returns> public static IHtmlString TreePickerFor <TModel, TProperty>(this HtmlHelper <TModel> html, Expression <Func <TModel, TProperty> > expression, TreePickerRenderModel treePickerRenderModel) { var modelMetadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData); treePickerRenderModel.Id = html.IdFor(expression); treePickerRenderModel.Name = html.NameFor(expression); treePickerRenderModel.SelectedValue = (HiveId)modelMetadata.Model; return(html.Action("Index", "TreePicker", new { area = "umbraco", model = treePickerRenderModel })); }
/// <summary> /// Renders a Tree Picker. /// </summary> /// <param name="html">The HTML.</param> /// <param name="treePickerRenderModel">The tree picker render model.</param> /// <returns></returns> public static IHtmlString TreePicker(this HtmlHelper html, TreePickerRenderModel treePickerRenderModel) { return(html.Action("Index", "TreePicker", new { area = "umbraco", model = treePickerRenderModel })); }