private static void AuthorizeAccess(global::umbraco.cms.businesslogic.media.Media mediaItem, User currentUser) { if (("," + mediaItem.Path + ",").Contains("," + currentUser.StartMediaId + ",") == false) { throw new UnauthorizedAccessException("You do not have access to this Media node"); } }
public static string Delete(string nodeIds) { var currentUser = GetCurrentUser(); var nodeIdParts = nodeIds.Split(','); foreach (var nodeIdPart in nodeIdParts.Where(x => string.IsNullOrEmpty(x) == false)) { int nodeId; if (Int32.TryParse(nodeIdPart, out nodeId) == false) { continue; } var node = new global::umbraco.cms.businesslogic.media.Media(nodeId); AuthorizeAccess(node, currentUser); node.delete(("," + node.Path + ",").Contains(",-21,")); } return(new JavaScriptSerializer().Serialize(new { success = true })); }
void MediaBeforeSave(global::umbraco.cms.businesslogic.media.Media sender, global::umbraco.cms.businesslogic.SaveEventArgs e) { if (UmbracoConfig.For.UmbracoSettings().Content.ImageAutoFillProperties.Any()) { var property = sender.GenericProperties.FirstOrDefault(x => x.PropertyType.DataTypeDefinition.DataType.Id == new Guid(Constants.PropertyEditors.UploadField)); if (property == null) { return; } FillProperties(sender, property); } }
void MediaBeforeSave(global::umbraco.cms.businesslogic.media.Media sender, global::umbraco.cms.businesslogic.SaveEventArgs e) { if (UmbracoSettings.ImageAutoFillImageProperties != null) { var property = sender.GenericProperties.FirstOrDefault(x => x.PropertyType.DataTypeDefinition.DataType.Id == new Guid("5032a6e6-69e3-491d-bb28-cd31cd11086c")); if (property == null) { return; } FillProperties(sender, property); } }
public static string GetChildren(int parentId) { var parentMedia = new global::umbraco.cms.businesslogic.media.Media(parentId); var currentUser = User.GetCurrent(); var data = new List <object>(); // Check user is logged in if (currentUser == null) { throw new UnauthorizedAccessException("You must be logged in to use this service"); } // Check user is allowed to access selected media item if (!("," + parentMedia.Path + ",").Contains("," + currentUser.StartMediaId + ",")) { throw new UnauthorizedAccessException("You do not have access to this Media node"); } // Get children and filter //TODO: Only fetch files, not containers //TODO: Cache responses to speed up susequent searches foreach (var child in parentMedia.Children) { var fileProp = child.getProperty("umbracoFile") ?? child.GenericProperties.FirstOrDefault(x => x.PropertyType.DataTypeDefinition.DataType.Id == new Guid("5032a6e6-69e3-491d-bb28-cd31cd11086c")); var fileUrl = fileProp != null?fileProp.Value.ToString() : ""; var thumbUrl = ThumbnailProvidersResolver.Current.GetThumbnailUrl(fileUrl); var item = new { Id = child.Id, Path = child.Path, Name = child.Text, Tags = string.Join(",", Tag.GetTags(child.Id).Select(x => x.TagCaption)), MediaTypeAlias = child.ContentType.Alias, EditUrl = string.Format("editMedia.aspx?id={0}", child.Id), FileUrl = fileUrl, ThumbnailUrl = !string.IsNullOrEmpty(thumbUrl) ? thumbUrl : IOHelper.ResolveUrl(SystemDirectories.Umbraco + "/images/thumbnails/" + child.ContentType.Thumbnail) }; data.Add(item); } return(new JavaScriptSerializer().Serialize(data)); }
public static string GetChildren(int parentId) { var parentMedia = new global::umbraco.cms.businesslogic.media.Media(parentId); var currentUser = User.GetCurrent(); var data = new List<object>(); // Check user is logged in if (currentUser == null) throw new UnauthorizedAccessException("You must be logged in to use this service"); // Check user is allowed to access selected media item if(!("," + parentMedia.Path + ",").Contains("," + currentUser.StartMediaId + ",")) throw new UnauthorizedAccessException("You do not have access to this Media node"); // Get children and filter //TODO: Only fetch files, not containers //TODO: Cache responses to speed up susequent searches foreach (var child in parentMedia.Children) { var fileProp = child.getProperty("umbracoFile") ?? child.GenericProperties.FirstOrDefault(x => x.PropertyType.DataTypeDefinition.DataType.Id == new Guid("5032a6e6-69e3-491d-bb28-cd31cd11086c")); var fileUrl = fileProp != null ? fileProp.Value.ToString() : ""; var thumbUrl = ThumbnailProvidersResolver.Current.GetThumbnailUrl(fileUrl); var item = new { Id = child.Id, Path = child.Path, Name = child.Text, Tags = string.Join(",", Tag.GetTags(child.Id).Select(x => x.TagCaption)), MediaTypeAlias = child.ContentType.Alias, EditUrl = string.Format("editMedia.aspx?id={0}", child.Id), FileUrl = fileUrl, ThumbnailUrl = !string.IsNullOrEmpty(thumbUrl) ? thumbUrl : IOHelper.ResolveUrl(SystemDirectories.Umbraco + "/images/thumbnails/" + child.ContentType.Thumbnail) }; data.Add(item); } return new JavaScriptSerializer().Serialize(data); }
public static string Delete(string nodeIds) { var nodeIdParts = nodeIds.Split(','); foreach (var nodeIdPart in nodeIdParts.Where(x => !string.IsNullOrEmpty(x))) { var nodeId = 0; if (!Int32.TryParse(nodeIdPart, out nodeId)) continue; var node = new global::umbraco.cms.businesslogic.media.Media(nodeId); node.delete(("," + node.Path + ",").Contains(",-21,")); } return new JavaScriptSerializer().Serialize(new { success = true }); }
public static string Delete(string nodeIds) { var currentUser = GetCurrentUser(); var nodeIdParts = nodeIds.Split(','); foreach (var nodeIdPart in nodeIdParts.Where(x => string.IsNullOrEmpty(x) == false)) { int nodeId; if (Int32.TryParse(nodeIdPart, out nodeId) == false) continue; var node = new global::umbraco.cms.businesslogic.media.Media(nodeId); AuthorizeAccess(node, currentUser); node.delete(("," + node.Path + ",").Contains(",-21,")); } return new JavaScriptSerializer().Serialize(new { success = true }); }
public static string Delete(string nodeIds) { var nodeIdParts = nodeIds.Split(','); foreach (var nodeIdPart in nodeIdParts.Where(x => !string.IsNullOrEmpty(x))) { var nodeId = 0; if (!Int32.TryParse(nodeIdPart, out nodeId)) { continue; } var node = new global::umbraco.cms.businesslogic.media.Media(nodeId); node.delete(("," + node.Path + ",").Contains(",-21,")); } return(new JavaScriptSerializer().Serialize(new { success = true })); }
public static JSONObject GetValues(string referenceId, string itemId) { var data = GetImageGalleryData(referenceId); var result = new JSONObject(); var item = data.Items.Where(i => i.Id == itemId).FirstOrDefault(); bool isRoot = item== null || item.Id == HttpContext.Current.Request.QueryString["itemid"]; result.AddValue("isRoot", isRoot); if (isRoot) { result.AddValue("canMoveUp", false); result.AddValue("canMoveDown", false); result.AddValue("headline", ""); result.AddValue("content", ""); } else { var index = data.Items.IndexOf(item); result.AddValue("canMoveUp", index > 0); result.AddValue("canMoveDown", index < data.Items.Count - 1); result.AddValue("name", item.Text); result.AddValue("headline", item.Headline); result.AddValue("content", item.Content); if (!string.IsNullOrEmpty(item.ImageId)) { var media = new global::umbraco.cms.businesslogic.media.Media(Convert.ToInt32(item.ImageId)); { result.AddValue("imageId", item.ImageId); result.AddValue("imageName", media.Text); result.AddValue("imageUrl", (string)media.getProperty("umbracoFile").Value); } } } return result; }
/// <summary> /// Create the native .net child controls for this control /// </summary> protected override void CreateChildControls() { // Create the panel surround Panel = new Panel { ID = "FolderBrowser", CssClass = "umbFolderBrowser" }; Panel.Attributes.Add("data-parentid", ParentId.ToString()); var sb = new StringBuilder(); // Create the breadcrumb var breadCrumb = new List<global::umbraco.cms.businesslogic.media.Media> { ParentNode }; var parent = ParentNode; while (parent.Id != -1) { parent = new global::umbraco.cms.businesslogic.media.Media(parent.ParentId); breadCrumb.Add(parent); } breadCrumb.Reverse(); sb.Append("<ul class='breadcrumb'><li><strong>You are here:</strong></li>"); foreach (var media in breadCrumb) { if (media.Id == ParentId) if (media.Id == -1) sb.AppendFormat("<li>Media</li>"); else sb.AppendFormat("<li>{0}</li>", media.Text); else if (media.Id == -1) sb.AppendFormat("<li><a href='dashboard.aspx?app=media'>Media</a></li>"); else sb.AppendFormat("<li><a href='editMedia.aspx?id={1}'>{0}</a></li>", media.Text, media.Id); } sb.Append("</ul>"); // Path for tree refresh Panel.Attributes.Add("data-nodepath", ParentNode.Path); // Create size changer sb.Append("<div class='thumb-sizer'>" + "<input type='radio' name='thumb_size' id='thumb_size_small' value='small' data-bind='checked: thumbSize' />" + "<label for='thumb_size_small'><img src='images/thumbs_smll.png' alt='Small thumbnails' /></label>" + "<input type='radio' name='thumb_size' id='thumb_size_medium' value='medium' data-bind='checked: thumbSize' />" + "<label for='thumb_size_medium'><img src='images/thumbs_med.png' alt='Medium thumbnails' /></label>" + "<input type='radio' name='thumb_size' id='thumb_size_large' value='large' data-bind='checked: thumbSize' />" + "<label for='thumb_size_large'><img src='images/thumbs_lrg.png' alt='Large thumbnails' /></label>" + "</div>"); // Create the filter input sb.Append("<div class='filter'>Filter: <input type='text' data-bind=\"value: filterTerm, valueUpdate: 'afterkeydown'\" id='filterTerm'/></div>"); // Create throbber to display whilst loading items sb.Append("<img src='images/throbber.gif' alt='' class='throbber' data-bind=\"visible: filtered().length == 0\" />"); // Create thumbnails container sb.Append("<ul class='items' data-bind='foreach: filtered'>" + "<li data-bind=\"attr: { 'data-id': Id, 'data-order': $index() }, css: { selected: selected() }, event: { mousedown: toggleSelected, contextmenu: toggleSelected, dblclick: edit }\"><div><span class='img'><img data-bind='attr: { src: ThumbnailUrl }' /></span><span data-bind='text: Name'></span></div></li>" + "</ul>"); Panel.Controls.Add(new LiteralControl(sb.ToString())); Controls.Add(Panel); Page.ClientScript.RegisterStartupScript(typeof(FolderBrowser), "RegisterFolderBrowsers", string.Format("$(function () {{ $(\".umbFolderBrowser\").folderBrowser({{ umbracoPath : '{0}', basePath : '{1}' }}); " + "$(\".umbFolderBrowser #filterTerm\").keypress(function(event) {{ return event.keyCode != 13; }});}});", IOHelper.ResolveUrl(SystemDirectories.Umbraco), IOHelper.ResolveUrl(SystemDirectories.Base)), true); }
/// <summary> /// Create the native .net child controls for this control /// </summary> protected override void CreateChildControls() { // Create the panel surround Panel = new Panel { ID = "FolderBrowser", CssClass = "umbFolderBrowser" }; Panel.Attributes.Add("data-parentid", ParentId.ToString()); var sb = new StringBuilder(); // Create the breadcrumb var breadCrumb = new List <global::umbraco.cms.businesslogic.media.Media> { ParentNode }; var parent = ParentNode; while (parent.Id != -1) { parent = new global::umbraco.cms.businesslogic.media.Media(parent.ParentId); breadCrumb.Add(parent); } breadCrumb.Reverse(); sb.Append("<ul class='breadcrumb'><li><strong>You are here:</strong></li>"); foreach (var media in breadCrumb) { if (media.Id == ParentId) { if (media.Id == -1) { sb.AppendFormat("<li>Media</li>"); } else { sb.AppendFormat("<li>{0}</li>", media.Text); } } else if (media.Id == -1) { sb.AppendFormat("<li><a href='dashboard.aspx?app=media'>Media</a></li>"); } else { sb.AppendFormat("<li><a href='editMedia.aspx?id={1}'>{0}</a></li>", media.Text, media.Id); } } sb.Append("</ul>"); // Path for tree refresh Panel.Attributes.Add("data-nodepath", ParentNode.Path); // Create size changer sb.Append("<div class='thumb-sizer'>" + "<input type='radio' name='thumb_size' id='thumb_size_small' value='small' data-bind='checked: thumbSize' />" + "<label for='thumb_size_small'><img src='images/thumbs_smll.png' alt='Small thumbnails' /></label>" + "<input type='radio' name='thumb_size' id='thumb_size_medium' value='medium' data-bind='checked: thumbSize' />" + "<label for='thumb_size_medium'><img src='images/thumbs_med.png' alt='Medium thumbnails' /></label>" + "<input type='radio' name='thumb_size' id='thumb_size_large' value='large' data-bind='checked: thumbSize' />" + "<label for='thumb_size_large'><img src='images/thumbs_lrg.png' alt='Large thumbnails' /></label>" + "</div>"); // Create the filter input sb.Append("<div class='filter'>Filter: <input type='text' data-bind=\"value: filterTerm, valueUpdate: 'afterkeydown'\" id='filterTerm'/></div>"); // Create throbber to display whilst loading items sb.Append("<img src='images/throbber.gif' alt='' class='throbber' data-bind=\"visible: filtered().length == 0\" />"); // Create thumbnails container sb.Append("<ul class='items' data-bind='foreach: filtered'>" + "<li data-bind=\"attr: { 'data-id': Id, 'data-order': $index() }, css: { selected: selected() }, event: { mousedown: toggleSelected, contextmenu: toggleSelected, dblclick: edit }\"><div><span class='img'><img data-bind='attr: { src: ThumbnailUrl }' /></span><span data-bind='text: Name'></span></div></li>" + "</ul>"); Panel.Controls.Add(new LiteralControl(sb.ToString())); Controls.Add(Panel); Page.ClientScript.RegisterStartupScript(typeof(FolderBrowser), "RegisterFolderBrowsers", string.Format("$(function () {{ $(\".umbFolderBrowser\").folderBrowser({{ umbracoPath : '{0}', basePath : '{1}' }}); " + "$(\".umbFolderBrowser #filterTerm\").keypress(function(event) {{ return event.keyCode != 13; }});}});", IOHelper.ResolveUrl(SystemDirectories.Umbraco), IOHelper.ResolveUrl(SystemDirectories.Base)), true); }
public static JSONObject SetItemValue(string referenceId, string itemId, JSONObject value) { var result = new JSONObject(); var data = GetImageGalleryData(referenceId); var item = data.Items.Where(i => i.Id == itemId).FirstOrDefault(); foreach (var key in value.Keys) { switch (key) { case "name": item.Text = (string) value[key]; break; case "headline": item.Headline = (string) value[key]; break; case "content": item.Content = (string) value[key]; break; case "imageId": item.ImageId = (string) value[key]; if (!string.IsNullOrEmpty(item.ImageId)) { var media = new global::umbraco.cms.businesslogic.media.Media(Convert.ToInt32(item.ImageId)); { result.AddValue("imageId", item.ImageId); result.AddValue("imageName", media.Text); result.AddValue("imageUrl", (string)media.getProperty("umbracoFile").Value); } } break; } } result.AddValue("value", data.ToJSON().ToString()); return result; }