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