package views import ( "fmt" "git.32bit.cafe/32bitcafe/guestbook/internal/forms" "git.32bit.cafe/32bitcafe/guestbook/internal/models" "time" ) func wUrl(w models.Website) string { return fmt.Sprintf("/websites/%s", shortIdToSlug(w.ShortId)) } templ wSidebar(website models.Website) { {{ dashUrl := wUrl(website) + "/dashboard" }} {{ gbUrl := wUrl(website) + "/guestbook" }} } templ websiteCreateForm(csrfToken string, form forms.WebsiteCreateForm) {
{{ err, exists := form.FieldErrors["sitename"] }} if exists { }
{{ err, exists = form.FieldErrors["siteurl"] }} if exists { }
{{ err, exists = form.FieldErrors["authorname"] }} if exists { }
} templ WebsiteList(title string, data CommonData, websites []models.Website) { @base(title, data) {
Add Website
if len(websites) == 0 {

No Websites yet. Register a website.

} else { }
} } templ WebsiteDashboard(title string, data CommonData, website models.Website) { @base(title, data) {
@wSidebar(website)

Embed your Guestbook

Upload this JavaScript WebComponent to your site and include it in your { `` } tag.

//
						
							{ 
`
    
` }
						
					

Then add the custom elements where you want your form and comments to show up

{{ gbUrl := fmt.Sprintf("https://%s/websites/%s/guestbook", data.RootUrl, shortIdToSlug(website.ShortId)) }} //
						
							{ fmt.Sprintf(`
`, gbUrl, gbUrl) }
						
					

If your web host does not allow CORS requests, use an iframe instead

						
							{ fmt.Sprintf(``, gbUrl) }
						
					
} } templ websiteSettingsForm(data CommonData, website models.Website, form forms.WebsiteSettingsForm) {

Website Settings

{{ err, exists := form.FieldErrors["ws_name"] }} if exists { } if form.SiteName != "" { } else { }
{{ err, exists = form.FieldErrors["ws_url"] }} if exists { } if form.SiteUrl != "" { } else { }
{{ err, exists = form.FieldErrors["ws_author"] }} if exists { } if form.AuthorName != "" { } else { }
} templ guestbookSettingsForm(data CommonData, website models.Website, gb models.Guestbook, form forms.WebsiteSettingsForm) {

Guestbook Settings

if !website.Guestbook.CanComment() { {{ localtime := gb.Settings.ReenableCommenting.In(data.CurrentUser.Settings.LocalTimezone) }} }
} templ SettingsForm(data CommonData, website models.Website, form forms.WebsiteSettingsForm, msg string) { {{ putUrl := fmt.Sprintf("/websites/%s/settings", shortIdToSlug(website.ShortId)) }} {{ gb := website.Guestbook }}

{ msg }

@websiteSettingsForm(data, website, form) @guestbookSettingsForm(data, website, gb, form)
} templ DeleteForm(data CommonData, website models.Website, form forms.WebsiteDeleteForm) { {{ putUrl := fmt.Sprintf("/websites/%s", shortIdToSlug(website.ShortId)) }}

Delete Website

Deleting a website is permanent. Be absolutely sure before proceeding.

{{ err, exists := form.FieldErrors["delete"] }} if exists { }
} templ WebsiteDashboardSettings(data CommonData, website models.Website, form forms.WebsiteSettingsForm) { {{ title := fmt.Sprintf("%s - Settings", website.Name) }} @base(title, data) {
@wSidebar(website)
@SettingsForm(data, website, form, "") @DeleteForm(data, website, forms.WebsiteDeleteForm{})
} } templ WebsiteDashboardComingSoon(title string, data CommonData, website models.Website) { @base(title, data) {
@wSidebar(website)

Coming Soon

} } templ WebsiteCreate(title string, data CommonData, form forms.WebsiteCreateForm) { @base(title, data) {
@websiteCreateForm(data.CSRFToken, form)
} }