diff --git a/app/controllers/groups/settings/integrations_controller.rb b/app/controllers/groups/settings/integrations_controller.rb index 2e12e307e7923eee25885dd0bbb25a16ce29a602..cf73b5658931ecc900fa1b8c10a5010459467cc9 100644 --- a/app/controllers/groups/settings/integrations_controller.rb +++ b/app/controllers/groups/settings/integrations_controller.rb @@ -14,9 +14,65 @@ class IntegrationsController < Groups::ApplicationController def index @integrations = Integration .find_or_initialize_all_non_project_specific(Integration.for_group(group)) - .sort_by { |int| int.title.downcase } + .sort_by { |int| INTEGRATION_POPULARITY_ORDER.index(int.class.to_s) || Float::INFINITY } end + private + + INTEGRATION_POPULARITY_ORDER = [ + 'Integrations::JiraCloudApp', + 'Integrations::Jira', + 'Integrations::GitlabSlackApplication', + 'Integrations::Discord', + 'Integrations::Slack', + 'Integrations::Github', + 'Integrations::MicrosoftTeams', + 'Integrations::Jenkins', + 'Integrations::Telegram', + 'Integrations::PipelinesEmail', + 'Integrations::EmailsOnPush', + 'Integrations::Confluence', + 'Integrations::GoogleCloudPlatform::WorkloadIdentityFederation', + 'Integrations::HangoutsChat', + 'Integrations::Datadog', + 'Integrations::GoogleCloudPlatform::ArtifactRegistry', + 'Integrations::Youtrack', + 'Integrations::Prometheus', + 'Integrations::Clickup', + 'Integrations::ExternalWiki', + 'Integrations::Linear', + 'Integrations::Asana', + 'Integrations::Mattermost', + 'Integrations::CustomIssueTracker', + 'Integrations::AppleAppStore', + 'Integrations::Packagist', + 'Integrations::Harbor', + 'Integrations::GooglePlay', + 'Integrations::Redmine', + 'Integrations::Buildkite', + 'Integrations::SlackSlashCommands', + 'Integrations::Matrix', + 'Integrations::GitGuardian', + 'Integrations::Pushover', + 'Integrations::Assembla', + 'Integrations::Teamcity', + 'Integrations::Bamboo', + 'Integrations::WebexTeams', + 'Integrations::DroneCi', + 'Integrations::MattermostSlashCommands', + 'Integrations::Bugzilla', + 'Integrations::SquashTm', + 'Integrations::Pumble', + 'Integrations::DiffblueCover', + 'Integrations::Ewm', + 'Integrations::Campfire', + 'Integrations::Pivotaltracker', + 'Integrations::Phorge', + 'Integrations::UnifyCircuit', + 'Integrations::Irker', + 'Integrations::Zentao' + ].freeze + def edit @default_integration = Integration.default_integration(integration.type, group) diff --git a/app/controllers/projects/settings/integrations_controller.rb b/app/controllers/projects/settings/integrations_controller.rb index f4642f892fc83d8d64ee08ded8176e2b6322e37b..ddc70c5982cd11111fd3811cabca3b7cdb51a2d6 100644 --- a/app/controllers/projects/settings/integrations_controller.rb +++ b/app/controllers/projects/settings/integrations_controller.rb @@ -26,8 +26,65 @@ class IntegrationsController < Projects::ApplicationController def index @integrations = @project.find_or_initialize_integrations + .sort_by { |int| INTEGRATION_POPULARITY_ORDER.index(int.class.to_s) || Float::INFINITY } end + private + + INTEGRATION_POPULARITY_ORDER = [ + 'Integrations::JiraCloudApp', + 'Integrations::Jira', + 'Integrations::GitlabSlackApplication', + 'Integrations::Discord', + 'Integrations::Slack', + 'Integrations::Github', + 'Integrations::MicrosoftTeams', + 'Integrations::Jenkins', + 'Integrations::Telegram', + 'Integrations::PipelinesEmail', + 'Integrations::EmailsOnPush', + 'Integrations::Confluence', + 'Integrations::GoogleCloudPlatform::WorkloadIdentityFederation', + 'Integrations::HangoutsChat', + 'Integrations::Datadog', + 'Integrations::GoogleCloudPlatform::ArtifactRegistry', + 'Integrations::Youtrack', + 'Integrations::Prometheus', + 'Integrations::Clickup', + 'Integrations::ExternalWiki', + 'Integrations::Linear', + 'Integrations::Asana', + 'Integrations::Mattermost', + 'Integrations::CustomIssueTracker', + 'Integrations::AppleAppStore', + 'Integrations::Packagist', + 'Integrations::Harbor', + 'Integrations::GooglePlay', + 'Integrations::Redmine', + 'Integrations::Buildkite', + 'Integrations::SlackSlashCommands', + 'Integrations::Matrix', + 'Integrations::GitGuardian', + 'Integrations::Pushover', + 'Integrations::Assembla', + 'Integrations::Teamcity', + 'Integrations::Bamboo', + 'Integrations::WebexTeams', + 'Integrations::DroneCi', + 'Integrations::MattermostSlashCommands', + 'Integrations::Bugzilla', + 'Integrations::SquashTm', + 'Integrations::Pumble', + 'Integrations::DiffblueCover', + 'Integrations::Ewm', + 'Integrations::Campfire', + 'Integrations::Pivotaltracker', + 'Integrations::Phorge', + 'Integrations::UnifyCircuit', + 'Integrations::Irker', + 'Integrations::Zentao' + ].freeze + def edit; end def update