feat(monetization): add Web Monetization support
This commit is contained in:
parent
e8771755b7
commit
96a6026f1d
|
@ -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 =
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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',
|
||||
];
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -37,6 +37,7 @@ class PodcastModel extends Model
|
|||
'is_blocked',
|
||||
'is_completed',
|
||||
'is_locked',
|
||||
'payment_pointer',
|
||||
'created_by',
|
||||
'updated_by',
|
||||
];
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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'),
|
||||
|
|
|
@ -7,6 +7,10 @@
|
|||
<title><?= $episode->title ?></title>
|
||||
<meta name="description" content="<?= $episode->description ?>"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<?php if (
|
||||
!empty($podcast->payment_pointer)
|
||||
): ?> <meta name="monetization" content="<?= $podcast->payment_pointer ?>">
|
||||
<?php endif; ?>
|
||||
<link rel="shortcut icon" type="image/png" href="/favicon.ico" />
|
||||
<link rel="stylesheet" href="/assets/index.css"/>
|
||||
<link rel="canonical" href="<?= current_url() ?>" />
|
||||
|
|
|
@ -8,6 +8,10 @@
|
|||
<title><?= $podcast->title ?></title>
|
||||
<meta name="description" content="<?= $podcast->description ?>"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<?php if (
|
||||
!empty($podcast->payment_pointer)
|
||||
): ?> <meta name="monetization" content="<?= $podcast->payment_pointer ?>">
|
||||
<?php endif; ?>
|
||||
<link rel="shortcut icon" type="image/png" href="/favicon.ico" />
|
||||
<link rel="stylesheet" href="/assets/index.css"/>
|
||||
<link rel="canonical" href="<?= current_season_url() ?>" />
|
||||
|
|
Loading…
Reference in New Issue