diff --git a/module/news/changes.md b/module/news/changes.md index 3a0a12f4..c6628690 100644 --- a/module/news/changes.md +++ b/module/news/changes.md @@ -1,3 +1,6 @@ +# Versions 6.0 +- Ajoute deux nouvelles options pour afficher ou masquer la date et l'heure de l'article. +- Corrige un mauvais format de la propriété buttonBack non stockée au type booléen. # Versions 5.9 - Largeur d'un bouton de retour. # Versions 5.7 - 5.8 diff --git a/module/news/news.php b/module/news/news.php index bcd678e6..6b6c477e 100644 --- a/module/news/news.php +++ b/module/news/news.php @@ -16,7 +16,7 @@ class news extends common { - const VERSION = '5.9'; + const VERSION = '6.0'; const REALNAME = 'News'; const DATADIRECTORY = self::DATA_DIR . 'news/'; @@ -124,11 +124,12 @@ class news extends common $feeds = new \FeedWriter\RSS2(); // En-tête - $feeds->setTitle($this->getData(['page', $this->getUrl(0), 'title']) ? $this->getData(['page', $this->getUrl(0), 'title']): ''); + $feeds->setTitle($this->getData(['page', $this->getUrl(0), 'title']) ? $this->getData(['page', $this->getUrl(0), 'title']) : ''); $feeds->setLink(helper::baseUrl() . $this->getUrl(0)); if ($this->getData(['page', $this->getUrl(0), 'metaDescription'])) { $feeds->setDescription($this->getData(['page', $this->getUrl(0), 'metaDescription'])); - }; + } + ; $feeds->setChannelElement('language', 'fr-FR'); $feeds->setDate(date('r', time())); $feeds->addGenerator(); @@ -174,7 +175,8 @@ class news extends common $publishedOn = $this->getInput('newsAddPublishedOn', helper::FILTER_DATETIME, true); $publishedOff = $this->getInput('newsAddPublishedOff') ? $this->getInput('newsAddPublishedOff', helper::FILTER_DATETIME) : ''; $this->setData([ - 'module', $this->getUrl(0), + 'module', + $this->getUrl(0), 'posts', $newsId, [ @@ -288,7 +290,8 @@ class news extends common // Fin feuille de style $this->setData([ - 'module', $this->getUrl(0), + 'module', + $this->getUrl(0), 'theme', [ 'style' => $success ? self::DATADIRECTORY . $this->getUrl(0) . '/theme.css' : '', @@ -300,7 +303,8 @@ class news extends common ]); $this->setData([ - 'module', $this->getUrl(0), + 'module', + $this->getUrl(0), 'config', [ 'feeds' => $this->getInput('newsOptionShowFeeds', helper::FILTER_BOOLEAN), @@ -310,7 +314,9 @@ class news extends common 'height' => $this->getInput('newsOptionHeight', helper::FILTER_INT, true), 'dateFormat' => $this->getInput('newsOptionDateFormat'), 'timeFormat' => $this->getInput('newsOptionTimeFormat'), - 'buttonBack' => $this->getInput('newsOptionButtonBack'), + 'buttonBack' => $this->getInput('newsOptionButtonBack', helper::FILTER_BOOLEAN), + 'showDate' => $this->getInput('newsOptionShowDate', helper::FILTER_BOOLEAN), + 'showTime' => $this->getInput('newsOptionShowTime', helper::FILTER_BOOLEAN), 'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData']), ] ]); @@ -318,7 +324,7 @@ class news extends common // Valeurs en sortie $this->addOutput([ - 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/option', + 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config', 'notification' => helper::translate('Modifications enregistrées'), 'state' => true ]); @@ -428,7 +434,8 @@ class news extends common $publishedOn = $this->getInput('newsEditPublishedOn', helper::FILTER_DATETIME, true); $publishedOff = $this->getInput('newsEditPublishedOff') ? $this->getInput('newsEditPublishedOff', helper::FILTER_DATETIME) : ''; $this->setData([ - 'module', $this->getUrl(0), + 'module', + $this->getUrl(0), 'posts', $newsId, [ @@ -490,6 +497,8 @@ class news extends common } // L'article existe else { + self::$dateFormat = $this->getData(['module', $this->getUrl(0), 'config', 'dateFormat']); + self::$timeFormat = $this->getData(['module', $this->getUrl(0), 'config', 'timeFormat']); self::$articleSignature = $this->signature($this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'userId'])); // Valeurs en sortie $this->addOutput([ @@ -609,6 +618,14 @@ class news extends common // Mettre à jour la version $this->setData(['module', $this->getUrl(0), 'config', 'versionData', '5.3']); } + // Mise à jour 6.0 + if (version_compare($versionData, '6.0', '<')) { + $this->setData(['module', $this->getUrl(0), 'config', 'buttonBack', true]); + $this->setData(['module', $this->getUrl(0), 'config', 'showTime', true]); + $this->setData(['module', $this->getUrl(0), 'config', 'showDate', true]); + // Mettre à jour la version + $this->setData(['module', $this->getUrl(0), 'config', 'versionData', '6.0']); + } } diff --git a/module/news/view/article/article.php b/module/news/view/article/article.php index 1567e530..e55aab82 100644 --- a/module/news/view/article/article.php +++ b/module/news/view/article/article.php @@ -12,12 +12,28 @@
- + - - getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI) . ' ' . helper::dateUTF8('%H:%M', $this->getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI); ?> - + + getData(['module', $this->getUrl(0), 'config', 'showDate']) === true + || $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true + ): ?> + 'left']); ?> + + getData(['module', $this->getUrl(0), 'config', 'showDate']) === true): ?> + getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI); ?> + + getData(['module', $this->getUrl(0), 'config', 'showDate']) === true + && $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true + ): ?> + + + getData(['module', $this->getUrl(0), 'config', 'showTime']) === true): ?> + getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI); ?> + isConnected() === true and diff --git a/module/news/view/index/index.php b/module/news/view/index/index.php index f15d0b0e..8a97abe8 100644 --- a/module/news/view/index/index.php +++ b/module/news/view/index/index.php @@ -1,5 +1,6 @@ - + getData(['module', $this->getUrl(0), 'config', 'feeds'])): ?>
@@ -20,10 +21,28 @@ getUrl(0) . '/' . $newsId . '">' . $news['title'] . ''; ?>
+ - - - + + + getData(['module', $this->getUrl(0), 'config', 'showDate']) === true + || $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true + ): ?> + 'left']); ?> + + getData(['module', $this->getUrl(0), 'config', 'showDate']) === true): ?> + getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI); ?> + + getData(['module', $this->getUrl(0), 'config', 'showDate']) === true + && $this->getData(['module', $this->getUrl(0), 'config', 'showTime']) === true + ): ?> + + + getData(['module', $this->getUrl(0), 'config', 'showTime']) === true): ?> + getData(['module', $this->getUrl(0), 'posts', $this->getUrl(1), 'publishedOn']), self::$i18nUI); ?> + isConnected() === true @@ -32,10 +51,8 @@ ($this->getUser('group') === self::GROUP_ADMIN) ) ): ?> -  -  - - Éditer + + 'left']); ?> Éditer
@@ -51,7 +68,6 @@
- diff --git a/module/news/view/option/option.js.php b/module/news/view/option/option.js.php new file mode 100644 index 00000000..831f333e --- /dev/null +++ b/module/news/view/option/option.js.php @@ -0,0 +1,40 @@ +/** + * This file is part of Zwii. + * + * For full copyright and license information, please see the LICENSE + * file that was distributed with this source code. + * + * @author Rémi Jean + * @copyright Copyright (C) 2008-2018, Rémi Jean + * @author Frédéric Tempez + * @copyright Copyright (C) 2018-2024, Frédéric Tempez + * @license CC Attribution-NonCommercial-NoDerivatives 4.0 International + * @link http://zwiicms.fr/ + */ + +$(document).ready(function() { + // Gestion du changement de la case "Afficher la date" + $('#newsOptionShowDate').change(function() { + var showDateChecked = $(this).is(':checked'); + + // Afficher ou masquer le wrapper de l'heure selon l'état de la date + if (showDateChecked) { + $('.timeWrapper').show(); + } else { + $('.timeWrapper').hide(); + // Désactiver l'option "Afficher l'heure" lorsque la date est désactivée + $('#newsOptionShowTime').prop('checked', false).trigger('change'); + } + + // Afficher ou masquer le format de la date + $('#newsOptionDateFormatWrapper').toggle(showDateChecked); + }).trigger('change'); // Déclenchement au chargement de la page + + // Gestion du changement de la case "Afficher l'heure" + $('#newsOptionShowTime').change(function() { + var showTimeChecked = $(this).is(':checked'); + + // Afficher ou masquer le format de l'heure + $('#newsOptionTimeFormatWrapper').toggle(showTimeChecked); + }).trigger('change'); // Déclenchement au chargement de la page +}); diff --git a/module/news/view/option/option.php b/module/news/view/option/option.php index 5273f256..9d16be83 100644 --- a/module/news/view/option/option.php +++ b/module/news/view/option/option.php @@ -1,111 +1,123 @@
-
- 'buttonGrey', - 'href' => helper::baseUrl() . $this->getUrl(0) . '/config', - 'value' => template::ico('left') - ]); ?> -
-
- -
+
+ 'buttonGrey', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/config', + 'value' => template::ico('left') + ]); ?>
-
-
-
-

-
-
- 'Nombre de colonnes', - 'selected' => $this->getData(['module', $this->getUrl(0),'config', 'itemsperCol']) - ]); ?> -
-
- 'Articles par page', - 'selected' => $this->getData(['module', $this->getUrl(0),'config', 'itemsperPage']) - ]); ?> -
-
- 'Abrégé de l\'article', - 'selected' => $this->getData(['module', $this->getUrl(0),'config', 'height']) - ]); ?> -
-
- 'Format des dates', - 'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'dateFormat']) - ]); ?> -
-
- 'Format des heures', - 'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'timeFormat']) - ]); ?> -
+
+ +
+
+
+
+
+

+
+
+ $this->getData(['module', $this->getUrl(0), 'config', 'showDate']), + ]); ?>
-
-
- $this->getData(['module', $this->getUrl(0), 'config', 'feeds']), - 'help' => 'Flux limité aux articles de la première page.' - ]); ?> -
-
- $this->getData(['module', $this->getUrl(0), 'config', 'buttonBack']) - ]); ?> -
-
- 'Étiquette RSS', - 'value' => $this->getData(['module', $this->getUrl(0), 'config', 'feedsLabel']) - ]); ?> -
+
+ 'Format des dates', + 'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'dateFormat']) + ]); ?> +
+
+ $this->getData(['module', $this->getUrl(0), 'config', 'showTime']), + ]); ?> +
+
+ 'Format des heures', + 'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'timeFormat']) + ]); ?> +
+
+
+
+ 'Nombre de colonnes', + 'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'itemsperCol']) + ]); ?> +
+
+ 'Articles par page', + 'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'itemsperPage']) + ]); ?> +
+
+ 'Abrégé de l\'article', + 'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'height']) + ]); ?> +
+
+
+
+ $this->getData(['module', $this->getUrl(0), 'config', 'buttonBack']) + ]); ?> +
+
+ $this->getData(['module', $this->getUrl(0), 'config', 'feeds']), + 'help' => 'Flux limité aux articles de la première page.' + ]); ?> +
+
+ 'Texte de l\'étiquette RSS', + 'value' => $this->getData(['module', $this->getUrl(0), 'config', 'feedsLabel']) + ]); ?>
-
-
-
-

-
-
- 'Bordure', - 'selected' => $this->getData(['module', $this->getUrl(0),'theme', 'borderStyle']) - ]); ?> -
-
- 'Épaisseur', - 'selected' => $this->getData(['module', $this->getUrl(0),'theme', 'borderWidth']) - ]); ?> -
-
- 'colorPicker', - 'help' => 'Couleur visible en l\'absence d\'une image.
Le curseur horizontal règle le niveau de transparence.', - 'label' => 'Couleur de la bordure', - 'value' => $this->getData(['module', $this->getUrl(0),'theme', 'borderColor']) - ]); ?> -
-
- 'colorPicker', - 'help' => 'Couleur visible en l\'absence d\'une image.
Le curseur horizontal règle le niveau de transparence.', - 'label' => 'Couleur du fond', - 'value' => $this->getData(['module', $this->getUrl(0),'theme', 'backgroundColor']) - ]); ?> -
+
+
+
+
+

+
+
+ 'Bordure', + 'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'borderStyle']) + ]); ?> +
+
+ 'Épaisseur', + 'selected' => $this->getData(['module', $this->getUrl(0), 'theme', 'borderWidth']) + ]); ?> +
+
+ 'colorPicker', + 'help' => 'Couleur visible en l\'absence d\'une image.
Le curseur horizontal règle le niveau de transparence.', + 'label' => 'Couleur de la bordure', + 'value' => $this->getData(['module', $this->getUrl(0), 'theme', 'borderColor']) + ]); ?> +
+
+ 'colorPicker', + 'help' => 'Couleur visible en l\'absence d\'une image.
Le curseur horizontal règle le niveau de transparence.', + 'label' => 'Couleur du fond', + 'value' => $this->getData(['module', $this->getUrl(0), 'theme', 'backgroundColor']) + ]); ?>
+
Version n°