http://example.com/foo/bar)'),
'proto-rel' => t('Protocol relative URL (//example.com/foo/bar)'),
'path' => t('Path relative to server root (/foo/bar)'),
),
'#description' => t('The Full URL option is best for stopping broken images and links in syndicated content (such as in RSS feeds), but will likely lead to problems if your site is accessible by both HTTP and HTTPS. Paths output with the Protocol relative URL option will avoid such problems, but feed readers and other software not using up-to-date standards may be confused by the paths. The Path relative to server root option will avoid problems with sites accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely not fix broken images and links in syndicated content.'),
'#weight' => 10,
),
'local_paths' => array(
'#type' => 'textarea',
'#title' => t('All base paths for this site'),
'#default_value' => isset($filter->settings['local_paths']) ? $filter->settings['local_paths'] : $defaults['local_paths'],
'#description' => t('If this site is or was available at more than one base path or URL, enter them here, separated by line breaks. For example, if this site is live at http://example.com/ but has a staging version at http://dev.example.org/staging/, you would enter both those URLs here. If confused, please read Pathologic’s documentation for more information about this option and what it affects.', array('!docs' => 'http://drupal.org/node/257026')),
'#weight' => 20,
),
);
}
/**
* Pathologic filter callback.
*
* Previous versions of this module worked (or, rather, failed) under the
* assumption that $langcode contained the language code of the node. Sadly,
* this isn't the case.
* @see http://drupal.org/node/1812264
* However, it turns out that the language of the current node isn't as
* important as the language of the node we're linking to, and even then only
* if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE
* FUTURE, ALBRIGHT.
*
* @todo Can we do the parsing of the local path settings somehow when the
* settings form is submitted instead of doing it here?
*/
function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) {
// Get the base URL and explode it into component parts. We add these parts
// to the exploded local paths settings later.
global $base_url;
$base_url_parts = parse_url($base_url . '/');
// Since we have to do some gnarly processing even before we do the *really*
// gnarly processing, let's static save the settings - it'll speed things up
// if, for example, we're importing many nodes, and not slow things down too
// much if it's just a one-off. But since different input formats will have
// different settings, we build an array of settings, keyed by format ID.
$settings = &drupal_static(__FUNCTION__, array());
if (!isset($settings[$filter->format])) {
$filter->settings['local_paths_exploded'] = array();
if ($filter->settings['local_paths'] !== '') {
// Build an array of the exploded local paths for this format's settings.
// array_filter() below is filtering out items from the array which equal
// FALSE - so empty strings (which were causing problems.
// @see http://drupal.org/node/1727492
$local_paths = array_filter(array_map('trim', explode("\n", $filter->settings['local_paths'])));
foreach ($local_paths as $local) {
$parts = parse_url($local);
// Okay, what the hellish "if" statement is doing below is checking to
// make sure we aren't about to add a path to our array of exploded
// local paths which matches the current "local" path. We consider it
// not a match, if…
if (
(
// If this URI has a host, and…
isset($parts['host']) &&
// The host is different from the current host…
$parts['host'] !== $base_url_parts['host']
) ||
// Or…
(
// The URI doesn't have a host…
!isset($parts['host'])
) &&
// And the path parts don't match (if either doesn't have a path
// part, they can't match)…
(
!isset($parts['path']) ||
!isset($base_url_parts['path']) ||
$parts['path'] !== $base_url_parts['path']
)
) {
// Add it to the list.
$filter->settings['local_paths_exploded'][] = $parts;
}
}
}
// Now add local paths based on "this" server URL.
$filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path']);
$filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']);
// We'll also just store the host part separately for easy access.
$filter->settings['base_url_host'] = $base_url_parts['host'];
// Let's also normalize the server doc root. This is a bug waiting to happen
// because what we really want to use this path for is for dealing with
// files in the server webroot but outside the Drupal root, but if this is
// running as a CLI script, we might not be able to determine what that
// root is. In that case, we'll use the Drupal root.
// @see http://drupal.org/node/1780398
$filter->settings['docroot'] = (drupal_is_cli() || !isset($_SERVER) || !isset($_SERVER['DOCUMENT_ROOT']))
? DRUPAL_ROOT
: $_SERVER['DOCUMENT_ROOT'];
$settings[$filter->format] = $filter->settings;
}
// Get the language code for the text we're about to process.
$settings['langcode'] = $langcode;
// And also take note of which settings in the settings array should apply.
$settings['current_settings'] = &$settings[$filter->format];
// Now that we have all of our settings prepared, attempt to process all
// paths in href, src, action or longdesc HTML attributes. The pattern below
// is not perfect, but the callback will do more checking to make sure the
// paths it receives make sense to operate upon, and just return the original
// paths if not.
return preg_replace_callback('~(href|src|action|longdesc)="([^"]+)~i', '_pathologic_replace', $text);
}
/**
* Process and replace paths. preg_replace_callback() callback.
*/
function _pathologic_replace($matches) {
// Get the settings for the filter. Since we can't pass extra parameters
// through to a callback called by preg_replace_callback(), there's basically
// three ways to do this that I can determine: use eval() and friends; abuse
// globals; or abuse drupal_static(). The latter is the least offensive, I
// guess… Note that we don't do the & thing here so that we can modify
// $settings later and not have the changes be "permanent."
$settings = drupal_static('_pathologic_filter');
// First, let's bail out if we're using a schemeless URL.
// @see http://drupal.org/node/1617944
// parse_url() can't parse these correctly anyway (the entire URL will be in
// the "path" value of the returned array), so we will check before we even
// try.
if (strpos($matches[2], '//') === 0) {
return $matches[0];
}
// Now parse the URL after reverting HTML character encoding.
// @see http://drupal.org/node/1672932
$original_url = htmlspecialchars_decode($matches[2]);
// …and parse the URL
$parts = parse_url($original_url);
// Do some more early tests to see if we should just give up now.
if (
// If parse_url() failed, give up.
$parts === FALSE
// If there's a scheme part and it doesn't look useful, bail out.
// "files" and "internal" are for Path Filter compatibility.
|| (isset($parts['scheme']) && !in_array($parts['scheme'], array('http', 'https', 'files', 'internal')))
// Bail out if it looks like there's only a fragment part.
|| (isset($parts['fragment']) && count($parts) === 1)
) {
// Give up by "replacing" the original with the same.
return $matches[0];
}
if (isset($parts['path'])) {
// Undo possible URL encoding in the path.
// @see http://drupal.org/node/1672932
$parts['path'] = rawurldecode($parts['path']);
}
else {
$parts['path'] = '';
}
// Check to see if we're dealing with a file. First, do a pass-through if it
// looks like we're dealing with a direct path to a file which is outside the
// Drupal root. Use realpath() and the server's (?) docroot to iron out
// wrinkles to the file's actual path.
// @see http://drupal.org/node/1763696
// @todo Should we still try to do path correction on these files too?
$filepath = realpath($settings['current_settings']['docroot'] . '/' . $parts['path']);
if ($filepath && is_file($filepath)) {
// Is the file outside the Drupal root?
if (strpos($filepath, DRUPAL_ROOT) !== 0) {
return $matches[0];
}
else {
// Linking to a file inside the Drupal root. Okay.
$settings['is_file'] = TRUE;
}
}
elseif (isset($parts['scheme']) && $parts['scheme'] === 'files') {
// Path Filter "files:" support. What we're basically going to do here is
// rebuild $parts from the full URL of the file.
$new_parts = parse_url(file_create_url(file_default_scheme() . '://' . $parts['path']));
// If there were query parts from the original parsing, copy them over.
if (!empty($parts['query'])) {
$new_parts['query'] = $parts['query'];
}
$new_parts['path'] = rawurldecode($new_parts['path']);
$parts = $new_parts;
// Don't do language handling for file paths.
$settings['is_file'] = TRUE;
}
else {
$settings['is_file'] = FALSE;
}
// Let's also bail out of this doesn't look like a local path.
$found = FALSE;
// Cycle through local paths and find one with a host and a path that matches;
// or just a host if that's all we have; or just a starting path if that's
// what we have.
foreach ($settings['current_settings']['local_paths_exploded'] as $exploded) {
// If a path is available in both…
if (isset($exploded['path']) && isset($parts['path'])
// And the paths match…
&& strpos($parts['path'], $exploded['path']) === 0
// And either they have the same host, or both have no host…
&& (
(isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === $parts['host'])
|| (!isset($exploded['host']) && !isset($parts['host']))
)
) {
// Remove the shared path from the path. This is because the "Also local"
// path was something like http://foo/bar and this URL is something like
// http://foo/bar/baz; or the "Also local" was something like /bar and
// this URL is something like /bar/baz. And we only care about the /baz
// part.
$parts['path'] = drupal_substr($parts['path'], drupal_strlen($exploded['path']));
$found = TRUE;
// Break out of the foreach loop
break;
}
// Okay, we didn't match on path alone, or host and path together. Can we
// match on just host? Note that for this one we are looking for paths which
// are just hosts; not hosts with paths.
elseif ((isset($parts['host']) && !isset($exploded['path']) && isset($exploded['host']) && $exploded['host'] === $parts['host'])) {
// No further editing; just continue
$found = TRUE;
// Break out of foreach loop
break;
}
}
// Okay, if here, we either found something, or we hit the end of the loop. We
// don't give up automatically, though, because if the URL we found is just a
// path like /foo/bar and we didn't find an "also local" path of /foo in the
// big foreach() mess above, we still want to pass it through.
if (!$found && !(isset($parts['path']) && !isset($parts['host']))) {
return $matches[0];
}
// Examine the query part of the URL. Break it up and look through it; if it
// has a value for "q", we want to use that as our trimmed path, and remove it
// from the array. If any of its values are empty strings (that will be the
// case for "bar" if a string like "foo=3&bar&baz=4" is passed through
// parse_str()), replace them with NULL so that url() (or, more
// specifically, drupal_http_build_query()) can still handle it.
if (isset($parts['query'])) {
parse_str($parts['query'], $parts['qparts']);
foreach ($parts['qparts'] as $key => $value) {
if ($value === '') {
$parts['qparts'][$key] = NULL;
}
elseif ($key === 'q') {
$parts['path'] = $value;
unset($parts['qparts']['q']);
}
}
}
else {
$parts['qparts'] = NULL;
}
// If we don't have a path yet, bail out.
if (!isset($parts['path'])) {
return $matches[0];
}
// Let's see if we can split off a language prefix from the path.
if (!$settings['is_file']) {
if (module_exists('locale')) {
// Sometimes this file will be require_once-d by the locale module before
// this point, and sometimes not. We require_once it ourselves to be sure.
require_once DRUPAL_ROOT . '/includes/language.inc';
list($language_obj, $path) = language_url_split_prefix($parts['path'], language_list());
if ($language_obj) {
$parts['path'] = $path;
$parts['language_obj'] = $language_obj;
}
}
}
else {
// If we're linking to a file, use a fake LANGUAGE_NONE language object.
// Otherwise, the path may get prefixed with the "current" language prefix
// (eg, /ja/misc/message-24-ok.png)
$parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => '');
}
// Okay, format the URL.
// If there's still a slash lingering at the start of the path, chop it off.
// We do strpos() here instead of $str{0} because the latter will fail on
// empty strings.
if (strpos($parts['path'], '/') === 0) {
$parts['path'] = substr($parts['path'], 1);
}
// If we get to this point and $parts['path'] is now an empty string (which
// will be the case if the path was originally just "/"), then we
// want to link to Titolare del trattamento:
Comune di Ponzano Veneto Via G.B. Cicogna - 31050 Ponzano Veneto (TV) - Tel.: +39 0422 960300 - Fax: +39 0422 960341 info@comune.ponzanoveneto.tv.it - PEC: comune.ponzanoveneto.tv@pecveneto.it
Informativa in materia di cookie
Informativa ai sensi dell’art. 13 del d.lg. 196/2003 (Codice in materia di protezione dei dati personali) Con il presente documento, ai sensi degli artt. 13 e 122 del D. Lgs. 196/2003 (“codice privacy”), nonché in base a quanto previsto dal Provvedimento generale del Garante privacy dell’8 maggio 2014, fornisce agli utenti del sito web alcune informazioni relative ai cookie utilizzati.
Cosa sono i cookie
Al fine di rendere i propri servizi il più possibile efficienti e semplici da utilizzare questo Sito fa uso di cookies. Pertanto, quando si visita il Sito, viene inserita una quantità minima di informazioni nel dispositivo dell’Utente, come piccoli file di testo chiamati “cookie”, che vengono salvati nella directory del browser Web dell’Utente. Esistono diversi tipi di cookie, ma sostanzialmente lo scopo principale di un cookie è quello di far funzionare più efficacemente il Sito e di abilitarne determinate funzionalità. I cookie sono utilizzati per migliorare la navigazione globale dell’Utente.
In particolare:
Cookie tecnici
I cookie di questo tipo sono necessari per il corretto funzionamento di alcune aree del sito. I cookie di questa categoria comprendono sia cookie persistenti che cookie di sessione. In assenza di tali cookie, il sito o alcune porzioni di esso potrebbero non funzionare correttamente. Pertanto, vengono sempre utilizzati, indipendentemente dalle preferenze dall’utente. I cookie di questa categoria vengono sempre inviati dal nostro dominio.
Cookie analitici
I cookie di questo tipo vengono utilizzati per raccogliere informazioni sull’utilizzo del sito. Il Titolare usa tali informazioni per analisi statistiche, per migliorare il sito e semplificarne l’utilizzo, oltre che per monitorarne il corretto funzionamento. Questo tipo di cookie raccoglie informazioni in forma anonima sull’attività degli utenti nel sito e sul modo in cui sono arrivati al Sito e alle pagine visitate. I cookie di questa categoria vengono inviati dal Sito stesso o da domini di terze parti.
Cookie di rilevamento di terze parti
I cookie di questo tipo vengono utilizzati per raccogliere informazioni sull’utilizzo del sito Web da parte dei visitatori, le parole chiave usate per raggiungere il sito, i siti Web visitati e le origini del traffico da cui provengono i visitatori per le campagne di marketing. Il titolare può utilizzare tali informazioni per compilare rapporti e migliorare il Sito. I cookie raccolgono informazioni in forma anonima. I cookie di questo tipo vengono inviati dal Sito stesso o da domini di terze parti.
Cookie per l’integrazione di funzionalità di terze parti
I cookie di questo tipo vengono utilizzati per integrare funzionalità di terze parti nel Sito (ad esempio, moduli per i commenti o icone di social network che consentono ai visitatori di condividere il contenuto del sito). I cookie di questa categoria possono essere inviati dai domini dei siti partner o che comunque offrono le funzionalità presenti nel sito. Il Titolare non è tenuto a richiedere il consenso dell’utente per i cookie tecnici, poiché questi sono strettamente necessari per la fornitura del servizio. Per le altre tipologie di cookie il consenso può essere espresso dall’Utente, conformemente alla normativa vigente, mediante specifiche configurazioni del browser e di programmi informatici o di dispositivi che siano di facile e chiara utilizzabilità per l’Utente. Il Titolare ricorda all’Utente che è possibile modificare le preferenze relative ai cookie in qualsiasi momento. È anche possibile disabilitare in qualsiasi momento i cookie dal browser, ma questa operazione potrebbe impedire all’Utente di utilizzare alcune parti del Sito.
Cookie di profilazione
Questi cookie raccolgono informazioni su come gli utenti utilizzano un sito web, ad esempio, quali sono le pagine più visitare, se si ricevono messaggi di errore da pagine web. Questi cookie non raccolgono informazioni che identificano un visitatore. Tutte le informazioni raccolte tramite cookie sono aggregate e quindi anonime. Vengono utilizzati solo per migliorare il funzionamento di un sito web. Utilizzando il nostro sito, l'utente accetta che tali cookie possono essere installati sul proprio dispositivo.
I cookie consentono al sito di ricordare le scelte fatte dall’utente (come il nome, la lingua o la regione di provenienza) e forniscono funzionalità avanzate personalizzate. Questi cookie possono essere utilizzati anche per ricordare le modifiche apportate alla dimensione del testo, font ed altre parti di pagine web che è possibile personalizzare. Essi possono anche essere utilizzati per fornire servizi che hai chiesto come guardare un video o i commenti su un blog. Le informazioni raccolte da questi tipi di cookie possono essere rese anonime e non in grado di monitorare la vostra attività di navigazione su altri siti web.
Siti Web di terze parti
Il sito di contiene collegamenti ad altri siti Web che dispongono di una propria informativa sulla privacy. Queste informative sulla privacy possono essere diverse da quella adottata dal Titolare, che quindi non risponde per Siti di terze parti. Ai sensi dell’art. 122 secondo comma del D.lgs. 196/2003 il consenso all’utilizzo di tali cookie è espresso dall’interessato mediante il settaggio individuale che ha scelto liberamente per il browser utilizzato per la navigazione nel sito, ferma restando la facoltà dell’utente di comunicare in ogni momento al Titolare del trattamento la propria volontà in merito ad dati gestiti per il tramite dei cookie che il browser stesso abbia accettato.
Registrazione nel sito
I dati richiesti ad un utente nella registrazione solo unicamente quelli strettamente necessari alle operazioni di fatturazione e fiscalizzazione dell'acquisto e naturalmente alla spedizione dei prodotti acquistati.
I dati sono conservati in databases protetti e sicuri secondo i più aggiornati standards e solo al fine di gestire la relazione di fornitura e/o assistenza che intercorre tra noi e il nostro cliente.
Non vengono ceduti a terze parti in nessun caso, tantomeno a fini pubblicitari o a fini di lucro.
Abilitazione/disabilitazione di cookie tramite il browser
Esistono diversi modi per gestire i cookie e altre tecnologie di tracciabilità. Modificando le impostazioni del browser, puoi accettare o rifiutare i cookie o decidere di ricevere un messaggio di avviso prima di accettare un cookie dai siti Web visitati. Ti ricordiamo che disabilitando completamente i cookie nel browser potresti non essere in grado di utilizzare tutte le nostre funzionalità interattive. Se utilizzi più computer in postazioni diverse, assicurati che ogni browser sia impostato in modo da soddisfare le tue preferenze. Puoi eliminare tutti i cookie installati nella cartella dei cookie del tuo browser. Ciascun browser presenta procedure diverse per la gestione delle impostazioni. Fai clic su uno dei collegamenti sottostanti per ottenere istruzioni specifiche.
Microsoft Windows Explorer: https://support.microsoft.com/en-us/kb/278835/it
Google Chrome: https://support.google.com/accounts/answer/32050?hl=it
Mozilla Firefox: https://support.mozilla.org/it/kb/Eliminare%20i%20cookie
Apple Safari: https://support.apple.com/it-it/HT201265
Safari su iPhone, iPad, iPod touch: https://support.apple.com/it-it/HT201265
Oltre a poter utilizzare gli strumenti previsti dal browser per attivare o disattivare i singoli cookies informiamo che il sito www.youronlinechoices.com riporta l’elenco dei principali provider che lavorano con i gestori dei siti web per raccogliere e utilizzare informazioni utili alla fruizione della pubblicità comportamentale. Puoi disattivare o attivare tutte le società o in alternativa regolare le preferenze individualmente per ogni società. Per farlo è possibile utilizzare lo strumento che si trova nella pagina www.youronlinechoices.com/it/le-tue-scelte.
Ulteriori informazioni utili sui cookie sono disponibili a questi indirizzi: www.allaboutcookies.org e www.youronlinechoises.com
Cookie utilizzati dal sito
Il Sito utilizza Google Analytics.
Si tratta di un servizio di analisi web fornito da Google Inc. (“Google”) che utilizza dei cookie che vengono depositati sul computer dell’utente per consentire analisi statistiche in forma aggregata in ordine all’utilizzo del sito web visitato.
I Dati generati da Google Analytics sono conservati da Google così come indicato nella Informativa reperibile al seguente link:
https://developers.google.com/analytics/devguides/collection/analyticsjs...
Per consultare l’informativa privacy della società Google Inc., si rinvia al seguente sito Internet:
http://www.google.com/intl/en/analytics/privacyoverview.html