diff --git a/README.md b/README.md index 3f29f79..9052e46 100644 --- a/README.md +++ b/README.md @@ -247,6 +247,10 @@ directory listing: * `DirectorySort`: A string specifying how to sort files in automatically generated directory listings. Must be one of "Name", "Size" or "Time" (default value "Name"). +* `DirectorySubdirsFirst` (boolean): if true, list subdirectories of + the directory being listed before files. Subdirs and files will be + sorted within their respective categories according to + `DirectorySort` (default value false). * `DirectoryReverse` (boolean): if true, automatically generated directory listings will list files in descending order of whatever `DirectorySort` is set to (default value false). @@ -373,6 +377,7 @@ other settings in `.molly` files will be ignored: * `DefaultLang` * `DefaultEncoding` * `DirectorySort` +* `DirectorySubdirsFirst` * `DirectoryReverse` * `DirectoryTitles` * `GeminiExt` diff --git a/config.go b/config.go index a34598b..8c42acc 100644 --- a/config.go +++ b/config.go @@ -29,7 +29,7 @@ type Config struct { SCGIPaths map[string]string CertificateZones map[string][]string DirectorySort string - DirectoriesFirst bool + DirectorySubdirsFirst bool DirectoryReverse bool DirectoryTitles bool } @@ -43,7 +43,7 @@ type MollyFile struct { DefaultLang string DefaultEncoding string DirectorySort string - DirectoriesFirst bool + DirectorySubdirsFirst bool DirectoryReverse bool DirectoryTitles bool } @@ -69,7 +69,7 @@ func getConfig(filename string) (Config, error) { config.CGIPaths = make([]string, 0) config.SCGIPaths = make(map[string]string) config.DirectorySort = "Name" - config.DirectoriesFirst = false + config.DirectorySubdirsFirst = false // Return defaults if no filename given if filename == "" { @@ -147,7 +147,7 @@ func parseMollyFiles(path string, config *Config, errorLog *log.Logger) { mollyFile.DefaultLang = config.DefaultLang mollyFile.DefaultEncoding = config.DefaultEncoding mollyFile.DirectorySort = config.DirectorySort - mollyFile.DirectoriesFirst = config.DirectoriesFirst + mollyFile.DirectorySubdirsFirst = config.DirectorySubdirsFirst mollyFile.DirectoryReverse = config.DirectoryReverse mollyFile.DirectoryTitles = config.DirectoryTitles // Build list of directories to check @@ -186,7 +186,7 @@ func parseMollyFiles(path string, config *Config, errorLog *log.Logger) { config.DefaultLang = mollyFile.DefaultLang config.DefaultEncoding = mollyFile.DefaultEncoding config.DirectorySort = mollyFile.DirectorySort - config.DirectoriesFirst = mollyFile.DirectoriesFirst + config.DirectorySubdirsFirst = mollyFile.DirectorySubdirsFirst config.DirectoryReverse = mollyFile.DirectoryReverse config.DirectoryTitles = mollyFile.DirectoryTitles for key, value := range mollyFile.TempRedirects { diff --git a/dirlist.go b/dirlist.go index 82adf7d..463c2ac 100644 --- a/dirlist.go +++ b/dirlist.go @@ -42,7 +42,7 @@ func generateDirectoryListing(URL *url.URL, path string, config Config) (string, i, j = j, i } if config.DirectorySort == "Name" { - if config.DirectoriesFirst { + if config.DirectorySubdirsFirst { if files[i].IsDir() { if files[j].IsDir() { return files[i].Name() < files[j].Name() @@ -58,7 +58,7 @@ func generateDirectoryListing(URL *url.URL, path string, config Config) (string, } return files[i].Name() < files[j].Name() } else if config.DirectorySort == "Size" { - if config.DirectoriesFirst { + if config.DirectorySubdirsFirst { if files[i].IsDir() { if files[j].IsDir() { return files[i].Size() < files[j].Size() @@ -74,7 +74,7 @@ func generateDirectoryListing(URL *url.URL, path string, config Config) (string, } return files[i].Size() < files[j].Size() } else if config.DirectorySort == "Time" { - if config.DirectoriesFirst { + if config.DirectorySubdirsFirst { if files[i].IsDir() { if files[j].IsDir() { return files[i].ModTime().Before(files[j].ModTime()) diff --git a/example.conf b/example.conf index d9de819..c37104f 100644 --- a/example.conf +++ b/example.conf @@ -15,7 +15,7 @@ ## Directory listing # #DirectorySort = "Time" -#DirectoriesFirst = false +#DirectorySubdirsFirst = false #DirectoryReverse = true #DirectoryTitles = true #