Browse Source

Abandon des squelettes pour insérer le JS

pull/19/head
Chancellier Pierre-Jean 11 months ago
parent
commit
c9b3c9ec1e
  1. 14
      README.md
  2. 53
      action/tarteaucitron_activer_service.php
  3. 45
      action/tarteaucitron_desactiver_service.php
  4. 73
      action/tarteaucitron_desinstaller_service.php
  5. 65
      action/tarteaucitron_installer_service.php
  6. 98
      action/tarteaucitron_referencer_services.php
  7. 4
      formulaires/configurer_tarteaucitron_ajouter_services.html
  8. 79
      formulaires/configurer_tarteaucitron_services.php
  9. 112
      inc/tarteaucitron.php
  10. 1
      json/services.json
  11. 8
      lang/tarteaucitron_fr.php
  12. 2
      prive/squelettes/contenu/configurer_services.html
  13. 1
      services/canalu.html
  14. 1
      services/dailymotion.html
  15. 1
      services/facebook.html
  16. 3
      services/facebookpixel.html
  17. 1
      services/gagenda.html
  18. 2
      services/googlemaps.html
  19. 3
      services/gtag.html
  20. 1
      services/instagram.html
  21. 1
      services/twitter.html
  22. 1
      services/twitterembed.html
  23. 1
      services/vimeo.html
  24. 1
      services/webtvnu.html
  25. 1
      services/youtube.html
  26. 68
      tarteaucitron_administrations.php
  27. 54
      tarteaucitron_pipelines.php

14
README.md

@ -8,17 +8,13 @@ La documentation est ici : https://contrib.spip.net/Tarteaucitron-5292
## Ajouter un service
1. Rendez-vous sur ***ecrire/?exec=configurer_services***
2. Recherchez votre service pour savoir si il faut l'installer et, si besoin, installez-le
2. Recherchez votre service et activez-le
3. Cette action va créer le fichier ***services/monservice.html*** avec le code suivant :
```js
(tarteaucitron.job = tarteaucitron.job || []).push('monservice');
```
4. Si besoin, éditez-le
3. Au besoin, renseignez les paramètres nécessaires dans la liste des services activés
5. Activez votre service pour que ce fichier soit inclus dans les squelettes et donc pris en compte par **TarteAuCitron**
4. Recherchez votre service sur https://tarteaucitron.io/fr/install/ (Etape 3 : ajouter les services) et pensez à supprimer le marqueur du service sur votre site web s'il est présent.
6. Au besoin, rajouter un fichier ***modeles/tac_monservice.html*** ainsi qu'un fichier ***icones_barre/monservice.png*** (carré de 17 pixels) pour permettre aux rédacteurs d'insérer du contenu facilement via la barre d'outils du porte-plume
4. Certains services peuvent concerner du contenu éditorial. Dans ce cas, le rédacteur peut insérer un service directement via le porte-plume. Si l'entrée n'existe pas dans le porte-plume, créez une issue ou une Pull-Request sur [gitea](https://git.spip.net/spip-contrib-extensions/tarteaucitron/) (il suffit de créer un fichier modeles/tac_monservice.html et une icône carrée dans icones_barre/monservice.png en 17px de côté). Si des articles antérieurs contiennent des iframes pour ces services, il faut traiter le contenu ancien.
## Traiter du contenu ancien
Pour traiter du contenu ancien, adaptez le fichier ***action/tarteaucitron_nettoyer_iframes.php*** et appelez-le via le bouton l'onglet technique (***ecrire/?exec=configurer_technique***) ou directement par l'url ***spip.php?action=tarteaucitron_nettoyer_iframes***. Il s'agit d'une adaptation du script présent dans le plugin **oembed**.
Pour traiter du contenu ancien, adaptez le fichier ***action/tarteaucitron_nettoyer_iframes.php*** en fonction de vos besoins et appelez-le via le bouton de l'onglet technique (***ecrire/?exec=configurer_technique***) ou directement par l'url ***spip.php?action=tarteaucitron_nettoyer_iframes***. Il s'agit d'une adaptation du script présent dans le plugin **oembed**.

53
action/tarteaucitron_activer_service.php

@ -0,0 +1,53 @@
<?php
/**
* Plugin TarteAuCitron
* Licence GPL3
*
*/
if (!defined('_ECRIRE_INC_VERSION')){
return;
}
/**
* Active un service
* appelé avec ?action=tarteaucitron_activer_service&service=service
* autorisé pour les seuls webmestres
*/
function action_tarteaucitron_activer_service_dist(){
include_spip('inc/autoriser');
if (!autoriser('webmestre')){
die('Pas autorise');
}
include_spip('inc/tarteaucitron');
$service = _request('service');
$list_services = tarteaucitron_liste_services();
if (!array_key_exists($service,$list_services)) {
die('Service inexistant');
}
if ($list_services[$service]['statut']=='actif') {
die('Service déjà actif');
}
include_spip('inc/config');
$services_actifs = lire_config("tarteaucitron/services");
$services_actifs[$service] = array();
// TODO : récupérer les params dans le fichier JSON
$json_source = find_in_path('json/services.json');
$json = file_get_contents($json_source);
$parsed_json = json_decode($json);
$params = $parsed_json->{$service}->{'params'};
foreach($params as $param) {
$services_actifs[$service][$param] = $param;
}
ecrire_config("tarteaucitron/services/", $services_actifs);
}

45
action/tarteaucitron_desactiver_service.php

@ -0,0 +1,45 @@
<?php
/**
* Plugin TarteAuCitron
* Licence GPL3
*
*/
if (!defined('_ECRIRE_INC_VERSION')){
return;
}
/**
* Désactive un service
* appelé avec ?action=tarteaucitron_desactiver_service&service=service
* autorisé pour les seuls webmestres
*/
function action_tarteaucitron_desactiver_service_dist(){
include_spip('inc/autoriser');
if (!autoriser('webmestre')){
die('Pas autorise');
}
include_spip('inc/tarteaucitron');
$service = _request('service');
$list_services = tarteaucitron_liste_services();
if (!array_key_exists($service,$list_services)) {
die('Service inexistant');
}
if ($list_services[$service]['statut']=='inactif') {
die('Service déjà inactif');
}
include_spip('inc/config');
$services_actifs = lire_config("tarteaucitron/services");
if ($services_actifs[$service]) {
unset($services_actifs[$service]);
}
ecrire_config("tarteaucitron/services", $services_actifs);
}

73
action/tarteaucitron_desinstaller_service.php

@ -1,73 +0,0 @@
<?php
/**
* Plugin TarteAuCitron
* Licence GPL3
*
*/
if (!defined('_ECRIRE_INC_VERSION')){
return;
}
/**
* Désinstalle un service
* appelé avec ?action=tarteaucitron_desinstaller_service&service=service
* autorisé pour les seuls webmestres
*/
function action_tarteaucitron_desinstaller_service_dist(){
include_spip('inc/tarteaucitron');
include_spip('inc/autoriser');
if (!autoriser('webmestre')){
die('Pas autorise');
}
$service = _request('service');
$list_services = tarteaucitron_liste_services();
if (!array_key_exists($service,$list_services)) {
die('Service inexistant');
}
if ($list_services[$service]['statut']=='desinstalle') {
die('Service déjà désinstallé');
}
$services_folder = _DIR_PLUGIN_TARTEAUCITRON . "services/";
$modeles_folder = _DIR_PLUGIN_TARTEAUCITRON . "modeles/";
// $squelettes_folder = tarteaucitron_dossier_squelettes();
// $services_folder = $squelettes_folder . "services/";
// $modeles_folder = $squelettes_folder . "modeles/";
// $icones_folder = $squelettes_folder . "icones_barre/";
$file = $services_folder . $service . ".html";
if (file_exists($file)) {
unlink($file);
}
$file = $modeles_folder . "tac_" . $service . ".html";
if (file_exists($file)) {
unlink($file);
}
$file = $icones_folder . $service . ".png";
if (file_exists($file)) {
unlink($file);
}
include_spip('inc/config');
$cfg = lire_config("tarteaucitron");
if ($cfg['services_installes'][$service]) {
unset($cfg['services_installes'][$service]);
}
foreach($cfg['services'] as $service_option => $value) {
if (preg_match("#^" . $service . "_?#",$service_option)) {
unset($cfg['services'][$service_option]);
}
}
ecrire_config("tarteaucitron", $cfg);
}

65
action/tarteaucitron_installer_service.php

@ -1,65 +0,0 @@
<?php
/**
* Plugin TarteAuCitron
* Licence GPL3
*
*/
if (!defined('_ECRIRE_INC_VERSION')){
return;
}
/**
* Installe un service
* appelé avec ?action=tarteaucitron_installer_service&service=service
* autorisé pour les seuls webmestres
*/
function action_tarteaucitron_installer_service_dist(){
include_spip('inc/tarteaucitron');
include_spip('inc/autoriser');
if (!autoriser('webmestre')){
die('Pas autorise');
}
$service = _request('service');
$list_services = tarteaucitron_liste_services();
if (!array_key_exists($service,$list_services)) {
die('Service inexistant');
}
if ($list_services[$service]['statut']=='installe') {
die('Service déjà installé');
}
// $squelettes_folder = tarteaucitron_dossier_squelettes();
// $services_folder = $squelettes_folder . "services/";
// $modeles_folder = $squelettes_folder . "modeles/";
$services_folder = _DIR_PLUGIN_TARTEAUCITRON . "services/";
$modeles_folder = _DIR_PLUGIN_TARTEAUCITRON . "modeles/";
// if (!is_dir($services_folder)) {
// mkdir($services_folder,0755);
// }
// if (!is_dir($modeles_folder)) {
// mkdir($modeles_folder,0755);
// }
$code = tarteaucitron_scrap_service($service);
file_put_contents($services_folder . $service . ".html", $code['JS']);
file_put_contents($modeles_folder . 'tac_' . $service . '.html', $code['html']);
// TODO : créer un fichier icones_barre/monservice.png en 17px de côté avec le nom du service pour le porte-plume ?
include_spip('inc/config');
$services_installes = lire_config("tarteaucitron/services_installes/");
if (!$services_installes[$service]) {
$services_installes[$service] = $code['params'];
}
ecrire_config("tarteaucitron/services_installes/", $services_installes);
}

98
action/tarteaucitron_referencer_services.php

@ -0,0 +1,98 @@
<?php
/**
* Plugin TarteAuCitron
* Licence GPL3
*
*/
if (!defined('_ECRIRE_INC_VERSION')){
return;
}
/**
* Mise à jour du fichier services/services.html
* appelé avec ?action=tarteaucitron_referencer_services
* autorisé pour les seuls webmestres
*/
function action_tarteaucitron_referencer_services_dist(){
include_spip('inc/autoriser');
if (!autoriser('webmestre')){
die('Pas autorise');
}
$list_services = array();
if ($lines=file(find_in_path('lib/tarteaucitron/tarteaucitron.services.js'))){
$i=0;
foreach($lines as $line) {
if(preg_match('/^tarteaucitron\.services\.(\w+)/', $line, $matches)) {
$service = $matches[1];
$list_services[$service] = array();
if (preg_match('/"type": "(\w+)",/', $lines[$i+2], $matches)) {
$type = $matches[1];
$list_services[$service]['type'] = $type;
}
}
$i++;
}
}
$tarteaucitron_url = 'https://tarteaucitron.io/fr/install/';
$html = file_get_contents($tarteaucitron_url);
$doc = new DOMDocument('1.0', 'UTF-8');
$internalErrors = libxml_use_internal_errors(true);
$doc->loadHTML($html);
libxml_use_internal_errors($internalErrors);
foreach($list_services as $service => $prop) {
$div_service = $doc->getElementById('s_' . $service);
if (!empty($div_service)) {
$id = $div_service->lastChild->attributes['id']->value;
$div_code = $doc->getElementById('m' . $id);
$span_list = $div_code->getElementsByTagName('span');
$is_code_js_found = false;
$nb_items = $span_list->length;
for($i=0; $i<$nb_items; $i++) {
$span = $span_list->item($i);
$attributes = $span->attributes;
foreach($attributes as $attr_name => $attr) {
if ($attr_name == "class" && $attr->value == "code" && !$is_code_js_found) {
$param_list = $span->getElementsByTagName('b');
$j = $param_list->length -1;
$list_services[$service]['params'] = array();
while ($j > -1) {
$param = $param_list[$j];
$nom_param = str_replace(" ","_",$param->textContent);
$newelement = $doc->createTextNode("'" . $nom_param . "'");
$span->replaceChild($newelement,$param);
array_unshift($list_services[$service]['params'],$nom_param);
$j--;
}
$s = $span->getElementsByTagName('s');
$span->removeChild($s[0]);
$script = trim(strip_tags($span->nodeValue));
$script = preg_replace('/(\n\s+)/', "\n", $script);
$script = str_replace("''","'",$script);
$list_services[$service]['JS'] = $script;
$is_code_js_found = true;
}
}
}
} else {
unset($list_services[$service]);
}
}
// Création du JSON avec les services, leur type, leur(s) paramètre(s) et le code JS associé
$file_json = find_in_path('json/services.json');
file_put_contents($file_json, json_encode($list_services));
echo "Opération réussie !<br>";
echo "Le fichier <b>" . $file_json . "</b> a été mis à jour.";
}

4
formulaires/configurer_tarteaucitron_ajouter_services.html

@ -63,8 +63,8 @@
}
})
if (service.toLowerCase().indexOf(search) >= 0) {
var btn_texte = (status=='desinstalle') ? '<:tarteaucitron:cfg_installer:>' : '<:tarteaucitron:cfg_desinstaller:>'
var action = (status=='desinstalle') ? 'tarteaucitron_installer_service' : 'tarteaucitron_desinstaller_service'
var btn_texte = (status=='inactif') ? '<:tarteaucitron:cfg_installer:>' : '<:tarteaucitron:cfg_desinstaller:>'
var action = (status=='inactif') ? 'tarteaucitron_activer_service' : 'tarteaucitron_desactiver_service'
html += '<li class="item">' + service + '<a href="?action=' + action + '&service=' + service + '&redirect=?exec=configurer_services" class="btn">' + btn_texte + '</a></li>'
}
});

79
formulaires/configurer_tarteaucitron_services.php

@ -1,12 +1,55 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/tarteaucitron');
function formulaires_configurer_tarteaucitron_services_charger_dist(){
$valeurs = array();
$services_actifs = lire_config('tarteaucitron/services', array());
foreach($services_actifs as $service => $params) {
if (!empty($params)) {
$i = 0;
foreach($params as $name => $value) {
$valeurs[$service . '_p' . $i . '_' . $name] = $value;
$i++;
}
}
}
return $valeurs;
}
function formulaires_configurer_tarteaucitron_services_traiter_dist(){
$ret = array();
$services_actifs = lire_config('tarteaucitron/services', array());
foreach($services_actifs as $service => $params) {
if (!empty($params)) {
$i = 0;
foreach($params as $name => $value) {
$valeur_saisie = _request($service . '_p' . $i . '_' . $name);
$valeur_saisie = is_null($valeur_saisie) ? '' : $valeur_saisie;
$services_actifs[$service][$name] = $valeur_saisie;
$i++;
}
}
}
if (ecrire_config('tarteaucitron/services',$services_actifs)) {
$ret['message_ok'] = _T('config_info_enregistree');
} else {
$ret['message_erreur'] = _T('erreur_technique_enregistrement_impossible');
}
$ret['editable'] = true;
return $ret;
}
function formulaires_configurer_tarteaucitron_services_saisies_dist(){
include_spip('inc/tarteaucitron');
function formulaires_configurer_tarteaucitron_services_saisies_dist(){
$saisies = [];
$types_installes = tarteaucitron_liste_types_installes();
$types_actifs = tarteaucitron_liste_types_actifs();
foreach($types_installes as $type => $liste_services) {
foreach($types_actifs as $type => $liste_services) {
$fieldset = array(
'saisie' => 'fieldset',
'options' => array(
@ -21,40 +64,34 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
$champ = array(
'saisie' => 'checkbox',
'options' => array(
'nom' => $service,
'nom' => $service . '_actif',
'disable' => 'oui',
'datas' => array(
$service => $service
)
),
'defaut' => array($service)
)
);
$fieldset['saisies'][] = $champ;
foreach($params as $param) {
$i = 0;
foreach($params as $param => $value) {
$fieldset['saisies'][] = array(
'saisie' => 'input',
'options' => array(
'nom' => $service . '_' . $param,
'label' => $service . '_' . $param,
'explication' => 'Enter your parameter',
'nom' => $service . '_p' . $i . '_' . $param,
'label' => $param,
'explication' => 'Enter this parameter for ' . $service,
'placeholder' => $param,
'afficher_si' => '@' . $service . '@ == "' . $service . '"'
'obligatoire' => 'oui'
)
);
$i++;
}
}
$saisies[] = $fieldset;
}
$saisies[] = array(
'saisie' => 'hidden',
'options' => array(
'nom' => '_meta_casier',
'defaut' => 'tarteaucitron/services'
)
);
return $saisies;
}

112
inc/tarteaucitron.php

@ -27,50 +27,22 @@ function tarteaucitron_actif() {
}
/**
* Récupérer les js correspondants aux services activés
*
* @return boolean | string
*/
function tarteaucitron_liste_services_actifs($objet, $id_objet, $page, $recherche, $resultat_page) {
$services_actifs = array_filter(lire_config('tarteaucitron/services', array()));
$ajouter_services = '';
foreach ($services_actifs as $service => $value) {
if (strpos($service, "key",strlen($service)-3) === false){
$ajouter_services .= recuperer_fond('services/'.$service,
array(
'objet' => $objet,
'id_objet' => $id_objet,
'page' => $page,
'recherche' => $recherche,
'resultat_page' => $resultat_page
)
);
}
}
return $ajouter_services;
}
/**
* Retourne la liste des services TarteAuCitron et leur statut (installe,desinstalle)
* Retourne la liste des services TarteAuCitron avec leur statut (actif,inactif)
* et leur(s) éventuel(s) paramètre(s)
*
* @return Array
*/
function tarteaucitron_liste_services() {
$services_installes = lire_config('tarteaucitron/services_installes', array());
$services_actifs = lire_config('tarteaucitron/services', array());
$list_services = [];
if ($lines=file(find_in_path('lib/tarteaucitron/tarteaucitron.services.js'))){
$i=0;
foreach($lines as $line) {
if(preg_match('/^tarteaucitron\.services\.(\w+)/', $line, $matches)) {
$service = $matches[1];
$statut = (is_array($services_installes[$service])) ? 'installe' : 'desinstalle';
$statut = (is_array($services_actifs[$service])) ? 'actif' : 'inactif';
if (preg_match('/"type": "(\w+)",/', $lines[$i+2], $matches)) {
$type = $matches[1];
@ -79,7 +51,7 @@ function tarteaucitron_liste_services() {
$list_services[$service] = array(
'type' => $type,
'statut' => $statut,
'params' => $services_installes[$service]
'params' => $services_actifs[$service]
);
}
$i++;
@ -95,85 +67,15 @@ function tarteaucitron_liste_services() {
* @return Array
*/
function tarteaucitron_liste_types_installes() {
function tarteaucitron_liste_types_actifs() {
$list_types = [];
$services = tarteaucitron_liste_services();
foreach($services as $service => $prop) {
if ($prop['statut']=='installe') {
if ($prop['statut']=='actif') {
$list_types[$prop['type']][$service] = $prop['params'];
}
}
return $list_types;
}
/**
* Retourne le dossier squelettes du site
*
* @return String
*/
function tarteaucitron_dossier_squelettes() {
// Traiter le cas des sites mutualises
$dir_racine = (defined('_DIR_SITE')) ? _DIR_SITE : _DIR_RACINE;
$dir_squelettes = $dir_racine . 'squelettes/';
return $dir_squelettes;
}
function tarteaucitron_scrap_service($service) {
$tarteaucitron_url = 'https://tarteaucitron.io/fr/install/';
$html = file_get_contents($tarteaucitron_url);
$ret['JS'] = '';
$ret['html'] = '';
$ret['params'] = array();
$doc = new DOMDocument('1.0', 'UTF-8');
$internalErrors = libxml_use_internal_errors(true);
$doc->loadHTML($html);
libxml_use_internal_errors($internalErrors);
$div_service = $doc->getElementById('s_' . $service);
$id = $div_service->lastChild->attributes['id']->value;
$div_code = $doc->getElementById('m' . $id);
$span_list = $div_code->getElementsByTagName('span');
$is_code_js_found = false;
$nb_items = $span_list->length;
for($i=0; $i<$nb_items; $i++) {
$span = $span_list->item($i);
$attributes = $span->attributes;
foreach($attributes as $attr_name => $attr) {
if ($attr_name == "class" && $attr->value == "code" && !$is_code_js_found) {
$param_list = $span->getElementsByTagName('b');
$j = $param_list->length -1;
while ($j > -1) {
$param = $param_list[$j];
$nom_param = str_replace(" ","_",$param->textContent);
$newelement = $doc->createTextNode("'#CONFIG{tarteaucitron/services/" . $service . "_" . $nom_param . "}'");
$span->replaceChild($newelement,$param);
array_unshift($ret['params'],$nom_param);
$j--;
}
$s = $span->getElementsByTagName('s');
$span->removeChild($s[0]);
$script = trim(strip_tags($span->nodeValue));
$script = preg_replace('/(\n\s+)/', "\n", $script);
$script = str_replace("''","'",$script);
$ret['JS'] = $script;
$is_code_js_found = true;
}
}
}
// TODO : récupérer le HTML pour le modèle
$ret['html'] = "<p>Placez le code HTML</p>";
return $ret;
}

1
json/services.json

File diff suppressed because one or more lines are too long

8
lang/tarteaucitron_fr.php

@ -31,7 +31,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'cfg_cookiename' => 'Nom du cookie',
'cfg_cookieslist' => 'Afficher la liste des cookies installés ?',
'cfg_cookieslist_explication' => 'Permet au visiteur de visualiser facilement les cookies actifs.',
'cfg_desinstaller' => 'Désinstaller',
'cfg_desinstaller' => 'Désactiver',
'cfg_exemple' => 'Exemple',
'cfg_exemple_explication' => 'Explication de cet exemple',
'cfg_externalcss' => 'Désactiver le CSS de TarteAuCitron',
@ -39,7 +39,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'cfg_icon' => 'Icône',
'cfg_iconposition' => 'Positionner le bouton',
'cfg_image' => 'Image',
'cfg_installer' => 'Installer',
'cfg_installer' => 'Activer',
'cfg_mandatory' => 'Afficher les cookies obligatoires',
'cfg_mandatory_explication' => 'Montre au visiteur que des cookies obligatoires non désactivables sont utilisés',
'cfg_moreinfolink' => 'Afficher le lien `En savoir plus`',
@ -65,8 +65,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'cfg_text_disclaimer_explication' => 'Modifier le texte d’avertissement par défaut.<br>Note : ce champ accepte les Blocs multilingues',
'cfg_text_info' => 'Info',
'cfg_text_info_explication' => 'Modifier le texte d’info par défaut.<br>Note : ce champ accepte les Blocs multilingues',
'cfg_titre_activation_services' => 'Activation des services',
'cfg_titre_ajouter_services' => 'Installation des services',
'cfg_titre_activation_services' => 'Services activés',
'cfg_titre_ajouter_services' => 'Activation des services',
'cfg_titre_liste_services' => 'Liste des services',
'cfg_titre_recherche_services' => 'Rechercher',
'cfg_titre_result_recherche_services' => 'Résultats de recherche',

2
prive/squelettes/contenu/configurer_services.html

@ -2,7 +2,7 @@
<h1 class="grostitre"><:tarteaucitron:titre_page_configurer_tarteaucitron:></h1>
[(#VAL{configurer_tarteaucitron}|barre_onglets{configurer_services})]
<h3><:tarteaucitron:cfg_titre_ajouter_services:></:tarteaucitron:cfg_titre_ajouter_services:></h3>
<h3><:tarteaucitron:cfg_titre_ajouter_services:></h3>
#FORMULAIRE_CONFIGURER_TARTEAUCITRON_AJOUTER_SERVICES
<h3><:tarteaucitron:cfg_titre_activation_services:></h3>
<div class="ajax">

1
services/canalu.html

@ -1 +0,0 @@
(tarteaucitron.job = tarteaucitron.job || []).push('canalu');

1
services/dailymotion.html

@ -1 +0,0 @@
(tarteaucitron.job = tarteaucitron.job || []).push('dailymotion');

1
services/facebook.html

@ -1 +0,0 @@
(tarteaucitron.job = tarteaucitron.job || []).push('facebook');

3
services/facebookpixel.html

@ -1,3 +0,0 @@
tarteaucitron.user.facebookpixelId = '[(#CONFIG{tarteaucitron/services/facebookpixelkey})]';
tarteaucitron.user.facebookpixelMore = function () { /* add here your optionnal facebook pixel function */ };
(tarteaucitron.job = tarteaucitron.job || []).push('facebookpixel');

1
services/gagenda.html

@ -1 +0,0 @@
(tarteaucitron.job = tarteaucitron.job || []).push('gagenda');

2
services/googlemaps.html

@ -1,2 +0,0 @@
tarteaucitron.user.googlemapsKey = '#CONFIG{tarteaucitron/services/googlemapskey}';
(tarteaucitron.job = tarteaucitron.job || []).push('googlemaps');

3
services/gtag.html

@ -1,3 +0,0 @@
tarteaucitron.user.gtagUa = '[(#CONFIG{tarteaucitron/services/gtagkey})]';
tarteaucitron.user.gtagMore = function () { /* add here your optionnal gtag() */ };
(tarteaucitron.job = tarteaucitron.job || []).push('gtag');

1
services/instagram.html

@ -1 +0,0 @@
(tarteaucitron.job = tarteaucitron.job || []).push('instagram');

1
services/twitter.html

@ -1 +0,0 @@
(tarteaucitron.job = tarteaucitron.job || []).push('twitter');

1
services/twitterembed.html

@ -1 +0,0 @@
(tarteaucitron.job = tarteaucitron.job || []).push('twitterembed');

1
services/vimeo.html

@ -1 +0,0 @@
(tarteaucitron.job = tarteaucitron.job || []).push('vimeo');

1
services/webtvnu.html

@ -1 +0,0 @@
(tarteaucitron.job = tarteaucitron.job || []).push('webtvnu');

1
services/youtube.html

@ -1 +0,0 @@
(tarteaucitron.job = tarteaucitron.job || []).push('youtube');

68
tarteaucitron_administrations.php

@ -67,53 +67,31 @@ function maj_tarteaucitron_cfg() {
$moreInfoLink = (!empty($readmoreLink)) ? array("true") : array("false");
$cfg['moreInfoLink'] = $moreInfoLink;
$services = $cfg['services'];
foreach($services as $service => $value) {
switch ($service) {
case "gtag" :
if (!empty($value)) {
$cfg['services']['gtag_UA-XXXXXXXX-X'] = $value;
$cfg['services']['gtag'] = array("gtag");
}
break;
case "gmap" :
if (!empty($value)) {
$cfg['services']['googlemaps_API_KEY'] = $value;
$cfg['services']['googlemaps'] = array("googlemaps");
}
break;
case "fb_pixel" :
if (!empty($value)) {
$cfg['services']['facebookpixel_YOUR-ID'] = $value;
$cfg['services']['facebookpixel'] = array("facebookpixel");
}
break;
case "fb" :
if (!empty($value)) {
$cfg['services']['facebook'] = array("facebook");
}
break;
foreach($cfg['services'] as $service => $value) {
if (!empty($value)) {
switch ($service) {
case "gtag" :
$cfg['services'][$service] = array('UA-XXXXXXXX-X' => $value);
break;
case "twitter":
case "twitterembed":
$cfg['services'][$service] = array();
break;
case "gmap" :
$cfg['services']['googlemaps'] = array('API_KEY' => $value);
unset($cfg['services'][$service]);
break;
case "fb_pixel" :
$cfg['services']['facebookpixel'] = array('YOUR-ID' => $value);
unset($cfg['services'][$service]);
break;
case "fb" :
$cfg['services']['facebook'] = array();
unset($cfg['services'][$service]);
break;
}
}
}
// TODO : ajouter Matomo
$cfg['services_installes'] = array(
'canalu' => array(),
'dailymotion' => array(),
'facebook' => array(),
'facebookpixel' => array('YOUR-ID'),
'gagenda' => array(),
'googlemaps' => array('API_KEY'),
'gtag' => array('UA-XXXXXXXX-X'),
'twitter' => array(),
'twitterembed' => array(),
'vimeo' => array(),
'webtvnu' => array(),
'youtube' => array()
);
ecrire_config('tarteaucitron',$cfg);
effacer_meta("tarteaucitron/gmap");
effacer_meta("tarteaucitron/fb");
effacer_meta("tarteaucitron/fb_pixel");
}

54
tarteaucitron_pipelines.php

@ -38,7 +38,7 @@ function tarteaucitron_insert_head($flux) {
}
/**
* Inserer les JS correspondants aux services activés dans la configuration du plugin
* Inserer les JS correspondants aux services activés
*
* @pipeline affichage_final
*
@ -47,36 +47,42 @@ function tarteaucitron_insert_head($flux) {
*/
function tarteaucitron_affichage_final($html) {
if (!test_espace_prive() and tarteaucitron_actif()) {
$objet = $id_objet = $recherche = '';
$page = 'sommaire';
$resultat_page = '0';
foreach($GLOBALS['contexte'] as $k => &$v) {
if (preg_match(',^id_(\w+)$,S', $k, $r)
AND ($id = intval($v))>0) {
$objet = 'id_'.$r[1];
$id_objet = $id;
} elseif (in_array($k, array('type-page', 'page'))) {
$page = $v;
} elseif ($k === 'recherche') {
$recherche = $v;
} elseif ($k === 'max') {
$resultat_page = $v;
$ajouter_services = '<script type="text/javascript">';
$json_source = find_in_path('json/services.json');
$json = file_get_contents($json_source);
$parsed_json = json_decode($json);
$services_actifs = lire_config('tarteaucitron/services');
foreach($services_actifs as $service => $params) {
$codejs = $parsed_json->{$service}->{'JS'};
foreach($params as $param => $value) {
$codejs = str_replace($param,$value,$codejs);
}
$ajouter_services .= $codejs . "\n";
}
$ajouter_services = '<script type="text/javascript">';
$ajouter_services .= tarteaucitron_liste_services_actifs($objet, $id_objet, $page, $recherche, $resultat_page);
$ajouter_services .= '</script>';
if ($ajouter_services) {
$html = str_replace('</body>', $ajouter_services. '</body>', $html);
}
$html = str_replace('</body>', $ajouter_services. '</body>', $html);
}
return $html;
}
/**
* Ajouter des entrées dans le porte-plume
*
* @pipeline porte_plume_barre_pre_charger
*
* @param array $barres
* @return array
*/
function tarteaucitron_porte_plume_barre_pre_charger($barres){
$menu_items = array();
$services_actifs = array_filter(lire_config('tarteaucitron/services', array()));
foreach ($services_actifs as $service => $value) {
if ($modele=find_in_path('modeles/tac_' . $service . '.html')) {
$file = fopen($modele,"r");
@ -111,6 +117,14 @@ function tarteaucitron_porte_plume_barre_pre_charger($barres){
return $barres;
}
/**
* Définir des images pour les classes CSS utilisées dans le porte-plume
*
* @pipeline porte_plume_lien_classe_vers_icone
*
* @param array $flux
* @return array
*/
function tarteaucitron_porte_plume_lien_classe_vers_icone($flux){
$icons = array('tac_drop' => 'tac.png');
$services_actifs = array_filter(lire_config('tarteaucitron/services', array()));

Loading…
Cancel
Save