From 9d9fecfef701ac8d9bee99d9e4d836edf7e592af Mon Sep 17 00:00:00 2001 From: Thorge Petersen <petersen@rz.uni-kiel.de> Date: Tue, 24 Sep 2024 15:08:48 +0200 Subject: [PATCH] Add package custom fields --- .../snippets/package_metadata_fields.html | 6 +++ .../snippets/custom_form_fields.html | 46 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 ckanext/odsh/templates/snippets/custom_form_fields.html diff --git a/ckanext/odsh/templates/package/snippets/package_metadata_fields.html b/ckanext/odsh/templates/package/snippets/package_metadata_fields.html index 9662b44..8805af0 100644 --- a/ckanext/odsh/templates/package/snippets/package_metadata_fields.html +++ b/ckanext/odsh/templates/package/snippets/package_metadata_fields.html @@ -15,4 +15,10 @@ {{ form.input(field, label=_('Is replaced by'), placeholder=_('https://'), value=value, error=error, classes=['control-full']) }} + {% block package_metadata_fields_custom %} + {% block custom_fields %} + {% snippet 'snippets/custom_form_fields.html', extras=data.extras, errors=errors, limit=3 %} + {% endblock %} + {% endblock %} + {% endblock %} \ No newline at end of file diff --git a/ckanext/odsh/templates/snippets/custom_form_fields.html b/ckanext/odsh/templates/snippets/custom_form_fields.html new file mode 100644 index 0000000..e9983ec --- /dev/null +++ b/ckanext/odsh/templates/snippets/custom_form_fields.html @@ -0,0 +1,46 @@ +{# +Adds a block of custom form fields. + +extras - The fields to add. +errors - A dict of errors for the fields. +limit - The total number of fields that should be output. +Example: + + {% snippet 'snippets/custom_form_fields.html', extras=data.extras, errors=errors, limit=3 %} + +#} +{% import "macros/form.html" as form %} + +<div data-module="custom-fields"> + {% set custom_extras = ['licenseAttributionByText', 'temporal_start', 'temporal_end', 'issued', 'spatial_uri', 'groups'] %} + {% for extra in extras %} + {% if extra.key not in custom_extras %} + {% set prefix = 'extras__%d__' % (loop.index0 + (custom_extras|count)) %} + {{ form.custom( + names=(prefix ~ 'key', prefix ~ 'value', prefix ~ 'deleted'), + id='field-extras-%d' % loop.index0, + label=_('Custom Field'), + values=(extra.key, extra.value, extra.deleted), + error=errors[prefix ~ 'key'] or errors[prefix ~ 'value'] + ) }} + {% endif %} + {% endfor %} + + {# Add a max of 3 empty columns #} + {% set total_extras = data.extras|count %} + {% if total_extras <= (custom_extras|count) %}{% set total_extras = (custom_extras|count) %}{% endif %} + {% set empty_extras = (limit or 3) - total_extras %} + {% if empty_extras <= 0 %}{% set empty_extras = 1 %}{% endif %} + + {% for extra in range(total_extras, total_extras + empty_extras) %} + {% set index = loop.index0 + total_extras %} + {% set prefix = 'extras__%d__' % index %} + {{ form.custom( + names=(prefix ~ 'key', prefix ~ 'value', prefix ~ 'deleted'), + id='field-extras-%d' % index, + label=_('Custom Field'), + values=(extra.key, extra.value, extra.deleted), + error=errors[prefix ~ 'key'] or errors[prefix ~ 'value'] + ) }} + {% endfor %} +</div> -- GitLab