Skip to content

Commit

Permalink
Show related items
Browse files Browse the repository at this point in the history
  • Loading branch information
wesleybl committed Jul 30, 2024
1 parent d056fcc commit 29b2d9c
Show file tree
Hide file tree
Showing 23 changed files with 355 additions and 1 deletion.
5 changes: 5 additions & 0 deletions packages/volto/locales/ca/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2801,6 +2801,11 @@ msgstr "Registrar-se"
msgid "Registration form"
msgstr "Formulari d'inscripció"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/de/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2800,6 +2800,11 @@ msgstr "Registrieren"
msgid "Registration form"
msgstr "Registrierungsformular"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/en/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2795,6 +2795,11 @@ msgstr ""
msgid "Registration form"
msgstr ""

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/es/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2802,6 +2802,11 @@ msgstr "Registro"
msgid "Registration form"
msgstr "Formulario de registro"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/eu/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2802,6 +2802,11 @@ msgstr "Izena eman"
msgid "Registration form"
msgstr "Erregistro formularioa"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/fi/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2800,6 +2800,11 @@ msgstr "Rekisteröidy"
msgid "Registration form"
msgstr "Rekisteröitymislomake"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/fr/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2802,6 +2802,11 @@ msgstr "S'enregistrer"
msgid "Registration form"
msgstr "Formulaire d'enregistrement"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/hi/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2795,6 +2795,11 @@ msgstr "रजिस्टर करें"
msgid "Registration form"
msgstr "रजिस्ट्रेशन फ़ॉर्म"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/it/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2795,6 +2795,11 @@ msgstr "Registrati"
msgid "Registration form"
msgstr "Form di iscrizione"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/ja/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2800,6 +2800,11 @@ msgstr "登録"
msgid "Registration form"
msgstr "登録フォーム"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/nl/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2799,6 +2799,11 @@ msgstr ""
msgid "Registration form"
msgstr ""

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/pt/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2800,6 +2800,11 @@ msgstr "Registar"
msgid "Registration form"
msgstr "Formulário de registo"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/pt_BR/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2801,6 +2801,11 @@ msgstr "Cadastro"
msgid "Registration form"
msgstr "Formulário de cadastro"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr "Itens relacionados"

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/ro/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2795,6 +2795,11 @@ msgstr "Înregistrare"
msgid "Registration form"
msgstr "Formular de înregistrare"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
7 changes: 6 additions & 1 deletion packages/volto/locales/volto.pot
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Plone\n"
"POT-Creation-Date: 2024-07-24T09:39:31.887Z\n"
"POT-Creation-Date: 2024-07-30T20:44:58.534Z\n"
"Last-Translator: Plone i18n <[email protected]>\n"
"Language-Team: Plone i18n <[email protected]>\n"
"Content-Type: text/plain; charset=utf-8\n"
Expand Down Expand Up @@ -2797,6 +2797,11 @@ msgstr ""
msgid "Registration form"
msgstr ""

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
5 changes: 5 additions & 0 deletions packages/volto/locales/zh_CN/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2801,6 +2801,11 @@ msgstr "注册"
msgid "Registration form"
msgstr "注册表单"

#. Default: "Related Items"
#: components/theme/RelatedItems/RelatedItems
msgid "Related Items"
msgstr ""

#. Default: "Relation"
#: components/manage/Controlpanels/Relations/RelationsMatrix
#: helpers/MessageLabels/MessageLabels
Expand Down
2 changes: 2 additions & 0 deletions packages/volto/news/3740.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- Show related items.
@wesleybl
1 change: 1 addition & 0 deletions packages/volto/src/components/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ export { default as Title } from '@plone/volto/components/theme/Title/Title';
export { default as DefaultView } from '@plone/volto/components/theme/View/DefaultView';
export { default as Pagination } from '@plone/volto/components/theme/Pagination/Pagination';
export { default as Tags } from '@plone/volto/components/theme/Tags/Tags';
export { default as RelatedItems } from '@plone/volto/components/theme/RelatedItems/RelatedItems';
export { default as OutdatedBrowser } from '@plone/volto/components/theme/OutdatedBrowser/OutdatedBrowser';
export { default as LanguageSelector } from '@plone/volto/components/theme/LanguageSelector/LanguageSelector';
export { default as RenderBlocks } from '@plone/volto/components/theme/View/RenderBlocks';
Expand Down
74 changes: 74 additions & 0 deletions packages/volto/src/components/theme/RelatedItems/RelatedItems.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/**
* RelatedItems component.
* @module components/theme/RelatedItems/RelatedItems
*/

import React from 'react';
import { UniversalLink } from '@plone/volto/components';
import { defineMessages, injectIntl } from 'react-intl';
import PropTypes from 'prop-types';
import { Container } from 'semantic-ui-react';

const messages = defineMessages({
relatedItems: {
id: 'Related Items',
defaultMessage: 'Related Items',
},
});

/**
* Related Items component.
* @function RelatedItems
* @param {array} tags Array of related items.
* @returns {string} Markup of the component.
*/

const RelatedItems = ({ relatedItems, intl }) =>
relatedItems && relatedItems.length > 0 ? (
<Container>
<h4 className="ui header">{intl.formatMessage(messages.relatedItems)}</h4>
<div className="ui list">
{relatedItems.map((relatedItem) =>
relatedItem ? (
<div className="item" key={relatedItem['@id']}>
<div className="content">
<UniversalLink className="header" item={relatedItem}>
<div>{relatedItem['title']}</div>
<div className="description">
{relatedItem['description']}
</div>
</UniversalLink>
</div>
</div>
) : null,
)}
</div>
</Container>
) : (
<span />
);

/**
* Property types.
* @property {Object} propTypes Property types.
* @static
*/
RelatedItems.propTypes = {
relatedItems: PropTypes.arrayOf(
PropTypes.shape({
'@id': PropTypes.string.isRequired,
title: PropTypes.string.isRequired,
}),
),
};

/**
* Default properties.
* @property {Object} defaultProps Default properties.
* @static
*/
RelatedItems.defaultProps = {
RelatedItems: null,
};

export default injectIntl(RelatedItems);
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
import React from 'react';
import renderer from 'react-test-renderer';
import configureStore from 'redux-mock-store';
import { Provider } from 'react-intl-redux';
import { MemoryRouter } from 'react-router-dom';

import RelatedItems from './RelatedItems';

const mockStore = configureStore();

describe('Related Items', () => {
it('renders without related items', () => {
const store = mockStore({
intl: {
locale: 'en',
messages: {},
},
});
const component = renderer.create(
<Provider store={store}>
<MemoryRouter>
<RelatedItems />
</MemoryRouter>
</Provider>,
);
const json = component.toJSON();
expect(json).toMatchSnapshot();
});

it('renders with related items', () => {
const store = mockStore({
intl: {
locale: 'en',
messages: {},
},
});
const relatedItems = [
{
'@id': '/test-1',
title: 'Title 1',
description: 'Description 1',
},
{
'@id': '/test-2',
title: 'Title 2',
description: 'Description 2',
},
];
const component = renderer.create(
<Provider store={store}>
<MemoryRouter>
<RelatedItems relatedItems={relatedItems} />
</MemoryRouter>
</Provider>,
);
const json = component.toJSON();
expect(json).toMatchSnapshot();
});

it('renders with related items has null', () => {
const store = mockStore({
intl: {
locale: 'en',
messages: {},
},
});
const relatedItems = [
{
'@id': '/test-1',
title: 'Title 1',
description: 'Description 1',
},
null,
];
const component = renderer.create(
<Provider store={store}>
<MemoryRouter>
<RelatedItems relatedItems={relatedItems} />
</MemoryRouter>
</Provider>,
);
const json = component.toJSON();
expect(json).toMatchSnapshot();
});
});
Loading

0 comments on commit 29b2d9c

Please sign in to comment.