diff --git a/app/controllers/api/flows_controller.rb b/app/controllers/api/flows_controller.rb deleted file mode 100644 index 7c5fc163..00000000 --- a/app/controllers/api/flows_controller.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true - -module Api - class FlowsController < ApiBaseController - def update - @flow = current_account.flows.find(params[:id]) - - @flow.update!(flow_params) - - render :ok - end - - private - - def flow_params - params.require(:flow).permit(:name, - schema: [%i[attachment_uuid name]], - fields: [[:uuid, :name, :type, :required, - { options: [], areas: [%i[x y w h attachment_uuid page]] }]]) - end - end -end diff --git a/app/controllers/api/templates_controller.rb b/app/controllers/api/templates_controller.rb new file mode 100644 index 00000000..2c165b34 --- /dev/null +++ b/app/controllers/api/templates_controller.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module Api + class TemplatesController < ApiBaseController + def update + @template = current_account.templates.find(params[:id]) + + @template.update!(template_params) + + render :ok + end + + private + + def template_params + params.require(:template).permit(:name, + schema: [%i[attachment_uuid name]], + fields: [[:uuid, :name, :type, :required, + { options: [], areas: [%i[x y w h attachment_uuid page]] }]]) + end + end +end diff --git a/app/controllers/api/flows_documents_controller.rb b/app/controllers/api/templates_documents_controller.rb similarity index 68% rename from app/controllers/api/flows_documents_controller.rb rename to app/controllers/api/templates_documents_controller.rb index d215c804..f39b6102 100644 --- a/app/controllers/api/flows_documents_controller.rb +++ b/app/controllers/api/templates_documents_controller.rb @@ -1,17 +1,17 @@ # frozen_string_literal: true module Api - class FlowsDocumentsController < ApiBaseController + class TemplatesDocumentsController < ApiBaseController def create - @flow = current_account.flows.find(params[:flow_id]) + @template = current_account.templates.find(params[:template_id]) documents = params[:blobs].map do |blob| blob = ActiveStorage::Blob.find_signed(blob[:signed_id]) - document = @flow.documents.create!(blob:) + document = @template.documents.create!(blob:) - Flows::ProcessDocument.call(document) + Templates::ProcessDocument.call(document) end schema = documents.map do |doc| diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index bb1e826a..4f64d1d8 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -2,6 +2,6 @@ class DashboardController < ApplicationController def index - @flows = current_account.flows.active + @templates = current_account.templates.active end end diff --git a/app/controllers/flows_controller.rb b/app/controllers/flows_controller.rb deleted file mode 100644 index 8b0309d5..00000000 --- a/app/controllers/flows_controller.rb +++ /dev/null @@ -1,38 +0,0 @@ -# frozen_string_literal: true - -class FlowsController < ApplicationController - layout false - - def show - @flow = current_account.flows.preload(documents_attachments: { preview_images_attachments: :blob }) - .find(params[:id]) - end - - def new - @flow = current_account.flows.new - end - - def create - @flow = current_account.flows.new(flow_params) - @flow.author = current_user - - if @flow.save - redirect_to flow_path(@flow) - else - render turbo_stream: turbo_stream.replace(:modal, template: 'flows/new'), status: :unprocessable_entity - end - end - - def destroy - @flow = current_account.flows.find(params[:id]) - @flow.update!(deleted_at: Time.current) - - redirect_to settings_users_path, notice: 'Flow has been archived.' - end - - private - - def flow_params - params.require(:flow).permit(:name, :schema) - end -end diff --git a/app/controllers/send_submission_email_controller.rb b/app/controllers/send_submission_email_controller.rb index 0a88bf62..66bc97fa 100644 --- a/app/controllers/send_submission_email_controller.rb +++ b/app/controllers/send_submission_email_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class SendSubmissionEmailController < ApplicationController - layout 'flow' + layout 'form' skip_before_action :authenticate_user! skip_before_action :verify_authenticity_token @@ -10,8 +10,8 @@ class SendSubmissionEmailController < ApplicationController def create @submission = - if params[:flow_slug] - Submission.joins(:flow).find_by!(email: params[:email], flow: { slug: params[:flow_slug] }) + if params[:template_slug] + Submission.joins(:template).find_by!(email: params[:email], template: { slug: params[:template_slug] }) else Submission.find_by!(slug: params[:submission_slug]) end diff --git a/app/controllers/start_flow_controller.rb b/app/controllers/start_form_controller.rb similarity index 50% rename from app/controllers/start_flow_controller.rb rename to app/controllers/start_form_controller.rb index e4481892..bf4021dc 100644 --- a/app/controllers/start_flow_controller.rb +++ b/app/controllers/start_form_controller.rb @@ -1,23 +1,23 @@ # frozen_string_literal: true -class StartFlowController < ApplicationController - layout 'flow' +class StartFormController < ApplicationController + layout 'form' skip_before_action :authenticate_user! - before_action :load_flow + before_action :load_template def show - @submission = @flow.submissions.new + @submission = @template.submissions.new end def update - @submission = @flow.submissions.find_or_initialize_by( + @submission = @template.submissions.find_or_initialize_by( deleted_at: nil, **submission_params ) if @submission.completed_at? - redirect_to start_flow_completed_path(@flow.slug, email: submission_params[:email]) + redirect_to start_form_completed_path(@template.slug, email: submission_params[:email]) else @submission.assign_attributes( opened_at: Time.current, @@ -26,7 +26,7 @@ class StartFlowController < ApplicationController ) if @submission.save - redirect_to submit_flow_path(@submission.slug) + redirect_to submit_form_path(@submission.slug) else render :show end @@ -34,7 +34,7 @@ class StartFlowController < ApplicationController end def completed - @submission = @flow.submissions.find_by(email: params[:email]) + @submission = @template.submissions.find_by(email: params[:email]) end private @@ -43,9 +43,9 @@ class StartFlowController < ApplicationController params.require(:submission).permit(:email) end - def load_flow - slug = params[:slug] || params[:start_flow_slug] + def load_template + slug = params[:slug] || params[:start_template_slug] - @flow = Flow.find_by!(slug:) + @template = Template.find_by!(slug:) end end diff --git a/app/controllers/submissions_controller.rb b/app/controllers/submissions_controller.rb index e44ddca0..2851e526 100644 --- a/app/controllers/submissions_controller.rb +++ b/app/controllers/submissions_controller.rb @@ -1,16 +1,16 @@ # frozen_string_literal: true class SubmissionsController < ApplicationController - before_action :load_flow, only: %i[index new create] + before_action :load_template, only: %i[index new create] def index - @submissions = @flow.submissions.active + @submissions = @template.submissions.active end def show @submission = - Submission.joins(:flow).where(flow: { account_id: current_account.id }) - .preload(flow: { documents_attachments: { preview_images_attachments: :blob } }) + Submission.joins(:template).where(template: { account_id: current_account.id }) + .preload(template: { documents_attachments: { preview_images_attachments: :blob } }) .find(params[:id]) end @@ -21,7 +21,7 @@ class SubmissionsController < ApplicationController submissions = emails.map do |email| - submission = @flow.submissions.create!(email:, sent_at: params[:send_email] == '1' ? Time.current : nil) + submission = @template.submissions.create!(email:, sent_at: params[:send_email] == '1' ? Time.current : nil) if params[:send_email] == '1' SubmissionMailer.invitation_email(submission, message: params[:message]).deliver_later! @@ -30,21 +30,21 @@ class SubmissionsController < ApplicationController submission end - redirect_to flow_submissions_path(@flow), notice: "#{submissions.size} recepients added" + redirect_to template_submissions_path(@template), notice: "#{submissions.size} recepients added" end def destroy - submission = Submission.joins(:flow).where(flow: { account_id: current_account.id }) + submission = Submission.joins(:template).where(template: { account_id: current_account.id }) .find(params[:id]) submission.update!(deleted_at: Time.current) - redirect_to flow_submissions_path(submission.flow), notice: 'Submission has been archieved' + redirect_to template_submissions_path(submission.template), notice: 'Submission has been archieved' end private - def load_flow - @flow = current_account.flows.find(params[:flow_id]) + def load_template + @template = current_account.templates.find(params[:template_id]) end end diff --git a/app/controllers/submissions_debug_controller.rb b/app/controllers/submissions_debug_controller.rb index 6f681a78..484b0ade 100644 --- a/app/controllers/submissions_debug_controller.rb +++ b/app/controllers/submissions_debug_controller.rb @@ -1,18 +1,18 @@ # frozen_string_literal: true class SubmissionsDebugController < ApplicationController - layout 'flow' + layout 'form' skip_before_action :authenticate_user! def index @submission = Submission.preload({ attachments_attachments: :blob }, - flow: { documents_attachments: :blob }) + template: { documents_attachments: :blob }) .find_by(slug: params[:submission_slug]) respond_to do |f| f.html do - render 'submit_flow/show' + render 'submit_template/show' end f.pdf do Submissions::GenerateResultAttachments.call(@submission) diff --git a/app/controllers/submit_flow_controller.rb b/app/controllers/submit_form_controller.rb similarity index 65% rename from app/controllers/submit_flow_controller.rb rename to app/controllers/submit_form_controller.rb index 66445b68..74fbfa73 100644 --- a/app/controllers/submit_flow_controller.rb +++ b/app/controllers/submit_form_controller.rb @@ -1,15 +1,15 @@ # frozen_string_literal: true -class SubmitFlowController < ApplicationController - layout 'flow' +class SubmitFormController < ApplicationController + layout 'form' skip_before_action :authenticate_user! def show - @submission = Submission.preload(flow: { documents_attachments: { preview_images_attachments: :blob } }) + @submission = Submission.preload(template: { documents_attachments: { preview_images_attachments: :blob } }) .find_by!(slug: params[:slug]) - return redirect_to submit_flow_completed_path(@submission.slug) if @submission.completed_at? + return redirect_to submit_form_completed_path(@submission.slug) if @submission.completed_at? end def update @@ -23,7 +23,7 @@ class SubmitFlowController < ApplicationController end def completed - @submission = Submission.find_by!(slug: params[:submit_flow_slug]) + @submission = Submission.find_by!(slug: params[:submit_form_slug]) end private diff --git a/app/controllers/templates_controller.rb b/app/controllers/templates_controller.rb new file mode 100644 index 00000000..4f9e8728 --- /dev/null +++ b/app/controllers/templates_controller.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +class TemplatesController < ApplicationController + layout false + + def show + @template = current_account.templates.preload(documents_attachments: { preview_images_attachments: :blob }) + .find(params[:id]) + end + + def new + @template = current_account.templates.new + end + + def create + @template = current_account.templates.new(template_params) + @template.author = current_user + + if @template.save + redirect_to template_path(@template) + else + render turbo_stream: turbo_stream.replace(:modal, template: 'templates/new'), status: :unprocessable_entity + end + end + + def destroy + @template = current_account.templates.find(params[:id]) + @template.update!(deleted_at: Time.current) + + redirect_to settings_users_path, notice: 'template has been archived.' + end + + private + + def template_params + params.require(:template).permit(:name, :schema) + end +end diff --git a/app/javascript/application.js b/app/javascript/application.js index c92af94a..1a85429c 100644 --- a/app/javascript/application.js +++ b/app/javascript/application.js @@ -8,7 +8,7 @@ import TurboModal from './elements/turbo_modal' import FileDropzone from './elements/file_dropzone' import MenuActive from './elements/menu_active' -import FlowBuilder from './flow_builder/builder' +import TemplateBuilder from './template_builder/builder' document.addEventListener('turbo:before-cache', () => { window.flash?.remove() @@ -20,12 +20,12 @@ window.customElements.define('turbo-modal', TurboModal) window.customElements.define('file-dropzone', FileDropzone) window.customElements.define('menu-active', MenuActive) -window.customElements.define('flow-builder', class extends HTMLElement { +window.customElements.define('template-builder', class extends HTMLElement { connectedCallback () { this.appElem = document.createElement('div') - this.app = createApp(FlowBuilder, { - flow: reactive(JSON.parse(this.dataset.flow)) + this.app = createApp(TemplateBuilder, { + template: reactive(JSON.parse(this.dataset.template)) }) this.app.mount(this.appElem) diff --git a/app/javascript/flow.js b/app/javascript/form.js similarity index 78% rename from app/javascript/flow.js rename to app/javascript/form.js index 28ec9e0c..a766a2a3 100644 --- a/app/javascript/flow.js +++ b/app/javascript/form.js @@ -1,12 +1,12 @@ import { createApp, reactive } from 'vue' -import Flow from './flow_form/form' +import Form from './submission_form/form' -window.customElements.define('flow-form', class extends HTMLElement { +window.customElements.define('submission-form', class extends HTMLElement { connectedCallback () { this.appElem = document.createElement('div') - this.app = createApp(Flow, { + this.app = createApp(Form, { submissionSlug: this.dataset.submissionSlug, authenticityToken: this.dataset.authenticityToken, values: reactive(JSON.parse(this.dataset.values)), diff --git a/app/javascript/flow.scss b/app/javascript/form.scss similarity index 91% rename from app/javascript/flow.scss rename to app/javascript/form.scss index dc7c1bfd..993772d6 100644 --- a/app/javascript/flow.scss +++ b/app/javascript/form.scss @@ -1,4 +1,4 @@ -@config "../../tailwind.flow.config.js"; +@config "../../tailwind.form.config.js"; @import "tailwindcss/base"; @import "tailwindcss/components"; diff --git a/app/javascript/flow_form/area.vue b/app/javascript/submission_form/area.vue similarity index 100% rename from app/javascript/flow_form/area.vue rename to app/javascript/submission_form/area.vue diff --git a/app/javascript/flow_form/areas.vue b/app/javascript/submission_form/areas.vue similarity index 100% rename from app/javascript/flow_form/areas.vue rename to app/javascript/submission_form/areas.vue diff --git a/app/javascript/flow_form/attachment_step.vue b/app/javascript/submission_form/attachment_step.vue similarity index 100% rename from app/javascript/flow_form/attachment_step.vue rename to app/javascript/submission_form/attachment_step.vue diff --git a/app/javascript/flow_form/checkbox_step.vue b/app/javascript/submission_form/checkbox_step.vue similarity index 100% rename from app/javascript/flow_form/checkbox_step.vue rename to app/javascript/submission_form/checkbox_step.vue diff --git a/app/javascript/flow_form/completed.vue b/app/javascript/submission_form/completed.vue similarity index 100% rename from app/javascript/flow_form/completed.vue rename to app/javascript/submission_form/completed.vue diff --git a/app/javascript/flow_form/dropzone.vue b/app/javascript/submission_form/dropzone.vue similarity index 100% rename from app/javascript/flow_form/dropzone.vue rename to app/javascript/submission_form/dropzone.vue diff --git a/app/javascript/flow_form/form.vue b/app/javascript/submission_form/form.vue similarity index 99% rename from app/javascript/flow_form/form.vue rename to app/javascript/submission_form/form.vue index 094dbca3..9e91c2ed 100644 --- a/app/javascript/flow_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -164,7 +164,7 @@ import CheckboxStep from './checkbox_step' import FormCompleted from './completed' export default { - name: 'FlowForm', + name: 'SubmissionForm', components: { FieldAreas, ImageStep, diff --git a/app/javascript/flow_form/image_step.vue b/app/javascript/submission_form/image_step.vue similarity index 100% rename from app/javascript/flow_form/image_step.vue rename to app/javascript/submission_form/image_step.vue diff --git a/app/javascript/flow_form/signature_step.vue b/app/javascript/submission_form/signature_step.vue similarity index 100% rename from app/javascript/flow_form/signature_step.vue rename to app/javascript/submission_form/signature_step.vue diff --git a/app/javascript/flow_builder/area.vue b/app/javascript/template_builder/area.vue similarity index 100% rename from app/javascript/flow_builder/area.vue rename to app/javascript/template_builder/area.vue diff --git a/app/javascript/flow_builder/builder.vue b/app/javascript/template_builder/builder.vue similarity index 81% rename from app/javascript/flow_builder/builder.vue rename to app/javascript/template_builder/builder.vue index 9c4ec498..877d354c 100644 --- a/app/javascript/flow_builder/builder.vue +++ b/app/javascript/template_builder/builder.vue @@ -5,13 +5,13 @@ >