Skip to content

Commit 5237260

Browse files
zubeydecivelekzzacharo
authored andcommitted
refactor(ui): support custom file display name resolver
1 parent 7717057 commit 5237260

File tree

2 files changed

+33
-14
lines changed

2 files changed

+33
-14
lines changed

invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/detail.html

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
{%- set title = record_ui["metadata"]["title"] %}
2727
{%- set metadata = record_ui["metadata"] %}
2828

29+
<!-- Shared namespace for files to allow overridability on child blocks while maintaining reference to parent values -->
30+
{% set files_ns = namespace(preview_file=None, files=[]) %}
31+
2932
{%- set can_curate_record = permissions is defined and (permissions.can_edit or permissions.can_review) %}
3033

3134
<!-- preview_submission_request is set to true when coming from a community submission request -->
@@ -288,14 +291,19 @@
288291
aria-label="{{ _('Files') }}">
289292
{%- if permissions.can_read_files -%}
290293
{# record has files AND user can see files #}
291-
{%- set files = files | order_entries | selectattr("status", "==", "completed") | list %}
292-
{%- if files|length > 0 -%}
294+
{# Shared namespace for files (outside blocks) #}
295+
{%- set files_ns.files = files | order_entries | selectattr("status", "==", "completed") | list %}
296+
{%- if files_ns.files|length > 0 -%}
293297
<h2 id="files-heading">{{ _('Files') }}</h2>
294-
{%- if files|has_previewable_files -%}
295-
{%-set preview_file = files|select_preview_file(default_preview=record_ui["files"]["default_preview"]) %}
296-
{{ preview_file_box(preview_file, record_ui["id"], is_preview, record, include_deleted) }}
298+
{%- if files_ns.files|has_previewable_files -%}
299+
{%-set files_ns.preview_file = files_ns.files|select_preview_file(default_preview=record_ui["files"]["default_preview"]) %}
300+
{%- block record_file_preview -%}
301+
{{ preview_file_box(files_ns.preview_file, record_ui["id"], is_preview, record, include_deleted) }}
302+
{%- endblock record_file_preview -%}
297303
{%- endif -%}
298-
{{ file_list_box(files, record_ui["id"], is_preview, include_deleted, record, permissions) }}
304+
{%- block record_file_list -%}
305+
{{ file_list_box(files_ns.files, record_ui["id"], is_preview, include_deleted, record, permissions) }}
306+
{%- endblock record_file_list -%}
299307
{% endif %}
300308
{% else %}
301309
{# record has files BUT user does not have permission to see files #}

invenio_app_rdm/records_ui/templates/semantic-ui/invenio_app_rdm/records/macros/files.html

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,13 @@
3131
{%- endmacro %}
3232

3333

34-
{% macro preview_file_box(file, pid, is_preview, record, include_deleted) %}
34+
{% macro preview_file_box(file, pid, is_preview, record, include_deleted, display_name=None) %}
3535
{%- set is_remote_file = file.transfer.type == transfer_types.REMOTE %}
36+
{%- if display_name %}
37+
{%- set human_readable_file_name = display_name(file) or file.key %}
38+
{%- else %}
39+
{%- set human_readable_file_name = file.key %}
40+
{%- endif %}
3641
<div class="ui accordion panel mb-10 {{record.ui.access_status.id}}" href="#files-preview-accordion-panel">
3742
<h3 class="active title panel-heading {{ record.ui.access_status.id }} m-0">
3843
<div
@@ -44,7 +49,7 @@ <h3 class="active title panel-heading {{ record.ui.access_status.id }} m-0">
4449
class="trigger"
4550
aria-label="{{ _('File preview') }}"
4651
>
47-
<span id="preview-file-title">{{ file.key }}</span>
52+
<span id="preview-file-title">{{ human_readable_file_name }}</span>
4853
<i class="angle right icon" aria-hidden="true"></i>
4954
</div>
5055
</h3>
@@ -82,7 +87,8 @@ <h3 class="active title panel-heading {{ record.ui.access_status.id }} m-0">
8287
download_endpoint='invenio_app_rdm_records.record_file_download',
8388
preview_endpoint='invenio_app_rdm_records.record_file_preview',
8489
is_media=false,
85-
permissions=None
90+
permissions=None,
91+
display_name=None
8692
) %}
8793
<table class="ui striped table files fluid {{record.ui.access_status.id}}">
8894
<thead>
@@ -108,6 +114,11 @@ <h3 class="active title panel-heading {{ record.ui.access_status.id }} m-0">
108114
{% for file in files %}
109115
{% if not file.access.hidden %}
110116
{%- set is_remote_file = file.transfer.type == transfer_types.REMOTE %}
117+
{%- if display_name %}
118+
{%- set human_readable_file_name = display_name(file) or file.key %}
119+
{%- else %}
120+
{%- set human_readable_file_name = file.key %}
121+
{%- endif %}
111122
{% if is_preview %}
112123
{%- set file_url_download = url_for(download_endpoint, pid_value=pid, filename=file.key, download=1, preview=1) %}
113124
{%- set file_url_preview = url_for(preview_endpoint, pid_value=pid, filename=file.key, preview=1, include_deleted=include_deleted_value) %}
@@ -120,7 +131,7 @@ <h3 class="active title panel-heading {{ record.ui.access_status.id }} m-0">
120131
<tr>
121132
<td class="ten wide">
122133
<div>
123-
<a href="{{ file_url_download }}">{{ file.key }}</a>
134+
<a href="{{ file_url_download }}">{{ human_readable_file_name }}</a>
124135
</div>
125136
{%- if not is_remote_file %}
126137
<small class="ui text-muted font-tiny">{{ file.checksum or _("Checksum not yet calculated.") }}
@@ -151,7 +162,7 @@ <h3 class="active title panel-heading {{ record.ui.access_status.id }} m-0">
151162
{%- endmacro %}
152163

153164

154-
{% macro file_list_box(files, pid, is_preview, include_deleted, record, permissions) %}
165+
{% macro file_list_box(files, pid, is_preview, include_deleted, record, permissions, display_name=None) %}
155166
{%- set binary_sizes = not config.APP_RDM_DISPLAY_DECIMAL_FILE_SIZES %}
156167
<div class="ui accordion panel mb-10 {{ record.ui.access_status.id }}" href="#files-list-accordion-panel">
157168
<h3 class="active title panel-heading {{ record.ui.access_status.id }} m-0">
@@ -174,13 +185,13 @@ <h4 class="inline">{{ record.ui.access_status.title_l10n }}</h4>
174185
</div>
175186
{% endif %}
176187
<div>
177-
{{ file_list(files, pid, is_preview, include_deleted, record=record,download_endpoint="invenio_app_rdm_records.record_file_download", permissions=permissions) }}
188+
{{ file_list(files, pid, is_preview, include_deleted, record=record,download_endpoint="invenio_app_rdm_records.record_file_download", permissions=permissions, display_name=display_name) }}
178189
</div>
179190
</div>
180191
</div>
181192
{%- endmacro %}
182193

183-
{% macro media_file_list_box(files, pid, is_preview, include_deleted, record, permissions) %}
194+
{% macro media_file_list_box(files, pid, is_preview, include_deleted, record, permissions, display_name=None) %}
184195
{%- set binary_sizes = not config.APP_RDM_DISPLAY_DECIMAL_FILE_SIZES %}
185196
<div class="ui accordion panel mb-10 {{ record.access.record }}" href="#media-files-preview-accordion-panel">
186197
<h3 class="active title panel-heading {{ record.access.record }} m-0">
@@ -204,7 +215,7 @@ <h4 class="inline">{{ record.ui.access_status.title_l10n }}</h4>
204215
</div>
205216
{% endif %}
206217
<div>
207-
{{ file_list(files, pid, is_preview, include_deleted, record=record, with_preview=false, download_endpoint="invenio_app_rdm_records.record_media_file_download", is_media=true, permissions=permissions) }}
218+
{{ file_list(files, pid, is_preview, include_deleted, record=record, with_preview=false, download_endpoint="invenio_app_rdm_records.record_media_file_download", is_media=true, permissions=permissions, display_name=display_name) }}
208219
</div>
209220
</div>
210221
</div>

0 commit comments

Comments
 (0)