Skip to content

Commit 1478a66

Browse files
authored
Merge branch 'master' into cross-space-auth
2 parents 7710bdc + ce261e3 commit 1478a66

41 files changed

Lines changed: 1301 additions & 73905 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ GEM
396396
net-protocol
397397
netrc (0.11.0)
398398
nio4r (2.7.4)
399-
nokogiri (1.18.9)
399+
nokogiri (1.19.1)
400400
mini_portile2 (~> 2.8.2)
401401
racc (~> 1.4)
402402
numerizer (0.1.1)

app/models/space.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
class Space < ApplicationRecord
2-
FEATURES = %w[events materials elearning_materials learning_paths workflows collections trainers content_providers nodes].freeze
2+
FEATURES = %w[events materials elearning_materials learning_paths workflows collections trainers content_providers nodes spaces].freeze
33

44
include PublicActivity::Common
55
include LogParameterChanges

app/views/layouts/_footer.html.erb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
<div class="footer-item">
2828
<%= link_to t('footer.about', title: TeSS::Config.site['title_short']), about_path %>
2929
</div>
30+
<% if TeSS::Config.feature['spaces'] %>
31+
<div class="footer-item">
32+
<%= link_to t('footer.browse_spaces'), spaces_path %>
33+
</div>
34+
<% end %>
3035
<div class="footer-item">
3136
<%= link_to t('footer.funding'), us_path(anchor: 'funding') %>
3237
</div>

app/views/layouts/application.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
<%= render 'layouts/head' %>
55

6-
<body class=<%= 'sticky-navbar-enabled' if TeSS::Config.feature['sticky_navbar'] %> <%= 'header-notice-present' if TeSS::Config.header_notice&.strip.present? %>>
6+
<body class="<%= 'sticky-navbar-enabled' if TeSS::Config.feature['sticky_navbar'] %> <%= 'header-notice-present' if TeSS::Config.header_notice&.strip.present? %>">
77
<%= render partial: 'layouts/header' %>
88

99
<div id="main-container" class="<%= @container_class || 'container-fluid' %>">

app/views/static/home/_counters.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<% features ||= ['events', 'materials', 'workflows', 'learning_paths', 'trainers'] %>
2-
<% features = features.select { |f| TeSS::Config.feature[f] } %>
2+
<% features = features.select { |f| feature_enabled?(f) } %>
33

44
<section id="counters">
55
<ul class="counter">

config/locales/en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -860,6 +860,7 @@ en:
860860
funding: Funding & acknowledgements
861861
privacy: Privacy
862862
cookie_preferences: Cookie preferences
863+
browse_spaces: Browse Spaces
863864
version: 'Version:'
864865
source_code: Source code
865866
api_documentation: API documentation

config/tess.example.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ default: &default
164164
# biotools, topics, operations, sponsors, fairshare, county, ardc_fields_of_research,
165165
# other_types, subsets, syllabus, approved_editors, address_finder
166166
disabled: ['ardc_fields_of_research', 'other_types', 'subsets', 'syllabus', 'approved_editors']
167+
auto_parse_vars: [] # available features to auto parse from description: ['keywords', 'target_audience']
167168
materials_disabled: []
168169
content_providers_disabled: []
169170
bioschemas_testing: false
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
{
2+
"Research data": "RDM, FAIR principles and open science",
3+
"Scientific disciplines": "RDM, FAIR principles and open science",
4+
"Research methodologies": "RDM, FAIR principles and open science",
5+
"Research data lifecycle": "RDM, FAIR principles and open science",
6+
"Roles and responsibilities in RDM": "RDM, FAIR principles and open science",
7+
"Open science": "RDM, FAIR principles and open science",
8+
"Reproducibility and replicability": "RDM, FAIR principles and open science",
9+
"Scholarly communication": "RDM, FAIR principles and open science",
10+
"Costs for RDM": "RDM, FAIR principles and open science",
11+
"Data management planning": "RDM, FAIR principles and open science",
12+
"FAIR data principles": "RDM, FAIR principles and open science",
13+
"Data discovery": "RDM, FAIR principles and open science",
14+
"Data reuse": "RDM, FAIR principles and open science",
15+
"Data collection": "RDM, FAIR principles and open science",
16+
"Data documentation": "RDM, FAIR principles and open science",
17+
"Data organisation": "RDM, FAIR principles and open science",
18+
"File naming (conventions)": "RDM, FAIR principles and open science",
19+
"Data versioning": "RDM, FAIR principles and open science",
20+
"Data formats and types": "RDM, FAIR principles and open science",
21+
"Data back-up": "RDM, FAIR principles and open science",
22+
"Data selection": "RDM, FAIR principles and open science",
23+
"Data destruction": "RDM, FAIR principles and open science",
24+
"Data preservation and archiving": "RDM, FAIR principles and open science",
25+
"Data publication": "RDM, FAIR principles and open science",
26+
"Data curation": "RDM, FAIR principles and open science",
27+
"Data visualisation": "RDM, FAIR principles and open science",
28+
"Data provenance": "RDM, FAIR principles and open science",
29+
"Metadata (standard)": "RDM, FAIR principles and open science",
30+
"Controlled vocabulary, ontology, taxonomy, thesaurus": "RDM, FAIR principles and open science",
31+
"Linked Open Data and SPARQL": "RDM, FAIR principles and open science",
32+
"FAIR metrics": "RDM, FAIR principles and open science",
33+
"3-point FAIRification Framework (FAIR data point, FAIR Implementation Profile)": "RDM, FAIR principles and open science",
34+
"Persistent identifier": "RDM, FAIR principles and open science",
35+
"Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH)": "RDM, FAIR principles and open science",
36+
"Spreadsheet tools": "RDM, FAIR principles and open science",
37+
"Data modelling": "RDM, FAIR principles and open science",
38+
"Data integration": "RDM, FAIR principles and open science",
39+
"Data integrity, validation & quality": "RDM, FAIR principles and open science",
40+
"Data cleaning & wrangling": "RDM, FAIR principles and open science",
41+
"Database management": "RDM, FAIR principles and open science",
42+
"Master data management": "RDM, FAIR principles and open science",
43+
"Business intelligence": "RDM, FAIR principles and open science",
44+
"RDM service model": "RDM, FAIR principles and open science",
45+
46+
"Research software": "Research software management",
47+
"Software management planning": "Research software management",
48+
"Software version control (e.g., git and GitHub)": "Research software management",
49+
"Software documentation": "Research software management",
50+
"Software packaging (R, Python, etc.)": "Research software management",
51+
"Software citation": "Research software management",
52+
"FAIR software": "Research software management",
53+
"Reproducibility": "Research software management",
54+
"Coding conventions": "Research software management",
55+
"Literate programming": "Research software management",
56+
"Scientific workflows and data pipelines": "Research software management",
57+
"Computer programming": "Research software management",
58+
"Virtual environments and Containerisation": "Research software management",
59+
"Continuous integration": "Research software management",
60+
"Use of generative Artificial Intelligence in writing research software": "Research software management",
61+
62+
"(Certified) Data Repositories": "Data infrastructure",
63+
"Repository quality standards (e.g. CoreTrustSeal, ISAD(G), OAIS reference model)": "Data infrastructure",
64+
"TRUST principles for digital repositories": "Data infrastructure",
65+
"Tool criticism": "Data infrastructure",
66+
"Data collection tools": "Data infrastructure",
67+
"Data management services/tools": "Data infrastructure",
68+
"Data storage (media)": "Data infrastructure",
69+
"Data transfer tools": "Data infrastructure",
70+
"Data analysis software/tools": "Data infrastructure",
71+
"Cloud computing and High-performance computing": "Data infrastructure",
72+
"Data security and Data classification": "Data infrastructure",
73+
"Available RDM infrastructure and organisations": "Data infrastructure",
74+
"European Open Science Cloud solutions": "Data infrastructure",
75+
76+
"European, national and institutional policies on RDM, RSM and open science": "Policy and governance",
77+
"Funder RDM, RSM and open science requirements": "Policy and governance",
78+
"Journal policies related to RDM": "Policy and governance",
79+
"Policy development": "Policy and governance",
80+
"Policy implementation": "Policy and governance",
81+
"Policy monitoring": "Policy and governance",
82+
"Translating policy to organisational strategy": "Policy and governance",
83+
"Responsible metrics (bibliometrics, altmetrics)": "Policy and governance",
84+
"Digital sovereignty": "Policy and governance",
85+
"Data governance": "Policy and governance",
86+
"Data ownership": "Policy and governance",
87+
"Key Performance Indicators (KPI) for RDM": "Policy and governance",
88+
89+
"Privacy and data protection (GDPR, UAVG)": "Legal and ethical responsibilities",
90+
"Sensitive data/Confidentiality": "Legal and ethical responsibilities",
91+
"Intellectual property rights": "Legal and ethical responsibilities",
92+
"copyright": "Legal and ethical responsibilities",
93+
"patents": "Legal and ethical responsibilities",
94+
"trademarks": "Legal and ethical responsibilities",
95+
"Research in consortia": "Legal and ethical responsibilities",
96+
"Data and software licenses ": "Legal and ethical responsibilities",
97+
"License compatibility": "Legal and ethical responsibilities",
98+
"Information security": "Legal and ethical responsibilities",
99+
"Knowledge security": "Legal and ethical responsibilities",
100+
"European data legislation": "Legal and ethical responsibilities",
101+
"AI Act": "Legal and ethical responsibilities",
102+
"Data Governance Act": "Legal and ethical responsibilities",
103+
"Data Act": "Legal and ethical responsibilities",
104+
"European Health Data Space": "Legal and ethical responsibilities",
105+
"(Cyber)security legislation, e.g. NIS2 Directive": "Legal and ethical responsibilities",
106+
"Trade Secret Protection Act": "Legal and ethical responsibilities",
107+
"Research ethics and integrity": "Legal and ethical responsibilities",
108+
"CARE principles": "Legal and ethical responsibilities",
109+
"Diversity, equity & inclusion": "Legal and ethical responsibilities",
110+
111+
"Needs assessment": "Training and awareness raising",
112+
"Instructional design": "Training and awareness raising",
113+
"FAIR-by-Design methodology": "Training and awareness raising",
114+
"Carpentries methodology": "Training and awareness raising",
115+
"Training andragogy ": "Training and awareness raising",
116+
"Didactic methods": "Training and awareness raising",
117+
"Presentation skills": "Training and awareness raising",
118+
"Written communication skills": "Training and awareness raising",
119+
"Open Educational Resources": "Training and awareness raising",
120+
"Diagnostic, formative and summative assessment": "Training and awareness raising",
121+
"Course evaluation ": "Training and awareness raising",
122+
"Student satisfaction": "Training and awareness raising",
123+
124+
"Networking skills": "Transversal skills",
125+
"Community management": "Transversal skills",
126+
"Existing RDM networks/ communities": "Transversal skills",
127+
"Consultancy": "Transversal skills",
128+
"Advocacy": "Transversal skills",
129+
"Conflict resolution": "Transversal skills",
130+
"Negotiating": "Transversal skills",
131+
"Active listening": "Transversal skills",
132+
"Stakeholder analysis": "Transversal skills",
133+
"Stakeholder engagement": "Transversal skills",
134+
"Organisational development": "Transversal skills",
135+
"Project management (methodologies)": "Transversal skills",
136+
"Change management": "Transversal skills",
137+
"Binding Leadership": "Transversal skills",
138+
"Facilitation": "Transversal skills",
139+
"Teamwork": "Transversal skills"
140+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"post-docs": "researchers",
3+
"PhD's candidate": "researchers",
4+
"PhD student": "researchers",
5+
"principal investigator": "researchers",
6+
"professor": "researchers",
7+
"scientist": "researchers",
8+
9+
"library staff": "research support staff",
10+
"research librarian": "research support staff",
11+
"information specialist": "research support staff",
12+
"archivist": "research support staff",
13+
"repository manager": "research support staff",
14+
"data steward": "research support staff",
15+
"data manager": "research support staff",
16+
"data professional": "research support staff",
17+
"data engineer": "research support staff",
18+
"software engineer": "research support staff",
19+
"data librarian": "research support staff",
20+
21+
"bachelor": "students",
22+
"master": "students",
23+
24+
"teacher": "trainers",
25+
"coaches": "trainers",
26+
"educator": "trainers"
27+
}

lib/ingestors/auto_parsing.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
module Ingestors
2+
module AutoParsing
3+
def auto_parse(var, description)
4+
@auto_parse_cache ||= {}
5+
json_path = File.join(Rails.root, 'lib', 'ingestors', 'auto_parser_mappings', "#{var.to_s}.json")
6+
return nil unless File.exist?(json_path)
7+
8+
mtime = File.mtime(json_path)
9+
cached = @auto_parse_cache[var]
10+
if cached && cached[:mtime] == mtime
11+
mapping = cached[:mapping]
12+
else
13+
mapping = JSON.parse(File.read(json_path))
14+
@auto_parse_cache[var] = { mtime: mtime, mapping: mapping }
15+
end
16+
17+
mapping
18+
.select{ |key, val| description&.downcase&.include?(key.to_s.downcase) }
19+
&.values
20+
&.uniq
21+
end
22+
end
23+
end

0 commit comments

Comments
 (0)