From 52f2191a2568165a419b0e13310fedb92f565024 Mon Sep 17 00:00:00 2001 From: Artemiy Solopov Date: Wed, 22 Apr 2026 00:06:47 +0300 Subject: [PATCH] Added turbo frame --- app/helpers/project_admin_helper.rb | 17 +++++++++++--- app/views/project_admin/_frame.html.slim | 3 ++- .../project_admin/workflows/edit.html.slim | 7 ++---- .../project_admin/workflows/show.html.slim | 7 +++++- .../workflows/statuses/edit.html.slim | 23 ++++++++++--------- 5 files changed, 36 insertions(+), 21 deletions(-) diff --git a/app/helpers/project_admin_helper.rb b/app/helpers/project_admin_helper.rb index d3f385c..58ac73b 100644 --- a/app/helpers/project_admin_helper.rb +++ b/app/helpers/project_admin_helper.rb @@ -11,13 +11,24 @@ module ProjectAdminHelper } title = "Project #{project.name}" - admin_frame(links, title:, &) + admin_frame(links, title:, back_path: project_path(project), &) end - def admin_frame(links, title:, &) + 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) + } + 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:, content: } + render partial: 'project_admin/frame', locals: { + id: FRAME_ID, tabs:, tabs_id: TABS_ID, title:, back_path:, content: + } end end diff --git a/app/views/project_admin/_frame.html.slim b/app/views/project_admin/_frame.html.slim index 81337f8..0f88b3f 100644 --- a/app/views/project_admin/_frame.html.slim +++ b/app/views/project_admin/_frame.html.slim @@ -2,7 +2,8 @@ h1 span> Project span= @project.name -= link_to '← Back', project_path(@project) +- if back_path + = link_to '← Back', back_path = render tabs diff --git a/app/views/project_admin/workflows/edit.html.slim b/app/views/project_admin/workflows/edit.html.slim index 80e3c3c..d40a32c 100644 --- a/app/views/project_admin/workflows/edit.html.slim +++ b/app/views/project_admin/workflows/edit.html.slim @@ -1,5 +1,2 @@ -h1 - | Editing workflow - =< @workflow.name - -= render 'form', url: project_admin_workflow_path(@project, @workflow) += project_admin_workflow_frame(@workflow) do + = render 'form', url: project_admin_workflow_path(@project, @workflow) diff --git a/app/views/project_admin/workflows/show.html.slim b/app/views/project_admin/workflows/show.html.slim index 9c165ac..2a36a88 100644 --- a/app/views/project_admin/workflows/show.html.slim +++ b/app/views/project_admin/workflows/show.html.slim @@ -1,7 +1,12 @@ h1 | Workflow -= workflow_display @workflow, full: true, badge: true +.row + = workflow_display @workflow, full: true, badge: true + .links + = link_to 'Edit', edit_project_admin_workflow_path(@project, @workflow) + +h2 Statuses ul - @workflow.task_statuses.each do |status| diff --git a/app/views/project_admin/workflows/statuses/edit.html.slim b/app/views/project_admin/workflows/statuses/edit.html.slim index c61ddee..a2df883 100644 --- a/app/views/project_admin/workflows/statuses/edit.html.slim +++ b/app/views/project_admin/workflows/statuses/edit.html.slim @@ -1,14 +1,15 @@ -= form_with model: @form, scope: 'workflow', url: project_admin_workflow_statuses_path(@project, @workflow), method: :put, data: {controller: 'dynamic-forms', 'dynamic-forms-field-name-value': 'task_statuses_attributes', 'dynamic-forms-field-template-value': '_extra_form', 'dynamic-forms-index-template-value': '__index__', 'dynamic-forms-count-value': @form.task_statuses.count} do |f| - section.workflow-statuses-batch-update-fieldsets data-dynamic-forms-target="container" - = f.fields_for :task_statuses, include_id: false do |tsf| - = render 'batch_update_fieldset', ff: tsf, with_destroy: true += project_admin_workflow_frame(@workflow) do + = form_with model: @form, scope: 'workflow', url: project_admin_workflow_statuses_path(@project, @workflow), method: :put, data: {controller: 'dynamic-forms', 'dynamic-forms-field-name-value': 'task_statuses_attributes', 'dynamic-forms-field-template-value': '_extra_form', 'dynamic-forms-index-template-value': '__index__', 'dynamic-forms-count-value': @form.task_statuses.count} do |f| + section.workflow-statuses-batch-update-fieldsets data-dynamic-forms-target="container" + = f.fields_for :task_statuses, include_id: false do |tsf| + = render 'batch_update_fieldset', ff: tsf, with_destroy: true - .buttons - button.success type="button" data-action="dynamic-forms#addForm" Add status + .buttons + button.success type="button" data-action="dynamic-forms#addForm" Add status - = f.fields_for :'_extra_form', index: '__index__' do |exf| - template data-dynamic-forms-target="template" - = render 'batch_update_fieldset', ff: exf + = f.fields_for :'_extra_form', index: '__index__' do |exf| + template data-dynamic-forms-target="template" + = render 'batch_update_fieldset', ff: exf - .submit - = f.submit + .submit + = f.submit