Rechercher dynamiquenent les noms des champs à aliaser
Suite discussion en #1
J'avais commit ce commit
From f132a8a8ce06dcc6098d7fdf46a4d3783ba54c72 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=AFeul=20Rouquette?= <maieul@maieul.net>
Date: Sat, 9 Sep 2023 14:10:33 +0200
Subject: [PATCH] =?UTF-8?q?feat:=20lorsqu'on=20cr=C3=A9e=20l'alias=20d'un?=
=?UTF-8?q?=20article,=20n'aliaser=20que=20les=20champs=20non=20vide?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
action/aliaser.php | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/action/aliaser.php b/action/aliaser.php
index 7a07558..7e9c76c 100644
--- a/action/aliaser.php
+++ b/action/aliaser.php
@@ -6,16 +6,15 @@ if (!defined('_ECRIRE_INC_VERSION')) {
function alias_aliaser_objet($id_article) {
include_spip('base/abstract_sql');
- $row = sql_fetsel('id_rubrique', 'spip_articles', 'id_article=' . intval($id_article));
- $c = [
- 'surtitre' => "<article$id_article|surtitre>",
- 'titre' => "<article$id_article|titre>",
- 'soustitre' => "<article$id_article|soustitre>",
- 'descriptif' => "<article$id_article|descriptif>",
- 'chapo' => "<article$id_article|chapo>",
- 'texte' => "<article$id_article|texte>",
- 'ps' => "<article$id_article|ps>",
- ];
+ include_spip('inc/filtres');
+ $champs_editables = objet_info('article', 'champs_editables');
+ $row = sql_fetsel(array_merge(['id_rubrique'], $champs_editables), 'spip_articles', 'id_article=' . intval($id_article));
+ $c = [];
+ foreach ($row as $field => $value) {
+ if ($field !== 'id_rubrique' && $value) {
+ $c[$field] = "<article{$id_article}|$field>";
+ }
+ }
$new = 0;
if ($row) {
include_spip('action/editer_article');
--
2.34.1
Sur ce patch plusieurs problèmes
- Le point en #2 de "faut-il aliaser les champs vide ?"
- il faut aussi s'assurer que c'est des champs textes, sinon ca va couiner
- il y a pas de modèle global, mais uniquement par champ. Deux solutions
- créer un modèle global
- considérer que c'est à la personne qui fournit un champ de fournir le modèle, et on ne crée un alias que si le modèle existe