Changeset e84ce32 in Klonkt for src/views


Ignore:
Timestamp:
07/24/2026 05:34:51 PM (7 weeks ago)
Author:
Robin Genis <roboburr@…>
Branches:
main
Children:
1a2d8ac
Parents:
318d0c2
Message:

Voogdij-aanvraag als speciaal bericht in Berichten, met accepteer-knop

Robins besluit (optie C): een guardianship-offer hoort bij het kind binnen
te komen in de eigen Klonkt, als speciaal bericht in Berichten, met een
accepteer- en weiger-knop. De kindveiligheid rond het accepteren wordt
out-of-band geregeld door de ouders/guardians zelf; het kind heeft een
Klonkt en de guardians ook.

Berichten toont pending offers (ward-kant van ap_guardianships) bovenaan
als kaart met boei-accent: wie het is, de uitleg-tekst (bespreek dit met je
ouders), en Accepteer/Weiger. Het antwoord loopt door dezelfde C2S
Accept/Reject-pijplijn als de Shaer-apps, dus één pad, één gedrag. De
offer_received-push wijst nu naar Berichten in plaats van /guardian (daar
kon het kind niks).

Changed files:
src/routes/posts.js

  • GET /messages geeft guardianOffers mee (role=ward, status=offered)
  • POST /messages/guardianship: accept/reject via de handshake-module

src/views/pages/messages.ejs

  • offer-kaart met accepteer/weiger-form; nette success/error-teksten

src/services/i18n.js

  • msg.guard_* in nl/en/de

src/services/ActivityPubService.js

  • offer_received-push linkt naar Berichten

remarks: de Shaer-apps volgen apart (adopt-flow eruit, accepteer-optie op
offers; Shaer is voor wards).

-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/messages.ejs

    r318d0c2 re84ce32  
    22  <%- include('../partials/fedi-tabs', { active: 'berichten' }) %>
    33  <h1 class="msg-title"><%= t('msg.title') %></h1>
    4   <% if (typeof success !== 'undefined' && success) { %><div class="alert alert-success"><%= success %></div><% } %>
    5   <% if (typeof error !== 'undefined' && error) { %><div class="alert alert-error"><%= error %></div><% } %>
     4  <% if (typeof success !== 'undefined' && success) { %><div class="alert alert-success"><%= success === 'guardian_accepted' ? t('msg.guard_accepted') : (success === 'guardian_rejected' ? t('msg.guard_rejected') : success) %></div><% } %>
     5  <% if (typeof error !== 'undefined' && error) { %><div class="alert alert-error"><%= error === 'guardianship' ? t('msg.guard_failed') : error %></div><% } %>
     6
     7  <%# FEP-633c: a pending guardianship offer is a special message: the kid
     8      answers here (accept/reject travels the same C2S pipeline as the apps). %>
     9  <% if (typeof guardianOffers !== 'undefined' && guardianOffers.length) { %>
     10    <% guardianOffers.forEach(function(o){ %>
     11    <div class="alert" style="display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-left:3px solid #ff6b35;">
     12      <span style="font-size:1.4em;">&#128735;</span>
     13      <div style="flex:1;min-width:200px;">
     14        <strong><%= o.other_handle || o.other_uri %></strong><br>
     15        <span><%= t('msg.guard_offer') %></span>
     16      </div>
     17      <form method="post" action="<%= (typeof moreBase !== 'undefined' ? moreBase : '') %>/messages/guardianship" style="display:flex;gap:8px;">
     18        <input type="hidden" name="guardian" value="<%= o.other_uri %>">
     19        <button class="btn" type="submit" name="answer" value="accept"><%= t('msg.guard_accept') %></button>
     20        <button class="btn" type="submit" name="answer" value="reject" style="opacity:.7;"><%= t('msg.guard_reject') %></button>
     21      </form>
     22    </div>
     23    <% }); %>
     24  <% } %>
    625
    726  <div class="msg-filters" role="tablist" aria-label="<%= t('msg.title') %>">
Note: See TracChangeset for help on using the changeset viewer.