From 6f25d68b8b82bb396330a38f02d3c303dcea6726 Mon Sep 17 00:00:00 2001 From: Mike Sanders Date: Fri, 13 Mar 2026 14:39:23 +0100 Subject: [PATCH] controlled vocabulary option for target audience --- app/views/events/_form.html.erb | 10 +++++++++- app/views/materials/_form.html.erb | 13 +++++++++++-- config/tess.example.yml | 1 + 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/views/events/_form.html.erb b/app/views/events/_form.html.erb index 96875d3d8..9ee0ad165 100644 --- a/app/views/events/_form.html.erb +++ b/app/views/events/_form.html.erb @@ -105,7 +105,15 @@ <% end %> - <%= f.multi_input :target_audience, errors: @event.errors[:target_audience], title: t('events.hints.targets') %> + <% if TeSS::Config.feature['controlled_vocabulary_vars'].include? 'target_audience' %> + <%= f.dropdown :target_audience, + options: TargetAudienceDictionary.instance.options_for_select, + label: 'Target Audience', + errors: @event.errors[:target_audience], + title: t('events.hints.targets') %> + <% else %> + <%= f.multi_input :target_audience, errors: @event.errors[:target_audience], title: t('events.hints.targets') %> + <% end %> <% if !TeSS::Config.feature['disabled'].include? 'topics' %> diff --git a/app/views/materials/_form.html.erb b/app/views/materials/_form.html.erb index 68042a355..f52f0bbbc 100644 --- a/app/views/materials/_form.html.erb +++ b/app/views/materials/_form.html.erb @@ -76,8 +76,17 @@ visibility_toggle: TeSS::Config.feature['materials_disabled'] %> - <%= f.multi_input :target_audience, label: 'Target audiences', errors: @material.errors[:target_audience], - title: t('events.hints.targets'), visibility_toggle: TeSS::Config.feature['materials_disabled'] %> + <% if TeSS::Config.feature['controlled_vocabulary_vars'].include? 'target_audience' %> + <%= f.dropdown :target_audience, + options: TargetAudienceDictionary.instance.options_for_select, + label: 'Target Audience', + errors: @material.errors[:target_audience], + title: t('events.hints.targets'), + visibility_toggle: TeSS::Config.feature['materials_disabled'] %> + <% else %> + <%= f.multi_input :target_audience, label: 'Target audiences', errors: @material.errors[:target_audience], + title: t('events.hints.targets'), visibility_toggle: TeSS::Config.feature['materials_disabled'] %> + <% end %> <%= f.input :prerequisites, as: :markdown_area, field_lock: true, diff --git a/config/tess.example.yml b/config/tess.example.yml index 1ee4cf00c..19d6eb0bf 100644 --- a/config/tess.example.yml +++ b/config/tess.example.yml @@ -166,6 +166,7 @@ default: &default bioschemas_testing: false collection_curation: true auto_parse_vars: [] # available features to auto parse from description: ['keywords', 'target_audience'] + controlled_vocabulary_vars: [] # available features: ['target audience'] # User login invitation: false