private int GetNodeIdFromPath(string startNode)
        {
            if (startNode == null || string.IsNullOrWhiteSpace(startNode))
            {
                return(-1);
            }

            var requestContext = new HttpContext(new HttpRequest("", "http://localhost/", ""), new HttpResponse(null));
            var context        = UmbracoContext.EnsureContext(new HttpContextWrapper(requestContext), ApplicationContext.Current);

            var helper = new Umbraco.Web.UmbracoHelper(Umbraco.Web.UmbracoContext.Current);
            IEnumerable <IPublishedContent> rootItems;

            if (_targetType.Implements <IMediaPicker>())
            {
                rootItems = helper.TypedMediaAtRoot();
            }
            else if (_targetType.Implements <IDocumentPicker>())
            {
                rootItems = helper.TypedContentAtRoot();
            }
            else //TODO proper support for members?
            {
                //TODO this is a bit dodge and won't work for members. How do start nodes even work for member pickers?
                rootItems = helper.TypedContentAtRoot().Union(helper.TypedMediaAtRoot());
            }

            var pieces = _startNodeInput.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
            int i      = 0;

            if (pieces.Length == 0)
            {
                return(-1);
            }
            IPublishedContent current = rootItems.FirstOrDefault(x => x.Name == pieces[i]);

            i++;
            while (current != null && i < pieces.Length)
            {
                current = current.Children.FirstOrDefault(x => x.Name == pieces[i]);
                i++;
            }
            if (current == null)
            {
                return(-1);
            }
            else
            {
                return(current.Id);
            }
        }
Beispiel #2
0
        public static List <IMedia> GetDownloads(string key, string t)
        {
            List <IMedia> list = new List <IMedia>();

            if (!string.IsNullOrWhiteSpace(t) && !string.IsNullOrWhiteSpace(key))
            {
                UmbracoHelper umbracoHelper = new Umbraco.Web.UmbracoHelper(Umbraco.Web.UmbracoContext.Current);
                IMediaService mediaService  = ApplicationContext.Current.Services.MediaService;
                IMedia        media         = null;

                // - find download item
                foreach (var rm in umbracoHelper.TypedMediaAtRoot())
                {
                    foreach (IMedia m in mediaService.GetDescendants(rm.Id))
                    {
                        if (m.HasProperty("downloadKey") && m.GetValue <string>("downloadKey").Equals(key, System.StringComparison.InvariantCultureIgnoreCase))
                        {
                            // - found the matching media/folder
                            media = m;
                            var children = mediaService.GetDescendants(m.Id);
                            if (children.Count() > 0)
                            {
                                // - has children (= build list)
                                foreach (IMedia child in children)
                                {
                                    list.Add(child);
                                }
                            }
                            else
                            {
                                // - only add the single item
                                list.Add(m);
                            }
                            break;
                        }
                    }
                    if (media != null)
                    {
                        break;
                    }
                }
            }

            return(list);
        }
        private int GetNodeIdFromPath(string startNode)
        {
            if (startNode == null || string.IsNullOrWhiteSpace(startNode))
            {
                return -1;
            }

            var requestContext = new HttpContext(new HttpRequest("", "http://localhost/", ""), new HttpResponse(null));
            var context = UmbracoContext.EnsureContext(new HttpContextWrapper(requestContext), ApplicationContext.Current);

            var helper = new Umbraco.Web.UmbracoHelper(Umbraco.Web.UmbracoContext.Current);
            IEnumerable<IPublishedContent> rootItems;

            if (_targetType.Implements<IMediaPicker>())
            {
                rootItems = helper.TypedMediaAtRoot();
            }
            else if (_targetType.Implements<IDocumentPicker>())
            {
                rootItems = helper.TypedContentAtRoot();
            }
            else //TODO proper support for members?
            {
                //TODO this is a bit dodge and won't work for members. How do start nodes even work for member pickers?
                rootItems = helper.TypedContentAtRoot().Union(helper.TypedMediaAtRoot());
            }

            var pieces = _startNodeInput.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
            int i = 0;
            if (pieces.Length == 0)
            {
                return -1;
            }
            IPublishedContent current = rootItems.FirstOrDefault(x => x.Name == pieces[i]);
            i++;
            while (current != null && i < pieces.Length)
            {
                current = current.Children.FirstOrDefault(x => x.Name == pieces[i]);
                i++;
            }
            if (current == null)
            {
                return -1;
            }
            else
            {
                return current.Id;
            }
        }