diff --git a/app/Controllers/Admin/Episode.php b/app/Controllers/Admin/Episode.php index 6dc61de1..0e1d348f 100644 --- a/app/Controllers/Admin/Episode.php +++ b/app/Controllers/Admin/Episode.php @@ -118,8 +118,12 @@ class Episode extends BaseController $this->request->getPost('parental_advisory') !== 'undefined' ? $this->request->getPost('parental_advisory') : null, - 'number' => $this->request->getPost('episode_number'), - 'season_number' => $this->request->getPost('season_number'), + 'number' => $this->request->getPost('episode_number') + ? $this->request->getPost('episode_number') + : null, + 'season_number' => $this->request->getPost('season_number') + ? $this->request->getPost('season_number') + : null, 'type' => $this->request->getPost('type'), 'is_blocked' => $this->request->getPost('block') == 'yes', 'created_by' => user(), @@ -204,7 +208,9 @@ class Episode extends BaseController $this->request->getPost('parental_advisory') !== 'undefined' ? $this->request->getPost('parental_advisory') : null; - $this->episode->number = $this->request->getPost('episode_number'); + $this->episode->number = $this->request->getPost('episode_number') + ? $this->request->getPost('episode_number') + : null; $this->episode->season_number = $this->request->getPost('season_number') ? $this->request->getPost('season_number') : null; diff --git a/app/Controllers/Admin/Podcast.php b/app/Controllers/Admin/Podcast.php index c46ed1e8..a6e9e202 100644 --- a/app/Controllers/Admin/Podcast.php +++ b/app/Controllers/Admin/Podcast.php @@ -384,7 +384,9 @@ class Podcast extends BaseController 'number' => $this->request->getPost('force_renumber') === 'yes' ? $itemNumber - : $nsItunes->episode, + : (!empty($nsItunes->episode) + ? $nsItunes->episode + : null), 'season_number' => empty( $this->request->getPost('season_number') ) diff --git a/app/Helpers/components_helper.php b/app/Helpers/components_helper.php index 0e31cb65..ae528dc4 100644 --- a/app/Helpers/components_helper.php +++ b/app/Helpers/components_helper.php @@ -259,9 +259,9 @@ if (!function_exists('data_table')) { if (!function_exists('publication_pill')) { /** - * Data table component + * Publication pill component * - * Creates a stylized table. + * Shows the stylized publication datetime in regards to current datetime. * * @param \CodeIgniter\I18n\Time $publicationDate publication datetime of the episode * @param boolean $isPublished whether or not the episode has been published @@ -303,4 +303,66 @@ if (!function_exists('publication_pill')) { ''; } } + +// ------------------------------------------------------------------------ + +if (!function_exists('episode_numbering')) { + /** + * Returns relevant translated episode numbering. + * + * @param int|null $episodeNumber + * @param int|null $seasonNumber + * @param string $class styling classes + * @param string $is_abbr component will show abbreviated numbering if true + * + * @return string + */ + function episode_numbering( + $episodeNumber = null, + $seasonNumber = null, + $class = '', + $isAbbr = false + ): string { + if (!$episodeNumber && !$seasonNumber) { + return ''; + } + + $transKey = ''; + $args = []; + if ($episodeNumber && $seasonNumber) { + $transKey = 'Episode.season_episode'; + $args = [ + 'seasonNumber' => $seasonNumber, + 'episodeNumber' => $episodeNumber, + ]; + } elseif ($episodeNumber && !$seasonNumber) { + $transKey = 'Episode.number'; + $args = [ + 'episodeNumber' => $episodeNumber, + ]; + } elseif (!$episodeNumber && $seasonNumber) { + $transKey = 'Episode.season'; + $args = [ + 'seasonNumber' => $seasonNumber, + ]; + } + + if ($isAbbr) { + return '' . + lang($transKey . '_abbr', $args) . + ''; + } + + return '' . + lang($transKey, $args) . + ''; + } +} + // ------------------------------------------------------------------------ diff --git a/app/Helpers/id3_helper.php b/app/Helpers/id3_helper.php index 2e7b1859..5046c72c 100644 --- a/app/Helpers/id3_helper.php +++ b/app/Helpers/id3_helper.php @@ -70,7 +70,7 @@ function write_enclosure_tags($episode) $episode->published_at ? $episode->published_at->format('Y') : '', ], 'genre' => ['Podcast'], - 'comment' => [$episode->description_html], + 'comment' => [$episode->description], 'track_number' => [strval($episode->number)], 'copyright_message' => [$episode->podcast->copyright], 'publisher' => [ diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index 93dbbdce..f09da92b 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -142,7 +142,8 @@ function get_rss_feed($podcast, $serviceName = '') $itunes_namespace ); - $item->addChild('episode', $episode->number, $itunes_namespace); + $episode->number && + $item->addChild('episode', $episode->number, $itunes_namespace); $episode->season_number && $item->addChild( 'season', diff --git a/app/Language/en/Episode.php b/app/Language/en/Episode.php index 61f0132d..652bad3a 100644 --- a/app/Language/en/Episode.php +++ b/app/Language/en/Episode.php @@ -12,6 +12,7 @@ return [ 'next_episode' => 'Next episode', 'next_season' => 'Next season', 'season' => 'Season {seasonNumber}', + 'season_abbr' => 'S{seasonNumber}', 'number' => 'Episode {episodeNumber}', 'number_abbr' => 'Ep. {episodeNumber}', 'season_episode' => 'Season {seasonNumber} episode {episodeNumber}', diff --git a/app/Language/fr/Episode.php b/app/Language/fr/Episode.php index 2b5716cd..a98e63b9 100644 --- a/app/Language/fr/Episode.php +++ b/app/Language/fr/Episode.php @@ -12,6 +12,7 @@ return [ 'next_episode' => 'Épisode suivant', 'next_season' => 'Saison suivante', 'season' => 'Saison {seasonNumber}', + 'season_abbr' => 'S{seasonNumber}', 'number' => 'Épisode {episodeNumber}', 'number_abbr' => 'Ep. {episodeNumber}', 'season_episode' => 'Saison {seasonNumber} épisode {episodeNumber}', diff --git a/app/Views/admin/episode/create.php b/app/Views/admin/episode/create.php index a948b1fa..6d1e50c9 100644 --- a/app/Views/admin/episode/create.php +++ b/app/Views/admin/episode/create.php @@ -104,7 +104,6 @@ 'name' => 'episode_number', 'class' => 'form-input w-full', 'value' => old('episode_number'), - 'required' => 'required', 'type' => 'number', ]) ?> diff --git a/app/Views/admin/episode/edit.php b/app/Views/admin/episode/edit.php index b2f9382f..2b5db05f 100644 --- a/app/Views/admin/episode/edit.php +++ b/app/Views/admin/episode/edit.php @@ -108,7 +108,6 @@ 'name' => 'episode_number', 'class' => 'form-input w-full', 'value' => old('episode_number', $episode->number), - 'required' => 'required', 'type' => 'number', ]) ?> diff --git a/app/Views/admin/episode/list.php b/app/Views/admin/episode/list.php index 9f033008..dff7ceff 100644 --- a/app/Views/admin/episode/list.php +++ b/app/Views/admin/episode/list.php @@ -11,12 +11,10 @@ = $this->endSection() ?> = $this->section('headerRight') ?> -= button( - lang('Episode.create'), - route_to('episode-create', $podcast->id), - - ['variant' => 'primary', 'iconLeft' => 'add'] -) ?> += button(lang('Episode.create'), route_to('episode-create', $podcast->id), [ + 'variant' => 'primary', + 'iconLeft' => 'add', +]) ?> = $this->endSection() ?> @@ -43,34 +41,12 @@ ) ?>">
- season_number): ?> - - = lang('Episode.season', [ - 'seasonNumber' => $episode->season_number, - ]) ?> - - = lang('Episode.number', [ - 'episodeNumber' => $episode->number, - ]) ?> -
- + = episode_numbering( + $episode->number, + $episode->season_number, + 'text-gray-600' + ) ?>