forked from ZwiiCMS-Team/ZwiiCMS
Remplace l'api opengraph par un sélecteur
This commit is contained in:
parent
ce1c3a852a
commit
a667b0370d
@ -6,7 +6,8 @@
|
||||
- Améliore la gestion de la base de données et la génération du fichier de journalisation, stockage des données JSON, forçage au format objet.
|
||||
- Erreurs fictives pendant la mise à jour en ligne, améliorations du dialogue AJAX entre PHP et JQUERY avec un affichage précis des erreurs.
|
||||
- L'ajout d'une langue de contenu initialise les données de la langue.
|
||||
- Format d'image avif si supporté par la version installée de php;.
|
||||
- Format d'image avif si supporté par la version installée de php.
|
||||
- Remplacement du service ScreenShot API par un sélecteur manuel ; affiche les paramètres d'images recommandées et ceux de l'image sélectionnée.
|
||||
# Corrections
|
||||
- Correction de bugs mineurs dans la sauvegarde et la suppression des modules installés.
|
||||
- Problèmes de mise à jour depuis les versions 11.
|
||||
|
@ -824,11 +824,33 @@ class layout extends common
|
||||
*/
|
||||
public function showMetaImage()
|
||||
{
|
||||
$items = '<meta property="og:image" content="' . helper::baseUrl(false) . self::FILE_DIR . 'source/screenshot.jpg" />';
|
||||
$items .= '<meta property="og:image:type" content="image/jpeg" />';
|
||||
$items .= '<meta property="og:image:width" content="1200" />';
|
||||
$items .= '<meta property="og:image:height" content="627" />';
|
||||
echo $items;
|
||||
$imagePath = self::FILE_DIR . 'source/' . $this->getData(['config', 'seo', 'openGraphImage']);
|
||||
if (
|
||||
$this->getData(['config', 'seo', 'openGraphImage'])
|
||||
&& file_exists($imagePath)
|
||||
) {
|
||||
$typeMime = exif_imagetype($imagePath);
|
||||
switch ($typeMime) {
|
||||
case IMAGETYPE_JPEG:
|
||||
$typeMime = 'image/jpeg';
|
||||
break;
|
||||
case IMAGETYPE_PNG:
|
||||
$typeMime = 'image/png';
|
||||
break;
|
||||
default:
|
||||
// Type incorrect
|
||||
return;
|
||||
}
|
||||
$imageSize = getimagesize($imagePath);
|
||||
$wide = $imageSize[0];
|
||||
$height = $imageSize[1];
|
||||
//Sortie
|
||||
$items = '<meta property="og:image" content="' . helper::baseUrl(false) . self::FILE_DIR . 'source/' . $this->getData(['config', 'seo', 'openGraphImage']) . '" />';
|
||||
$items .= '<meta property="og:image:type" content="' . $typeMime . '" />';
|
||||
$items .= '<meta property="og:image:width" content="' . $wide . '" />';
|
||||
$items .= '<meta property="og:image:height" content="' . $height . '" />';
|
||||
echo $items;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1061,6 +1061,9 @@ if ($this->getData(['core', 'dataVersion']) < 13000) {
|
||||
}
|
||||
$_SESSION['ZWII_CONTENT'] = $currentlanguage;
|
||||
|
||||
// Supprime la clé OpenOgraph
|
||||
$this->deleteData(['config', 'seo', 'keyApi']);
|
||||
|
||||
// Mise à jour
|
||||
$this->setData(['core', 'dataVersion', 13000]);
|
||||
}
|
@ -204,6 +204,8 @@ class config extends common
|
||||
public static $onlineVersion = '';
|
||||
public static $updateButtonText = 'Réinstaller';
|
||||
|
||||
public static $imageOpenGraph = [];
|
||||
|
||||
/**
|
||||
* Génére les fichiers pour les crawlers
|
||||
* Sitemap compressé et non compressé
|
||||
@ -299,8 +301,6 @@ class config extends common
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Traitement des données reçues valides.
|
||||
if (!empty($token) && $data !== false) {
|
||||
$data = json_decode($data, true);
|
||||
@ -365,12 +365,7 @@ class config extends common
|
||||
'state' => false
|
||||
]);
|
||||
}
|
||||
// Lire le contenu de l'archive dans le tableau files
|
||||
/*
|
||||
for ($i = 0; $i < $zip->numFiles; $i++) {
|
||||
$stat = $zip->statIndex($i);
|
||||
$files[] = (basename($stat['name']));
|
||||
}*/
|
||||
|
||||
// Extraction de l'archive dans un dossier temporaire
|
||||
$tmpDir = uniqid(8);
|
||||
$success = $zip->extractTo(self::TEMP_DIR . $tmpDir);
|
||||
@ -488,7 +483,7 @@ class config extends common
|
||||
],
|
||||
'seo' => [
|
||||
'robots' => $this->getInput('seoRobots', helper::FILTER_BOOLEAN),
|
||||
'keyApi' => $this->getInput('seoKeyApi', helper::FILTER_STRING_SHORT),
|
||||
'openGraphImage' => $this->getInput('seoOpenGraphImage', helper::FILTER_STRING_SHORT),
|
||||
],
|
||||
'connect' => [
|
||||
'attempt' => $this->getInput('connectAttempt', helper::FILTER_INT),
|
||||
@ -598,6 +593,47 @@ class config extends common
|
||||
self::$updateDelay[$key] = $key === 86400 ? $value . ' ' . helper::translate('jour') : $value . ' ' . helper::translate('jours');
|
||||
}
|
||||
|
||||
// Paramètres de l'image OpenGraph
|
||||
$imagePath = self::FILE_DIR . 'source/' . $this->getData(['config', 'seo', 'openGraphImage']);
|
||||
|
||||
// Par défaut
|
||||
self::$imageOpenGraph['type'] = '';
|
||||
self::$imageOpenGraph['size'] = '';
|
||||
self::$imageOpenGraph['wide'] = '';
|
||||
self::$imageOpenGraph['height'] = '';
|
||||
self::$imageOpenGraph['ratio'] = 0;
|
||||
if (
|
||||
$this->getData(['config', 'seo', 'openGraphImage'])
|
||||
&& file_exists($imagePath)
|
||||
) {
|
||||
// Infos sur l'image Open Graph
|
||||
$typeMime = exif_imagetype($imagePath);
|
||||
switch ($typeMime) {
|
||||
case IMAGETYPE_JPEG:
|
||||
$typeMime = 'jpeg';
|
||||
break;
|
||||
case IMAGETYPE_PNG:
|
||||
$typeMime = 'png';
|
||||
break;
|
||||
}
|
||||
self::$imageOpenGraph['type'] = $typeMime;
|
||||
$imageSize = getimagesize($imagePath);
|
||||
self::$imageOpenGraph['wide'] = $imageSize[0];
|
||||
self::$imageOpenGraph['height'] = $imageSize[1];
|
||||
self::$imageOpenGraph['ratio'] = self::$imageOpenGraph['wide'] / self::$imageOpenGraph['height'];
|
||||
|
||||
self::$imageOpenGraph['size'] = filesize($imagePath);
|
||||
$tailleEnOctets = filesize($imagePath);
|
||||
|
||||
if ($tailleEnOctets >= 1024 * 1024) {
|
||||
// Si la taille est supérieure ou égale à 1 Mo, afficher en mégaoctets
|
||||
self::$imageOpenGraph['size'] = round($tailleEnOctets / (1024 * 1024), 2) . ' Mo';
|
||||
} else {
|
||||
// Sinon, afficher en kilooctets
|
||||
self::$imageOpenGraph['size'] = round($tailleEnOctets / 1024, 2) . ' Ko';
|
||||
}
|
||||
}
|
||||
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
'title' => helper::translate('Configuration'),
|
||||
|
@ -11,33 +11,47 @@
|
||||
</span>-->
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="col7">
|
||||
<div class="col6">
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<?php echo template::text('seoKeyApi', [
|
||||
'label' => 'Clé de l\'API <a href="https://app.screenshotapi.net/" target="_blank">ScreenShotApi</a>',
|
||||
'value' => $this->getData(['config', 'seo', 'keyApi']),
|
||||
'help' => 'Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération'
|
||||
<?php echo template::file('seoOpenGraphImage', [
|
||||
'language' => $this->getData(['user', $this->getUser('id'), 'language']),
|
||||
'label' => 'Image Open Graph',
|
||||
'value' => $this->getData(['config', 'seo', 'openGraphImage']),
|
||||
'type' => 1,
|
||||
'help' => sprintf('%s : JPG - PNG<br />', helper::translate('Format')) .
|
||||
sprintf('%s : 1200 x 630 pixels<br />', helper::translate('Dimensions minimales')) .
|
||||
sprintf('%s : 1.91:1<br />', helper::translate('Ratio')) .
|
||||
sprintf('%s : %s, %s<br />', helper::translate('Taille maximale du fichier'), helper::translate('5 Mo pour les images JPEG'), helper::translate('1 Mo pour les images PNG'))
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col6 offset3">
|
||||
<?php echo template::button('socialMetaImage', [
|
||||
'href' => helper::baseUrl() . 'config/configMetaImage',
|
||||
'value' => 'Générer une capture Open Graph'
|
||||
]); ?>
|
||||
<div class="col10 textAlignCenter">
|
||||
<?php if( $module::$imageOpenGraph['type']): ?>
|
||||
<p>
|
||||
<?php echo sprintf('%s : %s ', helper::translate('Format'), $module::$imageOpenGraph['type']); ?>
|
||||
</p>
|
||||
<p>
|
||||
<?php echo sprintf('%s : %s x %s pixels', helper::translate('Dimensions minimales'), $module::$imageOpenGraph['wide'], $module::$imageOpenGraph['height'] ); ?>
|
||||
</p>
|
||||
<p>
|
||||
<?php echo sprintf('%s : %s' , helper::translate('Ratio'), round($module::$imageOpenGraph['ratio'], 2)); ?>
|
||||
</p>
|
||||
<p>
|
||||
<?php echo sprintf('%s : %s', helper::translate('Taille'), $module::$imageOpenGraph['size']); ?>
|
||||
</p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col5">
|
||||
<?php if (file_exists(self::FILE_DIR . 'source/screenshot.jpg')): ?>
|
||||
<div class="row">
|
||||
<div class="col8 offset2 textAlignCenter">
|
||||
<img src="<?php echo helper::baseUrl(false) . self::FILE_DIR . 'source/screenshot.jpg'; ?>"
|
||||
data-tippy-content="Cette capture d'écran est nécessaire aux partages sur les réseaux sociaux. Elle est régénérée lorsque le fichier 'screenshot.jpg' est effacé du gestionnaire de fichiers." />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col6">
|
||||
<?php if (
|
||||
$this->getData(['config', 'seo', 'openGraphImage']) &&
|
||||
file_exists(self::FILE_DIR . 'source/' . $this->getData(['config', 'seo', 'openGraphImage']))
|
||||
): ?>
|
||||
<img
|
||||
src="<?php echo self::FILE_DIR . 'source/' . $this->getData(['config', 'seo', 'openGraphImage']); ?>" />
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -29,7 +29,7 @@ class init extends common
|
||||
],
|
||||
'seo' => [
|
||||
'robots' => true,
|
||||
'keyApi' => 'XXXXXXX-XXXXXXX-XXXXXXX-XXXXXXX'
|
||||
'openGraphImage' => 'screenshot.jpg'
|
||||
],
|
||||
'connect' => [
|
||||
'timeout' => 600,
|
||||
@ -286,15 +286,15 @@ class init extends common
|
||||
'language' => [
|
||||
"fr_FR" => [
|
||||
"version" => 13000,
|
||||
"date" => 1691352286
|
||||
"date" => 1691858227
|
||||
],
|
||||
"es" => [
|
||||
"version" => 13000,
|
||||
"date" => 1691352286
|
||||
"date" => 1691858227
|
||||
],
|
||||
"en_EN" => [
|
||||
"version" => 13000,
|
||||
"date" => 1691352286
|
||||
"date" => 1691858227
|
||||
]
|
||||
],
|
||||
'profil' => [
|
||||
|
@ -136,8 +136,6 @@
|
||||
"Chiffres": "Numbers",
|
||||
"Cible": "Target",
|
||||
"Cliquez sur une zone afin d'accéder à ses options de personnalisation.": "Click on an area to access its customization options.",
|
||||
"Clé de l'API <a href=\"https://app.screenshotapi.net/\" target=\"_blank\">ScreenShotApi</a>": "API key <a href=\"https://app.screenshotapi.net/\" target=\"_blank\">ScreenShotApi</a>",
|
||||
"Clé de l'API <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>": "API key <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>",
|
||||
"Commentaire": "Comment",
|
||||
"Complète": "Complete",
|
||||
"Compte administrateur": "Administrator account",
|
||||
@ -180,7 +178,6 @@
|
||||
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence.": "Visible color in the absence of an image. <br /> The horizontal cursor regulates the level of transparency.",
|
||||
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "Visible color in the absence of an image. <br /> The horizontal cursor regulates the level of transparency. The color of the text is automatic.",
|
||||
"Couleurs": "Colors",
|
||||
"Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération": "Create a free account, copy the key, then validate the form before clicking the generation button",
|
||||
"Dans le site": "Into the site",
|
||||
"Dans quelle langue utiliserez-vous Zwii ?": "In which language will you use Zwii?",
|
||||
"Date": "Date",
|
||||
@ -322,7 +319,6 @@
|
||||
"L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "The archive was deposited in the file manager. Archives below version 9 are not accepted.",
|
||||
"L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "The identifier is defined when creating the account, it cannot be changed.",
|
||||
"La carte du site a été mise à jour": "The site card has been updated",
|
||||
"La clé de l'API ne peut pas être vide": "The key to the API cannot be empty",
|
||||
"La copie de sauvegarde du fichier htaccess n'a pas été restaurée !": "Backup copy of htaccess file has not been restored!",
|
||||
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "The description of a page participates in its referencing, each page must have a different description.",
|
||||
"La page %s est ouverte par l'utilisateur %s": "Page %s opened by user %s",
|
||||
@ -675,5 +671,9 @@
|
||||
"Édition du profil %s": "Edit Profile %s",
|
||||
"Éléments": "Items",
|
||||
"Étendu sur la page": "Spread across the page",
|
||||
"Étiquettes des pages spéciales": "Special pages labels"
|
||||
"Étiquettes des pages spéciales": "Special pages labels",
|
||||
"Dimensions minimales": "Minimum dimensions",
|
||||
"Taille maximale du fichier": "Maximum file size",
|
||||
"5 Mo pour les images JPEG": "5 MB for JPEG images",
|
||||
"1 Mo pour les images PNG": "1 MB for PNG images"
|
||||
}
|
@ -136,8 +136,6 @@
|
||||
"Chiffres": "Cifras",
|
||||
"Cible": "Objetivo",
|
||||
"Cliquez sur une zone afin d'accéder à ses options de personnalisation.": "Haga clic en un área para acceder a sus opciones de personalización.",
|
||||
"Clé de l'API <a href=\"https://app.screenshotapi.net/\" target=\"_blank\">ScreenShotApi</a>": "Clave API <a href=",
|
||||
"Clé de l'API <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>": "Clave API <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>",
|
||||
"Commentaire": "Comentario",
|
||||
"Complète": "sin truncar",
|
||||
"Compte administrateur": "Cuenta de administrador",
|
||||
@ -180,7 +178,6 @@
|
||||
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence.": "Color visible en ausencia de una imagen.<br />El control deslizante horizontal ajusta el nivel de transparencia.",
|
||||
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "Color visible en ausencia de una imagen.<br />El control deslizante horizontal ajusta el nivel de transparencia. El color del texto es automático.",
|
||||
"Couleurs": "Colores",
|
||||
"Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération": "Cree una cuenta gratuita, copie la clave, luego valide el formulario antes de hacer clic en el botón generar",
|
||||
"Dans le site": "En el sitio",
|
||||
"Dans quelle langue utiliserez-vous Zwii ?": "¿En qué idioma usará Zwii?",
|
||||
"Date": "fecha",
|
||||
@ -322,7 +319,6 @@
|
||||
"L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "El archivo ha sido depositado en el administrador de archivos. No se aceptan archivos inferiores a la versión 9.",
|
||||
"L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "El identificador se define al crear la cuenta, no se puede modificar.",
|
||||
"La carte du site a été mise à jour": "El mapa del sitio ha sido actualizado.",
|
||||
"La clé de l'API ne peut pas être vide": "La clave API no puede estar vacía",
|
||||
"La copie de sauvegarde du fichier htaccess n'a pas été restaurée !": "¡La copia de seguridad del archivo htaccess no ha sido restaurada!",
|
||||
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "La descripción de una página participa en su referenciación, cada página debe tener una descripción diferente.",
|
||||
"La page %s est ouverte par l'utilisateur %s": "La página %s ha sido abierta por el usuario %s",
|
||||
@ -675,5 +671,9 @@
|
||||
"Édition du profil %s": "Edición del perfil %s",
|
||||
"Éléments": "Elementos",
|
||||
"Étendu sur la page": "Extendido en la página",
|
||||
"Étiquettes des pages spéciales": "Etiquetas de páginas especiales"
|
||||
"Étiquettes des pages spéciales": "Etiquetas de páginas especiales",
|
||||
"Dimensions minimales": "Dimensiones mínimas",
|
||||
"Taille maximale du fichier": "Tamaño máximo de archivo",
|
||||
"5 Mo pour les images JPEG": "5 MB para imágenes JPEG",
|
||||
"1 Mo pour les images PNG": "1 MB para imágenes PNG"
|
||||
}
|
@ -136,8 +136,6 @@
|
||||
"Chiffres": "",
|
||||
"Cible": "",
|
||||
"Cliquez sur une zone afin d'accéder à ses options de personnalisation.": "",
|
||||
"Clé de l'API <a href=\"https://app.screenshotapi.net/\" target=\"_blank\">ScreenShotApi</a>": "",
|
||||
"Clé de l'API <a href='https://app.screenshotapi.net/' target='_blank'>ScreenShotApi</a>": "",
|
||||
"Commentaire": "",
|
||||
"Complète": "",
|
||||
"Compte administrateur": "",
|
||||
@ -180,7 +178,6 @@
|
||||
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence.": "",
|
||||
"Couleur visible en l'absence d'une image.<br />Le curseur horizontal règle le niveau de transparence. La couleur du texte est automatique.": "",
|
||||
"Couleurs": "",
|
||||
"Créez un compte gratuit, recopier la clé , puis valider le formulaire avant de cliquer sur le bouton de génération": "",
|
||||
"Dans le site": "",
|
||||
"Dans quelle langue utiliserez-vous Zwii ?": "",
|
||||
"Date": "",
|
||||
@ -322,7 +319,6 @@
|
||||
"L'archive a été déposée dans le gestionnaire de fichiers. Les archives inférieures à la version 9 ne sont pas acceptées.": "",
|
||||
"L'identifiant est défini lors de la création du compte, il ne peut pas être modifié.": "",
|
||||
"La carte du site a été mise à jour": "",
|
||||
"La clé de l'API ne peut pas être vide": "",
|
||||
"La copie de sauvegarde du fichier htaccess n'a pas été restaurée !": "",
|
||||
"La description d'une page participe à son référencement, chaque page doit disposer d'une description différente.": "",
|
||||
"La page %s est ouverte par l'utilisateur %s": "",
|
||||
@ -675,5 +671,9 @@
|
||||
"Édition du profil %s": "",
|
||||
"Éléments": "",
|
||||
"Étendu sur la page": "",
|
||||
"Étiquettes des pages spéciales": ""
|
||||
"Étiquettes des pages spéciales": "",
|
||||
"Dimensions minimales": "",
|
||||
"Taille maximale du fichier": "",
|
||||
"5 Mo pour les images JPEG": "",
|
||||
"1 Mo pour les images PNG": ""
|
||||
}
|
Loading…
Reference in New Issue
Block a user