From 7bd971f83821cd60f6fd7249f387cd36e0f885f0 Mon Sep 17 00:00:00 2001 From: Ali <83188384+testA113@users.noreply.github.com> Date: Wed, 10 Aug 2022 17:07:35 +1200 Subject: [PATCH] fix(toast): update styles and custom button (#7450) EE-3829 --- app/assets/css/bootstrap-override.css | 15 +++++++++++---- .../configs/create/createConfigController.js | 2 +- .../views/configs/edit/configController.js | 2 +- .../create/createContainerController.js | 4 ++-- .../containers/edit/containerController.js | 6 +++--- ...ocker-features-configuration.controller.js | 2 +- .../views/images/edit/imageController.js | 4 ++-- app/docker/views/images/imagesController.js | 2 +- .../images/import/importImageController.js | 4 ++-- .../create/createNetworkController.js | 2 +- .../access/registryAccessController.js | 2 +- .../secrets/create/createSecretController.js | 2 +- .../views/secrets/edit/secretController.js | 2 +- .../create/createServiceController.js | 2 +- .../views/services/edit/serviceController.js | 2 +- .../volumes/create/createVolumeController.js | 2 +- .../WaitingRoomView/Datatable/Datatable.tsx | 2 +- .../createEdgeGroupViewController.js | 2 +- .../editEdgeGroupViewController.js | 2 +- .../createEdgeJobViewController.js | 2 +- .../edge-jobs/edgeJob/edgeJobController.js | 2 +- .../create-edge-stack-view.controller.js | 2 +- .../editEdgeStackViewController.js | 2 +- .../helm-add-repository.controller.js | 2 +- .../helm-templates.controller.js | 2 +- ...-create-custom-template-view.controller.js | 2 +- ...be-edit-custom-template-view.controller.js | 2 +- .../create/createApplicationController.js | 2 +- .../edit/applicationController.js | 6 +++--- .../views/cluster/node/nodeController.js | 2 +- .../create/createConfigurationController.js | 2 +- .../edit/configurationController.js | 4 ++-- .../views/configure/configureController.js | 2 +- .../views/deploy/deployController.js | 2 +- .../access/resourcePoolAccessController.js | 4 ++-- .../views/volumes/edit/volumeController.js | 4 ++-- .../AccessControlPanelForm.tsx | 2 +- .../kubernetes-app-git-form.controller.js | 4 ++-- ...rnetes-redeploy-app-git-form.controller.js | 4 ++-- .../stack-redeploy-git-form.controller.js | 4 ++-- app/portainer/services/notifications.ts | 19 +++++++++++++++++-- .../AutoEnvCreationSettingsForm.tsx | 1 + .../views/account/accountController.js | 2 +- .../createCustomTemplateViewController.js | 2 +- .../customTemplatesViewController.js | 4 ++-- .../editCustomTemplateViewController.js | 2 +- .../devices/import/importDeviceController.js | 2 +- .../profiles/add/addProfileController.js | 2 +- .../profiles/edit/editProfileController.js | 2 +- .../access/endpointAccessController.js | 2 +- .../groups/access/groupAccessController.js | 2 +- .../groups/create/createGroupController.js | 2 +- .../views/groups/edit/groupController.js | 2 +- .../views/init/admin/initAdminController.js | 2 +- .../create/createRegistryController.js | 4 ++-- .../registries/edit/registryController.js | 2 +- .../settingsAuthenticationController.js | 4 ++-- .../settingsEdgeComputeController.js | 6 +++--- .../views/settings/settingsController.js | 4 ++-- .../stacks/create/createStackController.js | 2 +- .../views/stacks/edit/stackController.js | 4 ++-- .../views/teams/edit/teamController.js | 4 ++-- .../views/templates/templatesController.js | 6 +++--- .../views/users/edit/userController.js | 4 ++-- .../container-instances/ListView/ListView.tsx | 2 +- 65 files changed, 115 insertions(+), 92 deletions(-) diff --git a/app/assets/css/bootstrap-override.css b/app/assets/css/bootstrap-override.css index 5aba5d1e5..fd0c99306 100644 --- a/app/assets/css/bootstrap-override.css +++ b/app/assets/css/bootstrap-override.css @@ -193,16 +193,20 @@ input:checked + .slider:before { #toast-container > .toast-success { background-image: url(../images/icon-success.svg) !important; - background-position: top 20px left 20px; + background-size: 40px 40px; + background-position: top 12px left 12px; } #toast-container > .toast-error { background-image: url(../images/icon-error.svg) !important; - background-position: top 20px left 20px; + background-size: 40px 40px; + background-position: top 12px left 12px; } #toast-container > .toast-warning { background-image: url(../images/icon-warning.svg) !important; + background-size: 40px 40px; + background-position: top 12px left 12px; } .toast-success .toast-progress { @@ -219,7 +223,7 @@ input:checked + .slider:before { color: var(--ui-gray-7); background-color: var(--white-color); border-radius: 8px; - padding: 20px 20px 20px 80px; + padding: 18px 20px 18px 68px; width: 300px; opacity: 1; -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); @@ -235,6 +239,7 @@ input:checked + .slider:before { .toast-close-button { color: var(--black-color); text-decoration: none; + margin-top: 5px; cursor: pointer; opacity: 0.4; -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); @@ -252,8 +257,10 @@ input:checked + .slider:before { } .toast-title { + font-weight: 500; color: var(--black-color); - padding: 10px 0px; + padding-right: 10px; + margin-bottom: 4px; } /* Modal */ diff --git a/app/docker/views/configs/create/createConfigController.js b/app/docker/views/configs/create/createConfigController.js index c17ea179c..1dac12043 100644 --- a/app/docker/views/configs/create/createConfigController.js +++ b/app/docker/views/configs/create/createConfigController.js @@ -139,7 +139,7 @@ class CreateConfigController { const resourceControl = data.Portainer.ResourceControl; const userId = userDetails.ID; await this.ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl); - this.Notifications.success('Config successfully created'); + this.Notifications.success('Success', 'Configuration successfully created'); this.state.isEditorDirty = false; this.$state.go('docker.configs', {}, { reload: true }); } catch (err) { diff --git a/app/docker/views/configs/edit/configController.js b/app/docker/views/configs/edit/configController.js index 05aabea7a..edb361dbe 100644 --- a/app/docker/views/configs/edit/configController.js +++ b/app/docker/views/configs/edit/configController.js @@ -16,7 +16,7 @@ angular.module('portainer.docker').controller('ConfigController', [ $scope.removeConfig = function removeConfig(configId) { ConfigService.remove(configId) .then(function success() { - Notifications.success('Config successfully removed'); + Notifications.success('Success', 'Configuration successfully removed'); $state.go('docker.configs', {}); }) .catch(function error(err) { diff --git a/app/docker/views/containers/create/createContainerController.js b/app/docker/views/containers/create/createContainerController.js index 7d651a9df..1b2247944 100644 --- a/app/docker/views/containers/create/createContainerController.js +++ b/app/docker/views/containers/create/createContainerController.js @@ -883,7 +883,7 @@ angular.module('portainer.docker').controller('CreateContainerController', [ } else { await ContainerService.updateLimits($transition$.params().from, config); $scope.config = config; - Notifications.success('Limits updated'); + Notifications.success('Success', 'Limits updated'); } } catch (err) { Notifications.error('Failure', err, 'Update Limits fail'); @@ -1090,7 +1090,7 @@ angular.module('portainer.docker').controller('CreateContainerController', [ } function onSuccess() { - Notifications.success('Container successfully created'); + Notifications.success('Success', 'Container successfully created'); $state.go('docker.containers', {}, { reload: true }); } } diff --git a/app/docker/views/containers/edit/containerController.js b/app/docker/views/containers/edit/containerController.js index 7f84a784f..a3b0d7a05 100644 --- a/app/docker/views/containers/edit/containerController.js +++ b/app/docker/views/containers/edit/containerController.js @@ -290,7 +290,7 @@ angular.module('portainer.docker').controller('ContainerController', [ function removeContainer(cleanAssociatedVolumes) { ContainerService.remove($scope.container, cleanAssociatedVolumes) .then(function success() { - Notifications.success('Container successfully removed'); + Notifications.success('Success', 'Container successfully removed'); $state.go('docker.containers', {}, { reload: true }); }) .catch(function error(err) { @@ -380,7 +380,7 @@ angular.module('portainer.docker').controller('ContainerController', [ } function notifyAndChangeView() { - Notifications.success('Container successfully re-created'); + Notifications.success('Success', 'Container successfully re-created'); $state.go('docker.containers', {}, { reload: true }); } @@ -414,7 +414,7 @@ angular.module('portainer.docker').controller('ContainerController', [ Name: restartPolicy, MaximumRetryCount: maximumRetryCount, }; - Notifications.success('Restart policy updated'); + Notifications.success('Success', 'Restart policy updated'); } function notifyOnError(err) { diff --git a/app/docker/views/docker-features-configuration/docker-features-configuration.controller.js b/app/docker/views/docker-features-configuration/docker-features-configuration.controller.js index 4d6de8ede..8b61343cd 100644 --- a/app/docker/views/docker-features-configuration/docker-features-configuration.controller.js +++ b/app/docker/views/docker-features-configuration/docker-features-configuration.controller.js @@ -106,7 +106,7 @@ export default class DockerFeaturesConfigurationController { await this.EndpointService.updateSecuritySettings(this.endpoint.Id, securitySettings); this.endpoint.SecuritySettings = securitySettings; - this.Notifications.success('Saved settings successfully'); + this.Notifications.success('Success', 'Saved settings successfully'); } catch (e) { this.Notifications.error('Failure', e, 'Failed saving settings'); } diff --git a/app/docker/views/images/edit/imageController.js b/app/docker/views/images/edit/imageController.js index 8d7a467a6..c5910271d 100644 --- a/app/docker/views/images/edit/imageController.js +++ b/app/docker/views/images/edit/imageController.js @@ -76,7 +76,7 @@ angular.module('portainer.docker').controller('ImageController', [ ImageService.tagImage($transition$.params().id, image.fromImage) .then(function success() { - Notifications.success('Image successfully tagged'); + Notifications.success('Success', 'Image successfully tagged'); $state.go('docker.images.image', { id: $transition$.params().id }, { reload: true }); }) .catch(function error(err) { @@ -155,7 +155,7 @@ angular.module('portainer.docker').controller('ImageController', [ .then(function success(data) { var downloadData = new Blob([data.file], { type: 'application/x-tar' }); FileSaver.saveAs(downloadData, 'images.tar'); - Notifications.success('Image successfully downloaded'); + Notifications.success('Success', 'Image successfully downloaded'); }) .catch(function error(err) { Notifications.error('Failure', err, 'Unable to download image'); diff --git a/app/docker/views/images/imagesController.js b/app/docker/views/images/imagesController.js index 7224fe029..4b5115e46 100644 --- a/app/docker/views/images/imagesController.js +++ b/app/docker/views/images/imagesController.js @@ -90,7 +90,7 @@ angular.module('portainer.docker').controller('ImagesController', [ .then(function success(data) { var downloadData = new Blob([data.file], { type: 'application/x-tar' }); FileSaver.saveAs(downloadData, 'images.tar'); - Notifications.success('Image(s) successfully downloaded'); + Notifications.success('Success', 'Image(s) successfully downloaded'); }) .catch(function error(err) { Notifications.error('Failure', err, 'Unable to download image(s)'); diff --git a/app/docker/views/images/import/importImageController.js b/app/docker/views/images/import/importImageController.js index 3162fbb0c..a6449976e 100644 --- a/app/docker/views/images/import/importImageController.js +++ b/app/docker/views/images/import/importImageController.js @@ -58,9 +58,9 @@ angular.module('portainer.docker').controller('ImportImageController', [ await tagImage(imageIds[1]); $state.go('docker.images.image', { id: imageIds[1] }, { reload: true }); } - Notifications.success('Images successfully uploaded'); + Notifications.success('Success', 'Images successfully uploaded'); } else { - Notifications.success('The uploaded tar file contained multiple images. The provided tag therefore has been ignored.'); + Notifications.success('Success', 'The uploaded tar file contained multiple images. The provided tag therefore has been ignored.'); } } catch (err) { Notifications.error('Failure', err, 'Unable to upload image'); diff --git a/app/docker/views/networks/create/createNetworkController.js b/app/docker/views/networks/create/createNetworkController.js index 7a3fed4b2..0d034d796 100644 --- a/app/docker/views/networks/create/createNetworkController.js +++ b/app/docker/views/networks/create/createNetworkController.js @@ -239,7 +239,7 @@ angular.module('portainer.docker').controller('CreateNetworkController', [ return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl); }) .then(function success() { - Notifications.success('Network successfully created'); + Notifications.success('Success', 'Network successfully created'); if (context.reload) { $state.go( 'docker.networks', diff --git a/app/docker/views/registries/access/registryAccessController.js b/app/docker/views/registries/access/registryAccessController.js index c3b249d0e..5c1382c2e 100644 --- a/app/docker/views/registries/access/registryAccessController.js +++ b/app/docker/views/registries/access/registryAccessController.js @@ -19,7 +19,7 @@ class DockerRegistryAccessController { this.state.actionInProgress = true; try { await this.EndpointService.updateRegistryAccess(this.state.endpointId, this.state.registryId, this.registryEndpointAccesses); - this.Notifications.success('Access successfully updated'); + this.Notifications.success('Success', 'Access successfully updated'); this.$state.reload(); } catch (err) { this.state.actionInProgress = false; diff --git a/app/docker/views/secrets/create/createSecretController.js b/app/docker/views/secrets/create/createSecretController.js index 98341e338..f0e6138fb 100644 --- a/app/docker/views/secrets/create/createSecretController.js +++ b/app/docker/views/secrets/create/createSecretController.js @@ -89,7 +89,7 @@ angular.module('portainer.docker').controller('CreateSecretController', [ return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl); }) .then(function success() { - Notifications.success('Secret successfully created'); + Notifications.success('Success', 'Secret successfully created'); $state.go('docker.secrets', {}, { reload: true }); }) .catch(function error(err) { diff --git a/app/docker/views/secrets/edit/secretController.js b/app/docker/views/secrets/edit/secretController.js index a28b873b0..9d7c701ab 100644 --- a/app/docker/views/secrets/edit/secretController.js +++ b/app/docker/views/secrets/edit/secretController.js @@ -16,7 +16,7 @@ angular.module('portainer.docker').controller('SecretController', [ $scope.removeSecret = function removeSecret(secretId) { SecretService.remove(secretId) .then(function success() { - Notifications.success('Secret successfully removed'); + Notifications.success('Success', 'Secret successfully removed'); $state.go('docker.secrets', {}); }) .catch(function error(err) { diff --git a/app/docker/views/services/create/createServiceController.js b/app/docker/views/services/create/createServiceController.js index 80ebe6ac4..82fea76ca 100644 --- a/app/docker/views/services/create/createServiceController.js +++ b/app/docker/views/services/create/createServiceController.js @@ -537,7 +537,7 @@ angular.module('portainer.docker').controller('CreateServiceController', [ return $q.all([rcPromise, webhookPromise]); }) .then(function success() { - Notifications.success('Service successfully created'); + Notifications.success('Success', 'Service successfully created'); $state.go('docker.services', {}, { reload: true }); }) .catch(function error(err) { diff --git a/app/docker/views/services/edit/serviceController.js b/app/docker/views/services/edit/serviceController.js index 48f5c70ee..157f6839c 100644 --- a/app/docker/views/services/edit/serviceController.js +++ b/app/docker/views/services/edit/serviceController.js @@ -609,7 +609,7 @@ angular.module('portainer.docker').controller('ServiceController', [ return $q.when($scope.webhookID && WebhookService.deleteWebhook($scope.webhookID)); }) .then(function success() { - Notifications.success('Service successfully deleted'); + Notifications.success('Success', 'Service successfully deleted'); $state.go('docker.services', {}); }) .catch(function error(err) { diff --git a/app/docker/views/volumes/create/createVolumeController.js b/app/docker/views/volumes/create/createVolumeController.js index e208324c8..7d23b30c7 100644 --- a/app/docker/views/volumes/create/createVolumeController.js +++ b/app/docker/views/volumes/create/createVolumeController.js @@ -133,7 +133,7 @@ angular.module('portainer.docker').controller('CreateVolumeController', [ return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl); }) .then(function success() { - Notifications.success('Volume successfully created'); + Notifications.success('Success', 'Volume successfully created'); $state.go('docker.volumes', {}, { reload: true }); }) .catch(function error(err) { diff --git a/app/edge/EdgeDevices/WaitingRoomView/Datatable/Datatable.tsx b/app/edge/EdgeDevices/WaitingRoomView/Datatable/Datatable.tsx index 90cbb15ab..a1c17823b 100644 --- a/app/edge/EdgeDevices/WaitingRoomView/Datatable/Datatable.tsx +++ b/app/edge/EdgeDevices/WaitingRoomView/Datatable/Datatable.tsx @@ -204,7 +204,7 @@ export function DataTable({ devices.map((d) => d.Id), { onSuccess() { - notifySuccess('Edge devices associated successfully'); + notifySuccess('Success', 'Edge devices associated successfully'); }, } ); diff --git a/app/edge/views/edge-groups/createEdgeGroupView/createEdgeGroupViewController.js b/app/edge/views/edge-groups/createEdgeGroupView/createEdgeGroupViewController.js index 89d2951e0..a1172b836 100644 --- a/app/edge/views/edge-groups/createEdgeGroupView/createEdgeGroupViewController.js +++ b/app/edge/views/edge-groups/createEdgeGroupView/createEdgeGroupViewController.js @@ -39,7 +39,7 @@ export class CreateEdgeGroupController { this.state.actionInProgress = true; try { await this.EdgeGroupService.create(this.model); - this.Notifications.success('Edge group successfully created'); + this.Notifications.success('Success', 'Edge group successfully created'); this.$state.go('edge.groups'); } catch (err) { this.Notifications.error('Failure', err, 'Unable to create edge group'); diff --git a/app/edge/views/edge-groups/editEdgeGroupView/editEdgeGroupViewController.js b/app/edge/views/edge-groups/editEdgeGroupView/editEdgeGroupViewController.js index 0a0868a9b..feb06b2c2 100644 --- a/app/edge/views/edge-groups/editEdgeGroupView/editEdgeGroupViewController.js +++ b/app/edge/views/edge-groups/editEdgeGroupView/editEdgeGroupViewController.js @@ -36,7 +36,7 @@ export class EditEdgeGroupController { this.state.actionInProgress = true; try { await this.EdgeGroupService.update(this.model); - this.Notifications.success('Edge group successfully updated'); + this.Notifications.success('Success', 'Edge group successfully updated'); this.$state.go('edge.groups'); } catch (err) { this.Notifications.error('Failure', err, 'Unable to update edge group'); diff --git a/app/edge/views/edge-jobs/createEdgeJobView/createEdgeJobViewController.js b/app/edge/views/edge-jobs/createEdgeJobView/createEdgeJobViewController.js index 3244e8d09..1cf440206 100644 --- a/app/edge/views/edge-jobs/createEdgeJobView/createEdgeJobViewController.js +++ b/app/edge/views/edge-jobs/createEdgeJobView/createEdgeJobViewController.js @@ -39,7 +39,7 @@ export class CreateEdgeJobViewController { try { await this.createEdgeJob(method, this.model); - this.Notifications.success('Edge job successfully created'); + this.Notifications.success('Success', 'Edge job successfully created'); this.state.isEditorDirty = false; this.$state.go('edge.jobs', {}, { reload: true }); } catch (err) { diff --git a/app/edge/views/edge-jobs/edgeJob/edgeJobController.js b/app/edge/views/edge-jobs/edgeJob/edgeJobController.js index 51dbb5a18..1251e41ad 100644 --- a/app/edge/views/edge-jobs/edgeJob/edgeJobController.js +++ b/app/edge/views/edge-jobs/edgeJob/edgeJobController.js @@ -45,7 +45,7 @@ export class EdgeJobController { try { await this.EdgeJobService.updateEdgeJob(model); - this.Notifications.success('Edge job successfully updated'); + this.Notifications.success('Success', 'Edge job successfully updated'); this.state.isEditorDirty = false; this.$state.go('edge.jobs', {}, { reload: true }); } catch (err) { diff --git a/app/edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.controller.js b/app/edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.controller.js index 2804df020..e404f9f4f 100644 --- a/app/edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.controller.js +++ b/app/edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.controller.js @@ -107,7 +107,7 @@ export default class CreateEdgeStackViewController { try { await this.createStackByMethod(name, method); - this.Notifications.success('Stack successfully deployed'); + this.Notifications.success('Success', 'Stack successfully deployed'); this.state.isEditorDirty = false; this.$state.go('edge.stacks'); } catch (err) { diff --git a/app/edge/views/edge-stacks/editEdgeStackView/editEdgeStackViewController.js b/app/edge/views/edge-stacks/editEdgeStackView/editEdgeStackViewController.js index cbbb08cc2..6b37d69d8 100644 --- a/app/edge/views/edge-stacks/editEdgeStackView/editEdgeStackViewController.js +++ b/app/edge/views/edge-stacks/editEdgeStackView/editEdgeStackViewController.js @@ -83,7 +83,7 @@ export class EditEdgeStackViewController { this.formValues.Version = this.stack.Version + 1; } await this.EdgeStackService.updateStack(this.stack.Id, this.formValues); - this.Notifications.success('Stack successfully deployed'); + this.Notifications.success('Success', 'Stack successfully deployed'); this.state.isEditorDirty = false; this.$state.go('edge.stacks'); } catch (err) { diff --git a/app/kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.controller.js b/app/kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.controller.js index f8c762a87..373bfda48 100644 --- a/app/kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.controller.js +++ b/app/kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.controller.js @@ -19,7 +19,7 @@ export default class HelmAddRepositoryController { this.state.isAddingRepo = true; try { await this.HelmService.addHelmRepository(this.endpoint.Id, { url: this.state.repository }); - this.Notifications.success('Helm repository added successfully'); + this.Notifications.success('Success', 'Helm repository added successfully'); this.$state.reload(this.$state.current); } catch (err) { this.Notifications.error('Installation error', err); diff --git a/app/kubernetes/components/helm/helm-templates/helm-templates.controller.js b/app/kubernetes/components/helm/helm-templates/helm-templates.controller.js index 9558b596e..e9c896a17 100644 --- a/app/kubernetes/components/helm/helm-templates/helm-templates.controller.js +++ b/app/kubernetes/components/helm/helm-templates/helm-templates.controller.js @@ -58,7 +58,7 @@ export default class HelmTemplatesController { Namespace: this.state.resourcePool.Namespace.Name, }; await this.HelmService.install(this.endpoint.Id, payload); - this.Notifications.success('Helm Chart successfully installed'); + this.Notifications.success('Success', 'Helm Chart successfully installed'); this.$analytics.eventTrack('kubernetes-helm-install', { category: 'kubernetes', metadata: { 'chart-name': this.state.chart.name } }); this.state.isEditorDirty = false; this.$state.go('kubernetes.applications'); diff --git a/app/kubernetes/custom-templates/kube-create-custom-template-view/kube-create-custom-template-view.controller.js b/app/kubernetes/custom-templates/kube-create-custom-template-view/kube-create-custom-template-view.controller.js index a966ff8cc..2a32a3e76 100644 --- a/app/kubernetes/custom-templates/kube-create-custom-template-view/kube-create-custom-template-view.controller.js +++ b/app/kubernetes/custom-templates/kube-create-custom-template-view/kube-create-custom-template-view.controller.js @@ -109,7 +109,7 @@ class KubeCreateCustomTemplateViewController { const userId = userDetails.ID; await this.ResourceControlService.applyResourceControl(userId, accessControlData, customTemplate.ResourceControl); - this.Notifications.success('Custom template successfully created'); + this.Notifications.success('Success', 'Custom template successfully created'); this.state.isEditorDirty = false; this.$state.go('kubernetes.templates.custom'); } catch (err) { diff --git a/app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.controller.js b/app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.controller.js index 7f7dfeca1..bc260d811 100644 --- a/app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.controller.js +++ b/app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.controller.js @@ -121,7 +121,7 @@ class KubeEditCustomTemplateViewController { const userId = userDetails.ID; await this.ResourceControlService.applyResourceControl(userId, this.formValues.AccessControlData, this.formValues.ResourceControl); - this.Notifications.success('Custom template successfully updated'); + this.Notifications.success('Success', 'Custom template successfully updated'); this.state.isEditorDirty = false; this.$state.go('kubernetes.templates.custom'); } catch (err) { diff --git a/app/kubernetes/views/applications/create/createApplicationController.js b/app/kubernetes/views/applications/create/createApplicationController.js index 911ceb561..8a818289a 100644 --- a/app/kubernetes/views/applications/create/createApplicationController.js +++ b/app/kubernetes/views/applications/create/createApplicationController.js @@ -1019,7 +1019,7 @@ class KubernetesCreateApplicationController { try { this.state.actionInProgress = true; await this.KubernetesApplicationService.patch(this.savedFormValues, this.formValues); - this.Notifications.success('Application successfully updated'); + this.Notifications.success('Success', 'Application successfully updated'); this.$state.go('kubernetes.applications.application', { name: this.application.Name, namespace: this.application.ResourcePool }); } catch (err) { this.Notifications.error('Failure', err, 'Unable to update application'); diff --git a/app/kubernetes/views/applications/edit/applicationController.js b/app/kubernetes/views/applications/edit/applicationController.js index 9d2c8b78f..3adfe7398 100644 --- a/app/kubernetes/views/applications/edit/applicationController.js +++ b/app/kubernetes/views/applications/edit/applicationController.js @@ -213,7 +213,7 @@ class KubernetesApplicationController { // await this.KubernetesApplicationService.rollback(this.application, this.formValues.SelectedRevision); const revision = _.nth(this.application.Revisions, -2); await this.KubernetesApplicationService.rollback(this.application, revision); - this.Notifications.success('Application successfully rolled back'); + this.Notifications.success('Success', 'Application successfully rolled back'); this.$state.reload(this.$state.current); } catch (err) { this.Notifications.error('Failure', err, 'Unable to rollback the application'); @@ -234,7 +234,7 @@ class KubernetesApplicationController { try { const promises = _.map(this.application.Pods, (item) => this.KubernetesPodService.delete(item)); await Promise.all(promises); - this.Notifications.success('Application successfully redeployed'); + this.Notifications.success('Success', 'Application successfully redeployed'); this.$state.reload(this.$state.current); } catch (err) { this.Notifications.error('Failure', err, 'Unable to redeploy the application'); @@ -257,7 +257,7 @@ class KubernetesApplicationController { const application = angular.copy(this.application); application.Note = this.formValues.Note; await this.KubernetesApplicationService.patch(this.application, application, true); - this.Notifications.success('Application successfully updated'); + this.Notifications.success('Success', 'Application successfully updated'); this.$state.reload(this.$state.current); } catch (err) { this.Notifications.error('Failure', err, 'Unable to update application'); diff --git a/app/kubernetes/views/cluster/node/nodeController.js b/app/kubernetes/views/cluster/node/nodeController.js index 176be97e9..c0edb64a8 100644 --- a/app/kubernetes/views/cluster/node/nodeController.js +++ b/app/kubernetes/views/cluster/node/nodeController.js @@ -252,7 +252,7 @@ class KubernetesNodeController { if (this.formValues.Availability === 'Drain') { await this.drainNode(); } - this.Notifications.success('Node updated successfully'); + this.Notifications.success('Success', 'Node updated successfully'); this.$state.reload(this.$state.current); } catch (err) { this.Notifications.error('Failure', err, 'Unable to update node'); diff --git a/app/kubernetes/views/configurations/create/createConfigurationController.js b/app/kubernetes/views/configurations/create/createConfigurationController.js index 89aeadc90..e834ded25 100644 --- a/app/kubernetes/views/configurations/create/createConfigurationController.js +++ b/app/kubernetes/views/configurations/create/createConfigurationController.js @@ -48,7 +48,7 @@ class KubernetesCreateConfigurationController { this.formValues.Data = KubernetesConfigurationHelper.parseYaml(this.formValues); } await this.KubernetesConfigurationService.create(this.formValues); - this.Notifications.success('Configuration succesfully created'); + this.Notifications.success('Success', 'Configuration succesfully created'); this.state.isEditorDirty = false; this.$state.go('kubernetes.configurations'); } catch (err) { diff --git a/app/kubernetes/views/configurations/edit/configurationController.js b/app/kubernetes/views/configurations/edit/configurationController.js index 9c8f5615f..3a8fdc0aa 100644 --- a/app/kubernetes/views/configurations/edit/configurationController.js +++ b/app/kubernetes/views/configurations/edit/configurationController.js @@ -95,7 +95,7 @@ class KubernetesConfigurationController { ) { await this.KubernetesConfigurationService.create(this.formValues); await this.KubernetesConfigurationService.delete(this.configuration); - this.Notifications.success('Configuration succesfully updated'); + this.Notifications.success('Success', 'Configuration succesfully updated'); this.$state.go( 'kubernetes.configurations.configuration', { @@ -106,7 +106,7 @@ class KubernetesConfigurationController { ); } else { await this.KubernetesConfigurationService.update(this.formValues, this.configuration); - this.Notifications.success('Configuration succesfully updated'); + this.Notifications.success('Success', 'Configuration succesfully updated'); this.$state.reload(this.$state.current); } } catch (err) { diff --git a/app/kubernetes/views/configure/configureController.js b/app/kubernetes/views/configure/configureController.js index 6630de3e7..6f644a6bf 100644 --- a/app/kubernetes/views/configure/configureController.js +++ b/app/kubernetes/views/configure/configureController.js @@ -227,7 +227,7 @@ class KubernetesConfigureController { this.assignFormValuesToEndpoint(modifiedEndpoint, storageClasses, ingressClasses); this.EndpointProvider.setEndpoints(endpoints); } - this.Notifications.success('Configuration successfully applied'); + this.Notifications.success('Success', 'Configuration successfully applied'); this.$state.go('portainer.home'); } catch (err) { this.Notifications.error('Failure', err, 'Unable to apply configuration'); diff --git a/app/kubernetes/views/deploy/deployController.js b/app/kubernetes/views/deploy/deployController.js index 876572243..cbb106f80 100644 --- a/app/kubernetes/views/deploy/deployController.js +++ b/app/kubernetes/views/deploy/deployController.js @@ -280,7 +280,7 @@ class KubernetesDeployController { await this.StackService.kubernetesDeploy(this.endpoint.Id, method, payload); - this.Notifications.success('Manifest successfully deployed'); + this.Notifications.success('Success', 'Manifest successfully deployed'); this.state.isEditorDirty = false; this.$state.go('kubernetes.applications'); } catch (err) { diff --git a/app/kubernetes/views/resource-pools/access/resourcePoolAccessController.js b/app/kubernetes/views/resource-pools/access/resourcePoolAccessController.js index 284e0097b..8c95ef139 100644 --- a/app/kubernetes/views/resource-pools/access/resourcePoolAccessController.js +++ b/app/kubernetes/views/resource-pools/access/resourcePoolAccessController.js @@ -93,7 +93,7 @@ class KubernetesResourcePoolAccessController { const newAccesses = _.concat(this.authorizedUsersAndTeams, this.formValues.multiselectOutput); const accessConfigMap = KubernetesConfigMapHelper.modifiyNamespaceAccesses(angular.copy(this.accessConfigMap), this.pool.Namespace.Name, newAccesses); await this.KubernetesConfigMapService.updateAccess(accessConfigMap); - this.Notifications.success('Access successfully created'); + this.Notifications.success('Success', 'Access successfully created'); this.$state.reload(this.$state.current); } catch (err) { this.Notifications.error('Failure', err, 'Unable to create accesses'); @@ -113,7 +113,7 @@ class KubernetesResourcePoolAccessController { const newAccesses = _.without(this.authorizedUsersAndTeams, ...selectedItems); const accessConfigMap = KubernetesConfigMapHelper.modifiyNamespaceAccesses(angular.copy(this.accessConfigMap), this.pool.Namespace.Name, newAccesses); await this.KubernetesConfigMapService.updateAccess(accessConfigMap); - this.Notifications.success('Access successfully removed'); + this.Notifications.success('Success', 'Access successfully removed'); this.$state.reload(this.$state.current); } catch (err) { this.Notifications.error('Failure', err, 'Unable to remove accesses'); diff --git a/app/kubernetes/views/volumes/edit/volumeController.js b/app/kubernetes/views/volumes/edit/volumeController.js index 09803bb5c..72864b107 100644 --- a/app/kubernetes/views/volumes/edit/volumeController.js +++ b/app/kubernetes/views/volumes/edit/volumeController.js @@ -84,7 +84,7 @@ class KubernetesVolumeController { try { this.volume.PersistentVolumeClaim.Storage = this.state.volumeSize + this.state.volumeSizeUnit.charAt(0); await this.KubernetesPersistentVolumeClaimService.patch(this.oldVolume.PersistentVolumeClaim, this.volume.PersistentVolumeClaim); - this.Notifications.success('Volume successfully updated'); + this.Notifications.success('Success', 'Volume successfully updated'); if (redeploy) { const promises = _.flatten( @@ -93,7 +93,7 @@ class KubernetesVolumeController { }) ); await Promise.all(promises); - this.Notifications.success('Applications successfully redeployed'); + this.Notifications.success('Success', 'Applications successfully redeployed'); } this.$state.reload(this.$state.current); diff --git a/app/portainer/access-control/AccessControlPanel/AccessControlPanelForm.tsx b/app/portainer/access-control/AccessControlPanel/AccessControlPanelForm.tsx index 8e5e6a700..6365b29b1 100644 --- a/app/portainer/access-control/AccessControlPanel/AccessControlPanelForm.tsx +++ b/app/portainer/access-control/AccessControlPanel/AccessControlPanelForm.tsx @@ -117,7 +117,7 @@ export function AccessControlPanelForm({ updateAccess.mutate(accessControl, { onSuccess() { - notifySuccess('Access control successfully updated'); + notifySuccess('Success', 'Access control successfully updated'); }, }); } diff --git a/app/portainer/components/forms/kubernetes-app-git-form/kubernetes-app-git-form.controller.js b/app/portainer/components/forms/kubernetes-app-git-form/kubernetes-app-git-form.controller.js index adc81e5b9..ed76cc16c 100644 --- a/app/portainer/components/forms/kubernetes-app-git-form/kubernetes-app-git-form.controller.js +++ b/app/portainer/components/forms/kubernetes-app-git-form/kubernetes-app-git-form.controller.js @@ -54,7 +54,7 @@ class KubernetesAppGitFormController { } this.state.redeployInProgress = true; await this.StackService.updateKubeGit(this.stack.Id, this.stack.EndpointId, this.namespace, this.formValues); - this.Notifications.success('Pulled and redeployed stack successfully'); + this.Notifications.success('Success', 'Pulled and redeployed stack successfully'); await this.$state.reload(this.$state.current); } catch (err) { this.Notifications.error('Failure', err, 'Failed redeploying application'); @@ -69,7 +69,7 @@ class KubernetesAppGitFormController { try { this.state.saveGitSettingsInProgress = true; await this.StackService.updateKubeStack({ EndpointId: this.stack.EndpointId, Id: this.stack.Id }, null, this.formValues); - this.Notifications.success('Save stack settings successfully'); + this.Notifications.success('Success', 'Save stack settings successfully'); } catch (err) { this.Notifications.error('Failure', err, 'Unable to save application settings'); } finally { diff --git a/app/portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.controller.js b/app/portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.controller.js index 34f2f1fce..f1ccc10fb 100644 --- a/app/portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.controller.js +++ b/app/portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.controller.js @@ -95,7 +95,7 @@ class KubernetesRedeployAppGitFormController { } this.state.redeployInProgress = true; await this.StackService.updateKubeGit(this.stack.Id, this.stack.EndpointId, this.namespace, this.formValues); - this.Notifications.success('Pulled and redeployed stack successfully'); + this.Notifications.success('Success', 'Pulled and redeployed stack successfully'); await this.$state.reload(); } catch (err) { this.Notifications.error('Failure', err, 'Failed redeploying application'); @@ -112,7 +112,7 @@ class KubernetesRedeployAppGitFormController { await this.StackService.updateKubeStack({ EndpointId: this.stack.EndpointId, Id: this.stack.Id }, null, this.formValues); this.savedFormValues = angular.copy(this.formValues); this.state.hasUnsavedChanges = false; - this.Notifications.success('Save stack settings successfully'); + this.Notifications.success('Success', 'Save stack settings successfully'); } catch (err) { this.Notifications.error('Failure', err, 'Unable to save application settings'); } finally { diff --git a/app/portainer/components/forms/stack-redeploy-git-form/stack-redeploy-git-form.controller.js b/app/portainer/components/forms/stack-redeploy-git-form/stack-redeploy-git-form.controller.js index 7f0fb059c..8b5108524 100644 --- a/app/portainer/components/forms/stack-redeploy-git-form/stack-redeploy-git-form.controller.js +++ b/app/portainer/components/forms/stack-redeploy-git-form/stack-redeploy-git-form.controller.js @@ -121,7 +121,7 @@ class StackRedeployGitFormController { this.formValues.Option.Prune, this.formValues ); - this.Notifications.success('Pulled and redeployed stack successfully'); + this.Notifications.success('Success', 'Pulled and redeployed stack successfully'); this.$state.reload(); } catch (err) { this.Notifications.error('Failure', err, 'Failed redeploying stack'); @@ -143,7 +143,7 @@ class StackRedeployGitFormController { ); this.savedFormValues = angular.copy(this.formValues); this.state.hasUnsavedChanges = false; - this.Notifications.success('Save stack settings successfully'); + this.Notifications.success('Success', 'Save stack settings successfully'); this.stack = stack; } catch (err) { diff --git a/app/portainer/services/notifications.ts b/app/portainer/services/notifications.ts index f8241b9cb..cadbae501 100644 --- a/app/portainer/services/notifications.ts +++ b/app/portainer/services/notifications.ts @@ -7,10 +7,25 @@ toastr.options = { closeButton: true, progressBar: true, tapToDismiss: false, + // custom button, using the feather icon x.svg inside + closeHtml: ``, }; -export function notifySuccess(title: string, text?: string) { - toastr.success(sanitize(_.escape(text)), sanitize(title)); +export function notifySuccess(title: string, text: string) { + toastr.success(sanitize(_.escape(text)), sanitize(_.escape(title))); } export function notifyWarning(title: string, text: string) { diff --git a/app/portainer/settings/edge-compute/AutomaticEdgeEnvCreation/AutoEnvCreationSettingsForm.tsx b/app/portainer/settings/edge-compute/AutomaticEdgeEnvCreation/AutoEnvCreationSettingsForm.tsx index 22f442006..f41579dc6 100644 --- a/app/portainer/settings/edge-compute/AutomaticEdgeEnvCreation/AutoEnvCreationSettingsForm.tsx +++ b/app/portainer/settings/edge-compute/AutomaticEdgeEnvCreation/AutoEnvCreationSettingsForm.tsx @@ -64,6 +64,7 @@ export function AutoEnvCreationSettingsForm({ settings }: Props) { updateSettings(variables, { onSuccess() { notifySuccess( + 'Success', 'Successfully updated Automatic Environment Creation settings' ); }, diff --git a/app/portainer/views/account/accountController.js b/app/portainer/views/account/accountController.js index f56c4e212..d57920a2d 100644 --- a/app/portainer/views/account/accountController.js +++ b/app/portainer/views/account/accountController.js @@ -77,7 +77,7 @@ angular.module('portainer.app').controller('AccountController', [ selectedTokens.forEach((token) => { UserService.deleteAccessToken($scope.userID, token.id) .then(() => { - Notifications.success('Token successfully removed'); + Notifications.success('Success', 'Token successfully removed'); var index = $scope.tokens.indexOf(token); $scope.tokens.splice(index, 1); }) diff --git a/app/portainer/views/custom-templates/create-custom-template-view/createCustomTemplateViewController.js b/app/portainer/views/custom-templates/create-custom-template-view/createCustomTemplateViewController.js index 97b5aca90..b70e42911 100644 --- a/app/portainer/views/custom-templates/create-custom-template-view/createCustomTemplateViewController.js +++ b/app/portainer/views/custom-templates/create-custom-template-view/createCustomTemplateViewController.js @@ -111,7 +111,7 @@ class CreateCustomTemplateViewController { const userId = userDetails.ID; await this.ResourceControlService.applyResourceControl(userId, accessControlData, customTemplate.ResourceControl); - this.Notifications.success('Custom template successfully created'); + this.Notifications.success('Success', 'Custom template successfully created'); this.state.isEditorDirty = false; this.$state.go('docker.templates.custom'); } catch (err) { diff --git a/app/portainer/views/custom-templates/custom-templates-view/customTemplatesViewController.js b/app/portainer/views/custom-templates/custom-templates-view/customTemplatesViewController.js index 560f00fd1..61076380b 100644 --- a/app/portainer/views/custom-templates/custom-templates-view/customTemplatesViewController.js +++ b/app/portainer/views/custom-templates/custom-templates-view/customTemplatesViewController.js @@ -107,7 +107,7 @@ class CustomTemplatesViewController { for (let template of templates) { try { await this.CustomTemplateService.remove(template.id); - this.Notifications.success('Removed template successfully'); + this.Notifications.success('Success', 'Removed template successfully'); _.remove(this.templates, template); } catch (err) { this.Notifications.error('Failed removing template', err, 'Unable to remove custom template'); @@ -169,7 +169,7 @@ class CustomTemplatesViewController { const createAction = this.state.selectedTemplate.Type === 1 ? this.StackService.createSwarmStackFromFileContent : this.StackService.createComposeStackFromFileContent; const { ResourceControl: resourceControl } = await createAction(stackName, file, [], endpointId); await this.ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl); - this.Notifications.success('Stack successfully deployed'); + this.Notifications.success('Success', 'Stack successfully deployed'); this.$state.go('docker.stacks'); } catch (err) { this.Notifications.error('Deployment error', err, 'Failed to deploy stack'); diff --git a/app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateViewController.js b/app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateViewController.js index 5cf31592d..d217f03dc 100644 --- a/app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateViewController.js +++ b/app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateViewController.js @@ -110,7 +110,7 @@ class EditCustomTemplateViewController { const userId = userDetails.ID; await this.ResourceControlService.applyResourceControl(userId, this.formValues.AccessControlData, this.formValues.ResourceControl); - this.Notifications.success('Custom template successfully updated'); + this.Notifications.success('Success', 'Custom template successfully updated'); this.state.isEditorDirty = false; this.$state.go('docker.templates.custom'); } catch (err) { diff --git a/app/portainer/views/devices/import/importDeviceController.js b/app/portainer/views/devices/import/importDeviceController.js index 7b597e005..bc526bd1e 100644 --- a/app/portainer/views/devices/import/importDeviceController.js +++ b/app/portainer/views/devices/import/importDeviceController.js @@ -110,7 +110,7 @@ angular } } - Notifications.success('Device(s) successfully imported'); + Notifications.success('Success', 'Device(s) successfully imported'); $state.go('edge.devices'); }); }; diff --git a/app/portainer/views/devices/profiles/add/addProfileController.js b/app/portainer/views/devices/profiles/add/addProfileController.js index c9450aa18..84e4c6ac9 100644 --- a/app/portainer/views/devices/profiles/add/addProfileController.js +++ b/app/portainer/views/devices/profiles/add/addProfileController.js @@ -44,7 +44,7 @@ export default function AddProfileController($scope, $async, $state, $window, Mo try { await createProfile(name, method, fileContent); - Notifications.success('Profile successfully created'); + Notifications.success('Success', 'Profile successfully created'); $scope.state.isEditorDirty = false; $state.go('portainer.settings.edgeCompute'); } catch (err) { diff --git a/app/portainer/views/devices/profiles/edit/editProfileController.js b/app/portainer/views/devices/profiles/edit/editProfileController.js index 67ba9fd85..695e0c21a 100644 --- a/app/portainer/views/devices/profiles/edit/editProfileController.js +++ b/app/portainer/views/devices/profiles/edit/editProfileController.js @@ -44,7 +44,7 @@ export default function EditProfileController($scope, $async, $state, $window, M try { await updateProfile($scope.state.profileID, name, fileContent); - Notifications.success('Profile successfully updated'); + Notifications.success('Success', 'Profile successfully updated'); $scope.state.isEditorDirty = false; $state.go('portainer.settings.edgeCompute'); } catch (err) { diff --git a/app/portainer/views/endpoints/access/endpointAccessController.js b/app/portainer/views/endpoints/access/endpointAccessController.js index 561c2193b..190291c62 100644 --- a/app/portainer/views/endpoints/access/endpointAccessController.js +++ b/app/portainer/views/endpoints/access/endpointAccessController.js @@ -36,7 +36,7 @@ class EndpointAccessController { try { this.state.actionInProgress = true; await this.EndpointService.updateEndpoint(this.$transition$.params().id, this.endpoint); - this.Notifications.success('Access successfully updated'); + this.Notifications.success('Success', 'Access successfully updated'); this.$state.reload(this.$state.current); } catch (err) { this.state.actionInProgress = false; diff --git a/app/portainer/views/groups/access/groupAccessController.js b/app/portainer/views/groups/access/groupAccessController.js index 630d8a3c4..c4169480c 100644 --- a/app/portainer/views/groups/access/groupAccessController.js +++ b/app/portainer/views/groups/access/groupAccessController.js @@ -13,7 +13,7 @@ angular.module('portainer.app').controller('GroupAccessController', [ $scope.state.actionInProgress = true; GroupService.updateGroup($scope.group, $scope.group.AssociatedEndpoints) .then(() => { - Notifications.success('Access successfully updated'); + Notifications.success('Success', 'Access successfully updated'); $state.reload(); }) .catch((err) => { diff --git a/app/portainer/views/groups/create/createGroupController.js b/app/portainer/views/groups/create/createGroupController.js index 881e24a8f..3299a6c52 100644 --- a/app/portainer/views/groups/create/createGroupController.js +++ b/app/portainer/views/groups/create/createGroupController.js @@ -17,7 +17,7 @@ angular.module('portainer.app').controller('CreateGroupController', function Cre $scope.state.actionInProgress = true; GroupService.createGroup(model, associatedEndpoints) .then(function success() { - Notifications.success('Group successfully created'); + Notifications.success('Success', 'Group successfully created'); $state.go('portainer.groups', {}, { reload: true }); }) .catch(function error(err) { diff --git a/app/portainer/views/groups/edit/groupController.js b/app/portainer/views/groups/edit/groupController.js index 571f78e9f..c67b4501f 100644 --- a/app/portainer/views/groups/edit/groupController.js +++ b/app/portainer/views/groups/edit/groupController.js @@ -9,7 +9,7 @@ angular.module('portainer.app').controller('GroupController', function GroupCont $scope.state.actionInProgress = true; GroupService.updateGroup(model) .then(function success() { - Notifications.success('Group successfully updated'); + Notifications.success('Success', 'Group successfully updated'); $state.go('portainer.groups', {}, { reload: true }); }) .catch(function error(err) { diff --git a/app/portainer/views/init/admin/initAdminController.js b/app/portainer/views/init/admin/initAdminController.js index f7c05c184..a2940115a 100644 --- a/app/portainer/views/init/admin/initAdminController.js +++ b/app/portainer/views/init/admin/initAdminController.js @@ -123,7 +123,7 @@ angular.module('portainer.app').controller('InitAdminController', [ try { await waitPortainerRestart(); - Notifications.success('The backup has successfully been restored'); + Notifications.success('Success', 'The backup has successfully been restored'); $state.go('portainer.auth'); } catch (err) { handleError(err); diff --git a/app/portainer/views/registries/create/createRegistryController.js b/app/portainer/views/registries/create/createRegistryController.js index 7cabca532..dfab3640c 100644 --- a/app/portainer/views/registries/create/createRegistryController.js +++ b/app/portainer/views/registries/create/createRegistryController.js @@ -126,7 +126,7 @@ class CreateRegistryController { try { this.state.actionInProgress = true; await this.RegistryService.createGitlabRegistries(this.model, this.state.gitlab.selectedItems); - this.Notifications.success('Registries successfully created'); + this.Notifications.success('Success', 'Registries successfully created'); this.$state.go(this.state.originViewReference, { endpointId: this.state.originalEndpointId }); } catch (err) { this.Notifications.error('Failure', err, 'Unable to create registries'); @@ -140,7 +140,7 @@ class CreateRegistryController { try { this.state.actionInProgress = true; await this.RegistryService.createRegistry(this.model); - this.Notifications.success('Registry successfully created'); + this.Notifications.success('Success', 'Registry successfully created'); this.$state.go(this.state.originViewReference, { endpointId: this.state.originalEndpointId }); } catch (err) { this.Notifications.error('Failure', err, 'Unable to create registry'); diff --git a/app/portainer/views/registries/edit/registryController.js b/app/portainer/views/registries/edit/registryController.js index a4b1408fa..97e3129ab 100644 --- a/app/portainer/views/registries/edit/registryController.js +++ b/app/portainer/views/registries/edit/registryController.js @@ -54,7 +54,7 @@ export default class RegistryController { registry.Password = this.Password; await this.RegistryService.updateRegistry(registry); - this.Notifications.success('Registry successfully updated'); + this.Notifications.success('Success', 'Registry successfully updated'); this.$state.go('portainer.registries'); } catch (err) { this.Notifications.error('Failure', err, 'Unable to update registry'); diff --git a/app/portainer/views/settings/authentication/settingsAuthenticationController.js b/app/portainer/views/settings/authentication/settingsAuthenticationController.js index dc6297fc6..440e710dc 100644 --- a/app/portainer/views/settings/authentication/settingsAuthenticationController.js +++ b/app/portainer/views/settings/authentication/settingsAuthenticationController.js @@ -109,7 +109,7 @@ function SettingsAuthenticationController($q, $scope, $state, Notifications, Set .then(function success() { $scope.state.failedConnectivityCheck = false; $scope.state.successfulConnectivityCheck = true; - Notifications.success('Connection to LDAP successful'); + Notifications.success('Success', 'Connection to LDAP successful'); }) .catch(function error(err) { $scope.state.failedConnectivityCheck = true; @@ -136,7 +136,7 @@ function SettingsAuthenticationController($q, $scope, $state, Notifications, Set return SettingsService.update(settings); }) .then(function success() { - Notifications.success('Authentication settings updated'); + Notifications.success('Success', 'Authentication settings updated'); }) .catch(function error(err) { Notifications.error('Failure', err, 'Unable to update authentication settings'); diff --git a/app/portainer/views/settings/edge-compute/settingsEdgeComputeController.js b/app/portainer/views/settings/edge-compute/settingsEdgeComputeController.js index 7b7375c74..e4bc1cdc4 100644 --- a/app/portainer/views/settings/edge-compute/settingsEdgeComputeController.js +++ b/app/portainer/views/settings/edge-compute/settingsEdgeComputeController.js @@ -12,7 +12,7 @@ export default function SettingsEdgeComputeController($q, $async, $state, Notifi this.onSubmitEdgeCompute = async function (settings) { try { await SettingsService.update(settings); - Notifications.success('Settings updated'); + Notifications.success('Success', 'Settings updated'); StateManager.updateEnableEdgeComputeFeatures(settings.EnableEdgeComputeFeatures); $state.reload(); } catch (err) { @@ -23,7 +23,7 @@ export default function SettingsEdgeComputeController($q, $async, $state, Notifi this.onSubmitOpenAMT = async function (formValues) { try { await configureAMT(formValues); - Notifications.success(`OpenAMT successfully ${formValues.enabled ? 'enabled' : 'disabled'}`); + Notifications.success('Success', `OpenAMT successfully ${formValues.enabled ? 'enabled' : 'disabled'}`); $state.reload(); } catch (err) { Notifications.error('Failure', err, 'Failed applying changes'); @@ -33,7 +33,7 @@ export default function SettingsEdgeComputeController($q, $async, $state, Notifi this.onSubmitFDO = async function (formValues) { try { await configureFDO(formValues); - Notifications.success(`FDO successfully ${formValues.enabled ? 'enabled' : 'disabled'}`); + Notifications.success('Success', `FDO successfully ${formValues.enabled ? 'enabled' : 'disabled'}`); $state.reload(); } catch (err) { Notifications.error('Failure', err, 'Failed applying changes'); diff --git a/app/portainer/views/settings/settingsController.js b/app/portainer/views/settings/settingsController.js index 13ee6a71c..9fb7c35e9 100644 --- a/app/portainer/views/settings/settingsController.js +++ b/app/portainer/views/settings/settingsController.js @@ -112,7 +112,7 @@ angular.module('portainer.app').controller('SettingsController', [ .then(function success(data) { const downloadData = new Blob([data.file], { type: 'application/gzip' }); FileSaver.saveAs(downloadData, data.name); - Notifications.success('Backup successfully downloaded'); + Notifications.success('Success', 'Backup successfully downloaded'); }) .catch(function error(err) { Notifications.error('Failure', err, 'Unable to download backup'); @@ -138,7 +138,7 @@ angular.module('portainer.app').controller('SettingsController', [ function updateSettings(settings) { SettingsService.update(settings) .then(function success() { - Notifications.success('Settings updated'); + Notifications.success('Success', 'Settings updated'); StateManager.updateLogo(settings.LogoURL); StateManager.updateSnapshotInterval(settings.SnapshotInterval); StateManager.updateEnableTelemetry(settings.EnableTelemetry); diff --git a/app/portainer/views/stacks/create/createStackController.js b/app/portainer/views/stacks/create/createStackController.js index 29042eeb3..c62d193a8 100644 --- a/app/portainer/views/stacks/create/createStackController.js +++ b/app/portainer/views/stacks/create/createStackController.js @@ -264,7 +264,7 @@ angular return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl); }) .then(function success() { - Notifications.success('Stack successfully deployed'); + Notifications.success('Success', 'Stack successfully deployed'); $scope.state.isEditorDirty = false; $state.go('docker.stacks'); }) diff --git a/app/portainer/views/stacks/edit/stackController.js b/app/portainer/views/stacks/edit/stackController.js index f1658af29..7dd2e0e9c 100644 --- a/app/portainer/views/stacks/edit/stackController.js +++ b/app/portainer/views/stacks/edit/stackController.js @@ -115,7 +115,7 @@ angular.module('portainer.app').controller('StackController', [ return StackService.duplicateStack(name, $scope.stackFileContent, env, targetEndpointId, stack.Type).then(onDuplicationSuccess).catch(notifyOnError); function onDuplicationSuccess() { - Notifications.success('Stack successfully duplicated'); + Notifications.success('Success', 'Stack successfully duplicated'); $state.go('docker.stacks', {}, { reload: true }); // sets back the original endpointID as global for interceptors EndpointProvider.setEndpointID(stack.EndpointId); @@ -266,7 +266,7 @@ angular.module('portainer.app').controller('StackController', [ $scope.state.actionInProgress = true; StackService.updateStack(stack, stackFile, env, prune) .then(function success() { - Notifications.success('Stack successfully deployed'); + Notifications.success('Success', 'Stack successfully deployed'); $scope.state.isEditorDirty = false; $state.reload(); }) diff --git a/app/portainer/views/teams/edit/teamController.js b/app/portainer/views/teams/edit/teamController.js index 22c707940..1a2b5b52d 100644 --- a/app/portainer/views/teams/edit/teamController.js +++ b/app/portainer/views/teams/edit/teamController.js @@ -92,7 +92,7 @@ angular.module('portainer.app').controller('TeamController', [ } $scope.teamMembers = $scope.teamMembers.concat(users); $scope.users = []; - Notifications.success('All users successfully added'); + Notifications.success('Success', 'All users successfully added'); }) .catch(function error(err) { Notifications.error('Failure', err, 'Unable to update team members'); @@ -123,7 +123,7 @@ angular.module('portainer.app').controller('TeamController', [ $scope.users = $scope.users.concat($scope.teamMembers); $scope.teamMembers = []; $scope.leaderCount = 0; - Notifications.success('All users successfully removed'); + Notifications.success('Success', 'All users successfully removed'); }) .catch(function error(err) { Notifications.error('Failure', err, 'Unable to update team members'); diff --git a/app/portainer/views/templates/templatesController.js b/app/portainer/views/templates/templatesController.js index ce3456117..7f9b2a680 100644 --- a/app/portainer/views/templates/templatesController.js +++ b/app/portainer/views/templates/templatesController.js @@ -117,7 +117,7 @@ angular.module('portainer.app').controller('TemplatesController', [ return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl, generatedVolumeIds); }) .then(function success() { - Notifications.success('Container successfully created'); + Notifications.success('Success', 'Container successfully created'); $state.go('docker.containers', {}, { reload: true }); }) .catch(function error(err) { @@ -151,7 +151,7 @@ angular.module('portainer.app').controller('TemplatesController', [ return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl); }) .then(function success() { - Notifications.success('Stack successfully deployed'); + Notifications.success('Success', 'Stack successfully deployed'); $state.go('docker.stacks'); }) .catch(function error(err) { @@ -190,7 +190,7 @@ angular.module('portainer.app').controller('TemplatesController', [ return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl); }) .then(function success() { - Notifications.success('Stack successfully deployed'); + Notifications.success('Success', 'Stack successfully deployed'); $state.go('docker.stacks'); }) .catch(function error(err) { diff --git a/app/portainer/views/users/edit/userController.js b/app/portainer/views/users/edit/userController.js index 4d122a5cb..9ad024c64 100644 --- a/app/portainer/views/users/edit/userController.js +++ b/app/portainer/views/users/edit/userController.js @@ -61,7 +61,7 @@ angular.module('portainer.app').controller('UserController', [ } UserService.updateUser($scope.user.Id, { role, username }) .then(function success() { - Notifications.success('User successfully updated'); + Notifications.success('Success', 'User successfully updated'); $state.reload(); }) .catch(function error(err) { @@ -77,7 +77,7 @@ angular.module('portainer.app').controller('UserController', [ } UserService.updateUser($scope.user.Id, { password: $scope.formValues.newPassword }) .then(function success() { - Notifications.success('Password successfully updated'); + Notifications.success('Success', 'Password successfully updated'); if (isCurrentUser) { $state.go('portainer.logout'); diff --git a/app/react/azure/container-instances/ListView/ListView.tsx b/app/react/azure/container-instances/ListView/ListView.tsx index 3b0c01361..8fbe4e4cf 100644 --- a/app/react/azure/container-instances/ListView/ListView.tsx +++ b/app/react/azure/container-instances/ListView/ListView.tsx @@ -90,7 +90,7 @@ function useRemoveMutation(environmentId: EnvironmentId) { async function handleRemove(groupIds: string[]) { deleteMutation.mutate(groupIds, { onSuccess: () => { - notifySuccess('Container groups successfully removed'); + notifySuccess('Success', 'Container groups successfully removed'); }, }); }