[SPIP] ~2.1.12 -->2.1.25
[velocampus/web/www.git] / www / ecrire / exec / articles.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
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 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 include_spip('inc/presentation');
16 include_spip('inc/actions');
17
18 // http://doc.spip.org/@exec_articles_dist
19 function exec_articles_dist()
20 {
21 exec_articles_args(intval(_request('id_article')));
22 }
23
24 // http://doc.spip.org/@exec_articles_args
25 function exec_articles_args($id_article)
26 {
27 pipeline('exec_init',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>''));
28
29 $row = sql_fetsel("*", "spip_articles", "id_article=$id_article");
30
31 if (!$row
32 OR !autoriser('voir', 'article', $id_article)) {
33 include_spip('inc/minipres');
34 echo minipres(_T('public:aucun_article'));
35 } else {
36 $row['titre'] = sinon($row["titre"],_T('info_sans_titre'));
37
38 $res = debut_gauche('accueil',true)
39 . articles_affiche($id_article, $row, _request('cherche_auteur'), _request('ids'), _request('cherche_mot'), _request('select_groupe'), _request('trad_err'), _request('debut'))
40 . "<br /><br /><div class='centered'>"
41 . "</div>"
42 . fin_gauche();
43
44 $commencer_page = charger_fonction('commencer_page', 'inc');
45 echo $commencer_page("&laquo; ". $row['titre'] ." &raquo;", "naviguer", "articles", $row['id_rubrique']);
46
47 echo debut_grand_cadre(true),
48 afficher_hierarchie($row['id_rubrique'],_T('titre_cadre_interieur_rubrique'),$id_article,'article',$row['id_secteur'],($row['statut'] == 'publie')),
49 fin_grand_cadre(true),
50 $res,
51 fin_page();
52 }
53 }
54
55 // http://doc.spip.org/@articles_affiche
56 function articles_affiche($id_article, $row, $cherche_auteur, $ids, $cherche_mot, $select_groupe, $trad_err, $debut_forum=0, $statut_forum='prive')
57 {
58 global $spip_lang_right, $dir_lang;
59
60 $id_rubrique = $row['id_rubrique'];
61 $id_secteur = $row['id_secteur'];
62 $statut_article = $row['statut'];
63 $titre = $row["titre"];
64 $surtitre = $row["surtitre"];
65 $soustitre = $row["soustitre"];
66 $descriptif = $row["descriptif"];
67 $nom_site = $row["nom_site"];
68 $url_site = $row["url_site"];
69 $texte = $row["texte"];
70 $ps = $row["ps"];
71 $date = $row["date"];
72 $date_redac = $row["date_redac"];
73 $extra = $row["extra"];
74 $id_trad = $row["id_trad"];
75
76 $virtuel = (strncmp($row["chapo"],'=',1)!==0) ? '' :
77 chapo_redirige(substr($row["chapo"], 1));
78
79 $statut_rubrique = autoriser('publierdans', 'rubrique', $id_rubrique);
80 $flag_editable = autoriser('modifier', 'article', $id_article);
81
82 // Est-ce que quelqu'un a deja ouvert l'article en edition ?
83 if ($flag_editable
84 AND $GLOBALS['meta']['articles_modif'] != 'non') {
85 include_spip('inc/drapeau_edition');
86 $modif = mention_qui_edite($id_article, 'article');
87 } else
88 $modif = array();
89
90
91 // chargement prealable des fonctions produisant des formulaires
92
93 $dater = charger_fonction('dater', 'inc');
94 $editer_mots = charger_fonction('editer_mots', 'inc');
95 $editer_auteurs = charger_fonction('editer_auteurs', 'inc');
96 $referencer_traduction = charger_fonction('referencer_traduction', 'inc');
97 $discuter = charger_fonction('discuter', 'inc');
98
99 $meme_rubrique = charger_fonction('meme_rubrique', 'inc');
100 $iconifier = charger_fonction('iconifier', 'inc');
101 $icone = $iconifier('id_article', $id_article,'articles', false, $flag_editable);
102
103 $boite = pipeline ('boite_infos', array('data' => '',
104 'args' => array(
105 'type'=>'article',
106 'id' => $id_article,
107 'row' => $row
108 )
109 ));
110
111 $navigation =
112 debut_boite_info(true). $boite . fin_boite_info(true)
113 . $icone
114 . (_INTERFACE_ONGLETS?"":boites_de_config_articles($id_article))
115 . ($flag_editable ? boite_article_virtuel($id_article, $virtuel):'')
116 . pipeline('affiche_gauche',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>''));
117
118 $extra = creer_colonne_droite('', true)
119 . $meme_rubrique($id_rubrique, $id_article, 'article')
120 . pipeline('affiche_droite',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>''))
121 . debut_droite('',true);
122
123 // affecter les globales dictant les regles de typographie de la langue
124 changer_typo($row['lang']);
125
126 $actions =
127 ($flag_editable ? bouton_modifier_articles($id_article, $id_rubrique, $modif, _T('avis_article_modifie', $modif), "article-24.gif", "edit.gif",$spip_lang_right) : "");
128
129 $haut =
130 "<div class='bandeau_actions'>$actions</div>".
131 (_INTERFACE_ONGLETS?"":"<span $dir_lang class='arial1 spip_medium'><b>" . typo($surtitre) . "</b></span>\n")
132 . gros_titre($titre, '' , false)
133 . (_INTERFACE_ONGLETS?"":"<span $dir_lang class='arial1 spip_medium'><b>" . typo($soustitre) . "</b></span>\n");
134
135 $onglet_contenu =
136 afficher_corps_articles($id_article,$virtuel,$row)
137 . "<div class='bandeau_actions'>$actions</div>";
138
139 $onglet_proprietes = ((!_INTERFACE_ONGLETS) ? "" :"")
140 . $dater($id_article, $flag_editable, $statut_article, 'article', 'articles', $date, $date_redac)
141 . $editer_auteurs('article', $id_article, $flag_editable, $cherche_auteur, $ids)
142 . (!$editer_mots ? '' : $editer_mots('article', $id_article, $cherche_mot, $select_groupe, $flag_editable, false, 'articles'))
143 . (!$referencer_traduction ? '' : $referencer_traduction($id_article, $flag_editable, $id_rubrique, $id_trad, $trad_err))
144 . pipeline('affiche_milieu',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>''))
145 . bouton_proposer_article($id_article,$statut_article)
146 ;
147
148 $documenter_objet = charger_fonction('documenter_objet','inc');
149 $onglet_documents = $documenter_objet($id_article,'article','articles',$flag_editable);
150 $onglet_interactivite = (_INTERFACE_ONGLETS?boites_de_config_articles($id_article):"");
151
152 $onglet_discuter = !$statut_forum ? '' : ($discuter($id_article, 'articles', 'id_article', $statut_forum, $debut_forum));
153
154
155 return
156 $navigation
157 . $extra
158 . pipeline('afficher_fiche_objet',array('args'=>array('type'=>'article','id'=>$id_article),'data'=>
159 "<div class='fiche_objet'>"
160 . $haut
161 . afficher_onglets_pages(
162 array(
163 'voir' => _T('onglet_contenu'),
164 'props' => _T('onglet_proprietes'),
165 'docs' => _T('onglet_documents'),
166 'interactivite' => _T('onglet_interactivite'),
167 'discuter' => _T('onglet_discuter')),
168 array(
169 'props'=>$onglet_proprietes,
170 'voir'=>$onglet_contenu,
171 'docs'=>$onglet_documents,
172 'interactivite'=>$onglet_interactivite,
173 'discuter'=>_INTERFACE_ONGLETS?$onglet_discuter:""))
174 . "</div>"
175 . (_INTERFACE_ONGLETS?"":$onglet_discuter)
176 ));
177 }
178
179 //
180 // Boites de configuration avancee
181 //
182
183 // http://doc.spip.org/@boites_de_config_articles
184 function boites_de_config_articles($id_article)
185 {
186 if (autoriser('modererforum', 'article', $id_article)) {
187 $regler_moderation = charger_fonction('regler_moderation', 'inc');
188 $regler = $regler_moderation($id_article,"articles","id_article=$id_article") . '<br />';
189 }
190
191 $petitionner = charger_fonction('petitionner', 'inc');
192 $petition = $petitionner($id_article,"articles","id_article=$id_article");
193
194 $masque = $regler . $petition;
195 $masque = pipeline('afficher_config_objet',array('args'=>array('type'=>'article','id'=>$id_article),'data'=>$masque));
196
197 if (!$masque) return '';
198
199 $invite = "<b>"
200 . _T('bouton_forum_petition')
201 . aide('confforums')
202 . "</b>";
203
204 return
205 cadre_depliable("forum-interne-24.gif",
206 $invite,
207 true,//$visible = strstr($masque, '<!-- visible -->')
208 $masque,
209 'forumpetition');
210 }
211
212 // http://doc.spip.org/@boite_article_virtuel
213 function boite_article_virtuel($id_article, $virtuel)
214 {
215 if (!$virtuel
216 AND $GLOBALS['meta']['articles_redirection'] != 'oui')
217 return '';
218
219 $invite = '<b>'
220 ._T('bouton_redirection')
221 . '</b>'
222 . aide ("artvirt");
223
224 $virtualiser = charger_fonction('virtualiser', 'inc');
225
226 return cadre_depliable("site-24.gif",
227 $invite,
228 $virtuel,
229 $virtualiser($id_article, $virtuel, "articles", "id_article=$id_article"),
230 'redirection');
231 }
232
233 // http://doc.spip.org/@bouton_modifier_articles
234 function bouton_modifier_articles($id_article, $id_rubrique, $flag_modif, $mode, $ip, $im, $align='')
235 {
236 if ($flag_modif) {
237 return icone_inline(_T('icone_modifier_article'), generer_url_ecrire("articles_edit","id_article=$id_article"), $ip, $im, $align, false)
238 . "<span class='arial1 spip_small'>$mode</span>"
239 . aide("artmodif");
240 }
241 else return icone_inline(_T('icone_modifier_article'), generer_url_ecrire("articles_edit","id_article=$id_article"), "article-24.gif", "edit.gif", $align);
242 }
243
244 // http://doc.spip.org/@afficher_corps_articles
245 function afficher_corps_articles($id_article, $virtuel, $row)
246 {
247 $res = '';
248 if ($row['statut'] == 'prop') {
249 $res .= "<p class='article_prop'>"._T('text_article_propose_publication');
250
251 if ($GLOBALS['meta']['forum_prive_objets'] != 'non')
252 $res .= ' '._T('text_article_propose_publication_forum');
253
254 $res.= "</p>";
255 }
256
257 if ($virtuel) {
258 $res .= debut_boite_info(true)
259 . "\n<div style='text-align: center'>"
260 . _T('info_renvoi_article')
261 . " "
262 . propre("[->$virtuel]")
263 . '</div>'
264 . fin_boite_info(true);
265 }
266 else {
267 $type = 'article';
268 $contexte = array(
269 'id'=>$id_article,
270 'id_rubrique'=>$row['id_rubrique'],
271 'id_secteur' => $row['id_secteur']
272 );
273 $fond = recuperer_fond("prive/contenu/$type",$contexte);
274 // permettre aux plugin de faire des modifs ou des ajouts
275 $fond = pipeline('afficher_contenu_objet',
276 array(
277 'args'=>array(
278 'type'=>$type,
279 'id_objet'=>$id_article,
280 'contexte'=>$contexte),
281 'data'=> ($fond)));
282
283 $res .= "<div id='wysiwyg'>$fond</div>";
284 }
285 return $res;
286 }
287
288 function bouton_proposer_article($id_article,$statut_article){
289 $ret = "";
290
291 if ($statut_article=='prepa'
292 AND $id_auteur = $GLOBALS["visiteur_session"]["id_auteur"]
293 AND $GLOBALS["visiteur_session"]["statut"] == "1comite"
294 AND autoriser('modifier', 'article', $id_article)
295 AND sql_fetsel("id_article", "spip_auteurs_articles", "id_article=".intval($id_article)." AND id_auteur=".intval($id_auteur))) {
296 $ret .= debut_cadre_relief("", true);
297 $ret .= "<div class='verdana3' style='text-align: center;'>";
298 $ret .= "<div>"._T("texte_proposer_publication")."</div>";
299
300 $ret .= bouton_action(_T("bouton_demande_publication"),
301 generer_action_auteur('instituer_article', "$id_article-prop", self()), '', _T('confirm_changer_statut'));
302
303 $ret .= "</div>";
304 $ret .= fin_cadre_relief(true);
305
306 }
307 return $ret;
308 }
309 ?>