Valider 19592405 rédigé par marcimat@rezo.net's avatar marcimat@rezo.net
Parcourir les fichiers

Soit deux objets, A et B, avec B possédant une table de liens.

On pouvait indiquer de créer donc pour B la table de liens, et permettre de lier des B lorsqu'on est sur la vue de A.
On ajoute la possibilité de voir les A liés à B sur la vue de B (c'est ce qu'on a par exemple sur la page d'un mot clé).
 
Cependant, on utilise un squelette prive/objets/liste/A.html qui n'a pas forcément le critère `{id_B ?}` nécessaire
pour que la liste ne liste justement que les éléments A liés à B…  ce qui fait que par défaut, cela liste tous les A.

Il faut surcharger le fichier de liste pour corriger. C'est un problème qui devient récurrent à mesure qu'on multiplie les
objets éditoriaux et il faudra trouver un jour une solution correcte à cela.

Ainsi là, si vous liez un objet B à des articles, via spip_B_liens donc, sur la vue de B, vous verrez tous les articles
par défaut (si vous activez l'option) tant que le fichier de liste n'est pas modifié.
parent 30497605
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+13 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -43,7 +43,20 @@
		\[(\#URL_ECRIRE{[(#TYPE)]_edit,#ID_OBJET=\##MID_OBJET}|icone_verticale{\##MID_OBJET|afficher_qui_edite{#TYPE},warning-24,'',right edition_deja ajax preload})\]
	\]
\]
<BOUCLE_afficher_liens(CONDITION){si #OBJET|option_presente{afficher_liens}}>
<div class="nettoyeur"></div>
<div class="liste">
	\<BOUCLE_objetslies([(#TABLE)]_liens){#ID_OBJET}{0,1}><h3>\<:#TYPE:titre_objets_lies_#TYPE:></h3>\</BOUCLE_objetslies>

	\<BOUCLE_listeobjets([(#TABLE)]_liens){#ID_OBJET}{fusion objet}{par objet}>
		\#SET{table,\#OBJET|table_objet}
		\[(\#SET{titre,\[\#OBJET:info_(\#GET{table})_liees_#TYPE\]})\]
		\[(\#SET{liste,\#VAL{prive/objets/liste/\#GET{table}}|trouver_fond|?{\#GET{table},objets_lies_#TYPE}})\]
		\<INCLURE{fond=prive/objets/liste/\#GET{liste},objet,#ID_OBJET,ajax,env} />
	\</BOUCLE_listeobjets>
</div>
</BOUCLE_afficher_liens>[(#REM)
]
\#PIPELINE{afficher_complement_objet,\#ARRAY{args,\#ARRAY{type,#TYPE,id,\##MID_OBJET},data,'<div class="nettoyeur"></div>'}}

\#BOITE_FERMER
+11 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -399,6 +399,12 @@ function formulaires_fabriquer_plugin_traiter_dist(){
					fabriquer_fichier("prive/objets/liste/objets_roles_associer.html", $data);
					fabriquer_fichier("prive/objets/liste/objets_roles_associer_fonctions.php", $data); // pff
				}

				// lister aussi les liaisons sur la vue de cet objet
				if (option_presente($objet, 'afficher_liens')) {
					fabriquer_fichier("prive/objets/liste/\objets_lies_objet.html", $data);
					fabriquer_fichier("prive/squelettes/contenu/objet.html", $data); // fichier habituellement échaffaudé
				}
			}

			// si traductions demandees, creer le fichier de pre-chargement
@@ -545,6 +551,7 @@ function fabriquer_fichier($chemin, $data) {

	// on retrouve le nom du fichier et la base du chemin de destination
	$dest = explode('/', $chemin);
	$chemin = str_replace("\o", "o", $chemin); // enlever l'échappement \objet
	$nom = array_pop($dest);
	$chemin_dest = implode('/', $dest);

@@ -557,11 +564,14 @@ function fabriquer_fichier($chemin, $data) {
	// on modifie le nom de destination :
	// 'prefixe' => $prefixe.
	// 'objet'   => $objet.
	// mais on conserve si '\objets'
	$nom = str_replace("\o", "\1o\\", $nom);
	$nom = str_replace('prefixe', $data['paquet']['prefixe'], $nom);
	if (isset($data['objet'])) {
		$nom = str_replace('objets',  $data['objet']['lobjet'], $nom);
		$nom = str_replace('objet',   $data['objet']['type'], $nom);
	}
	$nom = str_replace("\1o\\", "o", $nom);

	// calcul du squelette et copie a destination du contenu.
	$contenu = recuperer_fond(FABRIQUE_SKEL_SOURCE . $chemin, $data);
+6 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -288,6 +288,7 @@
		titre_logo_objet,
		titre_langue_objet,
		texte_definir_comme_traduction_objet,
		titre_\objets_lies_objet,
		titre_objets_rubrique,
		info_objets_auteur,
		retirer_lien_objet,
@@ -302,7 +303,7 @@
	[(#SAISIE{input, objets/#_objet:CLE/chaines/#VALEUR,
		label=[(#VALEUR|cle_de_langue{#ARRAY{objet,#GET{objets},type,#GET{type}}})],
		conteneur_class=pleine_largeur,
		defaut=[(#VAL{fabrique:chaine_#VALEUR[(#_objet:GENRE|=={feminin}|?{_feminin})]}|_T{[(#ARRAY{
		defaut=[(#VAL{fabrique:chaine_}|concat{#VALEUR|replace{'\[\\\]',''}}|concat{#_objet:GENRE|=={feminin}|?{_feminin}}|_T{[(#ARRAY{
				objets,#GET{langue_objets},
				mobjets,[(#GET{langue_objets}|ucfirst)],
				type,#GET{langue_type},
@@ -362,6 +363,10 @@
			explication=<:fabrique:label_vue_liens_explication:>,
			datas=[(#ENV{objets}|fabrique_lister_objets_editoriaux{#ENV{objets/#CLE/vue_liens, #ARRAY}, #LISTE{#TABLE}})],
			conteneur_class=saisie_choisir_objets})]

		[(#SAISIE{oui_non, objets/#CLE/afficher_liens,
			label=<:fabrique:label_afficher_liens:>,
			explication=<:fabrique:label_afficher_liens_explication:>})]
		</div>


+6 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -129,6 +129,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
	'chaine_titre_objet_feminin' => '@mtype@',
	'chaine_titre_objets' => '@mobjets@',
	'chaine_titre_objets_feminin' => '@mobjets@',
	'chaine_titre_objets_lies_objet' => 'Liés à ce @type@',
	'chaine_titre_objets_lies_objet_feminin' => 'Liés à cette @type@',
	'chaine_titre_objets_rubrique' => '@mobjets@ de la rubrique',
	'chaine_titre_objets_rubrique_feminin' => '@mobjets@ de la rubrique',
	'champ_ajoute' => 'Un champ a été ajouté',
@@ -207,6 +209,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
	',

	// L
	'label_afficher_liens' => 'Afficher les différentes liaisons sur la vue de votre objet ?',
	'label_afficher_liens_explication' => 'Vous pouvez sur la vue de votre objet, lister les objets (sélectionnés au dessus) qui lui sont liés. 
		Note: il est possible que ces listes ne fonctionnent pas parfaitement, affichant l’ensemble des objets, au lieu de seulement ceux liés au votre ; 
		il faudra alors surcharger le fichier de liste utilisé (prive/objets/liste/xxx.html) pour ajouter un critère `{xxx_liens.id_xxx ?}` supplémentaire.',
	'label_auteur' => 'Nom de l’auteur',
	'label_auteur_lien' => 'URL vers l’auteur',
	'label_auteurs_liens' => 'Lier des auteurs ?',