9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/jekyll-open-sdg-plugins/metadata_schema_to_config.rb', line 9
def generate(site)
language_config = site.config['languages']
form_settings = site.config['indicator_metadata_form']
t = site.data['translations']
lang = language_config[0]
if form_settings && form_settings['enabled']
scopes = ['national', 'global']
if form_settings && form_settings.has_key?('scopes')
if form_settings['scopes'].kind_of?(Array) && form_settings['scopes'].length() > 0
scopes = form_settings['scopes']
end
end
exclude_fields = []
if form_settings && form_settings.has_key?('exclude_fields')
if form_settings['exclude_fields'].kind_of?(Array) && form_settings['exclude_fields'].length() > 0
exclude_fields = form_settings['exclude_fields']
end
end
if form_settings && form_settings.has_key?('language') && form_settings['language'] != ''
lang = form_settings['language']
end
schema = {
"type" => "object",
"title" => opensdg_translate_key('indicator.edit_metadata', t, lang),
"properties" => {},
}
site.data['schema'].each do |field|
field_name = field['name']
field_scope = field['field']['scope']
next unless scopes.include?(field_scope)
next if exclude_fields.include?(field_name)
to_translate = field_name
if field['field'].has_key?('translation_key')
to_translate = field['field']['translation_key']
elsif t[lang].has_key?('metadata_fields') && t[lang]['metadata_fields'].has_key?(field_name)
to_translate = 'metadata_fields.' + field_name
elsif field['field'].has_key?('label')
to_translate = field['field']['label']
end
field_label = opensdg_translate_key(to_translate, t, lang)
schema['properties'][field_name] = {
"type" => "string",
"title" => field_label,
"description" => 'Scope: ' + field_scope + ', Field: ' + field_name,
}
end
site.data['schema-indicator-metadata'] = schema
end
end
|