gitlab-org--gitlab-foss/app/helpers/boards_helper.rb

131 lines
3.3 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
module BoardsHelper
2017-08-28 21:56:49 +00:00
def board
@board ||= @board || @boards.first
end
2017-08-28 21:56:49 +00:00
def board_data
{
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),
board_id: board.id,
disabled: (!can?(current_user, :create_non_backlog_issues, board)).to_s,
root_path: root_path,
full_path: full_path,
2017-08-28 21:56:49 +00:00
bulk_update_path: @bulk_issues_path,
can_update: (!!can?(current_user, :admin_issue, board)).to_s,
time_tracking_limit_to_hours: Gitlab::CurrentSettings.time_tracking_limit_to_hours.to_s,
recent_boards_endpoint: recent_boards_path,
parent: current_board_parent.model_name.param_key,
group_id: group_id,
labels_filter_base_path: build_issue_link_base,
labels_fetch_path: labels_fetch_path,
labels_manage_path: labels_manage_path,
board_type: board.to_type
}
end
2017-08-28 21:56:49 +00:00
def group_id
return @group.id if board.group_board?
@project&.group&.id
end
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
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
include_descendant_groups = @group&.present?
2017-08-28 21:56:49 +00:00
{
toggle: "dropdown",
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
2017-09-13 10:08:48 +00:00
def boards_link_text
if current_board_parent.multiple_issue_boards_available?
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
def serializer
CurrentBoardSerializer.new
end
def current_board_json
serializer.represent(board).as_json
2017-09-13 10:08:48 +00:00
end
end
BoardsHelper.prepend_if_ee('EE::BoardsHelper')