{% import "net/http" %} {% import "strings" %} {% import "path" %} {% import "os" %} {% import "github.com/bouncepaw/mycorrhiza/cfg" %} {% import "github.com/bouncepaw/mycorrhiza/hyphae" %} {% import "github.com/bouncepaw/mycorrhiza/categories" %} {% import "github.com/bouncepaw/mycorrhiza/l18n" %} {% import "github.com/bouncepaw/mycorrhiza/mimetype" %} {% import "github.com/bouncepaw/mycorrhiza/tree" %} {% import "github.com/bouncepaw/mycorrhiza/user" %} {% import "github.com/bouncepaw/mycorrhiza/util" %} {% import "github.com/bouncepaw/mycorrhiza/viewutil" %} {% func MediaMenu(rq *http.Request, h hyphae.Hypha, u *user.User) %} {% code lc := l18n.FromRequest(rq) %} <main class="main-width media-tab"> <h1>{%s= lc.Get("ui.media_title", &l18n.Replacements{"name": beautifulLink(h.CanonicalName())}) %}</h1> {% switch h.(type) %} {% case *hyphae.MediaHypha %} <p class="explanation">{%s lc.Get("ui.media_tip") %} <a href="/help/en/media" class="shy-link">{%s lc.Get("ui.media_what_is") %}</a></p> {% default %} <p class="explanation">{%s lc.Get("ui.media_empty") %} <a href="/help/en/media" class="shy-link">{%s lc.Get("ui.media_what_is") %}</a></p> {% endswitch %} <section class="amnt-grid"> {% switch h := h.(type) %} {% case *hyphae.MediaHypha %} {% code mime := mimetype.FromExtension(path.Ext(h.MediaFilePath())) fileinfo, err := os.Stat(h.MediaFilePath()) %} {% if err == nil %} <fieldset class="amnt-menu-block"> <legend class="modal__title modal__title_small">{%s lc.Get("ui.media_stat") %}</legend> <p class="modal__confirmation-msg"><b>{%s lc.Get("ui.media_stat_size") %}</b> {%s lc.GetPlural64("ui.media_size_value", fileinfo.Size())%}</p> <p><b>{%s lc.Get("ui.media_stat_mime") %}</b> {%s mime %}</p> </fieldset> {% endif %} {% if strings.HasPrefix(mime, "image/") %} <fieldset class="amnt-menu-block"> <legend class="modal__title modal__title_small">{%s lc.Get("ui.media_include") %}</legend> <p class="modal__confirmation-msg">{%s lc.Get("ui.media_include_tip") %}</p> <pre class="codeblock"><code>img { {%s h.CanonicalName() %} }</code></pre> </fieldset> {% endif %} {% endswitch %} {% if u.CanProceed("upload-binary") %} <form action="/upload-binary/{%s h.CanonicalName() %}" method="post" enctype="multipart/form-data" class="upload-binary modal amnt-menu-block"> <fieldset class="modal__fieldset"> <legend class="modal__title modal__title_small">{%s lc.Get("ui.media_new") %}</legend> <p class="modal__confirmation-msg">{%s lc.Get("ui.media_new_tip") %}</p> <label for="upload-binary__input"></label> <input type="file" id="upload-binary__input" name="binary"> <button type="submit" class="btn stick-to-bottom" value="Upload">{%s lc.Get("ui.media_upload")%}</button> </fieldset> </form> {% endif %} {% switch h := h.(type) %} {% case *hyphae.MediaHypha %} {% if u.CanProceed("remove-media") %} <form action="/remove-media/{%s h.CanonicalName() %}" method="post" class="modal amnt-menu-block" method="POST"> <fieldset class="modal__fieldset"> <legend class="modal__title modal__title_small">{%s lc.Get("ui.media_remove") %}</legend> <p class="modal__confirmation-msg">{%s lc.Get("ui.media_remove_tip") %}</p> <button type="submit" class="btn" value="Remove media">{%s lc.Get("ui.media_remove_button") %}</button> </fieldset> </form> {% endif %} {% endswitch %} </section> </main> {% endfunc %} If `contents` == "", a helpful message is shown instead. If you rename .prevnext, change the docs too. {% func Hypha(meta viewutil.Meta, h hyphae.Hypha, contents string) %} {% code subhyphae, prevHyphaName, nextHyphaName := tree.Tree(h.CanonicalName()) lc := meta.Lc %} <main class="main-width"> <section id="hypha"> {% if meta.U.CanProceed("edit") %} <div class="btn btn_navititle"> <a class="btn__link_navititle" href="/edit/{%s h.CanonicalName() %}">{%s lc.Get("ui.edit_link") %}</a> </div> {% endif %} {% if cfg.UseAuth && util.IsProfileName(h.CanonicalName()) && meta.U.Name == strings.TrimPrefix(h.CanonicalName(), cfg.UserHypha + "/") %} <div class="btn btn_navititle"> <a class="btn__link_navititle" href="/logout">{%s lc.Get("ui.logout_link") %}</a> </div> {% if meta.U.Group == "admin" %} <div class="btn btn_navititle"> <a class="btn__link_navititle" href="/admin">{%s lc.Get("ui.admin_panel") %}<a> </div> {% endif %} {% endif %} {%s= NaviTitle(meta, h.CanonicalName()) %} {% switch h.(type) %} {% case *hyphae.EmptyHypha %} {%s= EmptyHypha(meta, h.CanonicalName()) %} {% default %} {%s= contents %} {% endswitch %} </section> <section class="prevnext"> {% if prevHyphaName != "" %} <a class="prevnext__el prevnext__prev" href="/hypha/{%s prevHyphaName %}" rel="prev">← {%s util.BeautifulName(path.Base(prevHyphaName)) %}</a> {% endif %} {% if nextHyphaName != "" %} <a class="prevnext__el prevnext__next" href="/hypha/{%s nextHyphaName %}" rel="next">{%s util.BeautifulName(path.Base(nextHyphaName)) %} →</a> {% endif %} </section> {% if strings.TrimSpace(subhyphae) != "" %} <section class="subhyphae"> <h2 class="subhyphae__title">{%s lc.Get("ui.subhyphae") %}</h2> <nav class="subhyphae__nav"> <ul class="subhyphae__list"> {%s= subhyphae %} </ul> </nav> </section> {% endif %} <section id="hypha-bottom"> {%= hyphaInfo(meta, h) %} </section> </main> {%s= categories.CategoryCard(meta, h.CanonicalName()) %} {%= viewScripts() %} {% endfunc %} {% func Revision(meta viewutil.Meta, h hyphae.Hypha, contents, revHash string) %} <main class="main-width"> <section> <p>{%s meta.Lc.Get("ui.revision_warning") %} <a href="/rev-text/{%s revHash %}/{%s h.CanonicalName() %}">{%s meta.Lc.Get("ui.revision_link") %}</a></p> {%s= NaviTitle(meta, h.CanonicalName()) %} {%s= contents %} </section> </main> {%= viewScripts() %} {% endfunc %} {% func viewScripts() %} {% for _, scriptPath := range cfg.ViewScripts %} <script src="{%s scriptPath %}"></script> {% endfor %} {% endfunc %}