diff --git a/abonnements_pipelines.php b/abonnements_pipelines.php index f2f399f..c971f48 100644 --- a/abonnements_pipelines.php +++ b/abonnements_pipelines.php @@ -230,7 +230,7 @@ function abonnements_affiche_gauche($flux) { } /* - * Ajouter la boite des abonnements sur la fiche auteur et les offres sur les objets configurés + * Ajouter la boite des abonnements sur la fiche auteur */ function abonnements_affiche_milieu($flux) { $e = trouver_objet_exec($flux['args']['exec']); @@ -254,7 +254,7 @@ function abonnements_affiche_milieu($flux) { } /* - * Ajouter la boite des abonnements sur la fiche auteur et les offres sur les objets configurés + * Ajouter les offres sur les objets configurés */ function abonnements_affiche_enfants($flux) { $e = trouver_objet_exec($flux['args']['exec']); @@ -263,14 +263,13 @@ function abonnements_affiche_enfants($flux) { if ( is_array($e) and !$e['edition'] - and isset($flux['args'][$e['id_table_objet']]) and in_array($e['table_objet_sql'], lire_config('abonnements/objets', array())) and $texte = recuperer_fond( 'prive/objets/editer/liens', array( 'table_source' => 'abonnements_offres', 'objet' => $e['type'], - 'id_objet' => $flux['args'][$e['id_table_objet']] + 'id_objet' => $flux['args']['id_objet'] ) ) ) { @@ -284,6 +283,57 @@ function abonnements_affiche_enfants($flux) { return $flux; } +/** + * Afficher les contenus dans lesquels sont rangés les offres + * + * @param array $flux + * @return array + */ +function abonnements_affiche_hierarchie($flux) { + include_spip('inc/config'); + + // Sur la page d'une offre + if ( + $flux['args']['objet'] == 'abonnements_offre' + and $objets = lire_config('abonnements/objets') + ) { + include_spip('action/editer_liens'); + $objets = array_map('objet_type', $objets); + + // On cherche si cette offre à des liens + if ($liens = objet_trouver_liens( + array('abonnements_offre' => $flux['args']['id_objet']), + array('*' => '*') + )) { + $liens_parents = array(); + $liens_offres = array(); + foreach ($liens as $lien) { + // Seulement si ce lien est actuellement prévu dans la config + if (in_array($lien['objet'], $objets)) { + // Si c'est une liaison entre deux offres + if ($lien['objet'] == 'abonnements_offre') { + $liens_offres[] = "[->{$lien['objet']}{$lien['id_objet']}]"; + } + else { + $liens_parents[] = "[->{$lien['objet']}{$lien['id_objet']}]"; + } + } + } + + if ($liens_parents) { + $liens_parents = PtoBR(propre(_T('abonnementsoffre:liens_parents_label') . join(', ', $liens_parents))); + $flux['data'] .= '
'.$liens_parents.'
'; + } + if ($liens_offres) { + $liens_offres = PtoBR(propre(_T('abonnementsoffre:liens_offres_label') . join(', ', $liens_offres))); + $flux['data'] .= '
'.$liens_offres.'
'; + } + } + } + + return $flux; +} + /* * Ajouter une feuille de style privée */ diff --git a/lang/abonnementsoffre_fr.php b/lang/abonnementsoffre_fr.php index ea164d5..0004d93 100644 --- a/lang/abonnementsoffre_fr.php +++ b/lang/abonnementsoffre_fr.php @@ -81,7 +81,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( // N 'nb_abonnements' => 'Nb. abo.', - + + // P + 'liens_offres_label' => 'Liée aux offres : ', + 'liens_parents_label' => 'Dans les contenus : ', + // R 'retirer_lien_abonnementsoffre' => 'Retirer cette offre d’abonnement', 'retirer_tous_liens_abonnementsoffres' => 'Retirer toutes les offres d’abonnement', diff --git a/paquet.xml b/paquet.xml index db031c8..b27a6e8 100644 --- a/paquet.xml +++ b/paquet.xml @@ -40,6 +40,7 @@ +