Browse Source

Merge branch '10400' into editeur

editeur
fredtempez 4 months ago
parent
commit
e6454d8f33
  1. 97
      core/core.php
  2. 4
      core/layout/main.php
  3. 2
      core/module/config/config.php
  4. 10
      module/search/ressource/defaultdata.php
  5. 11
      module/search/ressource/theme.css
  6. 3
      module/search/ressource/vartheme.css
  7. 40
      module/search/search.php
  8. 2
      module/search/view/config/config.php
  9. 8
      module/search/view/index/index.css
  10. 4
      module/search/view/index/index.php
  11. 4
      site/data/.htaccess

97
core/core.php

@ -197,10 +197,6 @@ class common {
$this->input['_COOKIE'] = $_COOKIE;
}
// Déterminer le dossier de langues
if (isset($_POST['ZWII_USER_I18N'])) {
self::$i18nCurrent = $_POST['ZWII_USER_I18N'];
}
// Instanciation de la classe des entrées / sorties
// Récupère les descripteurs
@ -241,30 +237,6 @@ class common {
$this->user = $this->getData(['user', $this->getInput('ZWII_USER_ID')]);
}
// Traduction du site avec le script Google
if ( $this->getData(['config','translate','scriptGoogle'])) {
// Lire la langue stockée dans le cookie (choix manuel)
if ( isset($_COOKIE['ZWII_USER_I18N']) ) {
$lan_cookie = $_COOKIE['ZWII_USER_I18N'];
}
// Lire la langue du navigateur
if ( $this->getData(['config','translate','autoDetect'])) {
$lan_browser = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
// Priorité : choix manuel - navigateur - fr
$lan = isset($lan_cookie) ? $lan_cookie : (isset($lan_browser) ? $lan_browser : 'fr');
// Changer la locale
if ( $lan !== 'fr') {
setlocale (LC_TIME, $lan . '_' . strtoupper ($lan) );
// Charge la librairie Google Translate
setrawcookie("googtrans", '/fr/'. $lan, time() + 3600, helper::baseUrl());
} else {
setrawcookie("googtrans", '/fr/fr', time() + 3600, helper::baseUrl());
}
}
// Construit la liste des pages parents/enfants
if($this->hierarchy['all'] === []) {
$pages = helper::arrayCollumn($this->getData(['page']), 'position', 'SORT_ASC');
@ -566,16 +538,7 @@ class common {
// Une partie de l'url
else {
$url = explode('/', $this->url);
if (array_key_exists($key, $url) ) {
if (strpos($url[$key],'fbclid=') === false) {
$result = $url[$key];
} else {
$result = $key === 0 ? $this->getData(['config','homePageId']) : '';
}
} else {
$result = null;
}
return $result;
return array_key_exists($key, $url) ? $url[$key] : null;
}
}
@ -1598,6 +1561,13 @@ class common {
}
}
// Supprimer les fichiers CSS devenus inutiles du module search
if (file_exists('module/search/ressource/theme.css') )
unlink('module/search/ressource/theme.css');
if (file_exists('module/search/ressource/vartheme.css') )
unlink('module/search/ressource/vartheme.css');
$this->deleteData(['theme','search','keywordColor']);
$this->setData(['core', 'dataVersion', 10400]);
/**
@ -2199,21 +2169,6 @@ class core extends common {
}
}
// Chargement de la librairie googtrans
// Le multi langue est actif
if ($this->getData(['config','translate','scriptGoogle']) === true ) {
// la traduction auto est active
if ( $this->getData(['config','translate','autoDetect']) === true
// Cas des pages d'administration
AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
OR ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
AND $this->getData(['config','translate','admin']) === true )
) {
$this->addOutput([
'vendor' => array_merge($this->output['vendor'], ['i18n'])
]);
}
}
// Erreurs
if($access === 'login') {
http_response_code(302);
@ -2350,26 +2305,6 @@ class layout extends common {
echo $this->core->output['content'];
/**
* Affiche les crédits, conditions requis :
* La traduction est active et le site n'est pas en français.
* La fonction est activée.
*/
if ( (
( $this->getData(['config','translate','scriptGoogle']) === true
AND substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) !== 'fr'
)
OR ( isset($_COOKIES['ZWII_USER_I18N'])
AND array_key_exists($_COOKIES['ZWII_USER_I18N'],$this->i18nList
AND $_COOKIES['ZWII_USER_I18N'] !== 'fr' )
)
)
AND $this->getData(['config','translate','showCredits']) === true
)
{
echo '<div id="googTransLogo"><a href="//policies.google.com/terms#toc-content" data-lity><img src="core/module/translate/ressource/googtrans.png" /></a></div>';
}
}
@ -3067,20 +3002,4 @@ class layout extends common {
}
}
}
/**
* Affiche le cadre avec les drapeaux
*/
public function showi18n() {
if ( $this->getData(['config','translate','scriptGoogle']) === true ) {
echo '<div id="i18nContainer"><ul>';
foreach (self::$i18nList as $key => $value) {
if ($this->getData(['config','translate','script' . strtoupper($key)]) ) {
echo '<li>';
echo '<a href="' . helper::baseUrl() . 'translate/language/' . $key . '/' . $this->getUrl(0) . '"><img class= "flag" src="' . helper::baseUrl(false) . 'core/vendor/i18n/png/' . $key . '.png" /></a>';
echo '</li>';
}
}
echo '</ul></div>';
}
}
}

4
core/layout/main.php

@ -60,7 +60,7 @@ $lan = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); ?>
<?php if($this->getData(['theme', 'header', 'position']) === 'body'): ?>
<!-- Bannière dans le fond du site -->
<header>
<?php $layout->showi18n();?>
<?php //$layout->showi18n();?>
<?php
if ($this->getData(['theme','header','linkHomePage'])){
echo "<a href='" . helper::baseUrl(false) . "'>" ;} ?>
@ -154,7 +154,7 @@ $lan = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); ?>
<?php endif; ?>
<!-- Corps de page -->
<section>
<?php $layout->showi18n();?>
<?php //$layout->showi18n();?>
<?php
// Gabarit :
// Récupérer la config de la page courante

2
core/module/config/config.php

@ -552,8 +552,6 @@ class config extends common {
PHP_EOL .
'<ifModule mod_rewrite.c>' . PHP_EOL .
"\tRewriteEngine on" . PHP_EOL .
"\tRewriteCond %{QUERY_STRING} ^(.*)&?fbclid=[^&]+&?(.*)$ [NC]". PHP_EOL .
"\tRewriteRule ^/?(.*)$ /$1?%1%2 [R=301,L]". PHP_EOL .
"\tRewriteBase " . helper::baseUrl(false, false) . PHP_EOL .
"\tRewriteCond %{REQUEST_FILENAME} !-f" . PHP_EOL .
"\tRewriteCond %{REQUEST_FILENAME} !-d" . PHP_EOL .

10
module/search/ressource/defaultdata.php

@ -1,14 +1,10 @@
<?php
class theme extends search {
public static $defaultData = [
'keywordColor' => 'rgba(229, 229, 1, 1)'
];
}
class data extends search {
class init extends search {
public static $defaultData = [
'previewLength' => 100,
'resultHideContent' => false,
'placeHolder' => 'Un ou plusieurs mots-clés séparés par un espace ou par +',
'submitText' => 'Rechercher'
'submitText' => 'Rechercher',
'keywordColor' => 'rgba(229, 229, 1, 1)'
];
}

11
module/search/ressource/theme.css

@ -1,11 +0,0 @@
.searchTitle {
font: caption;
font-style: italic;
margin-left: 1em;
}
.searchKeyword {
background: var(--keywordColor);
}
.searchResult {
margin: .3em 0 .3em 1em;
}

3
module/search/ressource/vartheme.css

@ -1,3 +0,0 @@
.searchKeyword {
--keywordColor: #keywordColor#;
}

40
module/search/search.php

@ -38,37 +38,31 @@ class search extends common {
400 => '400 caractères',
];
// Message par défaut
public static $messagePlaceHolder = 'Un ou plusieurs mots-clés entre des espaces ou des guillemets';
public static $messageButtontext = 'Rechercher';
const SEARCH_VERSION = '1.1';
const SEARCH_VERSION = '1.2';
// Configuration vide
public function config() {
// Initialisation des données de thème de la galerie dasn theme.json
// Création des valeurs de réglage par défaut
if ( $this->getData(['module', $this->getUrl(0)]) === null ) {
require_once('module/search/ressource/defaultdata.php');
$this->setData(['module', $this->getUrl(0), init::$defaultData]);
}
if($this->isPost()) {
// Soumission du formulaire
$this->setData(['theme', 'search', [
'keywordColor' => $this->getInput('searchKeywordColor')
]]);
$this->setData(['module', $this->getUrl(0), [
'submitText' => $this->getInput('searchSubmitText'),
'placeHolder' => $this->getInput('searchPlaceHolder'),
'resultHideContent' => $this->getInput('searchResultHideContent',helper::FILTER_BOOLEAN),
'previewLength' => $this->getInput('searchPreviewLength',helper::FILTER_INT)
'previewLength' => $this->getInput('searchPreviewLength',helper::FILTER_INT),
'keywordColor' => $this->getInput('searchKeywordColor')
]]);
// Création des fichiers CSS
$content = file_get_contents('module/search/ressource/vartheme.css');
$themeCss = file_get_contents('module/search/ressource/theme.css');
// Injection des variables
$content = str_replace('#keywordColor#',$this->getinput('searchKeywordColor'),$content );
$success = file_put_contents('module/search/view/index/index.css',$content . $themeCss);
// Valeurs en sortie, affichage du formulaire
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(),
'notification' => $success !== FALSE ? 'Modifications enregistrées' : 'Modifications non enregistées !',
'notification' => $success !== FALSE ? 'Modifications enregistrées' : 'Modifications non enregistrées !',
'state' => $success !== FALSE
]);
@ -84,15 +78,11 @@ class search extends common {
}
public function index() {
// Création des valeurs de thème par défaut
if ( $this->getData(['theme', 'search']) === null ) {
require_once('module/search/ressource/defaultdata.php');
$this->setData(['theme', 'search', theme::$defaultData]);
}
// Création des valeurs de réglage par défaut
if ( $this->getData(['module', 'search']) === null ) {
if ( $this->getData(['module', $this->getUrl(0)]) === null ) {
require_once('module/search/ressource/defaultdata.php');
$this->setData(['module', $this->getUrl(0), data::$defaultData]);
$this->setData(['module', $this->getUrl(0), init::$defaultData]);
}
if($this->isPost()) {
@ -241,7 +231,7 @@ class search extends common {
// Découper l'aperçu
$t = substr($contenu, $d ,$this->getData(['module',$this->getUrl(0),'previewLength']));
// Applique une mise en évidence
$t = preg_replace($keywords, '<span class="searchKeyword">\1</span>',$t);
$t = preg_replace($keywords, '<span style="background:' . $this->getData(['module',$this->getUrl(0),'keywordColor']). ';">\1</span>',$t);
// Sauver résultat
$resultat .= '<p class="searchResult">'.$t.'...</p>';
$resultat .= '<p class="searchTitle">' . count($matches[0]) . (count($matches[0]) === 1 ? ' correspondance<p>' : ' correspondances<p>');

2
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(['theme', 'search', 'keywordColor'])
'value' => $this->getData(['module', $this->getUrl(0), 'keywordColor'])
]); ?>
</div>
</div>

8
module/search/view/index/index.css

@ -1,14 +1,10 @@
.searchKeyword {
--keywordColor: rgba(229, 229, 1, 1);
}
.searchTitle {
font: caption;
font-style: italic;
margin-left: 1em;
}
.searchKeyword {
background: var(--keywordColor);
}
.searchResult {
margin: .3em 0 .3em 1em;
}

4
module/search/view/index/index.php

@ -4,13 +4,13 @@
<div class="row">
<div class="col9 verticalAlignMiddle">
<?php echo template::text('searchMotphraseclef', [
'placeholder' => $this->getData(['module', $this->getUrl(0), 'placeHolder']) ? $this->getData(['module', $this->getUrl(0), 'placeHolder']) : $module::$messagePlaceHolder,
'placeholder' => $this->getData(['module', $this->getUrl(0), 'placeHolder']),
'value' => $module::$motclef
]); ?>
</div>
<div class="col3 verticalAlignMiddle">
<?php echo template::submit('pageEditSubmit', [
'value' => $this->getData(['module', $this->getUrl(0), 'submitText']) ? $this->getData(['module', $this->getUrl(0), 'submitText']) : $module::$messageButtontext
'value' => $this->getData(['module', $this->getUrl(0), 'submitText'])
]); ?>
</div>
</div>

4
site/data/.htaccess

@ -1,5 +1,5 @@
# Bloque l'accès aux données
<FilesMatch ".(htaccess|json|log)$">
<Files ~ "\.(htaccess|json|log)$">
Order deny,allow
Deny from all
</FilesMatch>
</Files>
Loading…
Cancel
Save