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