source: spip-zone/_plugins_/_test_/barre_typo_extensible/1_9_2/inc/editer_article.php @ 9840

Last change on this file since 9840 was 9840, checked in by spipcarto@…, 13 years ago

pas le bon fichier ...

modif de l'appel afficher_barre pour passer par id (tres sale...)

File size: 10.6 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2007                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15include_spip('inc/actions');
16include_spip('inc/extra');
17
18// http://doc.spip.org/@inc_editer_article_dist
19function inc_editer_article_dist($new, $id_rubrique=0, $lier_trad=0, $retour='', $config_fonc='articles_edit_config', $row=array(), $hidden='')
20{
21        // Appel en tant que filtre d'un squelette
22        if (!$row) {
23                include_spip('inc/presentation');
24                include_spip('inc/article_select');
25                $row = article_select($new, $id_rubrique, $lier_trad);
26                if (!$row) return '';
27                if (is_numeric($new)) $new = '';
28        }
29
30        // Gaffe: sans ceci, on ecrase systematiquement l'article d'origine
31        // (et donc: pas de lien de traduction)
32
33        $id_article = ($new OR $lier_trad) ? 'oui' : $row['id_article'];
34        $id_rubrique = $row['id_rubrique'];
35        $id_secteur = $row['id_secteur'];
36
37        $aider = charger_fonction('aider', 'inc');
38        $config = $config_fonc($row);
39
40        $form = "<input type='hidden' name='editer_article' value='oui' />\n" .
41                 (!$lier_trad ? '' :
42                 ("\n<input type='hidden' name='lier_trad' value='" .
43                  $lier_trad .
44                  "' />" .
45                  "\n<input type='hidden' name='changer_lang' value='" .
46                  $config['langue'] .
47                  "' />"))
48
49        . editer_article_surtitre($row['surtitre'], $config, $aider)
50        . editer_article_titre($row['titre'], $row['onfocus'], $config, $aider)
51        . editer_article_soustitre($row['soustitre'], $config, $aider)
52        . editer_article_rubrique($id_rubrique, $id_secteur, $config, $aider)
53        . editer_article_descriptif($row['descriptif'], $config, $aider)
54        . editer_article_url($row['url_site'], $row['nom_site'], $config, $aider)
55        . editer_article_chapo($row['chapo'], $config, $aider)
56        . editer_article_texte($row['texte'], $config, $aider)
57        . editer_article_ps($row['ps'], $config, $aider)
58        . editer_article_extra($row['extra'], $id_secteur, $config, $aider)
59        . $hidden
60        . ("<div align='right'><input class='fondo' type='submit' value='"
61        . _T('bouton_enregistrer')
62        . "' /></div>");
63
64        return generer_action_auteur("editer_article", $id_article, $retour, $form, " method='post' name='formulaire'");
65}
66
67// http://doc.spip.org/@editer_article_texte
68function editer_article_texte($texte, $config, $aider)
69{
70        $att_text = " class='formo' "
71        . $GLOBALS['browser_caret']
72        . " rows='"
73        . ($config['lignes'] +15)
74        . "' cols='40'";
75
76        if ($config['afficher_barre']) {
77                include_spip('inc/barre');
78                $afficher_barre = '<div>' 
79                .  afficher_barre('document.getElementById(\'texte_area\')')
80                . '</div>';
81        } else $afficher_barre = '';
82
83        $texte = entites_html($texte);
84         // texte > 32 ko -> decouper en morceaux
85        if (strlen($texte)>29*1024) {
86          list($texte, $sup) = editer_article_recolle($texte, $att_text);
87        } else $sup='';
88
89        return  "\n<p><b>" ._T('info_texte') ."</b>"
90        . $aider ("arttexte") . "<br />\n" 
91        . _T('texte_enrichir_mise_a_jour')
92        . $aider("raccourcis")
93        . "</p>"
94        . $sup
95        . "<br />"
96        . $afficher_barre
97        .  "<textarea id='text_area' name='texte'$att_text>"
98        .  $texte
99        . "</textarea>\n"
100        . (_DIR_RESTREINT ? '' : "<script type='text/javascript'><!--\njQuery(hauteurTextarea);\n//--></script>\n");
101}
102
103// http://doc.spip.org/@editer_article_titre
104function editer_article_titre($titre, $onfocus, $config, $aider)
105{
106        return  "\n<p>" .
107                _T('texte_titre_obligatoire') .
108                $aider("arttitre") .
109                "\n<br /><input type='text' name='titre' style='font-weight: bold; ' class='formo spip_small' value=\"" .
110                entites_html($titre) .
111                "\" size='40' " .
112                $onfocus. // effacer le titre lorsque nouvel article
113                  " />\n</p>";
114}
115
116// http://doc.spip.org/@editer_article_rubrique
117function editer_article_rubrique($id_rubrique, $id_secteur, $config, $aider)
118{
119        $chercher_rubrique = charger_fonction('chercher_rubrique', 'inc');
120
121        $opt = $chercher_rubrique($id_rubrique, 'article', $config['restreint']);
122
123        $msg = _T('titre_cadre_interieur_rubrique') .
124          ((preg_match('/^<input[^>]*hidden[^<]*$/', $opt)) ? '' : $aider("artrub"));
125
126        if ($id_rubrique == 0) $logo = "racine-site-24.gif";
127        elseif ($id_secteur == $id_rubrique) $logo = "secteur-24.gif";
128        else $logo = "rubrique-24.gif";
129
130        return debut_cadre_couleur($logo, true, "", $msg) . $opt .fin_cadre_couleur(true);
131}
132
133// http://doc.spip.org/@editer_article_surtitre
134function editer_article_surtitre($surtitre, $config, $aider)
135{
136        if (($config['articles_surtitre'] == 'non') AND !$surtitre)
137                return '';
138
139        return ( "\n<p><b>" .
140                 _T('texte_sur_titre') .
141                "</b>" .
142                $aider ("arttitre") .
143                "<br />\n<input type='text' name='surtitre' class='forml' value=\"" .
144                 entites_html($surtitre) .
145                 "\" size='40' /></p>");
146}
147
148// http://doc.spip.org/@editer_article_soustitre
149function editer_article_soustitre($soustitre, $config, $aider)
150{
151        if (($config['articles_soustitre'] == "non") AND !$soustitre)
152                return '';
153
154        return ("\n<p><b>" .
155                  _T('texte_sous_titre') .
156                  "</b>" .
157                  $aider ("arttitre") .
158                  "\n<br /><input type='text' name='soustitre' class='forml' value=\"" .
159                  entites_html($soustitre) .
160                "\" size='40' /><br /><br /></p>\n");
161}
162
163// http://doc.spip.org/@editer_article_descriptif
164function editer_article_descriptif($descriptif, $config, $aider)
165{
166        if (($config['articles_descriptif'] == "non") AND !$descriptif)
167                return '';
168
169        $msg = _T('texte_contenu_article');
170        return ("\n<p><b>" ._T('texte_descriptif_rapide') ."</b>" .
171                  $aider("artdesc") .
172                "<br />\n" . 
173                (!trim($msg) ? '' : "$msg<br />\n") .
174                "<textarea name='descriptif' class='forml' rows='2' cols='40'>" .
175                entites_html($descriptif) .
176                "</textarea></p>");
177}
178
179// http://doc.spip.org/@editer_article_url
180function editer_article_url($url, $nom, $config, $aider)
181{
182        if (($config['articles_urlref'] == "non") AND !$url AND !$nom)
183                return '';
184
185        $url_site = entites_html($url);
186        $nom_site = entites_html($nom);
187
188        return '<br />' . _T('entree_liens_sites') ."<br />\n" .
189          _T('info_titre') ." " .
190          "\n<input type='text' name='nom_site' class='forml' size='40' value=\"$nom\"/><br />\n" .
191          _T('info_url') .
192          "\n<input type='text' name='url_site' class='forml' size='40' value=\"$url\"/>\n";
193}
194
195// http://doc.spip.org/@editer_article_ps
196function editer_article_ps($ps, $config, $aider)
197{
198        if (($config['articles_ps'] == "non") AND !$ps)
199                 return '';
200
201        return  "\n<p><b>"
202                . _T('info_post_scriptum')
203                ."</b><br />"
204                . "<textarea name='ps' class='forml' rows='5' cols='40'>"
205                . entites_html($ps)
206                . "</textarea></p>\n";
207}
208
209//
210// Gestion des textes trop longs (limitation brouteurs)
211// utile pour les textes > 32ko
212
213// http://doc.spip.org/@coupe_trop_long
214function coupe_trop_long($texte){
215        $aider = charger_fonction('aider', 'inc');
216        if (strlen($texte) > 28*1024) {
217                $texte = str_replace("\r\n","\n",$texte);
218                $pos = strpos($texte, "\n\n", 28*1024); // coupe para > 28 ko
219                if ($pos > 0 and $pos < 32 * 1024) {
220                        $debut = substr($texte, 0, $pos)."\n\n<!--SPIP-->\n";
221                        $suite = substr($texte, $pos + 2);
222                } else {
223                        $pos = strpos($texte, " ", 28*1024);    // sinon coupe espace
224                        if (!($pos > 0 and $pos < 32 * 1024)) {
225                                $pos = 28*1024; // au pire (pas d'espace trouv'e)
226                                $decalage = 0; // si y'a pas d'espace, il ne faut pas perdre le caract`ere
227                        } else {
228                                $decalage = 1;
229                        }
230                        $debut = substr($texte,0,$pos + $decalage); // Il faut conserver l'espace s'il y en a un
231                        $suite = substr($texte,$pos + $decalage);
232                }
233                return (array($debut,$suite));
234        }
235        else
236                return (array($texte,''));
237}
238
239// http://doc.spip.org/@editer_article_recolle
240function editer_article_recolle($texte, $att_text)
241{
242        $textes_supplement = "<br /><span style='color: red'>"._T('info_texte_long')."</span>\n";
243        $nombre = 0;
244
245        while (strlen($texte)>29*1024) {
246                $nombre ++;
247                list($texte1,$texte) = coupe_trop_long($texte);
248
249                $textes_supplement .= "<br />" .
250                        afficher_barre('document.getElementById(\'texte'.$nombre.'\')')  .
251                        "<textarea id='texte$nombre' name='texte_plus[$nombre]'$att_text>$texte1</textarea>\n";
252                }
253        return array($texte,$textes_supplement);
254}
255
256
257// http://doc.spip.org/@editer_article_chapo
258function editer_article_chapo($chapo, $config, $aider)
259{
260        $chapo = entites_html($chapo);
261
262        if (substr($chapo, 0, 1) == '=') {
263                $virtuel = substr($chapo, 1);
264
265                return "<div style='border: 1px dashed #666666; background-color: #f0f0f0; padding: 5px;'>" .
266                        "<table width='100%' cellspacing='0' cellpadding='0' border='0'>" .
267                        "<tr><td valign='top'>" .
268                        "<span class='verdana1 spip_small'><b><label for='confirme-virtuel'>"._T('info_redirection')."&nbsp;:</label></b>" .    $aider ("artvirt") . "</span>" .
269                        "</td>" .
270                        "<td style='width: 10px'>&nbsp;</td>" .
271                        "<td valign='top' style='width: 50%'>" .
272                        "<input type='text' name='virtuel' class='forml spip_xx-small' value=\"$virtuel\" size='40' />" .
273                        "<input type='hidden' name='changer_virtuel' value='oui' />" .
274                        "</td></tr></table>\n" .
275                        "<span class='verdana1 spip_small'>" . _T('texte_article_virtuel_reference') . "</span>" .
276                        "</div>\n";
277        } else {
278
279                if (($config['articles_chapeau'] == "non") AND !$chapo)
280                        return '';
281
282                $rows = $config['lignes'];
283                return "\n<p><br /><b>"._T('info_chapeau')."</b>" .
284                        $aider ("artchap") .
285                        "\n<br />"._T('texte_introductif_article')."<br />\n" .
286                        "<textarea name='chapo' class='forml' rows='$rows' cols='40'>" .
287                        $chapo .
288                        "</textarea></p>\n";
289        }
290}
291
292// http://doc.spip.org/@editer_article_extra
293function editer_article_extra($extra, $id_secteur, $config, $aider)
294{
295        if (!$config['extra'])
296                return '';
297        include_spip('inc_extra');
298        return extra_saisie($extra, 'articles', $id_secteur);
299}
300
301// Choix par defaut des options de presentation
302// http://doc.spip.org/@articles_edit_config
303function articles_edit_config($row)
304{
305        global $champs_extra, $spip_ecran, $options, $spip_lang, $spip_display;
306
307        $config = $GLOBALS['meta'];
308        $config['lignes'] = ($spip_ecran == "large")? 8 : 5;
309        $config['afficher_barre'] = $spip_display != 4;
310        $config['langue'] = $spip_lang;
311       
312
313        if ($options != 'avancees') {
314                $config['articles_surtitre'] = 'non';
315                $config['articles_descriptif'] = "non";
316                $config['articles_urlref'] = "non";
317                $config['articles_ps'] = "non";
318        }
319
320        if ($champs_extra) {
321                include_spip('inc/extra');
322                $config['extra'] = true;
323        } else $config['extra'] = false;
324
325        $config['restreint'] = ($row['statut'] == 'publie');
326        return $config;
327}
328?>
Note: See TracBrowser for help on using the repository browser.