diff --git a/core/core.php b/core/core.php index 7fd37edc..26387116 100755 --- a/core/core.php +++ b/core/core.php @@ -1643,7 +1643,7 @@ class common { ){ if(class_exists($parent)) { $module = new $moduleId; - $module->initCSS($parent); + $module->update($parent); } } } diff --git a/module/gallery/gallery.php b/module/gallery/gallery.php index 4bce7c20..2346ba3c 100755 --- a/module/gallery/gallery.php +++ b/module/gallery/gallery.php @@ -149,12 +149,15 @@ class gallery extends common { */ private function update() { - // Mise à jour d'une version inférieure - if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '3.0', '<') ) { + // Mise à jour d'une version inférieure, la gallery existe mais pas content + if ($this->getData(['module', $this->getUrl(0)]) && + $this->getData(['module', $this->getUrl(0), 'content']) === NULL ) { + // Changement de l'arborescence dans module.json $data = $this->getData(['module', $this->getUrl(0)]); $this->deleteData(['module', $this->getUrl(0)]); $this->setData(['module', $this->getUrl(0), 'content', $data]); + // Effacer les fichiers CSS de l'ancienne version if (file_exists('module/gallery/view/index/index.css')) { unlink('module/gallery/view/index/index.css'); @@ -162,42 +165,35 @@ class gallery extends common { if (file_exists('module/gallery/view/gallery/gallery.css')) { unlink('module/gallery/view/gallery/gallery.css'); } - // Stockage des données du thème de la gallery - $data = $this->getData(['theme','gallery']); - $this->deleteData(['theme','gallery']); - $this->setData(['module', $this->getUrl(0), 'config', $data]); + // Stockage des données du thème de la gallery existant + if (is_array($this->getData(['theme','gallery']))) { + $data = $this->getData(['theme','gallery']); + $this->deleteData(['theme','gallery']); + $this->setData(['module', $this->getUrl(0), 'theme', $data]); + // Nom de la feuille de style + $this->setData(['module', $this->getUrl(0), 'theme', 'style', self::DATADIRECTORY . $moduleId . '.css']); + } else { + // Theme par défaut + $this->init($this->geturl(0)); + } // Nouvelle version $this->setData(['module', $this->getUrl(0), 'config', 'versionData', '3.0']); } } /** - * Initialisation du thème d'un nouveau module + * Initialisation séparément les éléments absents + * Thème + * Config + * Content */ - private function initCSS($moduleId) { + private function init($moduleId) { // Variable commune $fileCSS = self::DATADIRECTORY . $moduleId . '.css' ; - // Check la présence de la config - if ( $this->getData(['module', $moduleId, 'config']) === null ) { + // Check la présence du thème + if ( $this->getData(['module', $moduleId, 'theme']) === null ) { require_once('module/gallery/ressource/defaultdata.php'); - $this->setData(['module', $moduleId, 'config', [ - 'style' => $fileCSS, - 'thumbAlign' => theme::$defaultData['thumbAlign'], - 'thumbWidth' => theme::$defaultData['thumbWidth'], - 'thumbHeight' => theme::$defaultData['thumbHeight'], - 'thumbMargin' => theme::$defaultData['thumbMargin'], - 'thumbBorder' => theme::$defaultData['thumbBorder'], - 'thumbOpacity' => theme::$defaultData['thumbOpacity'], - 'thumbBorderColor' => theme::$defaultData['thumbBorderColor'], - 'thumbRadius' => theme::$defaultData['thumbRadius'], - 'thumbShadows' => theme::$defaultData['thumbShadows'], - 'thumbShadowsColor'=> theme::$defaultData['thumbShadowsColor'], - 'legendHeight' => theme::$defaultData['legendHeight'], - 'legendAlign' => theme::$defaultData['legendAlign'], - 'legendTextColor' => theme::$defaultData['legendTextColor'], - 'legendBgColor' => theme::$defaultData['legendBgColor'], - 'versionData' => theme::$defaultData['versionData'] - ]]); + $this->setData(['module', $moduleId, 'theme', theme::$defaultTheme]); } // Check la présence de la feuille de style if ( !file_exists(self::DATADIRECTORY . $moduleId . '.css')) { @@ -206,30 +202,40 @@ class gallery extends common { mkdir (self::DATADIRECTORY, 0777, true); } // Nom de la feuille de style - $this->setData(['module', $moduleId, 'config', 'style', $fileCSS]); + $this->setData(['module', $moduleId, 'theme', 'style', $fileCSS]); // Générer la feuille de CSS $content = file_get_contents('module/gallery/ressource/vartheme.css'); $themeCss = file_get_contents('module/gallery/ressource/theme.css'); // Injection des variables - $content = str_replace('#thumbAlign#',$this->getData(['module', $moduleId, 'config', 'thumbAlign']),$content ); - $content = str_replace('#thumbWidth#',$this->getData(['module', $moduleId, 'config', 'thumbWidth']),$content ); - $content = str_replace('#thumbHeight#',$this->getData(['module', $moduleId, 'config', 'thumbHeight']),$content ); - $content = str_replace('#thumbMargin#',$this->getData(['module', $moduleId, 'config', 'thumbMargin']),$content ); - $content = str_replace('#thumbBorder#',$this->getData(['module', $moduleId, 'config', 'thumbBorder']),$content ); - $content = str_replace('#thumbBorderColor#',$this->getData(['module', $moduleId, 'config', 'thumbBorderColor']),$content ); - $content = str_replace('#thumbOpacity#',$this->getData(['module', $moduleId, 'config', 'thumbOpacity']),$content ); - $content = str_replace('#thumbShadows#',$this->getData(['module', $moduleId, 'config', 'thumbShadows']),$content ); - $content = str_replace('#thumbShadowsColor#',$this->getData(['module', $moduleId, 'config', 'thumbShadowsColor']),$content ); - $content = str_replace('#thumbRadius#',$this->getData(['module', $moduleId, 'config', 'thumbRadius']),$content ); - $content = str_replace('#legendAlign#',$this->getData(['module', $moduleId, 'config', 'legendAlign']),$content ); - $content = str_replace('#legendHeight#',$this->getData(['module', $moduleId, 'config', 'legendHeight']),$content ); - $content = str_replace('#legendTextColor#',$this->getData(['module', $moduleId, 'config', 'legendTextColor']),$content ); - $content = str_replace('#legendBgColor#',$this->getData(['module', $moduleId, 'config', 'legendBgColor']),$content ); + $content = str_replace('#thumbAlign#',$this->getData(['module', $moduleId, 'theme', 'thumbAlign']),$content ); + $content = str_replace('#thumbWidth#',$this->getData(['module', $moduleId, 'theme', 'thumbWidth']),$content ); + $content = str_replace('#thumbHeight#',$this->getData(['module', $moduleId, 'theme', 'thumbHeight']),$content ); + $content = str_replace('#thumbMargin#',$this->getData(['module', $moduleId, 'theme', 'thumbMargin']),$content ); + $content = str_replace('#thumbBorder#',$this->getData(['module', $moduleId, 'theme', 'thumbBorder']),$content ); + $content = str_replace('#thumbBorderColor#',$this->getData(['module', $moduleId, 'theme', 'thumbBorderColor']),$content ); + $content = str_replace('#thumbOpacity#',$this->getData(['module', $moduleId, 'theme', 'thumbOpacity']),$content ); + $content = str_replace('#thumbShadows#',$this->getData(['module', $moduleId, 'theme', 'thumbShadows']),$content ); + $content = str_replace('#thumbShadowsColor#',$this->getData(['module', $moduleId, 'theme', 'thumbShadowsColor']),$content ); + $content = str_replace('#thumbRadius#',$this->getData(['module', $moduleId, 'theme', 'thumbRadius']),$content ); + $content = str_replace('#legendAlign#',$this->getData(['module', $moduleId, 'theme', 'legendAlign']),$content ); + $content = str_replace('#legendHeight#',$this->getData(['module', $moduleId, 'theme', 'legendHeight']),$content ); + $content = str_replace('#legendTextColor#',$this->getData(['module', $moduleId, 'theme', 'legendTextColor']),$content ); + $content = str_replace('#legendBgColor#',$this->getData(['module', $moduleId, 'theme', 'legendBgColor']),$content ); // Ecriture de la feuille de style file_put_contents(self::DATADIRECTORY . $moduleId . '.css' , $content . $themeCss); } + // Check Config + if ( $this->getData(['module', $moduleId, 'config']) === null ) { + require_once('module/gallery/ressource/defaultdata.php'); + $this->setData(['module', $moduleId, 'config', theme::$defaultData]); + } + + // Contenu vide de la galerie + if (!is_array($this->getData(['module', $this->getUrl(0), 'content'])) ) { + $this->setData(['module', $this->getUrl(0), 'content', array() ]); + } } @@ -244,16 +250,16 @@ class gallery extends common { for($i=0;$isetData(['module', $this->getUrl(0), 'content', $data[$i], [ 'config' => [ - 'name' => $this->getData(['module',$this->getUrl(0),$data[$i],'config','name']), - 'directory' => $this->getData(['module',$this->getUrl(0),$data[$i],'config','directory']), - 'homePicture' => $this->getData(['module',$this->getUrl(0),$data[$i],'config','homePicture']), - 'sort' => $this->getData(['module',$this->getUrl(0),$data[$i],'config','sort']), + 'name' => $this->getData(['module',$this->getUrl(0), 'content', $data[$i],'config','name']), + 'directory' => $this->getData(['module',$this->getUrl(0), 'content', $data[$i],'config','directory']), + 'homePicture' => $this->getData(['module',$this->getUrl(0), 'content', $data[$i],'config','homePicture']), + 'sort' => $this->getData(['module',$this->getUrl(0), 'content', $data[$i],'config','sort']), 'position'=> $i, - 'fullScreen' => $this->getData(['module',$this->getUrl(0),$data[$i],'config','fullScreen']) + 'fullScreen' => $this->getData(['module',$this->getUrl(0), 'content',$data[$i],'config','fullScreen']) ], - 'legend' => $this->getData(['module',$this->getUrl(0),$data[$i],'legend']), - 'positions' => $this->getData(['module',$this->getUrl(0),$data[$i],'positions']) + 'legend' => $this->getData(['module',$this->getUrl(0), 'content', $data[$i],'legend']), + 'positions' => $this->getData(['module',$this->getUrl(0), 'content', $data[$i],'positions']) ]]); } } @@ -291,12 +297,14 @@ class gallery extends common { */ public function config() { - // Initialisation du thème d'un nouveau module - $this->initCss($this->getUrl(0)); - // Mise à jour des données de module $this->update(); + // Initialisation d'un nouveau module + if ($this->getData(['module', $this->getUrl(0)]) === null) { + $this->init($this->getUrl(0)); + } + //Affichage de la galerie triée $g = $this->getData(['module', $this->getUrl(0), 'content']); $p = helper::arrayCollumn(helper::arrayCollumn($g,'config'),'position'); @@ -576,10 +584,15 @@ class gallery extends common { * Accueil (deux affichages en un pour éviter une url à rallonge) */ public function index() { - // Initialisation du thème du nouveau module - $this->initCss($this->getUrl(0)); + // Mise à jour des données de module $this->update(); + + // Initialisation d'un nouveau module + if ($this->getData(['module', $this->getUrl(0)]) === null) { + $this->init($this->getUrl(0)); + } + // Images d'une galerie if($this->getUrl(1)) { // La galerie n'existe pas @@ -638,7 +651,7 @@ class gallery extends common { 'showBarEditButton' => true, 'title' => $this->getData(['module', $this->getUrl(0), 'content', $this->getUrl(1), 'config', 'name']), 'view' => 'gallery', - 'style' => $this->getData(['module', $this->getUrl(0), 'config', 'style']) + 'style' => $this->getData(['module', $this->getUrl(0), 'theme', 'style']) ]); } // Pas d'image dans la galerie @@ -701,7 +714,7 @@ class gallery extends common { 'showBarEditButton' => true, 'showPageContent' => true, 'view' => 'index', - 'style' => $this->getData(['module', $this->getUrl(0), 'config', 'style']) + 'style' => $this->getData(['module', $this->getUrl(0), 'theme', 'style']) ]); } } @@ -727,7 +740,7 @@ class gallery extends common { } $fileCSS = self::DATADIRECTORY . $this->getUrl(0) . '.css' ; // Fin feuille de style - $this->getData(['module', $this->getUrl(0), 'config', [ + $this->getData(['module', $this->getUrl(0), 'theme', [ 'thumbAlign' => $this->getinput('galleryThemeThumbAlign'), 'thumbWidth' => $this->getinput('galleryThemeThumbWidth'), 'thumbHeight' => $this->getinput('galleryThemeThumbHeight'), @@ -743,9 +756,7 @@ class gallery extends common { 'legendTextColor' => $this->getinput('galleryThemeLegendTextColor'), 'legendBgColor' => $this->getinput('galleryThemeLegendBgColor'), 'style' => $fileCSS, - 'version' => $this->getData(['module', $this->getUrl(0), 'config', 'version']) - ] - ]); + ]]); // Création des fichiers CSS $content = file_get_contents('module/gallery/ressource/vartheme.css'); $themeCss = file_get_contents('module/gallery/ressource/theme.css'); diff --git a/module/gallery/ressource/defaultdata.php b/module/gallery/ressource/defaultdata.php index 22777389..737999c3 100755 --- a/module/gallery/ressource/defaultdata.php +++ b/module/gallery/ressource/defaultdata.php @@ -1,6 +1,6 @@ 'center', 'thumbWidth' => '18em', 'thumbHeight' => '15em', @@ -14,7 +14,9 @@ class theme extends gallery { 'legendHeight' => '.375em', 'legendAlign' => 'center', 'legendTextColor' => 'rgba(255, 255, 255, 1)', - 'legendBgColor' => 'rgba(0, 0, 0, .6)', - 'versionData' => '3.0' + 'legendBgColor' => 'rgba(0, 0, 0, .6)' + ]; + public static $defaultData = [ + 'versionData' => '3.0' ]; } diff --git a/module/gallery/view/edit/edit.php b/module/gallery/view/edit/edit.php index c8f74f42..df001bf7 100755 --- a/module/gallery/view/edit/edit.php +++ b/module/gallery/view/edit/edit.php @@ -38,22 +38,22 @@ 'selected' => $this->getData(['module', $this->getUrl(0), 'content', $this->getUrl(2), 'config', 'sort']), 'label' => 'Tri des images', 'help' => 'Tri manuel : déplacez le images dans le tableau ci-dessous. L\'ordre est sauvegardé automatiquement.' - ]); ?> + ]); ?>
$this->getData(['module', $this->getUrl(0), 'content', $this->getUrl(2), 'config', 'fullScreen']), 'help' => 'A l\'ouverture de la galerie, la première image est affichée en plein écran.' - ]); ?> -
+ ]); ?> +
'galleryTable'], $module::$picturesId ); ?> - $this->getUrl(2)]); ?> + $this->getUrl(2)]); ?> diff --git a/module/gallery/view/gallery/gallery.php b/module/gallery/view/gallery/gallery.php index b7a68a99..9e617583 100755 --- a/module/gallery/view/gallery/gallery.php +++ b/module/gallery/view/gallery/gallery.php @@ -13,7 +13,7 @@ @@ -51,7 +51,7 @@
'Bordure', - 'selected' => $this->getData(['module', $this->getUrl(0), 'config','thumbBorder']) + 'selected' => $this->getData(['module', $this->getUrl(0), 'theme','thumbBorder']) ]); ?>
@@ -59,13 +59,13 @@ 'class' => 'colorPicker', 'help' => 'Le curseur horizontal règle le niveau de transparence.', 'label' => 'Couleur de la bordure', - 'value' => $this->getData(['module', $this->getUrl(0), 'config','thumbBorderColor']) + 'value' => $this->getData(['module', $this->getUrl(0), 'theme','thumbBorderColor']) ]); ?>
'Arrondi des angles', - 'selected' => $this->getData(['module', $this->getUrl(0), 'config','thumbRadius']) + 'selected' => $this->getData(['module', $this->getUrl(0), 'theme','thumbRadius']) ]); ?>
@@ -73,7 +73,7 @@
'Ombre', - 'selected' => $this->getData(['module', $this->getUrl(0), 'config','thumbShadows']) + 'selected' => $this->getData(['module', $this->getUrl(0), 'theme','thumbShadows']) ]); ?>
@@ -81,13 +81,13 @@ 'class' => 'colorPicker', 'help' => 'Le curseur horizontal règle le niveau de transparence.', 'label' => 'Couleur de l\'ombre', - 'value' => $this->getData(['module', $this->getUrl(0), 'config','thumbShadowsColor']) + 'value' => $this->getData(['module', $this->getUrl(0), 'theme','thumbShadowsColor']) ]); ?>
'Opacité au survol', - 'selected' => $this->getData(['module', $this->getUrl(0), 'config','thumbOpacity']) + 'selected' => $this->getData(['module', $this->getUrl(0), 'theme','thumbOpacity']) ]); ?>
@@ -108,7 +108,7 @@ 'class' => 'colorPicker', 'help' => 'Le curseur horizontal règle le niveau de transparence.', 'label' => 'Texte', - 'value' => $this->getData(['module', $this->getUrl(0), 'config','legendTextColor']) + 'value' => $this->getData(['module', $this->getUrl(0), 'theme','legendTextColor']) ]); ?>
@@ -116,19 +116,19 @@ 'class' => 'colorPicker', 'help' => 'Le curseur horizontal règle le niveau de transparence.', 'label' => 'Fond', - 'value' => $this->getData(['module', $this->getUrl(0), 'config','legendBgColor']) + 'value' => $this->getData(['module', $this->getUrl(0), 'theme','legendBgColor']) ]); ?>
'Hauteur', - 'selected' => $this->getData(['module', $this->getUrl(0), 'config','legendHeight']) + 'selected' => $this->getData(['module', $this->getUrl(0), 'theme','legendHeight']) ]); ?>
'Alignement', - 'selected' => $this->getData(['module', $this->getUrl(0), 'config','legendAlign']) + 'selected' => $this->getData(['module', $this->getUrl(0), 'theme','legendAlign']) ]); ?>
diff --git a/module/news/news.php b/module/news/news.php index b87ee9c5..4af1cb48 100755 --- a/module/news/news.php +++ b/module/news/news.php @@ -44,7 +44,7 @@ class news extends common { public static $users = []; // Nombre d'objets par page - public static $ItemsList = [ + public static $itemsList = [ 4 => '4 articles', 8 => '8 articles', 12 => '12 articles', @@ -52,7 +52,7 @@ class news extends common { 22 => '22 articles' ]; // Nombre de colone par page - public static $Columns = [ + public static $columns = [ 12 => '1 Colonne', 6 => '2 Colonnes', 4 => '3 Colonnes', @@ -60,10 +60,18 @@ class news extends common { ]; public static $nbrCol = 1; - public static $ItemsHeight = [ - '200px' => 'Petit', - '300px' => 'Moyen', - '400px' => 'Grand' + public static $itemsHeight = [ + '200px' => 'Petite', + '300px' => 'Moyenne', + '400px' => 'Grande', + 'auto' => 'Article complet' + ]; + + public static $itemsBlur = [ + '100%' => 'Aucun', + '90%' => 'Faible', + '75%' => 'Modéré', + '60%' => 'Important', ]; // Signature de l'article @@ -165,34 +173,44 @@ class news extends common { */ public function config() { - // Initialisation du thème du nouveau module - $this->initCss($this->getUrl(0)); - // Mise à jour des données de module $this->update(); + // Initialisation d'un nouveau module + if ($this->getData(['module', $this->getUrl(0)]) === null) { + $this->init($this->getUrl(0)); + } + // Soumission du formulaire if($this->isPost()) { - // Générer la feuille de CSS + // Générer la feuille de CSS $style = '.newsContent {height:' . $this->getInput('newsConfigItemsHeight',helper::FILTER_STRING_SHORT) . ';}'; + $style .= '.newsBlur {background: linear-gradient(#333 ' . $this->getInput('newsConfigItemsBlur',helper::FILTER_STRING_SHORT) . ',#FFF );'; + $style .= ' background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;}'; + // Dossier de l'instance if (!is_dir(self::DATADIRECTORY)) { mkdir (self::DATADIRECTORY, 0777, true); } $success = file_put_contents(self::DATADIRECTORY . $this->getUrl(0) . '.css' , $style ); + // Fin feuille de style + $this->setData(['module', $this->getUrl(0), 'theme',[ + 'style' => $success ? self::DATADIRECTORY . $this->getUrl(0) . '.css' : '', + 'itemsHeight' => $this->getInput('newsConfigItemsHeight',helper::FILTER_STRING_SHORT), + 'itemsBlur' => $this->getInput('newsConfigItemsBlur',helper::FILTER_STRING_SHORT) + ]]); + $this->setData(['module', $this->getUrl(0), 'config',[ 'feeds' => $this->getInput('newsConfigShowFeeds',helper::FILTER_BOOLEAN), 'feedsLabel' => $this->getInput('newsConfigFeedslabel',helper::FILTER_STRING_SHORT), 'itemsperPage' => $this->getInput('newsConfigItemsperPage', helper::FILTER_INT,true), 'itemsperCol' => $this->getInput('newsConfigItemsperCol', helper::FILTER_INT,true), - 'itemsHeight' => $this->getInput('newsConfigItemsHeight',helper::FILTER_STRING_SHORT), - 'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData']), - 'style' => $success ? self::DATADIRECTORY . $this->getUrl(0) . '.css' : '' - ]]); + 'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData']) + ]]); // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/config', @@ -338,11 +356,15 @@ class news extends common { */ public function index() { - // Initialisation du thème du nouveau module - $this->initCss($this->getUrl(0)); - // Mise à jour des données de module $this->update(); + + // Initialisation d'un nouveau module + if ($this->getData(['module', $this->getUrl(0)]) === null) { + $this->init($this->getUrl(0)); + } + + // Affichage d'un article if( $this->getUrl(1) @@ -395,7 +417,7 @@ class news extends common { 'showBarEditButton' => true, 'showPageContent' => true, 'view' => 'index', - 'style' => $this->getData(['module', $this->getUrl(0),'config', 'style']) + 'style' => $this->getData(['module', $this->getUrl(0),'theme', 'style']) ]); } @@ -428,40 +450,41 @@ class news extends common { * Appelée par les fonctions index et config */ private function update() { + // Version 3.0 - if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '3.0', '<') ) { - $this->setData(['module', $this->getUrl(0), 'config', 'itemsperPage', 16]); - $this->setData(['module', $this->getUrl(0), 'config', 'itemsperCol', 6]); - $this->setData(['module', $this->getUrl(0), 'config', 'versionData','3.0']); + if ($this->getData(['module', $this->getUrl(0), 'config']) === NULL ) { + // Données config et theme absentes du précédent module + $this->init($this->getUrl(0)); } } /** * Initialisation du thème d'un nouveau module */ - private function initCSS($moduleId) { + private function init($moduleId) { // Variable commune $fileCSS = self::DATADIRECTORY . $moduleId . '.css' ; - if ( $this->getData(['module', $moduleId, 'config', 'itemsHeight']) === null ) { - - $this->setData(['module', $moduleId, 'config', 'itemsHeight', '200px']); - - // Générer la feuille de CSS - $style = '.newsContent {height: 200px;}'; - - // Dossier de l'instance - if (!is_dir(self::DATADIRECTORY)) { - mkdir (self::DATADIRECTORY, 0777, true); - } - - // Sauver la feuille de style - $success = file_put_contents(self::DATADIRECTORY .$moduleId . '.css' , $style ); - - // Nom de la feuille de style - $this->setData(['module', $moduleId, 'config', 'style', self::DATADIRECTORY .$moduleId]); - // Fin feuille de style + // Données du module + require_once('module/news/ressource/defaultdata.php'); + $this->setData(['module', $moduleId, 'config',init::$defaultData ]); + // Données de thème + $this->setData(['module', $moduleId, 'theme',init::$defaultTheme ]); + // Générer la feuille de CSS + $style = '.newsContent {height: ' . $this->getData([ 'module', $moduleId, 'theme', 'itemsHeight' ]) .';}'; + $style .= '.newsBlur {background: linear-gradient(#333 ' . $this->getData([ 'module', $moduleId, 'theme', 'itemsBlur' ]) . ',#FFF );'; + $style .= ' background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;}'; + + // Dossier de l'instance + if (!is_dir(self::DATADIRECTORY)) { + mkdir (self::DATADIRECTORY, 0777, true); } + + // Sauver la feuille de style + file_put_contents(self::DATADIRECTORY .$moduleId . '.css' , $style ); + + // Stocker le nom de la feuille de style + $this->setData(['module', $moduleId, 'theme', 'style', self::DATADIRECTORY . $moduleId . '.css']); } } diff --git a/module/news/ressource/defaultdata.php b/module/news/ressource/defaultdata.php new file mode 100644 index 00000000..cf2d5649 --- /dev/null +++ b/module/news/ressource/defaultdata.php @@ -0,0 +1,14 @@ + false, + 'feedsLabel' => '', + 'itemsperPage' => 8, + 'itemsperCol' => 12, + 'versionData' => '3.0' + ]; + public static $defaultTheme = [ + 'itemsHeight' => '200px', + 'itemsBlur' => '0%' + ]; +} \ No newline at end of file diff --git a/module/news/view/config/config.php b/module/news/view/config/config.php index b9cee0bd..a86fc1e4 100755 --- a/module/news/view/config/config.php +++ b/module/news/view/config/config.php @@ -37,25 +37,32 @@ ]); ?> -
-
- + 'Pagination', 'selected' => $this->getData(['module', $this->getUrl(0),'config', 'itemsperCol']), 'help' => 'Nombre de colonnes par page' ]); ?>
-
- + 'Articles par page', 'selected' => $this->getData(['module', $this->getUrl(0),'config', 'itemsperPage']) ]); ?>
-
- + 'Hauteur', - 'selected' => $this->getData(['module', $this->getUrl(0),'config', 'itemsHeight']) + 'selected' => $this->getData(['module', $this->getUrl(0),'theme', 'itemsHeight']), + 'help' => 'Limite la hauteur de l\'article, cette option est utile lorsque la pagination en colonnes est activée.' + ]); ?> +
+
+ 'Effet flou', + 'selected' => $this->getData(['module', $this->getUrl(0),'theme', 'itemsBlur']), + 'help' => 'Effet appliqué en bas de l\'article afin d\'éviter une coupure brutale quand la hauteur de l\'article n\'est pas définie sur Article Complet' ]); ?>
diff --git a/module/news/view/index/index.css b/module/news/view/index/index.css index 01708395..04b5023c 100755 --- a/module/news/view/index/index.css +++ b/module/news/view/index/index.css @@ -23,22 +23,19 @@ }*/ .newsContent { overflow: hidden; /* les dépassements seront masqués */ - position: relative; -} - -.newsBlur { - background: linear-gradient(#333 70%,#FFF ); - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; -} - - -.newsContent { + position: relative; clear: left; margin-left: 10px; margin-bottom: 5px; } +/* +.newsBlur { + background: linear-gradient(#333 90%,#FFF ); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +}*/ + .newsSignature { margin-right: 10px; diff --git a/module/search/ressource/defaultdata.php b/module/search/ressource/defaultdata.php index bd10fb70..74f7a636 100755 --- a/module/search/ressource/defaultdata.php +++ b/module/search/ressource/defaultdata.php @@ -5,8 +5,9 @@ class init extends search { 'resultHideContent' => false, 'placeHolder' => 'Un ou plusieurs mots-clés séparés par un espace ou par +', 'submitText' => 'Rechercher', - 'keywordColor' => 'rgba(229, 229, 1, 1)', - 'versionData' => '2.0', - 'style' => '' + 'versionData' => '2.0' + ]; + public static $defaultTheme = [ + 'keywordColor' => 'rgba(229, 229, 1, 1)' ]; } \ No newline at end of file diff --git a/module/search/search.php b/module/search/search.php index ae57e49c..9a5fad73 100755 --- a/module/search/search.php +++ b/module/search/search.php @@ -52,65 +52,86 @@ class search extends common { */ private function update() { - // Version 2.0 - if (version_compare($this->getData(['module', $this->getUrl(0), 'config', 'versionData']), '2.0', '<') ) { - - // Données de l'instance + // Déplacement des données d'une version ultérieure + if ($this->getData(['module', $this->getUrl(0), 'previewLength']) ) { $data = $this->getData(['module', $this->getUrl(0)]); + // Feuille de style + $fileCSS = self::DATADIRECTORY . $this->getUrl(0) . '.css' ; $this->setData(['module', $this->getUrl(0), 'config', [ 'submitText' => $this->getData(['module', $this->getUrl(0), 'submitText']), 'placeHolder' => $this->getData(['module', $this->getUrl(0), 'placeHolder']), 'resultHideContent' => $this->getData(['module', $this->getUrl(0), 'resultHideContent']), 'previewLength' => $this->getData(['module', $this->getUrl(0), 'previewLength']), - 'keywordColor' => $this->getData(['module', $this->getUrl(0), 'keywordColor']), - 'style' => self::DATADIRECTORY . $this->getUrl(0) . '.css', 'versionData' => '2.0' ]]); + $this->setData(['module', $this->getUrl(0), 'theme', [ + 'keywordColor' => $this->getData(['module', $this->getUrl(0), 'keywordColor']), + 'style' => $fileCSS + ]]); + + // Dossier de l'instance + if (!is_dir(self::DATADIRECTORY)) { + mkdir (self::DATADIRECTORY, 0777, true); + } + // Générer la feuille de CSS + $style = '.keywordColor {background: ' . $this->getData(['module', $this->getUrl(0), 'theme', 'keywordColor']) . ';}'; + // Sauver la feuille de style + $success = file_put_contents( $fileCSS, $style); + // Nettoyage des données précédentes $this->deleteData(['module', $this->getUrl(0), 'submitText']); $this->deleteData(['module', $this->getUrl(0), 'placeHolder']); $this->deleteData(['module', $this->getUrl(0), 'resultHideContent']); $this->deleteData(['module', $this->getUrl(0), 'previewLength']); $this->deleteData(['module', $this->getUrl(0), 'keywordColor']); + + $this->setData(['module', $this->getUrl(0), 'config', 'versionData', '2.0']); } } /** - * Initialisation du thème du module - * Appelée par les fonctions index et config + * Initialisation du module */ - private function initCss($moduleId){ - // Création des valeurs de réglage par défaut - if ( !is_array($this->getData(['module',$moduleId, 'config']) ) ) { - require_once('module/search/ressource/defaultdata.php'); + private function init($moduleId){ + // Variable commune + $fileCSS = self::DATADIRECTORY . $moduleId . '.css' ; - // Sauver les données par défaut - init::$defaultData['style'] = self::DATADIRECTORY . $moduleId . '.css'; - $this->setData(['module', $moduleId, 'config', init::$defaultData]); + // Données du module + require_once('module/search/ressource/defaultdata.php'); + $this->setData(['module', $moduleId, 'config',init::$defaultData ]); + // Données de thème + $this->setData(['module', $moduleId, 'theme',init::$defaultTheme ]); - $style = '.searchItem {background:' . $this->getData(['module', $moduleId, 'config', 'keywordColor']). ';}'; + // Générer la feuille de CSS + $style = '.keywordColor {background: ' . $this->getData([ 'module', $moduleId, 'theme', 'keywordColor' ]) . ';}'; - // Dossier de l'instance - if (!is_dir(self::DATADIRECTORY )) { - mkdir (self::DATADIRECTORY , 0777, true); - } - $success = file_put_contents(self::DATADIRECTORY . $moduleId . '.css' , $style ); + // Dossier de l'instance + if (!is_dir(self::DATADIRECTORY)) { + mkdir (self::DATADIRECTORY, 0777, true); } + + // Sauver la feuille de style + file_put_contents(self::DATADIRECTORY .$moduleId . '.css' , $style ); + + // Stocker le nom de la feuille de style + $this->setData(['module', $moduleId, 'theme', 'style', self::DATADIRECTORY . $moduleId . '.css']); } // Configuration vide public function config() { - // Initialisation d'un nouveau module - $this->initCss($this->getUrl(0)); - // Mise à jour des données de module $this->update(); + // Initialisation d'un nouveau module + if ($this->getData(['module', $this->getUrl(0)]) === null) { + $this->init($this->getUrl(0)); + } + if($this->isPost()) { // Générer la feuille de CSS - $style = '.searchItem {background:' . $this->getInput('searchKeywordColor') . ';}'; + $style = '.keywordColor {background:' . $this->getInput('searchKeywordColor') . ';}'; // Dossier de l'instance if (!is_dir(self::DATADIRECTORY)) { mkdir (self::DATADIRECTORY , 0777, true); @@ -125,9 +146,11 @@ class search extends common { 'placeHolder' => $this->getInput('searchPlaceHolder'), 'resultHideContent' => $this->getInput('searchResultHideContent',helper::FILTER_BOOLEAN), 'previewLength' => $this->getInput('searchPreviewLength',helper::FILTER_INT), + 'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData']) + ]]); + $this->setData(['module', $this->getUrl(0), 'theme',[ 'keywordColor' => $this->getInput('searchKeywordColor'), 'style' => $success ? self::DATADIRECTORY . $this->getUrl(0) . '.css' : '', - 'versionData' => $this->getData(['module', $this->getUrl(0), 'config', 'versionData']) ]]); @@ -151,12 +174,14 @@ class search extends common { public function index() { - // Initialisation d'un nouveau module - $this->initCss($this->getUrl(0)); - // Mise à jour des données de module $this->update(); + // Initialisation d'un nouveau module + if ($this->getData(['module', $this->getUrl(0)]) === null) { + $this->init($this->getUrl(0)); + } + if($this->isPost()) { //Initialisations variables $success = true; @@ -307,7 +332,7 @@ class search extends common { 'view' => 'index', 'showBarEditButton' => true, 'showPageContent' => !$this->getData(['module', $this->getUrl(0), 'config', 'resultHideContent']), - 'style' => $this->getData(['module', $this->getUrl(0), 'config', 'style']) + 'style' => $this->getData(['module', $this->getUrl(0), 'theme', 'style']) ]); } else { // Valeurs en sortie, affichage du formulaire @@ -356,7 +381,7 @@ class search extends common { // Découper l'aperçu $t = substr($contenu, $d ,$this->getData(['module',$this->getUrl(0), 'config', 'previewLength'])); // Applique une mise en évidence - $t = preg_replace($keywords, '\1',$t); + $t = preg_replace($keywords, '\1',$t); // Sauver résultat $resultat .= '

'.$t.'...

'; $resultat .= '

' . count($matches[0]) . (count($matches[0]) === 1 ? ' correspondance

' : ' correspondances

'); diff --git a/module/search/view/config/config.php b/module/search/view/config/config.php index 06d22285..68b6ab8f 100755 --- a/module/search/view/config/config.php +++ b/module/search/view/config/config.php @@ -59,7 +59,7 @@ 'class' => 'colorPicker', 'help' => 'Le curseur horizontal règle le niveau de transparence, le placer tout à la gauche pour un surlignement invisible.', 'label' => 'Surlignement', - 'value' => $this->getData(['module', $this->getUrl(0), 'config', 'keywordColor']) + 'value' => $this->getData(['module', $this->getUrl(0), 'theme', 'keywordColor']) ]); ?>