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 (#830)

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

* fix: show condition

* fix: additional dates string

* fix: additional dates punctuation
  • Loading branch information
sabrina-bongiovanni authored Dec 19, 2024
1 parent 0581d8b commit f9d7f09
Show file tree
Hide file tree
Showing 11 changed files with 81 additions and 14 deletions.
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

0 comments on commit f9d7f09

Please sign in to comment.