Auto-link valeur des champs

closes #2865
This commit is contained in:
Paul Chavard 2019-09-26 17:40:52 +02:00
parent d92cf6617a
commit e7ed408e08
6 changed files with 25 additions and 2 deletions

View file

@ -7,6 +7,7 @@ gem 'active_model_serializers'
gem 'activestorage-openstack', git: 'https://github.com/fredZen/activestorage-openstack.git', branch: 'frederic/fix_upload_signature' gem 'activestorage-openstack', git: 'https://github.com/fredZen/activestorage-openstack.git', branch: 'frederic/fix_upload_signature'
gem 'administrate' gem 'administrate'
gem 'after_party' gem 'after_party'
gem 'anchored'
gem 'axlsx', '~> 3.0.0.pre' # https://github.com/randym/axlsx/issues/501#issuecomment-373640365 gem 'axlsx', '~> 3.0.0.pre' # https://github.com/randym/axlsx/issues/501#issuecomment-373640365
gem 'bcrypt' gem 'bcrypt'
gem 'bootstrap-sass', '>= 3.4.1' gem 'bootstrap-sass', '>= 3.4.1'

View file

@ -95,6 +95,7 @@ GEM
selectize-rails (~> 0.6) selectize-rails (~> 0.6)
aes_key_wrap (1.0.1) aes_key_wrap (1.0.1)
after_party (1.10.0) after_party (1.10.0)
anchored (1.1.0)
arel (9.0.0) arel (9.0.0)
ast (2.4.0) ast (2.4.0)
attr_required (1.0.1) attr_required (1.0.1)
@ -722,6 +723,7 @@ DEPENDENCIES
activestorage-openstack! activestorage-openstack!
administrate administrate
after_party after_party
anchored
axlsx (~> 3.0.0.pre) axlsx (~> 3.0.0.pre)
bcrypt bcrypt
bootstrap-sass (>= 3.4.1) bootstrap-sass (>= 3.4.1)

View file

@ -17,4 +17,12 @@ module ChampHelper
{ type_de_champ_id: champ.type_de_champ_id } { type_de_champ_id: champ.type_de_champ_id }
end end
end end
def format_text_value(text)
sanitized_text = sanitize(text)
auto_linked_text = Anchored::Linker.auto_link(sanitized_text, target: '_blank', rel: 'noopener') do |link_href|
truncate(link_href, length: 60)
end
simple_format(auto_linked_text, {}, sanitize: false)
end
end end

View file

@ -1 +1 @@
= simple_format(champ.to_s) = format_text_value(champ.to_s)

View file

@ -35,7 +35,7 @@
- when TypeDeChamp.type_champs.fetch(:datetime) - when TypeDeChamp.type_champs.fetch(:datetime)
= c.to_s = c.to_s
- else - else
= sanitize(c.to_s) = format_text_value(c.to_s)
- if c.type_champ != TypeDeChamp.type_champs.fetch(:header_section) - if c.type_champ != TypeDeChamp.type_champs.fetch(:header_section)
%td.updated-at %td.updated-at

View file

@ -40,6 +40,18 @@ describe 'shared/dossiers/champs.html.haml', type: :view do
expect(subject).not_to include(champ3.libelle) expect(subject).not_to include(champ3.libelle)
expect(subject).not_to include(champ3.value) expect(subject).not_to include(champ3.value)
end end
context "with auto-link" do
let(:champ1) { create(:champ_text, value: "https://github.com/tchak") }
let(:champ2) { create(:champ_textarea, value: "https://github.com/LeSim") }
let(:link1) { '<a href="https://github.com/tchak" target="_blank" rel="noopener">https://github.com/tchak</a>' }
let(:link2) { '<a href="https://github.com/LeSim" target="_blank" rel="noopener">https://github.com/LeSim</a>' }
it "render links" do
expect(subject).to include(link1)
expect(subject).to include(link2)
end
end
end end
context "with a dossier champ, but we are not authorized to acces the dossier" do context "with a dossier champ, but we are not authorized to acces the dossier" do