Update handling of news
This commit is contained in:
parent
73d821e320
commit
dcd5f910ae
22 changed files with 587 additions and 61 deletions
52
NEWS.md
52
NEWS.md
|
|
@ -1,51 +1 @@
|
||||||
# News
|
For news, see [internal/dis/component/control/news/NEWS](internal/dis/component/control/news/NEWS).
|
||||||
|
|
||||||
This file contains signficant news items for the distillery.
|
|
||||||
|
|
||||||
# User And Instance Management (2023-01-07)
|
|
||||||
- the concept of distillery user accounts has been added
|
|
||||||
- their accounts have a password as well as TOTP
|
|
||||||
- users can manage their own account details
|
|
||||||
- administrators can reset user passwords, and disable TOTP
|
|
||||||
- distillery accounts can be linked to multiple drupal accounts
|
|
||||||
- users can sign into the account without entering further passwords
|
|
||||||
- users must have two-factor-authentication enabled to use this functionality
|
|
||||||
- administrators have access to the distillery admin panel
|
|
||||||
- the functionality to manage distillery accounts has been added
|
|
||||||
- the functionality to link distillery and drupal accounts has been added
|
|
||||||
|
|
||||||
# Automatic Password Checking (2022-11-25)
|
|
||||||
- Implemented automatic password checking
|
|
||||||
|
|
||||||
# Login using Distillery Administration (2022-11-23)
|
|
||||||
- The admin interface now allows login to individual user accounts
|
|
||||||
|
|
||||||
# Showing Statistics (2022-11-16)
|
|
||||||
- The distillery nows shows generic statistics on the public homepage
|
|
||||||
- detailed statistics can be found on the admin interface
|
|
||||||
|
|
||||||
# Refactored SSH Support (2022-11-12)
|
|
||||||
- Fully refactored ssh for users to use a real OpenSSH Server along with a small custom proxy in between
|
|
||||||
- It is now possible for developers to directly use e.g. [VSCode Remote SSH](https://code.visualstudio.com/docs/remote/ssh) to develop new WissKI features directly on the distillery.
|
|
||||||
- No configuration beyond regular ssh access is neccessary
|
|
||||||
|
|
||||||
# Migration to Traefik & Support for HTTP3 (2022-10-12)
|
|
||||||
- We have migrated the entry point from nginx to [traefik](https://traefik.io/traefik/)
|
|
||||||
- This enables much cleaner support for automatically fetching and renewing SSL certificates
|
|
||||||
- It is now possible to turn on http3 support for the entire distillery
|
|
||||||
|
|
||||||
# Addition of a Global Distillery Resolver (2022-10-05)
|
|
||||||
- We have added a global WissKI Resolver, that functions similarly to the WissKI resolver under `/wisski/`.
|
|
||||||
- It can resolve WissKI URIs for the entire distillery, and redirect to their view page.
|
|
||||||
- Can be called exactly like the `/wisski/get?uri=` route of individual WissKIs, but toplevel on the distillery.
|
|
||||||
|
|
||||||
# Addition of an administrative server (2022-09-09)
|
|
||||||
- We have added a new web route under `/dis/`
|
|
||||||
- Allows administrators to manage WissKI Instances and see their status
|
|
||||||
- Administrators can e.g. download pathbuilders and make backups and snapshots
|
|
||||||
- At this point it is only for administrators
|
|
||||||
- A future (public) server with statistics will follow
|
|
||||||
|
|
||||||
# Migration to go (2022-09-08)
|
|
||||||
- We have ported the distillery from a set of bash scripts to a self-contained go executable.
|
|
||||||
- This makes future development easier, and allows us to develop new features easier.
|
|
||||||
3
go.mod
3
go.mod
|
|
@ -19,6 +19,8 @@ require (
|
||||||
github.com/rs/zerolog v1.28.0
|
github.com/rs/zerolog v1.28.0
|
||||||
github.com/tdewolff/minify v2.3.6+incompatible
|
github.com/tdewolff/minify v2.3.6+incompatible
|
||||||
github.com/tkw1536/goprogram v0.2.4
|
github.com/tkw1536/goprogram v0.2.4
|
||||||
|
github.com/yuin/goldmark v1.4.13
|
||||||
|
github.com/yuin/goldmark-meta v1.1.0
|
||||||
golang.org/x/crypto v0.3.0
|
golang.org/x/crypto v0.3.0
|
||||||
golang.org/x/exp v0.0.0-20230105202349-8879d0199aa3
|
golang.org/x/exp v0.0.0-20230105202349-8879d0199aa3
|
||||||
golang.org/x/sync v0.1.0
|
golang.org/x/sync v0.1.0
|
||||||
|
|
@ -41,4 +43,5 @@ require (
|
||||||
github.com/tdewolff/test v1.0.7 // indirect
|
github.com/tdewolff/test v1.0.7 // indirect
|
||||||
golang.org/x/sys v0.3.0 // indirect
|
golang.org/x/sys v0.3.0 // indirect
|
||||||
golang.org/x/tools v0.4.0 // indirect
|
golang.org/x/tools v0.4.0 // indirect
|
||||||
|
gopkg.in/yaml.v2 v2.3.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
|
||||||
7
go.sum
7
go.sum
|
|
@ -65,6 +65,10 @@ github.com/tdewolff/test v1.0.7 h1:8Vs0142DmPFW/bQeHRP3MV19m1gvndjUb1sn8yy74LM=
|
||||||
github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
|
github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
|
||||||
github.com/tkw1536/goprogram v0.2.4 h1:1l3+j8xjY3E3uf+ba3QRGWm09ucFCKrnNLq6g1Gq8YA=
|
github.com/tkw1536/goprogram v0.2.4 h1:1l3+j8xjY3E3uf+ba3QRGWm09ucFCKrnNLq6g1Gq8YA=
|
||||||
github.com/tkw1536/goprogram v0.2.4/go.mod h1:3Ngcwy7jtsZ+pINc+JfLdf8TWbvthdSS2T6Vbg44Fy8=
|
github.com/tkw1536/goprogram v0.2.4/go.mod h1:3Ngcwy7jtsZ+pINc+JfLdf8TWbvthdSS2T6Vbg44Fy8=
|
||||||
|
github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE=
|
||||||
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
|
github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc=
|
||||||
|
github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0=
|
||||||
golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A=
|
golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A=
|
||||||
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
||||||
|
|
@ -95,6 +99,9 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4=
|
golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4=
|
||||||
golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
|
golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
|
||||||
|
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gorm.io/driver/mysql v1.4.4 h1:MX0K9Qvy0Na4o7qSC/YI7XxqUw5KDw01umqgID+svdQ=
|
gorm.io/driver/mysql v1.4.4 h1:MX0K9Qvy0Na4o7qSC/YI7XxqUw5KDw01umqgID+svdQ=
|
||||||
gorm.io/driver/mysql v1.4.4/go.mod h1:BCg8cKI+R0j/rZRQxeKis/forqRwRSYOR8OM3Wo6hOM=
|
gorm.io/driver/mysql v1.4.4/go.mod h1:BCg8cKI+R0j/rZRQxeKis/forqRwRSYOR8OM3Wo6hOM=
|
||||||
gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
|
gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -2,9 +2,15 @@
|
||||||
{{ define "title" }}WissKI Distillery{{ end }}
|
{{ define "title" }}WissKI Distillery{{ end }}
|
||||||
|
|
||||||
{{ define "header"}}
|
{{ define "header"}}
|
||||||
<!-- no header -->
|
<p>
|
||||||
|
<a class="pure-button pure-button-primary" href="/">Home</a>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<a class="pure-button" href="/news/">News</a>
|
||||||
|
</p>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
{{ define "content" }}
|
{{ define "content" }}
|
||||||
{{ block "@custom/about" . }}
|
{{ block "@custom/about" . }}
|
||||||
<div class="pure-u-1">
|
<div class="pure-u-1">
|
||||||
|
|
@ -23,7 +29,7 @@
|
||||||
<div class="pure-u-1 pure-u-md-1-3">
|
<div class="pure-u-1 pure-u-md-1-3">
|
||||||
<h3>{{.Slug}}</h3>
|
<h3>{{.Slug}}</h3>
|
||||||
<p>
|
<p>
|
||||||
<a href="{{.URL}}" target="_blank" rel="noopener noreferrer">{{.URL}}</a><br>
|
<a href="{{.URL}}" target="_blank" rel="noopener noreferrer" class="wisskilink">{{.URL}}</a><br>
|
||||||
<small>
|
<small>
|
||||||
{{ .Statistics.Bundles.Summary }}
|
{{ .Statistics.Bundles.Summary }}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
title: Migration to go
|
||||||
|
date: 2022-09-08
|
||||||
|
---
|
||||||
|
|
||||||
|
- We have ported the distillery from a set of bash scripts to a self-contained go executable
|
||||||
|
- This makes future development easier, and allows us to develop new features easier
|
||||||
10
internal/dis/component/control/news/NEWS/2022-09-09-admin.md
Normal file
10
internal/dis/component/control/news/NEWS/2022-09-09-admin.md
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
title: Addition of an administrative server
|
||||||
|
date: 2022-09-09
|
||||||
|
---
|
||||||
|
|
||||||
|
- We have added a new web route under `/dis/`
|
||||||
|
- Allows administrators to manage WissKI Instances and see their status
|
||||||
|
- Administrators can e.g. download pathbuilders and make backups and snapshots
|
||||||
|
- At this point it is only for administrators
|
||||||
|
- A future (public) server with statistics will follow
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
title: Addition of a Global Distillery Resolver
|
||||||
|
date: 2022-10-05
|
||||||
|
---
|
||||||
|
|
||||||
|
- We have added a global WissKI Resolver, that functions similarly to the WissKI resolver under `/wisski/`.
|
||||||
|
- It can resolve WissKI URIs for the entire distillery, and redirect to their view page.
|
||||||
|
- Can be called exactly like the `/wisski/get?uri=` route of individual WissKIs, but toplevel on the distillery.
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
title: Migration to Traefik & Support for HTTP3
|
||||||
|
date: 2022-10-12
|
||||||
|
---
|
||||||
|
|
||||||
|
- We have migrated the entry point from nginx to [traefik](https://traefik.io/traefik/)
|
||||||
|
- This enables much cleaner support for automatically fetching and renewing SSL certificates
|
||||||
|
- It is now possible to turn on http3 support for the entire distillery
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
title: Refactored SSH Support
|
||||||
|
date: 2022-11-12
|
||||||
|
---
|
||||||
|
|
||||||
|
- Fully refactored ssh for users to use a real OpenSSH Server along with a small custom proxy in between
|
||||||
|
- It is now possible for developers to directly use e.g. [VSCode Remote SSH](https://code.visualstudio.com/docs/remote/ssh) to develop new WissKI features directly on the distillery.
|
||||||
|
- No configuration beyond regular ssh access is neccessary
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
title: Showing Statistics
|
||||||
|
date: 2022-11-16
|
||||||
|
---
|
||||||
|
|
||||||
|
- The distillery nows shows generic statistics on the public homepage
|
||||||
|
- detailed statistics can be found on the admin interface
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
title: Login using Distillery Administration
|
||||||
|
date: 2022-11-23
|
||||||
|
---
|
||||||
|
|
||||||
|
- The admin interface now allows login to individual user accounts
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
title: Automatic Password Checking
|
||||||
|
date: 2022-11-25
|
||||||
|
---
|
||||||
|
|
||||||
|
- Implemented automatic password checking
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
title: User And Instance Management
|
||||||
|
date: 2023-01-07
|
||||||
|
---
|
||||||
|
|
||||||
|
- the concept of distillery user accounts has been added
|
||||||
|
- their accounts have a password as well as TOTP
|
||||||
|
- users can manage their own account details
|
||||||
|
- administrators can reset user passwords, and disable TOTP
|
||||||
|
- distillery accounts can be linked to multiple drupal accounts
|
||||||
|
- users can sign into the account without entering further passwords
|
||||||
|
- users must have two-factor-authentication enabled to use this functionality
|
||||||
|
- administrators have access to the distillery admin panel
|
||||||
|
- the functionality to manage distillery accounts has been added
|
||||||
|
- the functionality to link distillery and drupal accounts has been added
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
title: News on the homepage
|
||||||
|
date: 2023-01-09
|
||||||
|
---
|
||||||
|
|
||||||
|
- we are now linking and showing the news section from the homepage
|
||||||
135
internal/dis/component/control/news/news.go
Normal file
135
internal/dis/component/control/news/news.go
Normal file
|
|
@ -0,0 +1,135 @@
|
||||||
|
package news
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"embed"
|
||||||
|
"html/template"
|
||||||
|
"io/fs"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/FAU-CDI/wisski-distillery/internal/dis/component"
|
||||||
|
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/static"
|
||||||
|
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/static/custom"
|
||||||
|
"github.com/FAU-CDI/wisski-distillery/pkg/httpx"
|
||||||
|
"github.com/FAU-CDI/wisski-distillery/pkg/lazy"
|
||||||
|
"github.com/yuin/goldmark"
|
||||||
|
gmmeta "github.com/yuin/goldmark-meta"
|
||||||
|
"github.com/yuin/goldmark/parser"
|
||||||
|
"golang.org/x/exp/slices"
|
||||||
|
)
|
||||||
|
|
||||||
|
type News struct {
|
||||||
|
component.Base
|
||||||
|
Dependencies struct {
|
||||||
|
Custom *custom.Custom
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
_ component.Routeable = (*News)(nil)
|
||||||
|
)
|
||||||
|
|
||||||
|
func (*News) Routes() component.Routes {
|
||||||
|
return component.Routes{
|
||||||
|
Paths: []string{"/news/"},
|
||||||
|
CSRF: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Item struct {
|
||||||
|
ID string
|
||||||
|
Date time.Time
|
||||||
|
Title string
|
||||||
|
Content template.HTML
|
||||||
|
}
|
||||||
|
|
||||||
|
func (item *Item) parse(path string, builder *strings.Builder) error {
|
||||||
|
builder.Reset()
|
||||||
|
|
||||||
|
// open file
|
||||||
|
content, err := fs.ReadFile(newsFS, path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// parse and read metadata
|
||||||
|
reader := goldmark.New(goldmark.WithExtensions(
|
||||||
|
gmmeta.Meta,
|
||||||
|
))
|
||||||
|
|
||||||
|
context := parser.NewContext()
|
||||||
|
if err := reader.Convert(content, builder, parser.WithContext(context)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
meta := gmmeta.Get(context)
|
||||||
|
|
||||||
|
// read title
|
||||||
|
item.Title, _ = meta["title"].(string)
|
||||||
|
|
||||||
|
// read date
|
||||||
|
date, _ := meta["date"].(string)
|
||||||
|
item.Date, err = time.Parse("2006-01-02", date)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// write content
|
||||||
|
item.Content = template.HTML(builder.String())
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
//go:embed "NEWS/*.md"
|
||||||
|
var newsFS embed.FS
|
||||||
|
|
||||||
|
var news lazy.Lazy[[]Item]
|
||||||
|
|
||||||
|
// Items returns a list of all news items
|
||||||
|
func Items() []Item {
|
||||||
|
return news.Get(func() (items []Item) {
|
||||||
|
var builder strings.Builder
|
||||||
|
|
||||||
|
files, err := fs.Glob(newsFS, "NEWS/*.md")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
items = make([]Item, len(files))
|
||||||
|
for i, file := range files {
|
||||||
|
items[i].ID = file[len("NEWS/") : len(file)-len(".md")]
|
||||||
|
if err := items[i].parse(file, &builder); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
slices.SortFunc(items, func(a, b Item) bool {
|
||||||
|
return !a.Date.Before(b.Date)
|
||||||
|
})
|
||||||
|
|
||||||
|
return
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//go:embed "news.html"
|
||||||
|
var newsHTMLStr string
|
||||||
|
var newsTemplate = static.AssetsHome.MustParseShared("news.html", newsHTMLStr)
|
||||||
|
|
||||||
|
type newsContext struct {
|
||||||
|
custom.BaseContext
|
||||||
|
Items []Item
|
||||||
|
}
|
||||||
|
|
||||||
|
// HandleRoute returns the handler for the requested path
|
||||||
|
func (news *News) HandleRoute(ctx context.Context, path string) (http.Handler, error) {
|
||||||
|
newsTemplate := news.Dependencies.Custom.Template(newsTemplate)
|
||||||
|
|
||||||
|
return httpx.HTMLHandler[newsContext]{
|
||||||
|
Handler: func(r *http.Request) (nc newsContext, err error) {
|
||||||
|
news.Dependencies.Custom.Update(&nc, r)
|
||||||
|
nc.Items = Items()
|
||||||
|
return
|
||||||
|
},
|
||||||
|
Template: newsTemplate,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
25
internal/dis/component/control/news/news.html
Normal file
25
internal/dis/component/control/news/news.html
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{{ template "_base.html" . }}
|
||||||
|
{{ define "title" }}News{{ end }}
|
||||||
|
|
||||||
|
{{ define "header"}}
|
||||||
|
<p>
|
||||||
|
<a class="pure-button" href="/">Home</a> >
|
||||||
|
<a class="pure-button pure-button-primary" href="/news/">News</a>
|
||||||
|
</p>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "content" }}
|
||||||
|
|
||||||
|
<div class="pure-u-1">
|
||||||
|
This page contains news items from the distillery.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{range .Items}}
|
||||||
|
<div class="pure-u-1">
|
||||||
|
<h2 id="{{.ID}}">{{.Title}}</h3>
|
||||||
|
<b>{{ .Date.Format "2006-01-02" }}</b>
|
||||||
|
{{ .Content }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ end }}
|
||||||
|
|
@ -10,7 +10,7 @@ var AssetsDisclaimer string
|
||||||
// AssetsHome contains assets for the 'Home' entrypoint.
|
// AssetsHome contains assets for the 'Home' entrypoint.
|
||||||
var AssetsHome = Assets{
|
var AssetsHome = Assets{
|
||||||
Scripts: `<script type="module" src="/static/Home.38d394c2.js"></script><script src="/static/Home.38d394c2.js" nomodule="" defer></script><script type="module" src="/static/Home.38d394c2.js"></script><script src="/static/Home.38d394c2.js" nomodule="" defer></script>`,
|
Scripts: `<script type="module" src="/static/Home.38d394c2.js"></script><script src="/static/Home.38d394c2.js" nomodule="" defer></script><script type="module" src="/static/Home.38d394c2.js"></script><script src="/static/Home.38d394c2.js" nomodule="" defer></script>`,
|
||||||
Styles: `<link rel="stylesheet" href="/static/Home.4b303448.css"><link rel="stylesheet" href="/static/Home.2353e048.css">`,
|
Styles: `<link rel="stylesheet" href="/static/Home.4b303448.css"><link rel="stylesheet" href="/static/Home.f9675eae.css">`,
|
||||||
}
|
}
|
||||||
|
|
||||||
// AssetsUser contains assets for the 'User' entrypoint.
|
// AssetsUser contains assets for the 'User' entrypoint.
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
a{color:#00f!important}
|
|
||||||
1
internal/dis/component/control/static/dist/Home.f9675eae.css
vendored
Normal file
1
internal/dis/component/control/static/dist/Home.f9675eae.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
a.wisskilink{color:#00f!important}
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
a {
|
a.wisskilink {
|
||||||
color: blue !important;
|
color: blue !important;
|
||||||
}
|
}
|
||||||
|
|
@ -16,6 +16,7 @@ import (
|
||||||
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/cron"
|
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/cron"
|
||||||
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/home"
|
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/home"
|
||||||
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/legal"
|
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/legal"
|
||||||
|
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/news"
|
||||||
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/static"
|
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/static"
|
||||||
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/static/custom"
|
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/control/static/custom"
|
||||||
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/exporter"
|
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/exporter"
|
||||||
|
|
@ -173,6 +174,7 @@ func (dis *Distillery) allComponents() []initFunc {
|
||||||
admin.Analytics = &dis.pool.Analytics
|
admin.Analytics = &dis.pool.Analytics
|
||||||
}),
|
}),
|
||||||
auto[*legal.Legal],
|
auto[*legal.Legal],
|
||||||
|
auto[*news.News],
|
||||||
|
|
||||||
auto[*static.Static],
|
auto[*static.Static],
|
||||||
auto[*custom.Custom],
|
auto[*custom.Custom],
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue