diff --git a/src/app/app.module.ts b/src/app/app.module.ts index e0f0f14d19236c10a2dd5a25ad434ee7f7d7f58b..3b32114895f05ab9f3c42b064243f304c81c554c 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -42,6 +42,7 @@ export function initTarteaucitronService(tarteaucitronService: TarteAuCitronServ resolve(); }); } + } export function initAppConfig(appConfigService: AppConfigService) { diff --git a/src/app/core/services/tarteaucitron.service.ts b/src/app/core/services/tarteaucitron.service.ts index bc279692e537e9849e91ca5d46cb373c0dffdedf..2a442d1f160f8827d4815bbad5fc1efad3d38899 100644 --- a/src/app/core/services/tarteaucitron.service.ts +++ b/src/app/core/services/tarteaucitron.service.ts @@ -19,7 +19,8 @@ export class TarteAuCitronService { "showAlertSmall" : false, "cookieslist" : true, - "iconPosition": "BottomRight", + "iconPosition": "BottomLeft", + "showIcon": false, "AcceptAllCta" : true, "DenyAllCta": false, @@ -44,8 +45,18 @@ export class TarteAuCitronService { tarteaucitron.user.matomoHost = APP_CONFIG.statistics.matomoHost; (tarteaucitron.job = tarteaucitron.job || []).push('matomo'); + (tarteaucitron.job = tarteaucitron.job || []).push('youtube'); resolve(); }); } + + public initEvents() + { + if (tarteaucitron) { + console.log('passage ici.'); + tarteaucitron.initEvents.loadEvent(); + } + } + } diff --git a/src/app/dataset-detail/services/dataset-detail.service.ts b/src/app/dataset-detail/services/dataset-detail.service.ts index 684d5d713c14adf3b763d3a71988aa5ebb0a92a9..c3cbd8f529df3f3fa3c528b327aa9fd9da4eafdf 100644 --- a/src/app/dataset-detail/services/dataset-detail.service.ts +++ b/src/app/dataset-detail/services/dataset-detail.service.ts @@ -62,7 +62,7 @@ export class DatasetDetailService { }); // Get the metadata return this._elasticsearchService.getDatasetMetadata(slugOrUuid).pipe( - map((e) => { + map((e:any) => { if (e.hits.hits.length > 0) { const metadata = new Metadata(e.hits.hits[0]._source['metadata-fr']); this._dataset.uuid = metadata.geonet.uuid; diff --git a/src/app/editorialisation/components/cms-page/cms-page.component.scss b/src/app/editorialisation/components/cms-page/cms-page.component.scss index 839fae89e321efae3a96c2f124c626bcdd5d4d22..1222aec706bf5157c0e1eb4dff908daaba052741 100644 --- a/src/app/editorialisation/components/cms-page/cms-page.component.scss +++ b/src/app/editorialisation/components/cms-page/cms-page.component.scss @@ -7,4 +7,5 @@ line-height: 1.2; padding: 1rem; } + } diff --git a/src/app/editorialisation/components/cms-page/cms-page.component.ts b/src/app/editorialisation/components/cms-page/cms-page.component.ts index 6a7f533c037cd072a6e1ac953ce2de2683776bfa..f686d1b3cd01776768203e080ec69b7892a7b858 100644 --- a/src/app/editorialisation/components/cms-page/cms-page.component.ts +++ b/src/app/editorialisation/components/cms-page/cms-page.component.ts @@ -1,7 +1,8 @@ -import { Component, OnInit } from '@angular/core'; +import { AfterViewInit, Component, OnInit } from '@angular/core'; import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; import { ActivatedRoute, Router } from '@angular/router'; import { environment } from '../../../../environments/environment'; +import { TarteAuCitronService } from '../../../core/services'; import { ToolsService } from '../../../core/services/tools.service'; import { AppRoutes } from '../../../routes'; import { IPageHeaderInfo } from '../../../shared/models'; @@ -13,7 +14,7 @@ import { EditorialisationService, SeoSErvice } from '../../services'; templateUrl: './cms-page.component.html', styleUrls: ['./cms-page.component.scss'], }) -export class CMSPageComponent implements OnInit { +export class CMSPageComponent implements OnInit, AfterViewInit { page: CMSContent; safePageContent: SafeHtml; pageHeaderInfo: IPageHeaderInfo = { @@ -27,6 +28,7 @@ export class CMSPageComponent implements OnInit { private _toolsService: ToolsService, private _router: Router, private _seoService: SeoSErvice, + private _tacService: TarteAuCitronService, ) { } @@ -54,4 +56,9 @@ export class CMSPageComponent implements OnInit { }); }); } + + ngAfterViewInit() + { + this._tacService.initEvents(); + } } diff --git a/src/app/editorialisation/components/cms-post-detail/cms-post-detail.component.ts b/src/app/editorialisation/components/cms-post-detail/cms-post-detail.component.ts index 310ac417c79eca8f113de644b1a24b796b9bea81..c08728022571d49fcf909f0615f872bbe6d9f11d 100644 --- a/src/app/editorialisation/components/cms-post-detail/cms-post-detail.component.ts +++ b/src/app/editorialisation/components/cms-post-detail/cms-post-detail.component.ts @@ -1,6 +1,6 @@ import { DatePipe } from '@angular/common'; -import { Component, OnInit } from '@angular/core'; -import { DomSanitizer, Meta, SafeHtml, Title } from '@angular/platform-browser'; +import { AfterViewInit, Component, OnInit } from '@angular/core'; +import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; import { ActivatedRoute, Router } from '@angular/router'; import { notificationMessages } from '../../../../i18n/traductions'; import { ToolsService } from '../../../core/services/tools.service'; @@ -9,14 +9,14 @@ import { SeoSErvice } from '../../services/seo.service' import { AppRoutes } from '../../../routes'; import { IPageHeaderInfo, Metadata, typesMetadata } from '../../../shared/models'; import { CMSContent } from '../../models/cms-content.model'; -import { environment } from '../../../../environments/environment'; +import { TarteAuCitronService } from '../../../core/services'; @Component({ selector: 'app-cms-post-detail', templateUrl: './cms-post-detail.component.html', styleUrls: ['./cms-post-detail.component.scss'], }) -export class CMSPostDetailComponent implements OnInit { +export class CMSPostDetailComponent implements OnInit, AfterViewInit { AppRoutes = AppRoutes; post: CMSContent; @@ -40,8 +40,7 @@ export class CMSPostDetailComponent implements OnInit { private _elasticSearchService: ElasticsearchService, private _seoService: SeoSErvice, private _toolsService: ToolsService, - private _titleService: Title, - private _meta: Meta, + private _tacService: TarteAuCitronService, ) { } @@ -84,6 +83,11 @@ export class CMSPostDetailComponent implements OnInit { } } + ngAfterViewInit() + { + this._tacService.initEvents(); + } + setBackupImage(metadata: Metadata) { diff --git a/src/app/editorialisation/models/cms-content.model.ts b/src/app/editorialisation/models/cms-content.model.ts index 9d7a45d9b5874ee610471fdad552c6feb8f1ea7b..9bf4702508605efb7eb607c351d067bbad89cc30 100644 --- a/src/app/editorialisation/models/cms-content.model.ts +++ b/src/app/editorialisation/models/cms-content.model.ts @@ -1,4 +1,3 @@ - export interface IESCMSResponse { 'content-fr': IGhostContentResponse; type: string; @@ -111,7 +110,8 @@ export class GhostContentResponse { og_description?: string; og_image?: string; - constructor(data: IGhostContentResponse) { + constructor(data: IGhostContentResponse) + { this.id = data.id; this.status = (data.status != null) ? data.status : ''; this.title = (data.title != null) ? data.title : ''; @@ -143,9 +143,44 @@ export class GhostContentResponse { }); + this.html = this.youtubeParser(this.html); + this.author = (data.primary_author) ? data.primary_author : null; this.highlight = []; } + + private youtubeParser (content:string): string { + // recherche de youtube + if (content.search('iframe') > 0) { + console.log(content); + var parser = new DOMParser(); + var htmlContent = parser.parseFromString(content, 'text/html'); + + var iframes = htmlContent.getElementsByTagName('iframe'); + + for (var i = 0 ; i < iframes.length ; i++) { + let src = iframes[i].getAttribute('src'); + var link = src.match(new RegExp(/(http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.+/mgi)); + + if (link.length > 0) { + // on récupère la derniere portion + var vid: string[]|string = link[0].match(new RegExp(/embed\/[a-zA-Z0-9]*/mgi) ); + vid = vid[0].slice(6); + + var youtubeDiv = document.createElement('div'); + youtubeDiv.setAttribute('class','youtube_player'); + youtubeDiv.setAttribute('videoID', vid); + youtubeDiv.setAttribute('width', '100%'); + youtubeDiv.setAttribute('height','300px'); + + + iframes[i].parentNode.replaceChild(youtubeDiv,iframes[i]); + } + } + content = htmlContent.getElementsByTagName('body')[0].innerHTML; + } + return content; + } } export interface ICMSMedia { diff --git a/src/scss/ghost-style.scss b/src/scss/ghost-style.scss index 6d1855fdb362f6c2e8622c56604233674bd77c5e..6e7f079b8e66fa50322c3eb5bc390085e0316620 100644 --- a/src/scss/ghost-style.scss +++ b/src/scss/ghost-style.scss @@ -69,6 +69,10 @@ height: 300px; } + .youtube_player iframe { + height: 300px; + } + iframe:not([width]) { width: 100%; }