Пример #1
0
        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);
        }
Пример #2
0
 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>());
     }
 }
Пример #3
0
        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;
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
            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;
            }
Пример #7
0
 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;
 }