Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
caddy
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
caddy
Commits
94e3e7e5
Commit
94e3e7e5
authored
Dec 31, 2015
by
Matthew Holt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
browse: New default template
parent
b0397df7
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
264 additions
and
121 deletions
+264
-121
caddy/setup/browse.go
caddy/setup/browse.go
+218
-116
middleware/browse/browse.go
middleware/browse/browse.go
+46
-5
No files found.
caddy/setup/browse.go
View file @
94e3e7e5
This diff is collapsed.
Click to expand it.
middleware/browse/browse.go
View file @
94e3e7e5
...
...
@@ -6,6 +6,7 @@ import (
"bytes"
"encoding/json"
"errors"
"fmt"
"net/http"
"net/url"
"os"
...
...
@@ -36,7 +37,7 @@ type Config struct {
Template
*
template
.
Template
}
// A Listing is used to fill out a template.
// A Listing is
the context
used to fill out a template.
type
Listing
struct
{
// The name of the directory (the last element of the path)
Name
string
...
...
@@ -50,6 +51,12 @@ type Listing struct {
// The items (files and folders) in the path
Items
[]
FileInfo
// The number of directories in the listing
NumDirs
int
// The number of files (items that aren't directories) in the listing
NumFiles
int
// Which sorting order is used
Sort
string
...
...
@@ -62,6 +69,33 @@ type Listing struct {
middleware
.
Context
}
// LinkedPath returns l.Path where every element is a clickable
// link to the path up to that point so far.
func
(
l
Listing
)
LinkedPath
()
string
{
if
len
(
l
.
Path
)
==
0
{
return
""
}
// skip trailing slash
lpath
:=
l
.
Path
if
lpath
[
len
(
lpath
)
-
1
]
==
'/'
{
lpath
=
lpath
[
:
len
(
lpath
)
-
1
]
}
parts
:=
strings
.
Split
(
lpath
,
"/"
)
var
result
string
for
i
,
part
:=
range
parts
{
if
i
==
0
&&
part
==
""
{
// Leading slash (root)
result
+=
`<a href="/">/</a>`
continue
}
result
+=
fmt
.
Sprintf
(
`<a href="%s/">%s</a>/`
,
strings
.
Join
(
parts
[
:
i
+
1
],
"/"
),
part
)
}
return
result
}
// FileInfo is the info about a particular file or directory
type
FileInfo
struct
{
IsDir
bool
...
...
@@ -140,7 +174,9 @@ func (fi FileInfo) HumanModTime(format string) string {
func
directoryListing
(
files
[]
os
.
FileInfo
,
r
*
http
.
Request
,
canGoUp
bool
,
root
string
,
ignoreIndexes
bool
,
vars
interface
{})
(
Listing
,
error
)
{
var
fileinfos
[]
FileInfo
var
dirCount
,
fileCount
int
var
urlPath
=
r
.
URL
.
Path
for
_
,
f
:=
range
files
{
name
:=
f
.
Name
()
...
...
@@ -155,6 +191,9 @@ func directoryListing(files []os.FileInfo, r *http.Request, canGoUp bool, root s
if
f
.
IsDir
()
{
name
+=
"/"
dirCount
++
}
else
{
fileCount
++
}
url
:=
url
.
URL
{
Path
:
name
}
...
...
@@ -170,10 +209,12 @@ func directoryListing(files []os.FileInfo, r *http.Request, canGoUp bool, root s
}
return
Listing
{
Name
:
path
.
Base
(
urlPath
),
Path
:
urlPath
,
CanGoUp
:
canGoUp
,
Items
:
fileinfos
,
Name
:
path
.
Base
(
urlPath
),
Path
:
urlPath
,
CanGoUp
:
canGoUp
,
Items
:
fileinfos
,
NumDirs
:
dirCount
,
NumFiles
:
fileCount
,
Context
:
middleware
.
Context
{
Root
:
http
.
Dir
(
root
),
Req
:
r
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment