Skip to content

Commit 53c162f

Browse files
committed
make keywords available for controlled vocabulary
1 parent 5d38b85 commit 53c162f

6 files changed

Lines changed: 44 additions & 11 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Dictionary of Keywords
2+
class KeywordsDictionary < Dictionary
3+
4+
DEFAULT_FILE = 'keywords.yml'
5+
6+
private
7+
8+
def dictionary_filepath
9+
get_file_path 'keywords', DEFAULT_FILE
10+
end
11+
12+
end

app/views/common/_dropdown.html.erb

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,6 @@ render :partial => 'common/dropdown',
2525
options ||= format_for_dropdown(field_name.capitalize.constantize.all)
2626
existing ||= format_for_dropdown(resource.send(field_name.pluralize))
2727

28-
# Remove existing objects from the pool of options
29-
options = options - existing
30-
dropdown_toggle_button_name ||= ''
31-
if dropdown_toggle_button_name.blank?
32-
dropdown_toggle_button_name = "Add #{field_name.to_s.sub(/_ids?\z/, '').humanize}"
33-
end
34-
3528
# show the required label?
3629
required ||= false
3730

@@ -43,6 +36,14 @@ render :partial => 'common/dropdown',
4336

4437
# check title
4538
title ||= ''
39+
40+
# Remove existing objects from the pool of options
41+
options = options - existing
42+
dropdown_toggle_button_name ||= ''
43+
if dropdown_toggle_button_name.blank?
44+
dropdown_toggle_button_name = "Add #{field_label.to_s.sub(/_ids?\z/, '').humanize}"
45+
end
46+
4647
%>
4748

4849
<div class="form-group<%= ' has-error' if errors.size > 0 %>">

app/views/events/_form.html.erb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,16 @@
9090
title: t('events.hints.hosts') %>
9191

9292
<!-- Field: Keywords -->
93-
<%= f.multi_input :keywords, errors: @event.errors[:keywords],
94-
title: t('events.hints.keywords') %>
93+
<% if TeSS::Config.feature['controlled_vocabulary_vars'].include? 'keywords' %>
94+
<%= f.dropdown :keywords,
95+
options: KeywordsDictionary.instance.options_for_select,
96+
label: t('activerecord.attributes.event.keywords'),
97+
errors: @event.errors[:keywords],
98+
title: t('events.hints.keywords') %>
99+
<% else %>
100+
<%= f.multi_input :keywords, errors: @event.errors[:keywords],
101+
title: t('events.hints.keywords') %>
102+
<% end %>
95103

96104
<!-- Field: Fields -->
97105
<% if !TeSS::Config.feature['disabled'].include? 'ardc_fields_of_research' %>

app/views/materials/_form.html.erb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,16 @@
3737
<hr>
3838

3939
<!-- Field: Keywords -->
40-
<%= f.multi_input :keywords, title: t('materials.hints.keywords'), visibility_toggle: TeSS::Config.feature['materials_disabled'] %>
40+
<% if TeSS::Config.feature['controlled_vocabulary_vars'].include? 'keywords' %>
41+
<%= f.dropdown :keywords,
42+
options: KeywordsDictionary.instance.options_for_select,
43+
label: t('activerecord.attributes.event.keywords'),
44+
errors: @material.errors[:keywords],
45+
title: t('events.hints.keywords'),
46+
visibility_toggle: TeSS::Config.feature['materials_disabled'] %>
47+
<% else %>
48+
<%= f.multi_input :keywords, title: t('materials.hints.keywords'), visibility_toggle: TeSS::Config.feature['materials_disabled'] %>
49+
<% end %>
4150

4251
<!-- Field: Licence -->
4352
<%= f.input :licence, collection: licence_options_for_select, as: :grouped_select, group_method: :last, group_label_method: :first,

config/dictionaries/keywords.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
placeholder:
2+
title: placeholder
3+
description: 'Placeholder'

config/tess.example.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ default: &default
168168
bioschemas_testing: false
169169
collection_curation: true
170170
auto_parse_vars: [] # available features to auto parse from description: ['keywords', 'target_audience']
171-
controlled_vocabulary_vars: [] # available features: ['target_audience']
171+
controlled_vocabulary_vars: [] # available features: ['keywords', 'target_audience']
172172

173173
# User login
174174
invitation: false

0 commit comments

Comments
 (0)