Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: added information on recurrence exception dates in event subtitle - 11 #830

Merged
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
1 change: 1 addition & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@

### Migliorie

- Se vengono aggiunte o rimosse date dalla ricorrenza di un CT evento, nel sottotitolo viene aggiunta l'indicazione di controllare le eccezioni nella sezione apposita.
- Il sottotitolo del CT Evento mostra il range di date per tutti gli eventi con ricorrenza o con una data di fine diversa dalla data di inizio.

### Novità
Expand Down
5 changes: 5 additions & 0 deletions locales/de/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -1998,6 +1998,11 @@ msgstr ""
msgid "exceeded_chars"
msgstr ""

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
# defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
msgid "exceptionDates"
msgstr ""

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
# defaultMessage: Scadenza
msgid "expire"
Expand Down
5 changes: 5 additions & 0 deletions locales/en/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -1983,6 +1983,11 @@ msgstr "Read more"
msgid "exceeded_chars"
msgstr ""

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
# defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
msgid "exceptionDates"
msgstr "with some exceptions. Please see the dedicated section for more information."

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
# defaultMessage: Scadenza
msgid "expire"
Expand Down
5 changes: 5 additions & 0 deletions locales/es/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -1992,6 +1992,11 @@ msgstr ""
msgid "exceeded_chars"
msgstr "El texto excede la longitud recomendada"

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
# defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
msgid "exceptionDates"
msgstr ""

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
# defaultMessage: Scadenza
msgid "expire"
Expand Down
5 changes: 5 additions & 0 deletions locales/fr/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -2000,6 +2000,11 @@ msgstr ""
msgid "exceeded_chars"
msgstr ""

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
# defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
msgid "exceptionDates"
msgstr ""

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
# defaultMessage: Scadenza
msgid "expire"
Expand Down
5 changes: 5 additions & 0 deletions locales/it/LC_MESSAGES/volto.po
Original file line number Diff line number Diff line change
Expand Up @@ -1983,6 +1983,11 @@ msgstr "Leggi di più"
msgid "exceeded_chars"
msgstr "Il testo supera la lunghezza consigliata perciò verrà tagliato."

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
# defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
msgid "exceptionDates"
msgstr "con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata."

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
# defaultMessage: Scadenza
msgid "expire"
Expand Down
7 changes: 6 additions & 1 deletion 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-11-25T14:46:11.571Z\n"
"POT-Creation-Date: 2024-12-12T10:58:07.184Z\n"
"Last-Translator: Plone i18n <[email protected]>\n"
"Language-Team: Plone i18n <[email protected]>\n"
"MIME-Version: 1.0\n"
Expand Down Expand Up @@ -1985,6 +1985,11 @@ msgstr ""
msgid "exceeded_chars"
msgstr ""

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderEventDates
# defaultMessage: con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.
msgid "exceptionDates"
msgstr ""

#: components/ItaliaTheme/View/Commons/PageHeader/PageHeaderDates
# defaultMessage: Scadenza
msgid "expire"
Expand Down
21 changes: 10 additions & 11 deletions src/components/ItaliaTheme/View/Commons/Dates.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@ import { rrulei18n } from '@plone/volto/components/manage/Widgets/RecurrenceWidg
import { injectLazyLibs } from '@plone/volto/helpers/Loadable/Loadable';
import { Card, CardTitle, CardBody } from 'design-react-kit';
import PropTypes from 'prop-types';
import { viewDate, getRealEventEnd } from 'design-comuni-plone-theme/helpers';
import {
viewDate,
getRealEventEnd,
getRecurrenceExceptionDates,
} from 'design-comuni-plone-theme/helpers';

const messages = defineMessages({
start: {
Expand Down Expand Up @@ -88,14 +92,9 @@ const Dates = ({ content, show_image, moment: momentlib, rrule }) => {

const openEnd = content?.open_end;
const wholeDay = content?.whole_day;
const rdates = rruleSet?.rdates() ?? [];
const exdates = rruleSet?.exdates() ?? [];
const additionalDates = rdates.reduce((acc, curr) => {
const isExdate = exdates.some((b) => b.toString() === curr.toString());
if (!isExdate) {
return [...acc, curr];
} else return acc;
}, []);

const { additionalDates, removedDates } =
getRecurrenceExceptionDates(rruleSet);

return content ? (
<>
Expand Down Expand Up @@ -173,10 +172,10 @@ const Dates = ({ content, show_image, moment: momentlib, rrule }) => {
))}
</div>
)}
{exdates.length > 0 && (
{removedDates.length > 0 && (
<div className="mt-4">
<h5>{intl.formatMessage(messages.excluded_dates)}</h5>
{exdates.map((exDate) => (
{removedDates.map((exDate) => (
<div className="font-serif">
{viewDate(intl.locale, exDate, 'dddd DD MMMM YYYY')}
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,21 @@ import PropTypes from 'prop-types';

import { rrulei18n } from '@plone/volto/components/manage/Widgets/RecurrenceWidget/Utils';
import { injectLazyLibs } from '@plone/volto/helpers/Loadable/Loadable';
import { getRealEventEnd } from 'design-comuni-plone-theme/helpers';
import {
getRealEventEnd,
getRecurrenceExceptionDates,
} from 'design-comuni-plone-theme/helpers';

const messages = defineMessages({
dateStart: {
id: 'dal {dateStart} fino a conclusione',
defaultMessage: 'dal {dateStart} fino a conclusione',
},
exceptionDates: {
id: 'exceptionDates',
defaultMessage:
'con alcune eccezioni. Per maggiori informazioni controllare la sezione dedicata.',
},
});

/**
Expand Down Expand Up @@ -82,6 +90,10 @@ const PageHeaderEventDates = ({ content, moment, rrule }) => {
// format and save date into new variable depending on recurrence of event
const endDate = Moment(actualEndDate).format('DD-MM-Y');

// check if there are exception dates added to the recurrence to add info
const { additionalDates, removedDates } =
getRecurrenceExceptionDates(rruleSet);

return content['@type'] === 'Event' ? (
<p className="h4 py-2">
{(content.recurrence || !renderOnlyStart) &&
Expand All @@ -96,7 +108,12 @@ const PageHeaderEventDates = ({ content, moment, rrule }) => {
dateStart: `${Moment(content.start).format('DD-MM-Y')}`,
})}
{eventRecurrenceText && (
<div className="recurrence small">{eventRecurrenceText}</div>
<div className="recurrence small">
<span>{eventRecurrenceText}</span>
{(additionalDates.length > 0 || removedDates.length > 0) && (
<span> {intl.formatMessage(messages.exceptionDates)}</span>
)}
</div>
)}
</p>
) : null;
Expand Down
19 changes: 19 additions & 0 deletions src/helpers/dates.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,22 @@ export const getRealEventEnd = (content, rruleSet) => {
}
return actualEndDate;
};

export const getRecurrenceExceptionDates = (rruleSet) => {
const rdates = rruleSet?.rdates() ?? [];
const exdates = rruleSet?.exdates() ?? [];

const additionalDates = rdates.reduce((acc, curr) => {
const isExdate = exdates.some((b) => b.toString() === curr.toString());
if (!isExdate) {
return [...acc, curr];
} else return acc;
}, []);

const exceptionDates = {
additionalDates: additionalDates,
removedDates: exdates,
};

return exceptionDates;
};
1 change: 1 addition & 0 deletions src/helpers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ export {
viewDate,
getRealStartAndEndWithRecurrence,
getRealEventEnd,
getRecurrenceExceptionDates,
} from 'design-comuni-plone-theme/helpers/dates';
export { getSiteProperty } from 'design-comuni-plone-theme/helpers/config';
export { useDebouncedEffect } from 'design-comuni-plone-theme/helpers/debounce';
Expand Down
Loading