From d703cdc870cb9a363c28e9ee7fc4d4d69eef29cf Mon Sep 17 00:00:00 2001 From: Ludovic <54670129+lbr38@users.noreply.github.com> Date: Thu, 21 Aug 2025 20:27:24 +0200 Subject: [PATCH] 4.24.1 --- .github/workflows/test-api.yml | 4 +- www/config/properties.php | 2 +- www/controllers/Repo/Environment.php | 25 +++++++- www/controllers/Repo/Mirror/Deb.php | 27 ++++++--- www/controllers/Repo/Mirror/Rpm.php | 27 ++++++--- www/controllers/Repo/Repo.php | 31 ---------- www/controllers/Repo/Snapshot.php | 16 ++++++ www/controllers/Task/Notify.php | 4 +- www/controllers/Task/Repo/Create.php | 4 +- www/controllers/Task/Repo/Duplicate.php | 6 +- www/controllers/Task/Repo/Env.php | 4 +- www/controllers/Task/Repo/Finalize.php | 10 ++-- www/controllers/Task/Repo/RemoveEnv.php | 4 +- www/controllers/ajax/repo.php | 16 ------ www/controllers/ajax/repo/environment.php | 18 ++++++ www/models/Connection.php | 8 +++ www/models/Repo/Environment.php | 31 +++++++++- www/models/Repo/Repo.php | 54 ------------------ www/models/Repo/Snapshot.php | 23 ++++++++ .../official-logo/repomanager-gray-128.png | Bin 0 -> 3544 bytes .../official-logo/repomanager-gray-256.png | Bin 0 -> 6510 bytes .../official-logo/repomanager-gray-512.png | Bin 0 -> 13645 bytes .../assets/official-logo/repomanager-gray.svg | 24 ++++++++ .../official-logo/repomanager-white.svg | 46 +++++++++++++++ .../resources/js/classes/Environment.js | 26 +++++++++ www/public/resources/js/events/repo/edit.js | 15 ++++- www/public/resources/js/repo.js | 44 -------------- .../resources/styles/components/layout.css | 29 +++++++++- www/templates/mail/mail.template.html.php | 10 ++-- www/templates/mail/mail.template.mjml | 6 +- www/version | 2 +- www/views/includes/footer.inc.php | 43 ++++++++++---- .../includes/panels/hosts/groups/list.inc.php | 2 +- .../includes/panels/hosts/profiles.inc.php | 2 +- .../includes/panels/repos/groups/list.inc.php | 2 +- www/views/includes/repos-list.inc.php | 2 +- .../tables/repos/sources/list.inc.php | 2 +- 37 files changed, 360 insertions(+), 209 deletions(-) create mode 100644 www/controllers/ajax/repo/environment.php create mode 100644 www/public/assets/official-logo/repomanager-gray-128.png create mode 100644 www/public/assets/official-logo/repomanager-gray-256.png create mode 100644 www/public/assets/official-logo/repomanager-gray-512.png create mode 100644 www/public/assets/official-logo/repomanager-gray.svg create mode 100644 www/public/assets/official-logo/repomanager-white.svg create mode 100644 www/public/resources/js/classes/Environment.js diff --git a/.github/workflows/test-api.yml b/.github/workflows/test-api.yml index adf796606..321d93099 100644 --- a/.github/workflows/test-api.yml +++ b/.github/workflows/test-api.yml @@ -20,11 +20,11 @@ jobs: run: sudo apt-get install curl jq wget -y # Wait for the API to be ready - # Generally after the 30 first minutes of the current hour (xx:30 to xx:59) + # Generally after the 45 first minutes of the current hour (xx:45 to xx:59) - name: Wait until API URL is ready run: | while (true); do - if $(date +%M | grep -q '^[3-5][0-9]$'); then + if $(date +%M | grep -q '^[4-5][5-9]$'); then break fi diff --git a/www/config/properties.php b/www/config/properties.php index a8fab4ed2..b586f57e8 100644 --- a/www/config/properties.php +++ b/www/config/properties.php @@ -2,7 +2,7 @@ $config = array( 'project_name' => 'Repomanager', 'project_dir_name' => 'repomanager', - 'project_logo' => 'https://github.com/lbr38/repomanager/raw/main/www/public/assets/images/repomanager.png', + 'project_logo' => 'https://raw.githubusercontent.com/lbr38/repomanager/main/www/public/assets/official-logo/repomanager-gray-256.png', 'project_git_repo' => 'https://github.com/lbr38/repomanager', 'project_git_repo_raw' => 'https://raw.githubusercontent.com/lbr38/repomanager/main', 'project_update_doc_url' => 'https://github.com/lbr38/repomanager/wiki/01.-Installation-and-update#update-repomanager', diff --git a/www/controllers/Repo/Environment.php b/www/controllers/Repo/Environment.php index 45cf0fb82..eafcc4f81 100644 --- a/www/controllers/Repo/Environment.php +++ b/www/controllers/Repo/Environment.php @@ -15,10 +15,31 @@ public function __construct() } /** - * Associate a new env to a snapshot + * Associate a new environment to a snapshot */ - public function add(string $env, string $description = null, int $snapId) + public function add(string $env, string $description = null, int $snapId) : void { $this->model->add($env, $description, $snapId); } + + /** + * Remove an environment from a snapshot + */ + public function remove(int $id) : void + { + $this->model->remove($id); + } + + /** + * Update environment description + */ + public function updateDescription(int $id, string $description) : void + { + // Description should not contain single quotes or backslashes + if (str_contains($description, "'") || str_contains($description, "\\") || str_contains($description, '')) { + throw new Exception('Description contains invalid characters'); + } + + $this->model->updateDescription($id, \Controllers\Common::validateData($description)); + } } diff --git a/www/controllers/Repo/Mirror/Deb.php b/www/controllers/Repo/Mirror/Deb.php index 840abb322..251f361b8 100644 --- a/www/controllers/Repo/Mirror/Deb.php +++ b/www/controllers/Repo/Mirror/Deb.php @@ -767,16 +767,15 @@ private function downloadDebPackages($url) } /** - * Deduplication * Check if package already exists in the previous snapshot - * If so, just create a hard link to the package */ - if (REPO_DEDUPLICATION) { - if (isset($this->previousSnapshotDirPath)) { - if (file_exists($this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $debPackageName)) { - /** - * Create hard link to the package - */ + if (isset($this->previousSnapshotDirPath)) { + if (file_exists($this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $debPackageName)) { + /** + * If deduplication is enabled + * Create a hard link to the package + */ + if (REPO_DEDUPLICATION) { if (!link($this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $debPackageName, $absoluteDir . '/' . $debPackageName)) { throw new Exception('Cannot create hard link to package: ' . $this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $debPackageName); } @@ -785,6 +784,18 @@ private function downloadDebPackages($url) continue; } + + /** + * If deduplication is not enabled + * Copy package from the previous snapshot + */ + if (!copy($this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $debPackageName, $absoluteDir . '/' . $debPackageName)) { + throw new Exception('Cannot copy package from previous snapshot: ' . $this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $debPackageName); + } + + $this->taskLogSubStepController->completed('Copied from previous snapshot'); + + continue; } } diff --git a/www/controllers/Repo/Mirror/Rpm.php b/www/controllers/Repo/Mirror/Rpm.php index 47106f4d3..51dd94315 100644 --- a/www/controllers/Repo/Mirror/Rpm.php +++ b/www/controllers/Repo/Mirror/Rpm.php @@ -781,16 +781,15 @@ private function downloadRpmPackages(string $url) } /** - * Deduplication * Check if package already exists in the previous snapshot - * If so, just create a hard link to the package */ - if (REPO_DEDUPLICATION) { - if (isset($this->previousSnapshotDirPath)) { - if (file_exists($this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $rpmPackageName)) { - /** - * Create hard link to the package - */ + if (isset($this->previousSnapshotDirPath)) { + if (file_exists($this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $rpmPackageName)) { + /** + * If deduplication is enabled + * Create a hard link to the package + */ + if (REPO_DEDUPLICATION) { if (!link($this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $rpmPackageName, $absoluteDir . '/' . $rpmPackageName)) { throw new Exception('Cannot create hard link to package: ' . $this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $rpmPackageName); } @@ -799,6 +798,18 @@ private function downloadRpmPackages(string $url) continue; } + + /** + * If deduplication is not enabled + * Copy package from the previous snapshot + */ + if (!copy($this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $rpmPackageName, $absoluteDir . '/' . $rpmPackageName)) { + throw new Exception('Cannot copy package from previous snapshot: ' . $this->previousSnapshotDirPath . '/' . $relativeDir . '/' . $rpmPackageName); + } + + $this->taskLogSubStepController->completed('Copied from previous snapshot'); + + continue; } } diff --git a/www/controllers/Repo/Repo.php b/www/controllers/Repo/Repo.php index 1cdbd921b..2a3215618 100644 --- a/www/controllers/Repo/Repo.php +++ b/www/controllers/Repo/Repo.php @@ -522,21 +522,6 @@ public function getEnvIdBySnapId(string $snapId) return $this->model->getEnvIdBySnapId($snapId); } - /** - * Set environment description - */ - public function envSetDescription(string $envId, string $description) : void - { - // Description cannot contain single quotes or backslashes - if (str_contains($description, "'") || str_contains($description, "\\")) { - throw new Exception('Description contains invalid characters'); - } - - $description = \Controllers\Common::validateData($description); - - $this->model->envSetDescription($envId, $description); - } - /** * Get repository environment description by the repo name */ @@ -627,22 +612,6 @@ public function snapSetPackagesExcluded(int $snapId, array $packages) $this->model->snapSetPackagesExcluded($snapId, implode(',', $packages)); } - /** - * Add a repo snapshot in database - */ - public function addSnap(string $date, string $time, string $gpgSignature, array $arch, array $includeTranslation, array $packagesIncluded, array $packagesExcluded, string $type, string $status, string $repoId) - { - $this->model->addSnap($date, $time, $gpgSignature, $arch, $includeTranslation, $packagesIncluded, $packagesExcluded, $type, $status, $repoId); - } - - /** - * Remove an env in database - */ - public function removeEnv(string $envId) - { - $this->model->removeEnv($envId); - } - /** * Return snapshot date from database, from its Id */ diff --git a/www/controllers/Repo/Snapshot.php b/www/controllers/Repo/Snapshot.php index 72240a447..dcbba1994 100644 --- a/www/controllers/Repo/Snapshot.php +++ b/www/controllers/Repo/Snapshot.php @@ -22,6 +22,22 @@ private function getUnused(string $repoId, string $retention) : array return $this->model->getUnused($repoId, $retention); } + /** + * Return the last insert row ID in database + */ + public function getLastInsertRowID() + { + return $this->model->getLastInsertRowID(); + } + + /** + * Add a snapshot in database + */ + public function add(string $date, string $time, string $gpgSignature, array $arch, array $includeTranslation, array $packagesIncluded, array $packagesExcluded, string $type, string $status, int $repoId) : void + { + $this->model->add($date, $time, $gpgSignature, $arch, $includeTranslation, $packagesIncluded, $packagesExcluded, $type, $status, $repoId); + } + /** * Update snapshot status in the database */ diff --git a/www/controllers/Task/Notify.php b/www/controllers/Task/Notify.php index 654bbf729..7e3a36709 100644 --- a/www/controllers/Task/Notify.php +++ b/www/controllers/Task/Notify.php @@ -152,7 +152,7 @@ public function error(array $task, string $error) $message .= '
'; $mailSubject = '[ ERROR ] Scheduled task #' . $task['Id'] . ' failed on ' . WWW_HOSTNAME; - $mymail = new \Controllers\Mail(implode(',', $taskRawParams['schedule']['schedule-recipient']), $mailSubject, $message, __SERVER_PROTOCOL__ . '://' . WWW_HOSTNAME . '/run/' . $task['Id'], 'View log file'); + $mymail = new \Controllers\Mail(implode(',', $taskRawParams['schedule']['schedule-recipient']), $mailSubject, $message, __SERVER_PROTOCOL__ . '://' . WWW_HOSTNAME . '/run/' . $task['Id'], 'View task log'); } /** @@ -168,6 +168,6 @@ public function success(array $task) $message .= '
'; $mailSubject = '[ SUCCESS ] Scheduled task #' . $task['Id'] . ' succeeded on ' . WWW_HOSTNAME; - $mymail = new \Controllers\Mail(implode(',', $taskRawParams['schedule']['schedule-recipient']), $mailSubject, $message, __SERVER_PROTOCOL__ . '://' . WWW_HOSTNAME . '/run/' . $task['Id'], 'View log file'); + $mymail = new \Controllers\Mail(implode(',', $taskRawParams['schedule']['schedule-recipient']), $mailSubject, $message, __SERVER_PROTOCOL__ . '://' . WWW_HOSTNAME . '/run/' . $task['Id'], 'View task log'); } } diff --git a/www/controllers/Task/Repo/Create.php b/www/controllers/Task/Repo/Create.php index af48ca61e..0738be7cd 100644 --- a/www/controllers/Task/Repo/Create.php +++ b/www/controllers/Task/Repo/Create.php @@ -335,12 +335,12 @@ private function local() /** * Add snapshot to database */ - $this->repo->addSnap($this->repo->getDate(), $this->repo->getTime(), 'false', $this->repo->getArch(), array(), array(), array(), $this->repo->getType(), 'active', $this->repo->getRepoId()); + $this->repoSnapshotController->add($this->repo->getDate(), $this->repo->getTime(), 'false', $this->repo->getArch(), array(), array(), array(), $this->repo->getType(), 'active', $this->repo->getRepoId()); /** * Retrieve snapshot Id from the last insert row */ - $this->repo->setSnapId($this->repo->getLastInsertRowID()); + $this->repo->setSnapId($this->repoSnapshotController->getLastInsertRowID()); /** * Add env to database if an env has been specified by the user diff --git a/www/controllers/Task/Repo/Duplicate.php b/www/controllers/Task/Repo/Duplicate.php index b639d260a..91e1ee76a 100644 --- a/www/controllers/Task/Repo/Duplicate.php +++ b/www/controllers/Task/Repo/Duplicate.php @@ -13,6 +13,7 @@ class Duplicate private $repo; private $rpmRepoController; private $debRepoController; + private $repoSnapshotController; private $repoEnvController; private $task; private $taskLogStepController; @@ -25,6 +26,7 @@ public function __construct(string $taskId) $this->rpmRepoController = new \Controllers\Repo\Rpm(); $this->debRepoController = new \Controllers\Repo\Deb(); $this->task = new \Controllers\Task\Task(); + $this->repoSnapshotController = new \Controllers\Repo\Snapshot(); $this->repoEnvController = new \Controllers\Repo\Environment(); $this->taskLogStepController = new \Controllers\Task\Log\Step($taskId); $this->taskLogSubStepController = new \Controllers\Task\Log\SubStep($taskId); @@ -324,12 +326,12 @@ public function execute() /** * Add the new repo snapshot in database */ - $this->repo->addSnap($this->repo->getDate(), $this->repo->getTime(), $this->repo->getSigned(), $this->repo->getArch(), array(), $this->repo->getPackagesToInclude(), $this->repo->getPackagesToExclude(), $this->repo->getType(), $this->repo->getStatus(), $targetRepoId); + $this->repoSnapshotController->add($this->repo->getDate(), $this->repo->getTime(), $this->repo->getSigned(), $this->repo->getArch(), array(), $this->repo->getPackagesToInclude(), $this->repo->getPackagesToExclude(), $this->repo->getType(), $this->repo->getStatus(), $targetRepoId); /** * Retrieve the Id of the new repo snapshot in database */ - $targetSnapId = $this->repo->getLastInsertRowID(); + $targetSnapId = $this->repoSnapshotController->getLastInsertRowID(); /** * Add the new repo environment in database, only if the user has specified an environment diff --git a/www/controllers/Task/Repo/Env.php b/www/controllers/Task/Repo/Env.php index 3af4db13e..a7c6ebafa 100644 --- a/www/controllers/Task/Repo/Env.php +++ b/www/controllers/Task/Repo/Env.php @@ -175,7 +175,7 @@ public function execute() */ if (!empty($actualEnvIds)) { foreach ($actualEnvIds as $actualEnvId) { - $this->repo->removeEnv($actualEnvId['Id']); + $this->repoEnvController->remove($actualEnvId['Id']); } } @@ -255,7 +255,7 @@ public function execute() */ if (!empty($actualEnvIds)) { foreach ($actualEnvIds as $actualEnvId) { - $this->repo->removeEnv($actualEnvId['Id']); + $this->repoEnvController->remove($actualEnvId['Id']); } } diff --git a/www/controllers/Task/Repo/Finalize.php b/www/controllers/Task/Repo/Finalize.php index 24ee828b6..c534db86f 100644 --- a/www/controllers/Task/Repo/Finalize.php +++ b/www/controllers/Task/Repo/Finalize.php @@ -63,12 +63,12 @@ protected function finalize() * Add snapshot in database * Empty array() for package translation because it's not used for the moment */ - $this->repo->addSnap($this->repo->getDate(), $this->repo->getTime(), $this->repo->getGpgSign(), $this->repo->getArch(), array(), $this->repo->getPackagesToInclude(), $this->repo->getPackagesToExclude(), $this->repo->getType(), 'active', $this->repo->getRepoId()); + $this->repoSnapshotController->add($this->repo->getDate(), $this->repo->getTime(), $this->repo->getGpgSign(), $this->repo->getArch(), array(), $this->repo->getPackagesToInclude(), $this->repo->getPackagesToExclude(), $this->repo->getType(), 'active', $this->repo->getRepoId()); /** * Retrieve the last insert row ID */ - $this->repo->setSnapId($this->repo->getLastInsertRowID()); + $this->repo->setSnapId($this->repoSnapshotController->getLastInsertRowID()); /** * Add env in database if an env has been specified by the user @@ -123,13 +123,13 @@ protected function finalize() /** * Add snapshot in database */ - $this->repo->addSnap($this->repo->getDate(), $this->repo->getTime(), $this->repo->getGpgSign(), $this->repo->getArch(), array(), $this->repo->getPackagesToInclude(), $this->repo->getPackagesToExclude(), $this->repo->getType(), 'active', $this->repo->getRepoId()); + $this->repoSnapshotController->add($this->repo->getDate(), $this->repo->getTime(), $this->repo->getGpgSign(), $this->repo->getArch(), array(), $this->repo->getPackagesToInclude(), $this->repo->getPackagesToExclude(), $this->repo->getType(), 'active', $this->repo->getRepoId()); /** * Retrieve the last insert row Id * And we can set snapId = this Id */ - $this->repo->setSnapId($this->repo->getLastInsertRowID()); + $this->repo->setSnapId($this->repoSnapshotController->getLastInsertRowID()); } } @@ -173,7 +173,7 @@ protected function finalize() */ if (!empty($actualEnvIds)) { foreach ($actualEnvIds as $actualEnvId) { - $this->repo->removeEnv($actualEnvId['Id']); + $this->repoEnvController->remove($actualEnvId['Id']); } } diff --git a/www/controllers/Task/Repo/RemoveEnv.php b/www/controllers/Task/Repo/RemoveEnv.php index 97c8f5688..a40397b1d 100644 --- a/www/controllers/Task/Repo/RemoveEnv.php +++ b/www/controllers/Task/Repo/RemoveEnv.php @@ -11,6 +11,7 @@ class RemoveEnv private $repo; private $task; private $repoSnapshotController; + private $repoEnvController; private $taskLogStepController; private $taskLogSubStepController; @@ -19,6 +20,7 @@ public function __construct(string $taskId) $this->repo = new \Controllers\Repo\Repo(); $this->task = new \Controllers\Task\Task(); $this->repoSnapshotController = new \Controllers\Repo\Snapshot(); + $this->repoEnvController = new \Controllers\Repo\Environment(); $this->taskLogStepController = new \Controllers\Task\Log\Step($taskId); $this->taskLogSubStepController = new \Controllers\Task\Log\SubStep($taskId); @@ -84,7 +86,7 @@ public function execute() /** * Delete environment from database */ - $this->repo->removeEnv($this->repo->getEnvId()); + $this->repoEnvController->remove($this->repo->getEnvId()); $this->taskLogStepController->completed(); diff --git a/www/controllers/ajax/repo.php b/www/controllers/ajax/repo.php index 05c3ac823..5cf9b6581 100644 --- a/www/controllers/ajax/repo.php +++ b/www/controllers/ajax/repo.php @@ -1,20 +1,4 @@ envSetDescription($_POST['envId'], $_POST['description']); - } catch (\Exception $e) { - response(HTTP_BAD_REQUEST, $e->getMessage()); - } - - response(HTTP_OK, "Description has been saved"); -} - /** * Get repo size */ diff --git a/www/controllers/ajax/repo/environment.php b/www/controllers/ajax/repo/environment.php new file mode 100644 index 000000000..fdcb503cf --- /dev/null +++ b/www/controllers/ajax/repo/environment.php @@ -0,0 +1,18 @@ +updateDescription($_POST['envId'], $_POST['description']); + } catch (\Exception $e) { + response(HTTP_BAD_REQUEST, $e->getMessage()); + } + + response(HTTP_OK, "Description has been saved"); +} + +response(HTTP_BAD_REQUEST, 'Invalid action'); diff --git a/www/models/Connection.php b/www/models/Connection.php index eec4b1ff0..5a5be0976 100644 --- a/www/models/Connection.php +++ b/www/models/Connection.php @@ -328,7 +328,9 @@ private function generateMainTables() /** * Create indexes */ + $this->exec("CREATE INDEX IF NOT EXISTS repos_snap_index ON repos_snap (Date, Time, Signed, Arch, Pkg_translation, Pkg_included, Pkg_excluded, Type, Reconstruct, Status, Id_repo)"); $this->exec("CREATE INDEX IF NOT EXISTS repos_snap_status_id_repo_index ON repos_snap (Status, Id_repo)"); + $this->exec("CREATE INDEX IF NOT EXISTS repos_snap_id_repo_index ON repos_snap (Id_repo)"); /** * repos_env table @@ -339,6 +341,11 @@ private function generateMainTables() Description VARCHAR(255), Id_snap INTEGER NOT NULL)"); + /** + * Create indexes + */ + $this->exec("CREATE INDEX IF NOT EXISTS repos_env_index ON repos_env (Env, Description, Id_snap)"); + /** * Create indexes */ @@ -486,6 +493,7 @@ private function generateMainTables() * Create indexes */ $this->exec("CREATE INDEX IF NOT EXISTS tasks_rawparams_status ON tasks (Raw_params, Status)"); + $this->exec("CREATE INDEX IF NOT EXISTS tasks_status ON tasks (Status)"); /** * profile_settings table diff --git a/www/models/Repo/Environment.php b/www/models/Repo/Environment.php index 6eaf38959..17647f8e4 100644 --- a/www/models/Repo/Environment.php +++ b/www/models/Repo/Environment.php @@ -14,7 +14,7 @@ public function __construct() /** * Associate a new env to a snapshot */ - public function add(string $env, string $description = null, int $snapId) + public function add(string $env, string $description = null, int $snapId) : void { try { $stmt = $this->db->prepare("INSERT INTO repos_env ('Env', 'Description', 'Id_snap') VALUES (:env, :description, :snapId)"); @@ -26,4 +26,33 @@ public function add(string $env, string $description = null, int $snapId) $this->db->logError($e); } } + + /** + * Remove an environment from a snapshot + */ + public function remove(int $id) : void + { + try { + $stmt = $this->db->prepare("DELETE FROM repos_env WHERE Id = :envId"); + $stmt->bindValue(':envId', $id); + $stmt->execute(); + } catch (Exception $e) { + $this->db->logError($e); + } + } + + /** + * Update environment description + */ + public function updateDescription(int $id, string $description) : void + { + try { + $stmt = $this->db->prepare("UPDATE repos_env SET Description = :description WHERE Id = :envId"); + $stmt->bindValue(':description', $description); + $stmt->bindValue(':envId', $id); + $stmt->execute(); + } catch (Exception $e) { + $this->db->logError($e); + } + } } diff --git a/www/models/Repo/Repo.php b/www/models/Repo/Repo.php index b8bc71e65..b2c65b2b2 100644 --- a/www/models/Repo/Repo.php +++ b/www/models/Repo/Repo.php @@ -418,21 +418,6 @@ public function getUnused() : array return $data; } - /** - * Set environment description - */ - public function envSetDescription(string $envId, string $description) : void - { - try { - $stmt = $this->db->prepare("UPDATE repos_env SET Description = :description WHERE Id = :envId"); - $stmt->bindValue(':description', $description); - $stmt->bindValue(':envId', $envId); - $stmt->execute(); - } catch (\Exception $e) { - $this->db->logError($e); - } - } - /** * Modification de l'état de signature GPG */ @@ -781,29 +766,6 @@ public function count() return $this->db->count($result); } - /** - * Add a repo snapshot in database - */ - public function addSnap(string $date, string $time, string $gpgSignature, array $arch, array $includeTranslation, array $packagesIncluded, array $packagesExcluded, string $type, string $status, string $repoId) - { - try { - $stmt = $this->db->prepare("INSERT INTO repos_snap ('Date', 'Time', 'Signed', 'Arch', 'Pkg_translation', 'Pkg_included', 'Pkg_excluded', 'Type', 'Status', 'Id_repo') VALUES (:date, :time, :signed, :arch, :includeTranslation, :packagesIncluded, :packagesExcluded, :type, :status, :repoId)"); - $stmt->bindValue(':date', $date); - $stmt->bindValue(':time', $time); - $stmt->bindValue(':signed', $gpgSignature); - $stmt->bindValue(':arch', implode(',', $arch)); - $stmt->bindValue(':includeTranslation', implode(',', $includeTranslation)); - $stmt->bindValue(':packagesIncluded', implode(',', $packagesIncluded)); - $stmt->bindValue(':packagesExcluded', implode(',', $packagesExcluded)); - $stmt->bindValue(':type', $type); - $stmt->bindValue(':status', $status); - $stmt->bindValue(':repoId', $repoId); - $stmt->execute(); - } catch (\Exception $e) { - $this->db->logError($e); - } - } - /** * Ajout du repo au groupe spécifié en base de données */ @@ -861,22 +823,6 @@ public function removeFromGroup(string $repoId, string $groupId = null) } } - /** - * Remove an env in database - */ - public function removeEnv(string $envId) - { - try { - $stmt = $this->db->prepare("DELETE FROM repos_env WHERE Id = :envId"); - $stmt->bindValue(':envId', $envId); - $stmt->execute(); - } catch (\Exception $e) { - $this->db->logError($e); - } - - unset($stmt); - } - /** * Update release version in database */ diff --git a/www/models/Repo/Snapshot.php b/www/models/Repo/Snapshot.php index 310aad4f5..afe9ef703 100644 --- a/www/models/Repo/Snapshot.php +++ b/www/models/Repo/Snapshot.php @@ -45,6 +45,29 @@ public function getUnused(string $repoId, string $retention) : array return $data; } + /** + * Add a snapshot in database + */ + public function add(string $date, string $time, string $gpgSignature, array $arch, array $includeTranslation, array $packagesIncluded, array $packagesExcluded, string $type, string $status, int $repoId) : void + { + try { + $stmt = $this->db->prepare("INSERT INTO repos_snap ('Date', 'Time', 'Signed', 'Arch', 'Pkg_translation', 'Pkg_included', 'Pkg_excluded', 'Type', 'Status', 'Id_repo') VALUES (:date, :time, :signed, :arch, :includeTranslation, :packagesIncluded, :packagesExcluded, :type, :status, :repoId)"); + $stmt->bindValue(':date', $date); + $stmt->bindValue(':time', $time); + $stmt->bindValue(':signed', $gpgSignature); + $stmt->bindValue(':arch', implode(',', $arch)); + $stmt->bindValue(':includeTranslation', implode(',', $includeTranslation)); + $stmt->bindValue(':packagesIncluded', implode(',', $packagesIncluded)); + $stmt->bindValue(':packagesExcluded', implode(',', $packagesExcluded)); + $stmt->bindValue(':type', $type); + $stmt->bindValue(':status', $status); + $stmt->bindValue(':repoId', $repoId); + $stmt->execute(); + } catch (Exception $e) { + $this->db->logError($e); + } + } + /** * Update snapshot status in the database */ diff --git a/www/public/assets/official-logo/repomanager-gray-128.png b/www/public/assets/official-logo/repomanager-gray-128.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a8e7b5b03c52b173b188e45c99da26738dc7f0 GIT binary patch literal 3544 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 E1M3N4rT_o{ literal 0 HcmV?d00001 diff --git a/www/public/assets/official-logo/repomanager-gray-256.png b/www/public/assets/official-logo/repomanager-gray-256.png new file mode 100644 index 0000000000000000000000000000000000000000..658103f8c913ab8a0177502739a3753a3f28d520 GIT binary patch literal 6510 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 F{{YuD&~N|% literal 0 HcmV?d00001 diff --git a/www/public/assets/official-logo/repomanager-gray-512.png b/www/public/assets/official-logo/repomanager-gray-512.png new file mode 100644 index 0000000000000000000000000000000000000000..b7e9e9186451c5ebf001d86316e6e9cf3eda32ee GIT binary patch literal 13645 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 literal 0 HcmV?d00001 diff --git a/www/public/assets/official-logo/repomanager-gray.svg b/www/public/assets/official-logo/repomanager-gray.svg new file mode 100644 index 000000000..29afed978 --- /dev/null +++ b/www/public/assets/official-logo/repomanager-gray.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/www/public/assets/official-logo/repomanager-white.svg b/www/public/assets/official-logo/repomanager-white.svg new file mode 100644 index 000000000..094ffdcc9 --- /dev/null +++ b/www/public/assets/official-logo/repomanager-white.svg @@ -0,0 +1,46 @@ + + + + + + + + diff --git a/www/public/resources/js/classes/Environment.js b/www/public/resources/js/classes/Environment.js new file mode 100644 index 000000000..ae2ba40ba --- /dev/null +++ b/www/public/resources/js/classes/Environment.js @@ -0,0 +1,26 @@ +class Environment +{ + /** + * Upodate environment description + * @param {*} id + * @param {*} description + */ + updateDescription(id, description) + { + ajaxRequest( + // Controller: + 'repo/environment', + // Action: + 'update-description', + // Data: + { + envId: id, + description: description + }, + // Print success alert: + true, + // Print error alert: + true + ); + } +} diff --git a/www/public/resources/js/events/repo/edit.js b/www/public/resources/js/events/repo/edit.js index 76feae4bb..76dd70339 100644 --- a/www/public/resources/js/events/repo/edit.js +++ b/www/public/resources/js/events/repo/edit.js @@ -1,5 +1,5 @@ /** - * Event: submit reposiroty edit form + * Event: submit repository edit form */ $(document).on('submit','#edit-form',function () { event.preventDefault(); @@ -99,3 +99,16 @@ $(document).on('submit','#edit-form',function () { return false; }); + +/** + * Event: edit repository description when pressing 'Enter' key + */ +$(document).on('keypress','input[type="text"].repo-description-input',function (e) { + e.stopPropagation(); + + const keycode = (event.keyCode ? event.keyCode : event.which); + + if (keycode == '13') { + myenvironment.updateDescription($(this).attr('env-id'), $(this).val()); + } +}); diff --git a/www/public/resources/js/repo.js b/www/public/resources/js/repo.js index 66cdda806..65b7c2ae8 100644 --- a/www/public/resources/js/repo.js +++ b/www/public/resources/js/repo.js @@ -242,47 +242,3 @@ $(document).on('mouseenter','.item-env, .item-env-info',function () { $(document).on('mouseleave','.item-env, .item-env-info',function () { $('#repos-list-container').find('.item-env-info').css('visibility', 'hidden'); }); - -/** - * Event : modification de la description d'un repo - */ -$(document).on('keypress','.repoDescriptionInput',function () { - var keycode = (event.keyCode ? event.keyCode : event.which); - if (keycode == '13') { - /** - * Récupération des valeurs suivantes : - * - L'Id du repo à modifier - * - Le status du repo - * - La description - */ - var envId = $(this).attr('env-id'); - var description = $(this).val(); - - setRepoDescription(envId, description); - } - event.stopPropagation(); -}); - -/** - * Ajax : Modifier la description d'un repo - * @param {string} repoId - * @param {string} repoDescription - */ -function setRepoDescription(envId, repoDescription) -{ - ajaxRequest( - // Controller: - 'repo', - // Action: - 'setRepoDescription', - // Data: - { - envId: envId, - description: repoDescription - }, - // Print success alert: - true, - // Print error alert: - true - ); -} diff --git a/www/public/resources/styles/components/layout.css b/www/public/resources/styles/components/layout.css index 2336ea1e0..739b50970 100644 --- a/www/public/resources/styles/components/layout.css +++ b/www/public/resources/styles/components/layout.css @@ -28,6 +28,33 @@ body { .details-div { padding: 10px; background-color: #182b3e; - border: 1px solid #24405c; + border: 3px solid #22384F; border-radius: 20px; } + +/* Full page loading veil */ +.body-veil { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + position: fixed; + row-gap: 20px; + top: 0; + left: 0; + width: 100%; + height: 100vh; + background-color: #0e1e2f; + border-radius: 20px; + z-index: 90; +} +.body-veil img:first-child { + width: 120px; + height: 120px; + opacity: 0.1; +} +.body-veil img:last-child { + width: 20px; + height: 20px; + opacity: 0.5; +} diff --git a/www/templates/mail/mail.template.html.php b/www/templates/mail/mail.template.html.php index 57c7d2562..62e25de41 100644 --- a/www/templates/mail/mail.template.html.php +++ b/www/templates/mail/mail.template.html.php @@ -148,8 +148,8 @@ - @@ -176,12 +176,12 @@
- + +
-
+ @@ -222,7 +222,7 @@ diff --git a/www/templates/mail/mail.template.mjml b/www/templates/mail/mail.template.mjml index a4bad5fcf..eac58c615 100644 --- a/www/templates/mail/mail.template.mjml +++ b/www/templates/mail/mail.template.mjml @@ -2,12 +2,12 @@ - + - + $content @@ -19,7 +19,7 @@ - Project description
Github link
+ Project - Github link
diff --git a/www/version b/www/version index 2c4686f5c..9cc7d2bfe 100644 --- a/www/version +++ b/www/version @@ -1 +1 @@ -4.24.0 \ No newline at end of file +4.24.1 \ No newline at end of file diff --git a/www/views/includes/footer.inc.php b/www/views/includes/footer.inc.php index eb368f40a..404054e05 100644 --- a/www/views/includes/footer.inc.php +++ b/www/views/includes/footer.inc.php @@ -44,7 +44,6 @@ - '; + } + } +} ?> + + + +">
-
NAME
+
NAME
HOSTS
diff --git a/www/views/includes/panels/hosts/profiles.inc.php b/www/views/includes/panels/hosts/profiles.inc.php index c7b6ce78e..e63cdfe28 100644 --- a/www/views/includes/panels/hosts/profiles.inc.php +++ b/www/views/includes/panels/hosts/profiles.inc.php @@ -61,7 +61,7 @@
-
NAME
+
NAME
REPOSITORIES
diff --git a/www/views/includes/panels/repos/groups/list.inc.php b/www/views/includes/panels/repos/groups/list.inc.php index 522b216da..899e5e808 100644 --- a/www/views/includes/panels/repos/groups/list.inc.php +++ b/www/views/includes/panels/repos/groups/list.inc.php @@ -35,7 +35,7 @@
-
NAME
+
NAME
REPOSITORIES
diff --git a/www/views/includes/repos-list.inc.php b/www/views/includes/repos-list.inc.php index 49d092e39..f5507314e 100644 --- a/www/views/includes/repos-list.inc.php +++ b/www/views/includes/repos-list.inc.php @@ -375,7 +375,7 @@ */ echo '
'; if (!empty($env)) { - echo ''; + echo ''; } echo '
'; diff --git a/www/views/includes/tables/repos/sources/list.inc.php b/www/views/includes/tables/repos/sources/list.inc.php index 7d7a7283f..8266bb975 100644 --- a/www/views/includes/tables/repos/sources/list.inc.php +++ b/www/views/includes/tables/repos/sources/list.inc.php @@ -83,7 +83,7 @@ -
NAME
+
NAME
URL
-
+
-
- release version
Github
+