plugin dialogues manquants + plugin données des modules dans le cloud

This commit is contained in:
Fred Tempez 2022-10-19 10:42:40 +02:00
parent 0a29e83b3f
commit c36c8de863
3 changed files with 43 additions and 22 deletions

View File

@ -130,6 +130,8 @@
"Supprimer le module": "Eliminar módulo", "Supprimer le module": "Eliminar módulo",
"Sauvegarder le module dans le gestionnaire de fichiers": "Guardar módulo en el administrador de archivos", "Sauvegarder le module dans le gestionnaire de fichiers": "Guardar módulo en el administrador de archivos",
"Sauvegarder et télécharger le module": "Guardar y descargar módulo", "Sauvegarder et télécharger le module": "Guardar y descargar módulo",
"Sauvegarder les données du module dans le gestionnaire de fichiers": "Guardar de los datos del módulo en el administrador de archivos",
"'Sauvegarder et télécharger les données du module": "Guardar y descargar de los datos del módulo",
"Installer depuis le catalogue en ligne": "Instalar desde el archivo en línea", "Installer depuis le catalogue en ligne": "Instalar desde el archivo en línea",
"Installer depuis une archive": "Instalar desde un archivo", "Installer depuis une archive": "Instalar desde un archivo",
"Mettre à jour le module orphelin": "Actualizar módulo huérfano", "Mettre à jour le module orphelin": "Actualizar módulo huérfano",

View File

@ -130,6 +130,8 @@
"Supprimer le module": "", "Supprimer le module": "",
"Sauvegarder le module dans le gestionnaire de fichiers": "", "Sauvegarder le module dans le gestionnaire de fichiers": "",
"Sauvegarder et télécharger le module": "", "Sauvegarder et télécharger le module": "",
"Sauvegarder les données du module dans le gestionnaire de fichiers": "",
"'Sauvegarder et télécharger les données du module": "",
"Installer depuis le catalogue en ligne": "", "Installer depuis le catalogue en ligne": "",
"Installer depuis une archive": "", "Installer depuis une archive": "",
"Mettre à jour le module orphelin": "", "Mettre à jour le module orphelin": "",

View File

@ -520,12 +520,12 @@ class plugin extends common
template::button('dataExport' . $keyPage, [ template::button('dataExport' . $keyPage, [
'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/filemanager/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/filemanager/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre
'value' => template::ico('download-cloud'), 'value' => template::ico('download-cloud'),
'help' => 'Exporter les données du module' 'help' => 'Sauvegarder les données du module dans le gestionnaire de fichiers'
]), ]),
template::button('dataExport' . $keyPage, [ template::button('dataExport' . $keyPage, [
'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/download/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/download/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_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' 'help' => 'Sauvegarder et télécharger les données du module'
]), ]),
template::button('dataDelete' . $keyPage, [ template::button('dataDelete' . $keyPage, [
'href' => helper::baseUrl() . $this->getUrl(0) . '/dataDelete/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataDelete/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre
@ -550,7 +550,6 @@ class plugin extends common
/** /**
* Sauvegarde un module sans les données * Sauvegarde un module sans les données
*/ */
public function save() public function save()
{ {
// Jeton incorrect // Jeton incorrect
@ -584,14 +583,14 @@ class plugin extends common
} }
// Construire l'archive // Construire l'archive
$this->makeZip($tmpFolder . '/' . $fileName, self::MODULE_DIR . $moduleId); $this->makeZip(self::TEMP_DIR . $fileName, self::MODULE_DIR . $moduleId);
switch ($action) { switch ($action) {
case 'filemanager': case 'filemanager':
if (!file_exists(self::FILE_DIR . 'source/modules')) { if (!file_exists(self::FILE_DIR . 'source/modules')) {
mkdir(self::FILE_DIR . 'source/modules'); mkdir(self::FILE_DIR . 'source/modules');
} }
$success .= copy($tmpFolder . '/' . $fileName, self::FILE_DIR . 'source/modules/' . $moduleId . '.zip'); $success = $success && copy(self::TEMP_DIR . $fileName, self::FILE_DIR . 'source/modules/' . $moduleId . '.zip');
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
@ -600,19 +599,19 @@ class plugin extends common
'state' => $success 'state' => $success
]); ]);
// Nettoyage // Nettoyage
unlink($tmpFolder . '/' . $fileName); unlink(self::TEMP_DIR . $fileName);
$this->removeDir($tmpFolder); $this->removeDir($tmpFolder);
break; break;
case 'download': case 'download':
default: default:
header('Content-Type: application/octet-stream'); header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $fileName . '"'); header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Content-Length: ' . filesize($tmpFolder . '/' . $fileName)); header('Content-Length: ' . filesize(self::TEMP_DIR . $fileName));
ob_clean(); ob_clean();
ob_end_flush(); ob_end_flush();
readfile($tmpFolder . '/' . $fileName); readfile(self::TEMP_DIR . $fileName);
// Nettoyage // Nettoyage
unlink($tmpFolder . '/' . $fileName); unlink(self::TEMP_DIR . $fileName);
$this->removeDir($tmpFolder); $this->removeDir($tmpFolder);
exit(); exit();
} }
@ -689,32 +688,50 @@ class plugin extends common
$infoModule = $infoModules[$moduleId]; $infoModule = $infoModules[$moduleId];
// Copier les données et le descripteur // Copier les données et le descripteur
$success = file_put_contents($tmpFolder . '/module.json', json_encode($moduleData)); $success = file_put_contents($tmpFolder . '/module.json', json_encode($moduleData)) === false ? false : true;
$success .= file_put_contents($tmpFolder . '/enum.json', json_encode( [$moduleId => $infoModule]));
$success = $success && is_int(file_put_contents($tmpFolder . '/enum.json', json_encode( [$moduleId => $infoModule])));
// Le dossier du module s'il existe // Le dossier du module s'il existe
if (is_dir(self::DATA_DIR . $moduleId . '/' . $pageId )) { if (is_dir(self::DATA_DIR . $moduleId . '/' . $pageId )) {
// Copier le dossier des données // Copier le dossier des données
$success .= $this->copyDir(self::DATA_DIR . '/'. $moduleId . '/' . $pageId , $tmpFolder . '/dataDirectory' ); $success = $success && $this->copyDir(self::DATA_DIR . '/'. $moduleId . '/' . $pageId , $tmpFolder . '/dataDirectory' );
} }
// création du zip // Création du zip
$fileName = $lang . '-' . $moduleId . '-' . $pageId . '.zip';
$this->makeZip(self::TEMP_DIR . $fileName, $tmpFolder);
// Gestin de l'action
if ($success) { if ($success) {
switch ($action) { switch ($action) {
case 'filemanager': case 'filemanager':
if (!file_exists(self::FILE_DIR . 'source/modules')) {
mkdir(self::FILE_DIR . 'source/modules');
}
if (file_exists(self::TEMP_DIR . $fileName)) {
$success = $success && copy(self::TEMP_DIR . $fileName, self::FILE_DIR . 'source/modules/data' . $moduleId . '.zip');
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'plugin',
'notification' => $success ? helper::translate('Données copiées dans le dossier Module du gestionnaire de fichier') : helper::translate('Erreur de copie'),
'state' => $success
]);
// Nettoyage
unlink(self::TEMP_DIR . $fileName);
$this->removeDir($tmpFolder);
}
break;
case 'download': case 'download':
default: default:
$fileName = $lang . '-' . $moduleId . '-' . $pageId . '.zip'; if (file_exists(self::TEMP_DIR . $fileName)) {
$this->makeZip($fileName, $tmpFolder);
if (file_exists($fileName)) {
ob_start(); ob_start();
header('Content-Type: application/octet-stream'); header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $fileName . '"'); header('Content-Disposition: attachment; filename="' . self::TEMP_DIR . $fileName . '"');
header('Content-Length: ' . filesize($fileName)); header('Content-Length: ' . filesize(self::TEMP_DIR . $fileName));
ob_clean(); ob_clean();
ob_end_flush(); ob_end_flush();
readfile($fileName); readfile(self::TEMP_DIR . $fileName);
unlink($fileName); unlink(self::TEMP_DIR . $fileName);
$this->removeDir($tmpFolder); $this->removeDir($tmpFolder);
exit(); exit();
} }