Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • alpha
  • beta
  • develop
  • docs/fix-readme
  • docs/update-vitepress
  • draft/rss-feed
  • feat/dashboard
  • feat/episodes-page-ux
  • feat/generator-user-agent
  • feat/headliner
  • feat/new-languages
  • feat/plugins
  • fix/federation
  • fix/forms-ux
  • i18n
  • main
  • next
  • refactor/transcripts
  • v1.0.0
  • v1.0.0-alpha.1
  • v1.0.0-alpha.10
  • v1.0.0-alpha.11
  • v1.0.0-alpha.12
  • v1.0.0-alpha.13
  • v1.0.0-alpha.14
  • v1.0.0-alpha.15
  • v1.0.0-alpha.16
  • v1.0.0-alpha.17
  • v1.0.0-alpha.18
  • v1.0.0-alpha.19
  • v1.0.0-alpha.2
  • v1.0.0-alpha.20
  • v1.0.0-alpha.21
  • v1.0.0-alpha.22
  • v1.0.0-alpha.23
  • v1.0.0-alpha.24
  • v1.0.0-alpha.25
  • v1.0.0-alpha.26
  • v1.0.0-alpha.27
  • v1.0.0-alpha.28
  • v1.0.0-alpha.29
  • v1.0.0-alpha.3
  • v1.0.0-alpha.30
  • v1.0.0-alpha.31
  • v1.0.0-alpha.32
  • v1.0.0-alpha.33
  • v1.0.0-alpha.34
  • v1.0.0-alpha.35
  • v1.0.0-alpha.36
  • v1.0.0-alpha.37
  • v1.0.0-alpha.38
  • v1.0.0-alpha.39
  • v1.0.0-alpha.4
  • v1.0.0-alpha.40
  • v1.0.0-alpha.41
  • v1.0.0-alpha.42
  • v1.0.0-alpha.43
  • v1.0.0-alpha.44
  • v1.0.0-alpha.45
  • v1.0.0-alpha.46
  • v1.0.0-alpha.47
  • v1.0.0-alpha.48
  • v1.0.0-alpha.49
  • v1.0.0-alpha.5
  • v1.0.0-alpha.50
  • v1.0.0-alpha.51
  • v1.0.0-alpha.52
  • v1.0.0-alpha.53
  • v1.0.0-alpha.54
  • v1.0.0-alpha.55
  • v1.0.0-alpha.56
  • v1.0.0-alpha.57
  • v1.0.0-alpha.58
  • v1.0.0-alpha.59
  • v1.0.0-alpha.6
  • v1.0.0-alpha.60
  • v1.0.0-alpha.61
  • v1.0.0-alpha.62
  • v1.0.0-alpha.63
  • v1.0.0-alpha.64
  • v1.0.0-alpha.65
  • v1.0.0-alpha.66
  • v1.0.0-alpha.67
  • v1.0.0-alpha.68
  • v1.0.0-alpha.69
  • v1.0.0-alpha.7
  • v1.0.0-alpha.70
  • v1.0.0-alpha.71
  • v1.0.0-alpha.72
  • v1.0.0-alpha.73
  • v1.0.0-alpha.74
  • v1.0.0-alpha.75
  • v1.0.0-alpha.76
  • v1.0.0-alpha.77
  • v1.0.0-alpha.78
  • v1.0.0-alpha.79
  • v1.0.0-alpha.8
  • v1.0.0-alpha.80
  • v1.0.0-alpha.9
  • v1.0.0-beta.1
  • v1.0.0-beta.10
  • v1.0.0-beta.11
  • v1.0.0-beta.12
  • v1.0.0-beta.13
  • v1.0.0-beta.14
  • v1.0.0-beta.15
  • v1.0.0-beta.16
  • v1.0.0-beta.17
  • v1.0.0-beta.18
  • v1.0.0-beta.19
  • v1.0.0-beta.2
  • v1.0.0-beta.20
  • v1.0.0-beta.21
  • v1.0.0-beta.22
  • v1.0.0-beta.23
  • v1.0.0-beta.24
  • v1.0.0-beta.3
  • v1.0.0-beta.4
118 results

Target

Select target project
  • adaures/castopod
  • mkljczk/castopod-host
  • spaetz/castopod-host
  • PatrykMis/castopod
  • jonas/castopod
  • ajeremias/castopod
  • misuzu/castopod
  • KrzysztofDomanczyk/castopod
  • Behel/castopod
  • nebulon/castopod
  • ewen/castopod
  • NeoluxConsulting/castopod
  • nateritter/castopod-og
  • prcutler/castopod
14 results
Select Git revision
  • alpha
  • beta
  • develop
  • docs/fix-readme
  • docs/update-vitepress
  • draft/rss-feed
  • feat/dashboard
  • feat/episodes-page-ux
  • feat/generator-user-agent
  • feat/headliner
  • feat/new-languages
  • feat/plugins
  • fix/federation
  • fix/forms-ux
  • i18n
  • main
  • next
  • refactor/transcripts
  • v1.0.0
  • v1.0.0-alpha.1
  • v1.0.0-alpha.10
  • v1.0.0-alpha.11
  • v1.0.0-alpha.12
  • v1.0.0-alpha.13
  • v1.0.0-alpha.14
  • v1.0.0-alpha.15
  • v1.0.0-alpha.16
  • v1.0.0-alpha.17
  • v1.0.0-alpha.18
  • v1.0.0-alpha.19
  • v1.0.0-alpha.2
  • v1.0.0-alpha.20
  • v1.0.0-alpha.21
  • v1.0.0-alpha.22
  • v1.0.0-alpha.23
  • v1.0.0-alpha.24
  • v1.0.0-alpha.25
  • v1.0.0-alpha.26
  • v1.0.0-alpha.27
  • v1.0.0-alpha.28
  • v1.0.0-alpha.29
  • v1.0.0-alpha.3
  • v1.0.0-alpha.30
  • v1.0.0-alpha.31
  • v1.0.0-alpha.32
  • v1.0.0-alpha.33
  • v1.0.0-alpha.34
  • v1.0.0-alpha.35
  • v1.0.0-alpha.36
  • v1.0.0-alpha.37
  • v1.0.0-alpha.38
  • v1.0.0-alpha.39
  • v1.0.0-alpha.4
  • v1.0.0-alpha.40
  • v1.0.0-alpha.41
  • v1.0.0-alpha.42
  • v1.0.0-alpha.43
  • v1.0.0-alpha.44
  • v1.0.0-alpha.45
  • v1.0.0-alpha.46
  • v1.0.0-alpha.47
  • v1.0.0-alpha.48
  • v1.0.0-alpha.49
  • v1.0.0-alpha.5
  • v1.0.0-alpha.50
  • v1.0.0-alpha.51
  • v1.0.0-alpha.52
  • v1.0.0-alpha.53
  • v1.0.0-alpha.54
  • v1.0.0-alpha.55
  • v1.0.0-alpha.56
  • v1.0.0-alpha.57
  • v1.0.0-alpha.58
  • v1.0.0-alpha.59
  • v1.0.0-alpha.6
  • v1.0.0-alpha.60
  • v1.0.0-alpha.61
  • v1.0.0-alpha.62
  • v1.0.0-alpha.63
  • v1.0.0-alpha.64
  • v1.0.0-alpha.65
  • v1.0.0-alpha.66
  • v1.0.0-alpha.67
  • v1.0.0-alpha.68
  • v1.0.0-alpha.69
  • v1.0.0-alpha.7
  • v1.0.0-alpha.70
  • v1.0.0-alpha.71
  • v1.0.0-alpha.72
  • v1.0.0-alpha.73
  • v1.0.0-alpha.74
  • v1.0.0-alpha.75
  • v1.0.0-alpha.76
  • v1.0.0-alpha.77
  • v1.0.0-alpha.78
  • v1.0.0-alpha.79
  • v1.0.0-alpha.8
  • v1.0.0-alpha.80
  • v1.0.0-alpha.9
  • v1.0.0-beta.1
  • v1.0.0-beta.10
  • v1.0.0-beta.11
  • v1.0.0-beta.12
  • v1.0.0-beta.13
  • v1.0.0-beta.14
  • v1.0.0-beta.15
  • v1.0.0-beta.16
  • v1.0.0-beta.17
  • v1.0.0-beta.18
  • v1.0.0-beta.19
  • v1.0.0-beta.2
  • v1.0.0-beta.20
  • v1.0.0-beta.21
  • v1.0.0-beta.22
  • v1.0.0-beta.23
  • v1.0.0-beta.24
  • v1.0.0-beta.3
  • v1.0.0-beta.4
118 results
Show changes
Showing
with 198 additions and 110 deletions
<footer class="px-6 py-3">
<form action="<?= route_to(
'note-attempt-action',
'status-attempt-action',
interact_as_actor()->username,
$note->id,
$status->id,
) ?>" method="POST" class="flex justify-around">
<?= csrf_field() ?>
<?= anchor(
route_to('note', $podcast->name, $note->id),
icon('chat', 'text-2xl mr-1 text-gray-400') . $note->replies_count,
route_to('status', $podcast->name, $status->id),
icon('chat', 'text-2xl mr-1 text-gray-400') . $status->replies_count,
[
'class' => 'inline-flex items-center hover:underline',
'title' => lang('Note.replies', [
'numberOfReplies' => $note->replies_count,
'title' => lang('Status.replies', [
'numberOfReplies' => $status->replies_count,
]),
],
) ?>
<button type="submit" name="action" value="reblog" class="inline-flex items-center hover:underline" title="<?= lang(
'Note.reblogs',
'Status.reblogs',
[
'numberOfReblogs' => $note->reblogs_count,
'numberOfReblogs' => $status->reblogs_count,
],
) ?>"><?= icon('repeat', 'text-2xl mr-1 text-gray-400') .
$note->reblogs_count ?></button>
$status->reblogs_count ?></button>
<button type="submit" name="action" value="favourite" class="inline-flex items-center hover:underline" title="<?= lang(
'Note.favourites',
'Status.favourites',
[
'numberOfFavourites' => $note->favourites_count,
'numberOfFavourites' => $status->favourites_count,
],
) ?>"><?= icon('heart', 'text-2xl mr-1 text-gray-400') .
$note->favourites_count ?></button>
<button id="<?= $note->id .
'-more-dropdown' ?>" type="button" class="px-2 py-1 text-2xl text-gray-500 outline-none focus:ring" data-dropdown="button" data-dropdown-target="<?= $note->id .
$status->favourites_count ?></button>
<button id="<?= $status->id .
'-more-dropdown' ?>" type="button" class="px-2 py-1 text-2xl text-gray-500 outline-none focus:ring" data-dropdown="button" data-dropdown-target="<?= $status->id .
'-more-dropdown-menu' ?>" aria-label="<?= lang(
'Common.more',
) ?>" aria-haspopup="true" aria-expanded="false"><?= icon('more') ?>
</button>
</form>
<nav id="<?= $note->id .
'-more-dropdown-menu' ?>" class="flex flex-col py-2 text-sm bg-white border rounded-lg shadow" aria-labelledby="<?= $note->id .
<nav id="<?= $status->id .
'-more-dropdown-menu' ?>" class="flex flex-col py-2 text-sm bg-white border rounded-lg shadow" aria-labelledby="<?= $status->id .
'-more-dropdown' ?>" data-dropdown="menu" data-dropdown-placement="bottom">
<?= anchor(
route_to('note', $podcast->name, $note->id),
lang('Note.expand'),
route_to('status', $podcast->name, $status->id),
lang('Status.expand'),
[
'class' => 'px-4 py-1 hover:bg-gray-100',
],
) ?>
<form action="<?= route_to(
'note-attempt-block-actor',
'status-attempt-block-actor',
interact_as_actor()->username,
$note->id,
$status->id,
) ?>" method="POST">
<?= csrf_field() ?>
<button class="w-full px-4 py-1 text-left hover:bg-gray-100"><?= lang(
'Note.block_actor',
'Status.block_actor',
[
'actorUsername' => $note->actor->username,
'actorUsername' => $status->actor->username,
],
) ?></button>
</form>
<form action="<?= route_to(
'note-attempt-block-domain',
'status-attempt-block-domain',
interact_as_actor()->username,
$note->id,
$status->id,
) ?>" method="POST">
<?= csrf_field() ?>
<button class="w-full px-4 py-1 text-left hover:bg-gray-100"><?= lang(
'Note.block_domain',
'Status.block_domain',
[
'actorDomain' => $note->actor->domain,
'actorDomain' => $status->actor->domain,
],
) ?></button>
</form>
<?php if ($note->actor->is_local): ?>
<?php if ($status->actor->is_local): ?>
<hr class="my-2" />
<form action="<?= route_to(
'note-attempt-delete',
$note->actor->username,
$note->id,
'status-attempt-delete',
$status->actor->username,
$status->id,
) ?>" method="POST">
<?= csrf_field() ?>
<button class="w-full px-4 py-1 font-semibold text-left text-red-600 hover:bg-gray-100"><?= lang(
'Note.delete',
'Status.delete',
) ?></button>
</form>
<?php endif; ?>
......
<article class="relative z-10 w-full bg-white shadow-md rounded-2xl">
<header class="flex px-6 py-4">
<img src="<?= $note->actor
->avatar_image_url ?>" alt="<?= $note->display_name ?>" class="w-12 h-12 mr-4 rounded-full" />
<img src="<?= $status->actor
->avatar_image_url ?>" alt="<?= $status->display_name ?>" class="w-12 h-12 mr-4 rounded-full" />
<div class="flex flex-col min-w-0">
<a href="<?= $note->actor
->uri ?>" class="flex items-baseline hover:underline" <?= $note
<a href="<?= $status->actor
->uri ?>" class="flex items-baseline hover:underline" <?= $status
->actor->is_local
? ''
: 'target="_blank" rel="noopener noreferrer"' ?>>
<span class="mr-2 font-semibold truncate"><?= $note->actor
<span class="mr-2 font-semibold truncate"><?= $status->actor
->display_name ?></span>
<span class="text-sm text-gray-500 truncate">@<?= $note->actor
<span class="text-sm text-gray-500 truncate">@<?= $status->actor
->username .
($note->actor->is_local
($status->actor->is_local
? ''
: '@' . $note->actor->domain) ?></span>
: '@' . $status->actor->domain) ?></span>
</a>
<a href="<?= route_to('note', $podcast->name, $note->id) ?>"
<a href="<?= route_to('status', $podcast->name, $status->id) ?>"
class="text-xs text-gray-500">
<time
itemprop="published"
datetime="<?= $note->published_at->format(DateTime::ATOM) ?>"
title="<?= $note->published_at ?>"
><?= lang('Common.mediumDate', [$note->published_at]) ?></time>
datetime="<?= $status->published_at->format(DateTime::ATOM) ?>"
title="<?= $status->published_at ?>"
><?= lang('Common.mediumDate', [$status->published_at]) ?></time>
</a>
</div>
</header>
<div class="px-6 mb-4 note-content"><?= $note->message_html ?></div>
<?php if ($note->episode_id): ?>
<div class="px-6 mb-4 status-content"><?= $status->message_html ?></div>
<?php if ($status->episode_id): ?>
<?= view('podcast/_partials/episode_card', [
'episode' => $note->episode,
'episode' => $status->episode,
]) ?>
<?php elseif ($note->has_preview_card): ?>
<?php elseif ($status->has_preview_card): ?>
<?= view('podcast/_partials/preview_card', [
'preview_card' => $note->preview_card,
'preview_card' => $status->preview_card,
]) ?>
<?php endif; ?>
<?= $this->include('podcast/_partials/note_actions_authenticated') ?>
<?= $this->include('podcast/_partials/status_actions_authenticated') ?>
</article>
<?= $this->include('podcast/_partials/note') ?>
<div class="-mt-2 overflow-hidden border-b border-l border-r note-replies rounded-b-xl">
<?= $this->include('podcast/_partials/status') ?>
<div class="-mt-2 overflow-hidden border-b border-l border-r status-replies rounded-b-xl">
<div class="px-6 pt-8 pb-4 bg-gray-50">
<?= anchor_popup(
route_to('note-remote-action', $podcast->name, $note->id, 'reply'),
lang('Note.reply_to', ['actorUsername' => $note->actor->username]),
route_to('status-remote-action', $podcast->name, $status->id, 'reply'),
lang('Status.reply_to', ['actorUsername' => $status->actor->username]),
[
'class' =>
'text-center justify-center font-semibold rounded-full shadow relative z-10 px-4 py-2 w-full bg-rose-600 text-white inline-flex items-center hover:bg-rose-700',
......@@ -15,8 +15,8 @@
</div>
<?php if ($note->has_replies): ?>
<?php foreach ($note->replies as $reply): ?>
<?php if ($status->has_replies): ?>
<?php foreach ($status->replies as $reply): ?>
<?= view('podcast/_partials/reply', ['reply' => $reply]) ?>
<?php endforeach; ?>
<?php endif; ?>
......
<?= $this->include('podcast/_partials/note_authenticated') ?>
<div class="-mt-2 overflow-hidden border-b border-l border-r note-replies rounded-b-xl">
<?= $this->include('podcast/_partials/status_authenticated') ?>
<div class="-mt-2 overflow-hidden border-b border-l border-r status-replies rounded-b-xl">
<?= form_open(
route_to('note-attempt-action', interact_as_actor()->username, $note->id),
route_to('status-attempt-action', interact_as_actor()->username, $status->id),
[
'class' => 'bg-gray-50 flex px-6 pt-8 pb-4',
],
......@@ -16,8 +16,8 @@
'name' => 'message',
'class' => 'form-textarea mb-4 w-full',
'required' => 'required',
'placeholder' => lang('Note.form.reply_to_placeholder', [
'actorUsername' => $note->actor->username,
'placeholder' => lang('Status.form.reply_to_placeholder', [
'actorUsername' => $status->actor->username,
]),
],
old('message', '', false),
......@@ -26,7 +26,7 @@
],
) ?>
<?= button(
lang('Note.form.submit_reply'),
lang('Status.form.submit_reply'),
'',
['variant' => 'primary', 'size' => 'small'],
[
......@@ -39,8 +39,8 @@
</div>
<?= form_close() ?>
<?php if ($note->has_replies): ?>
<?php foreach ($note->replies as $reply): ?>
<?php if ($status->has_replies): ?>
<?php foreach ($status->replies as $reply): ?>
<?= view('podcast/_partials/reply_authenticated', [
'reply' => $reply,
]) ?>
......
......@@ -39,13 +39,13 @@
</nav>
<section class="max-w-2xl px-6 py-8 mx-auto space-y-8">
<?php foreach ($notes as $note): ?>
<?php if ($note->reblog_of_id !== null): ?>
<?php foreach ($statuses as $status): ?>
<?php if ($status->reblog_of_id !== null): ?>
<?= view('podcast/_partials/reblog', [
'note' => $note->reblog_of_note,
'status' => $status->reblog_of_status,
]) ?>
<?php else: ?>
<?= view('podcast/_partials/note', ['note' => $note]) ?>
<?= view('podcast/_partials/status', ['status' => $status]) ?>
<?php endif; ?>
<?php endforeach; ?>
</section>
......
......@@ -39,7 +39,7 @@
</nav>
<section class="max-w-2xl px-6 py-8 mx-auto">
<?= form_open(route_to('note-attempt-create', interact_as_actor()->username), [
<?= form_open(route_to('status-attempt-create', interact_as_actor()->username), [
'class' => 'flex p-4 bg-white shadow rounded-xl',
]) ?>
<?= csrf_field() ?>
......@@ -56,7 +56,7 @@
'name' => 'message',
'class' => 'form-textarea',
'required' => 'required',
'placeholder' => lang('Note.form.message_placeholder'),
'placeholder' => lang('Status.form.message_placeholder'),
],
old('message', '', false),
['rows' => 2],
......@@ -66,7 +66,7 @@
'name' => 'episode_url',
'class' => 'form-input mb-2',
'placeholder' =>
lang('Note.form.episode_url_placeholder') .
lang('Status.form.episode_url_placeholder') .
' (' .
lang('Common.optional') .
')',
......@@ -74,7 +74,7 @@
]) ?>
<?= button(
lang('Note.form.submit'),
lang('Status.form.submit'),
'',
['variant' => 'primary', 'size' => 'small'],
['type' => 'submit', 'class' => 'self-end'],
......@@ -84,13 +84,13 @@
<hr class="my-4 border-2 border-pine-100">
<div class="space-y-8">
<?php foreach ($notes as $note): ?>
<?php if ($note->reblog_of_id !== null): ?>
<?php foreach ($statuses as $status): ?>
<?php if ($status->reblog_of_id !== null): ?>
<?= view('podcast/_partials/reblog_authenticated', [
'note' => $note->reblog_of_note,
'status' => $status->reblog_of_status,
]) ?>
<?php else: ?>
<?= view('podcast/_partials/note_authenticated', ['note' => $note]) ?>
<?= view('podcast/_partials/status_authenticated', ['status' => $status]) ?>
<?php endif; ?>
<?php endforeach; ?>
</div>
......
......@@ -75,12 +75,12 @@
<?= anchor(
route_to('episode', $podcast->name, $episode->slug),
icon('chat', 'text-xl mr-1 text-gray-400') .
$episode->notes_total,
$episode->statuses_total,
[
'class' =>
'inline-flex items-center hover:underline',
'title' => lang('Episode.total_notes', [
'numberOfTotalNotes' => $episode->notes_total,
'title' => lang('Episode.total_statuses', [
'numberOfTotalStatuses' => $episode->statuses_total,
]),
],
) ?>
......@@ -122,24 +122,24 @@
</header>
<div class="tabset">
<?php if ($episode->notes): ?>
<?php if ($episode->statuses): ?>
<input type="radio" name="tabset" id="activity" aria-controls="activity" checked="checked" />
<label for="activity"><?= lang('Episode.activity') ?></label>
<?php endif; ?>
<input type="radio" name="tabset" id="description" aria-controls="description" <?= $episode->notes
<input type="radio" name="tabset" id="description" aria-controls="description" <?= $episode->statuses
? ''
: 'checked="checked"' ?> />
<label for="description" class="<?= $episode->notes
<label for="description" class="<?= $episode->statuses
? ''
: 'col-span-2' ?>"><?= lang('Episode.description') ?></label>
<div class="tab-panels">
<?php if ($episode->notes): ?>
<?php if ($episode->statuses): ?>
<section id="activity" class="space-y-8 tab-panel">
<?php foreach ($episode->notes as $note): ?>
<?= view('podcast/_partials/note', ['note' => $note]) ?>
<?php foreach ($episode->statuses as $status): ?>
<?= view('podcast/_partials/status', ['status' => $status]) ?>
<?php endforeach; ?>
</section>
<?php endif; ?>
......
......@@ -75,12 +75,12 @@
<?= anchor(
route_to('episode', $podcast->name, $episode->slug),
icon('chat', 'text-xl mr-1 text-gray-400') .
$episode->notes_total,
$episode->statuses_total,
[
'class' =>
'inline-flex items-center hover:underline',
'title' => lang('Episode.total_notes', [
'numberOfTotalNotes' => $episode->notes_total,
'title' => lang('Episode.total_statuses', [
'numberOfTotalStatuses' => $episode->statuses_total,
]),
],
) ?>
......@@ -130,7 +130,7 @@
<div class="tab-panels">
<section id="activity" class="space-y-8 tab-panel">
<?= form_open(route_to('note-attempt-create', $podcast->name), [
<?= form_open(route_to('status-attempt-create', $podcast->name), [
'class' => 'flex p-4 bg-white shadow rounded-xl',
]) ?>
<?= csrf_field() ?>
......@@ -148,7 +148,7 @@
'class' => 'form-textarea mb-2',
'required' => 'required',
'placeholder' => lang(
'Note.form.episode_message_placeholder',
'Status.form.episode_message_placeholder',
),
],
old('message', '', false),
......@@ -163,7 +163,7 @@
'type' => 'hidden',
]) ?>
<?= button(
lang('Note.form.submit'),
lang('Status.form.submit'),
'',
['variant' => 'primary', 'size' => 'small'],
['type' => 'submit', 'class' => 'self-end'],
......@@ -171,9 +171,9 @@
</div>
<?= form_close() ?>
<hr class="my-4 border border-pine-100">
<?php foreach ($episode->notes as $note): ?>
<?= view('podcast/_partials/note_authenticated', [
'note' => $note,
<?php foreach ($episode->statuses as $status): ?>
<?= view('podcast/_partials/status_authenticated', [
'status' => $status,
]) ?>
<?php endforeach; ?>
</section>
......
......@@ -121,12 +121,12 @@
<?= anchor(
route_to('episode', $podcast->name, $episode->slug),
icon('chat', 'text-xl mr-1 text-gray-400') .
$episode->notes_total,
$episode->statuses_total,
[
'class' =>
'inline-flex items-center hover:underline',
'title' => lang('Episode.total_notes', [
'numberOfTotalNotes' => $episode->notes_total,
'title' => lang('Episode.total_statuses', [
'numberOfTotalStatuses' => $episode->statuses_total,
]),
],
) ?>
......
......@@ -121,12 +121,12 @@
<?= anchor(
route_to('episode', $podcast->name, $episode->slug),
icon('chat', 'text-xl mr-1 text-gray-400') .
$episode->notes_total,
$episode->statuses_total,
[
'class' =>
'inline-flex items-center hover:underline',
'title' => lang('Episode.total_notes', [
'numberOfTotalNotes' => $episode->notes_total,
'title' => lang('Episode.total_statuses', [
'numberOfTotalStatuses' => $episode->statuses_total,
]),
],
) ?>
......
<?= $this->extend('podcast/_layout') ?>
<?= $this->section('meta-tags') ?>
<title><?= lang('Note.title', [
'actorDisplayName' => $note->actor->display_name,
<title><?= lang('Status.title', [
'actorDisplayName' => $status->actor->display_name,
]) ?></title>
<meta name="description" content="<?= $note->message ?>"/>
<meta property="og:title" content="<?= lang('Note.title', [
'actorDisplayName' => $note->actor->display_name,
<meta name="description" content="<?= $status->message ?>"/>
<meta property="og:title" content="<?= lang('Status.title', [
'actorDisplayName' => $status->actor->display_name,
]) ?>"/>
<meta property="og:locale" content="<?= service(
'request',
)->getLocale() ?>" />
<meta property="og:site_name" content="<?= $note->actor->display_name ?>" />
<meta property="og:site_name" content="<?= $status->actor->display_name ?>" />
<meta property="og:url" content="<?= current_url() ?>" />
<meta property="og:image" content="<?= $note->actor->avatar_image_url ?>" />
<meta property="og:description" content="<?= $note->message ?>" />
<meta property="og:image" content="<?= $status->actor->avatar_image_url ?>" />
<meta property="og:description" content="<?= $status->message ?>" />
<?= $this->endSection() ?>
<?= $this->section('content') ?>
......@@ -25,12 +25,12 @@
'arrow-left',
'mr-2 text-lg',
) .
lang('Note.back_to_actor_notes', [
'actor' => $note->actor->display_name,
lang('Status.back_to_actor_statuses', [
'actor' => $status->actor->display_name,
]) ?></a>
</nav>
<div class="pb-12">
<?= $this->include('podcast/_partials/note_with_replies') ?>
<?= $this->include('podcast/_partials/status_with_replies') ?>
</div>
</div>
......
<?= $this->extend('podcast/_layout_authenticated') ?>
<?= $this->section('meta-tags') ?>
<title><?= lang('Note.title', [
'actorDisplayName' => $note->actor->display_name,
<title><?= lang('Status.title', [
'actorDisplayName' => $status->actor->display_name,
]) ?></title>
<meta name="description" content="<?= $note->message ?>"/>
<meta property="og:title" content="<?= lang('Note.title', [
'actorDisplayName' => $note->actor->display_name,
<meta name="description" content="<?= $status->message ?>"/>
<meta property="og:title" content="<?= lang('Status.title', [
'actorDisplayName' => $status->actor->display_name,
]) ?>"/>
<meta property="og:locale" content="<?= service(
'request',
)->getLocale() ?>" />
<meta property="og:site_name" content="<?= $note->actor->display_name ?>" />
<meta property="og:site_name" content="<?= $status->actor->display_name ?>" />
<meta property="og:url" content="<?= current_url() ?>" />
<meta property="og:image" content="<?= $note->actor->avatar_image_url ?>" />
<meta property="og:description" content="<?= $note->message ?>" />
<meta property="og:image" content="<?= $status->actor->avatar_image_url ?>" />
<meta property="og:description" content="<?= $status->message ?>" />
<?= $this->endSection() ?>
<?= $this->section('content') ?>
......@@ -25,13 +25,13 @@
'arrow-left',
'mr-2 text-lg',
) .
lang('Note.back_to_actor_notes', [
'actor' => $note->actor->display_name,
lang('Status.back_to_actor_statuses', [
'actor' => $status->actor->display_name,
]) ?></a>
</nav>
<div class="pb-12">
<?= $this->include(
'podcast/_partials/note_with_replies_authenticated',
'podcast/_partials/status_with_replies_authenticated',
) ?>
</div>
</div>
......
......@@ -7,22 +7,22 @@
<link rel="shortcut icon" type="image/png" href="/favicon.ico" />
<title><?= lang('ActivityPub.' . $action . '.title', [
'actorDisplayName' => $note->actor->display_name,
'actorDisplayName' => $status->actor->display_name,
]) ?></title>
<meta name="description" content="<?= $note->message ?>"/>
<meta name="description" content="<?= $status->message ?>"/>
<meta property="og:title" content="<?= lang(
'ActivityPub.' . $action . '.title',
[
'actorDisplayName' => $note->actor->display_name,
'actorDisplayName' => $status->actor->display_name,
],
) ?>"/>
<meta property="og:locale" content="<?= service(
'request',
)->getLocale() ?>" />
<meta property="og:site_name" content="<?= $note->actor->display_name ?>" />
<meta property="og:site_name" content="<?= $status->actor->display_name ?>" />
<meta property="og:url" content="<?= current_url() ?>" />
<meta property="og:image" content="<?= $note->actor->avatar_image_url ?>" />
<meta property="og:description" content="<?= $note->message ?>" />
<meta property="og:image" content="<?= $status->actor->avatar_image_url ?>" />
<meta property="og:description" content="<?= $status->message ?>" />
<link rel="stylesheet" href="/assets/index.css"/>
<script src="/assets/podcast.js" type="module"></script>
......@@ -35,10 +35,10 @@
) ?></h1>
</header>
<main class="flex-1 max-w-xl px-4 pb-8 mx-auto -mt-24">
<?= $this->include('podcast/_partials/note') ?>
<?= $this->include('podcast/_partials/status') ?>
<?= form_open(
route_to('note-attempt-remote-action', $note->id, $action),
route_to('status-attempt-remote-action', $status->id, $action),
['method' => 'post', 'class' => 'flex flex-col mt-8'],
) ?>
<?= csrf_field() ?>
......
{
"name": "podlibre/castopod-host",
"version": "1.0.0-alpha60",
"version": "1.0.0-alpha61",
"type": "project",
"description": "Castopod Host is an open-source hosting platform made for podcasters who want engage and interact with their audience.",
"homepage": "https://castopod.org",
......
......@@ -4,8 +4,8 @@
- [Introduction](#introduction)
- [Pre-requisites](#pre-requisites)
- [(recommended) Develop inside the app Container with VSCode](#recommended-develop-inside-the-app-container-with-vscode)
- [(not-recommended) Develop outside the app container](#not-recommended-develop-outside-the-app-container)
- [(recommended) Develop inside the app Container with VSCode](#recommended-develop-inside-the-app-container-with-vscode)
- [(not-recommended) Develop outside the app container](#not-recommended-develop-outside-the-app-container)
- [Install Castopod Host's dependencies](#install-castopod-hosts-dependencies)
- [Initialize and populate database](#initialize-and-populate-database)
- [Start hacking](#start-hacking)
......@@ -335,7 +335,7 @@ and run `npm install` again.
### Files created inside container are attributed to root locally (Linux)
You may use Linux user namespaces to fix this:
You may use Linux user namespaces to fix this on your machine:
> **Note:**
>
......@@ -352,11 +352,13 @@ You may use Linux user namespaces to fix this:
2. Configure the subordinate uid/guid:
```bash
# in /etc/subuid
username:1000:1
username:100000:65536
```
```bash
# in /etc/subgid
username:1000:1
username:100000:65536
```
......@@ -368,7 +370,7 @@ You may use Linux user namespaces to fix this:
```
4. That's it! Now, the root user in the container will be mapped to the user on
your local machine, no more permission problems! 🎉
your local machine, no more permission issues! 🎉
You can check
[this great article](https://www.jujens.eu/posts/en/2017/Jul/02/docker-userns-remap/)
......
{
"name": "castopod-host",
"version": "1.0.0-alpha.60",
"version": "1.0.0-alpha.61",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"version": "1.0.0-alpha.60",
"version": "1.0.0-alpha.61",
"license": "AGPL-3.0-or-later",
"dependencies": {
"@amcharts/amcharts4": "^4.10.17",
{
"name": "castopod-host",
"version": "1.0.0-alpha.60",
"version": "1.0.0-alpha.61",
"description": "Castopod Host is an open-source hosting platform made for podcasters who want engage and interact with their audience.",
"private": true,
"license": "AGPL-3.0-or-later",
......
......@@ -2,11 +2,17 @@
# see https://github.com/conventional-changelog/commitlint/issues/885
if [ "${CI_COMMIT_BEFORE_SHA}" = "0000000000000000000000000000000000000000" ]
if [ "${CI_COMMIT_BEFORE_SHA}" = "0000000000000000000000000000000000000000" ];
then
echo "commitlint from HEAD^"
npx commitlint --from=HEAD^
else
echo "commitlint from ${CI_COMMIT_BEFORE_SHA}"
npx commitlint --from="${CI_COMMIT_BEFORE_SHA}"
br=`git branch -r --contains ${CI_COMMIT_BEFORE_SHA}`
if [ ! -n $br ];
then
npx commitlint --from=HEAD^
else
npx commitlint --from="${CI_COMMIT_BEFORE_SHA}"
fi
fi
#!/bin/bash
VERSION=$1
apt-get install zip -y
# create zip and tar.gz packages for release upload
......