From e82e86223702d1ffcdef8c601d37de9e4a91554a Mon Sep 17 00:00:00 2001 From: James Smith Date: Wed, 14 Oct 2026 16:26:02 +0100 Subject: [PATCH] Create :edit file handler and move form into plaintext form view component --- app/components/editors/plaintext_form.rb | 23 +++++++++++++++++++++ app/controllers/model_files_controller.rb | 3 ++- app/lib/file_handlers.rb | 1 + app/lib/file_handlers/plaintext_form.rb | 11 ++++++++++ app/views/model_files/edit_content.html.erb | 8 +------ 5 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 app/components/editors/plaintext_form.rb create mode 100644 app/lib/file_handlers/plaintext_form.rb diff --git a/app/components/editors/plaintext_form.rb b/app/components/editors/plaintext_form.rb new file mode 100644 index 000000000..6860bd374 --- /dev/null +++ b/app/components/editors/plaintext_form.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class Components::Editors::PlaintextForm < Components::Base + include Phlex::Rails::Helpers::FormTag + include Phlex::Rails::Helpers::TextAreaTag + include Phlex::Rails::Helpers::SubmitTag + + def initialize(file:) + @file = file + end + + def view_template + form_tag model_model_file_raw_path(@file.model, @file.filename), method: :put, class: "container-md" do + div class: "mb-3" do + text_area_tag :body, @file.attachment.read, class: "form-control", rows: "20" + end + + div class: "form-save-button" do + submit_tag + end + end + end +end diff --git a/app/controllers/model_files_controller.rb b/app/controllers/model_files_controller.rb index b98fc2cd8..50c605bc4 100644 --- a/app/controllers/model_files_controller.rb +++ b/app/controllers/model_files_controller.rb @@ -110,7 +110,8 @@ class ModelFilesController < ApplicationController end def edit_content - raise ActionController::BadRequest unless @file.mime_type.to_sym.in? [:html, :text, :js, :md] + @editor = FileHandlers.handlers_for(environment: :edit, mime_type: @file.mime_type).first + raise ActionController::BadRequest unless @editor end def extract diff --git a/app/lib/file_handlers.rb b/app/lib/file_handlers.rb index ab9d5bcd5..32f5240ea 100644 --- a/app/lib/file_handlers.rb +++ b/app/lib/file_handlers.rb @@ -2,6 +2,7 @@ module FileHandlers # i18n-tasks-use t("file_handlers.environments.browser") # i18n-tasks-use t("file_handlers.environments.client") # i18n-tasks-use t("file_handlers.environments.preview_frame") + # i18n-tasks-use t("file_handlers.environments.edit") # i18n-tasks-use t("file_handlers.environments.convert") # i18n-tasks-use t("file_handlers.environments.thumbnail") diff --git a/app/lib/file_handlers/plaintext_form.rb b/app/lib/file_handlers/plaintext_form.rb new file mode 100644 index 000000000..ed22a63fe --- /dev/null +++ b/app/lib/file_handlers/plaintext_form.rb @@ -0,0 +1,11 @@ +class FileHandlers::PlaintextForm < FileHandlers::Base + # i18n-tasks-use t("file_handlers.handlers.plaintext_form") + + ENVIRONMENTS = [:edit].freeze + + INPUT_TYPES = Mime::EXTENSION_LOOKUP.slice("html", "js", "txt", "md").values.freeze + + def self.component + Components::Editors::PlaintextForm + end +end diff --git a/app/views/model_files/edit_content.html.erb b/app/views/model_files/edit_content.html.erb index 231b18bdb..b217e618d 100644 --- a/app/views/model_files/edit_content.html.erb +++ b/app/views/model_files/edit_content.html.erb @@ -4,10 +4,4 @@ @file.name => model_model_file_path(@file.model, @file) } %> -<%= form_tag model_model_file_raw_path(@file.model, @file.filename), method: :put, class: "container-md" do %> - <%= text_area_tag :body, @file.attachment.read, class: "form-control", rows: "20" %> - -
- <%= submit_tag %> -
-<% end %> +<%= render @editor.component.new(file: @file) %>