Merge branch 'export'
This commit is contained in:
commit
8e66337cd8
10
CHANGES.md
10
CHANGES.md
@ -6,6 +6,13 @@
|
|||||||
- Réorganisation massive des modules afin d'éviter de faire cohabiter des formulaires avec des champs d'information.
|
- Réorganisation massive des modules afin d'éviter de faire cohabiter des formulaires avec des champs d'information.
|
||||||
- Désormais, les URL internes seront relatives, cela signifie qu'elles ne contiendront plus le domaine et le chemin d'accès au site. Cela permettra le déplacement d'un site d'un hébergement à un autre, d'un dossier d'hébergement à un autre, sans avoir à convertir les adresses internes. Les données d'un site mis à jour et importées d'une version antérieures sont automatiquement converties. En conséquence, le bloc de conversion de la fenêtre d'import est supprimé.
|
- Désormais, les URL internes seront relatives, cela signifie qu'elles ne contiendront plus le domaine et le chemin d'accès au site. Cela permettra le déplacement d'un site d'un hébergement à un autre, d'un dossier d'hébergement à un autre, sans avoir à convertir les adresses internes. Les données d'un site mis à jour et importées d'une version antérieures sont automatiquement converties. En conséquence, le bloc de conversion de la fenêtre d'import est supprimé.
|
||||||
|
|
||||||
|
## Version 11.3.02
|
||||||
|
### Corrections :
|
||||||
|
- Importation d'une police sur cdnFonts impossible, nom de fonction incorrect.
|
||||||
|
- Thème moderne, url de l'image corrigé
|
||||||
|
- Thème, import d'un thème sauvegardé, conversion des fontes Google.
|
||||||
|
|
||||||
|
|
||||||
## Version 11.3.01
|
## Version 11.3.01
|
||||||
### Corrections :
|
### Corrections :
|
||||||
- Gestionnaire de fichier, chevauchement d'icônes en multi sélection et aides non traduites.
|
- Gestionnaire de fichier, chevauchement d'icônes en multi sélection et aides non traduites.
|
||||||
@ -13,18 +20,15 @@
|
|||||||
|
|
||||||
|
|
||||||
## Version 11.3.00
|
## Version 11.3.00
|
||||||
|
|
||||||
### Nouveautés :
|
### Nouveautés :
|
||||||
- Police de caractères :
|
- Police de caractères :
|
||||||
- Changement de fournisseur, CdnFonts remplace Google Font.
|
- Changement de fournisseur, CdnFonts remplace Google Font.
|
||||||
- Les polices pourront désormais être téléchargées à partir du site et non du CD grâce à une nouvelle fonctionnalité du thème permet de gérer l'installation des fontes, soit à partir du CDN, soit à partir d'un fichier téléchargé.
|
- Les polices pourront désormais être téléchargées à partir du site et non du CD grâce à une nouvelle fonctionnalité du thème permet de gérer l'installation des fontes, soit à partir du CDN, soit à partir d'un fichier téléchargé.
|
||||||
- Pages dans le menu accessoire. Ce menu à affiché à droite de la barre de menu, il est traditionnellement utilisé pour y placer les drapeaux de traduction, le bouton de connexion et de gestion du compte des membres. Il sera désormais possible d'y placer des pages sous la forme d'icônes de préférence.
|
- Pages dans le menu accessoire. Ce menu à affiché à droite de la barre de menu, il est traditionnellement utilisé pour y placer les drapeaux de traduction, le bouton de connexion et de gestion du compte des membres. Il sera désormais possible d'y placer des pages sous la forme d'icônes de préférence.
|
||||||
- Prise en charge du format webp pour les modules nécessitant des miniatures.
|
- Prise en charge du format webp pour les modules nécessitant des miniatures.
|
||||||
|
|
||||||
### Améliorations :
|
### Améliorations :
|
||||||
- Thème / Bannière : ergonomie de l'information sur l'image sélectionnée.
|
- Thème / Bannière : ergonomie de l'information sur l'image sélectionnée.
|
||||||
- Identifications des éléments du menu, les pages parents prennent comme id CSS leur id, les pages enfants également et pour classe Id de la page parente.
|
- Identifications des éléments du menu, les pages parents prennent comme id CSS leur id, les pages enfants également et pour classe Id de la page parente.
|
||||||
|
|
||||||
### Corrections :
|
### Corrections :
|
||||||
- Thème / site : problème d'aperçu du body ; police du thème admin non chargée.
|
- Thème / site : problème d'aperçu du body ; police du thème admin non chargée.
|
||||||
- Bugs avec les aperçus des sélecteurs de fontes.
|
- Bugs avec les aperçus des sélecteurs de fontes.
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
|
# ZwiiCMS 11.3.02
|
||||||
|
|
||||||
# ZwiiCMS 11.3.01
|
|
||||||
|
|
||||||
Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation.
|
Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation.
|
||||||
|
|
||||||
|
@ -170,17 +170,17 @@ class common {
|
|||||||
// Descripteur de données Entrées / Sorties
|
// Descripteur de données Entrées / Sorties
|
||||||
// Liste ici tous les fichiers de données
|
// Liste ici tous les fichiers de données
|
||||||
private $dataFiles = [
|
private $dataFiles = [
|
||||||
'config' => '',
|
|
||||||
'page' => '',
|
|
||||||
'module' => '',
|
|
||||||
'core' => '',
|
|
||||||
'page' => '',
|
|
||||||
'user' => '',
|
|
||||||
'theme' => '',
|
|
||||||
'admin' => '',
|
'admin' => '',
|
||||||
'blacklist' => '',
|
'blacklist' => '',
|
||||||
|
'config' => '',
|
||||||
|
'core' => '',
|
||||||
|
'fonts' => '',
|
||||||
|
'module' => '',
|
||||||
'locale' => '',
|
'locale' => '',
|
||||||
'fonts' => ''
|
'page' => '',
|
||||||
|
'theme' => '',
|
||||||
|
'user' => ''
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
// Fontes
|
// Fontes
|
||||||
@ -1170,10 +1170,10 @@ class common {
|
|||||||
if (( $file != '.' ) && ( $file != '..' )) {
|
if (( $file != '.' ) && ( $file != '..' )) {
|
||||||
if ( is_dir($src . '/' . $file) ){
|
if ( is_dir($src . '/' . $file) ){
|
||||||
// Appel récursif des sous-dossiers
|
// Appel récursif des sous-dossiers
|
||||||
$success = $this->copyDir($src . '/' . $file, $dst . '/' . $file);
|
$success = $success OR $this->copyDir($src . '/' . $file, $dst . '/' . $file);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$success = copy($src . '/' . $file, $dst . '/' . $file);
|
$success = $success OR copy($src . '/' . $file, $dst . '/' . $file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
@ -227,6 +227,7 @@ class theme extends common {
|
|||||||
'logo' => 'Logo du site'
|
'logo' => 'Logo du site'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
// Variable pour construire la liste des pages du site
|
// Variable pour construire la liste des pages du site
|
||||||
public static $pagesList = [];
|
public static $pagesList = [];
|
||||||
// Variable pour construire la liste des fontes installées
|
// Variable pour construire la liste des fontes installées
|
||||||
@ -609,7 +610,7 @@ class theme extends common {
|
|||||||
$file = $e[count($e) - 1 ];
|
$file = $e[count($e) - 1 ];
|
||||||
|
|
||||||
// Vérifier l'existence de fontId et validité de family namesi usage en ligne de cdnFonts
|
// Vérifier l'existence de fontId et validité de family namesi usage en ligne de cdnFonts
|
||||||
$data = helper::urlGetContents('https://www.cdnfonts.com/' . $fontId . '.font');
|
$data = helper::getUrlContents('https://www.cdnfonts.com/' . $fontId . '.font');
|
||||||
|
|
||||||
if ( $filePath === ''
|
if ( $filePath === ''
|
||||||
&& $fontName !== ''
|
&& $fontName !== ''
|
||||||
@ -849,18 +850,40 @@ class theme extends common {
|
|||||||
AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.json')
|
AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.json')
|
||||||
) {
|
) {
|
||||||
$modele = 'theme';
|
$modele = 'theme';
|
||||||
}
|
}
|
||||||
if(
|
if(
|
||||||
file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.json')
|
file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.json')
|
||||||
AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.css')
|
AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.css')
|
||||||
) {
|
) {
|
||||||
$modele = 'admin';
|
$modele = 'admin';
|
||||||
|
|
||||||
}
|
}
|
||||||
if (!empty($modele)
|
if (!empty($modele)
|
||||||
) {
|
) {
|
||||||
// traiter l'archive
|
// traiter l'archive
|
||||||
$success = $zip->extractTo('.');
|
$success = $zip->extractTo('.');
|
||||||
// traitement de l'erreur
|
|
||||||
|
// Substitution des fontes Google
|
||||||
|
if ($modele = 'theme') {
|
||||||
|
$c = $this->subFonts(self::DATA_DIR . 'theme.json');
|
||||||
|
// Un remplacement nécessite la régénération de la feuille de style
|
||||||
|
if ($c > 0
|
||||||
|
AND file_exists(self::DATA_DIR . 'theme.css')
|
||||||
|
) {
|
||||||
|
unlink(self::DATA_DIR . 'theme.css');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($modele = 'admin') {
|
||||||
|
$c = $this->subFonts(self::DATA_DIR . 'admin.json');
|
||||||
|
// Un remplacement nécessite la régénération de la feuille de style
|
||||||
|
if ($c > 0
|
||||||
|
AND file_exists(self::DATA_DIR . 'admin.css')
|
||||||
|
) {
|
||||||
|
unlink(self::DATA_DIR . 'admin.css');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// traitement d'erreur
|
||||||
$notification = $success ? 'Le thème a été importé' : 'Erreur lors de l\'extraction, vérifiez les permissions.';
|
$notification = $success ? 'Le thème a été importé' : 'Erreur lors de l\'extraction, vérifiez les permissions.';
|
||||||
|
|
||||||
|
|
||||||
@ -968,4 +991,57 @@ class theme extends common {
|
|||||||
return ($zipFilename);
|
return ($zipFilename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subsitution des fontes de Google Fonts vers CdnFont grâce à un tableau de conversion
|
||||||
|
* @param string $file, nom du fichier json à convertir
|
||||||
|
* @return int nombre de substitution effectuées
|
||||||
|
*/
|
||||||
|
private function subFonts($file) {
|
||||||
|
// Tableau de substitution des fontes
|
||||||
|
$fonts = [
|
||||||
|
'Abril+Fatface' => 'abril-fatface',
|
||||||
|
'Arimo' => 'arimo',
|
||||||
|
'Arvo' => 'arvo',
|
||||||
|
'Berkshire+Swash' => 'berkshire-swash',
|
||||||
|
'Cabin' => 'genera',
|
||||||
|
'Dancing+Script' => 'dancing-script',
|
||||||
|
'Droid+Sans' => 'droid-sans-2',
|
||||||
|
'Droid+Serif' => 'droid-serif-2',
|
||||||
|
'Fira+Sans' => 'fira-sans',
|
||||||
|
'Inconsolata' => 'inconsolata-2',
|
||||||
|
'Indie+Flower' =>'indie-flower',
|
||||||
|
'Josefin+Slab' => 'josefin-sans-std',
|
||||||
|
'Lobster' => 'lobster-2',
|
||||||
|
'Lora' => 'lora',
|
||||||
|
'Lato' =>'lato',
|
||||||
|
'Marvel' => 'montserrat-ace',
|
||||||
|
'Old+Standard+TT' => 'old-standard-tt-3',
|
||||||
|
'Open+Sans' =>'open-sans',
|
||||||
|
// Corriger l'erreur de nom de police installée par défaut, il manquait un O en majuscule
|
||||||
|
'open+Sans' =>'open-sans',
|
||||||
|
'Oswald' =>'oswald-4',
|
||||||
|
'PT+Mono' => 'pt-mono',
|
||||||
|
'PT+Serif' =>'pt-serif',
|
||||||
|
'Raleway' => 'raleway-5',
|
||||||
|
'Rancho' => 'rancho',
|
||||||
|
'Roboto' => 'Roboto',
|
||||||
|
'Signika' => 'signika',
|
||||||
|
'Ubuntu' => 'ubuntu',
|
||||||
|
'Vollkorn' => 'vollkorn'
|
||||||
|
];
|
||||||
|
|
||||||
|
$data = file_get_contents($file);
|
||||||
|
$count = 0;
|
||||||
|
foreach ($fonts as $oldId => $newId){
|
||||||
|
$data = str_replace($oldId, $newId, $data, $c);
|
||||||
|
$count = $count + (int) $c;
|
||||||
|
}
|
||||||
|
// Sauvegarder la chaîne modifiée
|
||||||
|
if ($count > 0) {
|
||||||
|
file_put_contents($file, $data);
|
||||||
|
}
|
||||||
|
// Retourner le nombre d'occurrences
|
||||||
|
return ($count);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user