public ContentItem CopyTo(ContentItem destination) { AbstractDirectory d = AbstractDirectory.EnsureDirectory(destination); string to = Combine(d.Url, Name); if (FileSystem.FileExists(to)) { throw new NameOccupiedException(this, d); } FileSystem.CreateDirectory(to); Directory copy = new Directory(FileSystem.GetDirectory(to), d); copy.Set(FileSystem); foreach (File f in GetFiles()) { f.CopyTo(copy); } foreach (Directory childDir in GetDirectories()) { childDir.CopyTo(copy); } return(copy); }
public virtual IList <Directory> GetDirectories() { try { List <Directory> directories = new List <Directory>(); foreach (DirectoryData dir in FileSystem.GetDirectories(Url)) { var node = new Directory(dir, this); node.Set(FileSystem); directories.Add(node); } directories.Sort(new TitleComparer <Directory>()); return(directories); } catch (DirectoryNotFoundException ex) { Trace.TraceWarning(ex.ToString()); return(new List <Directory>()); } }
public ContentItem CopyTo(ContentItem destination) { AbstractDirectory d = AbstractDirectory.EnsureDirectory(destination); string to = Combine(d.Url, Name); if (FileSystem.FileExists(to)) throw new NameOccupiedException(this, d); FileSystem.CreateDirectory(to); Directory copy = new Directory(FileSystem.GetDirectory(to), d); copy.Set(FileSystem); foreach (File f in GetFiles()) f.CopyTo(copy); foreach (Directory childDir in GetDirectories()) childDir.CopyTo(copy); return copy; }
protected override void OnInit(EventArgs e) { FS = Engine.Resolve<IFileSystem>(); Register.JQueryUi(Page); var selected = Selection.SelectedItem; if (IsPostBack && !string.IsNullOrEmpty(inputFile.PostedFile.FileName)) { string uploadFolder = Request["inputLocation"]; if(!IsAvailable(uploadFolder)) throw new N2Exception("Cannot upload to " + Server.HtmlEncode(uploadFolder)); string fileName = System.IO.Path.GetFileName(inputFile.PostedFile.FileName); string filePath = Url.Combine(uploadFolder, fileName); FS.WriteFile(filePath, inputFile.PostedFile.InputStream); ClientScript.RegisterStartupScript(typeof(Tree), "select", "updateOpenerWithUrlAndClose('" + ResolveUrl(filePath) + "');", true); } else if (Request["location"] == "files" || Request["location"] == "filesselection") { IHost host = Engine.Resolve<IHost>(); HierarchyNode<ContentItem> root = new HierarchyNode<ContentItem>(Engine.Persister.Get(host.DefaultSite.RootItemID)); var selectionTrail = new List<ContentItem>(); if (selected is AbstractNode) { selectionTrail = new List<ContentItem>(Find.EnumerateParents(selected, null, true)); } else { TrySelectingPrevious(ref selected, ref selectionTrail); } foreach (string uploadFolder in Engine.EditManager.UploadFolders) { var dd = FS.GetDirectory(uploadFolder); var dir = new Directory(dd, root.Current); dir.Set(FS); var node = CreateDirectoryNode(FS, dir, root, selectionTrail); root.Children.Add(node); } AddSiteFilesNodes(root, host.DefaultSite, selectionTrail); foreach (var site in host.Sites) { AddSiteFilesNodes(root, site, selectionTrail); } siteTreeView.Nodes = root; siteTreeView.SelectedItem = selected; } else { var filter = Engine.EditManager.GetEditorFilter(Page.User); siteTreeView.Filter = filter; siteTreeView.RootNode = Engine.Resolve<Navigator>().Navigate(Request["root"] ?? "/"); siteTreeView.SelectedItem = selected; } siteTreeView.DataBind(); base.OnInit(e); }
private void AddSiteFilesNodes(HierarchyNode<ContentItem> parent, Site site, List<ContentItem> selectionTrail) { var siteNode = Engine.Persister.Get(site.StartPageID); HierarchyNode<ContentItem> node = null; foreach (DirectoryData dd in Engine.Resolve<IContentAdapterProvider>() .ResolveAdapter<NodeAdapter>(siteNode) .GetUploadDirectories(site)) { if(node == null) node = new HierarchyNode<ContentItem>(siteNode); var dir = new Directory(dd, parent.Current); dir.Set(FS); var directoryNode = CreateDirectoryNode(FS, dir, node, selectionTrail); node.Children.Add(directoryNode); } if (node != null) parent.Children.Add(node); }
private Directory CreateDirectory(FolderPair pair) { var dd = fs.GetDirectory(pair.FolderPath); var parent = persister.Get(pair.ParentID); var dir = new Directory(dd, parent); dir.Set(fs); dir.Title = pair.Path.Substring(pair.ParentPath.Length).Trim('/'); dir.Name = dir.Title; return dir; }
internal static Items.Directory New(DirectoryData dir, ContentItem parent, IFileSystem fs, ImageSizeCache sizes) { var node = new Directory(dir, parent); node.Set(fs); node.Set(sizes); return node; }