Evolution #3039

Spip 2.1: prise en compte des champs_extra dans editer_artcile

Ajouté par Arnaud Dupin de Beyssat il y a plus de 3 ans. Mis à jour il y a plus de 2 ans.

Statut:FerméDébut:11/08/2013
Priorité:NormalEchéance:
Assigné à:-% réalisé:

0%

Catégorie:-
Version cible:2.1
Resolution:invalid

Description

Bonjour
Après la création d'un formulaire Spip (sans usage de plugin) remplissant un article avec champs_extra, je me suis aperçu que les champs_extra n'étaient pas pris en compte.
Après recherche, j'ai contaté que le pb venait du fichier action/editer_article qui limite la saisie aux champs Spip.
Je l'ai donc patché en ajoutant les intitulés de mes champs extra, comme suit:

function articles_set($id_article, $set=null) {
$err = '';
// unifier $texte en cas de texte trop long
trop_longs_articles();

$c = array();
foreach (array(
'surtitre', 'titre', 'soustitre', 'descriptif',
'nom_site', 'url_site', 'chapo', 'texte', 'ps'
//patch ADB
, 'latitude', 'longitude', 'cartes', 'zone_meteo', 'capitainerie', 'secours', 'freq_radio', 'distances', 'svce_meteo', 'jour', 'nuit', 'dangers', 'feux', 'acces', 'te', 'places', 'equipement', 'services', 'avitaillement', 'location', 'svce_divers', 'tourisme', 'mouillage', 'decor'
// fin patch ADB
) as $champ)
$c[$champ] = _request($champ,$set);

De ce fait les champs extra sont remplis.

Serait-il possible, pour les Spip 2.1, de faire en sorte que les champs_extra existant éventuellement dans la table Articles soient automatiquement pris en compte?

Merci

Historique

#1 Mis à jour par b b il y a plus de 3 ans

  • Version cible mis à 2.1

#2 Mis à jour par b b il y a plus de 3 ans

  • Statut changé de Nouveau à Fermé
  • Resolution mis à invalid

Les champs extras sont gérés par le plugin éponyme, si tu veux que tes champs soient affichés dans le privé il faut les déclarer à l'aide de l'API fournie par le plugin comme indiqué dans sa documentation : Créer un nouveau champ via un plugin.

#3 Mis à jour par Arnaud Dupin de Beyssat il y a plus de 2 ans

Désolé b b, mais mes champs extra sont bien gérés par les plugin Champs Extra 2 et Interface pour Champs Extras.
Mors de la màj en 2.126, le même pb s'est posé pour l'affichage et la prise en compte de ces champs extra. L'application du patch évoqué dans le fichier editer_article a r&solu le problème.
Je suppose qu'il mùanque un "renvoi" vers le plugin de gestion des champs extra ou autre chose.
Merci

#4 Mis à jour par b b il y a plus de 2 ans

Salut,

Tu utilises bien le plugin champs extras, as-tu posé ta question dans le forum du plugin en question sur contrib ?

Pour info, j'ai fermé ce ticket car les champs extras ne sont plus gérés par le core, mais par le plugin éponyme, cf :

Le support des champs extra n’est plus natif à partir de SPIP 2.0.

http://contrib.spip.net/Champs-Extra,2939

Voilà pourquoi je pense que ce ticket est invalide (sans rapport avec le core).

#5 Mis à jour par marcimat 🌈 il y a plus de 2 ans

Mais :

- est-ce que tes champs (extras) s'ajoutent automatiquement dans ton formulaire ?
- est-ce que tu as le code <!--extra--> dans ton formulaire ?

Le plugin champs extras (en spip 2) s'appuie notament sur la variable $flux['args']['type'] du formulaire, pour trouver les champs extras utilisables par ce formulaire http://zone.spip.org/trac/spip-zone/browser/_plugins_/champs_extras/core/branches/v1/cextras_pipelines.php?rev=83665#L232

Peut être que tu ajoutes toi même les champs dans le formulaire. Dans ce cas, ce n'est pas tout à fait suffisant. Effectivement, lors du traitement (pre_edition), pour savoir qu'un champ extra a été posté, le plugin cherche une variable spécifique pour le champ. Si cette variable n'est pas présente, il ne cherchera pas à enregistrer le champ. Cf: http://zone.spip.org/trac/spip-zone/browser/_plugins_/champs_extras/core/branches/v1/cextras_pipelines.php?rev=83665#L309 .

En l'occurrence, il faut vraissemblablement que tu ajoutes dans ton formulaire (dans ce cas là donc) pour chaque champ extra, un <input hidden name="cextra_XX" value="1" /> où XX est le nom du champs extra.

#6 Mis à jour par Arnaud Dupin de Beyssat il y a plus de 2 ans

Je n'utilise pas de formulaires. En partie publique, les champs extra - même sans mon patch - s'affichent correctement.
En revanche, sans le patch, ils sont invisibles dans la partie privée d'édition d'un article.

A mon sens - mais je ne suis pas programmeur - l'array de la variable $c de éditer_article ne prend pas en compte ces champs extra. Je ne sais pas comment les plugins champs_extra2 et Interface pour Champs Extras peuvent indiquer à Spip (et éditer_article) que ces champs exisztent).

Je vais poser la question sur le forum de ces plugins.
Merci

#7 Mis à jour par marcimat 🌈 il y a plus de 2 ans

Il y a une autre possibilité : c'est que tu as (peut être) tellement de champs extras (stockés dans spip_meta) que la longueur de la chaîne les décrivant dépasse la taille du champ 'valeur' de la table spip_meta, rendant impossible la désérialisation des données en question par le plugin Champs Extras.

Comment avais tu créé les champs ?
- via le plugin d'interface de champs extras ?
- sont ils toujours «gérés» par ce plugin d'interface ?

S'ils ne sont plus gérés, c'est normal que le plugin ne puissent enregistrer les données. La fonction que tu mentionnes n'a de toutes façon pas à être modifiée ; si tu utilises le formulaire d'édition d'article standart, avec le plugin champ extra gérant les champs, tout devrait fonctionner sans problème. Dans la limite donc, de ce que je mentionne là sur la taille du champ 'valeur' de spip_meta, que tu peux peut être augmenter en taille (c'est un varchar).

Formats disponibles : Atom PDF

Ajouter une image à partir du presse-papier (Taille maximale: 1,25 Mo)