SPB Git

spb/drive Public

SPB Drive — self-hosted personal cloud drive (files, previews, sharing) on the MacLustr cluster.

JavaScript 82.7% CSS 10.6% Nunjucks 3.6% Shell 1.8% SQL 1.3%
2.6 KB · 58 lines jinja
Raw Blame History
1{#2  ─────────────────────────────────────────────3   SPB Drive — Personal Cloud Drive4  ─────────────────────────────────────────────5   Author  : Simon-Pierre Boucher6   Contact : contact@spboucher.ai7   File    : src/web/views/share-file.njk8   Purpose : Public single-file share page — full preview + download9   License : MIT © Simon-Pierre Boucher10  ─────────────────────────────────────────────11#}12{% extends "base.njk" %}13{% block title %}{{ node.name }} · SPB Drive{% endblock %}14{% block og %}15  <meta property="og:site_name" content="SPB Drive">16  <meta property="og:title" content="{{ og.title }}">17  <meta property="og:type" content="website">18  <meta property="og:url" content="{{ og.url }}">19  <meta property="og:description" content="{{ node.size | filesize }} · shared by Simon-Pierre Boucher">20  {% if og.image %}<meta property="og:image" content="{{ og.image }}">21  <meta name="twitter:card" content="summary_large_image">22  <meta name="twitter:image" content="{{ og.image }}">{% else %}23  <meta name="twitter:card" content="summary">{% endif %}24  <meta name="twitter:title" content="{{ og.title }}">25{% endblock %}26{% block body %}27<div class="share-page"28     data-token="{{ share.token }}"29     data-node-id="{{ node.id }}"30     data-name="{{ node.name }}"31     data-size="{{ node.size }}"32     data-allow-download="{{ '1' if allowDownload else '0' }}">33  <header class="share-topbar">34    <div class="brand"><div class="mark">SPB</div><span>SPB Drive</span></div>35  </header>36  <main class="share-main">37    <div class="share-file-head">38      <span class="fico" id="shareIcon"></span>39      <div>40        <h1>{{ node.name }}</h1>41        <div class="fmeta">{{ node.size | filesize }}</div>42      </div>43      {% if allowDownload %}44      <a class="btn primary" href="/s/{{ share.token }}/dl" download>45        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="16" height="16"><path d="M12 4v12m0 0 5-5m-5 5-5-5"/><path d="M4 19h16"/></svg>46        Download47      </a>48      {% endif %}49    </div>50    <div class="share-stage" id="shareStage"></div>51  </main>52  <footer class="share-footer">53    Shared by Simon-Pierre Boucher · <a href="mailto:contact@spboucher.ai">contact@spboucher.ai</a>54  </footer>55</div>56<script type="module" src="/assets/js/share-page.js"></script>57{% endblock %}58