ExtractDirectoryName() public static method

Extracts the directory name from a path used in the Files Storage Providers.
public static ExtractDirectoryName ( string path ) : string
path string The path, for example '/folder/blah/'.
return string
Esempio n. 1
0
        private List <TreeElement> BuildImagesSubTree(IFilesStorageProviderV30 provider, string path)
        {
            IEnumerable <string> dirs;
            IEnumerable <string> files;

            if (chkImageAttachments.Checked)
            {
                // Load page attachments
                dirs  = Enumerable.Empty <string>();
                files = provider.ListPageAttachments(currentPage);
            }
            else
            {
                // Load files
                dirs  = provider.ListDirectories(path);
                files = provider.ListFiles(path);
            }

            List <TreeElement> result = new List <TreeElement>(100);

            foreach (string d in dirs)
            {
                TreeElement item = new TreeElement(d, Tools.ExtractDirectoryName(d),
                                                   BuildImagesSubTree(provider, d));
                // Do not display empty folders to reduce "noise"
                if (item.SubItems.Count > 0)
                {
                    result.Add(item);
                }
            }

            foreach (string f in files)
            {
                if (IsImage(f))
                {
                    string      name = provider.GetType().ToString() + "|" + f;
                    TreeElement item = new TreeElement(name,
                                                       @"<img src=""Thumb.aspx?Provider=" + provider.GetType().ToString() +
                                                       @"&amp;Size=Small&amp;File=" + Tools.UrlEncode(f) +
                                                       @"&amp;Page=" + (chkImageAttachments.Checked ? Tools.UrlEncode(currentPage.FullName) : "") +
                                                       @""" alt=""" + name + @""" /><span class=""imageinfo"">" + f.Substring(f.LastIndexOf("/") + 1) + "</span>",
                                                       "javascript:return SelectImage('" +
                                                       (chkImageAttachments.Checked ? "(" + Tools.UrlEncode(currentPage.FullName) + ")" : "") + "', '" + f.Replace("'", "\\\\\\'") + "', '" +
                                                       (chkImageAttachments.Checked ? currentPage.FullName : "") + "');");
                    result.Add(item);
                }
            }

            return(result);
        }
Esempio n. 2
0
        private List <TreeElement> BuildFilesSubTree(IFilesStorageProviderV30 provider, string path)
        {
            IEnumerable <string> dirs;
            IEnumerable <string> files;

            if (chkFilesAttachments.Checked)
            {
                // Load page attachments
                dirs  = Enumerable.Empty <string>();
                files = provider.ListPageAttachments(currentPage);
            }
            else
            {
                // Load files
                dirs  = provider.ListDirectories(path);
                files = provider.ListFiles(path);
            }

            List <TreeElement> result = new List <TreeElement>(100);

            foreach (string d in dirs)
            {
                TreeElement item = new TreeElement(d, Tools.ExtractDirectoryName(d),
                                                   BuildFilesSubTree(provider, d));
                // Do not display empty folders to reduce "noise"
                if (item.SubItems.Count > 0)
                {
                    result.Add(item);
                }
            }

            foreach (string f in files)
            {
                long        size = chkFilesAttachments.Checked ? provider.GetPageAttachmentDetails(currentPage, f).Size : provider.GetFileDetails(f).Size;
                TreeElement item = new TreeElement(f, f.Substring(f.LastIndexOf("/") + 1) + " (" + Tools.BytesToString(size) + ")",
                                                   "javascript:return SelectFile('" +
                                                   (chkFilesAttachments.Checked ? "(" + Tools.UrlEncode(currentPage.FullName) + ")" : "") + "', '" + f.Replace("'", "\\\\\\'") + "');");
                result.Add(item);
            }

            return(result);
        }
Esempio n. 3
0
        /// <summary>
        /// Tries to enter a directory.
        /// </summary>
        /// <param name="provider">The provider.</param>
        /// <param name="directory">The full path of the directory.</param>
        public void TryEnterDirectory(string provider, string directory)
        {
            if (string.IsNullOrEmpty(directory) || string.IsNullOrEmpty(provider))
            {
                return;
            }

            if (!directory.StartsWith("/"))
            {
                directory = "/" + directory;
            }
            if (!directory.EndsWith("/"))
            {
                directory += "/";
            }
            directory = directory.Replace("//", "/");

            LoadProviders();

            IFilesStorageProviderV40 realProvider = Collectors.CollectorsBox.FilesProviderCollector.GetProvider(provider, currentWiki);

            if (realProvider == null)
            {
                return;
            }
            this.provider = realProvider;

            // Detect existence
            try {
                realProvider.ListDirectories(directory);
            }
            catch (ArgumentException) {
                return;
            }

            AuthChecker authChecker = new AuthChecker(Collectors.CollectorsBox.GetSettingsProvider(currentWiki));

            bool canListThisSubDir = authChecker.CheckActionForDirectory(realProvider, directory, Actions.ForDirectories.List,
                                                                         SessionFacade.GetCurrentUsername(), SessionFacade.GetCurrentGroupNames(currentWiki));

            if (!canListThisSubDir)
            {
                return;
            }

            lstProviders.SelectedIndex = -1;
            foreach (ListItem item in lstProviders.Items)
            {
                if (item.Value == provider)
                {
                    item.Selected = true;
                    break;
                }
            }
            //lstProviders_SelectedIndexChanged(this, null);

            string parent           = "/";
            string trimmedDirectory = directory.TrimEnd('/');

            if (trimmedDirectory.Length > 0)
            {
                int lastSlash = trimmedDirectory.LastIndexOf("/");
                if (lastSlash != -1)
                {
                    parent = "/" + trimmedDirectory.Substring(0, lastSlash) + "/";
                }
            }

            if (parent != directory)
            {
                CurrentDirectory = parent;
                EnterDirectory(Tools.ExtractDirectoryName(directory));
            }
        }