mirror of
https://code.castopod.org/adaures/castopod
synced 2025-06-06 18:31:05 +00:00
style: update ecs config to align associative arrays arrows
update composer dependencies to latest
This commit is contained in:
parent
3fc1d8e18d
commit
2a50f6e4d2
@ -12,42 +12,24 @@ class DocTypes
|
|||||||
* @var array<string, string>
|
* @var array<string, string>
|
||||||
*/
|
*/
|
||||||
public array $list = [
|
public array $list = [
|
||||||
'xhtml11' =>
|
'xhtml11' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">',
|
||||||
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">',
|
'xhtml1-strict' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
|
||||||
'xhtml1-strict' =>
|
'xhtml1-trans' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
|
||||||
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
|
'xhtml1-frame' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">',
|
||||||
'xhtml1-trans' =>
|
'xhtml-basic11' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">',
|
||||||
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
|
|
||||||
'xhtml1-frame' =>
|
|
||||||
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">',
|
|
||||||
'xhtml-basic11' =>
|
|
||||||
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">',
|
|
||||||
'html5' => '<!DOCTYPE html>',
|
'html5' => '<!DOCTYPE html>',
|
||||||
'html4-strict' =>
|
'html4-strict' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',
|
||||||
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',
|
'html4-trans' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
|
||||||
'html4-trans' =>
|
'html4-frame' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">',
|
||||||
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
|
'mathml1' => '<!DOCTYPE math SYSTEM "http://www.w3.org/Math/DTD/mathml1/mathml.dtd">',
|
||||||
'html4-frame' =>
|
'mathml2' => '<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">',
|
||||||
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">',
|
'svg10' => '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">',
|
||||||
'mathml1' =>
|
'svg11' => '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">',
|
||||||
'<!DOCTYPE math SYSTEM "http://www.w3.org/Math/DTD/mathml1/mathml.dtd">',
|
'svg11-basic' => '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">',
|
||||||
'mathml2' =>
|
'svg11-tiny' => '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">',
|
||||||
'<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">',
|
'xhtml-math-svg-xh' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">',
|
||||||
'svg10' =>
|
'xhtml-math-svg-sh' => '<!DOCTYPE svg:svg PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">',
|
||||||
'<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">',
|
'xhtml-rdfa-1' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">',
|
||||||
'svg11' =>
|
'xhtml-rdfa-2' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">',
|
||||||
'<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">',
|
|
||||||
'svg11-basic' =>
|
|
||||||
'<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">',
|
|
||||||
'svg11-tiny' =>
|
|
||||||
'<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">',
|
|
||||||
'xhtml-math-svg-xh' =>
|
|
||||||
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">',
|
|
||||||
'xhtml-math-svg-sh' =>
|
|
||||||
'<!DOCTYPE svg:svg PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">',
|
|
||||||
'xhtml-rdfa-1' =>
|
|
||||||
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">',
|
|
||||||
'xhtml-rdfa-2' =>
|
|
||||||
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">',
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -28,20 +28,15 @@ class Generators extends BaseConfig
|
|||||||
* @var array<string, string>
|
* @var array<string, string>
|
||||||
*/
|
*/
|
||||||
public array $views = [
|
public array $views = [
|
||||||
'make:command' =>
|
'make:command' => 'CodeIgniter\Commands\Generators\Views\command.tpl.php',
|
||||||
'CodeIgniter\Commands\Generators\Views\command.tpl.php',
|
|
||||||
'make:config' => 'CodeIgniter\Commands\Generators\Views\config.tpl.php',
|
'make:config' => 'CodeIgniter\Commands\Generators\Views\config.tpl.php',
|
||||||
'make:controller' =>
|
'make:controller' => 'CodeIgniter\Commands\Generators\Views\controller.tpl.php',
|
||||||
'CodeIgniter\Commands\Generators\Views\controller.tpl.php',
|
|
||||||
'make:entity' => 'CodeIgniter\Commands\Generators\Views\entity.tpl.php',
|
'make:entity' => 'CodeIgniter\Commands\Generators\Views\entity.tpl.php',
|
||||||
'make:filter' => 'CodeIgniter\Commands\Generators\Views\filter.tpl.php',
|
'make:filter' => 'CodeIgniter\Commands\Generators\Views\filter.tpl.php',
|
||||||
'make:migration' =>
|
'make:migration' => 'CodeIgniter\Commands\Generators\Views\migration.tpl.php',
|
||||||
'CodeIgniter\Commands\Generators\Views\migration.tpl.php',
|
|
||||||
'make:model' => 'CodeIgniter\Commands\Generators\Views\model.tpl.php',
|
'make:model' => 'CodeIgniter\Commands\Generators\Views\model.tpl.php',
|
||||||
'make:seeder' => 'CodeIgniter\Commands\Generators\Views\seeder.tpl.php',
|
'make:seeder' => 'CodeIgniter\Commands\Generators\Views\seeder.tpl.php',
|
||||||
'make:validation' =>
|
'make:validation' => 'CodeIgniter\Commands\Generators\Views\validation.tpl.php',
|
||||||
'CodeIgniter\Commands\Generators\Views\validation.tpl.php',
|
'session:migration' => 'CodeIgniter\Commands\Generators\Views\migration.tpl.php',
|
||||||
'session:migration' =>
|
|
||||||
'CodeIgniter\Commands\Generators\Views\migration.tpl.php',
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -199,8 +199,7 @@ class Images extends BaseConfig
|
|||||||
'medium' => [
|
'medium' => [
|
||||||
'width' => 320,
|
'width' => 320,
|
||||||
'height' => 320,
|
'height' => 320,
|
||||||
'mimetype' =>
|
'mimetype' => 'image/webp',
|
||||||
'image/webp',
|
|
||||||
'extension' => 'webp',
|
'extension' => 'webp',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
@ -51,10 +51,8 @@ class CreditsController extends BaseController
|
|||||||
'persons' => [
|
'persons' => [
|
||||||
$personId => [
|
$personId => [
|
||||||
'full_name' => $credit->person->full_name,
|
'full_name' => $credit->person->full_name,
|
||||||
'thumbnail_url' =>
|
'thumbnail_url' => get_avatar_url($credit->person, 'thumbnail'),
|
||||||
get_avatar_url($credit->person, 'thumbnail'),
|
'information_url' => $credit->person->information_url,
|
||||||
'information_url' =>
|
|
||||||
$credit->person->information_url,
|
|
||||||
'roles' => [
|
'roles' => [
|
||||||
$personRole => [
|
$personRole => [
|
||||||
'role_label' => $credit->role_label,
|
'role_label' => $credit->role_label,
|
||||||
@ -89,8 +87,7 @@ class CreditsController extends BaseController
|
|||||||
$personRole = $credit->person_role;
|
$personRole = $credit->person_role;
|
||||||
$credits[$personGroup]['persons'][$personId] = [
|
$credits[$personGroup]['persons'][$personId] = [
|
||||||
'full_name' => $credit->person->full_name,
|
'full_name' => $credit->person->full_name,
|
||||||
'thumbnail_url' =>
|
'thumbnail_url' => get_avatar_url($credit->person, 'thumbnail'),
|
||||||
get_avatar_url($credit->person, 'thumbnail'),
|
|
||||||
'information_url' => $credit->person->information_url,
|
'information_url' => $credit->person->information_url,
|
||||||
'roles' => [
|
'roles' => [
|
||||||
$personRole => [
|
$personRole => [
|
||||||
|
@ -229,8 +229,7 @@ class EpisodeController extends BaseController
|
|||||||
'provider_url' => $this->podcast->link,
|
'provider_url' => $this->podcast->link,
|
||||||
'author_name' => $this->podcast->title,
|
'author_name' => $this->podcast->title,
|
||||||
'author_url' => $this->podcast->link,
|
'author_url' => $this->podcast->link,
|
||||||
'html' =>
|
'html' => '<iframe src="' .
|
||||||
'<iframe src="' .
|
|
||||||
$this->episode->embed_url .
|
$this->episode->embed_url .
|
||||||
'" width="100%" height="' . config('Embed')->height . '" frameborder="0" scrolling="no"></iframe>',
|
'" width="100%" height="' . config('Embed')->height . '" frameborder="0" scrolling="no"></iframe>',
|
||||||
'width' => config('Embed')
|
'width' => config('Embed')
|
||||||
|
@ -217,8 +217,7 @@ class PodcastController extends BaseController
|
|||||||
$episodesNavigation[] = [
|
$episodesNavigation[] = [
|
||||||
'label' => $year['year'],
|
'label' => $year['year'],
|
||||||
'number_of_episodes' => $year['number_of_episodes'],
|
'number_of_episodes' => $year['number_of_episodes'],
|
||||||
'route' =>
|
'route' => route_to('podcast-episodes', $this->podcast->handle) .
|
||||||
route_to('podcast-episodes', $this->podcast->handle) .
|
|
||||||
'?year=' .
|
'?year=' .
|
||||||
$year['year'],
|
$year['year'],
|
||||||
'is_active' => $isActive,
|
'is_active' => $isActive,
|
||||||
@ -243,8 +242,7 @@ class PodcastController extends BaseController
|
|||||||
'seasonNumber' => $season['season_number'],
|
'seasonNumber' => $season['season_number'],
|
||||||
]),
|
]),
|
||||||
'number_of_episodes' => $season['number_of_episodes'],
|
'number_of_episodes' => $season['number_of_episodes'],
|
||||||
'route' =>
|
'route' => route_to('podcast-episodes', $this->podcast->handle) .
|
||||||
route_to('podcast-episodes', $this->podcast->handle) .
|
|
||||||
'?season=' .
|
'?season=' .
|
||||||
$season['season_number'],
|
$season['season_number'],
|
||||||
'is_active' => $isActive,
|
'is_active' => $isActive,
|
||||||
|
@ -118,15 +118,13 @@ class AddPodcasts extends Migration
|
|||||||
'imported_feed_url' => [
|
'imported_feed_url' => [
|
||||||
'type' => 'VARCHAR',
|
'type' => 'VARCHAR',
|
||||||
'constraint' => 512,
|
'constraint' => 512,
|
||||||
'comment' =>
|
'comment' => 'The RSS feed URL if this podcast was imported, NULL otherwise.',
|
||||||
'The RSS feed URL if this podcast was imported, NULL otherwise.',
|
|
||||||
'null' => true,
|
'null' => true,
|
||||||
],
|
],
|
||||||
'new_feed_url' => [
|
'new_feed_url' => [
|
||||||
'type' => 'VARCHAR',
|
'type' => 'VARCHAR',
|
||||||
'constraint' => 512,
|
'constraint' => 512,
|
||||||
'comment' =>
|
'comment' => 'The RSS new feed URL if this podcast is moving out, NULL otherwise.',
|
||||||
'The RSS new feed URL if this podcast is moving out, NULL otherwise.',
|
|
||||||
'null' => true,
|
'null' => true,
|
||||||
],
|
],
|
||||||
'payment_pointer' => [
|
'payment_pointer' => [
|
||||||
|
@ -38,8 +38,7 @@ class AddPersons extends Migration
|
|||||||
'information_url' => [
|
'information_url' => [
|
||||||
'type' => 'VARCHAR',
|
'type' => 'VARCHAR',
|
||||||
'constraint' => 512,
|
'constraint' => 512,
|
||||||
'comment' =>
|
'comment' => 'The url to a relevant resource of information about the person, such as a homepage or third-party profile platform.',
|
||||||
'The url to a relevant resource of information about the person, such as a homepage or third-party profile platform.',
|
|
||||||
'null' => true,
|
'null' => true,
|
||||||
],
|
],
|
||||||
'avatar_id' => [
|
'avatar_id' => [
|
||||||
|
@ -240,8 +240,7 @@ class FakeWebsiteAnalyticsSeeder extends Seeder
|
|||||||
$websiteByReferer[] = [
|
$websiteByReferer[] = [
|
||||||
'podcast_id' => $podcast->id,
|
'podcast_id' => $podcast->id,
|
||||||
'date' => date('Y-m-d', $date),
|
'date' => date('Y-m-d', $date),
|
||||||
'referer_url' =>
|
'referer_url' => 'http://' . $domain . '/?q=' . $keyword,
|
||||||
'http://' . $domain . '/?q=' . $keyword,
|
|
||||||
'domain' => $domain,
|
'domain' => $domain,
|
||||||
'keywords' => $keyword,
|
'keywords' => $keyword,
|
||||||
'hits' => $hits,
|
'hits' => $hits,
|
||||||
|
@ -290,8 +290,7 @@ class LanguageSeeder extends Seeder
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
'code' => 'ie',
|
'code' => 'ie',
|
||||||
'native_name' =>
|
'native_name' => 'Interlingue, formerly Occidental',
|
||||||
'Interlingue, formerly Occidental',
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'code' => 'ig',
|
'code' => 'ig',
|
||||||
|
@ -38,8 +38,7 @@ class PlatformSeeder extends Seeder
|
|||||||
'type' => 'podcasting',
|
'type' => 'podcasting',
|
||||||
'label' => 'Apple Podcasts',
|
'label' => 'Apple Podcasts',
|
||||||
'home_url' => 'https://www.apple.com/itunes/podcasts/',
|
'home_url' => 'https://www.apple.com/itunes/podcasts/',
|
||||||
'submit_url' =>
|
'submit_url' => 'https://podcastsconnect.apple.com/my-podcasts/new-feed',
|
||||||
'https://podcastsconnect.apple.com/my-podcasts/new-feed',
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'slug' => 'blubrry',
|
'slug' => 'blubrry',
|
||||||
@ -60,8 +59,7 @@ class PlatformSeeder extends Seeder
|
|||||||
'type' => 'podcasting',
|
'type' => 'podcasting',
|
||||||
'label' => 'Castbox',
|
'label' => 'Castbox',
|
||||||
'home_url' => 'https://castbox.fm/',
|
'home_url' => 'https://castbox.fm/',
|
||||||
'submit_url' =>
|
'submit_url' => 'https://helpcenter.castbox.fm/portal/kb/articles/submit-my-podcast',
|
||||||
'https://helpcenter.castbox.fm/portal/kb/articles/submit-my-podcast',
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'slug' => 'castopod',
|
'slug' => 'castopod',
|
||||||
@ -75,8 +73,7 @@ class PlatformSeeder extends Seeder
|
|||||||
'type' => 'podcasting',
|
'type' => 'podcasting',
|
||||||
'label' => 'Castro',
|
'label' => 'Castro',
|
||||||
'home_url' => 'http://castro.fm/',
|
'home_url' => 'http://castro.fm/',
|
||||||
'submit_url' =>
|
'submit_url' => 'https://castro.fm/support/link-to-your-podcast-in-castro',
|
||||||
'https://castro.fm/support/link-to-your-podcast-in-castro',
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'slug' => 'chartable',
|
'slug' => 'chartable',
|
||||||
@ -104,8 +101,7 @@ class PlatformSeeder extends Seeder
|
|||||||
'type' => 'podcasting',
|
'type' => 'podcasting',
|
||||||
'label' => 'Google Podcasts',
|
'label' => 'Google Podcasts',
|
||||||
'home_url' => 'https://podcasts.google.com/about',
|
'home_url' => 'https://podcasts.google.com/about',
|
||||||
'submit_url' =>
|
'submit_url' => 'https://search.google.com/search-console/about',
|
||||||
'https://search.google.com/search-console/about',
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'slug' => 'ivoox',
|
'slug' => 'ivoox',
|
||||||
@ -210,8 +206,7 @@ class PlatformSeeder extends Seeder
|
|||||||
'type' => 'podcasting',
|
'type' => 'podcasting',
|
||||||
'label' => 'Podverse',
|
'label' => 'Podverse',
|
||||||
'home_url' => 'https://podverse.fm/',
|
'home_url' => 'https://podverse.fm/',
|
||||||
'submit_url' =>
|
'submit_url' => 'https://docs.google.com/forms/d/e/1FAIpQLSdewKP-YrE8zGjDPrkmoJEwCxPl_gizEkmzAlTYsiWAuAk1Ng/viewform',
|
||||||
'https://docs.google.com/forms/d/e/1FAIpQLSdewKP-YrE8zGjDPrkmoJEwCxPl_gizEkmzAlTYsiWAuAk1Ng/viewform',
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'slug' => 'radiopublic',
|
'slug' => 'radiopublic',
|
||||||
@ -246,8 +241,7 @@ class PlatformSeeder extends Seeder
|
|||||||
'type' => 'podcasting',
|
'type' => 'podcasting',
|
||||||
'label' => 'TuneIn',
|
'label' => 'TuneIn',
|
||||||
'home_url' => 'https://tunein.com/',
|
'home_url' => 'https://tunein.com/',
|
||||||
'submit_url' =>
|
'submit_url' => 'https://help.tunein.com/contact/add-podcast-S19TR3Sdf',
|
||||||
'https://help.tunein.com/contact/add-podcast-S19TR3Sdf',
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'slug' => 'anytime',
|
'slug' => 'anytime',
|
||||||
@ -453,8 +447,7 @@ class PlatformSeeder extends Seeder
|
|||||||
'type' => 'funding',
|
'type' => 'funding',
|
||||||
'label' => 'KissKissBankBank',
|
'label' => 'KissKissBankBank',
|
||||||
'home_url' => 'https://www.kisskissbankbank.com/',
|
'home_url' => 'https://www.kisskissbankbank.com/',
|
||||||
'submit_url' =>
|
'submit_url' => 'https://www.kisskissbankbank.com/en/financer-mon-projet',
|
||||||
'https://www.kisskissbankbank.com/en/financer-mon-projet',
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'slug' => 'liberapay',
|
'slug' => 'liberapay',
|
||||||
@ -499,8 +492,7 @@ class PlatformSeeder extends Seeder
|
|||||||
'type' => 'social',
|
'type' => 'social',
|
||||||
'label' => 'Facebook',
|
'label' => 'Facebook',
|
||||||
'home_url' => 'https://www.facebook.com/',
|
'home_url' => 'https://www.facebook.com/',
|
||||||
'submit_url' =>
|
'submit_url' => 'https://www.facebook.com/pages/creation/?ref_type=comet_home',
|
||||||
'https://www.facebook.com/pages/creation/?ref_type=comet_home',
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'slug' => 'funkwhale',
|
'slug' => 'funkwhale',
|
||||||
@ -514,8 +506,7 @@ class PlatformSeeder extends Seeder
|
|||||||
'type' => 'social',
|
'type' => 'social',
|
||||||
'label' => 'Instagram',
|
'label' => 'Instagram',
|
||||||
'home_url' => 'https://www.instagram.com/',
|
'home_url' => 'https://www.instagram.com/',
|
||||||
'submit_url' =>
|
'submit_url' => 'https://www.instagram.com/accounts/emailsignup/',
|
||||||
'https://www.instagram.com/accounts/emailsignup/',
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'slug' => 'linkedin',
|
'slug' => 'linkedin',
|
||||||
|
@ -57,8 +57,7 @@ if (! function_exists('data_table')) {
|
|||||||
$template = [
|
$template = [
|
||||||
'table_open' => '<table class="w-full whitespace-nowrap">',
|
'table_open' => '<table class="w-full whitespace-nowrap">',
|
||||||
|
|
||||||
'thead_open' =>
|
'thead_open' => '<thead class="text-xs font-semibold text-left uppercase text-skin-muted">',
|
||||||
'<thead class="text-xs font-semibold text-left uppercase text-skin-muted">',
|
|
||||||
|
|
||||||
'heading_cell_start' => '<th class="px-4 py-2">',
|
'heading_cell_start' => '<th class="px-4 py-2">',
|
||||||
'cell_start' => '<td class="px-4 py-2">',
|
'cell_start' => '<td class="px-4 py-2">',
|
||||||
@ -300,8 +299,7 @@ if (! function_exists('location_link')) {
|
|||||||
$location->url,
|
$location->url,
|
||||||
icon('map-pin', 'mr-2 flex-shrink-0') . '<span class="truncate">' . esc($location->name) . '</span>',
|
icon('map-pin', 'mr-2 flex-shrink-0') . '<span class="truncate">' . esc($location->name) . '</span>',
|
||||||
[
|
[
|
||||||
'class' =>
|
'class' => 'w-full overflow-hidden inline-flex items-baseline hover:underline focus:ring-accent' .
|
||||||
'w-full overflow-hidden inline-flex items-baseline hover:underline focus:ring-accent' .
|
|
||||||
($class === '' ? '' : " {$class}"),
|
($class === '' ? '' : " {$class}"),
|
||||||
'target' => '_blank',
|
'target' => '_blank',
|
||||||
'rel' => 'noreferrer noopener',
|
'rel' => 'noreferrer noopener',
|
||||||
|
@ -24,8 +24,7 @@ class EpisodeModel extends Model
|
|||||||
*/
|
*/
|
||||||
public static $themes = [
|
public static $themes = [
|
||||||
'light-transparent' => [
|
'light-transparent' => [
|
||||||
'style' =>
|
'style' => 'background-color: #fff; background-image: linear-gradient(45deg, #ccc 12.5%, transparent 12.5%, transparent 50%, #ccc 50%, #ccc 62.5%, transparent 62.5%, transparent 100%); background-size: 5.66px 5.66px;',
|
||||||
'background-color: #fff; background-image: linear-gradient(45deg, #ccc 12.5%, transparent 12.5%, transparent 50%, #ccc 50%, #ccc 62.5%, transparent 62.5%, transparent 100%); background-size: 5.66px 5.66px;',
|
|
||||||
'background' => 'transparent',
|
'background' => 'transparent',
|
||||||
'text' => '#000',
|
'text' => '#000',
|
||||||
'inverted' => '#fff',
|
'inverted' => '#fff',
|
||||||
@ -37,8 +36,7 @@ class EpisodeModel extends Model
|
|||||||
'inverted' => '#fff',
|
'inverted' => '#fff',
|
||||||
],
|
],
|
||||||
'dark-transparent' => [
|
'dark-transparent' => [
|
||||||
'style' =>
|
'style' => 'background-color: #001f1a; background-image: linear-gradient(45deg, #888 12.5%, transparent 12.5%, transparent 50%, #888 50%, #888 62.5%, transparent 62.5%, transparent 100%); background-size: 5.66px 5.66px;',
|
||||||
'background-color: #001f1a; background-image: linear-gradient(45deg, #888 12.5%, transparent 12.5%, transparent 50%, #888 50%, #888 62.5%, transparent 62.5%, transparent 100%); background-size: 5.66px 5.66px;',
|
|
||||||
'background' => 'transparent',
|
'background' => 'transparent',
|
||||||
'text' => '#fff',
|
'text' => '#fff',
|
||||||
'inverted' => '#000',
|
'inverted' => '#000',
|
||||||
|
@ -50,8 +50,7 @@ class PageModel extends Model
|
|||||||
*/
|
*/
|
||||||
protected $validationRules = [
|
protected $validationRules = [
|
||||||
'title' => 'required',
|
'title' => 'required',
|
||||||
'slug' =>
|
'slug' => 'required|regex_match[/^[a-zA-Z0-9\-]{1,128}$/]|is_unique[pages.slug,id,{id}]',
|
||||||
'required|regex_match[/^[a-zA-Z0-9\-]{1,128}$/]|is_unique[pages.slug,id,{id}]',
|
|
||||||
'content_markdown' => 'required',
|
'content_markdown' => 'required',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -58,8 +58,7 @@ class PersonModel extends Model
|
|||||||
*/
|
*/
|
||||||
protected $validationRules = [
|
protected $validationRules = [
|
||||||
'full_name' => 'required',
|
'full_name' => 'required',
|
||||||
'unique_name' =>
|
'unique_name' => 'required|regex_match[/^[a-z0-9\-]{1,32}$/]|is_unique[persons.unique_name,id,{id}]',
|
||||||
'required|regex_match[/^[a-z0-9\-]{1,32}$/]|is_unique[persons.unique_name,id,{id}]',
|
|
||||||
'created_by' => 'required',
|
'created_by' => 'required',
|
||||||
'updated_by' => 'required',
|
'updated_by' => 'required',
|
||||||
];
|
];
|
||||||
|
@ -85,8 +85,7 @@ class PodcastModel extends Model
|
|||||||
*/
|
*/
|
||||||
protected $validationRules = [
|
protected $validationRules = [
|
||||||
'title' => 'required',
|
'title' => 'required',
|
||||||
'handle' =>
|
'handle' => 'required|regex_match[/^[a-zA-Z0-9\_]{1,32}$/]|is_unique[podcasts.handle,id,{id}]',
|
||||||
'required|regex_match[/^[a-zA-Z0-9\_]{1,32}$/]|is_unique[podcasts.handle,id,{id}]',
|
|
||||||
'description_markdown' => 'required',
|
'description_markdown' => 'required',
|
||||||
'cover_id' => 'required',
|
'cover_id' => 'required',
|
||||||
'language_code' => 'required',
|
'language_code' => 'required',
|
||||||
|
@ -84,14 +84,14 @@ class Button extends Component
|
|||||||
if ($this->iconLeft !== '') {
|
if ($this->iconLeft !== '') {
|
||||||
$this->slot = (new Icon([
|
$this->slot = (new Icon([
|
||||||
'glyph' => $this->iconLeft,
|
'glyph' => $this->iconLeft,
|
||||||
'class' => 'opacity-75' . ' ' . $iconSize[$this->size],
|
'class' => 'opacity-75 ' . $iconSize[$this->size],
|
||||||
]))->render() . $this->slot;
|
]))->render() . $this->slot;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->iconRight !== '') {
|
if ($this->iconRight !== '') {
|
||||||
$this->slot .= (new Icon([
|
$this->slot .= (new Icon([
|
||||||
'glyph' => $this->iconRight,
|
'glyph' => $this->iconRight,
|
||||||
'class' => 'opacity-75' . ' ' . $iconSize[$this->size],
|
'class' => 'opacity-75 ' . $iconSize[$this->size],
|
||||||
]))->render();
|
]))->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,20 +19,20 @@
|
|||||||
"adaures/podcast-persons-taxonomy": "^v1.0.0",
|
"adaures/podcast-persons-taxonomy": "^v1.0.0",
|
||||||
"phpseclib/phpseclib": "~2.0.42",
|
"phpseclib/phpseclib": "~2.0.42",
|
||||||
"michalsn/codeigniter4-uuid": "dev-develop",
|
"michalsn/codeigniter4-uuid": "dev-develop",
|
||||||
"codeigniter4/settings": "^v2.1.0",
|
"codeigniter4/settings": "v2.1.2",
|
||||||
"chrisjean/php-ico": "^1.0.4",
|
"chrisjean/php-ico": "^1.0.4",
|
||||||
"melbahja/seo": "^v2.1.1",
|
"melbahja/seo": "^v2.1.1",
|
||||||
"codeigniter4/shield": "v1.0.0-beta.3",
|
"codeigniter4/shield": "v1.0.0-beta.3",
|
||||||
"aws/aws-sdk-php": "^3.269.7",
|
"aws/aws-sdk-php": "^3.272.1",
|
||||||
"mpratt/embera": "^2.0.32"
|
"mpratt/embera": "^2.0.33"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"mikey179/vfsstream": "^v1.6.11",
|
"mikey179/vfsstream": "^v1.6.11",
|
||||||
"phpunit/phpunit": "^10.1.2",
|
"phpunit/phpunit": "^10.2.2",
|
||||||
"captainhook/captainhook": "^5.16.4",
|
"captainhook/captainhook": "^5.16.4",
|
||||||
"symplify/easy-coding-standard": "^11.3.2",
|
"symplify/easy-coding-standard": "^11.3.4",
|
||||||
"phpstan/phpstan": "^1.10.13",
|
"phpstan/phpstan": "^1.10.18",
|
||||||
"rector/rector": "^0.16.0",
|
"rector/rector": "^0.17.0",
|
||||||
"symplify/coding-standard": "^11.3.0"
|
"symplify/coding-standard": "^11.3.0"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
374
composer.lock
generated
374
composer.lock
generated
File diff suppressed because it is too large
Load Diff
11
ecs.php
11
ecs.php
@ -3,6 +3,7 @@
|
|||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
use PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\AssignmentInConditionSniff;
|
use PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\AssignmentInConditionSniff;
|
||||||
|
use PhpCsFixer\Fixer\Operator\BinaryOperatorSpacesFixer;
|
||||||
use PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer;
|
use PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer;
|
||||||
use PhpCsFixer\Fixer\Whitespace\IndentationTypeFixer;
|
use PhpCsFixer\Fixer\Whitespace\IndentationTypeFixer;
|
||||||
use Symplify\CodingStandard\Fixer\LineLength\LineLengthFixer;
|
use Symplify\CodingStandard\Fixer\LineLength\LineLengthFixer;
|
||||||
@ -25,6 +26,8 @@ return static function (ECSConfig $ecsConfig): void {
|
|||||||
__DIR__ . '/spark',
|
__DIR__ . '/spark',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$ecsConfig->sets([SetList::CLEAN_CODE, SetList::COMMON, SetList::SYMPLIFY, SetList::PSR_12]);
|
||||||
|
|
||||||
$ecsConfig->skip([
|
$ecsConfig->skip([
|
||||||
// skip specific generated files
|
// skip specific generated files
|
||||||
__DIR__ . '/modules/Admin/Language/*/PersonsTaxonomy.php',
|
__DIR__ . '/modules/Admin/Language/*/PersonsTaxonomy.php',
|
||||||
@ -52,8 +55,14 @@ return static function (ECSConfig $ecsConfig): void {
|
|||||||
// remove SingleQuoteFixer for Language files to prevent conflicts
|
// remove SingleQuoteFixer for Language files to prevent conflicts
|
||||||
SingleQuoteFixer::class => [__DIR__ . '/app/Language/*', __DIR__ . '/modules/**/Language/*'],
|
SingleQuoteFixer::class => [__DIR__ . '/app/Language/*', __DIR__ . '/modules/**/Language/*'],
|
||||||
|
|
||||||
|
BinaryOperatorSpacesFixer::class => [__DIR__ . '/app/Language/*', __DIR__ . '/modules/**/Language/*'],
|
||||||
|
|
||||||
AssignmentInConditionSniff::class,
|
AssignmentInConditionSniff::class,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$ecsConfig->sets([SetList::PSR_12, SetList::SYMPLIFY, SetList::COMMON, SetList::CLEAN_CODE]);
|
$ecsConfig->ruleWithConfiguration(BinaryOperatorSpacesFixer::class, [
|
||||||
|
'operators' => [
|
||||||
|
'=>' => 'align_single_space_minimal',
|
||||||
|
],
|
||||||
|
]);
|
||||||
};
|
};
|
||||||
|
@ -120,16 +120,14 @@ $routes->group(
|
|||||||
'PodcastController::publish/$1',
|
'PodcastController::publish/$1',
|
||||||
[
|
[
|
||||||
'as' => 'podcast-publish',
|
'as' => 'podcast-publish',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-publications',
|
||||||
'permission:podcast#.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
'publish',
|
'publish',
|
||||||
'PodcastController::attemptPublish/$1',
|
'PodcastController::attemptPublish/$1',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-publications',
|
||||||
'permission:podcast#.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -137,16 +135,14 @@ $routes->group(
|
|||||||
'PodcastController::publishEdit/$1',
|
'PodcastController::publishEdit/$1',
|
||||||
[
|
[
|
||||||
'as' => 'podcast-publish_edit',
|
'as' => 'podcast-publish_edit',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-publications',
|
||||||
'permission:podcast#.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
'publish-edit',
|
'publish-edit',
|
||||||
'PodcastController::attemptPublishEdit/$1',
|
'PodcastController::attemptPublishEdit/$1',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-publications',
|
||||||
'permission:podcast#.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -154,8 +150,7 @@ $routes->group(
|
|||||||
'PodcastController::publishCancel/$1',
|
'PodcastController::publishCancel/$1',
|
||||||
[
|
[
|
||||||
'as' => 'podcast-publish-cancel',
|
'as' => 'podcast-publish-cancel',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-publications',
|
||||||
'permission:podcast#.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get('edit/delete-banner', 'PodcastController::deleteBanner/$1', [
|
$routes->get('edit/delete-banner', 'PodcastController::deleteBanner/$1', [
|
||||||
@ -252,8 +247,7 @@ $routes->group(
|
|||||||
$routes->group('episodes', static function ($routes): void {
|
$routes->group('episodes', static function ($routes): void {
|
||||||
$routes->get('/', 'EpisodeController::list/$1', [
|
$routes->get('/', 'EpisodeController::list/$1', [
|
||||||
'as' => 'episode-list',
|
'as' => 'episode-list',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.view',
|
||||||
'permission:podcast#.episodes.view',
|
|
||||||
]);
|
]);
|
||||||
$routes->get('new', 'EpisodeController::create/$1', [
|
$routes->get('new', 'EpisodeController::create/$1', [
|
||||||
'as' => 'episode-create',
|
'as' => 'episode-create',
|
||||||
@ -270,8 +264,7 @@ $routes->group(
|
|||||||
$routes->group('(:num)', static function ($routes): void {
|
$routes->group('(:num)', static function ($routes): void {
|
||||||
$routes->get('/', 'EpisodeController::view/$1/$2', [
|
$routes->get('/', 'EpisodeController::view/$1/$2', [
|
||||||
'as' => 'episode-view',
|
'as' => 'episode-view',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.view',
|
||||||
'permission:podcast#.episodes.view',
|
|
||||||
]);
|
]);
|
||||||
$routes->get('edit', 'EpisodeController::edit/$1/$2', [
|
$routes->get('edit', 'EpisodeController::edit/$1/$2', [
|
||||||
'as' => 'episode-edit',
|
'as' => 'episode-edit',
|
||||||
@ -289,16 +282,14 @@ $routes->group(
|
|||||||
'EpisodeController::publish/$1/$2',
|
'EpisodeController::publish/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'episode-publish',
|
'as' => 'episode-publish',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.manage-publications',
|
||||||
'permission:podcast#.episodes.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
'publish',
|
'publish',
|
||||||
'EpisodeController::attemptPublish/$1/$2',
|
'EpisodeController::attemptPublish/$1/$2',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.manage-publications',
|
||||||
'permission:podcast#.episodes.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -306,16 +297,14 @@ $routes->group(
|
|||||||
'EpisodeController::publishEdit/$1/$2',
|
'EpisodeController::publishEdit/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'episode-publish_edit',
|
'as' => 'episode-publish_edit',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.manage-publications',
|
||||||
'permission:podcast#.episodes.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
'publish-edit',
|
'publish-edit',
|
||||||
'EpisodeController::attemptPublishEdit/$1/$2',
|
'EpisodeController::attemptPublishEdit/$1/$2',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.manage-publications',
|
||||||
'permission:podcast#.episodes.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -323,8 +312,7 @@ $routes->group(
|
|||||||
'EpisodeController::publishCancel/$1/$2',
|
'EpisodeController::publishCancel/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'episode-publish-cancel',
|
'as' => 'episode-publish-cancel',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.manage-publications',
|
||||||
'permission:podcast#.episodes.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -332,16 +320,14 @@ $routes->group(
|
|||||||
'EpisodeController::publishDateEdit/$1/$2',
|
'EpisodeController::publishDateEdit/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'episode-publish_date_edit',
|
'as' => 'episode-publish_date_edit',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.manage-publications',
|
||||||
'permission:podcast#.episodes.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
'publish-date-edit',
|
'publish-date-edit',
|
||||||
'EpisodeController::attemptPublishDateEdit/$1/$2',
|
'EpisodeController::attemptPublishDateEdit/$1/$2',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.manage-publications',
|
||||||
'permission:podcast#.episodes.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -349,16 +335,14 @@ $routes->group(
|
|||||||
'EpisodeController::unpublish/$1/$2',
|
'EpisodeController::unpublish/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'episode-unpublish',
|
'as' => 'episode-unpublish',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.manage-publications',
|
||||||
'permission:podcast#.episodes.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
'unpublish',
|
'unpublish',
|
||||||
'EpisodeController::attemptUnpublish/$1/$2',
|
'EpisodeController::attemptUnpublish/$1/$2',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.manage-publications',
|
||||||
'permission:podcast#.episodes.manage-publications',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -366,16 +350,14 @@ $routes->group(
|
|||||||
'EpisodeController::delete/$1/$2',
|
'EpisodeController::delete/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'episode-delete',
|
'as' => 'episode-delete',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.delete',
|
||||||
'permission:podcast#.episodes.delete',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
'delete',
|
'delete',
|
||||||
'EpisodeController::attemptDelete/$1/$2',
|
'EpisodeController::attemptDelete/$1/$2',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.delete',
|
||||||
'permission:podcast#.episodes.delete',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -491,8 +473,7 @@ $routes->group(
|
|||||||
'/',
|
'/',
|
||||||
'EpisodePersonController::attemptAdd/$1/$2',
|
'EpisodePersonController::attemptAdd/$1/$2',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.manage-persons',
|
||||||
'permission:podcast#.episodes.manage-persons',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -500,8 +481,7 @@ $routes->group(
|
|||||||
'EpisodePersonController::remove/$1/$2/$3',
|
'EpisodePersonController::remove/$1/$2/$3',
|
||||||
[
|
[
|
||||||
'as' => 'episode-person-remove',
|
'as' => 'episode-person-remove',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.episodes.manage-persons',
|
||||||
'permission:podcast#.episodes.manage-persons',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -135,7 +135,10 @@ class EpisodeController extends BaseController
|
|||||||
$data = [
|
$data = [
|
||||||
'podcast' => $this->podcast,
|
'podcast' => $this->podcast,
|
||||||
'currentSeasonNumber' => $currentSeasonNumber,
|
'currentSeasonNumber' => $currentSeasonNumber,
|
||||||
'nextEpisodeNumber' => (new EpisodeModel())->getNextEpisodeNumber($this->podcast->id, $currentSeasonNumber),
|
'nextEpisodeNumber' => (new EpisodeModel())->getNextEpisodeNumber(
|
||||||
|
$this->podcast->id,
|
||||||
|
$currentSeasonNumber
|
||||||
|
),
|
||||||
];
|
];
|
||||||
replace_breadcrumb_params([
|
replace_breadcrumb_params([
|
||||||
0 => $this->podcast->at_handle,
|
0 => $this->podcast->at_handle,
|
||||||
@ -148,10 +151,8 @@ class EpisodeController extends BaseController
|
|||||||
$rules = [
|
$rules = [
|
||||||
'slug' => 'max_length[128]',
|
'slug' => 'max_length[128]',
|
||||||
'audio_file' => 'uploaded[audio_file]|ext_in[audio_file,mp3,m4a]',
|
'audio_file' => 'uploaded[audio_file]|ext_in[audio_file,mp3,m4a]',
|
||||||
'cover' =>
|
'cover' => 'is_image[cover]|ext_in[cover,jpg,jpeg,png]|min_dims[cover,1400,1400]|is_image_ratio[cover,1,1]',
|
||||||
'is_image[cover]|ext_in[cover,jpg,jpeg,png]|min_dims[cover,1400,1400]|is_image_ratio[cover,1,1]',
|
'transcript_file' => 'ext_in[transcript,srt]|permit_empty',
|
||||||
'transcript_file' =>
|
|
||||||
'ext_in[transcript,srt]|permit_empty',
|
|
||||||
'chapters_file' => 'ext_in[chapters,json]|permit_empty',
|
'chapters_file' => 'ext_in[chapters,json]|permit_empty',
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -189,13 +190,12 @@ class EpisodeController extends BaseController
|
|||||||
'audio' => $this->request->getFile('audio_file'),
|
'audio' => $this->request->getFile('audio_file'),
|
||||||
'cover' => $this->request->getFile('cover'),
|
'cover' => $this->request->getFile('cover'),
|
||||||
'description_markdown' => $this->request->getPost('description'),
|
'description_markdown' => $this->request->getPost('description'),
|
||||||
'location' => $this->request->getPost('location_name') === '' ? null : new Location($this->request->getPost(
|
'location' => $this->request->getPost('location_name') === '' ? null : new Location(
|
||||||
'location_name'
|
$this->request->getPost('location_name')
|
||||||
)),
|
),
|
||||||
'transcript' => $this->request->getFile('transcript'),
|
'transcript' => $this->request->getFile('transcript'),
|
||||||
'chapters' => $this->request->getFile('chapters'),
|
'chapters' => $this->request->getFile('chapters'),
|
||||||
'parental_advisory' =>
|
'parental_advisory' => $this->request->getPost('parental_advisory') !== 'undefined'
|
||||||
$this->request->getPost('parental_advisory') !== 'undefined'
|
|
||||||
? $this->request->getPost('parental_advisory')
|
? $this->request->getPost('parental_advisory')
|
||||||
: null,
|
: null,
|
||||||
'number' => $this->request->getPost('episode_number')
|
'number' => $this->request->getPost('episode_number')
|
||||||
@ -285,12 +285,9 @@ class EpisodeController extends BaseController
|
|||||||
{
|
{
|
||||||
$rules = [
|
$rules = [
|
||||||
'slug' => 'max_length[128]',
|
'slug' => 'max_length[128]',
|
||||||
'audio_file' =>
|
'audio_file' => 'uploaded[audio_file]|ext_in[audio_file,mp3,m4a]|permit_empty',
|
||||||
'uploaded[audio_file]|ext_in[audio_file,mp3,m4a]|permit_empty',
|
'cover' => 'is_image[cover]|ext_in[cover,jpg,jpeg,png]|min_dims[cover,1400,1400]|is_image_ratio[cover,1,1]',
|
||||||
'cover' =>
|
'transcript_file' => 'ext_in[transcript_file,txt,html,srt,json]|permit_empty',
|
||||||
'is_image[cover]|ext_in[cover,jpg,jpeg,png]|min_dims[cover,1400,1400]|is_image_ratio[cover,1,1]',
|
|
||||||
'transcript_file' =>
|
|
||||||
'ext_in[transcript_file,txt,html,srt,json]|permit_empty',
|
|
||||||
'chapters_file' => 'ext_in[chapters_file,json]|permit_empty',
|
'chapters_file' => 'ext_in[chapters_file,json]|permit_empty',
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -470,8 +467,7 @@ class EpisodeController extends BaseController
|
|||||||
if ($this->podcast->publication_status === 'published') {
|
if ($this->podcast->publication_status === 'published') {
|
||||||
$rules = [
|
$rules = [
|
||||||
'publication_method' => 'required',
|
'publication_method' => 'required',
|
||||||
'scheduled_publication_date' =>
|
'scheduled_publication_date' => 'valid_date[Y-m-d H:i]|permit_empty',
|
||||||
'valid_date[Y-m-d H:i]|permit_empty',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
if (! $this->validate($rules)) {
|
if (! $this->validate($rules)) {
|
||||||
@ -584,8 +580,7 @@ class EpisodeController extends BaseController
|
|||||||
$rules = [
|
$rules = [
|
||||||
'post_id' => 'required',
|
'post_id' => 'required',
|
||||||
'publication_method' => 'required',
|
'publication_method' => 'required',
|
||||||
'scheduled_publication_date' =>
|
'scheduled_publication_date' => 'valid_date[Y-m-d H:i]|permit_empty',
|
||||||
'valid_date[Y-m-d H:i]|permit_empty',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
if (! $this->validate($rules)) {
|
if (! $this->validate($rules)) {
|
||||||
@ -934,13 +929,19 @@ class EpisodeController extends BaseController
|
|||||||
|
|
||||||
//remove episode media files from disk
|
//remove episode media files from disk
|
||||||
foreach ($episodeMediaList as $episodeMedia) {
|
foreach ($episodeMediaList as $episodeMedia) {
|
||||||
if ($episodeMedia !== null && ! $episodeMedia->deleteFile()) {
|
if ($episodeMedia === null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($episodeMedia->deleteFile()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$warnings[] = lang('Episode.messages.deleteFileError', [
|
$warnings[] = lang('Episode.messages.deleteFileError', [
|
||||||
'type' => $episodeMedia->type,
|
'type' => $episodeMedia->type,
|
||||||
'file_key' => $episodeMedia->file_key,
|
'file_key' => $episodeMedia->file_key,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if ($warnings !== []) {
|
if ($warnings !== []) {
|
||||||
return redirect()
|
return redirect()
|
||||||
|
@ -65,8 +65,7 @@ class PersonController extends BaseController
|
|||||||
public function attemptCreate(): RedirectResponse
|
public function attemptCreate(): RedirectResponse
|
||||||
{
|
{
|
||||||
$rules = [
|
$rules = [
|
||||||
'avatar' =>
|
'avatar' => 'is_image[avatar]|ext_in[avatar,jpg,jpeg,png]|min_dims[avatar,400,400]|is_image_ratio[avatar,1,1]',
|
||||||
'is_image[avatar]|ext_in[avatar,jpg,jpeg,png]|min_dims[avatar,400,400]|is_image_ratio[avatar,1,1]',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
if (! $this->validate($rules)) {
|
if (! $this->validate($rules)) {
|
||||||
@ -120,8 +119,7 @@ class PersonController extends BaseController
|
|||||||
public function attemptEdit(): RedirectResponse
|
public function attemptEdit(): RedirectResponse
|
||||||
{
|
{
|
||||||
$rules = [
|
$rules = [
|
||||||
'avatar' =>
|
'avatar' => 'is_image[avatar]|ext_in[avatar,jpg,jpeg,png]|min_dims[avatar,400,400]|is_image_ratio[avatar,1,1]',
|
||||||
'is_image[avatar]|ext_in[avatar,jpg,jpeg,png]|min_dims[avatar,400,400]|is_image_ratio[avatar,1,1]',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
if (! $this->validate($rules)) {
|
if (! $this->validate($rules)) {
|
||||||
|
@ -186,8 +186,7 @@ class PodcastController extends BaseController
|
|||||||
public function attemptCreate(): RedirectResponse
|
public function attemptCreate(): RedirectResponse
|
||||||
{
|
{
|
||||||
$rules = [
|
$rules = [
|
||||||
'cover' =>
|
'cover' => 'uploaded[cover]|is_image[cover]|ext_in[cover,jpg,jpeg,png]|min_dims[cover,1400,1400]|is_image_ratio[cover,1,1]',
|
||||||
'uploaded[cover]|is_image[cover]|ext_in[cover,jpg,jpeg,png]|min_dims[cover,1400,1400]|is_image_ratio[cover,1,1]',
|
|
||||||
'banner' => 'is_image[banner]|ext_in[banner,jpg,jpeg,png]|min_dims[banner,1500,500]|is_image_ratio[banner,3,1]',
|
'banner' => 'is_image[banner]|ext_in[banner,jpg,jpeg,png]|min_dims[banner,1500,500]|is_image_ratio[banner,3,1]',
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -218,8 +217,7 @@ class PodcastController extends BaseController
|
|||||||
'description_markdown' => $this->request->getPost('description'),
|
'description_markdown' => $this->request->getPost('description'),
|
||||||
'language_code' => $this->request->getPost('language'),
|
'language_code' => $this->request->getPost('language'),
|
||||||
'category_id' => $this->request->getPost('category'),
|
'category_id' => $this->request->getPost('category'),
|
||||||
'parental_advisory' =>
|
'parental_advisory' => $this->request->getPost('parental_advisory') !== 'undefined'
|
||||||
$this->request->getPost('parental_advisory') !== 'undefined'
|
|
||||||
? $this->request->getPost('parental_advisory')
|
? $this->request->getPost('parental_advisory')
|
||||||
: null,
|
: null,
|
||||||
'owner_name' => $this->request->getPost('owner_name'),
|
'owner_name' => $this->request->getPost('owner_name'),
|
||||||
@ -227,9 +225,9 @@ class PodcastController extends BaseController
|
|||||||
'publisher' => $this->request->getPost('publisher'),
|
'publisher' => $this->request->getPost('publisher'),
|
||||||
'type' => $this->request->getPost('type'),
|
'type' => $this->request->getPost('type'),
|
||||||
'copyright' => $this->request->getPost('copyright'),
|
'copyright' => $this->request->getPost('copyright'),
|
||||||
'location' => $this->request->getPost('location_name') === '' ? null : new Location($this->request->getPost(
|
'location' => $this->request->getPost('location_name') === '' ? null : new Location(
|
||||||
'location_name'
|
$this->request->getPost('location_name')
|
||||||
)),
|
),
|
||||||
'payment_pointer' => $this->request->getPost(
|
'payment_pointer' => $this->request->getPost(
|
||||||
'payment_pointer'
|
'payment_pointer'
|
||||||
) === '' ? null : $this->request->getPost('payment_pointer'),
|
) === '' ? null : $this->request->getPost('payment_pointer'),
|
||||||
@ -301,8 +299,7 @@ class PodcastController extends BaseController
|
|||||||
public function attemptEdit(): RedirectResponse
|
public function attemptEdit(): RedirectResponse
|
||||||
{
|
{
|
||||||
$rules = [
|
$rules = [
|
||||||
'cover' =>
|
'cover' => 'is_image[cover]|ext_in[cover,jpg,jpeg,png]|min_dims[cover,1400,1400]|is_image_ratio[cover,1,1]',
|
||||||
'is_image[cover]|ext_in[cover,jpg,jpeg,png]|min_dims[cover,1400,1400]|is_image_ratio[cover,1,1]',
|
|
||||||
'banner' => 'is_image[banner]|ext_in[banner,jpg,jpeg,png]|min_dims[banner,1500,500]|is_image_ratio[banner,3,1]',
|
'banner' => 'is_image[banner]|ext_in[banner,jpg,jpeg,png]|min_dims[banner,1500,500]|is_image_ratio[banner,3,1]',
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -641,8 +638,7 @@ class PodcastController extends BaseController
|
|||||||
|
|
||||||
$rules = [
|
$rules = [
|
||||||
'publication_method' => 'required',
|
'publication_method' => 'required',
|
||||||
'scheduled_publication_date' =>
|
'scheduled_publication_date' => 'valid_date[Y-m-d H:i]|permit_empty',
|
||||||
'valid_date[Y-m-d H:i]|permit_empty',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
if (! $this->validate($rules)) {
|
if (! $this->validate($rules)) {
|
||||||
@ -775,8 +771,7 @@ class PodcastController extends BaseController
|
|||||||
|
|
||||||
$rules = [
|
$rules = [
|
||||||
'publication_method' => 'required',
|
'publication_method' => 'required',
|
||||||
'scheduled_publication_date' =>
|
'scheduled_publication_date' => 'valid_date[Y-m-d H:i]|permit_empty',
|
||||||
'valid_date[Y-m-d H:i]|permit_empty',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
if (! $this->validate($rules)) {
|
if (! $this->validate($rules)) {
|
||||||
|
@ -151,8 +151,7 @@ class PodcastImportController extends BaseController
|
|||||||
'banner' => null,
|
'banner' => null,
|
||||||
'language_code' => $this->request->getPost('language'),
|
'language_code' => $this->request->getPost('language'),
|
||||||
'category_id' => $this->request->getPost('category'),
|
'category_id' => $this->request->getPost('category'),
|
||||||
'parental_advisory' =>
|
'parental_advisory' => property_exists($nsItunes, 'explicit') && $nsItunes->explicit !== null
|
||||||
property_exists($nsItunes, 'explicit') && $nsItunes->explicit !== null
|
|
||||||
? (in_array((string) $nsItunes->explicit, ['yes', 'true'], true)
|
? (in_array((string) $nsItunes->explicit, ['yes', 'true'], true)
|
||||||
? 'explicit'
|
? 'explicit'
|
||||||
: (in_array((string) $nsItunes->explicit, ['no', 'false'], true)
|
: (in_array((string) $nsItunes->explicit, ['no', 'false'], true)
|
||||||
@ -167,10 +166,11 @@ class PodcastImportController extends BaseController
|
|||||||
'type'
|
'type'
|
||||||
) && $nsItunes->type !== null ? (string) $nsItunes->type : 'episodic',
|
) && $nsItunes->type !== null ? (string) $nsItunes->type : 'episodic',
|
||||||
'copyright' => (string) $feed->channel[0]->copyright,
|
'copyright' => (string) $feed->channel[0]->copyright,
|
||||||
'is_blocked' =>
|
'is_blocked' => property_exists(
|
||||||
property_exists($nsItunes, 'block') && $nsItunes->block !== null && (string) $nsItunes->block === 'yes',
|
$nsItunes,
|
||||||
'is_completed' =>
|
'block'
|
||||||
property_exists(
|
) && $nsItunes->block !== null && (string) $nsItunes->block === 'yes',
|
||||||
|
'is_completed' => property_exists(
|
||||||
$nsItunes,
|
$nsItunes,
|
||||||
'complete'
|
'complete'
|
||||||
) && $nsItunes->complete !== null && (string) $nsItunes->complete === 'yes',
|
) && $nsItunes->complete !== null && (string) $nsItunes->complete === 'yes',
|
||||||
@ -178,12 +178,12 @@ class PodcastImportController extends BaseController
|
|||||||
'created_by' => user_id(),
|
'created_by' => user_id(),
|
||||||
'updated_by' => user_id(),
|
'updated_by' => user_id(),
|
||||||
]);
|
]);
|
||||||
} catch (ErrorException $ex) {
|
} catch (ErrorException $errorException) {
|
||||||
return redirect()
|
return redirect()
|
||||||
->back()
|
->back()
|
||||||
->withInput()
|
->withInput()
|
||||||
->with('errors', [
|
->with('errors', [
|
||||||
$ex->getMessage() .
|
$errorException->getMessage() .
|
||||||
': <a href="' .
|
': <a href="' .
|
||||||
$this->request->getPost('imported_feed_url') .
|
$this->request->getPost('imported_feed_url') .
|
||||||
'" rel="noreferrer noopener" target="_blank">' .
|
'" rel="noreferrer noopener" target="_blank">' .
|
||||||
@ -365,20 +365,17 @@ class PodcastImportController extends BaseController
|
|||||||
'description_markdown' => $converter->convert($itemDescriptionHtml),
|
'description_markdown' => $converter->convert($itemDescriptionHtml),
|
||||||
'description_html' => $itemDescriptionHtml,
|
'description_html' => $itemDescriptionHtml,
|
||||||
'cover' => $episodeCover,
|
'cover' => $episodeCover,
|
||||||
'parental_advisory' =>
|
'parental_advisory' => property_exists($nsItunes, 'explicit') && $nsItunes->explicit !== null
|
||||||
property_exists($nsItunes, 'explicit') && $nsItunes->explicit !== null
|
|
||||||
? (in_array((string) $nsItunes->explicit, ['yes', 'true'], true)
|
? (in_array((string) $nsItunes->explicit, ['yes', 'true'], true)
|
||||||
? 'explicit'
|
? 'explicit'
|
||||||
: (in_array((string) $nsItunes->explicit, ['no', 'false'], true)
|
: (in_array((string) $nsItunes->explicit, ['no', 'false'], true)
|
||||||
? 'clean'
|
? 'clean'
|
||||||
: null))
|
: null))
|
||||||
: null,
|
: null,
|
||||||
'number' =>
|
'number' => $this->request->getPost('force_renumber') === 'yes'
|
||||||
$this->request->getPost('force_renumber') === 'yes'
|
|
||||||
? $itemNumber
|
? $itemNumber
|
||||||
: ((string) $nsItunes->episode === '' ? null : (int) $nsItunes->episode),
|
: ((string) $nsItunes->episode === '' ? null : (int) $nsItunes->episode),
|
||||||
'season_number' =>
|
'season_number' => $this->request->getPost('season_number') === ''
|
||||||
$this->request->getPost('season_number') === ''
|
|
||||||
? ((string) $nsItunes->season === '' ? null : (int) $nsItunes->season)
|
? ((string) $nsItunes->season === '' ? null : (int) $nsItunes->season)
|
||||||
: (int) $this->request->getPost('season_number'),
|
: (int) $this->request->getPost('season_number'),
|
||||||
'type' => property_exists($nsItunes, 'episodeType') && in_array(
|
'type' => property_exists($nsItunes, 'episodeType') && in_array(
|
||||||
@ -611,8 +608,7 @@ class PodcastImportController extends BaseController
|
|||||||
'description_markdown' => $converter->convert($itemDescriptionHtml),
|
'description_markdown' => $converter->convert($itemDescriptionHtml),
|
||||||
'description_html' => $itemDescriptionHtml,
|
'description_html' => $itemDescriptionHtml,
|
||||||
'cover' => $episodeCover,
|
'cover' => $episodeCover,
|
||||||
'parental_advisory' =>
|
'parental_advisory' => property_exists($nsItunes, 'explicit') && $nsItunes->explicit !== null
|
||||||
property_exists($nsItunes, 'explicit') && $nsItunes->explicit !== null
|
|
||||||
? (in_array((string) $nsItunes->explicit, ['yes', 'true'], true)
|
? (in_array((string) $nsItunes->explicit, ['yes', 'true'], true)
|
||||||
? 'explicit'
|
? 'explicit'
|
||||||
: (in_array((string) $nsItunes->explicit, ['no', 'false'], true)
|
: (in_array((string) $nsItunes->explicit, ['no', 'false'], true)
|
||||||
|
@ -85,11 +85,12 @@ class PodcastPlatformController extends BaseController
|
|||||||
'podcast_id' => $this->podcast->id,
|
'podcast_id' => $this->podcast->id,
|
||||||
'link_url' => $podcastPlatformUrl,
|
'link_url' => $podcastPlatformUrl,
|
||||||
'account_id' => $podcastPlatformAccountId === '' ? null : $podcastPlatformAccountId,
|
'account_id' => $podcastPlatformAccountId === '' ? null : $podcastPlatformAccountId,
|
||||||
'is_visible' =>
|
'is_visible' => array_key_exists('visible', $podcastPlatform) &&
|
||||||
array_key_exists('visible', $podcastPlatform) &&
|
|
||||||
$podcastPlatform['visible'] === 'yes',
|
$podcastPlatform['visible'] === 'yes',
|
||||||
'is_on_embed' =>
|
'is_on_embed' => array_key_exists(
|
||||||
array_key_exists('on_embed', $podcastPlatform) && $podcastPlatform['on_embed'] === 'yes',
|
'on_embed',
|
||||||
|
$podcastPlatform
|
||||||
|
) && $podcastPlatform['on_embed'] === 'yes',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,8 +35,7 @@ class SettingsController extends BaseController
|
|||||||
public function attemptInstanceEdit(): RedirectResponse
|
public function attemptInstanceEdit(): RedirectResponse
|
||||||
{
|
{
|
||||||
$rules = [
|
$rules = [
|
||||||
'site_icon' =>
|
'site_icon' => 'is_image[site_icon]|ext_in[site_icon,png,jpeg]|is_image_ratio[site_icon,1,1]|min_dims[image,512,512]|permit_empty',
|
||||||
'is_image[site_icon]|ext_in[site_icon,png,jpeg]|is_image_ratio[site_icon,1,1]|min_dims[image,512,512]|permit_empty',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
if (! $this->validate($rules)) {
|
if (! $this->validate($rules)) {
|
||||||
|
@ -77,8 +77,7 @@ $routes->group(
|
|||||||
$routes->group('podcasts/(:num)/contributors', static function ($routes): void {
|
$routes->group('podcasts/(:num)/contributors', static function ($routes): void {
|
||||||
$routes->get('/', 'ContributorController::list/$1', [
|
$routes->get('/', 'ContributorController::list/$1', [
|
||||||
'as' => 'contributor-list',
|
'as' => 'contributor-list',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-contributors',
|
||||||
'permission:podcast#.manage-contributors',
|
|
||||||
]);
|
]);
|
||||||
$routes->get('add', 'ContributorController::add/$1', [
|
$routes->get('add', 'ContributorController::add/$1', [
|
||||||
'as' => 'contributor-add',
|
'as' => 'contributor-add',
|
||||||
@ -88,32 +87,28 @@ $routes->group(
|
|||||||
'add',
|
'add',
|
||||||
'ContributorController::attemptAdd/$1',
|
'ContributorController::attemptAdd/$1',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-contributors',
|
||||||
'permission:podcast#.manage-contributors',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
// Contributor
|
// Contributor
|
||||||
$routes->group('(:num)', static function ($routes): void {
|
$routes->group('(:num)', static function ($routes): void {
|
||||||
$routes->get('/', 'ContributorController::view/$1/$2', [
|
$routes->get('/', 'ContributorController::view/$1/$2', [
|
||||||
'as' => 'contributor-view',
|
'as' => 'contributor-view',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-contributors',
|
||||||
'permission:podcast#.manage-contributors',
|
|
||||||
]);
|
]);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
'edit',
|
'edit',
|
||||||
'ContributorController::edit/$1/$2',
|
'ContributorController::edit/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'contributor-edit',
|
'as' => 'contributor-edit',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-contributors',
|
||||||
'permission:podcast#.manage-contributors',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
'edit',
|
'edit',
|
||||||
'ContributorController::attemptEdit/$1/$2',
|
'ContributorController::attemptEdit/$1/$2',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-contributors',
|
||||||
'permission:podcast#.manage-contributors',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -121,16 +116,14 @@ $routes->group(
|
|||||||
'ContributorController::remove/$1/$2',
|
'ContributorController::remove/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'contributor-remove',
|
'as' => 'contributor-remove',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-contributors',
|
||||||
'permission:podcast#.manage-contributors',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
'remove',
|
'remove',
|
||||||
'ContributorController::attemptRemove/$1/$2',
|
'ContributorController::attemptRemove/$1/$2',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-contributors',
|
||||||
'permission:podcast#.manage-contributors',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -25,7 +25,7 @@ class PermissionFilter implements FilterInterface
|
|||||||
*/
|
*/
|
||||||
public function before(RequestInterface $request, $params = null)
|
public function before(RequestInterface $request, $params = null)
|
||||||
{
|
{
|
||||||
if (empty($params)) {
|
if ($params === null || $params === []) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,8 +40,7 @@ $routes->group('', [
|
|||||||
]);
|
]);
|
||||||
$routes->post('inbox', 'ActorController::inbox/$1', [
|
$routes->post('inbox', 'ActorController::inbox/$1', [
|
||||||
'as' => 'inbox',
|
'as' => 'inbox',
|
||||||
'filter' =>
|
'filter' => 'fediverse:verify-activitystream,verify-blocks,verify-signature',
|
||||||
'fediverse:verify-activitystream,verify-blocks,verify-signature',
|
|
||||||
]);
|
]);
|
||||||
$routes->get('outbox', 'ActorController::outbox/$1', [
|
$routes->get('outbox', 'ActorController::outbox/$1', [
|
||||||
'as' => 'outbox',
|
'as' => 'outbox',
|
||||||
|
@ -326,8 +326,7 @@ class ActorController extends Controller
|
|||||||
public function attemptFollow(): RedirectResponse
|
public function attemptFollow(): RedirectResponse
|
||||||
{
|
{
|
||||||
$rules = [
|
$rules = [
|
||||||
'handle' =>
|
'handle' => 'regex_match[/^@?(?P<username>[\w\.\-]+)@(?P<host>[\w\.\-]+)(?P<port>:[\d]+)?$/]',
|
||||||
'regex_match[/^@?(?P<username>[\w\.\-]+)@(?P<host>[\w\.\-]+)(?P<port>:[\d]+)?$/]',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
if (! $this->validate($rules)) {
|
if (! $this->validate($rules)) {
|
||||||
|
@ -214,8 +214,7 @@ class PostController extends Controller
|
|||||||
public function attemptRemoteAction(string $action): RedirectResponse | ResponseInterface
|
public function attemptRemoteAction(string $action): RedirectResponse | ResponseInterface
|
||||||
{
|
{
|
||||||
$rules = [
|
$rules = [
|
||||||
'handle' =>
|
'handle' => 'regex_match[/^@?(?P<username>[\w\.\-]+)@(?P<host>[\w\.\-]+)(?P<port>:[\d]+)?$/]',
|
||||||
'regex_match[/^@?(?P<username>[\w\.\-]+)@(?P<host>[\w\.\-]+)(?P<port>:[\d]+)?$/]',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
if (! $this->validate($rules)) {
|
if (! $this->validate($rules)) {
|
||||||
|
@ -107,7 +107,10 @@ class ActivityModel extends BaseUuidModel
|
|||||||
'actor_id' => $actorId,
|
'actor_id' => $actorId,
|
||||||
'target_actor_id' => $targetActorId,
|
'target_actor_id' => $targetActorId,
|
||||||
'post_id' => $postId,
|
'post_id' => $postId,
|
||||||
'type' => $type === 'Undo' ? $type . '_' . (json_decode($payload, true))['object']['type'] : $type,
|
'type' => $type === 'Undo' ? $type . '_' . (json_decode(
|
||||||
|
$payload,
|
||||||
|
true
|
||||||
|
))['object']['type'] : $type,
|
||||||
'payload' => $payload,
|
'payload' => $payload,
|
||||||
'scheduled_at' => $scheduledAt,
|
'scheduled_at' => $scheduledAt,
|
||||||
'status' => $taskStatus,
|
'status' => $taskStatus,
|
||||||
|
@ -167,8 +167,7 @@ class InstallController extends Controller
|
|||||||
$mediaBaseUrl = $this->request->getPost('media_base_url');
|
$mediaBaseUrl = $this->request->getPost('media_base_url');
|
||||||
self::writeEnv([
|
self::writeEnv([
|
||||||
'app.baseURL' => $baseUrl,
|
'app.baseURL' => $baseUrl,
|
||||||
'media.baseURL' =>
|
'media.baseURL' => $mediaBaseUrl === '' ? $baseUrl : $mediaBaseUrl,
|
||||||
$mediaBaseUrl === '' ? $baseUrl : $mediaBaseUrl,
|
|
||||||
'analytics.salt' => generate_random_salt(64),
|
'analytics.salt' => generate_random_salt(64),
|
||||||
'admin.gateway' => $this->request->getPost('admin_gateway'),
|
'admin.gateway' => $this->request->getPost('admin_gateway'),
|
||||||
'auth.gateway' => $this->request->getPost('auth_gateway'),
|
'auth.gateway' => $this->request->getPost('auth_gateway'),
|
||||||
|
@ -19,8 +19,7 @@ $routes->group(
|
|||||||
$routes->group('podcasts/(:num)/subscriptions', static function ($routes): void {
|
$routes->group('podcasts/(:num)/subscriptions', static function ($routes): void {
|
||||||
$routes->get('/', 'SubscriptionController::list/$1', [
|
$routes->get('/', 'SubscriptionController::list/$1', [
|
||||||
'as' => 'subscription-list',
|
'as' => 'subscription-list',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-subscriptions',
|
||||||
'permission:podcast#.manage-subscriptions',
|
|
||||||
]);
|
]);
|
||||||
$routes->get('add', 'SubscriptionController::add/$1', [
|
$routes->get('add', 'SubscriptionController::add/$1', [
|
||||||
'as' => 'subscription-add',
|
'as' => 'subscription-add',
|
||||||
@ -30,8 +29,7 @@ $routes->group(
|
|||||||
'add',
|
'add',
|
||||||
'SubscriptionController::attemptAdd/$1',
|
'SubscriptionController::attemptAdd/$1',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-subscriptions',
|
||||||
'permission:podcast#.manage-subscriptions',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post('save-link', 'SubscriptionController::attemptLinkSave/$1', [
|
$routes->post('save-link', 'SubscriptionController::attemptLinkSave/$1', [
|
||||||
@ -42,16 +40,14 @@ $routes->group(
|
|||||||
$routes->group('(:num)', static function ($routes): void {
|
$routes->group('(:num)', static function ($routes): void {
|
||||||
$routes->get('/', 'SubscriptionController::view/$1/$2', [
|
$routes->get('/', 'SubscriptionController::view/$1/$2', [
|
||||||
'as' => 'subscription-view',
|
'as' => 'subscription-view',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-subscriptions',
|
||||||
'permission:podcast#.manage-subscriptions',
|
|
||||||
]);
|
]);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
'edit',
|
'edit',
|
||||||
'SubscriptionController::edit/$1/$2',
|
'SubscriptionController::edit/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'subscription-edit',
|
'as' => 'subscription-edit',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-subscriptions',
|
||||||
'permission:podcast#.manage-subscriptions',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
@ -59,8 +55,7 @@ $routes->group(
|
|||||||
'SubscriptionController::attemptEdit/$1/$2',
|
'SubscriptionController::attemptEdit/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'subscription-edit',
|
'as' => 'subscription-edit',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-subscriptions',
|
||||||
'permission:podcast#.manage-subscriptions',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -68,8 +63,7 @@ $routes->group(
|
|||||||
'SubscriptionController::regenerateToken/$1/$2',
|
'SubscriptionController::regenerateToken/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'subscription-regenerate-token',
|
'as' => 'subscription-regenerate-token',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-subscriptions',
|
||||||
'permission:podcast#.manage-subscriptions',
|
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -77,16 +71,14 @@ $routes->group(
|
|||||||
'SubscriptionController::suspend/$1/$2',
|
'SubscriptionController::suspend/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'subscription-suspend',
|
'as' => 'subscription-suspend',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-subscriptions',
|
||||||
'permission:podcast#.manage-subscriptions',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
'suspend',
|
'suspend',
|
||||||
'SubscriptionController::attemptSuspend/$1/$2',
|
'SubscriptionController::attemptSuspend/$1/$2',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-subscriptions',
|
||||||
'permission:podcast#.manage-subscriptions',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -94,8 +86,7 @@ $routes->group(
|
|||||||
'SubscriptionController::resume/$1/$2',
|
'SubscriptionController::resume/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'subscription-resume',
|
'as' => 'subscription-resume',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-subscriptions',
|
||||||
'permission:podcast#.manage-subscriptions',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->get(
|
$routes->get(
|
||||||
@ -103,16 +94,14 @@ $routes->group(
|
|||||||
'SubscriptionController::delete/$1/$2',
|
'SubscriptionController::delete/$1/$2',
|
||||||
[
|
[
|
||||||
'as' => 'subscription-delete',
|
'as' => 'subscription-delete',
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-subscriptions',
|
||||||
'permission:podcast#.manage-subscriptions',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
$routes->post(
|
$routes->post(
|
||||||
'delete',
|
'delete',
|
||||||
'SubscriptionController::attemptDelete/$1/$2',
|
'SubscriptionController::attemptDelete/$1/$2',
|
||||||
[
|
[
|
||||||
'filter' =>
|
'filter' => 'permission:podcast#.manage-subscriptions',
|
||||||
'permission:podcast#.manage-subscriptions',
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
"build:svg": "svgo -f app/Resources/images -o public/assets/images -r --config=./.svgo.js",
|
"build:svg": "svgo -f app/Resources/images -o public/assets/images -r --config=./.svgo.js",
|
||||||
"lint": "eslint --ext js,ts app/Resources",
|
"lint": "eslint --ext js,ts app/Resources",
|
||||||
"lint:fix": "eslint --ext js,ts app/Resources --fix",
|
"lint:fix": "eslint --ext js,ts app/Resources --fix",
|
||||||
"lint:css": "stylelint \"app/Resources/**/*.css\"",
|
"lint:css": "stylelint -f verbose \"app/Resources/**/*.css\"",
|
||||||
"lint:css:fix": "stylelint --fix \"app/Resources/**/*.css\"",
|
"lint:css:fix": "stylelint -f verbose --fix \"app/Resources/**/*.css\"",
|
||||||
"prettier": "prettier --check --ignore-path .gitignore .",
|
"prettier": "prettier --check --ignore-path .gitignore .",
|
||||||
"prettier:fix": "prettier --write --ignore-path .gitignore .",
|
"prettier:fix": "prettier --write --ignore-path .gitignore .",
|
||||||
"typecheck": "tsc",
|
"typecheck": "tsc",
|
||||||
|
@ -5,7 +5,6 @@ declare(strict_types=1);
|
|||||||
use Rector\CodeQuality\Rector\PropertyFetch\ExplicitMethodCallOverMagicGetSetRector;
|
use Rector\CodeQuality\Rector\PropertyFetch\ExplicitMethodCallOverMagicGetSetRector;
|
||||||
use Rector\CodingStyle\Rector\ClassMethod\UnSpreadOperatorRector;
|
use Rector\CodingStyle\Rector\ClassMethod\UnSpreadOperatorRector;
|
||||||
use Rector\CodingStyle\Rector\Encapsed\EncapsedStringsToSprintfRector;
|
use Rector\CodingStyle\Rector\Encapsed\EncapsedStringsToSprintfRector;
|
||||||
use Rector\CodingStyle\Rector\FuncCall\ConsistentPregDelimiterRector;
|
|
||||||
use Rector\CodingStyle\Rector\Stmt\NewlineAfterStatementRector;
|
use Rector\CodingStyle\Rector\Stmt\NewlineAfterStatementRector;
|
||||||
use Rector\CodingStyle\Rector\String_\SymplifyQuoteEscapeRector;
|
use Rector\CodingStyle\Rector\String_\SymplifyQuoteEscapeRector;
|
||||||
use Rector\Config\RectorConfig;
|
use Rector\Config\RectorConfig;
|
||||||
@ -76,8 +75,4 @@ return static function (RectorConfig $rectorConfig): void {
|
|||||||
|
|
||||||
// Path to phpstan with extensions, that PHPStan in Rector uses to determine types
|
// Path to phpstan with extensions, that PHPStan in Rector uses to determine types
|
||||||
$rectorConfig->phpstanConfig(__DIR__ . '/phpstan.neon');
|
$rectorConfig->phpstanConfig(__DIR__ . '/phpstan.neon');
|
||||||
|
|
||||||
$rectorConfig->ruleWithConfiguration(ConsistentPregDelimiterRector::class, [
|
|
||||||
ConsistentPregDelimiterRector::DELIMITER => '~',
|
|
||||||
]);
|
|
||||||
};
|
};
|
||||||
|
@ -15,8 +15,7 @@ $isEpisodeArea = isset($podcast) && isset($episode);
|
|||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<footer class="px-2 py-2 mx-auto text-xs text-right">
|
<footer class="px-2 py-2 mx-auto text-xs text-right">
|
||||||
<?= lang('Common.powered_by', [
|
<?= lang('Common.powered_by', [
|
||||||
'castopod' =>
|
'castopod' => '<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org/" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a> ' .
|
||||||
'<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org/" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a> ' .
|
|
||||||
CP_VERSION,
|
CP_VERSION,
|
||||||
], null, false) ?>
|
], null, false) ?>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -187,8 +187,7 @@
|
|||||||
),
|
),
|
||||||
icon('delete-bin', 'mx-auto'),
|
icon('delete-bin', 'mx-auto'),
|
||||||
[
|
[
|
||||||
'class' =>
|
'class' => 'p-1 text-sm bg-red-100 rounded-full text-red-700 hover:text-red-900 focus:ring-accent',
|
||||||
'p-1 text-sm bg-red-100 rounded-full text-red-700 hover:text-red-900 focus:ring-accent',
|
|
||||||
'data-tooltip' => 'bottom',
|
'data-tooltip' => 'bottom',
|
||||||
'title' => lang(
|
'title' => lang(
|
||||||
'Episode.form.transcript_file_delete',
|
'Episode.form.transcript_file_delete',
|
||||||
@ -242,8 +241,7 @@
|
|||||||
),
|
),
|
||||||
icon('delete-bin', 'mx-auto'),
|
icon('delete-bin', 'mx-auto'),
|
||||||
[
|
[
|
||||||
'class' =>
|
'class' => 'text-sm p-1 bg-red-100 rounded-full text-red-700 hover:text-red-900 focus:ring-accent',
|
||||||
'text-sm p-1 bg-red-100 rounded-full text-red-700 hover:text-red-900 focus:ring-accent',
|
|
||||||
'data-tooltip' => 'bottom',
|
'data-tooltip' => 'bottom',
|
||||||
'title' => lang(
|
'title' => lang(
|
||||||
'Episode.form.chapters_file_delete',
|
'Episode.form.chapters_file_delete',
|
||||||
|
@ -79,8 +79,7 @@
|
|||||||
),
|
),
|
||||||
icon('delete-bin', 'mx-auto'),
|
icon('delete-bin', 'mx-auto'),
|
||||||
[
|
[
|
||||||
'class' =>
|
'class' => 'absolute right-0 p-1 bg-red-100 rounded-full text-red-700 hover:text-red-900',
|
||||||
'absolute right-0 p-1 bg-red-100 rounded-full text-red-700 hover:text-red-900',
|
|
||||||
'data-tooltip' => 'bottom',
|
'data-tooltip' => 'bottom',
|
||||||
'title' => lang('Platforms.remove', [
|
'title' => lang('Platforms.remove', [
|
||||||
'platformName' => $platform->label,
|
'platformName' => $platform->label,
|
||||||
|
@ -70,8 +70,7 @@
|
|||||||
[
|
[
|
||||||
'width' => 420,
|
'width' => 420,
|
||||||
'height' => 620,
|
'height' => 620,
|
||||||
'class' =>
|
'class' => 'group inline-flex items-center px-3 leading-8 text-xs tracking-wider font-semibold text-black uppercase rounded-full shadow focus:ring-accent bg-white',
|
||||||
'group inline-flex items-center px-3 leading-8 text-xs tracking-wider font-semibold text-black uppercase rounded-full shadow focus:ring-accent bg-white',
|
|
||||||
],
|
],
|
||||||
) ?>
|
) ?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -104,8 +104,7 @@
|
|||||||
<footer class="container flex justify-between px-2 py-4 mx-auto text-sm text-right border-t border-subtle">
|
<footer class="container flex justify-between px-2 py-4 mx-auto text-sm text-right border-t border-subtle">
|
||||||
<?= render_page_links() ?>
|
<?= render_page_links() ?>
|
||||||
<small><?= lang('Common.powered_by', [
|
<small><?= lang('Common.powered_by', [
|
||||||
'castopod' =>
|
'castopod' => '<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org/" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
||||||
'<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org/" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
|
||||||
], null, false) ?></small>
|
], null, false) ?></small>
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
|
@ -53,8 +53,7 @@
|
|||||||
<footer class="container flex justify-between px-2 py-4 mx-auto text-sm text-right border-t border-subtle">
|
<footer class="container flex justify-between px-2 py-4 mx-auto text-sm text-right border-t border-subtle">
|
||||||
<?= render_page_links() ?>
|
<?= render_page_links() ?>
|
||||||
<small><?= lang('Common.powered_by', [
|
<small><?= lang('Common.powered_by', [
|
||||||
'castopod' =>
|
'castopod' => '<a class="underline hover:no-underline focus:ring-accent" href="https://castopod.org/" target="_blank" rel="noreferrer noopener">Castopod</a>',
|
||||||
'<a class="underline hover:no-underline focus:ring-accent" href="https://castopod.org/" target="_blank" rel="noreferrer noopener">Castopod</a>',
|
|
||||||
], null, false) ?></small>
|
], null, false) ?></small>
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
|
@ -56,8 +56,7 @@
|
|||||||
<footer class="container flex justify-between px-2 py-4 mx-auto text-sm text-right">
|
<footer class="container flex justify-between px-2 py-4 mx-auto text-sm text-right">
|
||||||
<?= render_page_links() ?>
|
<?= render_page_links() ?>
|
||||||
<small><?= lang('Common.powered_by', [
|
<small><?= lang('Common.powered_by', [
|
||||||
'castopod' =>
|
'castopod' => '<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org/" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
||||||
'<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org/" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
|
||||||
], null, false) ?></small>
|
], null, false) ?></small>
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
|
@ -69,8 +69,7 @@
|
|||||||
[
|
[
|
||||||
'width' => 420,
|
'width' => 420,
|
||||||
'height' => 620,
|
'height' => 620,
|
||||||
'class' =>
|
'class' => 'group inline-flex items-center px-4 text-xs tracking-wider font-semibold text-black uppercase rounded-full leading-8 shadow focus:ring-accent bg-white',
|
||||||
'group inline-flex items-center px-4 text-xs tracking-wider font-semibold text-black uppercase rounded-full leading-8 shadow focus:ring-accent bg-white',
|
|
||||||
],
|
],
|
||||||
) ?>
|
) ?>
|
||||||
</div>
|
</div>
|
||||||
|
@ -64,8 +64,7 @@
|
|||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
<p><?= esc($podcast->copyright) ?></p>
|
<p><?= esc($podcast->copyright) ?></p>
|
||||||
<p><?= lang('Common.powered_by', [
|
<p><?= lang('Common.powered_by', [
|
||||||
'castopod' =>
|
'castopod' => '<a class="inline-flex font-semibold text-skin-muted hover:underline focus:ring-accent" href="https://castopod.org" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
||||||
'<a class="inline-flex font-semibold text-skin-muted hover:underline focus:ring-accent" href="https://castopod.org" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
|
||||||
], null, false) ?></p>
|
], null, false) ?></p>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -27,8 +27,7 @@
|
|||||||
$link['route'],
|
$link['route'],
|
||||||
$link['label'] . ' (' . $link['number_of_episodes'] . ')',
|
$link['label'] . ' (' . $link['number_of_episodes'] . ')',
|
||||||
[
|
[
|
||||||
'class' =>
|
'class' => 'px-2 py-1 whitespace-nowrap hover:bg-highlight ' .
|
||||||
'px-2 py-1 whitespace-nowrap hover:bg-highlight ' .
|
|
||||||
($link['is_active']
|
($link['is_active']
|
||||||
? 'font-semibold'
|
? 'font-semibold'
|
||||||
: 'text-skin-muted hover:text-skin-base'),
|
: 'text-skin-muted hover:text-skin-base'),
|
||||||
|
@ -67,8 +67,7 @@
|
|||||||
<footer
|
<footer
|
||||||
class="flex-col w-full px-2 py-4 mt-auto text-xs text-center border-t text-skin-muted border-subtle">
|
class="flex-col w-full px-2 py-4 mt-auto text-xs text-center border-t text-skin-muted border-subtle">
|
||||||
<?= lang('Common.powered_by', [
|
<?= lang('Common.powered_by', [
|
||||||
'castopod' =>
|
'castopod' => '<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
||||||
'<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
|
||||||
], null, false) ?>
|
], null, false) ?>
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
|
@ -42,8 +42,7 @@ if ($post->in_reply_to_id): ?>
|
|||||||
'actorUsername' => esc($post->actor->username),
|
'actorUsername' => esc($post->actor->username),
|
||||||
]),
|
]),
|
||||||
[
|
[
|
||||||
'class' =>
|
'class' => 'text-center justify-center font-semibold rounded-full shadow relative z-10 px-4 py-2 w-full bg-accent-base text-accent-contrast inline-flex items-center hover:bg-accent-hover',
|
||||||
'text-center justify-center font-semibold rounded-full shadow relative z-10 px-4 py-2 w-full bg-accent-base text-accent-contrast inline-flex items-center hover:bg-accent-hover',
|
|
||||||
'width' => 420,
|
'width' => 420,
|
||||||
'height' => 620,
|
'height' => 620,
|
||||||
],
|
],
|
||||||
|
@ -58,8 +58,7 @@
|
|||||||
<footer
|
<footer
|
||||||
class="flex-col w-full px-2 py-4 mt-auto text-xs text-center border-t text-skin-muted border-subtle">
|
class="flex-col w-full px-2 py-4 mt-auto text-xs text-center border-t text-skin-muted border-subtle">
|
||||||
<?= lang('Common.powered_by', [
|
<?= lang('Common.powered_by', [
|
||||||
'castopod' =>
|
'castopod' => '<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
||||||
'<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
|
||||||
], null, false) ?>
|
], null, false) ?>
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
|
@ -33,8 +33,7 @@
|
|||||||
<footer class="flex flex-col text-sm">
|
<footer class="flex flex-col text-sm">
|
||||||
<?= $this->renderSection('footer') ?>
|
<?= $this->renderSection('footer') ?>
|
||||||
<small class="py-4 text-center border-t border-subtle"><?= lang('Common.powered_by', [
|
<small class="py-4 text-center border-t border-subtle"><?= lang('Common.powered_by', [
|
||||||
'castopod' =>
|
'castopod' => '<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org/" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
||||||
'<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org/" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
|
||||||
], null, false) ?></small>
|
], null, false) ?></small>
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
|
@ -29,8 +29,7 @@
|
|||||||
</main>
|
</main>
|
||||||
<footer class="container px-2 py-4 mx-auto text-sm text-right border-t border-subtle">
|
<footer class="container px-2 py-4 mx-auto text-sm text-right border-t border-subtle">
|
||||||
<small><?= lang('Common.powered_by', [
|
<small><?= lang('Common.powered_by', [
|
||||||
'castopod' =>
|
'castopod' => '<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
||||||
'<a class="inline-flex font-semibold hover:underline focus:ring-accent" href="https://castopod.org" target="_blank" rel="noreferrer noopener">Castopod' . icon('castopod', 'ml-1 text-lg', 'social') . '</a>',
|
|
||||||
], null, false) ?></small>
|
], null, false) ?></small>
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user