Skip to main content

max / makenotwork

5.2 KB · 123 lines History Blame Raw
1 {% extends "base.html" %}
2
3 {% block title %}{{ item.title }} - Makenotwork{% endblock %}
4 {% block body_attrs %} class="{{ crate::shell::measure(crate::shell::Measure::Reading) }}"{% endblock %}
5
6 {% block og_type %}<meta property="og:type" content="article">{% endblock %}
7 {% block social_card %}
8 {% if let Some(img) = item.cover_image_url %}
9 <meta property="og:image" content="{{ img }}">
10 <meta name="twitter:card" content="summary_large_image">
11 <meta name="twitter:image" content="{{ img }}">
12 {% else %}
13 <meta name="twitter:card" content="summary">
14 {% endif %}
15 {% endblock %}
16
17 {% block head %}
18 <meta property="og:title" content="{{ item.title }} - {{ creator_username }}">
19 <meta property="og:description" content="{{ item.description }}">
20 <meta property="og:url" content="{{ host_url }}/i/{{ item.id }}">
21 <meta name="twitter:title" content="{{ item.title }} - {{ creator_username }}">
22 <meta name="twitter:description" content="{{ item.description }}">
23 <script type="application/ld+json">
24 {
25 "@context": "https://schema.org",
26 "@type": "Article",
27 "headline": "{{ item.title_json()|safe }}",
28 "description": "{{ item.description_json()|safe }}",
29 "url": "{{ host_url }}/i/{{ item.id }}",
30 "author": {
31 "@type": "Person",
32 "name": "{{ creator_username }}",
33 "url": "{{ host_url }}/u/{{ creator_username }}"
34 },
35 "datePublished": "{{ item.release_date }}"{% if let Some(img) = item.cover_image_url %},
36 "image": "{{ img }}"{% endif %},
37 "isPartOf": {
38 "@type": "WebSite",
39 "name": "Makenotwork",
40 "url": "{{ host_url }}"
41 }
42 }
43 </script>
44 {% endblock %}
45
46 {% block content %}
47 {% include "partials/site_header.html" %}
48
49 <article class="article-container">
50 <header class="author-header">
51 <div class="author-avatar">{{ creator_avatar_initials }}</div>
52 <div class="author-info">
53 <div class="author-name"><a href="/u/{{ creator_username }}" class="unstyled-link">{% if let Some(name) = creator_display_name %}{{ name }}{% else %}{{ creator_username }}{% endif %}</a></div>
54 <div class="article-meta">{{ item.release_date }}{% match item.content %}{% when crate::types::ItemContent::Text with { reading_time, .. } %}{% if let Some(rt) = reading_time %} | {{ rt }}{% endif %}{% when _ %}{% endmatch %}</div>
55 </div>
56 </header>
57
58 <h1 class="article-title">{{ item.title }}</h1>
59
60 {% if !item.description.is_empty() %}
61 <p class="article-deck">{{ item.description }}</p>
62 {% endif %}
63
64 {% if let Some(text) = excerpt %}
65 <div class="article-body article-body--excerpt">
66 <p>{{ text }}</p>
67 </div>
68 {% endif %}
69
70 <div class="store-cta">
71 {% if has_access %}
72 <p class="store-cta-lead">You have access to this article.</p>
73 <a href="/l/{{ item.id }}" class="btn-primary">Read in library &rarr;</a>
74 {% else if is_free %}
75 {% if let Some(_user) = session_user %}
76 {% if in_library %}
77 <span class="library-status">In your library &middot; <a href="/l/{{ item.id }}">Read now &rarr;</a></span>
78 {% else %}
79 <button class="add-to-library-btn btn-primary"
80 hx-post="/api/library/add/{{ item.id }}"
81 hx-swap="outerHTML">Add to Library - Free</button>
82 {% endif %}
83 {% else %}
84 <a href="/login?redirect=/l/{{ item.id }}" class="btn-primary">Log in to read - Free</a>
85 {% endif %}
86 {% else %}
87 <p class="store-cta-price">{{ item.price }}</p>
88 {% if let Some(_user) = session_user %}
89 <a href="/purchase/{{ item.id }}" class="btn-primary">{% if item.pwyw_enabled %}Pay What You Want{% else %}Buy Once{% endif %} - {{ item.price }}</a>
90 {% else %}
91 <a href="/login?redirect=/i/{{ item.id }}" class="btn-primary">Log in to purchase</a>
92 {% endif %}
93 <p class="store-cta-note">Support {{ creator_username }} directly, 0% platform fee.</p>
94 {% endif %}
95 </div>
96
97 <footer class="article-footer">
98 <div class="author-bio">
99 <div class="author-avatar">{{ creator_avatar_initials }}</div>
100 <div class="author-bio-content">
101 <div class="author-bio-name">
102 <a href="/u/{{ creator_username }}" class="unstyled-link">{% if let Some(name) = creator_display_name %}{{ name }}{% else %}{{ creator_username }}{% endif %}</a>
103 </div>
104 </div>
105 </div>
106
107 {% if !item.tags.is_empty() %}
108 <div class="article-tags">
109 {% for tag in item.tags %}
110 <a href="/discover?tag={{ tag.slug }}" class="article-tag unstyled-link">{{ tag.name }}</a>
111 {% endfor %}
112 </div>
113 {% endif %}
114
115 <div class="reader-actions">
116 <a href="/i/{{ item.id }}" data-copy-link>Copy link</a>
117 </div>
118 </footer>
119 </article>
120
121 {% include "partials/discussion_section.html" %}
122 {% endblock %}
123