Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-12-20 01:53:19 +0300
committerKamil Trzcinski <ayufan@ayufan.eu>2016-12-20 01:56:21 +0300
commit34295036e2a9ecf18ca5440a5dd6dbb0c7f05643 (patch)
treea529cbc332882305520c7650cbe860301e12abb8 /app/controllers/projects/mattermosts_controller.rb
parent921f411a41d92ff6b3fdea2560adbd861d97be57 (diff)
Improve sources
- Add proper error handling, - Use flash[:alert] and flash[:notice], - Use `resource` instead of `resources`,
Diffstat (limited to 'app/controllers/projects/mattermosts_controller.rb')
-rw-r--r--app/controllers/projects/mattermosts_controller.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/app/controllers/projects/mattermosts_controller.rb b/app/controllers/projects/mattermosts_controller.rb
new file mode 100644
index 00000000000..c6b39add7ad
--- /dev/null
+++ b/app/controllers/projects/mattermosts_controller.rb
@@ -0,0 +1,41 @@
+class Projects::MattermostsController < Projects::ApplicationController
+ include TriggersHelper
+ include ActionView::Helpers::AssetUrlHelper
+
+ layout 'project_settings'
+
+ before_action :authorize_admin_project!
+ before_action :service
+ before_action :teams, only: [:new]
+
+ def new
+ end
+
+ def create
+ @service.configure!(current_user, configure_params)
+
+ flash[:notice] = 'This service is now configured'
+ redirect_to edit_namespace_project_service_path(@project.namespace, @project, service)
+ rescue => e
+ flash[:alert] = e.message
+ redirect_to new_namespace_project_mattermost_path(@project.namespace, @project)
+ end
+
+ private
+
+ def configure_params
+ params.require(:mattermost).permit(:trigger, :team_id).merge(
+ url: service_trigger_url(@service),
+ icon_url: asset_url('gitlab_logo.png'))
+ end
+
+ def teams
+ @teams ||= @service.list_teams(current_user)
+ rescue => e
+ flash[:alert] = e.message
+ end
+
+ def service
+ @service ||= @project.find_or_initialize_service('mattermost_slash_commands')
+ end
+end