Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// This file is part of CDS RDM
// Copyright (C) 2026 CERN.
//
// CDS RDM is free software; you can redistribute it and/or modify it
// under the terms of the GPL-2.0 License; see LICENSE file for more details.

import _get from "lodash/get";
import _truncate from "lodash/truncate";
import PropTypes from "prop-types";
import React from "react";
import { Item } from "semantic-ui-react";

export const CDSRecordsResultsListItemTitle = ({
result,
titleTruncated,
viewLink,
}) => {
const subtitle = _get(result, "ui.additional_titles", []).find(
(additionalTitle) => additionalTitle.type?.id === "subtitle"
)?.title;

return (
<>
<Item.Header as="h2" className="theme-primary-text">
<a href={viewLink}>{titleTruncated}</a>
</Item.Header>
{subtitle && (
<Item.Meta className="record-subtitle truncate-lines-1">
{_truncate(subtitle, { length: 100 })}
</Item.Meta>
)}
</>
);
};

CDSRecordsResultsListItemTitle.propTypes = {
result: PropTypes.object.isRequired,
titleTruncated: PropTypes.string.isRequired,
viewLink: PropTypes.string.isRequired,
};
4 changes: 4 additions & 0 deletions assets/js/invenio_app_rdm/overridableRegistry/mapping.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
CDSRecordsResultsListItemDescription,
CDSRecordsResultsListItemLabelsAfter,
} from "../../components/search/overrides/CDSRecordsResultsListItemDescription";
import { CDSRecordsResultsListItemTitle } from "../../components/search/overrides/CDSRecordsResultsListItemTitle";
import { CDSAffiliationsSuggestions } from "../../components/deposit/overrides/CDSAffiliationsSuggestions";
import { CLCSync } from "../../components/record_details/clc_sync";
import { CommitteeApprovalManageSection } from "../../components/record_details/CommitteeApproval";
Expand Down Expand Up @@ -58,6 +59,9 @@ export const overriddenComponents = {
CDSRecordsResultsListItemLabelsAfter,
"InvenioCommunities.DetailsSearch.RecordsResultsListItem.labels.after":
CDSRecordsResultsListItemLabelsAfter,
"InvenioAppRdm.Search.RecordsResultsListItem.title": CDSRecordsResultsListItemTitle,
"InvenioCommunities.DetailsSearch.RecordsResultsListItem.title":
CDSRecordsResultsListItemTitle,
"InvenioAppRdm.Search.RecordsResultsListItem.description":
CDSRecordsResultsListItemDescription,
"InvenioCommunities.DetailsSearch.RecordsResultsListItem.description":
Expand Down
8 changes: 8 additions & 0 deletions assets/less/cds-rdm/globals/site.overrides
Original file line number Diff line number Diff line change
Expand Up @@ -147,3 +147,11 @@
max-width: 100%;
}

#record-subtitle,
.record-subtitle {
color: @mutedTextColor;
font-weight: normal;
margin-top: -0.5em;
font-size: 1rem;
}

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ authors = [
license = "GPL-2.0"
requires-python = ">=3.9"
dependencies = [
"invenio-app-rdm[opensearch2]>=v15.0.0b3.dev1",
"invenio-app-rdm[opensearch2]>=v15.0.0b4.dev0 ",
"invenio-cern-sync",
"invenio-preservation-sync==0.5.0",
"invenio-vcs>=0.0.1",
Expand Down
23 changes: 23 additions & 0 deletions site/cds_rdm/templates/semantic-ui/cds_rdm/records/detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,29 @@
{%- endblock record_header -%}


{%- set subtitle = namespace(value=None) %}
{%- for additional_title in record.ui.additional_titles %}
{%- if additional_title.type.id == "subtitle" %}
{%- set subtitle.value = additional_title.title %}
{%- endif %}
{%- endfor %}

{%- block record_title -%}
<section id="record-title-section" aria-label="{{ _('Record title, authors and contributors') }}">
<h1 id="record-title" class="wrap-overflowing-text">{{ metadata.title }}</h1>

{% if subtitle.value %}
<h2 id="record-subtitle" class="wrap-overflowing-text">{{ subtitle.value }}</h2>
{% endif %}

{% if record.ui.creators or record.ui.contributors %}
<section id="creatibutors" aria-label="{{ _('Creators and contributors') }}">
{%- include "invenio_app_rdm/records/details/creatibutors.html" %}
</section>
{% endif %}
</section>
{%- endblock record_title -%}

{%- block record_content -%}
{{super()}}
{% if clc_sync_entry and clc_sync_entry.clc_url %}
Expand Down
8 changes: 4 additions & 4 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading