vole
Clone
Read only, no credentials:
https://rodent.software/vole.git
Write over SSH with a registered key:
git clone ssh://git@rodent.software:2222/vole.git
A free and open-source forge that lives in your Git repo.
Serve changes at /r/<repo>/changes
8fb7aabf534adf208cd795724b1e3d287dc62f5a · Keenan Nemetz · 3d ago · parent b492b557
Serve changes at /r/<repo>/changes The metadata tree and the interface say changes; the browser was the last place spelling the route requests. Rename every method on that subtree and the URLs the server builds: redirects, activity and search results, the number alias, code links, templates, and the CLI's page links. The old route is gone rather than aliased. Nothing has been publicly released, so there is no bookmark or client to keep working, and a redirect would leave two spellings of the same page in the code. Refs #204 (01M6S6685JFG8S64ZFF452217W).
server/web/templates/requests.html +31−31
| @@ -1,13 +1,13 @@ | |||
| 1 | 1 | {{define "requests"}} | |
| 2 | 2 | {{template "header" .}} | |
| 3 | {{template "repohead" (nav .Page "requests")}} | ||
| 3 | {{template "repohead" (nav .Page "changes")}} | ||
| 4 | 4 | ||
| 5 | 5 | <div class="page-head"> | |
| 6 | 6 | <div class="page-head-main"> | |
| 7 | 7 | <h1>Changes</h1> | |
| 8 | 8 | <p class="page-sub">Proposed updates to the project, reviewed and approved before they are merged.</p> | |
| 9 | 9 | </div> | |
| 10 | {{if .CanOpen}}<div class="page-head-actions"><a class="button" href="/r/{{.Name}}/requests/new">{{icon "plus"}}New change</a></div>{{end}} | ||
| 10 | {{if .CanOpen}}<div class="page-head-actions"><a class="button" href="/r/{{.Name}}/changes/new">{{icon "plus"}}New change</a></div>{{end}} | ||
| 11 | 11 | </div> | |
| 12 | 12 | ||
| 13 | 13 | {{template "change_list" .}} | |
| @@ -21,18 +21,18 @@ | |||
| 21 | 21 | {{/* One row: state chips on the left, search on the right. The chips live | |
| 22 | 22 | inside the form so a search keeps the state, and the whole row is replaced | |
| 23 | 23 | with the server's rendering after a search or a chip click. */}} | |
| 24 | <form method="get" action="/r/{{.Name}}/requests" class="filters" role="search" hx-get="/r/{{.Name}}/requests" hx-target="#change-list" hx-swap="outerHTML" hx-push-url="true"> | ||
| 24 | <form method="get" action="/r/{{.Name}}/changes" class="filters" role="search" hx-get="/r/{{.Name}}/changes" hx-target="#change-list" hx-swap="outerHTML" hx-push-url="true"> | ||
| 25 | 25 | <div class="chips" hx-boost="true" hx-target="#change-list" hx-swap="outerHTML" hx-push-url="true"> | |
| 26 | <a class="chip{{if eq .State "open"}} active{{end}}" href="/r/{{.Name}}/requests?state=open{{if .Query}}&q={{urlquery .Query}}{{end}}">Open <span class="chip-count">{{.Open}}</span></a> | ||
| 27 | <a class="chip{{if eq .State "merged"}} active{{end}}" href="/r/{{.Name}}/requests?state=merged{{if .Query}}&q={{urlquery .Query}}{{end}}">Merged <span class="chip-count">{{.Merged}}</span></a> | ||
| 28 | <a class="chip{{if eq .State "closed"}} active{{end}}" href="/r/{{.Name}}/requests?state=closed{{if .Query}}&q={{urlquery .Query}}{{end}}">Closed <span class="chip-count">{{.Closed}}</span></a> | ||
| 29 | <a class="chip{{if eq .State "all"}} active{{end}}" href="/r/{{.Name}}/requests?state=all{{if .Query}}&q={{urlquery .Query}}{{end}}">All <span class="chip-count">{{.Total}}</span></a> | ||
| 26 | <a class="chip{{if eq .State "open"}} active{{end}}" href="/r/{{.Name}}/changes?state=open{{if .Query}}&q={{urlquery .Query}}{{end}}">Open <span class="chip-count">{{.Open}}</span></a> | ||
| 27 | <a class="chip{{if eq .State "merged"}} active{{end}}" href="/r/{{.Name}}/changes?state=merged{{if .Query}}&q={{urlquery .Query}}{{end}}">Merged <span class="chip-count">{{.Merged}}</span></a> | ||
| 28 | <a class="chip{{if eq .State "closed"}} active{{end}}" href="/r/{{.Name}}/changes?state=closed{{if .Query}}&q={{urlquery .Query}}{{end}}">Closed <span class="chip-count">{{.Closed}}</span></a> | ||
| 29 | <a class="chip{{if eq .State "all"}} active{{end}}" href="/r/{{.Name}}/changes?state=all{{if .Query}}&q={{urlquery .Query}}{{end}}">All <span class="chip-count">{{.Total}}</span></a> | ||
| 30 | 30 | </div> | |
| 31 | 31 | <input type="hidden" name="state" value="{{.State}}"> | |
| 32 | 32 | <div class="filters-search"> | |
| 33 | 33 | <input name="q" type="search" placeholder="Search title, description and author" aria-label="Search title, description and author" value="{{.Query}}"> | |
| 34 | 34 | <button type="submit">{{icon "search"}}Search</button> | |
| 35 | {{if .Filtered}}<a class="button secondary" href="/r/{{.Name}}/requests" hx-get="/r/{{.Name}}/requests" hx-target="#change-list" hx-swap="outerHTML" hx-push-url="true">{{icon "x"}}Clear</a>{{end}} | ||
| 35 | {{if .Filtered}}<a class="button secondary" href="/r/{{.Name}}/changes" hx-get="/r/{{.Name}}/changes" hx-target="#change-list" hx-swap="outerHTML" hx-push-url="true">{{icon "x"}}Clear</a>{{end}} | ||
| 36 | 36 | </div> | |
| 37 | 37 | </form> | |
| 38 | 38 | ||
| @@ -47,7 +47,7 @@ | |||
| 47 | 47 | <tr> | |
| 48 | 48 | <td class="fit">{{template "change_status" .Status}}</td> | |
| 49 | 49 | <td> | |
| 50 | <a class="row-title" href="/r/{{$.Name}}/requests/{{.ID}}">{{.Title}}</a> | ||
| 50 | <a class="row-title" href="/r/{{$.Name}}/changes/{{.ID}}">{{.Title}}</a> | ||
| 51 | 51 | <div class="row-meta"> | |
| 52 | 52 | <span class="sha">{{num .Number}}</span> | |
| 53 | 53 | <span>opened by {{template "userlink" (user .Author)}} {{since .Created.Unix}}</span> | |
| @@ -66,14 +66,14 @@ | |||
| 66 | 66 | {{else if and (eq .State "open") .Total}} | |
| 67 | 67 | <div class="empty-state"> | |
| 68 | 68 | <p>No open changes.{{if .Merged}} {{.Merged}} merged.{{end}}{{if .Closed}} {{.Closed}} closed.{{end}}</p> | |
| 69 | {{if .Merged}}<a href="/r/{{.Name}}/requests?state=merged" hx-get="/r/{{.Name}}/requests?state=merged" hx-target="#change-list" hx-swap="outerHTML" hx-push-url="true">View merged changes</a>{{end}} | ||
| 69 | {{if .Merged}}<a href="/r/{{.Name}}/changes?state=merged" hx-get="/r/{{.Name}}/changes?state=merged" hx-target="#change-list" hx-swap="outerHTML" hx-push-url="true">View merged changes</a>{{end}} | ||
| 70 | 70 | {{if and .Merged .Closed}} · {{end}} | |
| 71 | {{if .Closed}}<a href="/r/{{.Name}}/requests?state=closed" hx-get="/r/{{.Name}}/requests?state=closed" hx-target="#change-list" hx-swap="outerHTML" hx-push-url="true">View closed changes</a>{{end}} | ||
| 71 | {{if .Closed}}<a href="/r/{{.Name}}/changes?state=closed" hx-get="/r/{{.Name}}/changes?state=closed" hx-target="#change-list" hx-swap="outerHTML" hx-push-url="true">View closed changes</a>{{end}} | ||
| 72 | 72 | </div> | |
| 73 | 73 | {{else if .Filtered}} | |
| 74 | 74 | <div class="empty-state"> | |
| 75 | 75 | <p>No changes match this filter.</p> | |
| 76 | <a href="/r/{{.Name}}/requests" hx-get="/r/{{.Name}}/requests" hx-target="#change-list" hx-swap="outerHTML" hx-push-url="true">Clear filters</a> | ||
| 76 | <a href="/r/{{.Name}}/changes" hx-get="/r/{{.Name}}/changes" hx-target="#change-list" hx-swap="outerHTML" hx-push-url="true">Clear filters</a> | ||
| 77 | 77 | </div> | |
| 78 | 78 | {{else}} | |
| 79 | 79 | <div class="empty-state"> | |
| @@ -95,7 +95,7 @@ | |||
| 95 | 95 | ||
| 96 | 96 | {{define "request_changes"}} | |
| 97 | 97 | <section id="request-changes"{{if .Live}} hx-swap-oob="outerHTML"{{end}}> | |
| 98 | <h2 class="with-more"><span>{{icon "file"}}Changes</span>{{if .FileCount}} <a class="more" href="/r/{{.Name}}/requests/{{.Request.ID}}/files">View changes</a>{{end}}</h2> | ||
| 98 | <h2 class="with-more"><span>{{icon "file"}}Changes</span>{{if .FileCount}} <a class="more" href="/r/{{.Name}}/changes/{{.Request.ID}}/files">View changes</a>{{end}}</h2> | ||
| 99 | 99 | {{if .FileCount}} | |
| 100 | 100 | <p class="muted">{{.FileCount}} file(s) changed{{if .Added}} · <span class="adds">+{{.Added}}</span>{{end}}{{if .Removed}} · <span class="dels">−{{.Removed}}</span>{{end}}{{if .AlreadyMerged}} · merged into {{.Request.Base}}{{end}}</p> | |
| 101 | 101 | {{else if .AlreadyMerged}} | |
| @@ -111,7 +111,7 @@ | |||
| 111 | 111 | target picker, or an open composer is not thrown away. */}} | |
| 112 | 112 | {{define "request_aside"}} | |
| 113 | 113 | <div id="request-aside" | |
| 114 | hx-get="/r/{{.Name}}/requests/{{.Request.ID}}/live" | ||
| 114 | hx-get="/r/{{.Name}}/changes/{{.Request.ID}}/live" | ||
| 115 | 115 | hx-trigger="every 20s [document.visibilityState === 'visible']" | |
| 116 | 116 | hx-sync="this:replace" | |
| 117 | 117 | hx-swap="none"> | |
| @@ -174,7 +174,7 @@ | |||
| 174 | 174 | ||
| 175 | 175 | {{define "request_target"}} | |
| 176 | 176 | {{if .CanRetarget}} | |
| 177 | <form method="post" action="/r/{{.Name}}/requests/{{.Request.ID}}/target" class="request-target"> | ||
| 177 | <form method="post" action="/r/{{.Name}}/changes/{{.Request.ID}}/target" class="request-target"> | ||
| 178 | 178 | <input type="hidden" name="csrf" value="{{.CSRF}}"> | |
| 179 | 179 | <div class="target-fields"> | |
| 180 | 180 | <label class="target-field"> | |
| @@ -225,7 +225,7 @@ | |||
| 225 | 225 | ||
| 226 | 226 | {{define "request_checks"}} | |
| 227 | 227 | <section id="request-checks"{{if .Live}} hx-swap-oob="outerHTML"{{end}}> | |
| 228 | <h2 class="with-more"><span>{{icon "circle-check"}}Checks{{template "help" "Workflow runs for the commit under review. If the base branch requires checks, a failing or missing run blocks landing."}}</span> <a class="more" href="/r/{{.Name}}/requests/{{.Request.ID}}/runs">View runs</a></h2> | ||
| 228 | <h2 class="with-more"><span>{{icon "circle-check"}}Checks{{template "help" "Workflow runs for the commit under review. If the base branch requires checks, a failing or missing run blocks landing."}}</span> <a class="more" href="/r/{{.Name}}/changes/{{.Request.ID}}/runs">View runs</a></h2> | ||
| 229 | 229 | {{with .ContributorCI}} | |
| 230 | 230 | <p class="muted">CI is waiting for a maintainer to allow <code>{{.Ref}}</code> at this commit.</p> | |
| 231 | 231 | {{end}} | |
| @@ -291,7 +291,7 @@ | |||
| 291 | 291 | <span class="side-meta">{{who .Author}}{{if not .Created.IsZero}}<span>{{since .Created.Unix}}</span>{{end}}</span> | |
| 292 | 292 | </a> | |
| 293 | 293 | {{if $.CanEditIssues}} | |
| 294 | <form method="post" action="/r/{{$.Name}}/requests/{{$.Request.ID}}/issues" hx-post="/r/{{$.Name}}/requests/{{$.Request.ID}}/issues" hx-target="#request-issues" hx-swap="outerHTML"> | ||
| 294 | <form method="post" action="/r/{{$.Name}}/changes/{{$.Request.ID}}/issues" hx-post="/r/{{$.Name}}/changes/{{$.Request.ID}}/issues" hx-target="#request-issues" hx-swap="outerHTML"> | ||
| 295 | 295 | <input type="hidden" name="csrf" value="{{$.CSRF}}"> | |
| 296 | 296 | <input type="hidden" name="issue" value="{{.ID}}"> | |
| 297 | 297 | <button class="link request-unlink" type="submit" name="action" value="remove" title="Unlink this issue" aria-label="Unlink {{num .Number}} from this change">{{icon "unlink"}}</button> | |
| @@ -305,7 +305,7 @@ | |||
| 305 | 305 | {{end}} | |
| 306 | 306 | {{if .CanEditIssues}} | |
| 307 | 307 | <div class="request-issue-picker"> | |
| 308 | <form class="request-issue-search" hx-get="/r/{{.Name}}/requests/{{.Request.ID}}/issues/search" hx-trigger="input changed delay:250ms, search, submit" hx-target="#request-issue-results" hx-swap="innerHTML"> | ||
| 308 | <form class="request-issue-search" hx-get="/r/{{.Name}}/changes/{{.Request.ID}}/issues/search" hx-trigger="input changed delay:250ms, search, submit" hx-target="#request-issue-results" hx-swap="innerHTML"> | ||
| 309 | 309 | <input id="request-issue-search" name="q" type="search" placeholder="Search by title, #number, or ULID" aria-label="Search issues by title, number, or ULID" autocomplete="off"> | |
| 310 | 310 | </form> | |
| 311 | 311 | <div id="request-issue-results" class="request-issue-results" aria-live="polite"></div> | |
| @@ -322,7 +322,7 @@ | |||
| 322 | 322 | {{else if .Results}} | |
| 323 | 323 | <div class="request-issue-matches"> | |
| 324 | 324 | {{range .Results}} | |
| 325 | <form method="post" action="/r/{{$.Name}}/requests/{{$.Request.ID}}/issues" class="request-issue-match" hx-post="/r/{{$.Name}}/requests/{{$.Request.ID}}/issues" hx-target="#request-issues" hx-swap="outerHTML"> | ||
| 325 | <form method="post" action="/r/{{$.Name}}/changes/{{$.Request.ID}}/issues" class="request-issue-match" hx-post="/r/{{$.Name}}/changes/{{$.Request.ID}}/issues" hx-target="#request-issues" hx-swap="outerHTML"> | ||
| 326 | 326 | <input type="hidden" name="csrf" value="{{$.CSRF}}"> | |
| 327 | 327 | <input type="hidden" name="issue" value="{{.ID}}"> | |
| 328 | 328 | <button type="submit" name="action" value="add" title="Link {{num .Number}}"> | |
| @@ -341,7 +341,7 @@ | |||
| 341 | 341 | {{define "request_inline_comment"}} | |
| 342 | 342 | <tr class="inline-comment"> | |
| 343 | 343 | <td colspan="4"> | |
| 344 | <form method="post" action="/r/{{.Name}}/requests/{{.Request.ID}}/comments" class="inline-comment-form"> | ||
| 344 | <form method="post" action="/r/{{.Name}}/changes/{{.Request.ID}}/comments" class="inline-comment-form"> | ||
| 345 | 345 | <input type="hidden" name="csrf" value="{{.CSRF}}"> | |
| 346 | 346 | <input type="hidden" name="path" value="{{.Target.Path}}"> | |
| 347 | 347 | <input type="hidden" name="line" value="{{.Target.Line}}"> | |
| @@ -366,9 +366,9 @@ | |||
| 366 | 366 | <span class="page-num">{{num .Number}}</span> | |
| 367 | 367 | <h1 class="details-title-view" data-details-title-view{{if .Details.Title.Active}} hidden{{end}}>{{.Request.Title}}</h1> | |
| 368 | 368 | {{if .CanEdit}} | |
| 369 | <a class="title-edit-toggle" href="/r/{{.Name}}/requests/{{.Request.ID}}/edit"{{if .Details.Inline}} data-title-edit{{end}}{{if .Details.Title.Active}} hidden{{end}} aria-label="Edit title" title="Edit title">{{icon "pencil"}}</a> | ||
| 369 | <a class="title-edit-toggle" href="/r/{{.Name}}/changes/{{.Request.ID}}/edit"{{if .Details.Inline}} data-title-edit{{end}}{{if .Details.Title.Active}} hidden{{end}} aria-label="Edit title" title="Edit title">{{icon "pencil"}}</a> | ||
| 370 | 370 | {{if .Details.Inline}} | |
| 371 | <form class="title-edit-form" data-title-edit-form method="post" action="/r/{{.Name}}/requests/{{.Request.ID}}/edit" hx-post="/r/{{.Name}}/requests/{{.Request.ID}}/edit" hx-target="#request-head" hx-swap="outerHTML" hx-disabled-elt="find button[type='submit']"{{if not .Details.Title.Active}} hidden{{end}}> | ||
| 371 | <form class="title-edit-form" data-title-edit-form method="post" action="/r/{{.Name}}/changes/{{.Request.ID}}/edit" hx-post="/r/{{.Name}}/changes/{{.Request.ID}}/edit" hx-target="#request-head" hx-swap="outerHTML" hx-disabled-elt="find button[type='submit']"{{if not .Details.Title.Active}} hidden{{end}}> | ||
| 372 | 372 | <input type="hidden" name="csrf" value="{{.CSRF}}"> | |
| 373 | 373 | <input type="hidden" name="field" value="title"> | |
| 374 | 374 | <input class="details-title-input" type="text" name="title" required maxlength="200" aria-label="Title" value="{{if .Details.Title.Active}}{{.Details.Title.Value}}{{else}}{{.Request.Title}}{{end}}" data-title-edit-input{{if .Details.Title.Active}} autofocus{{end}}> | |
| @@ -414,7 +414,7 @@ | |||
| 414 | 414 | </form> | |
| 415 | 415 | {{end}}{{end}} | |
| 416 | 416 | {{if .CanApprove}} | |
| 417 | <form method="post" action="/r/{{.Name}}/requests/{{.Request.ID}}/approve" hx-post="/r/{{.Name}}/requests/{{.Request.ID}}/approve" hx-swap="none" hx-disabled-elt="find button[type='submit']"> | ||
| 417 | <form method="post" action="/r/{{.Name}}/changes/{{.Request.ID}}/approve" hx-post="/r/{{.Name}}/changes/{{.Request.ID}}/approve" hx-swap="none" hx-disabled-elt="find button[type='submit']"> | ||
| 418 | 418 | <input type="hidden" name="csrf" value="{{.CSRF}}"> | |
| 419 | 419 | <input type="hidden" name="base" value="{{.Request.Base}}"> | |
| 420 | 420 | <input type="hidden" name="head" value="{{.Request.Head}}"> | |
| @@ -422,18 +422,18 @@ | |||
| 422 | 422 | </form> | |
| 423 | 423 | {{end}} | |
| 424 | 424 | {{if .MergeArmed}} | |
| 425 | <form method="post" action="/r/{{.Name}}/requests/{{.Request.ID}}/merge/cancel"> | ||
| 425 | <form method="post" action="/r/{{.Name}}/changes/{{.Request.ID}}/merge/cancel"> | ||
| 426 | 426 | <input type="hidden" name="csrf" value="{{.CSRF}}"> | |
| 427 | 427 | <button class="secondary" type="submit">{{icon "circle-x"}}Cancel merge</button> | |
| 428 | 428 | </form> | |
| 429 | 429 | {{else if .CanMerge}} | |
| 430 | <form method="post" action="/r/{{.Name}}/requests/{{.Request.ID}}/merge"> | ||
| 430 | <form method="post" action="/r/{{.Name}}/changes/{{.Request.ID}}/merge"> | ||
| 431 | 431 | <input type="hidden" name="csrf" value="{{.CSRF}}"> | |
| 432 | 432 | <button class="success" type="submit"{{if .MergeBlocked}} disabled{{end}}>{{icon "git-merge"}}{{if .MergePending}}Merge when ready{{else}}Merge{{end}}</button> | |
| 433 | 433 | </form> | |
| 434 | 434 | {{end}} | |
| 435 | 435 | {{if .CanClose}} | |
| 436 | <form method="post" action="/r/{{.Name}}/requests/{{.Request.ID}}/state"> | ||
| 436 | <form method="post" action="/r/{{.Name}}/changes/{{.Request.ID}}/state"> | ||
| 437 | 437 | <input type="hidden" name="csrf" value="{{.CSRF}}"> | |
| 438 | 438 | <input type="hidden" name="state" value="{{if eq .Request.State "open"}}closed{{else}}open{{end}}"> | |
| 439 | 439 | <button class="{{if eq .Request.State "open"}}danger{{else}}secondary{{end}}" type="submit">{{if eq .Request.State "open"}}{{icon "circle-x"}}Close{{else}}{{icon "rotate-ccw"}}Reopen{{end}}</button> | |
| @@ -445,9 +445,9 @@ | |||
| 445 | 445 | ||
| 446 | 446 | {{define "request_tabs"}} | |
| 447 | 447 | <nav class="subtabs" aria-label="Change sections"> | |
| 448 | <a class="{{if eq .Tab "conversation"}}active{{end}}" href="/r/{{.Name}}/requests/{{.Request.ID}}"{{if eq .Tab "conversation"}} aria-current="page"{{end}}>{{icon "message-square"}}Conversation</a> | ||
| 449 | <a class="{{if eq .Tab "files"}}active{{end}}" href="/r/{{.Name}}/requests/{{.Request.ID}}/files"{{if eq .Tab "files"}} aria-current="page"{{end}}>{{icon "file"}}Changes <span class="chip-count">{{.FileCount}}</span></a> | ||
| 450 | <a class="{{if eq .Tab "runs"}}active{{end}}" href="/r/{{.Name}}/requests/{{.Request.ID}}/runs"{{if eq .Tab "runs"}} aria-current="page"{{end}}>{{icon "play"}}Runs <span class="chip-count">{{len .Checks}}</span></a> | ||
| 448 | <a class="{{if eq .Tab "conversation"}}active{{end}}" href="/r/{{.Name}}/changes/{{.Request.ID}}"{{if eq .Tab "conversation"}} aria-current="page"{{end}}>{{icon "message-square"}}Conversation</a> | ||
| 449 | <a class="{{if eq .Tab "files"}}active{{end}}" href="/r/{{.Name}}/changes/{{.Request.ID}}/files"{{if eq .Tab "files"}} aria-current="page"{{end}}>{{icon "file"}}Changes <span class="chip-count">{{.FileCount}}</span></a> | ||
| 450 | <a class="{{if eq .Tab "runs"}}active{{end}}" href="/r/{{.Name}}/changes/{{.Request.ID}}/runs"{{if eq .Tab "runs"}} aria-current="page"{{end}}>{{icon "play"}}Runs <span class="chip-count">{{len .Checks}}</span></a> | ||
| 451 | 451 | </nav> | |
| 452 | 452 | {{end}} | |
| 453 | 453 | ||
| @@ -469,7 +469,7 @@ | |||
| 469 | 469 | {{if .Description}}{{.Description}}{{else}}<p class="muted">No description.</p>{{end}} | |
| 470 | 470 | </div> | |
| 471 | 471 | {{if .CanEdit}} | |
| 472 | <form class="comment-edit-form details-edit-form" data-comment-edit-form method="post" action="/r/{{.Name}}/requests/{{.Request.ID}}/edit" hx-post="/r/{{.Name}}/requests/{{.Request.ID}}/edit" hx-target="#request-description" hx-swap="outerHTML" hx-disabled-elt="find button[type='submit']"{{if not .Details.Description.Active}} hidden{{end}}> | ||
| 472 | <form class="comment-edit-form details-edit-form" data-comment-edit-form method="post" action="/r/{{.Name}}/changes/{{.Request.ID}}/edit" hx-post="/r/{{.Name}}/changes/{{.Request.ID}}/edit" hx-target="#request-description" hx-swap="outerHTML" hx-disabled-elt="find button[type='submit']"{{if not .Details.Description.Active}} hidden{{end}}> | ||
| 473 | 473 | <input type="hidden" name="csrf" value="{{.CSRF}}"> | |
| 474 | 474 | <input type="hidden" name="field" value="body"> | |
| 475 | 475 | {{if .Details.Description.Error}}<p class="error">{{.Details.Description.Error}}</p>{{end}} | |
| @@ -485,7 +485,7 @@ | |||
| 485 | 485 | ||
| 486 | 486 | {{define "request"}} | |
| 487 | 487 | {{template "header" .}} | |
| 488 | {{template "repohead" (nav .Page "requests")}} | ||
| 488 | {{template "repohead" (nav .Page "changes")}} | ||
| 489 | 489 | {{template "request_head" .}} | |
| 490 | 490 | {{template "request_tabs" .}} | |
| 491 | 491 | ||