forked from ZwiiCMS-Team/ZwiiCMS
nom addon -> plugin +export wip
This commit is contained in:
parent
9663e67bc3
commit
7e2df69c95
@ -1,30 +0,0 @@
|
|||||||
<?php echo template::formOpen('addonImportForm'); ?>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col1">
|
|
||||||
<?php echo template::button('addonImportBack', [
|
|
||||||
'class' => 'buttonGrey',
|
|
||||||
'href' => helper::baseUrl() . 'addon',
|
|
||||||
'value' => template::ico('left')
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
<div class="col2 offset9">
|
|
||||||
<?php echo template::submit('addonImportSubmit', [
|
|
||||||
'value' => 'Appliquer'
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col12">
|
|
||||||
<div class="block">
|
|
||||||
<h4>Installer des données de module</h4>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col6 offset3">
|
|
||||||
<?php echo template::file('addonImportFile', [
|
|
||||||
'label' => 'Archive ZIP :',
|
|
||||||
'type' => 2
|
|
||||||
]); ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -16,21 +16,21 @@
|
|||||||
* @link http://zwiicms.fr/
|
* @link http://zwiicms.fr/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class addon extends common {
|
class plugin extends common {
|
||||||
|
|
||||||
public static $actions = [
|
public static $actions = [
|
||||||
'index' => self::GROUP_ADMIN,
|
'index' => self::GROUP_ADMIN,
|
||||||
'delete' => self::GROUP_ADMIN,
|
'delete' => self::GROUP_ADMIN,
|
||||||
'export' => self::GROUP_ADMIN,
|
'dataExport' => self::GROUP_ADMIN,
|
||||||
'import' => self::GROUP_ADMIN,
|
'dataImport' => self::GROUP_ADMIN, // les données d'un module
|
||||||
'store' => self::GROUP_ADMIN,
|
'store' => self::GROUP_ADMIN,
|
||||||
'item' => self::GROUP_ADMIN,
|
'item' => self::GROUP_ADMIN, // détail d'un objet
|
||||||
'upload' => self::GROUP_ADMIN,
|
'upload' => self::GROUP_ADMIN, // Téléverser catalogue
|
||||||
'uploadItem'=> self::GROUP_ADMIN
|
'uploadItem'=> self::GROUP_ADMIN // Téléverser par archive
|
||||||
];
|
];
|
||||||
|
|
||||||
// URL des modules
|
// URL des modules
|
||||||
const BASEURL_STORE = 'https://www.zwiicms.fr/';
|
const BASEURL_STORE = 'https://store.zwiicms.fr/';
|
||||||
const MODULE_STORE = '?modules/';
|
const MODULE_STORE = '?modules/';
|
||||||
|
|
||||||
// Gestion des modules
|
// Gestion des modules
|
||||||
@ -43,6 +43,9 @@ class addon extends common {
|
|||||||
public static $storeList = [];
|
public static $storeList = [];
|
||||||
public static $storeItem = [];
|
public static $storeItem = [];
|
||||||
|
|
||||||
|
// Liste de pages
|
||||||
|
public static $pagesList = [];
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Effacement d'un module installé et non utilisé
|
* Effacement d'un module installé et non utilisé
|
||||||
@ -53,7 +56,7 @@ class addon extends common {
|
|||||||
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'addon',
|
'redirect' => helper::baseUrl() . 'plugin',
|
||||||
'state' => false,
|
'state' => false,
|
||||||
'notification' => 'Action non autorisée'
|
'notification' => 'Action non autorisée'
|
||||||
]);
|
]);
|
||||||
@ -81,7 +84,7 @@ class addon extends common {
|
|||||||
}
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'addon',
|
'redirect' => helper::baseUrl() . 'plugin',
|
||||||
'notification' => $notification,
|
'notification' => $notification,
|
||||||
'state' => $success
|
'state' => $success
|
||||||
]);
|
]);
|
||||||
@ -271,7 +274,7 @@ class addon extends common {
|
|||||||
*}
|
*}
|
||||||
*/
|
*/
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'addon/store',
|
'redirect' => helper::baseUrl() . 'plugin/store',
|
||||||
'notification' => $moduleFile . ' téléchargé dans le dossier modules du gestionnaire de fichiers',
|
'notification' => $moduleFile . ' téléchargé dans le dossier modules du gestionnaire de fichiers',
|
||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
@ -390,16 +393,16 @@ class addon extends common {
|
|||||||
: '',
|
: '',
|
||||||
implode(', ',array_keys($inPages,$key)) !== ''
|
implode(', ',array_keys($inPages,$key)) !== ''
|
||||||
? template::button('moduleExport' . $key, [
|
? template::button('moduleExport' . $key, [
|
||||||
'href' => helper::baseUrl(). $this->getUrl(0) . '/export/' . $key . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
|
'href' => helper::baseUrl(). $this->getUrl(0) . '/dataExport/' . $key . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
|
||||||
'value' => template::ico('download'),
|
'value' => template::ico('download'),
|
||||||
'help' => 'Exporter les données du module avec sa page'
|
'help' => 'Exporter les données du module'
|
||||||
])
|
])
|
||||||
: '',
|
: '',
|
||||||
implode(', ',array_keys($inPages,$key)) === ''
|
implode(', ',array_keys($inPages,$key)) === ''
|
||||||
? template::button('moduleExport' . $key, [
|
? template::button('moduleExport' . $key, [
|
||||||
'href' => helper::baseUrl(). $this->getUrl(0) . '/import/' . $key . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
|
'href' => helper::baseUrl(). $this->getUrl(0) . '/import/' . $key . '/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
|
||||||
'value' => template::ico('upload'),
|
'value' => template::ico('upload'),
|
||||||
'help' => 'Importer les données du module avec sa page'
|
'help' => 'Importer les données du module'
|
||||||
])
|
])
|
||||||
: ''
|
: ''
|
||||||
];
|
];
|
||||||
@ -415,95 +418,114 @@ class addon extends common {
|
|||||||
/*
|
/*
|
||||||
* Export des données d'un module externes ou interne à module.json
|
* Export des données d'un module externes ou interne à module.json
|
||||||
*/
|
*/
|
||||||
public function export(){
|
public function dataExport(){
|
||||||
// Jeton incorrect
|
// Jeton incorrect
|
||||||
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'addon',
|
'redirect' => helper::baseUrl() . 'plugin',
|
||||||
'state' => false,
|
'state' => false,
|
||||||
'notification' => 'Action non autorisée'
|
'notification' => 'Action non autorisée'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Lire les données du module
|
// Soumission du formulaire
|
||||||
$infoModules = helper::getModules();
|
if($this->isPost()) {
|
||||||
// Créer un dossier par défaut
|
// Lire les données du module
|
||||||
$tmpFolder = self::TEMP_DIR . uniqid();
|
$infoModules = helper::getModules();
|
||||||
//$tmpFolder = self::TEMP_DIR . 'test';
|
// Créer un dossier par défaut
|
||||||
if (!is_dir($tmpFolder)) {
|
$tmpFolder = self::TEMP_DIR . uniqid();
|
||||||
mkdir($tmpFolder, 0755);
|
//$tmpFolder = self::TEMP_DIR . 'test';
|
||||||
}
|
if (!is_dir($tmpFolder)) {
|
||||||
// Clés moduleIds dans les pages
|
mkdir($tmpFolder, 0755);
|
||||||
$inPages = helper::arrayCollumn($this->getData(['page']),'moduleId', 'SORT_DESC');
|
|
||||||
// Parcourir les pages utilisant le module
|
|
||||||
foreach (array_keys($inPages,$this->getUrl(2)) as $pageId) {
|
|
||||||
// Export des pages hébergeant le module
|
|
||||||
$pageParam[$pageId] = $this->getData(['page',$pageId]);
|
|
||||||
// Export du contenu de la page
|
|
||||||
//$pageContent[$pageId] = file_get_contents(self::DATA_DIR . self::$i18n . '/content/' . $this->getData(['page', $pageId, 'content']));
|
|
||||||
$pageContent[$pageId] = $this->getPage($pageId, self::$i18n);
|
|
||||||
// Export de fr/module.json
|
|
||||||
$moduleId = 'fr/module.json';
|
|
||||||
$moduleDir = str_replace('site/data/','',$infoModules[$this->getUrl(2)]['dataDirectory']);
|
|
||||||
// Création de l'arborescence des langues
|
|
||||||
// Pas de nom dossier de langue - dossier par défaut
|
|
||||||
$t = explode ('/',$moduleId);
|
|
||||||
if ( is_array($t)) {
|
|
||||||
$lang = 'fr';
|
|
||||||
} else {
|
|
||||||
$lang = $t[0];
|
|
||||||
}
|
}
|
||||||
// Créer le dossier temporaire si inexistant sinon le nettoie et le créer
|
$page = $this->getInput('pluginExportSelectPage');
|
||||||
if (!is_dir($tmpFolder . '/' . $lang)) {
|
|
||||||
mkdir ($tmpFolder . '/' . $lang, 0755, true);
|
// Clés moduleIds dans les pages
|
||||||
} else {
|
$inPages = helper::arrayCollumn($this->getData(['page']),'moduleId', 'SORT_DESC');
|
||||||
$this->removeDir($tmpFolder . '/' . $lang);
|
// Parcourir les pages utilisant le module
|
||||||
mkdir ($tmpFolder . '/' . $lang, 0755, true);
|
foreach (array_keys($inPages,$this->getUrl(2)) as $pageId) {
|
||||||
}
|
// Export des pages hébergeant le module
|
||||||
// Créer le dossier temporaire des données du module
|
$pageParam[$pageId] = $this->getData(['page',$pageId]);
|
||||||
if ($infoModules[$this->getUrl(2)]['dataDirectory']) {
|
// Export du contenu de la page
|
||||||
if (!is_dir($tmpFolder . '/' . $moduleDir)) {
|
//$pageContent[$pageId] = file_get_contents(self::DATA_DIR . self::$i18n . '/content/' . $this->getData(['page', $pageId, 'content']));
|
||||||
mkdir ($tmpFolder . '/' . $moduleDir, 0755, true) ;
|
$pageContent[$pageId] = $this->getPage($pageId, self::$i18n);
|
||||||
|
// Export de fr/module.json
|
||||||
|
$moduleId = 'fr/module.json';
|
||||||
|
$moduleDir = str_replace('site/data/','',$infoModules[$this->getUrl(2)]['dataDirectory']);
|
||||||
|
// Création de l'arborescence des langues
|
||||||
|
// Pas de nom dossier de langue - dossier par défaut
|
||||||
|
$t = explode ('/',$moduleId);
|
||||||
|
if ( is_array($t)) {
|
||||||
|
$lang = 'fr';
|
||||||
|
} else {
|
||||||
|
$lang = $t[0];
|
||||||
|
}
|
||||||
|
// Créer le dossier temporaire si inexistant sinon le nettoie et le créer
|
||||||
|
if (!is_dir($tmpFolder . '/' . $lang)) {
|
||||||
|
mkdir ($tmpFolder . '/' . $lang, 0755, true);
|
||||||
|
} else {
|
||||||
|
$this->removeDir($tmpFolder . '/' . $lang);
|
||||||
|
mkdir ($tmpFolder . '/' . $lang, 0755, true);
|
||||||
|
}
|
||||||
|
// Créer le dossier temporaire des données du module
|
||||||
|
if ($infoModules[$this->getUrl(2)]['dataDirectory']) {
|
||||||
|
if (!is_dir($tmpFolder . '/' . $moduleDir)) {
|
||||||
|
mkdir ($tmpFolder . '/' . $moduleDir, 0755, true) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Sauvegarde si données non vides
|
||||||
|
$tmpData [$pageId] = $this->getData(['module',$pageId ]);
|
||||||
|
if ($tmpData [$pageId] !== null) {
|
||||||
|
file_put_contents($tmpFolder . '/' . $moduleId, json_encode($tmpData));
|
||||||
|
}
|
||||||
|
// Export des données localisées dans le dossier de données du module
|
||||||
|
if ($infoModules[$this->getUrl(2)]['dataDirectory'] &&
|
||||||
|
is_dir($infoModules[$this->getUrl(2)]['dataDirectory'])) {
|
||||||
|
$this->copyDir ($infoModules[$this->getUrl(2)]['dataDirectory'], $tmpFolder . '/' . $moduleDir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Sauvegarde si données non vides
|
// Enregistrement des pages dans le dossier de langue identique à module
|
||||||
$tmpData [$pageId] = $this->getData(['module',$pageId ]);
|
if (!file_exists($tmpFolder . '/' . $lang . '/page.json')) {
|
||||||
if ($tmpData [$pageId] !== null) {
|
file_put_contents($tmpFolder . '/' . $lang . '/page.json', json_encode($pageParam));
|
||||||
file_put_contents($tmpFolder . '/' . $moduleId, json_encode($tmpData));
|
mkdir ($tmpFolder . '/' . $lang . '/content', 0755);
|
||||||
|
file_put_contents($tmpFolder . '/' . $lang . '/content/' . $this->getData(['page', $pageId, 'content']), $pageContent);
|
||||||
}
|
}
|
||||||
// Export des données localisées dans le dossier de données du module
|
// création du zip
|
||||||
if ($infoModules[$this->getUrl(2)]['dataDirectory'] &&
|
$fileName = $this->getUrl(2) . '.zip';
|
||||||
is_dir($infoModules[$this->getUrl(2)]['dataDirectory'])) {
|
$this->makeZip ($fileName, $tmpFolder, []);
|
||||||
$this->copyDir ($infoModules[$this->getUrl(2)]['dataDirectory'], $tmpFolder . '/' . $moduleDir);
|
if (file_exists($fileName)) {
|
||||||
|
ob_start();
|
||||||
|
header('Content-Type: application/octet-stream');
|
||||||
|
header('Content-Disposition: attachment; filename="' . $fileName . '"');
|
||||||
|
header('Content-Length: ' . filesize($fileName));
|
||||||
|
ob_clean();
|
||||||
|
ob_end_flush();
|
||||||
|
readfile( $fileName);
|
||||||
|
unlink($fileName);
|
||||||
|
$this->removeDir($tmpFolder);
|
||||||
|
exit();
|
||||||
|
} else {
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'redirect' => helper::baseUrl() . 'plugin',
|
||||||
|
'notification' => 'Quelque chose s\'est mal passé',
|
||||||
|
'state' => false
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// Enregistrement des pages dans le dossier de langue identique à module
|
|
||||||
if (!file_exists($tmpFolder . '/' . $lang . '/page.json')) {
|
|
||||||
file_put_contents($tmpFolder . '/' . $lang . '/page.json', json_encode($pageParam));
|
|
||||||
mkdir ($tmpFolder . '/' . $lang . '/content', 0755);
|
|
||||||
file_put_contents($tmpFolder . '/' . $lang . '/content/' . $this->getData(['page', $pageId, 'content']), $pageContent);
|
|
||||||
}
|
|
||||||
// création du zip
|
|
||||||
$fileName = $this->getUrl(2) . '.zip';
|
|
||||||
$this->makeZip ($fileName, $tmpFolder, []);
|
|
||||||
if (file_exists($fileName)) {
|
|
||||||
ob_start();
|
|
||||||
header('Content-Type: application/octet-stream');
|
|
||||||
header('Content-Disposition: attachment; filename="' . $fileName . '"');
|
|
||||||
header('Content-Length: ' . filesize($fileName));
|
|
||||||
ob_clean();
|
|
||||||
ob_end_flush();
|
|
||||||
readfile( $fileName);
|
|
||||||
unlink($fileName);
|
|
||||||
$this->removeDir($tmpFolder);
|
|
||||||
exit();
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
// Liste des pages contenant le module
|
||||||
|
$inPages = helper::arrayCollumn($this->getData(['page']),'moduleId', 'SORT_DESC');
|
||||||
|
foreach( $inPages as $key=>$value){
|
||||||
|
if ($value === $this->getUrl(2)) {
|
||||||
|
self::$pagesList[] = $key;
|
||||||
|
}
|
||||||
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'addon',
|
'title' => 'Export des données de module',
|
||||||
'notification' => 'Quelque chose s\'est mal passé',
|
'view' => 'dataExport'
|
||||||
'state' => false
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -512,12 +534,12 @@ class addon extends common {
|
|||||||
/*
|
/*
|
||||||
* Importer des données d'un module externes ou interne à module.json
|
* Importer des données d'un module externes ou interne à module.json
|
||||||
*/
|
*/
|
||||||
public function import(){
|
public function dataImport(){
|
||||||
// Jeton incorrect
|
// Jeton incorrect
|
||||||
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
if ($this->getUrl(3) !== $_SESSION['csrf']) {
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'addon',
|
'redirect' => helper::baseUrl() . 'plugin',
|
||||||
'state' => false,
|
'state' => false,
|
||||||
'notification' => 'Action non autorisée'
|
'notification' => 'Action non autorisée'
|
||||||
]);
|
]);
|
||||||
@ -526,18 +548,32 @@ class addon extends common {
|
|||||||
// Soumission du formulaire
|
// Soumission du formulaire
|
||||||
if($this->isPost()) {
|
if($this->isPost()) {
|
||||||
// Récupérer le fichier et le décompacter
|
// Récupérer le fichier et le décompacter
|
||||||
$zipFilename = $this->getInput('addonImportFile', helper::FILTER_STRING_SHORT, true);
|
$zipFilename = $this->getInput('pluginImportFile', helper::FILTER_STRING_SHORT, true);
|
||||||
|
$targetPage = $this->getInput('pluginImportPage', helper::FILTER_STRING_SHORT, true);
|
||||||
$tempFolder = uniqid();
|
$tempFolder = uniqid();
|
||||||
mkdir (self::TEMP_DIR . $tempFolder, 0755);
|
mkdir (self::TEMP_DIR . $tempFolder, 0755);
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
if ($zip->open(self::FILE_DIR . 'source/' . $zipFilename) === TRUE) {
|
if ($zip->open(self::FILE_DIR . 'source/' . $zipFilename) === TRUE) {
|
||||||
$zip->extractTo(self::TEMP_DIR . $tempFolder );
|
$zip->extractTo(self::TEMP_DIR . $tempFolder );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// copie du contenu de la page
|
||||||
|
$this->copyDir (self::TEMP_DIR . $tempFolder . '/' .$key . '/content', self::DATA_DIR . '/' .$key . '/content');
|
||||||
|
// Supprimer les fichiers importés
|
||||||
|
unlink (self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json');
|
||||||
|
// Import des fichiers placés ailleurs que dans les dossiers localisés.
|
||||||
|
$this->copyDir (self::TEMP_DIR . $tempFolder, self::DATA_DIR );
|
||||||
|
|
||||||
|
|
||||||
// Import des données localisées page.json et module.json
|
// Import des données localisées page.json et module.json
|
||||||
// Pour chaque dossier localisé
|
// Pour chaque dossier localisé
|
||||||
$dataTarget = array();
|
// $dataTarget = array();
|
||||||
$dataSource = array();
|
// $dataSource = array();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Liste des pages de même nom dans l'archive et le site
|
// Liste des pages de même nom dans l'archive et le site
|
||||||
|
/*
|
||||||
$list = '';
|
$list = '';
|
||||||
foreach (self::$i18nList as $key=>$value) {
|
foreach (self::$i18nList as $key=>$value) {
|
||||||
// Les Pages et les modules
|
// Les Pages et les modules
|
||||||
@ -561,20 +597,16 @@ class addon extends common {
|
|||||||
if( $list === ''){
|
if( $list === ''){
|
||||||
file_put_contents(self::DATA_DIR . '/' .$key . '/' . $fileTarget . '.json', json_encode( $data ,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|LOCK_EX) );
|
file_put_contents(self::DATA_DIR . '/' .$key . '/' . $fileTarget . '.json', json_encode( $data ,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|LOCK_EX) );
|
||||||
}
|
}
|
||||||
// copie du contenu de la page
|
|
||||||
$this->copyDir (self::TEMP_DIR . $tempFolder . '/' .$key . '/content', self::DATA_DIR . '/' .$key . '/content');
|
|
||||||
// Supprimer les fichiers importés
|
|
||||||
unlink (self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// Import des fichiers placés ailleurs que dans les dossiers localisés.
|
|
||||||
$this->copyDir (self::TEMP_DIR . $tempFolder,self::DATA_DIR );
|
|
||||||
|
|
||||||
// Supprimer le dossier temporaire
|
// Supprimer le dossier temporaire
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
$zip->close();
|
$zip->close();
|
||||||
|
/*
|
||||||
if( $list !== '' ){
|
if( $list !== '' ){
|
||||||
$success = false;
|
$success = false;
|
||||||
strpos( $list, ',') === false ? $notification = 'Import impossible la page suivante doit être renommée :'.$list : $notification = 'Import impossible les pages suivantes doivent être renommées :'.$list;
|
strpos( $list, ',') === false ? $notification = 'Import impossible la page suivante doit être renommée :'.$list : $notification = 'Import impossible les pages suivantes doivent être renommées :'.$list;
|
||||||
@ -582,18 +614,29 @@ class addon extends common {
|
|||||||
else{
|
else{
|
||||||
$success = true;
|
$success = true;
|
||||||
$notification = 'Import réussi';
|
$notification = 'Import réussi';
|
||||||
}
|
}*/
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'addon',
|
'redirect' => helper::baseUrl() . 'plugin',
|
||||||
'state' => $success,
|
'state' => $success,
|
||||||
'notification' => $notification
|
'notification' => $notification
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Liste des pages ne contenant pas de module
|
||||||
|
self::$pagesList = $this->getData(['page']);
|
||||||
|
foreach(self::$pagesList as $page => $pageId) {
|
||||||
|
if ($this->getData(['page',$page,'block']) === 'bar' ||
|
||||||
|
$this->getData(['page',$page,'disable']) === true ||
|
||||||
|
$this->getData(['page',$page,'moduleId']) !== '') {
|
||||||
|
unset(self::$pagesList[$page]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Importer des données de module',
|
'title' => 'Importer des données de module',
|
||||||
'view' => 'import'
|
'view' => 'dataImport'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
30
core/module/plugin/view/dataExport/dataExport.php
Normal file
30
core/module/plugin/view/dataExport/dataExport.php
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<?php echo template::formOpen('pluginImportForm'); ?>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col1">
|
||||||
|
<?php echo template::button('pluginImportBack', [
|
||||||
|
'class' => 'buttonGrey',
|
||||||
|
'href' => helper::baseUrl() . 'plugin',
|
||||||
|
'value' => template::ico('left')
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col2 offset9">
|
||||||
|
<?php echo template::submit('pluginImportSubmit', [
|
||||||
|
'value' => 'Appliquer'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col12">
|
||||||
|
<div class="block">
|
||||||
|
<h4>Installer des données de module</h4>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col6 offset3">
|
||||||
|
<?php echo template::select('pluginExportSelectPage', $module::$pagesList , [
|
||||||
|
'label' => 'Export depuis la page ' . template::flag('site', '20px'),
|
||||||
|
'help' => 'Pour exporter les données de module d\'une autre langue traduite, sélectionnez-la puis revenez sur cet écran'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
35
core/module/plugin/view/dataImport/dataImport.php
Normal file
35
core/module/plugin/view/dataImport/dataImport.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php echo template::formOpen('pluginImportForm'); ?>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col1">
|
||||||
|
<?php echo template::button('pluginImportBack', [
|
||||||
|
'class' => 'buttonGrey',
|
||||||
|
'href' => helper::baseUrl() . 'plugin',
|
||||||
|
'value' => template::ico('left')
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col2 offset9">
|
||||||
|
<?php echo template::submit('pluginImportSubmit', [
|
||||||
|
'value' => 'Appliquer'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col12">
|
||||||
|
<div class="block">
|
||||||
|
<h4>Installer des données de module</h4>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col6">
|
||||||
|
<?php echo template::file('pluginImportFile', [
|
||||||
|
'label' => 'Archive ZIP :',
|
||||||
|
'type' => 2
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col6">
|
||||||
|
<?php echo template::select('pluginImportPage', helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') , [
|
||||||
|
'label' => 'Importer le module dans la page ' . template::flag('site', '20px')
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -17,21 +17,21 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col1 offset8">
|
<div class="col1 offset8">
|
||||||
<?php echo template::button('configModulesStore', [
|
<?php echo template::button('configModulesStore', [
|
||||||
'href' => helper::baseUrl() . 'addon/store',
|
'href' => helper::baseUrl() . 'plugin/store',
|
||||||
'value' => template::ico('shopping-basket'),
|
'value' => template::ico('shopping-basket'),
|
||||||
"help" => 'Lister le catalogue en ligne'
|
"help" => 'Lister le catalogue en ligne'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('configStoreUpload', [
|
<?php echo template::button('configStoreUpload', [
|
||||||
'href' => helper::baseUrl() . 'addon/upload',
|
'href' => helper::baseUrl() . 'plugin/upload',
|
||||||
'value' => template::ico('plus'),
|
'value' => template::ico('plus'),
|
||||||
"help" => 'Ajouter à partir d\'une archive ZIP'
|
"help" => 'Ajouter à partir d\'une archive ZIP'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php if($module::$modInstal): ?>
|
<?php if($module::$modInstal): ?>
|
||||||
<?php echo template::table([2, 2, 2, 2, 1, 1, 1], $module::$modInstal, ['Module installé', 'Alias', 'Version', 'Page(s)', 'Supprimer', 'Exporter', 'Importer']); ?>
|
<?php echo template::table([2, 2, 2, 2, 1, 1, 1], $module::$modInstal, ['Module installé', 'Alias', 'Version', 'Page(s)', 'Supprimer', '', '']); ?>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<?php echo template::speech('Aucun module installé.'); ?>
|
<?php echo template::speech('Aucun module installé.'); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
@ -2,7 +2,7 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('configStoreBack', [
|
<?php echo template::button('configStoreBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'addon',
|
'href' => helper::baseUrl() . 'plugin',
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
18
core/module/plugin/view/upload/upload.css
Normal file
18
core/module/plugin/view/upload/upload.css
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/**
|
||||||
|
* 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 <remi.jean@outlook.com>
|
||||||
|
* @copyright Copyright (C) 2008-2018, Rémi Jean
|
||||||
|
* @author Frédéric Tempez <frederic.tempez@outlook.com>
|
||||||
|
* @copyright Copyright (C) 2018-2022, Frédéric Tempez
|
||||||
|
* @license GNU General Public License, version 3
|
||||||
|
* @link http://zwiicms.fr/
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/** NE PAS EFFACER
|
||||||
|
* admin.css
|
||||||
|
*/
|
@ -3,12 +3,12 @@
|
|||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('configModulesBack', [
|
<?php echo template::button('configModulesBack', [
|
||||||
'class' => 'buttonGrey',
|
'class' => 'buttonGrey',
|
||||||
'href' => helper::baseUrl() . 'addon',
|
'href' => helper::baseUrl() . 'plugin',
|
||||||
'value' => template::ico('left')
|
'value' => template::ico('left')
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col1">
|
<div class="col1">
|
||||||
<?php echo template::button('addonIndexHelp', [
|
<?php echo template::button('pluginIndexHelp', [
|
||||||
'href' => 'https://doc.zwiicms.fr/installation-d-un-module',
|
'href' => 'https://doc.zwiicms.fr/installation-d-un-module',
|
||||||
'target' => '_blank',
|
'target' => '_blank',
|
||||||
'class' => 'buttonHelp',
|
'class' => 'buttonHelp',
|
Loading…
Reference in New Issue
Block a user