Skip to content

Commit

Permalink
feat: added information on recurrence exception dates in event subtit…
Browse files Browse the repository at this point in the history
…le (#829)

* feat: added information on recurrence exception dates in event subtitle

* fix: show condition

* fix: additional dates string
  • Loading branch information
sabrina-bongiovanni authored Dec 19, 2024
1 parent f558351 commit a3815f3
Show file tree
Hide file tree
Showing 11 changed files with 83 additions and 16 deletions.
2 changes: 1 addition & 1 deletion RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +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.

### 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 @@ -2070,6 +2070,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 @@ -2055,6 +2055,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 @@ -2064,6 +2064,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 @@ -2072,6 +2072,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 @@ -2055,6 +2055,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-25T15:31:18.424Z\n"
"POT-Creation-Date: 2024-12-12T10:59:56.243Z\n"
"Last-Translator: Plone i18n <[email protected]>\n"
"Language-Team: Plone i18n <[email protected]>\n"
"MIME-Version: 1.0\n"
Expand Down Expand Up @@ -2057,6 +2057,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 @@ -87,14 +91,9 @@ const Dates = ({ content, show_image, moment: momentlib, rrule }) => {
const end = viewDate(intl.locale, actualEndDate);
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 @@ -172,10 +171,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 All @@ -36,7 +44,7 @@ const PageHeaderEventDates = ({ content, moment, rrule }) => {

const actualEndDate = getRealEventEnd(content, rruleSet);

const wholeDay = content?.whole_day;
// const wholeDay = content?.whole_day;
const openEnd = content?.open_end;
// show only start when event starts and ends in same day or if a recurrence is set
// because to set a recurrence, the event must have the same date as start and end date
Expand Down Expand Up @@ -75,6 +83,11 @@ 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">
{!Moment(content.end).isSame(actualEndDate) &&
Expand All @@ -89,7 +102,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 @@ -53,3 +53,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 @@ -24,6 +24,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

0 comments on commit a3815f3

Please sign in to comment.