diff --git a/app/Controllers/Admin/Podcast.php b/app/Controllers/Admin/Podcast.php index 10c153a6..359bee61 100644 --- a/app/Controllers/Admin/Podcast.php +++ b/app/Controllers/Admin/Podcast.php @@ -161,6 +161,7 @@ class Podcast extends BaseController 'publisher' => $this->request->getPost('publisher'), 'type' => $this->request->getPost('type'), 'copyright' => $this->request->getPost('copyright'), + 'payment_pointer' => $this->request->getPost('payment_pointer'), 'is_blocked' => $this->request->getPost('is_blocked') === 'yes', 'is_completed' => $this->request->getPost('complete') === 'yes', 'is_locked' => $this->request->getPost('lock') === 'yes', @@ -253,6 +254,9 @@ class Podcast extends BaseController $this->podcast->owner_email = $this->request->getPost('owner_email'); $this->podcast->type = $this->request->getPost('type'); $this->podcast->copyright = $this->request->getPost('copyright'); + $this->podcast->payment_pointer = $this->request->getPost( + 'payment_pointer' + ); $this->podcast->is_blocked = $this->request->getPost('is_blocked') === 'yes'; $this->podcast->is_completed = diff --git a/app/Database/Migrations/2020-05-30-101500_add_podcasts.php b/app/Database/Migrations/2020-05-30-101500_add_podcasts.php index 3ba966f8..30ba95ed 100644 --- a/app/Database/Migrations/2020-05-30-101500_add_podcasts.php +++ b/app/Database/Migrations/2020-05-30-101500_add_podcasts.php @@ -117,6 +117,12 @@ class AddPodcasts extends Migration 'The RSS new feed URL if this podcast is moving out, NULL otherwise.', 'null' => true, ], + 'payment_pointer' => [ + 'type' => 'VARCHAR', + 'constraint' => 128, + 'comment' => 'Wallet address for Web Monetization payments', + 'null' => true, + ], 'created_by' => [ 'type' => 'INT', 'unsigned' => true, diff --git a/app/Entities/Podcast.php b/app/Entities/Podcast.php index d86851c5..8b8076b5 100644 --- a/app/Entities/Podcast.php +++ b/app/Entities/Podcast.php @@ -96,6 +96,7 @@ class Podcast extends Entity 'is_locked' => 'boolean', 'imported_feed_url' => '?string', 'new_feed_url' => '?string', + 'payment_pointer' => '?string', 'created_by' => 'integer', 'updated_by' => 'integer', ]; diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index e7bc4ffb..8b9f9adc 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -65,6 +65,14 @@ function get_rss_feed($podcast, $serviceName = '') $itunes_image = $channel->addChild('image', null, $itunes_namespace); $itunes_image->addAttribute('href', $podcast->image->original_url); $channel->addChild('language', $podcast->language_code); + + if (!empty($podcast->payment_pointer)) { + $channel->addChild( + 'monetization', + $podcast->payment_pointer, + $podcast_namespace + ); + } $channel ->addChild( 'locked', diff --git a/app/Language/en/Podcast.php b/app/Language/en/Podcast.php index acf88d9f..7e7c7378 100644 --- a/app/Language/en/Podcast.php +++ b/app/Language/en/Podcast.php @@ -61,6 +61,12 @@ return [ 'publisher_hint' => 'The group responsible for creating the show. Often refers to the parent company or network of a podcast. This field is sometimes labeled as ’Author’.', 'copyright' => 'Copyright', + 'monetization_section_title' => 'Monetization', + 'monetization_section_subtitle' => + 'Earn money thanks to your audience.', + 'payment_pointer' => 'Payment Pointer for Web Monetization', + 'payment_pointer_hint' => + 'This is your where you will receive money thanks to Web Monetization', 'status_section_title' => 'Status', 'status_section_subtitle' => 'Dead or alive?', 'block' => 'Podcast should be hidden from all platforms', diff --git a/app/Language/fr/Podcast.php b/app/Language/fr/Podcast.php index 117a8bb7..754d3af7 100644 --- a/app/Language/fr/Podcast.php +++ b/app/Language/fr/Podcast.php @@ -62,6 +62,13 @@ return [ 'publisher_hint' => 'Le groupe responsable de la création du podcast. Fait souvent référence à la société mère ou au réseau d’un podcast. Ce champ est parfois appelé « Auteur ».', 'copyright' => 'Droit d’auteur', + 'monetization_section_title' => 'Monétisation', + 'monetization_section_subtitle' => + 'Gagnez de l’argent grâce à votre audience.', + 'payment_pointer' => + 'Adresse de paiement (Payment Pointer) pour Web Monetization', + 'payment_pointer_hint' => + 'L’adresse où vous recevrez de l’argent grâce à Web Monetization', 'status_section_title' => 'Statut', 'status_section_subtitle' => 'Vivant ou mort ?', 'block' => 'Le podcast doit être masqué sur toutes les plateformes', diff --git a/app/Models/PodcastModel.php b/app/Models/PodcastModel.php index 7ac59412..ee14d835 100644 --- a/app/Models/PodcastModel.php +++ b/app/Models/PodcastModel.php @@ -37,6 +37,7 @@ class PodcastModel extends Model 'is_blocked', 'is_completed', 'is_locked', + 'payment_pointer', 'created_by', 'updated_by', ]; diff --git a/app/Views/admin/podcast/create.php b/app/Views/admin/podcast/create.php index 0196b6fb..8ee46f8f 100644 --- a/app/Views/admin/podcast/create.php +++ b/app/Views/admin/podcast/create.php @@ -241,6 +241,24 @@ = form_section_close() ?> += form_section( + lang('Podcast.form.monetization_section_title'), + lang('Podcast.form.monetization_section_subtitle') +) ?> + += form_label( + lang('Podcast.form.payment_pointer'), + 'payment_pointer', + [], + lang('Podcast.form.payment_pointer_hint') +) ?> += form_input([ + 'id' => 'payment_pointer', + 'name' => 'payment_pointer', + 'class' => 'form-input mb-4', + 'value' => old('payment_pointer'), +]) ?> += form_section_close() ?> = form_section( lang('Podcast.form.status_section_title'), @@ -249,10 +267,7 @@ = form_switch( lang('Podcast.form.block'), - [ - 'id' => 'block', - 'name' => 'block', - ], + ['id' => 'block', 'name' => 'block'], 'yes', old('block', false), 'mb-2' @@ -260,10 +275,7 @@ = form_switch( lang('Podcast.form.complete'), - [ - 'id' => 'complete', - 'name' => 'complete', - ], + ['id' => 'complete', 'name' => 'complete'], 'yes', old('complete', false), 'mb-2' @@ -279,7 +291,6 @@ = form_section_close() ?> - = button( lang('Podcast.form.submit_create'), null, diff --git a/app/Views/admin/podcast/edit.php b/app/Views/admin/podcast/edit.php index 664bfd05..2dc63290 100644 --- a/app/Views/admin/podcast/edit.php +++ b/app/Views/admin/podcast/edit.php @@ -251,6 +251,24 @@ = form_section_close() ?> += form_section( + lang('Podcast.form.monetization_section_title'), + lang('Podcast.form.monetization_section_subtitle') +) ?> + += form_label( + lang('Podcast.form.payment_pointer'), + 'payment_pointer', + [], + lang('Podcast.form.payment_pointer_hint') +) ?> += form_input([ + 'id' => 'payment_pointer', + 'name' => 'payment_pointer', + 'class' => 'form-input mb-4', + 'value' => old('payment_pointer', $podcast->payment_pointer), +]) ?> += form_section_close() ?> = form_section( lang('Podcast.form.status_section_title'), diff --git a/app/Views/episode.php b/app/Views/episode.php index f97ff387..4b04a7d3 100644 --- a/app/Views/episode.php +++ b/app/Views/episode.php @@ -7,6 +7,10 @@