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

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
Show changes
Commits on Source (2)
# [1.0.0-alpha.24](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.23...v1.0.0-alpha.24) (2020-11-26)
### Features
* **monetization:** add Web Monetization support ([96a6026](https://code.podlibre.org/podlibre/castopod/commit/96a6026f1db452085360f5fe248de82a2ec06468))
# [1.0.0-alpha.23](https://code.podlibre.org/podlibre/castopod/compare/v1.0.0-alpha.22...v1.0.0-alpha.23) (2020-11-24)
......
......@@ -7,7 +7,7 @@
//
// NOTE: this constant is updated upon release with Continuous Integration.
//
defined('CP_VERSION') || define('CP_VERSION', '1.0.0-alpha.23');
defined('CP_VERSION') || define('CP_VERSION', '1.0.0-alpha.24');
//--------------------------------------------------------------------
// App Namespace
......
......@@ -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() ?>" />
......
{
"name": "podlibre/castopod",
"version": "1.0.0-alpha23",
"version": "1.0.0-alpha24",
"type": "project",
"description": "Castopod is an open-source hosting platform made for podcasters who want engage and interact with their audience.",
"homepage": "https://castopod.org",
......
{
"name": "castopod",
"version": "1.0.0-alpha.23",
"version": "1.0.0-alpha.24",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
......
{
"name": "castopod",
"version": "1.0.0-alpha.23",
"version": "1.0.0-alpha.24",
"description": "Castopod 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",
......
test