Vai al contenuto

Short link automatici

Featured Replies

Inviato

Ciao ragazzi sono sempre io... Ma per voi è un bene così il forum ha nuovi post xD... Insomma mybb ... Vbulletin e altre board avevano la peculiarità di shortare in automatico i link .. se metto un link di Amazon www.amazon.it/oggetto282882828822/hdhhdjdjeECCECCECC una volta postato usciva solo amazon.it/nomeoggetto per dire URL veniva shortato in auto. È normale che su una piattaforma da 200 e passa euro non c'è la features ?  C'è da scaricare o attivare qualcosa ?

Screenshot_20200429-082127_Chrome.thumb.jpg.4ec5111bcf4c8d6d971ead782c0552e2.jpg

Risolta da BomAle

Vai alla soluzione
Inviato
  • Autore
Il 29/4/2020 at 13:26, BomAle ha scritto:

potresti usare bit.ly altrimenti potrebbe interessarti il plugin:

External Links Rich Embed 

https://dump.video/i/LuMkXf.mp4

https://dump.video/i/EFOtTg.mp4

Forse fa al caso mio e procedo al acquisto.. ma tu sai se funziona con Amazon ? Sarebbe cruciale per me.. e nel caso funzionasse... Se i link messi mostrerebbero le anteprime dei prodotti linkati

Inviato
1 ora fa, Luca ha scritto:

Forse fa al caso mio e procedo al acquisto.. ma tu sai se funziona con Amazon ? Sarebbe cruciale per me.. e nel caso funzionasse... Se i link messi mostrerebbero le anteprime dei prodotti linkati

In caso possiamo personalizzare il template aggiungendo altre informazioni, sicuramente l'immagine del prodotto la mostra nel blocco.

Inviato
  • Autore
3 ore fa, BomAle ha scritto:

In caso possiamo personalizzare il template aggiungendo altre informazioni, sicuramente l'immagine del prodotto la mostra nel blocco.

Allora il developer mi ha risposto così su invision Power board Screenshot_20200430-203147_Chrome.thumb.jpg.3eff0747670f817eec04a6bb9813c438.jpg

 

Dato che il plugin costa ben 20 dollari . Prima di spenderli vorrei sapere che funziona bene 

 

Se poi voi mi dite che riuscite a fare un plugin del genere ma con almeno Amazon funzionante sarò ben contento di inviarvi i miei soldi. Se qualcuno se la sente di creare il plugin me lo dice che gli mando i soldi su PayPal

Inviato
16 ore fa, Luca ha scritto:

Dato che il plugin costa ben 20 dollari . Prima di spenderli vorrei sapere che funziona bene

Se poi voi mi dite che riuscite a fare un plugin del genere ma con almeno Amazon funzionante sarò ben contento di inviarvi i miei soldi. Se qualcuno se la sente di creare il plugin me lo dice che gli mando i soldi su PayPal

avevi bisogno di accorciare gli url inizialmente e se non sbaglio quel plugin lo fa sostituendo il link testuale con il titolo della pagina o un blocco con titolo descrizione e immagine di condivisione presa dai meta tags, poi se vuoi mostrare altre informazioni ti serve un api (costo del prodotto, corriere, venditore...)

Modificato da BomAle

Inviato
  • Admin

Credo che quel plugin come dice anche Alessandro, ti renda l'url più user-friendly esempio:

https://www.amazon.it/MSI-PCIe-RTX2080Ti-Gaming-Trio/dp/B07GQYQ2YW/ref=sr_1_2?__mk_it_IT=ÅMÅŽÕÑ&crid=OQ3014FTGCO4&dchild=1&keywords=rtx+2080+ti&qid=1588333145&sprefix=rtx%2Caps%2C189&sr=8-2

lo converte in:

MSI PCIe RTX2080Ti Gaming X Trio 11GB DDR6: Amazon.it: Informatica

senza crearti un anteprima, questo perché Amazon non usa il protocollo Open Graph, prova a chiedere allo sviluppatore se con amazon però "pulisce" l'url ancorandolo a un testo anche senza creare un oembed.

Inviato
  • Autore
1 ora fa, BomAle ha scritto:

avevi bisogno di accorciare gli url inizialmente e se non sbaglio quel plugin lo fa sostituendo il link testuale con il titolo della pagina o un blocco con titolo descrizione e immagine di condivisione presa dai meta tags, poi se vuoi mostrare altre informazioni ti serve un api (costo del prodotto, corriere, venditore...)

Ma si può fare seocndo te ? È fattibile?

13 minuti fa, Askancy ha scritto:

Credo che quel plugin come dice anche Alessandro, ti renda l'url più user-friendly esempio:

https://www.amazon.it/MSI-PCIe-RTX2080Ti-Gaming-Trio/dp/B07GQYQ2YW/ref=sr_1_2?__mk_it_IT=ÅMÅŽÕÑ&crid=OQ3014FTGCO4&dchild=1&keywords=rtx+2080+ti&qid=1588333145&sprefix=rtx%2Caps%2C189&sr=8-2

lo converte in:

MSI PCIe RTX2080Ti Gaming X Trio 11GB DDR6: Amazon.it: Informatica

senza crearti un anteprima, questo perché Amazon non usa il protocollo Open Graph, prova a chiedere allo sviluppatore se con amazon però "pulisce" l'url ancorandolo a un testo anche senza creare un oembed.

Come sempre sei geniale ! A me proprio questo serve ma il developer non risponde . Posso provare comprando il plugin... E sperare che faccia questo 

Inviato
29 minuti fa, Luca ha scritto:

Ma si può fare seocndo te ? È fattibile?

si può anche senza un api key(V5), con tecniche tipo php scraping (phpquery già disponibile nel framework di invision basta solo richiamarlo) ci vuole integrazione con il ckeditor e un pò di personalizzazione nel template (html, css, js)

legalmente però avresti dei problemi perchè il contenuto non è disponibile liberamente ma coperto da copyright, se invece vuoi alternative piuttosto che incollare un url puoi usare un "widget html" (che è legale poichè viene distribuito via iframe)

https://programma-affiliazione.amazon.it/home/productlinks/customize?asin=B01MCZ7RRZ

OaMYOcD.png

Modificato da BomAle

Inviato
  • Autore
25 minuti fa, BomAle ha scritto:

si può anche senza un api key(V5), con tecniche tipo php scraping (phpquery già disponibile nel framework di invision basta solo richiamarlo) ci vuole integrazione con il ckeditor e un pò di personalizzazione nel template (html, css, js)

legalmente però avresti dei problemi perchè il contenuto non è disponibile liberamente ma coperto da copyright, se invece vuoi alternative piuttosto che incollare un url puoi usare un "widget html" (che è legale poichè viene distribuito via iframe)


https://programma-affiliazione.amazon.it/home/productlinks/customize?asin=B01MCZ7RRZ

OaMYOcD.png

Nono voglio tutta roba legale.. non voglio essere citato per dei link. Vabbè posso sacrificate le anteprime... Ma almeno il link viene. "pulito " con quel plugin ?

Inviato
8 minuti fa, Luca ha scritto:

Nono voglio tutta roba legale.. non voglio essere citato per dei link. Vabbè posso sacrificate le anteprime... Ma almeno il link viene. "pulito " con quel plugin ?

non saprei a questo punto chiederei una demo all'autore, cosi puoi direttamente avere riscontro

Il 29/4/2020 at 13:26, BomAle ha scritto:

Modificato da BomAle

Inviato
  • Autore
3 ore fa, BomAle ha scritto:

non saprei a questo punto chiederei una demo all'autore, cosi puoi direttamente avere riscontro

Screenshot_20200501-175316_Chrome.thumb.jpg.3a83b7ab2128535dcba807d3af8f1bf5.jpgmi devo arrendere... Lui 0. Se è e riuscite potreste crearmelo voi anche senza anteprime e vi pago. Ditemi voi. Mybb puliva i link gratis !

Inviato
  • Autore
Inviato

potrebbe in remoto però come teamviewer o skype...

altrimenti chiedi come viene il risultato dei tuoi link

Modificato da BomAle

Inviato
1 ora fa, Luca ha scritto:

comprato

spero ne valga il prezzo, anche perchè era uno di quelli che avrei acquistato e studiato :zizi:

Inviato
  • Autore
3 ore fa, BomAle ha scritto:

spero ne valga il prezzo, anche perchè era uno di quelli che avrei acquistato e studiato :zizi:

si ma sorge un problemino, forese legato al mio editor o forse non è propio un problema.... praticamente mi va solo a sinistra il link citato, anche se dal blog cito una discussione me la mette a sinistra... è un bug o una peculiarità di IPB ?

 

111.thumb.PNG.1c4c09330ad4b24b7a9030be1a2b57ef.PNG112.thumb.PNG.81cff75d1f9d009a2721d2ac8dd97967.PNG113.thumb.PNG.e2087425d2602859895a8882b1de0eff.PNG

aggiungo::

 

per essere un semplice plugin sembra parecchio complesso.... è bello grande

Inviato

è un problema legato al ckeditor o alla configurazione di invision/ckeditor secondo me, perchè capita anche su invisionita

                    f  

bisogna far presente via ticket

o tramite admincp > supporto > something don't work ...

altrimenti dovresti cambiare la configurazione nell'editor ma questa non è un opzione per un sito pubblico a mio avviso

		this.allowedContent = {
			'caption div h1 h2 h3 h4 h5 h6 p pre td th li': {
				// Do not add elements, but only text-align style if element is validated by other rule.
				propertiesOnly: true,
				styles: this.cssClassName ? null : 'text-align',
				classes: this.cssClassName || null
			}
		};

		// In enter mode BR we need to allow here for div, because when non other
		// feature allows div justify is the only plugin that uses it.
		if ( editor.config.enterMode == CKEDITOR.ENTER_BR )
			this.allowedContent.div = true;

\applications\core\dev\ckeditor\plugins\justify\plugin.js https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-enterMode

 

Modificato da BomAle

Inviato
  • Admin

Il problema è che utilizzando CKEditor (cosa che odio e continuerò la mia crociata finché non sarà rimosso) a ogni a capo crea un paragrafo nuovo <p>, quando si incolla un link genera un oembed lo mette fuori dal paragrafo essendo un iframe. Se invece vuoi avere maggior libertà di allineamento dell'oembed modificare la classe iframe[data-embedContent] aggiungendo "display: unset;".

Perché se uno tramite il tasto sorgente dell'editor modifica l'oembed in questo modo:

<p style="text-align:center;"><iframe allowfullscreen="" class="ipsEmbed_finishedLoading" data-controller="core.front.core.autosizeiframe" data-embedauthorid="3352" data-embedcontent="" data-embedid="embed7935110864" scrolling="no" src="https://invisionita.it/topic/6625-short-link-automatici/?do=embed"></iframe></p>

Quindi: Rimuove gli style imposti dal javascript e inserisce l'iframe all'interno di un paragrafo con lo style allineato al centro funziona.

Ecco alcuni esempi:

 

Immagine.png

Inviato
  • Autore

scusa te la mia ignoranza.... quindi che devo fa ?

Inviato

ti farei aprire un ticket, perchè non sembra possibile allineare i link embed "iframe" (check CKEDITOR.plugins._replaceLinkWithEmbed) perchè la funzione javascript _replaceLinkWithEmbed sostituisce i paragrafi genitori con l'iframe togliendo la possibilità di allineamento.

altrimenti provvedo io

	this._replaceLinkWithEmbed = function( link, image, width, height ) {
		/* Set defaults, we can't use default function parameters here to keep IE11 compatibility */
		var width = width || 0;
		var height = height || 0;
		var embedLocalOnly = 0;
		
		/* Fire the AJAX request */
		ips.getAjax()( editor.config.controller + '&do=validateLink', {
			data: {
				url: link.getAttribute('href').replace( /&amp;/g, '&' ),
				image: image,
				width: width,
				height: height,
				embedLocalOnly: $( '.' + editor.id ).closest('[data-ipsEditor]').attr('data-ipsEditor-autoEmbed')
			},
			type: 'post'
		})
		/* Handle the response */
		.done(function( response ){
			
			/* If it's embeddable, embed it! */
			if ( response.embed ) {
				
				/* Init */
				var embedWidget, originalParent, splitParent;
				
				/* Create the new */
				var newElement = CKEDITOR.dom.element.createFromHtml( response.preview );
				
				/* If it's an image, we can just go ahead and stick it in */
				if ( newElement.getName() == 'img' ) {
					newElement.replace( link );
				}
				
				/* Otherwise for proper embeds like iframes, it's a bit more complicated */
				else {
					
					/* First we have to split up the surrounding paragraph - so find the closest <p> */
					var parents = link.getParents();
					for ( i in parents.reverse() ) {
						if ( parents[i].getName() == 'p' ) {
														
							/* Break into two <p>s */
							link.breakParent( parents[i] );
							
							/* But drop them if there's nothing in them */
							var previous = link.getPrevious();
							if ( previous && previous.getChildCount() == 0 ) {
								previous.remove();
							} else {
								originalParent = previous;
							}
							var next = link.getNext();
							if ( next && ( next.getChildCount(0) || ( next.getChildCount(1) && next.getChild(0).is('br') ) ) ) {
								var theOneAfterNext = next.getNext();
								if ( theOneAfterNext && ( next.getChildCount(0) || ( next.getChildCount(1) && next.getChild(0).is('br') ) ) ) {
									next.remove();
									next = theOneAfterNext;
								}
							}
							splitParent = next;
							
							
							/* And sure we keep the caret in the second one */
							var newRange = editor.createRange();
							newRange.moveToElementEditEnd( next );
							editor.getSelection().selectRanges( [ newRange ] );
							
							break;
						}
					}
					
					/* Then actually replace it */
					newElement.replace( link );
					
					/* Then turn it into a widget */
					var embedWidget = editor.widgets.initOn( newElement, 'ipsembedded' );
					$( document ).trigger('contentChange', [ $( '.' + editor.id ).closest('[data-ipsEditor]') ]);
				}
				
				/* Show notification */
				var embedMessage = $( '.' + editor.id ).closest('[data-ipsEditor]').find('[data-role="embedMessage"]');
				embedMessage.slideDown();
				
				/* Function to handle cancels */
				var hideEmbedMessage = function(){
					embedMessage.slideUp();
					embedMessage.find('[data-action="keepEmbeddedMedia"]').off( 'click.ipsEmbed' );
					embedMessage.find('[data-action="removeEmbeddedMedia"]').off( 'click.ipsEmbed' );
				};
				
				/* After 2.5 seconds, more typing will remove */
				setTimeout(function(){
					editor.once( 'key', function() {
						hideEmbedMessage();
					});
					editor.once( 'setData', function() {
						hideEmbedMessage();
					});
				}, 2500);
				
				/* Event for "Keep Formatting" button */
				embedMessage.find('[data-action="keepEmbeddedMedia"]').on( 'click.ipsEmbed', function(){
					/* Select editor again */
					editor.focus();
					
					/* And hide the message */
					hideEmbedMessage();
				});
				
				/* Event for "Remove Formatting" button */
				embedMessage.find('[data-action="removeEmbeddedMedia"]').on( 'click.ipsEmbed', function(){
					
					/* Change back to link and select editor again */
					if ( embedWidget ) {
						embedWidget.destroy();
					}
					link.replace( newElement );
					link.setAttribute('ipsNoEmbed', 'true');
					
					/* Embedded content with content before and after */
					if ( splitParent && originalParent ) {
						link.move( splitParent, true );
						splitParent.moveChildren( originalParent );
					}
					/* Embedded content on it's own line */
					else if ( splitParent ) {
						var paragraph = new CKEDITOR.dom.element('p');
						paragraph.insertBefore( link );
						link.move( paragraph );
					}
					
					/* Select editor again */
					editor.focus();
										
					/* And hide the message */
					hideEmbedMessage();
				});
			}
			/* Otherwise, note that we've already checked this one and it's not embeddable */
			else {
				link.setAttribute('ipsNoEmbed', 'true');

				/* If there was an error, show it */
				if( response.errorMessage )
				{
					/* Show notification */
					var embedFailure = $( '.' + editor.id ).closest('[data-ipsEditor]').find('[data-role="embedFailMessage"]');
					embedFailure.find('p').html( response.errorMessage );
					embedFailure.slideDown();

					/* After 2.5 seconds, more typing will remove */
					setTimeout(function(){
						editor.once( 'key', function() {
							embedFailure.slideUp();
						});
						editor.once( 'setData', function() {
							embedFailure.slideUp();
						});
					}, 2500);	
				}
			}
		})
		.fail(function( jqXHR ){
			link.setAttribute('ipsNoEmbed', 'true');

			/* If there was an error, show it */
			var embedFailure = $( '.' + editor.id ).closest('[data-ipsEditor]').find('[data-role="embedFailMessage"]');
			embedFailure.find('p').html( ips.getString( 'embed_error_message_admin', { error: jqXHR.statusText + ': ' + jqXHR.responseText } ) );
			embedFailure.slideDown();

			/* After 2.5 seconds, more typing will remove */
			setTimeout(function(){
				editor.once( 'key', function() {
					embedFailure.slideUp();
				});
				editor.once( 'setData', function() {
					embedFailure.slideUp();
				});
			}, 2500);	
		});
		
	};

Modificato da BomAle

Inviato
  • Autore
13 minuti fa, BomAle ha scritto:

ti farei aprire un ticket, perchè non sembra possibile allineare i link embed "iframe" (check CKEDITOR.plugins._replaceLinkWithEmbed) perchè la funzione javascript _replaceLinkWithEmbed sostituisce i paragrafi genitori con l'iframe togliendo la possibilità di allineamento.

altrimenti provvedo io

 

  Nascondi Contenuti

 



	this._replaceLinkWithEmbed = function( link, image, width, height ) {
		/* Set defaults, we can't use default function parameters here to keep IE11 compatibility */
		var width = width || 0;
		var height = height || 0;
		var embedLocalOnly = 0;
		
		/* Fire the AJAX request */
		ips.getAjax()( editor.config.controller + '&do=validateLink', {
			data: {
				url: link.getAttribute('href').replace( /&amp;/g, '&' ),
				image: image,
				width: width,
				height: height,
				embedLocalOnly: $( '.' + editor.id ).closest('[data-ipsEditor]').attr('data-ipsEditor-autoEmbed')
			},
			type: 'post'
		})
		/* Handle the response */
		.done(function( response ){
			
			/* If it's embeddable, embed it! */
			if ( response.embed ) {
				
				/* Init */
				var embedWidget, originalParent, splitParent;
				
				/* Create the new */
				var newElement = CKEDITOR.dom.element.createFromHtml( response.preview );
				
				/* If it's an image, we can just go ahead and stick it in */
				if ( newElement.getName() == 'img' ) {
					newElement.replace( link );
				}
				
				/* Otherwise for proper embeds like iframes, it's a bit more complicated */
				else {
					
					/* First we have to split up the surrounding paragraph - so find the closest <p> */
					var parents = link.getParents();
					for ( i in parents.reverse() ) {
						if ( parents[i].getName() == 'p' ) {
														
							/* Break into two <p>s */
							link.breakParent( parents[i] );
							
							/* But drop them if there's nothing in them */
							var previous = link.getPrevious();
							if ( previous && previous.getChildCount() == 0 ) {
								previous.remove();
							} else {
								originalParent = previous;
							}
							var next = link.getNext();
							if ( next && ( next.getChildCount(0) || ( next.getChildCount(1) && next.getChild(0).is('br') ) ) ) {
								var theOneAfterNext = next.getNext();
								if ( theOneAfterNext && ( next.getChildCount(0) || ( next.getChildCount(1) && next.getChild(0).is('br') ) ) ) {
									next.remove();
									next = theOneAfterNext;
								}
							}
							splitParent = next;
							
							
							/* And sure we keep the caret in the second one */
							var newRange = editor.createRange();
							newRange.moveToElementEditEnd( next );
							editor.getSelection().selectRanges( [ newRange ] );
							
							break;
						}
					}
					
					/* Then actually replace it */
					newElement.replace( link );
					
					/* Then turn it into a widget */
					var embedWidget = editor.widgets.initOn( newElement, 'ipsembedded' );
					$( document ).trigger('contentChange', [ $( '.' + editor.id ).closest('[data-ipsEditor]') ]);
				}
				
				/* Show notification */
				var embedMessage = $( '.' + editor.id ).closest('[data-ipsEditor]').find('[data-role="embedMessage"]');
				embedMessage.slideDown();
				
				/* Function to handle cancels */
				var hideEmbedMessage = function(){
					embedMessage.slideUp();
					embedMessage.find('[data-action="keepEmbeddedMedia"]').off( 'click.ipsEmbed' );
					embedMessage.find('[data-action="removeEmbeddedMedia"]').off( 'click.ipsEmbed' );
				};
				
				/* After 2.5 seconds, more typing will remove */
				setTimeout(function(){
					editor.once( 'key', function() {
						hideEmbedMessage();
					});
					editor.once( 'setData', function() {
						hideEmbedMessage();
					});
				}, 2500);
				
				/* Event for "Keep Formatting" button */
				embedMessage.find('[data-action="keepEmbeddedMedia"]').on( 'click.ipsEmbed', function(){
					/* Select editor again */
					editor.focus();
					
					/* And hide the message */
					hideEmbedMessage();
				});
				
				/* Event for "Remove Formatting" button */
				embedMessage.find('[data-action="removeEmbeddedMedia"]').on( 'click.ipsEmbed', function(){
					
					/* Change back to link and select editor again */
					if ( embedWidget ) {
						embedWidget.destroy();
					}
					link.replace( newElement );
					link.setAttribute('ipsNoEmbed', 'true');
					
					/* Embedded content with content before and after */
					if ( splitParent && originalParent ) {
						link.move( splitParent, true );
						splitParent.moveChildren( originalParent );
					}
					/* Embedded content on it's own line */
					else if ( splitParent ) {
						var paragraph = new CKEDITOR.dom.element('p');
						paragraph.insertBefore( link );
						link.move( paragraph );
					}
					
					/* Select editor again */
					editor.focus();
										
					/* And hide the message */
					hideEmbedMessage();
				});
			}
			/* Otherwise, note that we've already checked this one and it's not embeddable */
			else {
				link.setAttribute('ipsNoEmbed', 'true');

				/* If there was an error, show it */
				if( response.errorMessage )
				{
					/* Show notification */
					var embedFailure = $( '.' + editor.id ).closest('[data-ipsEditor]').find('[data-role="embedFailMessage"]');
					embedFailure.find('p').html( response.errorMessage );
					embedFailure.slideDown();

					/* After 2.5 seconds, more typing will remove */
					setTimeout(function(){
						editor.once( 'key', function() {
							embedFailure.slideUp();
						});
						editor.once( 'setData', function() {
							embedFailure.slideUp();
						});
					}, 2500);	
				}
			}
		})
		.fail(function( jqXHR ){
			link.setAttribute('ipsNoEmbed', 'true');

			/* If there was an error, show it */
			var embedFailure = $( '.' + editor.id ).closest('[data-ipsEditor]').find('[data-role="embedFailMessage"]');
			embedFailure.find('p').html( ips.getString( 'embed_error_message_admin', { error: jqXHR.statusText + ': ' + jqXHR.responseText } ) );
			embedFailure.slideDown();

			/* After 2.5 seconds, more typing will remove */
			setTimeout(function(){
				editor.once( 'key', function() {
					embedFailure.slideUp();
				});
				editor.once( 'setData', function() {
					embedFailure.slideUp();
				});
			}, 2500);	
		});
		
	};

 

 

ma questo tuo codice risolve il problema ?  dove lo devo inserire ?

Inviato
  • Admin
20 minuti fa, BomAle ha scritto:

sostituisce i paragrafi genitori con l'iframe togliendo la possibilità di allineamento.

il problema è pure nel css con il display:block

 

7 minuti fa, Luca ha scritto:

ma questo tuo codice risolve il problema ?  dove lo devo inserire ?

Hai già aperto il ticket sul supporto?

Inviato
  • Autore
1 minuto fa, Askancy ha scritto:

il problema è pure nel css con il display:block

 

Hai già aperto il ticket sul supporto?

no

Inviato
7 minuti fa, Luca ha scritto:

ma questo tuo codice risolve il problema ?  dove lo devo inserire ?

è parte del codice sorgente di invision che va rivisto se possibile... invio il ticket e vi faccio sapere

bEYQylK.png

https://invisionpower.zendesk.com/hc/en-us/requests/47621

Per favore accedi per lasciare un commento

Potrai lasciare un commento dopo aver effettuato l'accesso

Accedi Ora

Chi sta navigando 0

  • Nessun utente registrato visualizza questa pagina.

Informazioni importanti

Abbiamo inserito dei cookies nel tuo dispositivo per aiutarti a migliorare la tua esperienza su questo sito. Puoi modificare le impostazioni dei cookie, altrimenti puoi accettarli cliccando su continua. to insert a cookie message.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.