- Timestamp:
- 06/24/2026 04:37:32 PM (3 months ago)
- Branches:
- main
- Children:
- 9cc0f9f
- Parents:
- 434c2e9
- Location:
- src/views
- Files:
-
- 3 edited
-
pages/post.ejs (modified) (2 diffs)
-
pages/timeline.ejs (modified) (1 diff)
-
partials/like-button.ejs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/views/pages/post.ejs
r434c2e9 rf6c414e 33 33 <% if (post.status === 'published') { %> 34 34 <div class="post-like-row"> 35 <%- include('../partials/like-button', { post: post, likedByMe: (typeof likedByMe !== 'undefined' && likedByMe), likeCount: (typeof likeCount !== 'undefined' ? likeCount : 0), loggedIn: !!user, loginNext: _base + '/' + post.slug}) %>35 <%- include('../partials/like-button', { post: post, noteUri: (typeof ogOrigin !== 'undefined' && ogOrigin ? ogOrigin : '') + (typeof _base !== 'undefined' && _base ? _base : '') + '/' + post.slug, fediLikeCount: (typeof fediverse !== 'undefined' && fediverse ? fediverse.likeCount : 0), fediPh: t('fedi.remote_ph') }) %> 36 36 </div> 37 37 <% } %> … … 127 127 + '<button type="submit" class="btn btn-primary fedi-remote-go" aria-label="ok">→</button>' 128 128 + '<button type="button" class="fedi-remote-cancel" aria-label="x">×</button>'; 129 f.querySelector('input').placeholder = b.getAttribute('data-fedi-ph') || ' @name@server.social';129 f.querySelector('input').placeholder = b.getAttribute('data-fedi-ph') || 'mastodon.social'; 130 130 document.body.appendChild(f); // floating popover → no layout reflow 131 131 place(f, b); current = f; currentBtn = b; -
src/views/pages/timeline.ejs
r434c2e9 rf6c414e 111 111 var f = document.createElement('form'); f.className='fedi-remote-form'; f.dataset.uri = b.getAttribute('data-fedi-uri')||''; 112 112 f.innerHTML = '<input type="text" autocomplete="off" spellcheck="false"><button type="submit" class="btn btn-primary fedi-remote-go" aria-label="ok">→</button><button type="button" class="fedi-remote-cancel" aria-label="x">×</button>'; 113 f.querySelector('input').placeholder = b.getAttribute('data-fedi-ph') || ' @name@server.social';113 f.querySelector('input').placeholder = b.getAttribute('data-fedi-ph') || 'mastodon.social'; 114 114 document.body.appendChild(f); place(f, b); current=f; currentBtn=b; f.querySelector('input').focus(); 115 115 return; -
src/views/partials/like-button.ejs
r434c2e9 rf6c414e 1 <%# Like/favourite button for a post. Logged in → htmx toggle (POST /posts/:id/like, 2 swaps outerHTML back with this partial). Not logged in → link to login. 3 Expects: post (with .id), likedByMe, likeCount, loggedIn, loginNext. %> 4 <% 5 var _liked = (typeof likedByMe !== 'undefined' && likedByMe); 6 var _cnt = (typeof likeCount !== 'undefined' && likeCount != null) ? likeCount : 0; 7 var _logged = (typeof loggedIn !== 'undefined' && loggedIn); 8 %> 9 <% if (_logged) { %> 10 <button type="button" class="like-btn<%= _liked ? ' is-liked' : '' %>" 11 hx-post="/posts/<%= post.id %>/like" hx-swap="outerHTML" 12 aria-pressed="<%= _liked ? 'true' : 'false' %>" 13 aria-label="<%= _liked ? 'Uit favorieten verwijderen' : 'Toevoegen aan favorieten' %>" 14 title="<%= _liked ? 'Uit favorieten verwijderen' : 'Toevoegen aan favorieten' %>"> 15 <span class="like-heart" aria-hidden="true"><%= _liked ? '♥' : '♡' %></span> 16 <span class="like-count"><%= _cnt %></span> 17 </button> 18 <% } else { %> 19 <a class="like-btn" href="/auth/login?next=<%= encodeURIComponent((typeof loginNext !== 'undefined' && loginNext) ? loginNext : '/') %>" 20 title="<%= t('like.login_title') %>"> 21 <span class="like-heart" aria-hidden="true">♡</span> 22 <span class="like-count"><%= _cnt %></span> 23 </a> 24 <% } %> 1 <%# Fediverse like — a visitor likes this post out loud from their OWN fediverse 2 account. Click → popover asks only for their server (e.g. mastodon.social) → 3 bounces to that server's /authorize_interaction, where they favourite it. 4 Reuses the .fedi-remote-reply-btn popover wired in post.ejs. The count shows 5 the incoming fediverse likes. 6 Expects: noteUri (post's public URL), fediLikeCount, fediPh (server hint). %> 7 <button type="button" class="like-btn fedi-remote-reply-btn" 8 data-fedi-uri="<%= typeof noteUri !== 'undefined' ? noteUri : '' %>" 9 data-fedi-ph="<%= typeof fediPh !== 'undefined' && fediPh ? fediPh : 'mastodon.social' %>" 10 aria-label="<%= t('like.fedi_title') %>" title="<%= t('like.fedi_title') %>"> 11 <span class="like-heart" aria-hidden="true">★</span> 12 <span class="like-count"><%= (typeof fediLikeCount !== 'undefined' && fediLikeCount) ? fediLikeCount : 0 %></span> 13 </button>
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)