2018-08-18 11:19:57 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-10-12 11:50:47 +00:00
|
|
|
module BoardsHelper
|
2017-08-28 21:56:49 +00:00
|
|
|
def board
|
|
|
|
@board ||= @board || @boards.first
|
|
|
|
end
|
2016-10-12 11:50:47 +00:00
|
|
|
|
2017-08-28 21:56:49 +00:00
|
|
|
def board_data
|
2016-10-12 11:50:47 +00:00
|
|
|
{
|
2017-08-28 21:56:49 +00:00
|
|
|
boards_endpoint: @boards_endpoint,
|
2017-12-03 18:46:07 +00:00
|
|
|
lists_endpoint: board_lists_path(board),
|
2016-10-12 11:50:47 +00:00
|
|
|
board_id: board.id,
|
2019-09-04 16:33:02 +00:00
|
|
|
disabled: (!can?(current_user, :create_non_backlog_issues, board)).to_s,
|
2017-01-31 10:39:44 +00:00
|
|
|
root_path: root_path,
|
2020-03-10 09:08:10 +00:00
|
|
|
full_path: full_path,
|
2017-08-28 21:56:49 +00:00
|
|
|
bulk_update_path: @bulk_issues_path,
|
2020-09-22 03:09:49 +00:00
|
|
|
can_update: (!!can?(current_user, :admin_issue, board)).to_s,
|
2019-06-17 12:58:48 +00:00
|
|
|
time_tracking_limit_to_hours: Gitlab::CurrentSettings.time_tracking_limit_to_hours.to_s,
|
2020-04-30 09:09:39 +00:00
|
|
|
recent_boards_endpoint: recent_boards_path,
|
2020-09-17 09:09:32 +00:00
|
|
|
parent: current_board_parent.model_name.param_key,
|
2020-10-15 18:08:43 +00:00
|
|
|
group_id: @group&.id,
|
|
|
|
labels_filter_base_path: build_issue_link_base,
|
|
|
|
labels_fetch_path: labels_fetch_path,
|
|
|
|
labels_manage_path: labels_manage_path
|
2016-10-12 11:50:47 +00:00
|
|
|
}
|
|
|
|
end
|
2017-08-28 21:56:49 +00:00
|
|
|
|
2020-03-10 09:08:10 +00:00
|
|
|
def full_path
|
|
|
|
if board.group_board?
|
|
|
|
@group.full_path
|
|
|
|
else
|
|
|
|
@project.full_path
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-28 21:56:49 +00:00
|
|
|
def build_issue_link_base
|
2018-02-19 19:06:16 +00:00
|
|
|
if board.group_board?
|
|
|
|
"#{group_path(@board.group)}/:project_path/issues"
|
|
|
|
else
|
|
|
|
project_issues_path(@project)
|
|
|
|
end
|
2017-08-28 21:56:49 +00:00
|
|
|
end
|
|
|
|
|
2020-10-15 18:08:43 +00:00
|
|
|
def labels_fetch_path
|
|
|
|
if board.group_board?
|
|
|
|
group_labels_path(@group, format: :json, only_group_labels: true, include_ancestor_groups: true)
|
|
|
|
else
|
|
|
|
project_labels_path(@project, format: :json, include_ancestor_groups: true)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def labels_manage_path
|
|
|
|
if board.group_board?
|
|
|
|
group_labels_path(@group)
|
|
|
|
else
|
|
|
|
project_labels_path(@project)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-28 21:56:49 +00:00
|
|
|
def board_base_url
|
2018-02-19 19:06:16 +00:00
|
|
|
if board.group_board?
|
|
|
|
group_boards_url(@group)
|
|
|
|
else
|
|
|
|
project_boards_path(@project)
|
|
|
|
end
|
2017-08-28 21:56:49 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def multiple_boards_available?
|
2018-02-19 19:06:16 +00:00
|
|
|
current_board_parent.multiple_issue_boards_available?
|
2017-08-28 21:56:49 +00:00
|
|
|
end
|
|
|
|
|
2017-09-04 21:36:31 +00:00
|
|
|
def current_board_path(board)
|
2018-03-05 14:39:24 +00:00
|
|
|
@current_board_path ||= if board.group_board?
|
|
|
|
group_board_path(current_board_parent, board)
|
|
|
|
else
|
|
|
|
project_board_path(current_board_parent, board)
|
|
|
|
end
|
2017-08-28 21:56:49 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def current_board_parent
|
2018-02-19 19:06:16 +00:00
|
|
|
@current_board_parent ||= @group || @project
|
2017-08-28 21:56:49 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def can_admin_issue?
|
|
|
|
can?(current_user, :admin_issue, current_board_parent)
|
|
|
|
end
|
|
|
|
|
|
|
|
def board_list_data
|
2018-04-04 15:40:29 +00:00
|
|
|
include_descendant_groups = @group&.present?
|
|
|
|
|
2017-08-28 21:56:49 +00:00
|
|
|
{
|
|
|
|
toggle: "dropdown",
|
2018-10-03 10:36:35 +00:00
|
|
|
list_labels_path: labels_filter_path_with_defaults(only_group_labels: true, include_ancestor_groups: true),
|
|
|
|
labels: labels_filter_path_with_defaults(only_group_labels: true, include_descendant_groups: include_descendant_groups),
|
2017-08-28 21:56:49 +00:00
|
|
|
labels_endpoint: @labels_endpoint,
|
|
|
|
namespace_path: @namespace_path,
|
2018-02-19 19:06:16 +00:00
|
|
|
project_path: @project&.path,
|
|
|
|
group_path: @group&.path
|
2017-08-28 21:56:49 +00:00
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
def board_sidebar_user_data
|
2019-04-07 18:35:16 +00:00
|
|
|
dropdown_options = assignees_dropdown_options('issue')
|
2017-08-28 21:56:49 +00:00
|
|
|
|
|
|
|
{
|
|
|
|
toggle: 'dropdown',
|
|
|
|
field_name: 'issue[assignee_ids][]',
|
|
|
|
first_user: current_user&.username,
|
|
|
|
current_user: 'true',
|
2018-02-19 19:06:16 +00:00
|
|
|
project_id: @project&.id,
|
|
|
|
group_id: @group&.id,
|
2017-08-28 21:56:49 +00:00
|
|
|
null_user: 'true',
|
|
|
|
multi_select: 'true',
|
|
|
|
'dropdown-header': dropdown_options[:data][:'dropdown-header'],
|
|
|
|
'max-select': dropdown_options[:data][:'max-select']
|
|
|
|
}
|
|
|
|
end
|
2017-09-13 10:08:48 +00:00
|
|
|
|
|
|
|
def boards_link_text
|
2019-09-23 21:06:29 +00:00
|
|
|
if current_board_parent.multiple_issue_boards_available?
|
2019-06-17 12:58:48 +00:00
|
|
|
s_("IssueBoards|Boards")
|
|
|
|
else
|
|
|
|
s_("IssueBoards|Board")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def recent_boards_path
|
|
|
|
recent_project_boards_path(@project) if current_board_parent.is_a?(Project)
|
|
|
|
end
|
|
|
|
|
2019-07-12 06:31:17 +00:00
|
|
|
def serializer
|
|
|
|
CurrentBoardSerializer.new
|
|
|
|
end
|
|
|
|
|
2019-06-17 12:58:48 +00:00
|
|
|
def current_board_json
|
2019-07-12 06:31:17 +00:00
|
|
|
serializer.represent(board).as_json
|
2017-09-13 10:08:48 +00:00
|
|
|
end
|
2016-10-12 11:50:47 +00:00
|
|
|
end
|
2019-09-13 13:26:31 +00:00
|
|
|
|
|
|
|
BoardsHelper.prepend_if_ee('EE::BoardsHelper')
|