Allow users to modify/delete websites #36
| @ -113,6 +113,7 @@ func (app *application) getWebsiteSettings(w http.ResponseWriter, r *http.Reques | ||||
| 		} else { | ||||
| 			app.serverError(w, r, err) | ||||
| 		} | ||||
| 		return | ||||
| 	} | ||||
| 	var form forms.WebsiteSettingsForm | ||||
| 	data := app.newCommonData(r) | ||||
| @ -128,6 +129,7 @@ func (app *application) putWebsiteSettings(w http.ResponseWriter, r *http.Reques | ||||
| 		} else { | ||||
| 			app.serverError(w, r, err) | ||||
| 		} | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	var form forms.WebsiteSettingsForm | ||||
| @ -185,3 +187,39 @@ func (app *application) putWebsiteSettings(w http.ResponseWriter, r *http.Reques | ||||
| 	views.SettingsForm(data, website, forms.WebsiteSettingsForm{}, "Settings changed successfully").Render(r.Context(), w) | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| func (app *application) deleteWebsite(w http.ResponseWriter, r *http.Request) { | ||||
| 	slug := r.PathValue("id") | ||||
| 	website, err := app.websites.Get(slugToShortId(slug)) | ||||
| 	if err != nil { | ||||
| 		if errors.Is(err, models.ErrNoRecord) { | ||||
| 			http.NotFound(w, r) | ||||
| 		} else { | ||||
| 			app.serverError(w, r, err) | ||||
| 		} | ||||
| 		return | ||||
| 	} | ||||
| 	var form forms.WebsiteDeleteForm | ||||
| 	err = app.decodePostForm(r, &form) | ||||
| 	if err != nil { | ||||
| 		app.serverError(w, r, err) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	form.CheckField(validator.Equals(website.Name, form.Delete), "delete", "Input must match site name exactly") | ||||
| 	if !form.Valid() { | ||||
| 		data := app.newCommonData(r) | ||||
| 		views.DeleteForm(data, website, form).Render(r.Context(), w) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	err = app.websites.Delete(website.ID) | ||||
| 	if err != nil { | ||||
| 		app.serverError(w, r, err) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	app.sessionManager.Put(r.Context(), "flash", "Website Deleted") | ||||
| 	w.Header().Add("HX-Redirect", "/websites") | ||||
| 	w.WriteHeader(http.StatusOK) | ||||
| } | ||||
|  | ||||
| @ -50,7 +50,8 @@ func (app *application) routes() http.Handler { | ||||
| 	mux.Handle("DELETE /websites/{id}/dashboard/guestbook/comments/{commentId}", protected.ThenFunc(app.deleteGuestbookComment)) | ||||
| 	mux.Handle("PUT /websites/{id}/dashboard/guestbook/comments/{commentId}", protected.ThenFunc(app.putHideGuestbookComment)) | ||||
| 	mux.Handle("GET /websites/{id}/dashboard/settings", protected.ThenFunc(app.getWebsiteSettings)) | ||||
| 	mux.Handle("PUT /websites/{id}/dashboard/settings", protected.ThenFunc(app.putWebsiteSettings)) | ||||
| 	mux.Handle("PUT /websites/{id}/settings", protected.ThenFunc(app.putWebsiteSettings)) | ||||
| 	mux.Handle("PUT /websites/{id}", protected.ThenFunc(app.deleteWebsite)) | ||||
| 	mux.Handle("GET /websites/{id}/dashboard/guestbook/comments/trash", protected.ThenFunc(app.getCommentTrash)) | ||||
| 	mux.Handle("GET /websites/{id}/dashboard/guestbook/themes", protected.ThenFunc(app.getComingSoon)) | ||||
| 	mux.Handle("GET /websites/{id}/dashboard/guestbook/customize", protected.ThenFunc(app.getComingSoon)) | ||||
|  | ||||
| @ -31,6 +31,11 @@ type WebsiteCreateForm struct { | ||||
| 	validator.Validator `schema:"-"` | ||||
| } | ||||
| 
 | ||||
| type WebsiteDeleteForm struct { | ||||
| 	Delete              string `schema:"delete"` | ||||
| 	validator.Validator `schema:"-"` | ||||
| } | ||||
| 
 | ||||
| type UserSettingsForm struct { | ||||
| 	LocalTimezone       string `schema:"timezones"` | ||||
| 	validator.Validator `schema:"-"` | ||||
|  | ||||
| @ -72,6 +72,9 @@ func (m *WebsiteModel) GetAll() ([]models.Website, error) { | ||||
| func (m *WebsiteModel) Update(w models.Website) error { | ||||
| 	return nil | ||||
| } | ||||
| func (m *WebsiteModel) Delete(websiteId int64) error { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (m *WebsiteModel) InitializeSettingsMap() error { | ||||
| 	return nil | ||||
|  | ||||
| @ -101,6 +101,7 @@ type WebsiteModelInterface interface { | ||||
| 	InitializeSettingsMap() error | ||||
| 	UpdateGuestbookSettings(guestbookId int64, settings GuestbookSettings) error | ||||
| 	UpdateSetting(guestbookId int64, setting Setting, value string) error | ||||
| 	Delete(websiteId int64) error | ||||
| } | ||||
| 
 | ||||
| func (m *WebsiteModel) Insert(shortId uint64, userId int64, siteName, siteUrl, authorName string) (int64, error) { | ||||
| @ -244,7 +245,7 @@ func (m *WebsiteModel) GetAllUser(userId int64) ([]Website, error) { | ||||
| 	stmt := `SELECT w.Id, w.ShortId, w.Name, w.SiteUrl, w.AuthorName, w.UserId, w.Created,  | ||||
| 	g.Id, g.ShortId, g.Created, g.IsActive | ||||
| 	FROM websites AS w INNER JOIN guestbooks AS g ON w.Id = g.WebsiteId | ||||
| 	WHERE w.UserId = ?` | ||||
| 	WHERE w.UserId = ? AND w.Deleted IS NULL` | ||||
| 	rows, err := m.DB.Query(stmt, userId) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| @ -273,7 +274,7 @@ func (m *WebsiteModel) GetAllUser(userId int64) ([]Website, error) { | ||||
| func (m *WebsiteModel) GetAll() ([]Website, error) { | ||||
| 	stmt := `SELECT w.Id, w.ShortId, w.Name, w.SiteUrl, w.AuthorName, w.UserId, w.Created,  | ||||
| 	g.Id, g.ShortId, g.Created, g.IsActive | ||||
| 	FROM websites AS w INNER JOIN guestbooks AS g ON w.Id = g.WebsiteId` | ||||
| 	FROM websites AS w INNER JOIN guestbooks AS g ON w.Id = g.WebsiteId WHERE w.Deleted IS NULL` | ||||
| 	rows, err := m.DB.Query(stmt) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| @ -314,6 +315,21 @@ func (m *WebsiteModel) Update(w Website) error { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (m *WebsiteModel) Delete(websiteId int64) error { | ||||
| 	stmt := `UPDATE websites SET Deleted = ? WHERE ID = ?` | ||||
| 	r, err := m.DB.Exec(stmt, time.Now().UTC(), websiteId) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	if rows, err := r.RowsAffected(); rows != 1 { | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		return errors.New("Failed to update website") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (m *WebsiteModel) getGuestbookSettings(tx *sql.Tx, guestbookId int64) (GuestbookSettings, error) { | ||||
| 	stmt := `SELECT g.SettingId, a.ItemValue, g.UnconstrainedValue FROM guestbook_settings AS g | ||||
| 			LEFT JOIN allowed_setting_values AS a ON g.AllowedSettingValueId = a.Id | ||||
|  | ||||
| @ -57,3 +57,7 @@ func MinChars(value string, n int) bool { | ||||
| func Matches(value string, rx *regexp.Regexp) bool { | ||||
| 	return rx.MatchString(value) | ||||
| } | ||||
| 
 | ||||
| func Equals(expected, actual string) bool { | ||||
| 	return expected == actual | ||||
| } | ||||
|  | ||||
| @ -232,7 +232,7 @@ templ guestbookSettingsForm(data CommonData, website models.Website, gb models.G | ||||
| } | ||||
| 
 | ||||
| templ SettingsForm(data CommonData, website models.Website, form forms.WebsiteSettingsForm, msg string) { | ||||
| 	{{ putUrl := fmt.Sprintf("/websites/%s/dashboard/settings", shortIdToSlug(website.ShortId)) }} | ||||
| 	{{ putUrl := fmt.Sprintf("/websites/%s/settings", shortIdToSlug(website.ShortId)) }} | ||||
| 	{{ gb := website.Guestbook }} | ||||
| 	<form hx-put={ putUrl } hx-swap="outerHTML"> | ||||
| 		<p> | ||||
| @ -247,6 +247,22 @@ templ SettingsForm(data CommonData, website models.Website, form forms.WebsiteSe | ||||
| 	</form> | ||||
| } | ||||
| 
 | ||||
| templ DeleteForm(data CommonData, website models.Website, form forms.WebsiteDeleteForm) { | ||||
| 	{{ putUrl := fmt.Sprintf("/websites/%s", shortIdToSlug(website.ShortId)) }} | ||||
| 	<form hx-put={ putUrl } hx-swap="outerHTML"> | ||||
| 		<input type="hidden" name="csrf_token" value={ data.CSRFToken }/> | ||||
| 		<h3>Delete Website</h3> | ||||
| 		<p>Deleting a website is permanent. Be absolutely sure before proceeding.</p> | ||||
| 		{{ err, exists := form.FieldErrors["delete"] }} | ||||
| 		<label for="delete">Type your site name in the form.</label> | ||||
| 		if exists { | ||||
| 			<label class="error">{ err }</label> | ||||
| 		} | ||||
| 		<input type="text" name="delete" id="delete" required/> | ||||
| 		<input type="submit" value="Delete" class="danger"/> | ||||
| 	</form> | ||||
| } | ||||
| 
 | ||||
| templ WebsiteDashboardSettings(data CommonData, website models.Website, form forms.WebsiteSettingsForm) { | ||||
| 	{{ title := fmt.Sprintf("%s - Settings", website.Name) }} | ||||
| 	@base(title, data) { | ||||
| @ -254,14 +270,7 @@ templ WebsiteDashboardSettings(data CommonData, website models.Website, form for | ||||
| 			@wSidebar(website) | ||||
| 			<div> | ||||
| 				@SettingsForm(data, website, form, "") | ||||
| 				<form> | ||||
| 					<input type="hidden" name="csrf_token" value={ data.CSRFToken }/> | ||||
| 					<h3>Delete Website</h3> | ||||
| 					<p>Deleting a website is permanent. Be absolutely sure before proceeding.</p> | ||||
| 					<label for="delete">Type your site name in the form.</label> | ||||
| 					<input type="text" name="delete" required/> | ||||
| 					<input type="submit" value="Delete" class="danger"/> | ||||
| 				</form> | ||||
| 				@DeleteForm(data, website, forms.WebsiteDeleteForm{}) | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	} | ||||
|  | ||||
| @ -872,7 +872,7 @@ func SettingsForm(data CommonData, website models.Website, form forms.WebsiteSet | ||||
| 			templ_7745c5c3_Var41 = templ.NopComponent | ||||
| 		} | ||||
| 		ctx = templ.ClearChildren(ctx) | ||||
| 		putUrl := fmt.Sprintf("/websites/%s/dashboard/settings", shortIdToSlug(website.ShortId)) | ||||
| 		putUrl := fmt.Sprintf("/websites/%s/settings", shortIdToSlug(website.ShortId)) | ||||
| 		gb := website.Guestbook | ||||
| 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "<form hx-put=\"") | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| @ -933,7 +933,7 @@ func SettingsForm(data CommonData, website models.Website, form forms.WebsiteSet | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| func WebsiteDashboardSettings(data CommonData, website models.Website, form forms.WebsiteSettingsForm) templ.Component { | ||||
| func DeleteForm(data CommonData, website models.Website, form forms.WebsiteDeleteForm) templ.Component { | ||||
| 	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | ||||
| 		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||||
| 		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { | ||||
| @ -954,8 +954,92 @@ func WebsiteDashboardSettings(data CommonData, website models.Website, form form | ||||
| 			templ_7745c5c3_Var45 = templ.NopComponent | ||||
| 		} | ||||
| 		ctx = templ.ClearChildren(ctx) | ||||
| 		putUrl := fmt.Sprintf("/websites/%s", shortIdToSlug(website.ShortId)) | ||||
| 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "<form hx-put=\"") | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
| 		var templ_7745c5c3_Var46 string | ||||
| 		templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(putUrl) | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 252, Col: 22} | ||||
| 		} | ||||
| 		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46)) | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
| 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "\" hx-swap=\"outerHTML\"><input type=\"hidden\" name=\"csrf_token\" value=\"") | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
| 		var templ_7745c5c3_Var47 string | ||||
| 		templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(data.CSRFToken) | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 253, Col: 63} | ||||
| 		} | ||||
| 		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47)) | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
| 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "\"><h3>Delete Website</h3><p>Deleting a website is permanent. Be absolutely sure before proceeding.</p>") | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
| 		err, exists := form.FieldErrors["delete"] | ||||
| 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "<label for=\"delete\">Type your site name in the form.</label> ") | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
| 		if exists { | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<label class=\"error\">") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			var templ_7745c5c3_Var48 string | ||||
| 			templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(err) | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 259, Col: 29} | ||||
| 			} | ||||
| 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48)) | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</label> ") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 		} | ||||
| 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "<input type=\"text\" name=\"delete\" id=\"delete\" required> <input type=\"submit\" value=\"Delete\" class=\"danger\"></form>") | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
| 		return nil | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| func WebsiteDashboardSettings(data CommonData, website models.Website, form forms.WebsiteSettingsForm) templ.Component { | ||||
| 	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | ||||
| 		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||||
| 		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { | ||||
| 			return templ_7745c5c3_CtxErr | ||||
| 		} | ||||
| 		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||||
| 		if !templ_7745c5c3_IsBuffer { | ||||
| 			defer func() { | ||||
| 				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) | ||||
| 				if templ_7745c5c3_Err == nil { | ||||
| 					templ_7745c5c3_Err = templ_7745c5c3_BufErr | ||||
| 				} | ||||
| 			}() | ||||
| 		} | ||||
| 		ctx = templ.InitializeContext(ctx) | ||||
| 		templ_7745c5c3_Var49 := templ.GetChildren(ctx) | ||||
| 		if templ_7745c5c3_Var49 == nil { | ||||
| 			templ_7745c5c3_Var49 = templ.NopComponent | ||||
| 		} | ||||
| 		ctx = templ.ClearChildren(ctx) | ||||
| 		title := fmt.Sprintf("%s - Settings", website.Name) | ||||
| 		templ_7745c5c3_Var46 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | ||||
| 		templ_7745c5c3_Var50 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | ||||
| 			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||||
| 			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||||
| 			if !templ_7745c5c3_IsBuffer { | ||||
| @ -967,7 +1051,7 @@ func WebsiteDashboardSettings(data CommonData, website models.Website, form form | ||||
| 				}() | ||||
| 			} | ||||
| 			ctx = templ.InitializeContext(ctx) | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "<div id=\"dashboard\">") | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "<div id=\"dashboard\">") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| @ -975,7 +1059,7 @@ func WebsiteDashboardSettings(data CommonData, website models.Website, form form | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "<div>") | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "<div>") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| @ -983,26 +1067,17 @@ func WebsiteDashboardSettings(data CommonData, website models.Website, form form | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "<form><input type=\"hidden\" name=\"csrf_token\" value=\"") | ||||
| 			templ_7745c5c3_Err = DeleteForm(data, website, forms.WebsiteDeleteForm{}).Render(ctx, templ_7745c5c3_Buffer) | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			var templ_7745c5c3_Var47 string | ||||
| 			templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(data.CSRFToken) | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 258, Col: 66} | ||||
| 			} | ||||
| 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47)) | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "\"><h3>Delete Website</h3><p>Deleting a website is permanent. Be absolutely sure before proceeding.</p><label for=\"delete\">Type your site name in the form.</label> <input type=\"text\" name=\"delete\" required> <input type=\"submit\" value=\"Delete\" class=\"danger\"></form></div></div>") | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "</div></div>") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			return nil | ||||
| 		}) | ||||
| 		templ_7745c5c3_Err = base(title, data).Render(templ.WithChildren(ctx, templ_7745c5c3_Var46), templ_7745c5c3_Buffer) | ||||
| 		templ_7745c5c3_Err = base(title, data).Render(templ.WithChildren(ctx, templ_7745c5c3_Var50), templ_7745c5c3_Buffer) | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
| @ -1026,12 +1101,12 @@ func WebsiteDashboardComingSoon(title string, data CommonData, website models.We | ||||
| 			}() | ||||
| 		} | ||||
| 		ctx = templ.InitializeContext(ctx) | ||||
| 		templ_7745c5c3_Var48 := templ.GetChildren(ctx) | ||||
| 		if templ_7745c5c3_Var48 == nil { | ||||
| 			templ_7745c5c3_Var48 = templ.NopComponent | ||||
| 		templ_7745c5c3_Var51 := templ.GetChildren(ctx) | ||||
| 		if templ_7745c5c3_Var51 == nil { | ||||
| 			templ_7745c5c3_Var51 = templ.NopComponent | ||||
| 		} | ||||
| 		ctx = templ.ClearChildren(ctx) | ||||
| 		templ_7745c5c3_Var49 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | ||||
| 		templ_7745c5c3_Var52 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | ||||
| 			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||||
| 			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||||
| 			if !templ_7745c5c3_IsBuffer { | ||||
| @ -1043,7 +1118,7 @@ func WebsiteDashboardComingSoon(title string, data CommonData, website models.We | ||||
| 				}() | ||||
| 			} | ||||
| 			ctx = templ.InitializeContext(ctx) | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<div id=\"dashboard\">") | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "<div id=\"dashboard\">") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| @ -1051,13 +1126,13 @@ func WebsiteDashboardComingSoon(title string, data CommonData, website models.We | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "<div><p>Coming Soon</p></div></div>") | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "<div><p>Coming Soon</p></div></div>") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			return nil | ||||
| 		}) | ||||
| 		templ_7745c5c3_Err = base(title, data).Render(templ.WithChildren(ctx, templ_7745c5c3_Var49), templ_7745c5c3_Buffer) | ||||
| 		templ_7745c5c3_Err = base(title, data).Render(templ.WithChildren(ctx, templ_7745c5c3_Var52), templ_7745c5c3_Buffer) | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
| @ -1081,12 +1156,12 @@ func WebsiteCreate(title string, data CommonData, form forms.WebsiteCreateForm) | ||||
| 			}() | ||||
| 		} | ||||
| 		ctx = templ.InitializeContext(ctx) | ||||
| 		templ_7745c5c3_Var50 := templ.GetChildren(ctx) | ||||
| 		if templ_7745c5c3_Var50 == nil { | ||||
| 			templ_7745c5c3_Var50 = templ.NopComponent | ||||
| 		templ_7745c5c3_Var53 := templ.GetChildren(ctx) | ||||
| 		if templ_7745c5c3_Var53 == nil { | ||||
| 			templ_7745c5c3_Var53 = templ.NopComponent | ||||
| 		} | ||||
| 		ctx = templ.ClearChildren(ctx) | ||||
| 		templ_7745c5c3_Var51 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | ||||
| 		templ_7745c5c3_Var54 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | ||||
| 			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||||
| 			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||||
| 			if !templ_7745c5c3_IsBuffer { | ||||
| @ -1098,7 +1173,7 @@ func WebsiteCreate(title string, data CommonData, form forms.WebsiteCreateForm) | ||||
| 				}() | ||||
| 			} | ||||
| 			ctx = templ.InitializeContext(ctx) | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "<form action=\"/websites/create\" method=\"post\">") | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "<form action=\"/websites/create\" method=\"post\">") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| @ -1106,13 +1181,13 @@ func WebsiteCreate(title string, data CommonData, form forms.WebsiteCreateForm) | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "</form>") | ||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "</form>") | ||||
| 			if templ_7745c5c3_Err != nil { | ||||
| 				return templ_7745c5c3_Err | ||||
| 			} | ||||
| 			return nil | ||||
| 		}) | ||||
| 		templ_7745c5c3_Err = base(title, data).Render(templ.WithChildren(ctx, templ_7745c5c3_Var51), templ_7745c5c3_Buffer) | ||||
| 		templ_7745c5c3_Err = base(title, data).Render(templ.WithChildren(ctx, templ_7745c5c3_Var54), templ_7745c5c3_Buffer) | ||||
| 		if templ_7745c5c3_Err != nil { | ||||
| 			return templ_7745c5c3_Err | ||||
| 		} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user