redirect to proper location
This commit is contained in:
		
							parent
							
								
									c3b10ae239
								
							
						
					
					
						commit
						a15bbcee3d
					
				| @ -5,6 +5,7 @@ import ( | |||||||
| 	"errors" | 	"errors" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  | 	"net/url" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| @ -279,10 +280,18 @@ func (app *application) postGuestbookCommentCreateRemote(w http.ResponseWriter, | |||||||
| 	form.CheckField(validator.MaxChars(form.AuthorEmail, 256), "authorEmail", "This field cannot be more than 256 characters long") | 	form.CheckField(validator.MaxChars(form.AuthorEmail, 256), "authorEmail", "This field cannot be more than 256 characters long") | ||||||
| 	form.CheckField(validator.MaxChars(form.AuthorSite, 256), "authorSite", "This field cannot be more than 256 characters long") | 	form.CheckField(validator.MaxChars(form.AuthorSite, 256), "authorSite", "This field cannot be more than 256 characters long") | ||||||
| 	form.CheckField(validator.NotBlank(form.Content), "content", "This field cannot be blank") | 	form.CheckField(validator.NotBlank(form.Content), "content", "This field cannot be blank") | ||||||
| 	// TODO: Add optional field filled with window.location.href | 
 | ||||||
| 	// If it is populated, use as redirect URL | 	// if redirect path is filled out, redirect to that path on the website host | ||||||
| 	// Else redirect to homepage as stored in the website struct | 	// otherwise redirect to the guestbook by default | ||||||
| 	redirectUrl := r.Header.Get("Referer") | 	redirectUrl := fmt.Sprintf("/websites/%s/guestbook", shortIdToSlug(website.ShortId)) | ||||||
|  | 	if form.Redirect != "" { | ||||||
|  | 		u := url.URL{ | ||||||
|  | 			Scheme: "http", | ||||||
|  | 			Host:   website.SiteUrl, | ||||||
|  | 			Path:   form.Redirect, | ||||||
|  | 		} | ||||||
|  | 		redirectUrl = u.String() | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	if !form.Valid() { | 	if !form.Valid() { | ||||||
| 		views.GuestbookCommentCreateRemoteErrorView(redirectUrl, "Invalid Input").Render(r.Context(), w) | 		views.GuestbookCommentCreateRemoteErrorView(redirectUrl, "Invalid Input").Render(r.Context(), w) | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ import ( | |||||||
| 	"errors" | 	"errors" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  | 	"net/url" | ||||||
| 
 | 
 | ||||||
| 	"git.32bit.cafe/32bitcafe/guestbook/internal/forms" | 	"git.32bit.cafe/32bitcafe/guestbook/internal/forms" | ||||||
| 	"git.32bit.cafe/32bitcafe/guestbook/internal/models" | 	"git.32bit.cafe/32bitcafe/guestbook/internal/models" | ||||||
| @ -33,13 +34,15 @@ func (app *application) postWebsiteCreate(w http.ResponseWriter, r *http.Request | |||||||
| 	form.CheckField(validator.NotBlank(form.SiteUrl), "siteurl", "This field cannot be blank") | 	form.CheckField(validator.NotBlank(form.SiteUrl), "siteurl", "This field cannot be blank") | ||||||
| 	form.CheckField(validator.MaxChars(form.SiteUrl, 512), "siteurl", "This field cannot exceed 512 characters") | 	form.CheckField(validator.MaxChars(form.SiteUrl, 512), "siteurl", "This field cannot exceed 512 characters") | ||||||
| 
 | 
 | ||||||
| 	if !form.Valid() { | 	u, err := url.Parse(form.SiteUrl) | ||||||
|  | 
 | ||||||
|  | 	if !form.Valid() || err != nil { | ||||||
| 		data := app.newCommonData(r) | 		data := app.newCommonData(r) | ||||||
| 		w.WriteHeader(http.StatusUnprocessableEntity) | 		w.WriteHeader(http.StatusUnprocessableEntity) | ||||||
| 		views.WebsiteCreate("Add a Website", data, form).Render(r.Context(), w) | 		views.WebsiteCreate("Add a Website", data, form).Render(r.Context(), w) | ||||||
| 	} | 	} | ||||||
| 	websiteShortID := app.createShortId() | 	websiteShortID := app.createShortId() | ||||||
| 	_, err = app.websites.Insert(websiteShortID, userId, form.Name, form.SiteUrl, form.AuthorName) | 	_, err = app.websites.Insert(websiteShortID, userId, form.Name, u.Host, form.AuthorName) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		app.serverError(w, r, err) | 		app.serverError(w, r, err) | ||||||
| 		return | 		return | ||||||
|  | |||||||
| @ -20,6 +20,7 @@ type CommentCreateForm struct { | |||||||
| 	AuthorEmail         string `schema:"authoremail"` | 	AuthorEmail         string `schema:"authoremail"` | ||||||
| 	AuthorSite          string `schema:"authorsite"` | 	AuthorSite          string `schema:"authorsite"` | ||||||
| 	Content             string `schema:"content"` | 	Content             string `schema:"content"` | ||||||
|  | 	Redirect            string `schema:"redirect"` | ||||||
| 	validator.Validator `schema:"-"` | 	validator.Validator `schema:"-"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,6 +1,74 @@ | |||||||
|  | class GuestbookForm extends HTMLElement { | ||||||
|  |     static get observedAttributes() { | ||||||
|  |         return ['guestbook']; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     constructor() { | ||||||
|  |         super(); | ||||||
|  |         this.attachShadow({ mode: 'open' }); | ||||||
|  |         this._guestbook = this.getAttribute('guestbook') || ''; | ||||||
|  |         this._postUrl = `${this._guestbook}/comments/create/remote` | ||||||
|  |         this.render(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     attributeChangedCallback(name, oldValue, newValue) { | ||||||
|  |         if (name === 'guestbook') { | ||||||
|  |             this._guestbook = newValue; | ||||||
|  |             this.render(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     render() { | ||||||
|  |         this.shadowRoot.innerHTML = ` | ||||||
|  |       <style> | ||||||
|  |         form div { | ||||||
|  |           margin-bottom: 0.75em; | ||||||
|  |         } | ||||||
|  |         label { | ||||||
|  |           display: block; | ||||||
|  |           font-weight: bold; | ||||||
|  |           margin-bottom: 0.25em; | ||||||
|  |         } | ||||||
|  |         input[type="text"], textarea { | ||||||
|  |           width: 100%; | ||||||
|  |           box-sizing: border-box; | ||||||
|  |         } | ||||||
|  |         input[type="submit"] { | ||||||
|  |           font-size: 1em; | ||||||
|  |           padding: 0.5em 1em; | ||||||
|  |         } | ||||||
|  |       </style> | ||||||
|  |       <form action="${this._postUrl}" method="post"> | ||||||
|  |         <div> | ||||||
|  |           <label for="authorname">Name</label> | ||||||
|  |           <input type="text" name="authorname" id="authorname"/> | ||||||
|  |         </div> | ||||||
|  |         <div> | ||||||
|  |           <label for="authoremail">Email (Optional)</label> | ||||||
|  |           <input type="text" name="authoremail" id="authoremail"/> | ||||||
|  |         </div> | ||||||
|  |         <div> | ||||||
|  |           <label for="authorsite">Site Url (Optional)</label> | ||||||
|  |           <input type="text" name="authorsite" id="authorsite"/> | ||||||
|  |         </div> | ||||||
|  |         <div> | ||||||
|  |           <label for="content">Comment</label> | ||||||
|  |           <textarea name="content" id="content"></textarea> | ||||||
|  |         </div> | ||||||
|  |         <div> | ||||||
|  |           <input type="hidden" value="${window.location.pathname}" name="redirect" id="redirect" /> | ||||||
|  |         </div> | ||||||
|  |         <div> | ||||||
|  |           <input type="submit" value="Submit"/> | ||||||
|  |         </div> | ||||||
|  |       </form> | ||||||
|  |     `;
 | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| class CommentList extends HTMLElement { | class CommentList extends HTMLElement { | ||||||
|     static get observedAttributes() { |     static get observedAttributes() { | ||||||
|         return ['src']; |         return ['guestbook']; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     constructor() { |     constructor() { | ||||||
| @ -12,26 +80,28 @@ class CommentList extends HTMLElement { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     connectedCallback() { |     connectedCallback() { | ||||||
|         if (this.hasAttribute('src')) { |         if (this.hasAttribute('guestbook')) { | ||||||
|             this.fetchComments(); |             this.fetchComments(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     attributeChangedCallback(name, oldValue, newValue) { |     attributeChangedCallback(name, oldValue, newValue) { | ||||||
|         if (name === 'src' && oldValue !== newValue) { |         if (name === 'guestbook' && oldValue !== newValue) { | ||||||
|             this.fetchComments(); |             this.fetchComments(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async fetchComments() { |     async fetchComments() { | ||||||
|         const src = this.getAttribute('src'); |         const guestbook = this.getAttribute('guestbook'); | ||||||
|         if (!src) return; |         if (!guestbook) return; | ||||||
|         this.loading = true; |         this.loading = true; | ||||||
|         this.error = null; |         this.error = null; | ||||||
|         this.render(); |         this.render(); | ||||||
| 
 | 
 | ||||||
|  |         const commentsUrl = `${guestbook}/comments` | ||||||
|  | 
 | ||||||
|         try { |         try { | ||||||
|             const response = await fetch(src); |             const response = await fetch(commentsUrl); | ||||||
|             if (!response.ok) throw new Error(`HTTP error: ${response.status}`); |             if (!response.ok) throw new Error(`HTTP error: ${response.status}`); | ||||||
|             const data = await response.json(); |             const data = await response.json(); | ||||||
|             this.comments = Array.isArray(data) ? data : []; |             this.comments = Array.isArray(data) ? data : []; | ||||||
| @ -102,4 +172,6 @@ class CommentList extends HTMLElement { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| customElements.define('comment-list', CommentList); | customElements.define('guestbook-form', GuestbookForm); | ||||||
|  | customElements.define('guestbook-comments', CommentList); | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -116,15 +116,6 @@ templ WebsiteDashboard(title string, data CommonData, website models.Website) { | |||||||
| 			<div> | 			<div> | ||||||
| 				<h1>{ website.Name }</h1> | 				<h1>{ website.Name }</h1> | ||||||
| 				<h2>Embed your Guestbook</h2> | 				<h2>Embed your Guestbook</h2> | ||||||
| 				<h3>Comment form</h3> |  | ||||||
| 				<p> |  | ||||||
| 					Use this form to allow readers of your website to comment on your guestbook! |  | ||||||
| 				</p> |  | ||||||
| 				<div> |  | ||||||
| 					//<button>Copy to Clipboard</button> |  | ||||||
| 					@embeddableForm(data.RootUrl, website) |  | ||||||
| 				</div> |  | ||||||
| 				<h3>Embed your comments</h3> |  | ||||||
| 				<p> | 				<p> | ||||||
| 					Upload <a href="/static/js/guestbook.js" download>this JavaScript WebComponent</a> to your site and include it in your <code>{ `<head>` }</code> tag. | 					Upload <a href="/static/js/guestbook.js" download>this JavaScript WebComponent</a> to your site and include it in your <code>{ `<head>` }</code> tag. | ||||||
| 				</p> | 				</p> | ||||||
| @ -139,16 +130,26 @@ templ WebsiteDashboard(title string, data CommonData, website models.Website) { | |||||||
| 						</code> | 						</code> | ||||||
| 					</pre> | 					</pre> | ||||||
| 					<p> | 					<p> | ||||||
| 						Then add the custom element where you want the comments to show up | 						Then add the custom elements where you want your form and comments to show up | ||||||
| 					</p> | 					</p> | ||||||
| 					{{ getUrl := fmt.Sprintf("https://%s/websites/%s/guestbook/comments", data.RootUrl, shortIdToSlug(website.ShortId)) }} | 					{{ gbUrl := fmt.Sprintf("https://%s/websites/%s/guestbook", data.RootUrl, shortIdToSlug(website.ShortId)) }} | ||||||
| 					//<button>Copy to Clipboard</button> | 					//<button>Copy to Clipboard</button> | ||||||
| 					<pre> | 					<pre> | ||||||
| 						<code> | 						<code> | ||||||
| 							{ fmt.Sprintf(`<comment-list src="%s"></comment-list>`, getUrl) } | 							{ fmt.Sprintf(`<guestbook-form guestbook="%s"></guestbook-form> | ||||||
|  | <guestbook-comments guestbook="%s"></guestbook-comments>`, gbUrl, gbUrl) } | ||||||
|  | 						</code> | ||||||
|  | 					</pre> | ||||||
|  | 				</div> | ||||||
|  | 				<p> | ||||||
|  | 					If your web host does not allow CORS requests, use an iframe instead | ||||||
|  | 				</p> | ||||||
|  | 				<div> | ||||||
|  | 					<pre> | ||||||
|  | 						<code> | ||||||
|  | 							{ fmt.Sprintf(`<iframe src="%s" title="Guestbook"></iframe>`, gbUrl) } | ||||||
| 						</code> | 						</code> | ||||||
| 					</pre> | 					</pre> | ||||||
| 					@embedJavaScriptSnippet(data.RootUrl, website) |  | ||||||
| 				</div> | 				</div> | ||||||
| 			</div> | 			</div> | ||||||
| 		</div> | 		</div> | ||||||
|  | |||||||
| @ -481,28 +481,20 @@ func WebsiteDashboard(title string, data CommonData, website models.Website) tem | |||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</h1><h2>Embed your Guestbook</h2><h3>Comment form</h3><p>Use this form to allow readers of your website to comment on your guestbook!</p><div>") | 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</h1><h2>Embed your Guestbook</h2><p>Upload <a href=\"/static/js/guestbook.js\" download>this JavaScript WebComponent</a> to your site and include it in your <code>") | ||||||
| 			if templ_7745c5c3_Err != nil { |  | ||||||
| 				return templ_7745c5c3_Err |  | ||||||
| 			} |  | ||||||
| 			templ_7745c5c3_Err = embeddableForm(data.RootUrl, website).Render(ctx, templ_7745c5c3_Buffer) |  | ||||||
| 			if templ_7745c5c3_Err != nil { |  | ||||||
| 				return templ_7745c5c3_Err |  | ||||||
| 			} |  | ||||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</div><h3>Embed your comments</h3><p>Upload <a href=\"/static/js/guestbook.js\" download>this JavaScript WebComponent</a> to your site and include it in your <code>") |  | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			var templ_7745c5c3_Var26 string | 			var templ_7745c5c3_Var26 string | ||||||
| 			templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(`<head>`) | 			templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(`<head>`) | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 129, Col: 140} | 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 120, Col: 140} | ||||||
| 			} | 			} | ||||||
| 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) | 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</code> tag.</p><div><pre><code id=\"guestbookSnippet\">") | 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "</code> tag.</p><div><pre><code id=\"guestbookSnippet\">") | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| @ -512,39 +504,45 @@ func WebsiteDashboard(title string, data CommonData, website models.Website) tem | |||||||
|     <script type="module" src="js/guestbook.js"></script> |     <script type="module" src="js/guestbook.js"></script> | ||||||
| </head>`) | </head>`) | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 138, Col: 8} | 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 129, Col: 8} | ||||||
| 			} | 			} | ||||||
| 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) | 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "</code></pre><p>Then add the custom element where you want the comments to show up</p>") | 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</code></pre><p>Then add the custom elements where you want your form and comments to show up</p>") | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			getUrl := fmt.Sprintf("https://%s/websites/%s/guestbook/comments", data.RootUrl, shortIdToSlug(website.ShortId)) | 			gbUrl := fmt.Sprintf("https://%s/websites/%s/guestbook", data.RootUrl, shortIdToSlug(website.ShortId)) | ||||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "<pre><code>") | 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<pre><code>") | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			var templ_7745c5c3_Var28 string | 			var templ_7745c5c3_Var28 string | ||||||
| 			templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf(`<comment-list src="%s"></comment-list>`, getUrl)) | 			templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf(`<guestbook-form guestbook="%s"></guestbook-form> | ||||||
|  | <guestbook-comments guestbook="%s"></guestbook-comments>`, gbUrl, gbUrl)) | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 148, Col: 70} | 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 140, Col: 72} | ||||||
| 			} | 			} | ||||||
| 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28)) | 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28)) | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "</code></pre>") | 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "</code></pre></div><p>If your web host does not allow CORS requests, use an iframe instead</p><div><pre><code>") | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			templ_7745c5c3_Err = embedJavaScriptSnippet(data.RootUrl, website).Render(ctx, templ_7745c5c3_Buffer) | 			var templ_7745c5c3_Var29 string | ||||||
|  | 			templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf(`<iframe src="%s" title="Guestbook"></iframe>`, gbUrl)) | ||||||
|  | 			if templ_7745c5c3_Err != nil { | ||||||
|  | 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 150, Col: 75} | ||||||
|  | 			} | ||||||
|  | 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29)) | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</div></div></div>") | 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "</code></pre></div></div></div>") | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| @ -574,12 +572,12 @@ func WebsiteDashboardComingSoon(title string, data CommonData, website models.We | |||||||
| 			}() | 			}() | ||||||
| 		} | 		} | ||||||
| 		ctx = templ.InitializeContext(ctx) | 		ctx = templ.InitializeContext(ctx) | ||||||
| 		templ_7745c5c3_Var29 := templ.GetChildren(ctx) | 		templ_7745c5c3_Var30 := templ.GetChildren(ctx) | ||||||
| 		if templ_7745c5c3_Var29 == nil { | 		if templ_7745c5c3_Var30 == nil { | ||||||
| 			templ_7745c5c3_Var29 = templ.NopComponent | 			templ_7745c5c3_Var30 = templ.NopComponent | ||||||
| 		} | 		} | ||||||
| 		ctx = templ.ClearChildren(ctx) | 		ctx = templ.ClearChildren(ctx) | ||||||
| 		templ_7745c5c3_Var30 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 		templ_7745c5c3_Var31 := 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_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||||||
| 			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||||||
| 			if !templ_7745c5c3_IsBuffer { | 			if !templ_7745c5c3_IsBuffer { | ||||||
| @ -591,7 +589,7 @@ func WebsiteDashboardComingSoon(title string, data CommonData, website models.We | |||||||
| 				}() | 				}() | ||||||
| 			} | 			} | ||||||
| 			ctx = templ.InitializeContext(ctx) | 			ctx = templ.InitializeContext(ctx) | ||||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<div id=\"dashboard\">") | 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "<div id=\"dashboard\">") | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| @ -599,26 +597,26 @@ func WebsiteDashboardComingSoon(title string, data CommonData, website models.We | |||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "<div><h1>") | 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<div><h1>") | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			var templ_7745c5c3_Var31 string | 			var templ_7745c5c3_Var32 string | ||||||
| 			templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(website.Name) | 			templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(website.Name) | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 163, Col: 22} | 				return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 164, Col: 22} | ||||||
| 			} | 			} | ||||||
| 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31)) | 			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32)) | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "</h1><p>Coming Soon</p></div></div>") | 			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</h1><p>Coming Soon</p></div></div>") | ||||||
| 			if templ_7745c5c3_Err != nil { | 			if templ_7745c5c3_Err != nil { | ||||||
| 				return templ_7745c5c3_Err | 				return templ_7745c5c3_Err | ||||||
| 			} | 			} | ||||||
| 			return nil | 			return nil | ||||||
| 		}) | 		}) | ||||||
| 		templ_7745c5c3_Err = base(title, data).Render(templ.WithChildren(ctx, templ_7745c5c3_Var30), templ_7745c5c3_Buffer) | 		templ_7745c5c3_Err = base(title, data).Render(templ.WithChildren(ctx, templ_7745c5c3_Var31), templ_7745c5c3_Buffer) | ||||||
| 		if templ_7745c5c3_Err != nil { | 		if templ_7745c5c3_Err != nil { | ||||||
| 			return templ_7745c5c3_Err | 			return templ_7745c5c3_Err | ||||||
| 		} | 		} | ||||||
| @ -642,12 +640,12 @@ func WebsiteCreate(title string, data CommonData, form forms.WebsiteCreateForm) | |||||||
| 			}() | 			}() | ||||||
| 		} | 		} | ||||||
| 		ctx = templ.InitializeContext(ctx) | 		ctx = templ.InitializeContext(ctx) | ||||||
| 		templ_7745c5c3_Var32 := templ.GetChildren(ctx) | 		templ_7745c5c3_Var33 := templ.GetChildren(ctx) | ||||||
| 		if templ_7745c5c3_Var32 == nil { | 		if templ_7745c5c3_Var33 == nil { | ||||||
| 			templ_7745c5c3_Var32 = templ.NopComponent | 			templ_7745c5c3_Var33 = templ.NopComponent | ||||||
| 		} | 		} | ||||||
| 		ctx = templ.ClearChildren(ctx) | 		ctx = templ.ClearChildren(ctx) | ||||||
| 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "<form hx-post=\"/websites/create\" hx-target=\"closest div\">") | 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<form hx-post=\"/websites/create\" hx-target=\"closest div\">") | ||||||
| 		if templ_7745c5c3_Err != nil { | 		if templ_7745c5c3_Err != nil { | ||||||
| 			return templ_7745c5c3_Err | 			return templ_7745c5c3_Err | ||||||
| 		} | 		} | ||||||
| @ -655,7 +653,7 @@ func WebsiteCreate(title string, data CommonData, form forms.WebsiteCreateForm) | |||||||
| 		if templ_7745c5c3_Err != nil { | 		if templ_7745c5c3_Err != nil { | ||||||
| 			return templ_7745c5c3_Err | 			return templ_7745c5c3_Err | ||||||
| 		} | 		} | ||||||
| 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "</form>") | 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</form>") | ||||||
| 		if templ_7745c5c3_Err != nil { | 		if templ_7745c5c3_Err != nil { | ||||||
| 			return templ_7745c5c3_Err | 			return templ_7745c5c3_Err | ||||||
| 		} | 		} | ||||||
| @ -679,9 +677,9 @@ func embeddableForm(root string, website models.Website) templ.Component { | |||||||
| 			}() | 			}() | ||||||
| 		} | 		} | ||||||
| 		ctx = templ.InitializeContext(ctx) | 		ctx = templ.InitializeContext(ctx) | ||||||
| 		templ_7745c5c3_Var33 := templ.GetChildren(ctx) | 		templ_7745c5c3_Var34 := templ.GetChildren(ctx) | ||||||
| 		if templ_7745c5c3_Var33 == nil { | 		if templ_7745c5c3_Var34 == nil { | ||||||
| 			templ_7745c5c3_Var33 = templ.NopComponent | 			templ_7745c5c3_Var34 = templ.NopComponent | ||||||
| 		} | 		} | ||||||
| 		ctx = templ.ClearChildren(ctx) | 		ctx = templ.ClearChildren(ctx) | ||||||
| 		postUrl := fmt.Sprintf("https://%s/websites/%s/guestbook/comments/create/remote", root, shortIdToSlug(website.ShortId)) | 		postUrl := fmt.Sprintf("https://%s/websites/%s/guestbook/comments/create/remote", root, shortIdToSlug(website.ShortId)) | ||||||
| @ -707,20 +705,20 @@ func embeddableForm(root string, website models.Website) templ.Component { | |||||||
|             <input type="submit" value="Submit"/> |             <input type="submit" value="Submit"/> | ||||||
|         </div> |         </div> | ||||||
| </form>` | </form>` | ||||||
| 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "<pre><code>") | 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<pre><code>") | ||||||
| 		if templ_7745c5c3_Err != nil { | 		if templ_7745c5c3_Err != nil { | ||||||
| 			return templ_7745c5c3_Err | 			return templ_7745c5c3_Err | ||||||
| 		} | 		} | ||||||
| 		var templ_7745c5c3_Var34 string | 		var templ_7745c5c3_Var35 string | ||||||
| 		templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf(formStr, postUrl)) | 		templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf(formStr, postUrl)) | ||||||
| 		if templ_7745c5c3_Err != nil { | 		if templ_7745c5c3_Err != nil { | ||||||
| 			return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 205, Col: 34} | 			return templ.Error{Err: templ_7745c5c3_Err, FileName: `ui/views/websites.templ`, Line: 206, Col: 34} | ||||||
| 		} | 		} | ||||||
| 		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34)) | 		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35)) | ||||||
| 		if templ_7745c5c3_Err != nil { | 		if templ_7745c5c3_Err != nil { | ||||||
| 			return templ_7745c5c3_Err | 			return templ_7745c5c3_Err | ||||||
| 		} | 		} | ||||||
| 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "</code></pre>") | 		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</code></pre>") | ||||||
| 		if templ_7745c5c3_Err != nil { | 		if templ_7745c5c3_Err != nil { | ||||||
| 			return templ_7745c5c3_Err | 			return templ_7745c5c3_Err | ||||||
| 		} | 		} | ||||||
| @ -744,9 +742,9 @@ func embedJavaScriptSnippet(root string, website models.Website) templ.Component | |||||||
| 			}() | 			}() | ||||||
| 		} | 		} | ||||||
| 		ctx = templ.InitializeContext(ctx) | 		ctx = templ.InitializeContext(ctx) | ||||||
| 		templ_7745c5c3_Var35 := templ.GetChildren(ctx) | 		templ_7745c5c3_Var36 := templ.GetChildren(ctx) | ||||||
| 		if templ_7745c5c3_Var35 == nil { | 		if templ_7745c5c3_Var36 == nil { | ||||||
| 			templ_7745c5c3_Var35 = templ.NopComponent | 			templ_7745c5c3_Var36 = templ.NopComponent | ||||||
| 		} | 		} | ||||||
| 		ctx = templ.ClearChildren(ctx) | 		ctx = templ.ClearChildren(ctx) | ||||||
| 		return nil | 		return nil | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user