From 3f4a6bd0b9f870f16107a41b102b6bf734868198 Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Thu, 29 Oct 2020 17:25:15 +0000 Subject: [PATCH] feat: add episode_numbering() component helper to display episode and season numbers --- app/Controllers/Admin/Episode.php | 12 +++- app/Controllers/Admin/Podcast.php | 4 +- app/Helpers/components_helper.php | 66 ++++++++++++++++++++- app/Helpers/id3_helper.php | 2 +- app/Helpers/rss_helper.php | 3 +- app/Language/en/Episode.php | 1 + app/Language/fr/Episode.php | 1 + app/Views/admin/episode/create.php | 1 - app/Views/admin/episode/edit.php | 1 - app/Views/admin/episode/list.php | 44 ++++---------- app/Views/admin/podcast/latest_episodes.php | 37 ++---------- app/Views/episode.php | 23 ++----- app/Views/podcast.php | 7 ++- 13 files changed, 108 insertions(+), 94 deletions(-) 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 @@ endSection() ?> section('headerRight') ?> -id), - - ['variant' => 'primary', 'iconLeft' => 'add'] -) ?> +id), [ + 'variant' => 'primary', + 'iconLeft' => 'add', +]) ?> endSection() ?> @@ -43,34 +41,12 @@ ) ?>">

title ?> - season_number && - $episode->number - ): ?> - $episode->season_number, - 'episodeNumber' => $episode->number, -]) ?> - season_number && - $episode->number - ): ?> - $episode->number, -]) ?> - + number, + $episode->season_number, + 'text-xs font-bold text-gray-600', + true + ) ?>

diff --git a/app/Views/admin/podcast/latest_episodes.php b/app/Views/admin/podcast/latest_episodes.php index b4dadbfa..96139092 100644 --- a/app/Views/admin/podcast/latest_episodes.php +++ b/app/Views/admin/podcast/latest_episodes.php @@ -27,37 +27,12 @@ >title ?>
- season_number && - $episode->number - ): ?> - $episode->season_number, - 'episodeNumber' => $episode->number, - ] -) ?> - season_number && - $episode->number - ): ?> - $episode->number, -]) ?> - + number, + $episode->season_number, + 'font-bold text-gray-600', + true + ) ?>