diff --git a/ecrire/action/editer_article.php b/ecrire/action/editer_article.php index 6897a4665c8078df81a10c4b4a346e4917b13a85..34ae663bb30f96aa468371ad4ae152913b7786c1 100644 --- a/ecrire/action/editer_article.php +++ b/ecrire/action/editer_article.php @@ -86,21 +86,22 @@ function revisions_articles ($id_article, $id_rubrique, $new) { { global $flag_revisions, $champs_extra; - $id_auteur = _request('id_auteur'); - $texte = trop_longs_articles(_request('texte_plus')) . _request('texte'); - if (!strlen($titre_article=corriger_caracteres(_request('titre')))) - $titre_article = _T('info_sans_titre'); - - $champs = array( - 'surtitre' => corriger_caracteres(_request('surtitre')), - 'titre' => $titre_article, - 'soustitre' => corriger_caracteres(_request('soustitre')), - 'descriptif' => corriger_caracteres(_request('descriptif')), - 'nom_site' => corriger_caracteres(_request('nom_site')), - 'url_site' => corriger_caracteres(_request('url_site')), - 'chapo' => corriger_caracteres( _request('chapo')), - 'texte' => corriger_caracteres($texte), - 'ps' => corriger_caracteres(_request('ps'))) ; + $id_auteur = _request('id_auteur'); + + // unifier $texte en cas de texte trop long + trop_longs_articles(); + + // ne pas accepter de titre vide + if (_request('titre') === '') + $_POST['titre'] = _T('ecrire:info_sans_titre'); + + foreach (array( + 'surtitre', 'titre', 'soustitre', 'descriptif', + 'nom_site', 'url_site', 'chapo', 'texte', 'ps') as $champ) { + if (($val = _request($champ)) !== NULL) { + $champs[$champ] = corriger_caracteres($val); + } + } // Stockage des versions : creer une premier version si non-existante if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) { @@ -125,7 +126,11 @@ function revisions_articles ($id_article, $id_rubrique, $new) { $champs_extra = extra_recup_saisie("articles", _request('id_secteur')); } - spip_query("UPDATE spip_articles SET id_rubrique=$id_rubrique, surtitre=" . spip_abstract_quote($champs['surtitre']) . ", titre=" . spip_abstract_quote($champs['titre']) . ", soustitre=" . spip_abstract_quote($champs['soustitre']) . ", descriptif=" . spip_abstract_quote($champs['descriptif']) . ", chapo=" . spip_abstract_quote($champs['chapo']) . ", texte=" . spip_abstract_quote($champs['texte']) . ", ps=" . spip_abstract_quote($champs['ps']) . ", url_site=" . spip_abstract_quote($champs['url_site']) . ", nom_site=" . spip_abstract_quote($champs['nom_site']) . ", date_modif=NOW() " . ($champs_extra ? (", extra = " . spip_abstract_quote($champs_extra)) : '') . " WHERE id_article=$id_article"); + $update = ''; + foreach ($champs as $champ => $val) + $update .= $champ . '=' . spip_abstract_quote($val).', '; + + spip_query("UPDATE spip_articles SET id_rubrique=$id_rubrique, $update date_modif=NOW() " . ($champs_extra ? (", extra = " . spip_abstract_quote($champs_extra)) : '') . " WHERE id_article=$id_article"); // Stockage des versions if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) { @@ -166,14 +171,14 @@ function revisions_articles ($id_article, $id_rubrique, $new) { // // http://doc.spip.org/@trop_longs_articles -function trop_longs_articles($texte_plus) -{ - $nb_texte = 0; - while ($nb_texte ++ < count($texte_plus)+1){ - $texte_ajout .= ereg_replace("<!--SPIP-->[\n\r]*","", - $texte_plus[$nb_texte]); +function trop_longs_articles() { +# print_r($_POST);exit; + if (isset($_POST['texte_plus']) && is_array($_POST['texte_plus'])) { + foreach ($_POST['texte_plus'] as $t) { + $_POST['texte'] = preg_replace(",<!--SPIP-->[\n\r]*,","", $t) + . $_POST['texte']; + } } - return $texte_ajout; } // Poser un lien de traduction vers un article de reference diff --git a/ecrire/exec/articles_edit.php b/ecrire/exec/articles_edit.php index 35af441190fe255ed1612dca0a0ed4df38e2d23b..f4dd9c99344885576759f628050b2bda8e9dcbe6 100644 --- a/ecrire/exec/articles_edit.php +++ b/ecrire/exec/articles_edit.php @@ -190,7 +190,7 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) { $onfocus . " />\n<P>" . - (($articles_soustitre OR $soustitre) ? + (($articles_soustitre OR strlen($soustitre)) ? ("<b>" . _T('texte_sous_titre') . "</b>" . @@ -198,7 +198,7 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) { "\n<br /><input type='text' name='soustitre' class='forml' value=\"" . $soustitre . "\" size='40' /><br /><br />\n") : - ("\n<input type='hidden' name='soustitre' value=\"$soustitre\" />")) . + '') . debut_cadre_couleur($logo, true, "", _T('titre_cadre_interieur_rubrique'). aide("artrub")) . @@ -208,14 +208,14 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) { ($new ? '' : "\n<input type='hidden' name='id_rubrique_old' value='$id_rubrique'>") . - ((($options == "avancees" AND $articles_descriptif) OR $descriptif)? + ((($options == "avancees" AND $articles_descriptif) OR strlen($descriptif))? ("\n<P><B>" ._T('texte_descriptif_rapide') ."</B>" . aide ("artdesc") . "</p>\n<br />" ._T('texte_contenu_article') ."<br />\n" . "<textarea name='descriptif' class='forml' rows='2' cols='40' wrap=soft>" . $descriptif . "</textarea>\n") : - ("<input type='hidden' name='descriptif' value=\"$descriptif\" />")) . + '') . ((($options == "avancees" AND $articles_urlref) OR $nom_site OR $url_site) ? (_T('entree_liens_sites') ."<br />\n" . @@ -234,9 +234,9 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) { ($spip_display==4 ? '' : afficher_barre('document.formulaire.texte')) . "<textarea id='text_area' name='texte'$att_text>$texte</textarea>\n" . - ((($articles_ps AND $options == "avancees") OR $ps) ? + ((($articles_ps AND $options == "avancees") OR strlen($ps)) ? ("\n<p><b>" . _T('info_post_scriptum') ."</b><br />" . "<textarea name='ps' class='forml' rows='5' cols='40' wrap=soft>" . $ps . "</textarea></p><p>\n") : - ("<input type='hidden' name='ps' value=\"" . $ps . "\">")) . + '') . (!$champs_extra ? '': extra_saisie($extra, 'articles', $id_secteur, false)) .