Subversion Repositories Sites.tela-botanica.org

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 david 1
<?php
2
 
3
/***************************************************************************\
4
 *  SPIP, Systeme de publication pour l'internet                           *
5
 *                                                                         *
6
 *  Copyright (c) 2001-2005                                                *
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
 
13
 
14
include ("inc.php3");
15
include_ecrire ("inc_documents.php3");
16
include_ecrire ("inc_barre.php3");
17
 
18
$articles_surtitre = lire_meta("articles_surtitre");
19
$articles_soustitre = lire_meta("articles_soustitre");
20
$articles_descriptif = lire_meta("articles_descriptif");
21
$articles_urlref = lire_meta("articles_urlref");
22
$articles_chapeau = lire_meta("articles_chapeau");
23
$articles_ps = lire_meta("articles_ps");
24
$articles_redac = lire_meta("articles_redac");
25
$articles_mots = lire_meta("articles_mots");
26
$articles_modif = lire_meta("articles_modif");
27
 
28
// securite
29
$id_article = intval($id_article);
30
$id_rubrique = intval($id_rubrique);
31
$lier_trad = intval($lier_trad);
32
unset ($flag_editable);
33
 
34
//
35
// Creation de l'objet article
36
//
37
 
38
if ($id_article) {
39
	// Recuperer les donnees de l'article
40
	$query = "SELECT * FROM spip_articles WHERE id_article=$id_article";
41
	$result = spip_query($query);
42
 
43
	if ($row = spip_fetch_array($result)) {
44
		$id_article = $row["id_article"];
45
		$surtitre = $row["surtitre"];
46
		$titre = $row["titre"];
47
		$soustitre = $row["soustitre"];
48
		$id_rubrique = $row["id_rubrique"];
49
		$id_secteur = $row['id_secteur'];
50
		$descriptif = $row["descriptif"];
51
		$nom_site = $row["nom_site"];
52
		$url_site = $row["url_site"];
53
		$chapo = $row["chapo"];
54
		$texte = $row["texte"];
55
		$ps = $row["ps"];
56
		$date = $row["date"];
57
		$statut = $row['statut'];
58
		$date_redac = $row['date_redac'];
59
	    	if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$date_redac,$regs)){
60
		        $mois_redac = $regs[2];
61
		        $jour_redac = $regs[3];
62
		        $annee_redac = $regs[1];
63
		        if ($annee_redac > 4000) $annee_redac -= 9000;
64
		}
65
		$extra=$row["extra"];
66
 
67
		$query = "SELECT * FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur";
68
		$result_auteur = spip_query($query);
69
		$flag_auteur = (spip_num_rows($result_auteur) > 0);
70
 
71
		$flag_editable = (acces_rubrique($id_rubrique) OR ($flag_auteur > 0 AND ($statut == 'prepa' OR $statut == 'prop' OR $new == 'oui')));
72
	}
73
}
74
else if ($new=='oui') {
75
	if ($lier_trad) {
76
		// Pas de langue choisie par defaut
77
		$changer_lang = '';
78
 
79
		// Recuperer les donnees de la traduction
80
		$query = "SELECT * FROM spip_articles WHERE id_article=$lier_trad";
81
		$result = spip_query($query);
82
 
83
		if ($row = spip_fetch_array($result)) {
84
			$surtitre = $row["surtitre"];
85
			$titre = filtrer_entites(_T('info_nouvelle_traduction')).' '.$row["titre"];
86
			$soustitre = $row["soustitre"];
87
			$id_rubrique_trad = $row["id_rubrique"];
88
			$descriptif = $row["descriptif"];
89
			$nom_site = $row["nom_site"];
90
			$url_site = $row["url_site"];
91
			$chapo = $row["chapo"];
92
			$texte = $row["texte"];
93
			$ps = $row["ps"];
94
			$date = $row["date"];
95
			$date_redac = $row['date_redac'];
96
			if (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$date_redac,$regs)) {
97
				$mois_redac = $regs[2];
98
				$jour_redac = $regs[3];
99
				$annee_redac = $regs[1];
100
				if ($annee_redac > 4000) $annee_redac -= 9000;
101
			}
102
			$extra = $row["extra"];
103
		}
104
		$langues_autorisees = lire_meta('langues_multilingue');
105
 
106
		// Regler la langue, si possible
107
		if (ereg(",$spip_lang,", ",$langues_autorisees,")) {
108
			if (lire_meta('multi_articles') == 'oui') {
109
				// Si le menu de langues est autorise sur les articles,
110
				// on peut changer la langue quelle que soit la rubrique
111
				$changer_lang = $spip_lang;
112
			}
113
			else if (lire_meta('multi_rubriques') == 'oui') {
114
				// Chercher la rubrique la plus adaptee pour accueillir l'article
115
				if (lire_meta('multi_secteurs') == 'oui')
116
					$id_parent = 0;
117
				else {
118
					$query = "SELECT id_parent FROM spip_rubriques WHERE id_rubrique=$id_rubrique";
119
					$row_rub = spip_fetch_array(spip_query($query));
120
					$id_parent = $row_rub['id_parent'];
121
				}
122
				$query = "SELECT id_rubrique FROM spip_rubriques WHERE lang='$spip_lang' AND id_parent=$id_parent";
123
				if ($row_rub = spip_fetch_array(spip_query($query))) {
124
					$id_rubrique = $id_secteur = $row_rub['id_rubrique'];
125
					$changer_lang = 'herit';
126
				}
127
			}
128
		}
129
	}
130
	else {
131
		// Nouvel article : titre par defaut
132
		$titre = filtrer_entites(_T('info_nouvel_article'));
133
		$onfocus = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
134
	}
135
	if (!$id_secteur) {
136
		$row_rub = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
137
		$id_secteur = $row_rub['id_secteur'];
138
	}
139
	$flag_editable = true;
140
}
141
 
142
if (!$flag_editable) {
143
	die ("<H3>"._T('info_acces_interdit')."</H3>");
144
}
145
 
146
 
147
// Qui veut modifier l'article ?
148
spip_query("UPDATE spip_articles SET date_modif=NOW(), auteur_modif=$connect_id_auteur WHERE id_article=$id_article");
149
$id_article_bloque = $id_article;	// message pour inc_presentation
150
 
151
 
152
 
153
 
154
//
155
// Gestion des textes trop longs (limitation brouteurs)
156
//
157
 
158
function coupe_trop_long($texte){	// utile pour les textes > 32ko
159
	if (strlen($texte) > 28*1024) {
160
		$texte = str_replace("\r\n","\n",$texte);
161
		$pos = strpos($texte, "\n\n", 28*1024);	// coupe para > 28 ko
162
		if ($pos > 0 and $pos < 32 * 1024) {
163
			$debut = substr($texte, 0, $pos)."\n\n<!--SPIP-->\n";
164
			$suite = substr($texte, $pos + 2);
165
		} else {
166
			$pos = strpos($texte, " ", 28*1024);	// sinon coupe espace
167
			if (!($pos > 0 and $pos < 32 * 1024)) {
168
				$pos = 28*1024;	// au pire (pas d'espace trouv'e)
169
				$decalage = 0; // si y'a pas d'espace, il ne faut pas perdre le caract`ere
170
			} else {
171
				$decalage = 1;
172
			}
173
			$debut = substr($texte,0,$pos + $decalage); // Il faut conserver l'espace s'il y en a un
174
			$suite = substr($texte,$pos + $decalage);
175
		}
176
		return (array($debut,$suite));
177
	}
178
	else
179
		return (array($texte,''));
180
}
181
 
182
 
183
debut_page(_T('titre_page_articles_edit', array('titre' => $titre)), "documents", "articles", "hauteurTextarea();");
184
 
185
 
186
debut_grand_cadre();
187
 
188
afficher_hierarchie($id_rubrique);
189
 
190
fin_grand_cadre();
191
 
192
 
193
 
194
debut_gauche();
195
 
196
 
197
 
198
//
199
// Pave "documents associes a l'article"
200
//
201
 
202
if ($new != 'oui'){
203
	# modifs de la description d'un des docs joints
204
	if ($flag_editable) maj_documents($id_article, 'article');
205
 
206
	# affichage
207
	afficher_documents_colonne($id_article, 'article', $flag_editable);
208
}
209
 
210
debut_droite();
211
debut_cadre_formulaire();
212
 
213
 
214
function enfant($leparent){
215
	global $id_parent;
216
	global $id_rubrique;
217
	static $i = 0, $premier = 1;
218
	global $statut;
219
	global $connect_toutes_rubriques;
220
	global $couleur_claire, $spip_lang_left;
221
	global $browser_name, $browser_version;
222
	global $ja_rub;
223
 
224
	$i++;
225
 	$query="SELECT * FROM spip_rubriques WHERE id_parent='$leparent' ORDER BY 0+titre, titre";
226
 	$result=spip_query($query);
227
 
228
	while($row=spip_fetch_array($result)){
229
		$my_rubrique=$row['id_rubrique'];
230
		$titre=$row['titre'];
231
		$statut_rubrique=$row['statut'];
232
		$lang_rub = $row['lang'];
233
		$langue_choisie_rub = $row['langue_choisie'];
234
		$style = "";
235
		$espace = "";
236
 
237
		// si l'article est publie il faut etre admin pour avoir le menu
238
		// sinon le menu est present en entier (proposer un article)
239
		if ($statut != "publie" OR acces_rubrique($my_rubrique)) {
240
			$rubrique_acceptable = true;
241
		} else {
242
			$rubrique_acceptable = false;
243
		}
244
 
245
 
246
		if (eregi("mozilla", $browser_name)) {
247
			$style .= "padding-$spip_lang_left: 16px; ";
248
			$style .= "margin-$spip_lang_left: ".(($i-1)*16)."px;";
249
		} else {
250
			for ($count = 0; $count <= $i; $count ++) $espace .= "&nbsp;&nbsp;&nbsp;&nbsp;";
251
		}
252
		switch ($i) {
253
		case 1:
254
			$espace= "";
255
			$style .= "font-weight: bold;";
256
			break;
257
		case 2:
258
			$style .= "color: #202020;";
259
			break;
260
		case 3:
261
			$style .= "color: #404040;";
262
			break;
263
		case 4:
264
			$style .= "color: #606060;";
265
			break;
266
		case 5:
267
			$style .= "color: #808080;";
268
			break;
269
		default:
270
			$style .= "color: #A0A0A0;";
271
			break;
272
		}
273
		if ($i==1) {
274
			$style .= "background-image: url(" . _DIR_IMG_PACK. "secteur-12.gif);";
275
			$style .= "background-color: $couleur_claire;";
276
			$style .= "font-weight: bold;";
277
		}
278
		else if ($i==2) {
279
			//$style .= "background: url(" . _DIR_IMG_PACK. "rubrique-12.gif) $spip_lang_left no-repeat;";
280
			$style .= "border-bottom: 1px solid $couleur_claire;";
281
			$style .= "font-weight: bold;";
282
		}
283
		else {
284
			//$style .= "background: url(" . _DIR_IMG_PACK. "rubrique-12.gif) $spip_lang_left no-repeat;";
285
		}
286
 
287
			$selec_rub = "selec_rub";
288
			if ($browser_name == "MSIE" AND floor($browser_version) == "5") $selec_rub = ""; // Bug de MSIE MacOs 9.0
289
 
290
		if ($rubrique_acceptable) {
291
			if ($i == 1 && !$premier) echo "<option value='$my_rubrique'>\n"; // sert a separer les secteurs
292
			// largeur maxi a 50
293
			$titre = couper(supprimer_tags(typo(extraire_multi($titre)))." ", 50);
294
			if (lire_meta('multi_rubriques') == 'oui' AND ($langue_choisie_rub == "oui" OR $leparent == 0)) $titre = $titre." [".traduire_nom_langue($lang_rub)."]";
295
			echo "<option".mySel($my_rubrique,$id_rubrique)." class='$selec_rub' style=\"$style\">$espace$titre</option>\n";
296
 
297
 
298
			$ja_rub .= addslashes("[$my_rubrique] $titre ///");
299
		}
300
		$premier = 0;
301
		enfant($my_rubrique);
302
	}
303
	$i=$i-1;
304
}
305
 
306
 
307
echo "\n<table cellpadding=0 cellspacing=0 border=0 width='100%'>";
308
echo "<tr width='100%'>";
309
echo "<td>";
310
	if ($lier_trad) icone(_T('icone_retour'), "articles.php3?id_article=$lier_trad", "article-24.gif", "rien.gif");
311
	else icone(_T('icone_retour'), "articles.php3?id_article=$id_article", "article-24.gif", "rien.gif");
312
 
313
echo "</td>";
314
echo "<td>". http_img_pack('rien.gif', " ", "width='10'") . "</td>\n";
315
echo "<td width='100%'>";
316
echo _T('texte_modifier_article');
317
gros_titre($titre);
318
echo "</td></tr></table>";
319
echo "<p>";
320
 
321
echo "<P><HR><P>";
322
 
323
	$titre = entites_html($titre);
324
	$soustitre = entites_html($soustitre);
325
	$surtitre = entites_html($surtitre);
326
 
327
	$descriptif = entites_html($descriptif);
328
	$nom_site = entites_html($nom_site);
329
	$url_site = entites_html($url_site);
330
	$chapo = entites_html($chapo);
331
	$texte = entites_html($texte);
332
	$ps = entites_html($ps);
333
 
334
	$lien = 'articles.php3';
335
	if ($id_article) $lien .= "?id_article=$id_article";
336
	echo "<FORM ACTION='$lien' METHOD='post' name='formulaire'>\n";
337
 
338
	if ($id_article)
339
		echo "<INPUT TYPE='Hidden' NAME='id_article' VALUE='$id_article'>";
340
	else if ($new == 'oui')
341
		echo "<INPUT TYPE='Hidden' NAME='new' VALUE='oui'>";
342
 
343
	if ($lier_trad) {
344
		echo "<INPUT TYPE='Hidden' NAME='lier_trad' VALUE='$lier_trad'>";
345
		echo "<INPUT TYPE='Hidden' NAME='changer_lang' VALUE='$spip_lang'>";
346
	}
347
 
348
	if (($options == "avancees" AND $articles_surtitre != "non") OR $surtitre) {
349
		echo "<B>"._T('texte_sur_titre')."</B>";
350
		echo aide ("arttitre");
351
		echo "<BR><INPUT TYPE='text' NAME='surtitre' CLASS='forml' VALUE=\"$surtitre\" SIZE='40'><P>";
352
	}
353
	else {
354
		echo "<INPUT TYPE='hidden' NAME='surtitre' VALUE=\"$surtitre\" >";
355
	}
356
 
357
	echo _T('texte_titre_obligatoire');
358
	echo aide ("arttitre");
359
	echo "<BR><INPUT TYPE='text' NAME='titre' style='font-weight: bold; font-size: 13px;' CLASS='formo' VALUE=\"$titre\" SIZE='40' $onfocus><P>";
360
 
361
	if (($articles_soustitre != "non") OR $soustitre) {
362
		echo "<B>"._T('texte_sous_titre')."</B>";
363
		echo aide ("arttitre");
364
		echo "<BR><INPUT TYPE='text' NAME='soustitre' CLASS='forml' VALUE=\"$soustitre\" SIZE='40'><br><br>";
365
	}
366
	else {
367
		echo "<INPUT TYPE='hidden' NAME='soustitre' VALUE=\"$soustitre\">";
368
	}
369
 
370
 
371
	/// Dans la rubrique....
372
 
373
	if ($id_rubrique == 0) $logo_parent = "racine-site-24.gif";
374
	else {
375
		$query = "SELECT id_parent FROM spip_rubriques WHERE id_rubrique='$id_rubrique'";
376
		$result=spip_query($query);
377
		while($row=spip_fetch_array($result)){
378
			$parent_parent=$row['id_parent'];
379
		}
380
		if ($parent_parent == 0) $logo_parent = "secteur-24.gif";
381
		else $logo_parent = "rubrique-24.gif";
382
	}
383
 
384
	debut_cadre_couleur("$logo_parent", false, "", _T('titre_cadre_interieur_rubrique').aide ("artrub"));
385
 
386
 
387
	// Integrer la recherche de rubrique au clavier
388
	echo "<script language='JavaScript' type='text/javascript' src='filtery.js'></script>\n";
389
	echo "<input type='text' size='10' style='font-size: 90%; width: 15%;' onkeyup=\"filtery(this.value,this.form.id_rubrique);\" onChange=\"filtery(this.value,this.form.id_rubrique);\"> ";
390
 
391
	echo "<SELECT NAME='id_rubrique' style='font-size: 90%; width:80%; font-face:verdana,arial,helvetica,sans-serif; max-height: 24px;' SIZE=1>\n";
392
	enfant(0);
393
	echo "</SELECT><BR>\n";
394
 
395
 
396
 
397
	echo _T('texte_rappel_selection_champs');
398
	fin_cadre_couleur();
399
 
400
	if ($new != 'oui') echo "<INPUT TYPE='hidden' NAME='id_rubrique_old' VALUE=\"$id_rubrique\" >";
401
 
402
	if (($options == "avancees" AND $articles_descriptif != "non") OR $descriptif) {
403
		echo "<P><B>"._T('texte_descriptif_rapide')."</B>";
404
		echo aide ("artdesc");
405
		echo "<BR>"._T('texte_contenu_article')."<BR>";
406
		echo "<TEXTAREA NAME='descriptif' CLASS='forml' ROWS='2' COLS='40' wrap=soft>";
407
		echo $descriptif;
408
		echo "</TEXTAREA><P>\n";
409
	}
410
	else {
411
		echo "<INPUT TYPE='hidden' NAME='descriptif' VALUE=\"$descriptif\">";
412
	}
413
 
414
	if (($options == "avancees" AND $articles_urlref != "non") OR $nom_site OR $url_site) {
415
		echo _T('entree_liens_sites')."<br />\n";
416
		echo _T('info_titre')." ";
417
		echo "<input type='text' name='nom_site' class='forml' width='40' value=\"$nom_site\"/><br />\n";
418
		echo _T('info_url')." ";
419
		echo "<input type='text' name='url_site' class='forml' width='40' value=\"$url_site\"/>";
420
	}
421
 
422
	if (substr($chapo, 0, 1) == '=') {
423
		$virtuel = substr($chapo, 1);
424
		$chapo = "";
425
	}
426
 
427
	if ($connect_statut=="0minirezo" AND $virtuel){
428
		echo "<p><div style='border: 1px dashed #666666; background-color: #f0f0f0; padding: 5px;'>";
429
		echo "<table width=100% cellspacing=0 cellpadding=0 border=0>";
430
		echo "<tr><td valign='top'>";
431
		echo "<font face='Verdana,Arial,Sans,sans-serif' size=2>";
432
		echo "<B><label for='confirme-virtuel'>"._T('info_redirection')."&nbsp;:</label></B>";
433
		echo aide ("artvirt");
434
		echo "</font>";
435
		echo "</td>";
436
		echo "<td width=10>&nbsp;</td>";
437
		echo "<td valign='top' width='50%'>";
438
		if (!$virtuel) $virtuel = "http://";
439
		echo "<INPUT TYPE='text' NAME='virtuel' CLASS='forml' style='font-size:9px;' VALUE=\"$virtuel\" SIZE='40'>";
440
		echo "<input type='hidden' name='changer_virtuel' value='oui'>";
441
		echo "</td></tr></table>\n";
442
		echo "<font face='Verdana,Arial,Sans,sans-serif' size=2>";
443
		echo _T('texte_article_virtuel_reference');
444
		echo "</font>";
445
		echo "</div><p>\n";
446
	}
447
 
448
	else {
449
		echo "<HR>";
450
 
451
		if (($articles_chapeau != "non") OR $chapo) {
452
			if ($spip_ecran == "large") $rows = 8;
453
			else $rows = 5;
454
			echo "<B>"._T('info_chapeau')."</B>";
455
			echo aide ("artchap");
456
			echo "<BR>"._T('texte_introductif_article')."<BR>";
457
			echo "<TEXTAREA NAME='chapo' CLASS='forml' ROWS='$rows' COLS='40' wrap=soft>";
458
			echo $chapo;
459
			echo "</TEXTAREA><P>\n";
460
		}
461
		else {
462
			echo "<INPUT TYPE='hidden' NAME='chapo' VALUE=\"$chapo\">";
463
		}
464
 
465
	}
466
 
467
	if ($spip_ecran == "large") $rows = 28;
468
	else $rows = 20;
469
 
470
	if (strlen($texte)>29*1024) // texte > 32 ko -> decouper en morceaux
471
	{
472
		$textes_supplement = "<br><font color='red'>"._T('info_texte_long')."</font>\n";
473
		while (strlen($texte)>29*1024)
474
		{
475
			$nombre_textes ++;
476
			list($texte1,$texte) = coupe_trop_long($texte);
477
 
478
			$textes_supplement .= "<BR>";
479
			$textes_supplement .= afficher_barre('document.formulaire.texte'.$nombre_textes);
480
			$textes_supplement .= "<TEXTAREA NAME='texte$nombre_textes'".
481
				" CLASS='formo' ".$GLOBALS['browser_caret']." ROWS='$rows' COLS='40' wrap=soft>" .
482
				$texte1 . "</TEXTAREA><P>\n";
483
		}
484
	}
485
	echo "<B>"._T('info_texte')."</B>";
486
	echo aide ("arttexte");
487
	echo "<br>"._T('texte_enrichir_mise_a_jour');
488
	echo aide("raccourcis");
489
 
490
	echo $textes_supplement;
491
 
492
	//echo "<BR>";
493
	echo afficher_barre('document.formulaire.texte');
494
	echo "<TEXTAREA id='text_area' NAME='texte' ".$GLOBALS['browser_caret']." CLASS='formo' ROWS='$rows' COLS='40' wrap=soft>";
495
	echo $texte;
496
	echo "</TEXTAREA>\n";
497
 
498
	if (($articles_ps != "non" AND $options == "avancees") OR $ps) {
499
		echo "<P><B>"._T('info_post_scriptum')."</B><BR>";
500
		echo "<TEXTAREA NAME='ps' CLASS='forml' ROWS='5' COLS='40' wrap=soft>";
501
		echo $ps;
502
		echo "</TEXTAREA><P>\n";
503
	}
504
	else {
505
		echo "<INPUT TYPE='hidden' NAME='ps' VALUE=\"$ps\">";
506
	}
507
 
508
	if ($champs_extra) {
509
		include_ecrire("inc_extra.php3");
510
		extra_saisie($extra, 'articles', $id_secteur);
511
	}
512
 
513
	if ($date)
514
		echo "<INPUT TYPE='Hidden' NAME='date' VALUE=\"$date\" SIZE='40'><P>";
515
 
516
	if ($new == "oui")
517
		echo "<INPUT TYPE='Hidden' NAME='statut_nouv' VALUE=\"prepa\" SIZE='40'><P>";
518
 
519
	echo "<DIV ALIGN='right'>";
520
	echo "<INPUT CLASS='fondo' TYPE='submit' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'>";
521
	echo "</DIV></FORM>";
522
 
523
fin_cadre_formulaire();
524
 
525
fin_page();
526
 
527
?>