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
         }));
     }
 }
Example #3
0
        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 }));
 }