From 45f335636180feeaabc97a7e0637c406764f1baf Mon Sep 17 00:00:00 2001 From: Anika Churilova Date: Mon, 19 Feb 2024 11:21:58 +0100 Subject: [PATCH] search, my dashboard: highlight verified community * Add "Part of" to the global search and user dashboard * closes https://github.com/zenodo/zenodo-rdm/issues/716 --- .../components/DisplayPartOfCommunities.js | 43 +++++++++++++++ .../components/DisplayVerifiedCommunity.js | 53 +++++++++++++++++++ .../components/RecordsResultsListItem.js | 4 ++ .../ComputerTabletUploadsItem.js | 5 ++ .../uploads_items/MobileUploadsItem.js | 5 ++ .../theme/globals/site.overrides | 12 +++++ 6 files changed, 122 insertions(+) create mode 100644 invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayPartOfCommunities.js create mode 100644 invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayVerifiedCommunity.js diff --git a/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayPartOfCommunities.js b/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayPartOfCommunities.js new file mode 100644 index 000000000..68ce4b35a --- /dev/null +++ b/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayPartOfCommunities.js @@ -0,0 +1,43 @@ +// This file is part of InvenioRDM +// Copyright (C) 2024 CERN. +// +// Invenio App RDM is free software; you can redistribute it and/or modify it +// under the terms of the MIT License; see LICENSE file for more details. + +import React from "react"; +import PropTypes from "prop-types"; +import { i18next } from "@translations/invenio_app_rdm/i18next"; + +export const DisplayPartOfCommunities = ({ communities }) => { + const PartOfCommunities = () => { + const communitiesEntries = communities.entries; + if (communitiesEntries) { + return ( + <> + {i18next.t("Part of ")} + {communitiesEntries.map((community, index) => { + if (!(community.id === communities?.default && community?.theme)) { + return ( + <> + + {community.metadata?.title} + + {index !== communitiesEntries.length - 1 && ", "} + + ); + } + })} + + ); + } + }; + return ( +

+ {PartOfCommunities()} +

+ ); +}; + +DisplayPartOfCommunities.propTypes = { + communities: PropTypes.object.isRequired, +}; diff --git a/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayVerifiedCommunity.js b/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayVerifiedCommunity.js new file mode 100644 index 000000000..eebb6f016 --- /dev/null +++ b/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/DisplayVerifiedCommunity.js @@ -0,0 +1,53 @@ +// This file is part of InvenioRDM +// Copyright (C) 2024 CERN. +// +// Invenio App RDM is free software; you can redistribute it and/or modify it +// under the terms of the MIT License; see LICENSE file for more details. + +import React from "react"; +import PropTypes from "prop-types"; +import { Label, Image } from "semantic-ui-react"; + +export const DisplayVerifiedCommunity = ({ communities }) => { + const filterBrandedCommunity = (parentCommunities) => { + const brandedCommunityId = parentCommunities?.default; + const communities = parentCommunities?.entries; + let displayCommunity = null; + + if (communities) { + communities.map((community) => { + if (community.id === brandedCommunityId && community?.theme) { + displayCommunity = community; + } + return displayCommunity; + }); + } + + return displayCommunity; + }; + + const verifiedCommunity = filterBrandedCommunity(communities); + return ( + <> + {verifiedCommunity && ( + + )} + + ); +}; + +DisplayVerifiedCommunity.propTypes = { + communities: PropTypes.object.isRequired, +}; diff --git a/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordsResultsListItem.js b/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordsResultsListItem.js index c7c0be50b..1498408d0 100644 --- a/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordsResultsListItem.js +++ b/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/components/RecordsResultsListItem.js @@ -14,6 +14,8 @@ import PropTypes from "prop-types"; import { Item, Label, Icon } from "semantic-ui-react"; import { buildUID } from "react-searchkit"; import { CompactStats } from "./CompactStats"; +import { DisplayVerifiedCommunity } from "./DisplayVerifiedCommunity"; +import { DisplayPartOfCommunities } from "./DisplayPartOfCommunities"; class RecordsResultsListItem extends Component { render() { @@ -117,6 +119,7 @@ class RecordsResultsListItem extends Component {
+

{createdDate && ( <> @@ -154,6 +157,7 @@ class RecordsResultsListItem extends Component { />

+ diff --git a/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/ComputerTabletUploadsItem.js b/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/ComputerTabletUploadsItem.js index 158bd8254..802b19f46 100644 --- a/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/ComputerTabletUploadsItem.js +++ b/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/ComputerTabletUploadsItem.js @@ -12,6 +12,8 @@ import _get from "lodash/get"; import { Button, Icon, Item, Label } from "semantic-ui-react"; import { SearchItemCreators } from "../../utils"; import { CompactStats } from "../../components/CompactStats"; +import { DisplayVerifiedCommunity } from "../../components/DisplayVerifiedCommunity"; +import { DisplayPartOfCommunities } from "../../components/DisplayPartOfCommunities"; export const ComputerTabletUploadsItem = ({ result, @@ -112,6 +114,8 @@ export const ComputerTabletUploadsItem = ({
+ + {createdDate ? ( <> {i18next.t("Uploaded on {{uploadDate}}", { uploadDate: createdDate })} @@ -136,6 +140,7 @@ export const ComputerTabletUploadsItem = ({ />
+ diff --git a/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/MobileUploadsItem.js b/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/MobileUploadsItem.js index c02e2e138..a01f46bd0 100644 --- a/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/MobileUploadsItem.js +++ b/invenio_app_rdm/theme/assets/semantic-ui/js/invenio_app_rdm/user_dashboard/uploads_items/MobileUploadsItem.js @@ -12,6 +12,8 @@ import _get from "lodash/get"; import { Dropdown, Icon, Item, Label } from "semantic-ui-react"; import { SearchItemCreators } from "../../utils"; import { CompactStats } from "../../components/CompactStats"; +import { DisplayVerifiedCommunity } from "../../components/DisplayVerifiedCommunity"; +import { DisplayPartOfCommunities } from "../../components/DisplayPartOfCommunities"; export const MobileUploadsItem = ({ result, @@ -42,6 +44,7 @@ export const MobileUploadsItem = ({ ); const uniqueViews = _get(result, "stats.all_versions.unique_views", 0); const uniqueDownloads = _get(result, "stats.all_versions.unique_downloads", 0); + return ( @@ -87,6 +90,7 @@ export const MobileUploadsItem = ({ ))}
+ {createdDate ? ( <> {i18next.t("Uploaded on {{uploadDate}}", { @@ -115,6 +119,7 @@ export const MobileUploadsItem = ({
+ diff --git a/invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides b/invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides index 3a1227e24..f560adc56 100644 --- a/invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides +++ b/invenio_app_rdm/theme/assets/semantic-ui/less/invenio_app_rdm/theme/globals/site.overrides @@ -510,3 +510,15 @@ dl.details-list { border: 0; } +.themed-community-label { + font-weight: @normal !important; + color: @white !important; + width: 100%; + height: @26px; +} + +.themed-community-logo { + max-width: 100%; + max-height: 100%; +} +