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");
     }
 }
Пример #2
0
        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);
            }
        }
Пример #5
0
        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 });
        }
Пример #9
0
        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
            }));
        }
Пример #10
0
        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;
        }
Пример #11
0
        /// <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);
        }
Пример #12
0
        /// <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);
        }
Пример #13
0
 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;
 }