Commit 99d8d6f0 authored by Z.J. van de Weg's avatar Z.J. van de Weg

Add MattermostController

parent 87d16063
class Projects::MattermostController < Projects::ApplicationController
layout 'project_settings'
before_action :authorize_admin_project!
before_action :service
before_action :teams, only: [:new]
def new
end
def configure
@service.configure(host, current_user, params)
redirect_to(
new_namespace_project_service_path(@project.namespace, @project, @service.to_param),
notice: 'This service is now configured.'
)
rescue Mattermost::NoSessionError
redirect_to(
edit_namespace_project_service_path(@project.namespace, @project, @service.to_param),
alert: 'No session could be set up, is Mattermost configured with Single Sign on?'
)
end
private
def configure_params
params.require(:configure_params).permit(:trigger, :team_id)
end
def service
@service ||= @project.services.find_by(type: 'MattermostSlashCommandsService')
end
def teams
# Mocking for frontend development
@teams = [{"id"=>"qz8gdr1fopncueb8n9on8ohk3h", "create_at"=>1479992105904, "update_at"=>1479992105904, "delete_at"=>0, "display_name"=>"chatops", "name"=>"chatops", "email"=>"admin@example.com", "type"=>"O", "company_name"=>"", "allowed_domains"=>"", "invite_id"=>"gthxi47gj7rxtcx6zama63zd1w", "allow_open_invite"=>false}]
# @teams =
# begin
# Mattermost::Mattermost.new(Gitlab.config.mattermost.host, current_user).with_session do
# Mattermost::Team.all
# end
# rescue Mattermost::NoSessionError
# @teams = []
# end
end
end
= "hello world"
= form_for(:create, method: :post, url: configure_namespace_project_mattermost_path(@project.namespace, @project, @service.to_param)) do |f|
= "Team ID"
= f.text_field(:team_id)
= f.submit 'Configure', class: 'btn btn-save'
- pretty_path_with_namespace = "#{@project ? @project.namespace.name : 'namespace'} / #{@project ? @project.name : 'name'}" - pretty_path_with_namespace = "#{@project ? @project.namespace.name : 'namespace'} / #{@project ? @project.name : 'name'}"
- run_actions_text = "Perform common operations on this project: #{pretty_path_with_namespace}" - run_actions_text = "Perform common operations on this project: #{pretty_path_with_namespace}"
- unless GitLab.config.mattermost.enabled .well
.well This service allows GitLab users to perform common operations on this
This service allows GitLab users to perform common operations on this project by entering slash commands in Mattermost.
project by entering slash commands in Mattermost. %br
%br See list of available commands in Mattermost after setting up this service,
See list of available commands in Mattermost after setting up this service, by entering
by entering %code /&lt;command_trigger_word&gt; help
%code /&lt;command_trigger_word&gt; help %br
%br %br
%br To setup this service:
To setup this service: %ul.list-unstyled
%ul.list-unstyled %li
%li 1.
1. = link_to 'Enable custom slash commands', 'https://docs.mattermost.com/developer/slash-commands.html#enabling-custom-commands'
= link_to 'Enable custom slash commands', 'https://docs.mattermost.com/developer/slash-commands.html#enabling-custom-commands' on your Mattermost installation
on your Mattermost installation %li
%li 2.
2. = link_to 'Add a slash command', 'https://docs.mattermost.com/developer/slash-commands.html#set-up-a-custom-command'
= link_to 'Add a slash command', 'https://docs.mattermost.com/developer/slash-commands.html#set-up-a-custom-command' in Mattermost with these options:
in Mattermost with these options:
%hr
%hr
.help-form
.help-form .form-group
.form-group = label_tag :display_name, 'Display name', class: 'col-sm-2 col-xs-12 control-label'
= label_tag :display_name, 'Display name', class: 'col-sm-2 col-xs-12 control-label' .col-sm-10.col-xs-12.input-group
.col-sm-10.col-xs-12.input-group = text_field_tag :display_name, "GitLab / #{pretty_path_with_namespace}", class: 'form-control input-sm', readonly: 'readonly'
= text_field_tag :display_name, "GitLab / #{pretty_path_with_namespace}", class: 'form-control input-sm', readonly: 'readonly' .input-group-btn
.input-group-btn = clipboard_button(clipboard_target: '#display_name')
= clipboard_button(clipboard_target: '#display_name')
.form-group
.form-group = label_tag :description, 'Description', class: 'col-sm-2 col-xs-12 control-label'
= label_tag :description, 'Description', class: 'col-sm-2 col-xs-12 control-label' .col-sm-10.col-xs-12.input-group
.col-sm-10.col-xs-12.input-group = text_field_tag :description, run_actions_text, class: 'form-control input-sm', readonly: 'readonly'
= text_field_tag :description, run_actions_text, class: 'form-control input-sm', readonly: 'readonly' .input-group-btn
.input-group-btn = clipboard_button(clipboard_target: '#description')
= clipboard_button(clipboard_target: '#description')
.form-group
.form-group = label_tag nil, 'Command trigger word', class: 'col-sm-2 col-xs-12 control-label'
= label_tag nil, 'Command trigger word', class: 'col-sm-2 col-xs-12 control-label' .col-sm-10.col-xs-12.text-block
.col-sm-10.col-xs-12.text-block %p Fill in the word that works best for your team.
%p Fill in the word that works best for your team. %p
%p Suggestions:
Suggestions: %code= 'gitlab'
%code= 'gitlab' %code= @project.path # Path contains no spaces, but dashes
%code= @project.path # Path contains no spaces, but dashes %code= @project.path_with_namespace
%code= @project.path_with_namespace
.form-group
.form-group = label_tag :request_url, 'Request URL', class: 'col-sm-2 col-xs-12 control-label'
= label_tag :request_url, 'Request URL', class: 'col-sm-2 col-xs-12 control-label' .col-sm-10.col-xs-12.input-group
.col-sm-10.col-xs-12.input-group = text_field_tag :request_url, service_trigger_url(subject), class: 'form-control input-sm', readonly: 'readonly'
= text_field_tag :request_url, service_trigger_url(subject), class: 'form-control input-sm', readonly: 'readonly' .input-group-btn
.input-group-btn = clipboard_button(clipboard_target: '#request_url')
= clipboard_button(clipboard_target: '#request_url')
.form-group
.form-group = label_tag nil, 'Request method', class: 'col-sm-2 col-xs-12 control-label'
= label_tag nil, 'Request method', class: 'col-sm-2 col-xs-12 control-label' .col-sm-10.col-xs-12.text-block POST
.col-sm-10.col-xs-12.text-block POST
.form-group
.form-group = label_tag :response_username, 'Response username', class: 'col-sm-2 col-xs-12 control-label'
= label_tag :response_username, 'Response username', class: 'col-sm-2 col-xs-12 control-label' .col-sm-10.col-xs-12.input-group
.col-sm-10.col-xs-12.input-group = text_field_tag :response_username, 'GitLab', class: 'form-control input-sm', readonly: 'readonly'
= text_field_tag :response_username, 'GitLab', class: 'form-control input-sm', readonly: 'readonly' .input-group-btn
.input-group-btn = clipboard_button(clipboard_target: '#response_username')
= clipboard_button(clipboard_target: '#response_username')
.form-group
.form-group = label_tag :response_icon, 'Response icon', class: 'col-sm-2 col-xs-12 control-label'
= label_tag :response_icon, 'Response icon', class: 'col-sm-2 col-xs-12 control-label' .col-sm-10.col-xs-12.input-group
.col-sm-10.col-xs-12.input-group = text_field_tag :response_icon, asset_url('gitlab_logo.png'), class: 'form-control input-sm', readonly: 'readonly'
= text_field_tag :response_icon, asset_url('gitlab_logo.png'), class: 'form-control input-sm', readonly: 'readonly' .input-group-btn
.input-group-btn = clipboard_button(clipboard_target: '#response_icon')
= clipboard_button(clipboard_target: '#response_icon')
.form-group
.form-group = label_tag nil, 'Autocomplete', class: 'col-sm-2 col-xs-12 control-label'
= label_tag nil, 'Autocomplete', class: 'col-sm-2 col-xs-12 control-label' .col-sm-10.col-xs-12.text-block Yes
.col-sm-10.col-xs-12.text-block Yes
.form-group
.form-group = label_tag :autocomplete_hint, 'Autocomplete hint', class: 'col-sm-2 col-xs-12 control-label'
= label_tag :autocomplete_hint, 'Autocomplete hint', class: 'col-sm-2 col-xs-12 control-label' .col-sm-10.col-xs-12.input-group
.col-sm-10.col-xs-12.input-group = text_field_tag :autocomplete_hint, '[help]', class: 'form-control input-sm', readonly: 'readonly'
= text_field_tag :autocomplete_hint, '[help]', class: 'form-control input-sm', readonly: 'readonly' .input-group-btn
.input-group-btn = clipboard_button(clipboard_target: '#autocomplete_hint')
= clipboard_button(clipboard_target: '#autocomplete_hint')
.form-group
.form-group = label_tag :autocomplete_description, 'Autocomplete description', class: 'col-sm-2 col-xs-12 control-label'
= label_tag :autocomplete_description, 'Autocomplete description', class: 'col-sm-2 col-xs-12 control-label' .col-sm-10.col-xs-12.input-group
.col-sm-10.col-xs-12.input-group = text_field_tag :autocomplete_description, run_actions_text, class: 'form-control input-sm', readonly: 'readonly'
= text_field_tag :autocomplete_description, run_actions_text, class: 'form-control input-sm', readonly: 'readonly' .input-group-btn
.input-group-btn = clipboard_button(clipboard_target: '#autocomplete_description')
= clipboard_button(clipboard_target: '#autocomplete_description')
%hr
%hr
%ul.list-unstyled
%ul.list-unstyled %li
%li 3. After adding the slash command, paste the
3. After adding the slash command, paste the %strong token
%strong token into the field below
into the field below
- if Gitlab.config.mattermost.enabled
= link_to "Auto config", new_namespace_project_mattermost_path(@project.namespace, @project)
...@@ -65,6 +65,12 @@ constraints(ProjectUrlConstrainer.new) do ...@@ -65,6 +65,12 @@ constraints(ProjectUrlConstrainer.new) do
end end
end end
resources :mattermost, only: [:new] do
member do
post :configure
end
end
resources :deploy_keys, constraints: { id: /\d+/ }, only: [:index, :new, :create] do resources :deploy_keys, constraints: { id: /\d+/ }, only: [:index, :new, :create] do
member do member do
put :enable put :enable
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment