UNPKG

design-comuni-plone-theme

Version:
342 lines (332 loc) 11.5 kB
import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { UniversalLink } from '@plone/volto/components'; import { richTextHasContent, RichTextSection, OfficeCard, Gallery, Attachment, } from 'design-comuni-plone-theme/components/ItaliaTheme/View'; import { contentFolderHasItems, viewDate, } from 'design-comuni-plone-theme/helpers'; const messages = defineMessages({ ruolo: { id: 'ruolo', defaultMessage: 'Incarico', }, atto_nomina: { id: 'atto_nomina', defaultMessage: 'Atto di nomina', }, strutture_correlate: { id: 'persona_strutture_correlate', defaultMessage: 'Fa parte di', }, responsabile_di: { id: 'responsabile_di', defaultMessage: 'Responsabile di', }, assessore_di: { id: 'assessore_di', defaultMessage: 'Assessore di', }, competenze: { id: 'competenze', defaultMessage: 'Competenze', }, compensi: { id: 'compensi', defaultMessage: 'Compensi', }, importi_di_viaggio_e_o_servizi: { id: 'importi_di_viaggio_e_o_servizi', default: 'Importi di viaggio e/o servizi', }, deleghe: { id: 'deleghe', defaultMessage: 'Deleghe', }, tipologia_incarico: { id: 'tipologia_incarico', defaultMessage: 'Tipo di incarico', }, data_insediamento: { id: 'data_insediamento', defaultMessage: 'Data di insediamento', }, data_inizio_incarico: { id: 'data_inizio_incarico', defaultMessage: "Data di inizio dell'incarico", }, biografia: { id: 'biografia', defaultMessage: 'Biografia', }, foto_attivita_politica: { id: 'foto_attivita_politica', defaultMessage: "Foto dell'attività politica", }, data_conclusione_incarico_label: { id: 'data_conclusione_incarico_label', defaultMessage: "Data di fine dell'incarico", }, altri_incarichi: { id: 'altri_incarichi', defaultMessage: 'Altri incarichi', }, }); const PersonaRuolo = ({ content }) => { const intl = useIntl(); return ( <> {content?.incarichi_persona?.length > 0 && ( <React.Fragment key={content?.incarichi_persona[0]?.id}> <RichTextSection tag_id="incarico" title={intl.formatMessage(messages.ruolo)} > <div className="font-serif mb-3"> <p>{content?.incarichi_persona[0]?.title}</p> {content?.incarichi_persona[0]?.atto_di_nomina && ( <UniversalLink href={content?.incarichi_persona[0]?.atto_di_nomina} > {intl.formatMessage(messages.atto_nomina)} </UniversalLink> )} </div> </RichTextSection> {content.incarichi_persona[0].data_inizio_incarico && ( <RichTextSection tag_id="data_inizio_incarico" title={intl.formatMessage(messages.data_inizio_incarico)} > <div className="font-serif"> {viewDate( intl.locale, content.incarichi_persona[0].data_inizio_incarico, 'DD MMMM Y', )} </div> </RichTextSection> )} {content.incarichi_persona[0].data_conclusione_incarico && ( <RichTextSection tag_id="data_conclusione_incarico" title={intl.formatMessage( messages.data_conclusione_incarico_label, )} > <div className="font-serif"> {viewDate( intl.locale, content.incarichi_persona[0].data_conclusione_incarico, 'DD MMMM Y', )} </div> </RichTextSection> )} {content.incarichi_persona[0].data_insediamento && ( <RichTextSection tag_id="data_insediamento" title={intl.formatMessage(messages.data_insediamento)} > <div className="font-serif"> {viewDate( intl.locale, content.incarichi_persona[0].data_insediamento, 'DD MMMM Y', )} </div> </RichTextSection> )} {content.incarichi_persona[0]?.tipologia_incarico?.title && ( <RichTextSection tag_id="tipologia_incarico" title={intl.formatMessage(messages.tipologia_incarico)} > <div className="font-serif"> {content.incarichi_persona[0].tipologia_incarico.title} </div> </RichTextSection> )} {(richTextHasContent(content.incarichi_persona[0].compensi) || content.incarichi_persona[0]?.compensi_file?.length > 0) && ( <RichTextSection tag_id="compensi" title={intl.formatMessage(messages.compensi)} data={content.incarichi_persona[0].compensi} > {content.incarichi_persona[0]?.compensi_file?.length > 0 && ( <div className="compensi-item mb-2"> <div className="card-wrapper card-teaser-wrapper card-teaser-wrapper-equal"> {content.incarichi_persona[0]?.compensi_file.map((file) => { let itemURL = '#'; if (file['@type'] === 'File') { itemURL = `${file['@id']}/@@download/file`; } else if (file['@type'] === 'Link') { itemURL = file.remoteUrl?.length > 0 ? file.remoteUrl : file['@id']; } else { itemURL = file['@id']; } return ( <Attachment key={file['@id']} title={file.title} description={file.description} download_url={itemURL} item={file} /> ); })} </div> </div> )} </RichTextSection> )} {content.incarichi_persona[0]?.importi_di_viaggio_e_o_servizi ?.length > 0 && ( <RichTextSection tag_id="importi-di-viaggio" title={intl.formatMessage( messages.importi_di_viaggio_e_o_servizi, )} data={content.incarichi_persona[0].importi_viaggio_servizio} > {content.incarichi_persona[0]?.importi_di_viaggio_e_o_servizi ?.length > 0 && ( <div className="compensi-item mb-2"> <div className="card-wrapper card-teaser-wrapper card-teaser-wrapper-equal"> {content.incarichi_persona[0]?.importi_di_viaggio_e_o_servizi.map( (file) => { let itemURL = '#'; if (file['@type'] === 'File') { itemURL = `${file['@id']}/@@download/file`; } else if (file['@type'] === 'Link') { itemURL = file.remoteUrl?.length > 0 ? file.remoteUrl : file['@id']; } else { itemURL = file['@id']; } return ( <Attachment key={file['@id']} title={file.title} description={file.description} download_url={itemURL} item={file} /> ); }, )} </div> </div> )} </RichTextSection> )} </React.Fragment> )} {content.incarichi_persona?.length > 1 && ( <RichTextSection tag_id="altri_incarichi" title={intl.formatMessage(messages.altri_incarichi)} > <ul> {content.incarichi_persona.map((incarico, index) => index > 0 ? ( <li key={index}> <UniversalLink href={incarico['@id']}> {incarico.title} </UniversalLink> </li> ) : null, )} </ul> </RichTextSection> )} {content.assessore_di?.length > 0 && ( <RichTextSection tag_id="assessore_di" title={intl.formatMessage(messages.assessore_di)} > <div className="card-wrapper card-teaser-wrapper card-teaser-wrapper-equal"> {content.assessore_di.map((item, i) => ( <OfficeCard key={item['@id']} office={item} size="big" /> ))} </div> </RichTextSection> )} {content.responsabile_di?.length > 0 && ( <RichTextSection tag_id="responsabile_di" title={intl.formatMessage(messages.responsabile_di)} > <div className="card-wrapper card-teaser-wrapper card-teaser-wrapper-equal"> {content.responsabile_di.map((item, i) => ( <OfficeCard key={item['@id']} office={item} size="big" /> ))} </div> </RichTextSection> )} {content.strutture_correlate?.length > 0 && ( <RichTextSection tag_id="strutture_correlate" title={intl.formatMessage(messages.strutture_correlate)} > <div className="card-wrapper card-teaser-wrapper card-teaser-wrapper-equal"> {content.strutture_correlate.map((item, i) => ( <OfficeCard key={item['@id']} office={item} size="big" /> ))} </div> </RichTextSection> )} {richTextHasContent(content?.competenze) && ( <RichTextSection tag_id="competenze" title={intl.formatMessage(messages.competenze)} data={content.competenze} /> )} {richTextHasContent(content?.deleghe) && ( <RichTextSection tag_id="deleghe" title={intl.formatMessage(messages.deleghe)} data={content.deleghe} /> )} {richTextHasContent(content?.biografia) > 0 && ( <RichTextSection tag_id="biografia" title={intl.formatMessage(messages.biografia)} data={content.biografia} /> )} {contentFolderHasItems(content, 'foto-e-attivita-politica') && ( <Gallery content={content} folder_name="foto-e-attivita-politica" title={intl.formatMessage(messages.foto_attivita_politica)} /> )} {/* {strutture.length > 0 && ( <div className="mb-5 mt-3"> <h5>{intl.formatMessage(messages.responsabile_di)}</h5> <div className="card-wrapper card-teaser-wrapper card-teaser-wrapper-equal"> {strutture.map((item, i) => ( <OfficeCard key={item['@id']} office={item} /> ))} </div> </div> )} */} </> ); }; export default PersonaRuolo;