diff --git a/ecrire/inc/filtres_ecrire.php b/ecrire/inc/filtres_ecrire.php index 5e111aba53f21f1e3249358acb7ce9f59dd6d827..34207ab90c104eb7f14f25146a689caeb1643181 100644 --- a/ecrire/inc/filtres_ecrire.php +++ b/ecrire/inc/filtres_ecrire.php @@ -422,7 +422,20 @@ function lien_article_virtuel($virtuel) { return ''; } - return propre('[->' . $virtuel . ']'); + $joli = $virtuel; + $parts = parse_url($virtuel); + if (!empty($parts['query']) and str_contains($parts['query'], ']')) { + $query = str_replace(['[', ']'], [urlencode('['), urlencode(']')], $parts['query']); + $virtuel = str_replace("?" . $parts['query'], "?$query", $virtuel); + } + if ($virtuel !== $joli) { + $joli = propre('[' . $joli . ' -> ' . $virtuel . ']'); + } + else { + $joli = propre('[->' . $virtuel . ']'); + } + + return $joli; } diff --git a/prive/formulaires/rediriger_article.php b/prive/formulaires/rediriger_article.php index dfd94ec9aaa5ef4ab0f9fd56aeb8043977c5a821..12460893c73219ebfffead9dc49a46e1989841fe 100644 --- a/prive/formulaires/rediriger_article.php +++ b/prive/formulaires/rediriger_article.php @@ -36,10 +36,12 @@ function formulaires_rediriger_article_charger_dist($id_article, $retour = '') { include_spip('inc/texte'); + include_spip('inc/filtres_ecrire'); + $valeurs = [ 'redirection' => $redirection, 'id' => $id_article, - '_afficher_url' => ($redirection ? propre("[->$redirection]") : ''), + '_afficher_url' => ($redirection ? lien_article_virtuel($redirection) : ''), ]; return $valeurs;