36 lines
1.2 KiB
Ruby
36 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module ProjectAdminHelper
|
|
FRAME_ID = 'admin_frame'
|
|
TABS_ID = 'admin_tabs'
|
|
|
|
def project_admin_frame(project, &)
|
|
links = {
|
|
'Data' => edit_project_path(project),
|
|
'Workflows' => project_admin_workflows_path(project)
|
|
}
|
|
|
|
title = "Project #{project.name}"
|
|
admin_frame(links, title:, back_path: project_path(project), &)
|
|
end
|
|
|
|
def project_admin_workflow_frame(workflow, &)
|
|
links = {
|
|
'Data' => edit_project_admin_workflow_path(workflow.project, workflow),
|
|
'Statuses' => edit_project_admin_workflow_statuses_path(workflow.project, workflow),
|
|
'Transitions' => edit_transitions_project_admin_workflow_statuses_path(workflow.project, workflow)
|
|
}
|
|
title = "Editing workflow #{workflow.name} for project #{workflow.project.name}"
|
|
admin_frame(links, title:, back_path: project_admin_workflow_path(workflow.project, workflow), &)
|
|
end
|
|
|
|
def admin_frame(links, title:, back_path: nil, &)
|
|
tabs = ProjectAdmin::TabsViewModel.new(links, id: TABS_ID, frame: FRAME_ID)
|
|
content = capture(&) if block_given?
|
|
|
|
render partial: 'project_admin/frame', locals: {
|
|
id: FRAME_ID, tabs:, tabs_id: TABS_ID, title:, back_path:, content:
|
|
}
|
|
end
|
|
end
|