diff --git a/api/types/common-application-card/schema.js b/api/types/common-application-card/schema.js index e4eee22c..dd49353d 100644 --- a/api/types/common-application-card/schema.js +++ b/api/types/common-application-card/schema.js @@ -109,9 +109,10 @@ export default { children: [ 'location', 'crop', - 'useTopic' + 'useTopic', + 'useSummary', ] - }, + } ] }, properties: { @@ -132,26 +133,34 @@ export default { { const: 'center', title: 'Sous le titre' } ] }, + crop: { + type: 'boolean', + title: "Recadrer l'image pour un rendu uniforme", + description: "Si désactivé, l'image gardera son ratio d'origine", + layout: { + comp: 'switch', + cols: { md: 6 } + }, + default: true + }, useTopic: { type: 'boolean', title: "Utiliser l'image de la première thématique", - description: "Permet d'utiliser l'image de la première thématique du jeu de données si aucune image n'est définie pour ce dernier.", + description: "Permet d'utiliser l'image de la première thématique de la visualisation si aucune image n'est définie pour cette dernière.", layout: { comp: 'switch', cols: { md: 6 } - }, - default: false + } }, - crop: { + useSummary: { type: 'boolean', - title: "Recadrer l'image pour un rendu uniforme", - description: "Si désactivé, l'image gardera son ratio d'origine", + title: 'Utiliser le résumé de la visualisation', + description: "Permet d'utiliser le résumé de la visualisation si aucune image n'est définie pour cette dernière et si l'option 'Afficher le résumé' n'est pas activée.", layout: { comp: 'switch', cols: { md: 6 } - }, - default: true - } + } + }, } }, topics: { diff --git a/api/types/common-dataset-card/schema.js b/api/types/common-dataset-card/schema.js index edbf5d9d..6b4db59f 100644 --- a/api/types/common-dataset-card/schema.js +++ b/api/types/common-dataset-card/schema.js @@ -98,14 +98,15 @@ export default { { if: 'data?.show === true', children: [ - { key: 'location', cols: { md: 6 } }, - { key: 'default', cols: { md: 6 } }, + { key: 'location', cols: { md: 4 } }, + { key: 'default', cols: { md: 4 } }, { key: 'crop', cols: { md: 4 } }, { key: 'useTopic', cols: { md: 4 } }, { key: 'useApplication', cols: { md: 4 } }, - { markdown: '**Ordre de priorité :**\n1. **Image spécifique** (définie directement sur le jeu de données)\n2. **Image de la thématique** (si activé)\n3. **Image de la visualisation** (si activé)\n4. **Image par défaut** (si définie)' } + { key: 'useSummary', cols: { md: 4 } }, + { markdown: '**Ordre de priorité :**\n1. **Image spécifique** (définie directement sur le jeu de données)\n2. **Image de la thématique** (si activé)\n3. **Image de la visualisation** (si activé)\n4. **Image par défaut** (si définie)\n5. **Résumé du jeu de données** (si activé)' } ] - }, + } ] }, properties: { @@ -164,15 +165,19 @@ export default { type: 'boolean', title: "Utiliser l'image de la première thématique", description: "Permet d'utiliser l'image de la première thématique du jeu de données si aucune image n'est définie pour ce dernier.", - layout: 'switch', - default: false + layout: 'switch' }, useApplication: { type: 'boolean', title: "Utiliser l'image de la première visualisation", description: "Permet d'utiliser l'image de la première visualisation qui utilise ce jeu de données si aucune image n'est définie pour ce dernier.", - layout: 'switch', - default: false + layout: 'switch' + }, + useSummary: { + type: 'boolean', + title: 'Utiliser le résumé du jeu de données', + description: "Permet d'utiliser le résumé du jeu de données si aucune image n'est définie pour ce dernier et si l'option 'Afficher le résumé' n'est pas activée.", + layout: 'switch' } } }, diff --git a/api/types/common-event-card/schema.js b/api/types/common-event-card/schema.js index dc6b4d9f..b70438dd 100644 --- a/api/types/common-event-card/schema.js +++ b/api/types/common-event-card/schema.js @@ -70,13 +70,14 @@ export default { layout: { comp: 'card', children: [ - 'show', + { key: 'show', cols: { md: 6 } }, { if: 'data?.show === true', children: [ { key: 'location', cols: { md: 6 } }, { key: 'default', cols: { md: 6 } }, - { key: 'crop', cols: { md: 6 } } + { key: 'crop', cols: { md: 6 } }, + { key: 'useDescription', cols: { md: 6 } } ] } ] @@ -150,6 +151,19 @@ export default { }, layout: { comp: 'switch' }, default: true + }, + useDescription: { + type: 'boolean', + title: 'Use description', + 'x-i18n-title': { + fr: 'Utiliser la description de l\'événement' + }, + description: "Use the event's description when no image is set for it and when 'Show description' is not enabled.", + 'x-i18n-description': { + fr: "Permet d'utiliser la description de l'événement si aucune image n'est définie pour ce dernier et si l'option 'Afficher la description' n'est pas activée." + }, + layout: { comp: 'switch', cols: { md: 4 } }, + default: false } } } diff --git a/api/types/common-news-card/schema.js b/api/types/common-news-card/schema.js index 0db6756d..c320f0ab 100644 --- a/api/types/common-news-card/schema.js +++ b/api/types/common-news-card/schema.js @@ -70,13 +70,14 @@ export default { layout: { comp: 'card', children: [ - 'show', + { key: 'show', cols: { md: 6 } }, { if: 'data?.show === true', children: [ { key: 'location', cols: { md: 6 } }, { key: 'default', cols: { md: 6 } }, - { key: 'crop', cols: { md: 6 } } + { key: 'crop', cols: { md: 6 } }, + { key: 'useDescription', cols: { md: 6 } } ] } ] @@ -150,6 +151,19 @@ export default { }, layout: { comp: 'switch' }, default: true + }, + useDescription: { + type: 'boolean', + title: 'Use description', + 'x-i18n-title': { + fr: 'Utiliser la description de l\'actualité' + }, + description: "Use the news' description when no image is set for it and when 'Show description' is not enabled.", + 'x-i18n-description': { + fr: "Permet d'utiliser la description de l'actualité si aucune image n'est définie pour cette dernière et si l'option 'Afficher la description' n'est pas activée." + }, + layout: { comp: 'switch', cols: { md: 4 } }, + default: false } } } diff --git a/api/types/common-reuse-card/schema.js b/api/types/common-reuse-card/schema.js index d5c8d22a..321e5b21 100644 --- a/api/types/common-reuse-card/schema.js +++ b/api/types/common-reuse-card/schema.js @@ -83,13 +83,14 @@ export default { layout: { comp: 'card', children: [ - 'show', + { key: 'show', cols: { md: 6 } }, { if: 'data?.show === true', children: [ { key: 'location', cols: { md: 6 } }, { key: 'default', cols: { md: 6 } }, - { key: 'crop', cols: { md: 6 } } + { key: 'crop', cols: { md: 6 } }, + { key: 'useSummary', cols: { md: 4 } }, ] } ] @@ -163,6 +164,21 @@ export default { }, layout: { comp: 'switch' }, default: true + }, + useSummary: { + type: 'boolean', + title: 'Use dataset summary', + 'x-i18n-title': { + fr: 'Utiliser le résumé du jeu de données' + }, + description: "Use the dataset's summary when no image is set for it and when 'Show summary' is not enabled.", + 'x-i18n-description': { + fr: "Permet d'utiliser le résumé du jeu de données si aucune image n'est définie pour cette dernière et si l'option 'Afficher le résumé' n'est pas activée." + }, + layout: { + comp: 'switch', + cols: { md: 4 } + } } } } diff --git a/portal/app/components/application/application-card.vue b/portal/app/components/application/application-card.vue index 9b3e38ca..4dd83b09 100644 --- a/portal/app/components/application/application-card.vue +++ b/portal/app/components/application/application-card.vue @@ -81,7 +81,7 @@ {{ application.summary }} @@ -198,6 +198,7 @@ const thumbnailUrl = computed(() => { const topicConfig = portalConfig.value.topics?.find((t) => t.id === application.topics![0]!.id) if (topicConfig?.thumbnail) return getPortalImageSrc(topicConfig.thumbnail, false) } + if (cardConfig.thumbnail?.useSummary && application.summary?.length) return undefined return `${application.href}/capture?updatedAt=${application.updatedAt}` }) diff --git a/portal/app/components/dataset/dataset-card.vue b/portal/app/components/dataset/dataset-card.vue index b82c966e..4f6a7696 100644 --- a/portal/app/components/dataset/dataset-card.vue +++ b/portal/app/components/dataset/dataset-card.vue @@ -81,7 +81,7 @@ {{ dataset.summary }} diff --git a/portal/app/components/event/event-card.vue b/portal/app/components/event/event-card.vue index 690babc3..5fdfdbc6 100644 --- a/portal/app/components/event/event-card.vue +++ b/portal/app/components/event/event-card.vue @@ -70,7 +70,7 @@ /> - + {{ pageConfig.description }} diff --git a/portal/app/components/news/news-card.vue b/portal/app/components/news/news-card.vue index a6ea7760..6ef42d25 100644 --- a/portal/app/components/news/news-card.vue +++ b/portal/app/components/news/news-card.vue @@ -66,7 +66,7 @@ /> - + {{ pageConfig.description }} diff --git a/portal/app/components/reuse/reuse-card.vue b/portal/app/components/reuse/reuse-card.vue index 90360361..c9e7ba07 100644 --- a/portal/app/components/reuse/reuse-card.vue +++ b/portal/app/components/reuse/reuse-card.vue @@ -81,7 +81,7 @@ {{ reuse.config.summary }} diff --git a/tests/features/portal-rendering/seo-indexing.e2e.spec.ts b/tests/features/portal-rendering/seo-indexing.e2e.spec.ts index 9d554e5e..ece1c3f2 100644 --- a/tests/features/portal-rendering/seo-indexing.e2e.spec.ts +++ b/tests/features/portal-rendering/seo-indexing.e2e.spec.ts @@ -122,7 +122,6 @@ test.describe('SEO / indexation', () => { const okRobots = await (await request.get(portalUrl(indexable._id) + '/robots.txt')).text() expect(okRobots).toContain('Allow: /') expect(okRobots).toContain('Sitemap:') - expect(okRobots).not.toContain('Disallow: /') const koRobots = await (await request.get(portalUrl(hidden._id) + '/robots.txt')).text() expect(koRobots).toContain('Disallow: /')