Skip to content

Commit 6cab544

Browse files
committed
Merge remote-tracking branch 'upstream/master' into configurable_footer_logos
2 parents b8ba035 + e67ce73 commit 6cab544

11 files changed

Lines changed: 269 additions & 259 deletions

app/assets/stylesheets/application.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,3 +1111,7 @@ td.day .calendar-text {
11111111
display: flex;
11121112
justify-content: center;
11131113
}
1114+
1115+
.tag-topic, .tag-operation {
1116+
text-decoration: none;
1117+
}

app/helpers/materials_helper.rb

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,15 @@ def display_attribute(resource, attribute, show_label: true, title: nil, markdow
7171
].any?
7272

7373
value = resource.send(attribute)
74-
if markdown
75-
value = render_markdown(value)
76-
end
74+
value = render_markdown(value) if markdown
7775
if value.present?
78-
if list
79-
value = value.map do |v|
80-
html_escape(block_given? ? yield(v) : v)
81-
end
82-
else
83-
value = html_escape(block_given? ? yield(value) : value)
84-
end
76+
value = if list
77+
value.map do |v|
78+
html_escape(block_given? ? yield(v) : v)
79+
end
80+
else
81+
html_escape(block_given? ? yield(value) : value)
82+
end
8583
end
8684
string = "<p class=\"#{attribute}#{show_label ? ' no-spacing' : ''}\">"
8785
unless value.blank? || value.try(:strip) == 'License Not Specified'
@@ -135,18 +133,31 @@ def embed_youtube(material)
135133
def keywords_and_topics(resource, limit: nil)
136134
tags = []
137135

138-
%i[scientific_topic_names operation_names keywords].each do |field|
139-
tags |= resource.send(field) if resource.respond_to?(field)
136+
if resource.respond_to?(:scientific_topics)
137+
tags += resource.scientific_topics.map do |term|
138+
content_tag(:span, class: 'label label-info tag-topic') do
139+
content_tag(:i, '', class: 'fa fa-flask') + ' ' + term.preferred_label
140+
end
141+
end
140142
end
141143

142-
limit_exceeded = limit && (tags.length > limit)
143-
tags = tags.first(limit) if limit
144+
if resource.respond_to?(:operations)
145+
tags += resource.operations.map do |term|
146+
content_tag(:span, class: 'label label-info tag-operation') do
147+
content_tag(:i, '', class: 'fa fa-cogs') + ' ' + term.preferred_label
148+
end
149+
end
150+
end
144151

145-
elements = tags.map do |tag|
146-
content_tag(:span, tag, class: 'label label-info')
152+
if resource.respond_to?(:keywords)
153+
tags += resource.keywords.map do |tag|
154+
content_tag(:span, tag, class: 'label label-info tag-keyword')
155+
end
147156
end
148-
elements << '&hellip;' if limit_exceeded
149157

150-
elements.join(' ').html_safe
158+
limit_exceeded = limit && (tags.length > limit)
159+
tags = tags.first(limit) if limit
160+
tags << '&hellip;'.html_safe if limit_exceeded
161+
safe_join(tags, ' ')
151162
end
152163
end

app/views/common/_extra_metadata.html.erb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@
6363
<%= display_people(resource, :contributors) if resource.respond_to?(:contributors) %>
6464
<%= display_attribute(resource, :remote_created_date) if resource.respond_to?(:remote_created_date) %>
6565
<%= display_attribute(resource, :remote_updated_date) if resource.respond_to?(:remote_updated_date) %>
66-
<%= display_attribute(resource, :scientific_topics) { |values| values.map { |x| x.preferred_label }.join(', ') } %>
66+
<%= display_attribute(resource, :scientific_topics) {
67+
|values| safe_join(values.map { |x| link_to(x.preferred_label, x.uri, target: '_blank') }, ', ')
68+
} %>
6769

6870
<% if resource.is_a?(LearningPath) %>
6971
<%= display_attribute(resource, :status) { |value| material_status_title_for_label(value) } %>
@@ -73,5 +75,7 @@
7375
<% end %>
7476

7577
<% if resource.respond_to?(:operations) -%>
76-
<%= display_attribute(resource, :operations) { |values| values.map { |x| x.preferred_label }.join(', ') } %>
78+
<%= display_attribute(resource, :operations) {
79+
|values| safe_join(values.map { |x| link_to(x.preferred_label, x.uri, target: '_blank') }, ', ')
80+
} %>
7781
<% end %>
Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1+
require_relative '../migration_helper'
2+
13
class MigrateMaterialPeople < ActiveRecord::Migration[7.2]
4+
include MigrationHelper
5+
26
class Person < ActiveRecord::Base; end unless defined?(Person)
37

48
def up
@@ -22,34 +26,4 @@ def down
2226
end
2327
puts
2428
end
25-
26-
private
27-
28-
def array_to_people(resource, column_name, role)
29-
return unless resource.respond_to?(:read_attribute)
30-
# Get the raw array from database
31-
people_array = resource.read_attribute(column_name)
32-
return if people_array.blank?
33-
34-
people_array.each do |person_name|
35-
next if person_name.blank?
36-
orcid = nil
37-
name = person_name.gsub(/\s*\(?(orcid: )?(https?:\/\/orcid\.org\/)?(\d\d\d\d-\d\d\d\d-\d\d\d\d-\d\d\d[\dxX])[ \)]*/) do |_|
38-
orcid = $3
39-
''
40-
end.strip
41-
42-
Person.find_or_create_by!(full_name: name, orcid: orcid, resource: resource, role: role)
43-
end
44-
end
45-
46-
def people_to_array(resource, column_name, role)
47-
arr = Person.where(resource: resource, role: role).map do |person|
48-
name = person.full_name
49-
name += " (#{person.orcid})" if person.orcid
50-
name
51-
end
52-
53-
resource.update_column(column_name, arr)
54-
end
5529
end
Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1+
require_relative '../migration_helper'
2+
13
class MigrateWorkflowPeople < ActiveRecord::Migration[7.2]
4+
include MigrationHelper
5+
26
class Person < ActiveRecord::Base; end unless defined?(Person)
37

48
def up
@@ -22,34 +26,4 @@ def down
2226
end
2327
puts
2428
end
25-
26-
private
27-
28-
def array_to_people(resource, column_name, role)
29-
return unless resource.respond_to?(:read_attribute)
30-
# Get the raw array from database
31-
people_array = resource.read_attribute(column_name)
32-
return if people_array.blank?
33-
34-
people_array.each do |person_name|
35-
next if person_name.blank?
36-
orcid = nil
37-
name = person_name.gsub(/\s*\(?(orcid: )?(https?:\/\/orcid\.org\/)?(\d\d\d\d-\d\d\d\d-\d\d\d\d-\d\d\d[\dxX])[ \)]*/) do |_|
38-
orcid = $3
39-
''
40-
end.strip
41-
42-
Person.find_or_create_by!(full_name: name, orcid: orcid, resource: resource, role: role)
43-
end
44-
end
45-
46-
def people_to_array(resource, column_name, role)
47-
arr = Person.where(resource: resource, role: role).map do |person|
48-
name = person.full_name
49-
name += " (#{person.orcid})" if person.orcid
50-
name
51-
end
52-
53-
resource.update_column(column_name, arr)
54-
end
5529
end
Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1+
require_relative '../migration_helper'
2+
13
class MigrateLearningPathPeople < ActiveRecord::Migration[7.2]
4+
include MigrationHelper
5+
26
class Person < ActiveRecord::Base; end unless defined?(Person)
37

48
def up
@@ -22,34 +26,4 @@ def down
2226
end
2327
puts
2428
end
25-
26-
private
27-
28-
def array_to_people(resource, column_name, role)
29-
return unless resource.respond_to?(:read_attribute)
30-
# Get the raw array from database
31-
people_array = resource.read_attribute(column_name)
32-
return if people_array.blank?
33-
34-
people_array.each do |person_name|
35-
next if person_name.blank?
36-
orcid = nil
37-
name = person_name.gsub(/\s*\(?(orcid: )?(https?:\/\/orcid\.org\/)?(\d\d\d\d-\d\d\d\d-\d\d\d\d-\d\d\d[\dxX])[ \)]*/) do |_|
38-
orcid = $3
39-
''
40-
end.strip
41-
42-
Person.find_or_create_by!(full_name: name, orcid: orcid, resource: resource, role: role)
43-
end
44-
end
45-
46-
def people_to_array(resource, column_name, role)
47-
arr = Person.where(resource: resource, role: role).map do |person|
48-
name = person.full_name
49-
name += " (#{person.orcid})" if person.orcid
50-
name
51-
end
52-
53-
resource.update_column(column_name, arr)
54-
end
5529
end

db/migration_helper.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
module MigrationHelper
2+
def array_to_people(resource, column_name, role)
3+
return unless resource.respond_to?(:read_attribute)
4+
# Get the raw array from database
5+
people_array = resource.read_attribute(column_name)
6+
return if people_array.blank?
7+
8+
people_array.each do |person_name|
9+
next if person_name.blank?
10+
orcid = nil
11+
name = person_name.gsub(/\s*\(?(orcid: )?(https?:\/\/orcid\.org\/)?(\d\d\d\d-\d\d\d\d-\d\d\d\d-\d\d\d[\dxX])[ \)]*/) do |_|
12+
orcid = $3
13+
''
14+
end.strip
15+
16+
p = Person.find_or_initialize_by(full_name: name, orcid: orcid, resource: resource, role: role)
17+
p.save!(validate: false) if p.new_record?
18+
end
19+
end
20+
21+
def people_to_array(resource, column_name, role)
22+
arr = Person.where(resource: resource, role: role).map do |person|
23+
name = person.full_name
24+
name += " (#{person.orcid})" if person.orcid
25+
name
26+
end
27+
28+
resource.update_column(column_name, arr)
29+
end
30+
end

0 commit comments

Comments
 (0)