app

package
v1.5.16 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 12, 2024 License: GPL-3.0 Imports: 66 Imported by: 0

Documentation

Overview

Package app handles the routes and views for the Defacto2 website.

Index

Constants

View Source
const (
	// Welcome is the default logo monospace text,
	// each side contains 20 whitespace characters.
	// The welcome to defacto2 text is 19 characters long.
	// The letter O of the word "TO" is the center of the text.
	Welcome = `:                    ` +
		`·· WELCOME TO DEFACTO2 ··` +
		`                    ·`
)

Variables

View Source
var (
	ErrClaims   = errors.New("no sub id in the claims playload")
	ErrCode     = errors.New("the http status code is not valid")
	ErrCxt      = errors.New("the server could not create a context")
	ErrData     = errors.New("cache data is invalid or corrupt")
	ErrDB       = errors.New("database connection is nil")
	ErrExtract  = errors.New("unknown extractor value")
	ErrLinkType = errors.New("the id value is an invalid type")
	ErrMisMatch = errors.New("token mismatch")
	ErrNegative = errors.New("value cannot be a negative number")
	ErrSession  = errors.New("no sub id in session")
	ErrTarget   = errors.New("target not found")
	ErrTmpl     = errors.New("the server could not render the html template for this page")
	ErrType     = errors.New("value is the wrong type")
	ErrUser     = errors.New("unknown user")
	ErrVal      = errors.New("value is empty")
	ErrZap      = errors.New("the zap logger cannot be nil")
)
View Source
var Caching = Cache{} //nolint:gochecknoglobals

Caching are values that are used throughout the app or layouts.

Functions

func Artifact404

func Artifact404(c echo.Context, id string) error

Artifact404 renders the error page for the artifact links.

func Artifacts

func Artifacts(c echo.Context, db *sql.DB, uri, page string) error

Artifacts is the handler for the list and preview of the files page. The uri is the category or collection of files to display. The page is the page number of the results to display.

func Artifacts404

func Artifacts404(c echo.Context, uri string) error

Artifacts404 renders the files error page for the Artifacts menu and categories. It provides different error messages to the standard error page.

func Artist

func Artist(c echo.Context, db *sql.DB) error

Artist is the handler for the Artist sceners page.

func Attribute

func Attribute(write, code, art, music, name string) string

Attribute returns a formatted string of the roles for the given scener name. For example if the name is "ben", write is "ben" and code is "bianca,ben" then the following would return:

"Writer and programmer attributions"

func BBS

func BBS(c echo.Context, db *sql.DB) error

BBS is the handler for the BBS page ordered by the most files.

func BBSAZ

func BBSAZ(c echo.Context, db *sql.DB) error

BBSAZ is the handler for the BBS page ordered alphabetically.

func BBSYear

func BBSYear(c echo.Context, db *sql.DB) error

BBSYear is the handler for the BBS page ordered by the year.

func BadRequestErr

func BadRequestErr(c echo.Context, uri string, err error) error

BadRequestErr is the handler for handling Bad Request Errors, caused by invalid user input or a malformed client requests.

func Brief

func Brief(platform, section any) string

Brief returns a human readable brief description of the combined platform and section. For example providing "windows" and "intro" would return:

"a Windows intro"

func ByteFile

func ByteFile(cnt, bytes any) template.HTML

ByteFile returns a human readable string of the file count and bytes.

func ByteFileS

func ByteFileS(name string, count, bytes any) template.HTML

ByteFileS returns a human readable string of the byte count with a named description.

func Categories

func Categories(c echo.Context, db *sql.DB, logger *zap.SugaredLogger, stats bool) error

Categories is the handler for the artifact categories page.

func Checksum

func Checksum(c echo.Context, db *sql.DB, id string) error

Checksum is the handler for the Checksum file record page.

func Coder

func Coder(c echo.Context, db *sql.DB) error

Code is the handler for the Coder sceners page.

func Configurations added in v0.8.0

func Configurations(cx echo.Context, db *sql.DB, conf config.Config) error

Configurations is the handler for the Configuration page.

func DatabaseErr

func DatabaseErr(c echo.Context, uri string, err error) error

DatabaseErr is the handler for database connection issues. A HTTP 503 Service Unavailable error is returned, to reflect the database connection issue but where the server is still running and usable for the client.

func Day

func Day(d any) string

Day returns a string representation of the day number, a value between 1 and 31.

func Deletions

func Deletions(c echo.Context, db *sql.DB, page string) error

Deletions is the handler to list the files that have been marked for deletion.

func Describe

func Describe(platform, section, year, month any) template.HTML

Describe returns a human readable description of a release. Based on the platform, section, year and month.

For example providing "windows", "intro", 1990 and 1 would return:

"a Windows intro published in Jan, 1990."

func Download

func Download(c echo.Context, db *sql.DB, logger *zap.SugaredLogger, path string) error

Download is the handler for the Download file record page.

func DownloadErr

func DownloadErr(c echo.Context, uri string, err error) error

DownloadErr is the handler for missing download files and database ID errors.

func DownloadJsDos added in v0.9.0

func DownloadJsDos(c echo.Context, db *sql.DB, extraPath, downloadPath string) error

DownloadJsDos is the handler for the js-dos emulator to download zip files that are then mounted as a C: hard drive in the emulation. js-dos only supports common zip compression methods, so this func first attempts to offer a re-archived zip file found in the extra directory, and only if that fails does it offer the original download file.

func EmptyTester added in v0.14.0

func EmptyTester(c echo.Context) map[string]interface{}

EmptyTester is a map of defaults for the app template tests.

func FTP

func FTP(c echo.Context, db *sql.DB) error

FTP is the handler for the FTP page.

func FileMissingErr

func FileMissingErr(c echo.Context, uri string, err error) error

FileMissingErr is the handler for missing download files and database ID errors.

func ForApproval

func ForApproval(c echo.Context, db *sql.DB, page string) error

ForApproval is the handler for the list and preview of the files page. The uri is the category or collection of files to display. The page is the page number of the results to display.

func ForbiddenErr

func ForbiddenErr(c echo.Context, uri string, err error) error

ForbiddenErr is the handler for handling Forbidden Errors, caused by clients requesting pages that they do not have permission to access.

func GetDemozoo added in v0.10.0

func GetDemozoo(c echo.Context, db *sql.DB, demozooID int, defacto2UNID, downloadDir string) error

GetDemozoo fetches the download link from Demozoo and saves it to the download directory. It then runs Update to modify the database record with various metadata from the file and Demozoo record API data.

This function is a wrapper for the remote.DemozooLink.Download method.

func GetDemozooParam added in v0.10.0

func GetDemozooParam(c echo.Context, db *sql.DB, downloadDir string) error

GetDemozooParam fetches the multiple download_links values from the Demozoo production API and attempts to download and save one of the linked files. If multiple links are found, the first link is used as they should all point to the same asset.

Both the Demozoo production ID param and the Defacto2 UUID query param values are required as params to fetch the production data and to save the file to the correct filename.

func GetPouet added in v0.10.0

func GetPouet(c echo.Context, db *sql.DB, pouetID int, defacto2UNID, downloadDir string) error

GetPouet fetches the download link from Pouet and saves it to the download directory. It then runs Update to modify the database record with various metadata from the file and Pouet record API data.

This function is a wrapper for the remote.PouetLink.Download method.

func GlobTo

func GlobTo(name string) string

GlobTo returns the path to the template file.

func GoogleCallback

func GoogleCallback(c echo.Context, clientID string, maxAge int, accounts ...[48]byte) error

GoogleCallback is the handler for the Google OAuth2 callback page to verify the Google ID token.

func HasSuffix added in v1.2.0

func HasSuffix(s, suffix string) bool

HasPrefix returns true if the string s ends with the suffix.

func History

func History(c echo.Context) error

History is the handler for the History page.

func Index

func Index(c echo.Context) error

Index is the handler for the Home page.

func Inline

func Inline(c echo.Context, db *sql.DB, logger *zap.SugaredLogger, path string) error

Inline is the handler for the Download file record page.

func InternalErr

func InternalErr(c echo.Context, uri string, err error) error

InternalErr is the handler for handling Internal Server Errors, caused by programming bugs or crashes. The uri string is the part of the URL that caused the error. The optional error value is logged using the zap sugared logger. If the echo context is nil then a user hostile, fallback error in raw text is returned.

func Interview

func Interview(c echo.Context) error

Interview is the handler for the People Interviews page.

func LastUpdated

func LastUpdated(t any) string

LastUpdated returns a string of the time since the given time t. The time is formatted as "Last updated 1 hour ago". If the time is not valid, an empty string is returned.

func LinkDownload

func LinkDownload(id any, securityAlert string) template.HTML

LinkDownload creates a URL to link to the file download of the record. The id needs to be a valid integer. If the security alert is not empty, then a strikethrough warning is returned. For example providing 1 and an empty security alert would return:

<a class="card-link" href="/d/9b1c6">Download</a>

func LinkHref

func LinkHref(id any) (string, error)

LinkHref creates a URL path to link to the file page for the record. The id needs to be a valid integer.

func LinkInterview

func LinkInterview(href string) template.HTML

LinkInterview returns a SVG arrow icon to indicate an interview link hosted on an external website. If the href is not a valid URL then an empty string is returned.

func LinkPage

func LinkPage(id any) template.HTML

LinkPage creates a URL anchor element to link to the file page for the record. The id needs to be a valid integer. For example providing 1 would return:

<a class="card-link" href="/f/9b1c6">Artifact</a>

func LinkPreview

func LinkPreview(id any, name, platform string) template.HTML

LinkPreview creates a URL to link to the file record in-tab to use as a preview. The preview link will only show with compatible file types based on the platform and filename extension. The id needs to be a valid integer, the name is the filename and the platform is the platform of the release. Any invalid values will return an empty string.

For example providing 1, "readme.txt" and "text" would return:

&nbsp; <a class="card-link" href="/v/9b1c6">Preview</a>

But providing 1, "file.zip" and "text" would return an empty string.

func LinkPreviews

func LinkPreviews(youtube, demozoo, pouet, colors16, github, rels, sites string) []string

LinkPreviews returns a slice of HTML formatted links for the artifact editor.

func LinkReleasers added in v0.10.0

func LinkReleasers(performant, magazine bool, a, b any) template.HTML

LinkBothReleasers returns the groups associated with a release and a link to each group. The performant flag will use the group name instead of the much slower group slug formatter.

func LinkRelrs

func LinkRelrs(magazine bool, a, b any) template.HTML

LinkRelrs returns the groups associated with a release and a link to each group.

func LinkRels

func LinkRels(a, b any) template.HTML

LinkRels returns the groups associated with a release and a link to each group.

func LinkRelsPerf added in v1.5.13

func LinkRelsPerf(a, b any) template.HTML

LinkRelsPerf returns the groups associated with a release and a link to each group. It is a faster version of LinkRels and can be used with the templates that have large lists of group names.

func LinkRemote

func LinkRemote(href, name string) template.HTML

LinkRemote returns a HTML link with an embedded SVG icon to an external website. There are no checks for the href or name values other than they are not empty.

func LinkRunApp added in v0.10.0

func LinkRunApp(id any) template.HTML

LinkRunApp creates a URL anchor element to link to the artifact page to launch the js-dos emulator. The id needs to be a valid integer. For example providing 1 would return:

&nbsp; &nbsp; <a class="card-link" href="/f/9b1c6#runapp">Run app</a>

func LinkScnr

func LinkScnr(name string) (string, error)

LinkScnr returns a link to the named scener page. If the name is empty then an empty string is returned with no error. An example of providing "some scener" would return:

"/p/some-scener", nil

func LinkScnrs added in v1.2.0

func LinkScnrs(s string) template.HTML

LinkScnr...

func LinkWiki

func LinkWiki(uri, name string) template.HTML

LinkWiki returns a HTML link with an embedded SVG icon to the Defacto2 wiki on GitHub. The uri must be a valid URI path to a wiki page and the name must not be empty.

func LogoText

func LogoText(s string) string

LogoText returns a string of text padded with spaces to center it in the logo. If the string is empty then the default logo text is returned. The text is converted to uppercase and truncated if it is longer than the limit. An example of providing "abc" would return:

"      :                            ·· ABC ··                            ·"

func Magazine

func Magazine(c echo.Context, db *sql.DB) error

Magazine is the handler for the Magazine page.

func MagazineAZ

func MagazineAZ(c echo.Context, db *sql.DB) error

MagazineAZ is the handler for the Magazine page ordered chronologically.

func Month

func Month(m any) string

Month returns a short string of the month. If the month number is not a valid then an empty string is returned. For example providing 1 would return:

"Jan"

func Musician

func Musician(c echo.Context, db *sql.DB) error

Musician is the handler for the Musiciansceners page.

func New added in v0.10.0

func New(c echo.Context) error

New is the handler for the what is new page.

func Page404

func Page404(c echo.Context, uri, page string) error

Page404 renders the files page error page for the Artifacts menu and categories. It provides different error messages to the standard error page.

func PlatformEdit

func PlatformEdit(c echo.Context, db *sql.DB) error

PlatformEdit handles the post submission for the Platform selection field.

func PlatformTagInfo

func PlatformTagInfo(c echo.Context) error

PlatformTagInfo handles the POST submission for the platform and tag info.

func PostDesc

func PostDesc(c echo.Context, db *sql.DB, input string) error

PostDesc is the handler for the Search for file descriptions form post page.

func PostFilename

func PostFilename(c echo.Context, db *sql.DB) error

PostFilename is the handler for the Search for filenames form post page.

func PostName

func PostName(c echo.Context, db *sql.DB, mode FileSearch) error

PostName is the handler for the Search for filenames form post page.

func PouetCache

func PouetCache(c echo.Context, data string) error

PouetCache parses the cached data for the Pouet production votes. If the cache is valid it is returned as JSON response. If the cache is invalid or corrupt an error will be returned and a API request should be made to Pouet.

func Prefix

func Prefix(s string) string

Prefix returns a string prefixed with a space.

func ProdPouet

func ProdPouet(c echo.Context, id string) error

ProdPouet is the handler for the Pouet prod JSON page.

func ProdZoo

func ProdZoo(c echo.Context, id string) error

ProdZoo is the handler for the Demozoo production JSON page.

func RecordRels

func RecordRels(a, b any) string

RecordRels returns the groups associated with a release and joins them using a plus sign. For example providing "Group 1" and "Group 2" would return:

"Group 1 + Group 2"

func Releaser

func Releaser(c echo.Context, db *sql.DB) error

Releaser is the handler for the releaser page ordered by the most files.

func Releaser404

func Releaser404(c echo.Context, invalidID string) error

Releaser404 renders the files error page for the Groups menu and invalid releasers.

func ReleaserAZ

func ReleaserAZ(c echo.Context, db *sql.DB) error

ReleaserAZ is the handler for the releaser page ordered alphabetically.

func ReleaserYear

func ReleaserYear(c echo.Context, db *sql.DB) error

ReleaserYear is the handler for the releaser page ordered by year of the first release.

func Releasers

func Releasers(c echo.Context, db *sql.DB, logger *zap.SugaredLogger, uri string) error

Releasers is the handler for the list and preview of files credited to a releaser.

func SafeHTML

func SafeHTML(s string) template.HTML

SafeHTML returns a string as a template.HTML type to prevent HTML escaping in the template.

func SafeJS

func SafeJS(s string) template.JS

SafeJS returns a string as a template.JS type to prevent JavaScript escaping in the template.

func Scener

func Scener(c echo.Context, db *sql.DB) error

Scener is the handler for the page to list all the sceners.

func Scener404

func Scener404(c echo.Context, id string) error

Scener404 renders the files error page for the People menu and invalid sceners.

func Sceners

func Sceners(c echo.Context, db *sql.DB, uri string) error

Sceners is the handler for the list and preview of files credited to a scener.

func SearchDesc

func SearchDesc(c echo.Context) error

SearchDesc is the handler for the Search for file descriptions page.

func SearchFile

func SearchFile(c echo.Context) error

SearchFile is the handler for the Search for files page.

func SearchID added in v0.8.0

func SearchID(c echo.Context) error

SearchID is the handler for the Record by ID Search page.

func SearchReleaser

func SearchReleaser(c echo.Context) error

SearchReleaser is the handler for the Releaser Search page.

func SignOut

func SignOut(c echo.Context) error

SignOut is the handler for the Sign out of Defacto2 page.

func SignedOut

func SignedOut(c echo.Context) error

SignedOut is the handler to sign out and remove the current session.

func Signin

func Signin(c echo.Context, clientID, nonce string) error

Signin is the handler for the Sign in session page.

func StatusErr

func StatusErr(c echo.Context, code int, uri string) error

StatusErr is the handler for the HTTP status pages such as the 404 - not found. If the zap logger is nil then the error page is returned but no error is logged. If the echo context is nil then a user hostile, fallback error in raw text is returned.

func SubTitle

func SubTitle(section null.String, title any, large bool) template.HTML

SubTitle returns a secondary element with the record title. If the section is "magazine" and the title is a number then it is prefixed with "Issue". For example providing "magazine" and 1 would return:

`<h3 class="card-subtitle mb-2 text-body-secondary fs-6">Issue 1</h3>`

Otherwise providing "text" and "Some Cool Stuff" would return:

`<h3 class="card-subtitle mb-2 text-body-secondary fs-6">Some Cool Stuff</h3>`

func TagBrief

func TagBrief(tag string) string

TagBrief returns a small summary of the tag. For example providing "interview" would return:

"Conversations with the personalities of The Scene"

func TagEdit

func TagEdit(c echo.Context, db *sql.DB) error

TagEdit handles the post submission for the Tag selection field.

func TagInfo

func TagInfo(c echo.Context) error

TagInfo handles the POST submission for the platform and tag info.

func TagOption

func TagOption(s, value any) template.HTML

TagOption returns a HTML option tag with a "selected" attribute if the s matches the value. For example providing "interview" and "interview" would return:

`<option value="interview" selected>`

func TagWithOS

func TagWithOS(os, tag string) string

TagWithOS returns a small summary of the tag with the operating system. If either the os or tags are unknown then a message is returned. For example providing "dos" and "magazine" would return:

"a Dos magazine"

func Thanks

func Thanks(c echo.Context) error

Thanks is the handler for the Thanks page.

func TheScene

func TheScene(c echo.Context) error

TheScene is the handler for the The Scene page.

func Titles added in v1.5.15

func Titles(c echo.Context) error

Titles is the handler for the Titles page.

func TrimSiteSuffix

func TrimSiteSuffix(s string) string

TrimSiteSuffix returns a string with the last 4 characters removed if they are " FTP" or " BBS". For example providing "My super FTP" would return:

"My super"

func TrimSpace

func TrimSpace(a any) string

TrimSpace returns a string with all leading and trailing whitespace removed. If the value is a null.String then the value is checked for validity.

func URLEncode added in v0.10.0

func URLEncode(a any) string

URLEncode returns a URL encoded string from the given string. This can be used to pass filenames as URL parameters.

func Unwanted

func Unwanted(c echo.Context, db *sql.DB, page string) error

Unwanted is the handler to list the files that have been marked as unwanted.

func VotePouet

func VotePouet(c echo.Context, logger *zap.SugaredLogger, id string) error

VotePouet is the handler for the Pouet production votes JSON page.

func Website

func Website(c echo.Context, open string) error

Website is the handler for the websites page. Open is the ID of the accordion section to open.

func WebsiteIcon

func WebsiteIcon(url string) template.HTML

WebsiteIcon returns a Bootstrap icon name for the given website url. For example if the url contains "archive.org" then the Bootstrap icon "bank2" svg icon is returned.

func Writer

func Writer(c echo.Context, db *sql.DB) error

Writer is the handler for the Writer page.

func YMDEdit

func YMDEdit(c echo.Context, db *sql.DB) error

YMDEdit handles the post submission for the Year, Month, Day selection fields.

Types

type Accordion

type Accordion = []struct {
	Name  string // Name of the category.
	Title string // Title tab for the category.
	ID    string // ID of the category.
	Sites Sites  // Sites are the websites shown in the category.
	Open  bool   // Whether the category is displayed or closed.
}

Accordion is a collection of websites grouped by a category.

func List

func List() Accordion

List is a collection of websites grouped by a category.

type Asset

type Asset int

Asset is a relative path to a public facing CSS, JS or WASM file.

const (
	Bootstrap5      Asset = iota // Bootstrap is the path to the minified Bootstrap 5.3 CSS file.
	Bootstrap5JS                 // BootstrapJS is the path to the minified Bootstrap 5.3 JS file.
	BootstrapIcons               // BootstrapIcons is the path to the custom Bootstrap Icons SVG sprites file.
	DosboxJS                     // DosboxJS is the js-dos v6 default variant compiled with emscripten.
	DosboxWasm                   // DosboxWasm is the js-dos v6 WASM binary file.
	EditArtifact                 // EditArtifact is the path to the minified Artifact Editor JS file.
	EditAssets                   // EditAssets is the path to the minified Editor assets JS file.
	EditForApproval              // EditForApproval is the path to the minified Editor for-approval JS file.
	Htmx                         // Htmx is the path to the minified htmx AJAX JS file.
	HtmxRespTargets              // Htmx is the path to the minified response targets extension file.
	Jsdos6JS                     // Jsdos6JS is the path to the minified js-dos v6 JS file.
	Layout                       // Layout is the path to the minified layout CSS file.
	LayoutJS                     // LayoutJS is the path to the minified layout JS file.
	Pouet                        // Pouet is the path to the minified Pouet JS file.
	Readme                       // Readme is the path to the minified Readme JS file.
	Uploader                     // Uploader is the path to the minified Uploader JS file.
)

type Cache

type Cache struct {
	RecordCount int // The total number of file records in the database.
}

Cache contains database values that are used throughout the app or layouts, but do not change frequently enough to warrant a database query on every page load.

func (*Cache) Records

func (c *Cache) Records(i int)

Records caches the database record count.

type Dirs

type Dirs struct {
	Download  string // path to the artifact download directory
	Preview   string // path to the preview and screenshot directory
	Thumbnail string // path to the file thumbnail directory
	Extra     string // path to the extra files directory
	URI       string // the URI of the file record
}

Dirs contains the directories used by the artifact pages.

func (Dirs) Artifact

func (dir Dirs) Artifact(c echo.Context, db *sql.DB, logger *zap.SugaredLogger, readonly bool) error

Artifact is the handler for the of the file record.

func (Dirs) Editor added in v0.10.0

func (dir Dirs) Editor(art *models.File, data map[string]interface{}) map[string]interface{}

Editor returns the editor data for the file record of the artifact. These are the editable fields for the file record that are only visible to the editor after they have logged in.

type FileSearch

type FileSearch int

FileSearch is the type of search to perform.

const (
	Filenames    FileSearch = iota // Filenames is the search for filenames.
	Descriptions                   // Descriptions is the search for file descriptions and titles.
)

type Font

type Font int

Font is a relative path to a public facing font file.

const (
	VGA8             Font = iota // VGA8 is the path to the IBM VGA 8px font file.
	VGA8Woff                     // VGA8Woff is the path to the IBM VGA 8px legacy WOFF format font file.
	VGA8TT                       // VGA8TT is the path to the IBM VGA 8px legacy TrueType format font file.
	A1200                        // A1200 is the path to the Topaz Plus font file.
	A1200Woff                    // A1200Woff is the path to the Topaz Plus legacy WOFF format font file.
	A1200TT                      // A1200TT is the path to the Topaz Plus legacy TrueType format font file.
	CascadiaMono                 // CascadiaMono is the path to the Cascadia Mono font file.
	CascadiaMonoWoff             // CascadiaMonoWoff is the path to the Cascadia Mono WOFF format font file.
	CascadiaMonoTT               // CascadiaMonoTT is the path to the Cascadia Mono TrueType format font file.
)

type Fonts

type Fonts map[Font]string

Fonts are a map of the public facing font files.

func FontNames

func FontNames() Fonts

Names returns the absolute path of the public facing font files relative to the embed.FS root.

func FontRefs

func FontRefs() Fonts

FontRefs returns the relative path of the public facing font files. The strings are intended for href attributes in HTML link elements and the src attribute in HTML script elements.

type Form

type Form struct {
	Target   string `query:"target"`   // Target is the name of the file to extract from the zip archive.
	Value    string `query:"value"`    // Value is the value of the form input field to change.
	Platform string `query:"platform"` // Platform is the platform of the release.
	Tag      string `query:"tag"`      // Tag is the tag of the release.
	ID       int    `query:"id"`       // ID is the auto incrementing database id of the record.
	Year     int16  `query:"year"`     // Year is the year of the release.
	Month    int16  `query:"month"`    // Month is the month of the release.
	Day      int16  `query:"day"`      // Day is the day of the release.
	Online   bool   `query:"online"`   // Online is the record online and public toggle.
	Readme   bool   `query:"readme"`   // Readme hides the readme textfile from the artifact page.
}

Form is the form data for the editor.

type Group

type Group struct {
	Name       string     // Name is the name of the group.
	Link       string     // Link is a local URL to the group.
	Interviews Interviews // Interviews is a list of interviews with members of the group.
}

Group is a collection of interviews with members of a group.

type Groups

type Groups []Group

Groups is a collection of group interviews.

func Interviewees

func Interviewees() Groups

Interviewees returns a list of interviewees and their interviews. These are categorized by the group they were in at the time of the interview.

type Interviewee

type Interviewee struct {
	Scener  string // Scener is the name of the person interviewed.
	Content string // Content is a short description of the interview.
	Link    string // Link is the URL to the interview.
	Year    int    // Year is the year the interview was conducted.
	Month   int    // Month is the month the interview was conducted.
}

Interviewee is a person who was interviewed with a link to the interview.

type Interviews

type Interviews []Interviewee

Interviews is a collection of Interviewee.

type Links []struct {
	LinkTitle string // LinkTitle is the title of the Link.
	SubTitle  string // SublTitle is the title of the Link in a smaller font and in brackets.
	Link      string // Link is the URL to an article about the milestone or the product.
	Forward   string // Forward is an optional name of a group that is prefixed before the link to indicate a merger.
}

Links is a collection of Links.

type Milestone

type Milestone struct {
	Picture   Picture // Picture is an image or screenshot for a milestone.
	Prefix    string  // Prefix replacement for the month, such as 'Early', 'Mid' or 'Late'.
	Title     string  // Title of the milestone should be the accomplishment.
	Lead      string  // Lead paragraph, is optional and should usually be the product.
	Content   string  // Content is the main body of the milestone and can be HTML.
	Link      string  // Link is the URL to an article about the milestone or the product.
	LinkTitle string  // LinkTitle is the title of the Link.
	List      Links   // Links is a collection of links that are displayed as a HTML list.
	Year      int     // Year of the milestone.
	Month     int     // Month of the milestone.
	Day       int     // Day of the milestone.
	Highlight bool    // Highlight is a flag to outline the milestone.
}

Milestone is an accomplishment for a year and optional month.

type Milestones

type Milestones []Milestone

Milestones is a collection of Milestone.

func Collection

func Collection() Milestones

Collection of Milestones from the 1970s onwards.

func (Milestones) Len

func (m Milestones) Len() int

Len is the number of Milestones.

type Pagination

type Pagination struct {
	BaseURL   string // BaseURL is the base URL for the pagination links.
	CurrPage  int    // CurrPage is the current page number.
	SumPages  int    // SumPages is the total number of pages.
	PrevPage  int    // PrevPage is the previous page number.
	NextPage  int    // NextPage is the next page number.
	TwoBelow  int    // TwoBelow is the page number two below the current page.
	TwoAfter  int    // TwoAfter is the page number two after the current page.
	RangeStep int    // RangeStep is the number of pages to skip in the pagination range.
}

type Paths

type Paths map[Asset]string

Paths are a map of the public facing CSS, JS and WASM files.

func Hrefs

func Hrefs() Paths

Hrefs returns the relative path of the public facing CSS, JS and WASM files. The strings are intended for href attributes in HTML link elements and the src attribute in HTML script elements.

func Names

func Names() Paths

Names returns the absolute path of the public facing CSS, JS and WASM files relative to the embed.FS root.

type Picture

type Picture struct {
	Title       string // Title of the picture.
	Alt         string // Alt is the alternative text for the picture.
	Attribution string // attribution is the name of the author of the picture.
	License     string // License is the license of the picture.
	LicenseLink string // LicenseLink is the URL to the license of the picture.
	Webp        string // Webp is the filename of the WebP screenshot.
	Png         string // Png is the filename of the PNG screenshot.
	Jpg         string // Jpg is the filename of the JPG photo.
	Avif        string // Avif is the filename of the AVIF photo.
}

Picture is an image or screenshot for a milestone.

type SRI

type SRI struct {
	Bootstrap5      string // Bootstrap CSS verification hash.
	Bootstrap5JS    string // Bootstrap JS verification hash.
	BootstrapIcons  string // Bootstrap Icons SVG verification hash.
	EditArtifact    string // Artifact Editor JS verification hash.
	EditAssets      string // Editor Assets JS verification hash.
	EditForApproval string // Editor For Approval JS verification hash.
	Jsdos6JS        string // js-dos v6 verification hash.
	DosboxJS        string // DOSBox Emscripten verification hash.
	Layout          string // Layout CSS verification hash.
	LayoutJS        string // Layout JS verification hash.
	Pouet           string // Pouet JS verification hash.
	Readme          string // Readme JS verification hash.
	Uploader        string // Uploader JS verification hash.
	Htmx            string // htmx JS verification hash.
	HtmxRespTargets string // htmx response targets extension JS verification hash.
}

SRI are the Subresource Integrity hashes for the layout.

func (*SRI) Verify

func (s *SRI) Verify(fs embed.FS) error

Verify checks the integrity of the embedded CSS and JS files. These are required for Subresource Integrity (SRI) verification in modern browsers. The fs is the embedded file system that contains the public facing file assets.

type Site

type Site struct {
	Title string // Title of the website.
	URL   string // URL of the website, including the HTTP or HTTPS protocol.
	Info  string // A short description of the website.
}

Site is a website.

type Sites

type Sites = []Site

Sites is a collection of websites.

type Templ

type Templ struct {
	Public      embed.FS      // Public facing files.
	View        embed.FS      // Views are Go templates.
	Subresource SRI           // SRI are the Subresource Integrity hashes for the layout.
	Version     string        // Version is the current version of the app.
	Brand       []byte        // Brand contains to the Defacto2 ASCII logo.
	Environment config.Config // Environment configurations from the host system environment.
	RecordCount int           // RecordCount is the total number of records in the database.
}

Templ is the configuration and status of the web application templates.

func (Templ) Elements added in v0.10.0

func (t Templ) Elements() template.FuncMap

Elements returns a map of functions that return HTML elements.

func (Templ) FuncClosures added in v0.10.0

func (t Templ) FuncClosures(db *sql.DB) template.FuncMap

FuncClosures returns a map of closures that return converted type or modified strings.

func (Templ) FuncMap added in v0.10.0

func (t Templ) FuncMap(db *sql.DB) template.FuncMap

FuncMap returns a map of all the template functions.

func (Templ) Funcs added in v0.10.0

func (t Templ) Funcs() template.FuncMap

Funcs are a collection of mapped functions that can be used in a template.

The "fmtURI" function is not performant for large lists, instead use "fmtRangeURI" in TemplateStrings().

func (*Templ) Templates

func (t *Templ) Templates(db *sql.DB) (map[string]*template.Template, error)

Templates returns a map of the templates used by the route.

Directories

Path Synopsis
internal
extensions
Package extensions provides a list of file extensions used by some functions in app.
Package extensions provides a list of file extensions used by some functions in app.
filerecord
Package filerecord provides functions for the file model which is an artifact record.
Package filerecord provides functions for the file model which is an artifact record.
fileslice
Package fileslice provides functions that return model FileSlices, which are multiple artifact records.
Package fileslice provides functions that return model FileSlices, which are multiple artifact records.
simple
Package simple provides functions for handling string or integer input data.
Package simple provides functions for handling string or integer input data.
Package remote provides the remote download and update of artifact data from third-party sources such as API's.
Package remote provides the remote download and update of artifact data from third-party sources such as API's.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL