Exemplo n.º 1
0
        protected override bool CanExecute(ItemTreeViewItem item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            var path = item.GetPath();

            if (string.Compare(path, "/sitecore/media library", StringComparison.InvariantCultureIgnoreCase) == 0)
            {
                return(true);
            }

            if (path.StartsWith("/sitecore/media library/", StringComparison.InvariantCultureIgnoreCase))
            {
                return(true);
            }

            return(false);
        }
        private static void Drop([NotNull] object sender, [NotNull] ItemTreeViewItem item, [NotNull] DragEventArgs args)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(item, nameof(item));
            Debug.ArgumentNotNull(args, nameof(args));

            if (!args.Data.GetDataPresent(@"CF_VSSTGPROJECTITEMS"))
            {
                return;
            }

            var fileName = args.Data.GetData(@"Text") as string ?? string.Empty;

            try
            {
                if (!File.Exists(fileName))
                {
                    return;
                }
            }
            catch
            {
                return;
            }

            var fileItemHandler = FileItemManager.GetFileItemHandler(fileName);

            if (fileItemHandler == null)
            {
                return;
            }

            Project project          = null;
            string  relativeFileName = null;

            foreach (var proj in ProjectManager.Projects)
            {
                relativeFileName = proj.GetRelativeFileName(fileName);
                if (relativeFileName == fileName)
                {
                    continue;
                }

                if (proj.Site != item.ItemUri.Site)
                {
                    continue;
                }

                project = proj;
                break;
            }

            if (project == null)
            {
                return;
            }

            var projectItem = project.GetProjectItem(relativeFileName) as ProjectFileItem;

            if (projectItem != null)
            {
                if (projectItem.Items.Any())
                {
                    return;
                }
            }

            projectItem = ProjectFileItem.Load(project, fileName);
            project.Add(projectItem);
            project.Save();

            var itemPath = Path.Combine(item.GetPath(), Path.GetFileNameWithoutExtension(fileName) ?? string.Empty);

            fileItemHandler.Handle(item.ItemUri.DatabaseName, projectItem, itemPath, (s, e) => item.Refresh());
        }