Merge pull request #3180 from blacktear23/issue-3149

This commit is contained in:
Chris Lu 2022-06-15 00:55:20 -07:00 committed by GitHub
commit 4eeeb5f50d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 34 additions and 24 deletions

View file

@ -55,6 +55,7 @@ type FilerOptions struct {
debug *bool debug *bool
debugPort *int debugPort *int
localSocket *string localSocket *string
showUIDirectoryDelete *bool
} }
func init() { func init() {
@ -82,6 +83,7 @@ func init() {
f.debug = cmdFiler.Flag.Bool("debug", false, "serves runtime profiling data, e.g., http://localhost:<debug.port>/debug/pprof/goroutine?debug=2") f.debug = cmdFiler.Flag.Bool("debug", false, "serves runtime profiling data, e.g., http://localhost:<debug.port>/debug/pprof/goroutine?debug=2")
f.debugPort = cmdFiler.Flag.Int("debug.port", 6060, "http port for debugging") f.debugPort = cmdFiler.Flag.Int("debug.port", 6060, "http port for debugging")
f.localSocket = cmdFiler.Flag.String("localSocket", "", "default to /tmp/seaweedfs-filer-<port>.sock") f.localSocket = cmdFiler.Flag.String("localSocket", "", "default to /tmp/seaweedfs-filer-<port>.sock")
f.showUIDirectoryDelete = cmdFiler.Flag.Bool("ui.deleteDir", true, "enable filer UI show delete directory button")
// start s3 on filer // start s3 on filer
filerStartS3 = cmdFiler.Flag.Bool("s3", false, "whether to start S3 gateway") filerStartS3 = cmdFiler.Flag.Bool("s3", false, "whether to start S3 gateway")
@ -216,6 +218,7 @@ func (fo *FilerOptions) startFiler() {
Cipher: *fo.cipher, Cipher: *fo.cipher,
SaveToFilerLimit: int64(*fo.saveToFilerLimit), SaveToFilerLimit: int64(*fo.saveToFilerLimit),
ConcurrentUploadLimit: int64(*fo.concurrentUploadLimitMB) * 1024 * 1024, ConcurrentUploadLimit: int64(*fo.concurrentUploadLimitMB) * 1024 * 1024,
ShowUIDirectoryDelete: *fo.showUIDirectoryDelete,
}) })
if nfs_err != nil { if nfs_err != nil {
glog.Fatalf("Filer startup error: %v", nfs_err) glog.Fatalf("Filer startup error: %v", nfs_err)

View file

@ -2,8 +2,6 @@ package command
import ( import (
"fmt" "fmt"
"github.com/chrislusf/seaweedfs/weed/pb"
"github.com/chrislusf/seaweedfs/weed/util/grace"
"net/http" "net/http"
"os" "os"
"strings" "strings"
@ -12,7 +10,9 @@ import (
stats_collect "github.com/chrislusf/seaweedfs/weed/stats" stats_collect "github.com/chrislusf/seaweedfs/weed/stats"
"github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/pb"
"github.com/chrislusf/seaweedfs/weed/util" "github.com/chrislusf/seaweedfs/weed/util"
"github.com/chrislusf/seaweedfs/weed/util/grace"
) )
type ServerOptions struct { type ServerOptions struct {
@ -114,6 +114,7 @@ func init() {
filerOptions.saveToFilerLimit = cmdServer.Flag.Int("filer.saveToFilerLimit", 0, "Small files smaller than this limit can be cached in filer store.") filerOptions.saveToFilerLimit = cmdServer.Flag.Int("filer.saveToFilerLimit", 0, "Small files smaller than this limit can be cached in filer store.")
filerOptions.concurrentUploadLimitMB = cmdServer.Flag.Int("filer.concurrentUploadLimitMB", 64, "limit total concurrent upload size") filerOptions.concurrentUploadLimitMB = cmdServer.Flag.Int("filer.concurrentUploadLimitMB", 64, "limit total concurrent upload size")
filerOptions.localSocket = cmdServer.Flag.String("filer.localSocket", "", "default to /tmp/seaweedfs-filer-<port>.sock") filerOptions.localSocket = cmdServer.Flag.String("filer.localSocket", "", "default to /tmp/seaweedfs-filer-<port>.sock")
filerOptions.showUIDirectoryDelete = cmdServer.Flag.Bool("filer.ui.deleteDir", true, "enable filer UI show delete directory button")
serverOptions.v.port = cmdServer.Flag.Int("volume.port", 8080, "volume server http listen port") serverOptions.v.port = cmdServer.Flag.Int("volume.port", 8080, "volume server http listen port")
serverOptions.v.portGrpc = cmdServer.Flag.Int("volume.port.grpc", 0, "volume server grpc listen port") serverOptions.v.portGrpc = cmdServer.Flag.Int("volume.port.grpc", 0, "volume server grpc listen port")

View file

@ -3,7 +3,6 @@ package weed_server
import ( import (
"context" "context"
"fmt" "fmt"
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"net/http" "net/http"
"os" "os"
"sync" "sync"
@ -17,6 +16,7 @@ import (
"github.com/chrislusf/seaweedfs/weed/operation" "github.com/chrislusf/seaweedfs/weed/operation"
"github.com/chrislusf/seaweedfs/weed/pb" "github.com/chrislusf/seaweedfs/weed/pb"
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"github.com/chrislusf/seaweedfs/weed/pb/master_pb" "github.com/chrislusf/seaweedfs/weed/pb/master_pb"
"github.com/chrislusf/seaweedfs/weed/util" "github.com/chrislusf/seaweedfs/weed/util"
@ -67,6 +67,7 @@ type FilerOption struct {
Cipher bool Cipher bool
SaveToFilerLimit int64 SaveToFilerLimit int64
ConcurrentUploadLimit int64 ConcurrentUploadLimit int64
ShowUIDirectoryDelete bool
} }
type FilerServer struct { type FilerServer struct {

View file

@ -73,7 +73,7 @@ func (fs *FilerServer) listDirectoryHandler(w http.ResponseWriter, r *http.Reque
return return
} }
ui.StatusTpl.Execute(w, struct { err = ui.StatusTpl.Execute(w, struct {
Path string Path string
Breadcrumbs []ui.Breadcrumb Breadcrumbs []ui.Breadcrumb
Entries interface{} Entries interface{}
@ -81,6 +81,7 @@ func (fs *FilerServer) listDirectoryHandler(w http.ResponseWriter, r *http.Reque
LastFileName string LastFileName string
ShouldDisplayLoadMore bool ShouldDisplayLoadMore bool
EmptyFolder bool EmptyFolder bool
ShowDirectoryDelete bool
}{ }{
path, path,
ui.ToBreadcrumb(path), ui.ToBreadcrumb(path),
@ -89,5 +90,9 @@ func (fs *FilerServer) listDirectoryHandler(w http.ResponseWriter, r *http.Reque
lastFileName, lastFileName,
shouldDisplayLoadMore, shouldDisplayLoadMore,
emptyFolder, emptyFolder,
fs.option.ShowUIDirectoryDelete,
}) })
if err != nil {
glog.V(0).Infof("Template Execute Error: %v", err)
}
} }

View file

@ -109,38 +109,37 @@
<form class="upload-form"> <form class="upload-form">
<input type="file" id="fileElem" multiple onchange="handleFiles(this.files)"> <input type="file" id="fileElem" multiple onchange="handleFiles(this.files)">
{{if .EmptyFolder}} {{ if .EmptyFolder }}
<div class="row add-files"> <div class="row add-files">
+ +
</div> </div>
{{else}} {{ else }}
<table width="100%" class="table table-hover"> <table width="100%" class="table table-hover">
{{$path := .Path }} {{ $path := .Path }}
{{ $showDirDel := .ShowDirectoryDelete }}
{{ range $entry_index, $entry := .Entries }} {{ range $entry_index, $entry := .Entries }}
<tr> <tr>
<td> <td>
{{if $entry.IsDirectory}} {{ if $entry.IsDirectory }}
<span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span>&nbsp; <span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span>&nbsp;
<a href="{{ printpath $path "/" $entry.Name "/"}}" > <a href="{{ printpath $path "/" $entry.Name "/"}}" >
{{ $entry.Name }} {{ $entry.Name }}
</a> </a>
{{else}} {{ else }}
<a href="{{ printpath $path "/" $entry.Name }}" > <a href="{{ printpath $path "/" $entry.Name }}" >
{{ $entry.Name }} {{ $entry.Name }}
</a> </a>
{{end}} {{ end }}
</td> </td>
<td align="right" nowrap> <td align="right" nowrap>
{{if $entry.IsDirectory}} {{ if not $entry.IsDirectory }}
{{else}}
{{ $entry.Mime }}&nbsp; {{ $entry.Mime }}&nbsp;
{{end}} {{ end }}
</td> </td>
<td align="right" nowrap> <td align="right" nowrap>
{{if $entry.IsDirectory}} {{ if not $entry.IsDirectory }}
{{else}}
{{ $entry.Size | humanizeBytes }}&nbsp; {{ $entry.Size | humanizeBytes }}&nbsp;
{{end}} {{ end }}
</td> </td>
<td align="right" nowrap> <td align="right" nowrap>
{{ $entry.Timestamp.Format "2006-01-02 15:04" }} {{ $entry.Timestamp.Format "2006-01-02 15:04" }}
@ -150,31 +149,32 @@
<label class="btn" onclick="handleRename('{{ $entry.Name }}', '{{ printpath $path "/" }}')"> <label class="btn" onclick="handleRename('{{ $entry.Name }}', '{{ printpath $path "/" }}')">
<span class="glyphicon glyphicon-edit" aria-hidden="true"></span> <span class="glyphicon glyphicon-edit" aria-hidden="true"></span>
</label> </label>
{{if $entry.IsDirectory}} {{ if and $entry.IsDirectory $showDirDel }}
<label class="btn" onclick="handleDelete('{{ printpath $path "/" $entry.Name "/" }}')"> <label class="btn" onclick="handleDelete('{{ printpath $path "/" $entry.Name "/" }}')">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span> <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
</label> </label>
{{else}} {{ end }}
{{ if not $entry.IsDirectory }}
<label class="btn" onclick="handleDelete('{{ printpath $path "/" $entry.Name }}')"> <label class="btn" onclick="handleDelete('{{ printpath $path "/" $entry.Name }}')">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span> <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
</label> </label>
{{end}} {{ end }}
</div> </div>
</td> </td>
</tr> </tr>
{{ end }} {{ end }}
</table> </table>
{{end}} {{ end }}
</form> </form>
</div> </div>
{{if .ShouldDisplayLoadMore}} {{ if .ShouldDisplayLoadMore }}
<div class="row"> <div class="row">
<a href={{ print .Path "?limit=" .Limit "&lastFileName=" .LastFileName}} > <a href={{ print .Path "?limit=" .Limit "&lastFileName=" .LastFileName }} >
Load more Load more
</a> </a>
</div> </div>
{{end}} {{ end }}
<br/> <br/>
<br/> <br/>