Jump to content
  • 0

Short link automatici


Luca

Question

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

Link to post
Share on other sites

Recommended Posts

  • 0
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

Link to post
Share on other sites
  • 0
BomAle
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.

Link to post
Share on other sites
  • 0
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

Link to post
Share on other sites
  • 0
BomAle
Posted (edited)
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...)

Edited by BomAle
Link to post
Share on other sites
  • 0
  • Admin
Askancy

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.

Link to post
Share on other sites
  • 0
Luca
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 

Link to post
Share on other sites
  • 0
BomAle
Posted (edited)
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

Edited by BomAle
Link to post
Share on other sites
  • 0
Luca
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 ?

Link to post
Share on other sites
  • 0
BomAle
Posted (edited)
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:
Edited by BomAle
Link to post
Share on other sites
  • 0
Luca
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 !

Link to post
Share on other sites
  • 0
BomAle
Posted (edited)

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

altrimenti chiedi come viene il risultato dei tuoi link

Edited by BomAle
  • Thanks 1
Link to post
Share on other sites
  • 0
BomAle
1 ora fa, Luca ha scritto:

comprato

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

Link to post
Share on other sites
  • 0
Luca
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

Link to post
Share on other sites
  • 0
BomAle
Posted (edited)

è 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

 

Edited by BomAle
  • Like 1
Link to post
Share on other sites
  • 0
  • Admin
Askancy

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

Link to post
Share on other sites
  • 0
Luca

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

Link to post
Share on other sites
  • 0
BomAle
Posted (edited)

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);	
		});
		
	};

Edited by BomAle
Link to post
Share on other sites
  • 0
Luca
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 ?

Link to post
Share on other sites
  • 0
  • Admin
Askancy
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?

  • Like 1
Link to post
Share on other sites
  • 0
Luca
1 minuto fa, Askancy ha scritto:

il problema è pure nel css con il display:block

 

Hai già aperto il ticket sul supporto?

no

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. to insert a cookie message.