diff options
| -rw-r--r-- | pkg/service/filesystem.go | 15 | ||||
| -rw-r--r-- | pkg/view/filesystem.go | 17 | ||||
| -rw-r--r-- | static.go | 24 | ||||
| -rw-r--r-- | templates/base.qtpl | 6 | ||||
| -rw-r--r-- | templates/fs.html | 29 | ||||
| -rw-r--r-- | templates/fs.qtpl | 41 | ||||
| -rw-r--r-- | templates/layout.html | 29 | 
7 files changed, 65 insertions, 96 deletions
| diff --git a/pkg/service/filesystem.go b/pkg/service/filesystem.go index 2e4b510..b4479ea 100644 --- a/pkg/service/filesystem.go +++ b/pkg/service/filesystem.go @@ -6,6 +6,7 @@ import (  	"net/url"  	"path"  	"strings" +	"syscall"  	"git.sr.ht/~gabrielgio/img/pkg/database/repository"  	"git.sr.ht/~gabrielgio/img/pkg/list" @@ -33,6 +34,20 @@ type (  	}  ) +func (f *FileParam) GetUid() int { +	if stat, ok := f.Info.Sys().(*syscall.Stat_t); ok { +		return int(stat.Uid) +	} +	return 0 +} + +func (f *FileParam) GetGid() int { +	if stat, ok := f.Info.Sys().(*syscall.Stat_t); ok { +		return int(stat.Gid) +	} +	return 0 +} +  func NewFileSystemController(  	fsRepository repository.FileSystemRepository,  	userRepository repository.UserRepository, diff --git a/pkg/view/filesystem.go b/pkg/view/filesystem.go index 7fd7331..6a01117 100644 --- a/pkg/view/filesystem.go +++ b/pkg/view/filesystem.go @@ -3,10 +3,10 @@ package view  import (  	"github.com/valyala/fasthttp" -	"git.sr.ht/~gabrielgio/img"  	"git.sr.ht/~gabrielgio/img/pkg/database/repository"  	"git.sr.ht/~gabrielgio/img/pkg/ext"  	"git.sr.ht/~gabrielgio/img/pkg/service" +	"git.sr.ht/~gabrielgio/img/templates"  )  type ( @@ -45,17 +45,12 @@ func (self *FileSystemView) Index(ctx *fasthttp.RequestCtx) error {  		return err  	} -	err = img.Render(ctx, "fs.html", &img.HTMLView[*FilePage]{ -		Title: pathValue, -		Data: &FilePage{ -			Page:      page, -			ShowMode:  settings.ShowMode, -			ShowOwner: settings.ShowOwner, -		}, +	templates.WritePageTemplate(ctx, &templates.FilePage{ +		Page:      page, +		ShowMode:  settings.ShowMode, +		ShowOwner: settings.ShowOwner,  	}) -	if err != nil { -		return err -	} +  	return nil  } @@ -2,33 +2,9 @@ package img  import (  	"embed" -	"fmt" -	"html/template" -	"io"  )  var ( -	//go:embed templates/*.html -	TemplateFS embed.FS -  	//go:embed static/*  	StaticFS embed.FS - -	Template *template.Template  ) - -type HTMLView[T any] struct { -	Title    string -	Username string -	Data     T -} - -func Render[T any](w io.Writer, page string, view *HTMLView[T]) error { -	pageFile := fmt.Sprintf("templates/%s", page) -	tmpl, err := template.New("").ParseFS(TemplateFS, "templates/layout.html", pageFile) -	if err != nil { -		return err -	} - -	return tmpl.ExecuteTemplate(w, page, view) -} diff --git a/templates/base.qtpl b/templates/base.qtpl index cbde355..0c05782 100644 --- a/templates/base.qtpl +++ b/templates/base.qtpl @@ -22,13 +22,13 @@ Page prints a page implementing Page interface.      <body>          <nav class="navbar">              <div class="navbar-start"> -                <a href="/fs" class="navbar-item"> +                <a href="/fs/" class="navbar-item">                      files                  </a> -                <a href="/media" class="navbar-item"> +                <a href="/media/" class="navbar-item">                      media                  </a> -                <a href="/settings" class="navbar-item"> +                <a href="/settings/" class="navbar-item">                      settings                  </a>              </div> diff --git a/templates/fs.html b/templates/fs.html deleted file mode 100644 index a44d78f..0000000 --- a/templates/fs.html +++ /dev/null @@ -1,29 +0,0 @@ -{{template "layout.html" .}} -{{define "title"}} {{.Title}} {{end}} -{{define "content"}} -<div class="panel"> -  <div class="panel-block"> -      <div class="columns file-row is-gapless is-mobile"> -          <div id="path" class="container-fluid"> -              <small>{{range .Data.Page.History}}<a href="/fs?path={{.UrlEncodedPath}}" >{{.Name}}/</a>{{end}}</small> -          </div> -      </div> -  </div> -  {{range .Data.Page.Files}} -  <div class="panel-block"> -      <div class="columns wide-column is-mono is-gapless is-mobile"> -          <div class="column"> -              {{if $.Data.ShowMode}}{{.Info.Mode}} {{end}} -              {{if $.Data.ShowOwner}}{{.Info.Sys.Gid}}:{{.Info.Sys.Uid}} {{end}} -              {{if .Info.IsDir}} -              <a href="/?path={{.UrlEncodedPath}}">{{.Info.Name}}/</a> -              {{else}} -              {{.Info.Name}} -              {{end}} -          </div> -          <div class="column  has-text-right">{{.Info.Size}} B</div> -      </div> -  </div> -  {{end}} -</div> -{{end}} diff --git a/templates/fs.qtpl b/templates/fs.qtpl new file mode 100644 index 0000000..489f79f --- /dev/null +++ b/templates/fs.qtpl @@ -0,0 +1,41 @@ +{% import "git.sr.ht/~gabrielgio/img/pkg/service" %} + +{% code +type FilePage struct { +		Page      *service.Page +		ShowMode  bool +		ShowOwner bool +	}%} + +{% func (p *FilePage) Title() %}Files{% endfunc %} + +{% func (p *FilePage) Content() %} +<div class="panel"> +  <div class="panel-block"> +      <div class="columns file-row is-gapless is-mobile"> +          <div id="path" class="container-fluid"> +              <small>{% for _, h := range p.Page.History %}<a href="/fs?path={%s h.UrlEncodedPath %}" >{%s h.Name %}/</a>{% endfor %}</small> +          </div> +      </div> +  </div> +  {% for _, f := range p.Page.Files %} +  <div class="panel-block"> +      <div class="columns wide-column is-mono is-gapless is-mobile"> +          <div class="column"> +              {% if p.ShowMode %}{%s f.Info.Mode().String() %} {% endif %} +              {% if p.ShowOwner %}{%d f.GetGid() %}:{%d f.GetUid() %} {% endif %} +              {% if f.Info.IsDir() %} +              <a href="/?path={%s f.UrlEncodedPath %}">{%s f.Info.Name() %}/</a> +              {% else %} +              {%s f.Info.Name() %} +              {% endif %} +          </div> +          <div class="column  has-text-right">{%dl f.Info.Size() %} B</div> +      </div> +  </div> +  {% endfor %} +</div> +{% endfunc %} + +{% func (p *FilePage) Script() %} +{% endfunc %} diff --git a/templates/layout.html b/templates/layout.html deleted file mode 100644 index bbf1558..0000000 --- a/templates/layout.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -    <head> -        <meta charset="utf-8"> -        <title>img | {{block "title" .}} noop {{end}}</title>  -        <link rel="stylesheet" href="/static/main.css"> -        <link rel="icon" href="/static/square.svg" sizes="any" type="image/svg+xml"> -        <meta name="viewport" content="width=device-width, initial-scale=1" /> -    </head> -    <body> -        <nav class="navbar"> -            <div class="navbar-start"> -                <a href="/fs" class="navbar-item"> -                    files -                </a> -                <a href="/media" class="navbar-item"> -                    media -                </a> -                <a href="/settings" class="navbar-item"> -                    settings -                </a> -            </div> -        </nav> -        <div class="container"> -            {{block "content" .}}noop{{end}} -        </div> -    </body> -    {{block "script" .}}{{end}} -</html> | 
