Links and GET forms to wiki pages swap the next page into .shell instead of loading a new document: the server answers boosted requests and history restores with a partial (title, page actions out-of-band, shell content). The header stays, browsers without cross-document view transitions (Firefox) no longer flash between pages, and the swap runs as a same-document view transition. Files, the editor, internal endpoints and POST forms still navigate normally. Back/Forward refetch pages (no snapshots that could predate a move or delete); the tree rail keeps its scroll position and the content column returns to where it was. Mutation redirects swap their result in the same way. Page scripts that assumed a fresh document now also run after a swap (toc, contents, companion, scroll-sync, search actions) or register once (fitness). The e2e suite now also runs in Firefox. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
57 lines
2.7 KiB
HTML
57 lines
2.7 KiB
HTML
{{define "headerActions"}}{{if .CanEdit}}
|
|
<button class="btn btn-block" onclick="newPage()" title="New page (N)"><span class="btn-icon">{{icon "new"}}</span><span class="btn-label">NEW</span></button>
|
|
<button class="btn btn-block" data-companion-reveal hidden title="Reveal in file manager"><span class="btn-icon">{{icon "reveal"}}</span><span class="btn-label">REVEAL</span></button>
|
|
{{if not .IsRoot}}
|
|
<button class="btn btn-block" onclick="movePage()" title="Move page (M)"><span class="btn-icon">{{icon "move"}}</span><span class="btn-label">MOVE</span></button>
|
|
<button class="btn btn-block danger" hx-get="?dialog=delete" hx-target="#modal-host" title="Delete page"><span class="btn-icon">{{icon "delete"}}</span><span class="btn-label">DELETE</span></button>
|
|
{{end}}
|
|
<a class="btn btn-block" href="?edit" title="Edit page (E)"><span class="btn-icon">{{icon "edit"}}</span><span class="btn-label">EDIT</span></a>
|
|
{{end}}{{end}}
|
|
|
|
{{define "content"}}
|
|
{{if .Content}}
|
|
<div class="content">{{.Content}}</div>
|
|
{{end}}
|
|
{{if .SpecialContent}}
|
|
<div class="content">{{.SpecialContent}}</div>
|
|
{{end}}
|
|
{{if not (or .Content .SpecialContent)}}
|
|
<p class="empty">{{if .Entries}}No page{{else}}Empty folder{{end}} — <a href="?edit">[CREATE]</a></p>
|
|
{{end}}
|
|
{{if .Entries}}
|
|
<h2 id="files">Files <button class="btn btn-small" data-companion-reveal hidden title="Open folder in file manager">open</button>{{if .CanEdit}} <button class="btn btn-small" hx-get="?dialog=view" hx-target="#modal-host" title="View & sorting">view</button>{{end}}</h2>
|
|
{{if eq .View "thumbnail"}}
|
|
<div class="thumb-grid">
|
|
{{range .Entries}}
|
|
<a class="thumb-tile" href="{{.URL}}" title="{{.Name}}">
|
|
{{if .ThumbURL}}<span class="thumb-media"><img class="thumb-img" src="{{.ThumbURL}}" alt="" loading="lazy" width="300">{{if .IsVideo}}<span class="thumb-play" aria-hidden="true">▶</span>{{end}}</span>{{else}}<span class="thumb-icon">{{.Icon}}</span>{{end}}
|
|
<span class="thumb-label truncate">{{.Name}}</span>
|
|
</a>
|
|
{{end}}
|
|
</div>
|
|
{{else}}
|
|
<table class="data-table panel">
|
|
<tbody>
|
|
{{range .Entries}}
|
|
<tr class="list-item" data-path="{{.URL}}">
|
|
<td class="icon">{{.Icon}}</td>
|
|
<td class="name"><a href="{{.URL}}">{{.Name}}</a></td>
|
|
<td class="meta">{{.Meta}}</td>
|
|
</tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
{{end}}
|
|
{{end}}
|
|
{{if or .Content .SpecialContent}}
|
|
<script src="{{asset "page/content.js"}}"></script>
|
|
{{if not .SuppressTOC}}<script src="{{asset "page/toc.js"}}"></script>{{end}}
|
|
{{end}}
|
|
{{if .Content}}
|
|
<script src="{{asset "page/sections.js"}}"></script>
|
|
{{end}}
|
|
<script src="{{asset "page/contents.js"}}"></script>
|
|
{{end}}
|
|
|
|
{{define "aside"}}{{if .SidebarWidget}}<aside class="sidebar">{{.SidebarWidget}}</aside>{{end}}{{end}}
|