diff --git a/app/components/editable_champ/dossier_link_component.rb b/app/components/editable_champ/dossier_link_component.rb index e26ff0ea8..3648762be 100644 --- a/app/components/editable_champ/dossier_link_component.rb +++ b/app/components/editable_champ/dossier_link_component.rb @@ -1,2 +1,5 @@ class EditableChamp::DossierLinkComponent < EditableChamp::EditableChampBaseComponent + def dossier + @dossier ||= @champ.blank? ? nil : Dossier.visible_by_administration.find_by(id: @champ.to_s) + end end diff --git a/app/components/editable_champ/dossier_link_component/dossier_link_component.en.yml b/app/components/editable_champ/dossier_link_component/dossier_link_component.en.yml new file mode 100644 index 000000000..cd477cc68 --- /dev/null +++ b/app/components/editable_champ/dossier_link_component/dossier_link_component.en.yml @@ -0,0 +1,3 @@ +--- +en: + not_found: This file is unknown diff --git a/app/components/editable_champ/dossier_link_component/dossier_link_component.fr.yml b/app/components/editable_champ/dossier_link_component/dossier_link_component.fr.yml new file mode 100644 index 000000000..0ce96b08c --- /dev/null +++ b/app/components/editable_champ/dossier_link_component/dossier_link_component.fr.yml @@ -0,0 +1,3 @@ +--- +fr: + not_found: Ce dossier est inconnu diff --git a/app/components/editable_champ/dossier_link_component/dossier_link_component.html.haml b/app/components/editable_champ/dossier_link_component/dossier_link_component.html.haml index 94c6c9369..3e4169f40 100644 --- a/app/components/editable_champ/dossier_link_component/dossier_link_component.html.haml +++ b/app/components/editable_champ/dossier_link_component/dossier_link_component.html.haml @@ -1,12 +1,18 @@ .dossier-link - = @form.number_field :value, + = @form.text_field :value, id: @champ.input_id, aria: { describedby: @champ.describedby_id }, + inputmode: :numeric, + min: 1, + pattern: "[0-9]{1,12}", placeholder: "Numéro de dossier", autocomplete: 'off', required: @champ.required?, - data: { controller: 'turbo-input', turbo_input_url_value: champs_dossier_link_path(@champ.id) }, - class: "width-33-desktop" + class: "width-33-desktop #{@champ.blank? ? '' : 'small-margin'}" - .help-block{ id: dom_id(@champ, :help_block) } - = render partial: 'shared/champs/dossier_link/help_block', locals: { id: @champ.value } + - if !@champ.blank? + - if dossier.blank? + .fr-error-text.fr-mb-4w + = t('.not_found') + - else + .fr-info-text.fr-mb-4w= sanitize(dossier.text_summary) diff --git a/app/controllers/champs/dossier_link_controller.rb b/app/controllers/champs/dossier_link_controller.rb deleted file mode 100644 index b41e26e6b..000000000 --- a/app/controllers/champs/dossier_link_controller.rb +++ /dev/null @@ -1,8 +0,0 @@ -class Champs::DossierLinkController < ApplicationController - before_action :authenticate_logged_user! - - def show - @champ = policy_scope(Champ).find(params[:champ_id]) - @linked_dossier_id = read_param_value(@champ.input_name, 'value') - end -end diff --git a/app/models/type_de_champ.rb b/app/models/type_de_champ.rb index 19b3a9705..badf1f6e3 100644 --- a/app/models/type_de_champ.rb +++ b/app/models/type_de_champ.rb @@ -502,7 +502,8 @@ class TypeDeChamp < ApplicationRecord case type_champ when type_champs.fetch(:epci), type_champs.fetch(:communes), - type_champs.fetch(:multiple_drop_down_list) + type_champs.fetch(:multiple_drop_down_list), + type_champs.fetch(:dossier_link) true else false diff --git a/app/views/champs/dossier_link/show.turbo_stream.haml b/app/views/champs/dossier_link/show.turbo_stream.haml deleted file mode 100644 index 6cb304fca..000000000 --- a/app/views/champs/dossier_link/show.turbo_stream.haml +++ /dev/null @@ -1 +0,0 @@ -= turbo_stream.update dom_id(@champ, :help_block), partial: 'shared/champs/dossier_link/help_block', locals: { id: @linked_dossier_id } diff --git a/app/views/shared/champs/dossier_link/_help_block.html.haml b/app/views/shared/champs/dossier_link/_help_block.html.haml deleted file mode 100644 index 910eb2c52..000000000 --- a/app/views/shared/champs/dossier_link/_help_block.html.haml +++ /dev/null @@ -1,8 +0,0 @@ -- if id.present? - - dossier = Dossier.find_by(id: id) - - if dossier.blank? - %p.text-warning - Ce dossier est inconnu - - else - %p.text-info - %span.dossier-text-summary= sanitize(dossier.text_summary) diff --git a/config/routes.rb b/config/routes.rb index c472d81b1..532f81d05 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -167,7 +167,6 @@ Rails.application.routes.draw do namespace :champs do get ':champ_id/siret', to: 'siret#show', as: :siret get ':champ_id/rna', to: 'rna#show', as: :rna - get ':champ_id/dossier_link', to: 'dossier_link#show', as: :dossier_link post ':champ_id/repetition', to: 'repetition#add', as: :repetition delete ':champ_id/repetition', to: 'repetition#remove' delete ':champ_id/options', to: 'options#remove', as: :options diff --git a/spec/controllers/champs/dossier_link_controller_spec.rb b/spec/controllers/champs/dossier_link_controller_spec.rb deleted file mode 100644 index f4a735985..000000000 --- a/spec/controllers/champs/dossier_link_controller_spec.rb +++ /dev/null @@ -1,62 +0,0 @@ -describe Champs::DossierLinkController, type: :controller do - let(:user) { create(:user) } - let(:procedure) { create(:procedure, :published, :with_dossier_link) } - - describe '#show' do - let(:dossier) { create(:dossier, user: user, procedure: procedure) } - let(:champ) { dossier.champs_public.first } - - context 'when user is connected' do - render_views - before { sign_in user } - - let(:champs_public_attributes) do - champ_attributes = [] - champ_attributes[champ.id] = { value: dossier_id } - champ_attributes - end - let(:params) do - { - champ_id: champ.id, - dossier: { - champs_public_attributes: champs_public_attributes - } - } - end - let(:dossier_id) { dossier.id } - - context 'when the dossier exist' do - before do - get :show, params: params, format: :turbo_stream - end - - it 'renders the procedure name' do - expect(response.body).to include('Dossier en brouillon') - expect(response.body).to include(procedure.libelle) - expect(response.body).to include(procedure.organisation) - expect(response.body).to include(ActionView::RecordIdentifier.dom_id(champ, :help_block)) - end - end - - context 'when the dossier does not exist' do - let(:dossier_id) { '13' } - before do - get :show, params: params, format: :turbo_stream - end - - it 'renders error message' do - expect(response.body).to include('Ce dossier est inconnu') - expect(response.body).to include(ActionView::RecordIdentifier.dom_id(champ, :help_block)) - end - end - end - - context 'when user is not connected' do - before do - get :show, params: { champ_id: champ.id }, format: :turbo_stream - end - - it { expect(response.code).to eq('401') } - end - end -end