source: spip-zone/_plugins_/couteau_suisse/config_outils.php @ 31606

Last change on this file since 31606 was 31606, checked in by patfr@…, 10 years ago

Mérite un changement de version + rem morte

File size: 38.7 KB
Line 
1<?php
2
3#-----------------------------------------------------#
4#  Plugin  : Couteau Suisse - Licence : GPL           #
5#  Auteur  : Patrice Vanneufville, 2006               #
6#  Contact : patrice¡.!vanneufville¡@!laposte¡.!net   #
7#  Infos : http://www.spip-contrib.net/?article2166   #
8#-----------------------------------------------------#
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11// Noter :
12// outils/mon_outil.php : inclus par les pipelines de l'outil
13// outils/mon_outil_options.php : inclus par cout_options.php
14// outils/mon_outil_fonctions.php : inclus par cout_fonctions.php
15
16cs_log("inclusion de config_outils.php");
17//-----------------------------------------------------------------------------//
18//                               options                                       //
19//-----------------------------------------------------------------------------//
20/*
21add_outil( array(
22        'id' => 'revision_nbsp',
23        'code:options' => '$GLOBALS["activer_revision_nbsp"] = true; $GLOBALS["test_i18n"] = true ;',
24        'categorie' => 'admin',
25));
26*/
27
28        // ici on a besoin d'une case input. La variable est : dossier_squelettes
29        // a la toute premiere activation de l'outil, la valeur sera : $GLOBALS['dossier_squelettes']
30add_variable( array(
31        'nom' => 'dossier_squelettes',
32        'format' => _format_CHAINE,
33        'defaut' => "\$GLOBALS['dossier_squelettes']",
34        'code' => "\$GLOBALS['dossier_squelettes']=%s;",
35));
36add_outil( array(
37        'id' => 'dossier_squelettes',
38        'code:spip_options' => '%%dossier_squelettes%%',
39        'categorie' => 'admin',
40));
41
42/*
43add_variable( array(
44        'nom' => 'cookie_prefix',
45        'format' => _format_CHAINE,
46        'defaut' => "'spip'",
47        'code' => "\$GLOBALS['cookie_prefix']=%s;",
48));
49add_outil( array(
50        'id' => 'cookie_prefix',
51        'code:options' => "%%cookie_prefix%%",
52        'categorie' => 'admin',
53));
54*/
55
56add_outil( array(
57        'id' => 'supprimer_numero',
58        /* inserer :
59                $table_des_traitements['TITRE'][]= 'typo(supprimer_numero(%s))';
60                $table_des_traitements['TYPE']['mots']= 'typo(supprimer_numero(%s))';
61                $table_des_traitements['NOM'][]= 'typo(supprimer_numero(%s))'; */
62        'traitement:TITRE:pre_typo,
63         traitement:TITRE/mots:pre_typo,
64         traitement:NOM:pre_typo,
65         traitement:TYPE/mots:pre_typo' => 'supprimer_numero',
66        'categorie' => 'public',
67));
68
69add_variables( array(
70        'nom' => 'paragrapher',
71        'format' => _format_NOMBRE,
72        'radio' => array(1 => 'item_oui', 0 => 'item_non', -1 => 'couteauprive:par_defaut'),
73        'defaut' => "-1",
74        'code:%s>=0' => "\$GLOBALS['toujours_paragrapher']=%s;",
75));
76add_outil( array(
77        'id' => 'paragrapher2',
78        'code:spip_options' => '%%paragrapher%%',
79        'categorie' => 'admin',
80));
81
82add_outil( array(
83        'id' => 'forcer_langue',
84        'code:spip_options' => "\$GLOBALS['forcer_lang']=true;",
85        'categorie' => 'public',
86));
87
88add_variables( array(
89        'nom' => 'webmestres',
90        'format' => _format_CHAINE,
91        'defaut' => '"1"',
92        'code:strlen(%s)' => "define('_ID_WEBMESTRES', %s);",
93        'code:!strlen(%s)' => "define('_ID_WEBMESTRES', 1);",
94));
95add_outil( array(
96        'id' => 'webmestres',
97        'code:spip_options' => '%%webmestres%%',
98        'categorie' => 'admin',
99        // non supporte avant la version 1.92
100        'version-min' => '1.9200',
101        'autoriser' => "autoriser('webmestre')",
102));
103
104add_outil( array(
105        'id' => 'insert_head',
106        'code:options' => "\$GLOBALS['spip_pipeline']['affichage_final'] .= '|f_insert_head';",
107        'categorie' => 'spip',
108));
109
110        // ici on a besoin d'une case input. La variable est : suite_introduction
111        // a la toute premiere activation de l'outil, la valeur sera : '&nbsp;(...)'
112add_variables( array(
113        'nom' => 'suite_introduction',
114        'format' => _format_CHAINE,
115        'defaut' => '"&nbsp;(...)"',
116        'code' => "define('_INTRODUCTION_SUITE', %s);\n",
117), array(
118        'nom' => 'lgr_introduction',
119        'format' => _format_NOMBRE,
120        'defaut' => 100,
121        'code:%s && %s!=100' => "define('_INTRODUCTION_LGR', %s);\n",
122), array(
123        'nom' => 'lien_introduction',
124        'format' => _format_NOMBRE,
125        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
126        'defaut' => 0,
127        'code' => "define('_INTRODUCTION_LIEN', %s);",
128));
129add_outil( array(
130        'id' => 'introduction',
131        'code:options' => "%%lgr_introduction%%%%suite_introduction%%%%lien_introduction%%",
132        'categorie' => 'spip',
133));
134
135        // ici on a besoin de deux boutons radio : _T('icone_interface_simple') et _T('icone_interface_complet')
136add_variable( array(
137        'nom' => 'radio_set_options4',
138        'format' => _format_CHAINE,
139        'radio' => array('basiques' => 'icone_interface_simple', 'avancees' => 'icone_interface_complet'),
140        'defaut' => '"avancees"',
141        'code' => "\$_GET['set_options']=\$GLOBALS['set_options']=%s;",
142));
143add_outil( array(
144        'id' => 'set_options',
145        'auteur'         => 'Vincent Ramos',
146        'code:options' => "%%radio_set_options4%%",
147        'categorie' => 'interface',
148        // pipeline pour retirer en JavaScript le bouton de controle de l'interface
149        'pipeline:header_prive' => 'set_options_header_prive',
150        // non supporte a partir de la version 1.93
151        'version-max' => '1.9299',
152));
153
154add_outil( array(
155        'id' => 'simpl_interface',
156        'code:spip_options' => "define('_ACTIVER_PUCE_RAPIDE', false);",
157        'categorie' => 'interface',
158        'version-min' => '1.9300',
159));
160
161add_outil( array(
162        'id' => 'icone_visiter',
163        'categorie' => 'interface',
164        'pipeline:header_prive' => 'icone_visiter_header_prive',
165));
166
167add_variables( array(
168        'nom' => 'tri_articles',
169        'format' => _format_CHAINE,
170        'radio' => array(
171                'date_modif DESC' => 'couteauprive:tri_modif',
172                '0+titre,titre' => 'couteauprive:tri_titre',
173                'date DESC' => 'couteauprive:tri_publi', 
174                'perso' => 'couteauprive:tri_perso' ),
175        'radio/ligne' => 1,
176        'defaut' => "'date DESC'", //"'0+titre,titre'",
177        'code:%s!="perso"' => "define('_TRI_ARTICLES_RUBRIQUE', %s);\n",
178), array(
179        'nom' => 'tri_perso',
180        'format' => _format_CHAINE,
181        'defaut' => '',
182        'code:strlen(%s)' => "define('_TRI_ARTICLES_RUBRIQUE', %s);",
183));
184add_outil( array(
185        'id' => 'tri_articles',
186        'code:spip_options' => "%%tri_articles%%%%tri_perso%%",
187        'categorie' => 'interface',
188        'version-min' => '1.9300',
189));
190
191        // ici on a besoin de trois boutons radio : _T('couteauprive:js_jamais'), _T('couteauprive:js_defaut') et _T('couteauprive:js_toujours')
192add_variable( array(
193        'nom' => 'radio_filtrer_javascript3',
194        'format' => _format_NOMBRE,
195        'radio' => array(-1 => 'couteauprive:js_jamais', 0 => 'couteauprive:js_defaut', 1 => 'couteauprive:js_toujours'),
196        'defaut' => 0,
197        // si la variable est non nulle, on code...
198        'code:%s' => "\$GLOBALS['filtrer_javascript']=%s;",
199));
200add_outil( array(
201        'id' => 'filtrer_javascript',
202        'code:options' => "%%radio_filtrer_javascript3%%",
203        'categorie' => 'admin',
204        'version-min' => '1.9200',
205));
206
207        // ici on a besoin d'une case input. La variable est : forum_lgrmaxi
208        // a la toute premiere activation de l'outil, la valeur sera : 0 (aucune limite)
209add_variable( array(
210        'nom' => 'forum_lgrmaxi',
211        'format' => _format_NOMBRE,
212        'defaut' => 0,
213        'code:%s' => "define('_FORUM_LONGUEUR_MAXI', %s);",
214));
215add_outil( array(
216        'id' => 'forum_lgrmaxi',
217        'code:spip_options' => "%%forum_lgrmaxi%%",
218        'categorie' => 'admin',
219        'version-min' => '1.9200',
220));
221
222add_variables( array(
223        'nom' => 'auteur_forum_nom',
224        'check' => 'couteauprive:auteur_forum_nom',
225        'defaut' => 1,
226), array(
227        'nom' => 'auteur_forum_email',
228        'check' => 'couteauprive:auteur_forum_email',
229        'defaut' => 0,
230), array(
231        'nom' => 'auteur_forum_deux',
232        'check' => 'couteauprive:auteur_forum_deux',
233        'defaut' => 0,
234));
235add_outil( array(
236        'id' => 'auteur_forum',
237        'categorie'      => 'admin',
238        'jquery'        => 'oui',
239        'code:jq_init' => 'cs_auteur_forum.apply(this);',
240        'code:js' => "var cs_verif_email = %%auteur_forum_email%%;\nvar cs_verif_nom = %%auteur_forum_nom%%;\nvar cs_verif_deux = %%auteur_forum_deux%%;",
241));
242
243        // ici on a besoin de trois boutons radio : _T('couteauprive:par_defaut'), _T('couteauprive:sf_amont') et _T('couteauprive:sf_tous')
244add_variable( array(
245        'nom' => 'radio_suivi_forums3',
246        'format' => _format_CHAINE,
247        'radio' => array('defaut' => 'couteauprive:par_defaut', '_SUIVI_FORUMS_REPONSES' => 'couteauprive:sf_amont', '_SUIVI_FORUM_THREAD' => 'couteauprive:sf_tous'),
248        'defaut' => '"defaut"',
249        // si la variable est differente de 'defaut' alors on codera le define
250        'code:%s!=="defaut"' => "define(%s, true);",
251));
252add_outil( array(
253        'id' => 'suivi_forums',
254        'code:options' => "%%radio_suivi_forums3%%",
255        'categorie' => 'admin',
256        // effectif que dans la version 1.92 (cf : plugin notifications)
257        'version-min' => '1.9200',
258        'version-max' => '1.9299',
259));
260
261add_variable( array(
262        'nom' => 'spam_mots',
263        'format' => _format_CHAINE,
264        'lignes' => 8,
265        'defaut' => '"sucking blowjob superbabe ejakulation fucking (asses)"',
266        'code' => "define('_spam_MOTS', %s);",
267));
268add_outil( array(
269        'id' => 'spam',
270        'code:options' => '%%spam_mots%%',
271        'categorie' => 'admin',
272));
273
274add_outil( array(
275        'id' => 'no_IP',
276        'code:spip_options' => '$ip = substr(md5($ip),0,16);',
277        'categorie' => 'admin',
278));
279
280add_outil( array(
281        'id' => 'flock',
282        'code:spip_options' => "define('_SPIP_FLOCK',false);",
283        'categorie' => 'admin',
284        'version-min' => '1.9300',
285));
286
287add_variables( array(
288        'nom' => 'log_couteau_suisse',
289        'check' => 'couteauprive:cs_log_couteau_suisse',
290        'defaut' => 0,
291), array(
292        'nom' => 'spip_options_on',
293        'check' => 'couteauprive:cs_spip_options_on',
294        'defaut' => 0,
295), array(
296        'nom' => 'distant_off',
297        'check' => 'couteauprive:cs_distant_off',
298        'defaut' => 0,
299        'code:%s' => "define('_CS_PAS_DE_DISTANT','oui');",
300));
301add_outil( array(
302        'id' => 'cs_comportement',
303        'code:spip_options' => "%%distant_off%%",
304));
305
306
307add_outil( array(
308        'id' => 'xml',
309        'code:options' => "\$GLOBALS['xhtml']='sax';",
310        'auteur' => 'Ma&iuml;eul Rouquette',
311        'categorie' =>'public',
312        'version-min' => '1.9200',
313));
314
315add_outil( array(
316        'id' => 'f_jQuery',
317        'code:options' => "\$GLOBALS['spip_pipeline']['insert_head'] = str_replace('|f_jQuery', '', \$GLOBALS['spip_pipeline']['insert_head']);",
318        'auteur' => 'Fil',
319        'categorie' =>'public',
320        'version-min' => '1.9200',
321));
322
323add_variables( array(
324        'nom' => 'prive_travaux',
325        'format' => _format_NOMBRE,
326        'radio' => array(0 => 'couteauprive:tous', 1 => 'couteauprive:admins_seuls'),
327        'defaut' => 0,
328        'code:%s' => "define('_en_travaux_PRIVE', %s);\n",
329), array(
330        'nom' => 'admin_travaux',
331        'format' => _format_NOMBRE,
332        'radio' => array(0 => 'couteauprive:tous', 1 => 'couteauprive:sauf_admin'),
333        'defaut' => 0,
334        'code:%s' => "define('_en_travaux_ADMIN', %s);\n",
335), array(
336        'nom' => 'message_travaux',
337        'format' => _format_CHAINE,
338        'defaut' => "_T('couteauprive:travaux_prochainement')",
339        'lignes' => 3,
340        'code' => "\$tr_message=%s;\n",
341), array(
342        'nom' => 'titre_travaux',
343        'format' => _format_NOMBRE,
344        'radio' => array(1 => 'couteauprive:travaux_titre', 0 => 'couteauprive:travaux_nom_site'),
345        'defaut' => 1,
346        'code:%s' => "define('_en_travaux_TITRE', %s);",
347));
348add_outil( array(
349        'id' => 'en_travaux',
350        'code:options' => "%%message_travaux%%%%prive_travaux%%%%admin_travaux%%%%titre_travaux%%",
351        'categorie' => 'admin',
352        'auteur' => "Arnaud Ventre pour l'id&eacute;e originale",
353));
354
355add_variables( array(
356        'nom' => 'bp_tri_auteurs',
357        'check' => 'couteauprive:bp_tri_auteurs',
358        'defaut' => 1,
359        'code:%s' => "define('boites_privees_TRI_AUTEURS', %s);\n",
360), array(
361        'nom' => 'bp_urls_propres',
362        'check' => 'couteauprive:bp_urls_propres',
363        'defaut' => 1,
364        'code:%s' => "define('boites_privees_URLS_PROPRES', %s);\n",
365), array(
366        'nom' => 'cs_rss',
367        'check' => 'couteauprive:rss_var',
368        'defaut' => 1,
369        'code:%s' => "define('boites_privees_CS', %s);\n",
370), array(
371        'nom' => 'format_spip',
372        'check' => 'couteauprive:format_spip',
373        'defaut' => 1,
374        'code:%s' => "define('boites_privees_ARTICLES', %s);\n",
375), array(
376        'nom' => 'stat_auteurs',
377        'check' => 'couteauprive:stat_auteurs',
378        'defaut' => 1,
379        'code:%s' => "define('boites_privees_AUTEURS', %s);\n",
380), array(
381        'nom' => 'qui_webmasters',
382        'check' => 'couteauprive:qui_webmestres',
383        'defaut' => 1,
384        'code:%s' => "define('boites_privees_WEBMASTERS', %s);\n",
385));
386add_outil( array(
387        'id' => 'boites_privees',
388        'auteur'=>'Pat, Joseph LARMARANGE (format SPIP)',
389        'contrib' => 2564,
390        'code:options' => "%%cs_rss%%%%format_spip%%%%stat_auteurs%%%%qui_webmasters%%%%bp_urls_propres%%%%bp_tri_auteurs%%",
391        'categorie' => 'interface',
392        'pipeline:affiche_milieu' => 'boites_privees_affiche_milieu',
393        'pipeline:affiche_droite' => 'boites_privees_affiche_droite',
394        'pipeline:affiche_gauche' => 'boites_privees_affiche_gauche',
395));
396
397add_variables( array(
398        'nom' => 'max_auteurs_page',
399        'format' => _format_NOMBRE,
400        'defaut' => 30,
401        'code:%s' => "@define('MAX_AUTEURS_PAR_PAGE', %s);\n",
402), array(
403        'nom' => 'auteurs_0',   'check' => 'info_administrateurs',      'defaut' => 1,  'code:%s' => "'0minirezo',",
404), array(
405        'nom' => 'auteurs_1',   'check' => 'info_redacteurs',   'defaut' => 1,  'code:%s' => "'1comite',",
406), array(
407        'nom' => 'auteurs_5',   'check' => 'info_statut_site_4',        'defaut' => 1,  'code:%s' => "'5poubelle',",
408), array(
409        'nom' => 'auteurs_6',   'check' => 'info_visiteurs',    'defaut' => 0,  'code:%s' => "'6forum',",
410), array(
411        'nom' => 'auteurs_n',   'check' => 'couteauprive:nouveaux',     'defaut' => 0,  'code:%s' => "'nouveau',",
412), array(
413        'nom' => 'auteurs_tout_voir',
414        'format' => _format_NOMBRE,
415        'radio' => array(1 => 'couteauprive:statuts_tous', 0 => 'couteauprive:statuts_spip'),
416        'radio/ligne' => 1,
417        'defaut' => 0,
418//      'code:!%s' => "@define('AUTEURS_DEFAUT', join(\$temp_auteurs,','));",
419        'code:!%s' => "if (_request('exec')=='auteurs' && !_request('statut')) \$_GET['statut'] = join(\$temp_auteurs,',');",
420        'code:%s' => "if (_request('exec')=='auteurs' && !_request('statut')) \$_GET['statut'] = '!foo';",
421));
422add_outil( array(
423        'id' => 'auteurs',
424        'code:options' => "%%max_auteurs_page%%\$temp_auteurs=array(%%auteurs_0%%%%auteurs_1%%%%auteurs_5%%%%auteurs_6%%%%auteurs_n%%); %%auteurs_tout_voir%% unset(\$temp_auteurs);",
425        'categorie' => 'interface',
426        'version-min' => '1.9300',
427//      'pipeline:affiche_milieu' => 'auteurs_affiche_milieu',
428));
429
430//-----------------------------------------------------------------------------//
431//                               fonctions                                     //
432//-----------------------------------------------------------------------------//
433
434add_outil( array(
435        'id' => 'verstexte',
436        'auteur' => 'C&eacute;dric MORIN',
437        'categorie' => 'spip',
438));
439
440add_outil( array(
441        'id' => 'orientation',
442        'auteur'         => 'Pierre Andrews (Mortimer) &amp; IZO',
443        'categorie' => 'spip',
444));
445
446add_variable( array(
447        'nom' => 'balise_decoupe',
448        'format' => _format_NOMBRE,
449        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
450        'defaut' => 0,
451        'code:%s' => "define('_decoupe_BALISE', %s);\n",
452));
453add_outil( array(
454        'id' => 'decoupe',
455        'contrib'       => 2135,
456        // Le separateur <span class='csfoo xxxx'></span> est supprime en fin de calcul de page
457        'code:options' => "%%balise_decoupe%%define('_onglets_FIN', '<span class=\'csfoo ongl\'></span>');\n@define('_decoupe_SEPARATEUR', '++++');
458if(!defined('_SPIP19300') && isset(\$_GET['var_recherche'])) {
459        include_spip('inc/headers');
460        redirige_par_entete(str_replace('var_recherche=', 'decoupe_recherche=', \$GLOBALS['REQUEST_URI']));
461}",
462        'code:css' => "div.pagination {display:block; text-align:center; }
463div.pagination img { border:0pt none; margin:0pt; padding:0pt; }
464span.cs_pagination_off {color: lightgrey; font-weight: bold; text-decoration: underline;} ",
465        // construction des onglets
466        'code:jq_init' => "onglets_init.apply(this);",
467        // pour les balises #TEXTE : $table_des_traitements['TEXTE'] = 'cs_decoupe(propre(%s))';
468        // pour les articles, breves et rubriques : $table_des_traitements['TEXTE']['articles'] = 'cs_decoupe(propre(%s))';
469        'traitement:TEXTE:post_propre,
470         traitement:TEXTE/articles:post_propre,
471         traitement:TEXTE/breves:post_propre,
472         traitement:TEXTE/rubriques:post_propre' => 'cs_decoupe',
473        // pour les balises #TEXTE : $table_des_traitements['TEXTE'] = 'propre(cs_onglets(%s))';
474        // pour les articles, breves et rubriques : $table_des_traitements['TEXTE']['articles'] = 'propre(cs_onglets(%s))';
475        'traitement:TEXTE:pre_propre,
476         traitement:TEXTE/articles:pre_propre,
477         traitement:TEXTE/breves:pre_propre,
478         traitement:TEXTE/rubriques:pre_propre' => 'cs_onglets',
479        'categorie' => 'typo-racc',
480        'pipeline:bt_toolbox' => 'decoupe_BarreTypo',
481        'pipeline:nettoyer_raccourcis_typo' => 'decoupe_nettoyer_raccourcis',
482));
483
484// couplage avec l'outil 'decoupe', donc 'sommaire' doit etre place juste apres :
485// il faut inserer le sommaire dans l'article et ensuite seulement choisir la page
486add_variables( array(
487        'nom' => 'lgr_sommaire',
488        'format' => _format_NOMBRE,
489        'defaut' => 30,
490        'code:%s>=9 && %s<=99' => "define('_sommaire_NB_CARACTERES', %s);\n",
491), array(
492        'nom' => 'auto_sommaire',
493        'format' => _format_NOMBRE,
494        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
495        'defaut' => 1,
496        'code:%s' => "define('_sommaire_AUTOMATIQUE', %s);\n",
497), array(
498        'nom' => 'balise_sommaire',
499        'format' => _format_NOMBRE,
500        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
501        'defaut' => 0,
502        'code:%s' => "define('_sommaire_BALISE', %s);",
503));
504include_spip('inc/filtres');
505add_outil( array(
506        'id' => 'sommaire',
507        'contrib'       => 2378,
508        // Le separateur <span class='csfoo xxxx'></span> est supprime en fin de calcul de page
509        'code:options' => "define('_sommaire_REM', '<span class=\'csfoo somm\'></span>');\ndefine('_CS_SANS_SOMMAIRE', '[!sommaire]');\ndefine('_CS_AVEC_SOMMAIRE', '[sommaire]');\n%%lgr_sommaire%%%%auto_sommaire%%%%balise_sommaire%%",
510        'code:jq' => 'if(jQuery("div.cs_sommaire").length) {
511                // s\'il y a un sommaire, on cache la navigation haute sur les pages
512                jQuery("div.decoupe_haut").css("display", "none");
513                // utilisation des cookies pour conserver l\'etat du sommaire si on quitte la page
514                jQuery.getScript(cs_CookiePlugin, cs_sommaire_cookie);
515        }',
516        'code:jq_init' => 'cs_sommaire_init.apply(this);',
517        // inserer : $table_des_traitements['TEXTE']['articles']= 'sommaire_d_article(propre(%s))';
518        // idem pour les breves et les rubriques
519        'traitement:TEXTE/articles:post_propre,
520         traitement:TEXTE/breves:post_propre,
521         traitement:TEXTE/rubriques:post_propre' => 'sommaire_d_article',
522        'traitement:CS_SOMMAIRE:post_propre' => 'sommaire_d_article_balise',
523        'categorie' => 'typo-corr',
524        'pipeline:nettoyer_raccourcis_typo' => 'sommaire_nettoyer_raccourcis',
525));
526
527//-----------------------------------------------------------------------------//
528//                               PUBLIC                                        //
529//-----------------------------------------------------------------------------//
530
531// TODO : gestion du jQuery dans la fonction a revoir ?
532add_outil( array(
533        'id' => 'desactiver_flash',
534        'auteur'         => 'C&eacute;dric MORIN',
535        'categorie'      => 'public',
536        'jquery'        => 'oui',
537        // fonction InhibeFlash_init() codee dans desactiver_flash.js : executee lors du chargement de la page et a chaque hit ajax
538        'code:jq_init' => 'InhibeFlash_init.apply(this);',
539));
540
541add_variables( array(
542        'nom' => 'radio_target_blank3',
543        'format' => _format_NOMBRE,
544        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
545        'defaut' => 0,
546        'code' => '$GLOBALS["tweak_target_blank"]=%s;',
547), array(
548        'nom' => 'url_glossaire_externe2',
549        'format' => _format_CHAINE,
550        'defaut' => '""',
551        'code:strlen(%s)' => '$GLOBALS["url_glossaire_externe"]=%s;',
552), array(
553        'nom' => 'enveloppe_mails',
554        'format' => _format_NOMBRE,
555        'radio' => array(1 => 'item_oui', 0 => 'item_non', -1 => 'couteauprive:par_defaut'),
556        'defaut' => -1,
557        // Code pour le CSS
558        'code:%s>0' => 'a.spip_mail:before{content:"\002709" !important;}',
559        'code:%s===0' => 'a.spip_mail:before{content:"" !important;}',
560));
561add_outil( array(
562        'id' => 'SPIP_liens',
563        'categorie' => 'public',
564        'contrib'       => 2443,
565        'jquery'        => 'oui',
566        'description' => '<:SPIP_liens::>'.(defined('_SPIP19300')?'<:SPIP_liens:1:>':''),
567        'code:options' => "%%radio_target_blank3%%\n%%url_glossaire_externe2%%",
568        'code:jq_init' => 'if(%%radio_target_blank3%%) { if(!cs_prive) jQuery("a.spip_out,a.spip_url,a.spip_glossaire",this).attr("target", "_blank"); }',
569        'code:css' => defined('_SPIP19300')?'[[%enveloppe_mails%]]':'',
570));
571
572//-----------------------------------------------------------------------------//
573//                               NOISETTES                                     //
574//-----------------------------------------------------------------------------//
575
576add_outil( array(
577        'id' => 'visiteurs_connectes',
578        'auteur' => "Phil d'apr&egrave;s spip-contrib",
579        'categorie' => 'public',
580        'code:options' => "define('_VISITEURS_CONNECTES',1);
581function cs_compter_visiteurs(){ return count(preg_files(_DIR_TMP.'visites/','.')); }
582function action_visiteurs_connectes(){ echo cs_compter_visiteurs(); return true; }",
583        'version-min' => '1.9200', // pour la balise #ARRAY
584        //      une mise a jour toutes les 120 sec ?
585/*      'code:js' => 'function Timer_visiteurs_connectes(){
586                jQuery("span.cs_nb_visiteurs").load("spip.php?action=visiteurs_connectes");
587                setTimeout("Timer_visiteurs_connectes()",120000);                                       
588}',
589        'code:jq' => ' if(jQuery("span.cs_nb_visiteurs").length) Timer_visiteurs_connectes(); ',
590        'jquery' => 'oui',*/
591));
592
593//-----------------------------------------------------------------------------//
594//                               TYPO                                          //
595//-----------------------------------------------------------------------------//
596
597add_outil( array(
598        'id' => 'toutmulti',
599        'categorie'      => 'typo-racc',
600        'pipeline:pre_typo' => 'ToutMulti_pre_typo',
601));
602
603add_outil( array(
604        'id' => 'pucesli',
605        'auteur'         => "J&eacute;r&ocirc;me Combaz pour l'id&eacute;e originale",
606        'categorie'      => 'typo-corr',
607        'pipelinecode:pre_typo' => 'if (strpos($flux, "-")!==false) $flux = cs_echappe_balises("", "pucesli_remplace", $flux);',
608        'code:options' => 'function pucesli_remplace($texte) {  return preg_replace(\'/^-\s*(?![-*#])/m\', \'-* \', $texte); }',
609));
610
611add_outil( array(
612    'id' => 'citations_bb',
613    'auteur'    => 'Bertrand Marne, Romy T&ecirc;tue',
614    'categorie' => 'typo-corr',
615        'code:css'      => '/* fr */
616        q:lang(fr):before { content: "\00AB\A0"; }
617        q:lang(fr):after { content: "\A0\00BB"; }
618        q:lang(fr) q:before { content: "\201C"; }
619        q:lang(fr) q:after { content: "\201D"; }
620        q:lang(fr) q q:before { content: "\2018"; }
621        q:lang(fr) q q:after { content: "\2019"; }
622        /* IE */
623        * html q { font-style: italic; }
624        *+html q { font-style: italic; }', 
625    'pipelinecode:pre_propre' => 'if (strpos($flux, "<qu")!==false) $flux=cs_echappe_balises("", "citations_bb_rempl", $flux);',
626        // Remplacer <quote> par <q> quand il n'y a pas de retour a la ligne (3 niveaux, preg sans l'option s)
627    'code:options' => 'function citations_bb_rempl($texte){
628        $texte = preg_replace($a="/<quote>(.*?)<\/quote>/", $b="<q>\$1</q>", $texte);
629        if (strpos($texte, "<qu")!==false) {
630                $texte = preg_replace($a, $b, $texte);
631                if (strpos($texte, "<qu")!==false) $texte = preg_replace($a, $b, $texte);
632        }
633        return $texte;
634}',
635)); 
636
637add_variable( array(
638        'nom' => 'decoration_styles',
639        'format' => _format_CHAINE,
640        'lignes' => 8,
641        'defaut' => '"span.sc = font-variant:small-caps;
642span.souligne = text-decoration:underline;
643span.barre = text-decoration:line-through;
644span.dessus = text-decoration:overline;
645span.clignote = text-decoration:blink;
646span.surfluo = background-color:#ffff00; padding:0px 2px;
647span.surgris = background-color:#EAEAEC; padding:0px 2px;
648fluo = surfluo"',
649        'code' => "define('_decoration_BALISES', %s);",
650));
651add_outil( array(
652        'id' => 'decoration',
653        'auteur'         => 'izo@aucuneid.net, Pat',
654        'contrib'       => 2427,
655        'categorie'      => 'typo-racc',
656        'code:options' => "%%decoration_styles%%",
657        'pipeline:pre_typo' => 'decoration_pre_typo',
658        'pipeline:bt_toolbox' => 'decoration_BarreTypo',
659));
660
661add_variables( array(
662        'nom' => 'couleurs_fonds',
663        'format' => _format_NOMBRE,
664        'radio' => array(1 => 'item_oui', 0 => 'item_non' ),
665        'defaut' => 1,
666        'code' => "define('_COULEURS_FONDS', %s);\n",
667), array(
668        'nom' => 'set_couleurs',
669        'format' => _format_NOMBRE,
670        'radio' => array(0 => 'couteauprive:toutes_couleurs', 1 => 'couteauprive:certaines_couleurs'),
671        'radio/ligne' => 1,
672        'defaut' => 0,
673        'code' => "define('_COULEURS_SET', %s);\n",
674), array(
675        'nom' => 'couleurs_perso',
676        'format' => _format_CHAINE,
677        'lignes' => 3,
678        'defaut' => '"gris, rouge"',
679        'code' => "define('_COULEURS_PERSO', %s);",
680));
681add_outil( array(
682        'id' => 'couleurs',
683        'auteur'         => 'Aur&eacute;lien PIERARD (id&eacute;e originale), Pat',
684        'categorie'      => 'typo-racc',
685        'contrib'       => 2427,
686        'pipeline:pre_typo' => 'couleurs_pre_typo',
687        'pipeline:nettoyer_raccourcis_typo' => 'couleurs_nettoyer_raccourcis',
688        'pipeline:bt_toolbox' => 'couleurs_BarreTypo',
689        'code:options' => "%%couleurs_fonds%%%%set_couleurs%%%%couleurs_perso%%",
690        'code:fonctions' => "// aide le Couteau Suisse a calculer la balise #INTRODUCTION
691include_spip('outils/couleurs');
692\$GLOBALS['cs_introduire'][] = 'couleurs_nettoyer_raccourcis';
693",
694));
695
696// outil essentiellement français. D'autres langues peuvent etre ajoutees dans outils/typo_exposants.php
697add_variable( array(
698        'nom' => 'expo_bofbof',
699        'format' => _format_NOMBRE,
700        'radio' => array(1 => 'item_oui', 0 => 'item_non' ),
701        'defaut' => 0,
702        'code:%s' => "define('_CS_EXPO_BOFBOF', %s);",
703));
704add_outil( array(
705        'id' => 'typo_exposants',
706        'auteur'         => 'Vincent Ramos, Pat',
707        'categorie'      => 'typo-corr',
708        'contrib'       => 1564,
709        'code:options' => '%%expo_bofbof%%',
710        'pipeline:post_typo' => 'typo_exposants',
711        'code:css' => 'sup.typo_exposants { font-size:75%; font-variant:normal; vertical-align:super; }',
712));
713
714add_outil( array(
715        'id' => 'guillemets',
716        'auteur'         => 'Vincent Ramos',
717        'categorie'      => 'typo-corr',
718        'pipeline:post_typo' => 'typo_guillemets',
719));
720
721add_variables( array(
722        'nom' => 'liens_interrogation',
723        'format' => _format_NOMBRE,
724        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
725        'defaut' => 1,
726        'code:%s' => "\$GLOBALS['liens_interrogation']=true;\n",
727), array(
728        'nom' => 'liens_orphelins',
729        'format' => _format_NOMBRE,
730        'radio' => array(-1 => 'item_non', 0 => 'couteauprive:basique', 1 => 'couteauprive:etendu', -2 => 'couteauprive:par_defaut'),
731        'defaut' => 0,
732        'code' => '$GLOBALS["liens_orphelins"]=%s;',
733                // empeche SPIP de convertir les URLs orphelines (URLs brutes)
734        'code:%s<>-2' => defined('_SPIP19300')?"\$GLOBALS['spip_pipeline']['pre_liens']=str_replace('|traiter_raccourci_liens','',\$GLOBALS['spip_pipeline']['pre_liens']);":'',
735));
736// attention : liens_orphelins doit etre place avant mailcrypt ou liens_en_clair
737add_outil( array(
738        'id' => 'liens_orphelins',
739        'categorie'      => 'typo-corr',
740        'contrib'       => 2443,
741        'code:options' => '%%liens_interrogation%%%%liens_orphelins%%',
742        'pipeline:pre_propre' => 'liens_orphelins_pipeline',
743        'traitement:EMAIL' => 'expanser_liens(liens_orphelins',
744        'pipeline:pre_typo'   => 'interro_pre_typo',
745        'pipeline:post_propre'   => 'interro_post_propre',
746));
747
748add_outil( array(
749        'id' => 'filets_sep',
750        'auteur'         => 'FredoMkb',
751        'categorie'      => 'typo-racc',
752        'contrib'       => 1563,
753        'pipeline:pre_typo' => 'filets_sep',
754        'pipeline:bt_toolbox' => 'filets_sep_BarreTypo',
755));
756
757add_outil( array(
758        'id' => 'smileys',
759        'auteur'         => "Sylvain pour l'id&eacute;e originale",
760        'categorie'      => 'typo-corr',
761        'contrib'       => 1561,
762        'code:css' => "table.cs_smileys td {text-align:center; font-size:90%; font-weight:bold;}",
763        'pipeline:pre_typo' => 'cs_smileys_pre_typo',
764        'pipeline:bt_toolbox' => 'cs_smileys_BarreTypo',
765));
766
767add_outil( array(
768        'id' => 'chatons',
769        'auteur'         => "BoOz pour l'id&eacute;e originale",
770        'categorie'      => 'typo-racc',
771        'pipeline:pre_typo' => 'chatons_pre_typo',
772        'pipeline:bt_toolbox' => 'chatons_BarreTypo',
773));
774
775add_variables( array(
776        'nom' => 'glossaire_groupes',
777        'format' => _format_CHAINE,
778        'defaut' => "'Glossaire'",
779        'code' => "\$GLOBALS['glossaire_groupes']=%s;\n",
780), array(
781        'nom' => 'glossaire_limite',
782        'format' => _format_NOMBRE,
783        'defaut' => 0,
784        'code:%s>0' => "define('_GLOSSAIRE_LIMITE', %s);\n",
785), array(
786        'nom' => 'glossaire_js',
787        'radio' => array(0 => 'couteauprive:glossaire_css', 1 => 'couteauprive:glossaire_js'),
788        'format' => _format_NOMBRE,
789        'defaut' => 1,
790        'code:%s' => "define('_GLOSSAIRE_JS', %s);",
791));
792add_outil( array(
793        'id' => 'glossaire',
794        'categorie'     => 'typo-corr',
795        'contrib'       => 2206,
796        'code:options' => "@define('_CS_SANS_GLOSSAIRE', '[!glossaire]');\n%%glossaire_limite%%%%glossaire_groupes%%%%glossaire_js%%",
797//      'traitement:LIEU:post_propre' => 'cs_glossaire',
798        // sans oublier les articles, les breves et les rubriques :
799        // SPIP ne considere pas que la definition precedente est un tronc commun...
800        // meme traitement au chapo des articles...
801        'traitement:TEXTE:post_propre,
802         traitement:TEXTE/articles:post_propre,
803         traitement:TEXTE/breves:post_propre,
804         traitement:TEXTE/rubriques:post_propre,
805         traitement:CHAPO:post_propre' => 'cs_glossaire',
806        // Precaution pour les articles virtuels
807        'traitement:CHAPO:pre_propre' => 'nettoyer_chapo',
808        // Mise en forme des titres
809        'traitement:TITRE/mots:post_typo' => 'cs_glossaire_titres',
810        'code:css' =>  'a.cs_glossaire:after {display:none;}',
811        // fonction glossaire_init() codee dans glossaire.js : executee lors du chargement de la page et a chaque hit ajax
812        'code:jq_init' => 'glossaire_init.apply(this);',
813        'pipelinecode:nettoyer_raccourcis_typo' => '$flux=str_replace(_CS_SANS_GLOSSAIRE, "", $flux);',
814));
815
816// attention : mailcrypt doit etre place apres liens_orphelins
817add_outil( array(
818        'id' => 'mailcrypt',
819        'categorie'     => 'typo-corr',
820        'auteur'        => "Alexis Roussel, Paolo, Pat",
821        'contrib'       => 2443,
822        'jquery'        => 'oui',
823        'pipelinecode:post_propre' => "if(strpos(\$flux, '@')!==false) \$flux=cs_echappe_balises('', 'mailcrypt', \$flux);",
824        'code:js' => "function lancerlien(a,b){ x='ma'+'ilto'+':'+a+'@'+b; return x; }",
825        // jQuery pour remplacer l'arobase image par l'arobase texte
826        // ... puis arranger un peu le title qui a ete protege
827        'code:jq_init' => "jQuery('span.spancrypt', this).attr('class','cryptOK').html('&#6'+'4;');
828        jQuery(\"a[\"+cs_sel_jQuery+\"title*='..']\", this).each(function () {
829                this.title = this.title.replace(/\.\..t\.\./,'[@]');
830        });",
831        'code:css' => 'span.spancrypt {background:transparent url(' . url_absolue(find_in_path('img/mailcrypt/leure.gif'))
832                . ') no-repeat scroll 0.1em center; padding-left:12px; text-decoration:none;}',
833        'traitement:EMAIL' => 'mailcrypt',
834)); 
835
836
837// attention : liens_en_clair doit etre place apres tous les outils traitant des liens
838add_outil( array(
839        'id' => 'liens_en_clair',
840        'categorie'      => 'spip',
841        'contrib'       => 2443,
842        'pipeline:post_propre' => 'liens_en_clair_post_propre',
843        'code:css' => 'a.spip_out:after {display:none;}',
844)); 
845
846add_variables( array(   // variable utilisee par 'pipelinecode:insert_head'
847        'nom' => 'scrollTo',
848        'check' => 'couteauprive:jq_scrollTo',
849        'defaut' => 1,
850        'format' => _format_NOMBRE,
851), array(       // variable utilisee par 'pipelinecode:insert_head'
852        'nom' => 'LocalScroll',
853        'check' => 'couteauprive:jq_localScroll',
854        'defaut' => 1,
855        'format' => _format_NOMBRE,
856));
857add_outil( array(
858        'id' => 'soft_scroller',
859        'categorie'     => 'public',
860        'jquery'        => 'oui',
861        'pipelinecode:insert_head' => 'if(%%scrollTo%%) {$flux.=\'<script src="'.url_absolue(find_in_path("outils/jquery.scrollto.js")).'" type="text/javascript"></script>\'."\n";}
862if(%%LocalScroll%%) {$flux.=\'<script src="'.url_absolue(find_in_path("outils/jquery.localscroll.js")).'" type="text/javascript"></script>\'."\n";}',
863        'code:js' => 'function soft_scroller_init() { if(typeof jQuery.localScroll=="function") jQuery.localScroll({hash: true}); }',
864        'code:jq_init' => 'soft_scroller_init.apply(this);',
865));
866
867// http://www.malsup.com/jquery/corner/
868add_variables( array(
869        'nom' => 'jcorner_classes',
870        'format' => _format_CHAINE,
871        'lignes' => 10,
872        'defaut' => defined('_SPIP19300')?'"// coins ronds aux formulaires
873.formulaire_inscription, .formulaire_forum, .formulaire_ecrire_auteur
874
875// colorisation de la dist de SPIP 2.0 en ajoutant un parent
876\".chapo, .texte\" = wrap(\'<div class=\"jc_parent\" style=\"padding:4px; background-color:#ffe0c0; margin:4px 0;\"></div>\')
877\".menu\" = wrap(\'<div class=\"jc_parent\" style=\"padding:4px; background-color:lightBlue; margin:4px 0;\"></div>\')
878
879// coins ronds aux parents !
880.jc_parent"'
881                :'" // coins ronds pour les menus de navigation
882.rubriques, .breves, .syndic, .forums, .divers
883
884 // en couleurs sur l\'accueil
885.liste-articles li .texte = css(\'background-color\', \'#E0F0F0\') .corner()
886
887// colorisation de la dist de SPIP 1.92 en ajoutant un parent
888\"#contenu .texte\" = wrap(\'<div class=\"jc_parent\" style=\"padding:4px; background-color:#E0F0F0; margin:4px 0;\"></div>\')
889
890// coins ronds aux parents !
891.jc_parent"',
892        'code' => "define('_jcorner_CLASSES', %s);",
893), array(       // variable utilisee par 'pipelinecode:insert_head'
894        'nom' => 'jcorner_plugin',
895        'check' => 'couteauprive:jcorner_plugin',
896        'defaut' => 1,
897        'format' => _format_NOMBRE,
898));
899add_outil( array(
900        'id' => 'jcorner',
901        'categorie'     => 'public',
902        'jquery'        => 'oui',
903        'contrib'       => 2987,
904        'code:options' => "%%jcorner_classes%%",
905        'pipelinecode:insert_head' => 'if(%%jcorner_plugin%%) {$flux.=\'<script src="'.url_absolue(find_in_path("outils/jquery.corner.js")).'" type="text/javascript"></script>\'."\n";}',
906        'pipeline:insert_head' => 'jcorner_insert_head',
907        // jcorner_init() n'est disponible qu'en partie publique
908        'code:jq_init' => 'if(typeof jcorner_init=="function") jcorner_init.apply(this);',
909));
910
911add_variables( array(
912        'nom' => 'insertions',
913        'format' => _format_CHAINE,
914        'lignes' => 8,
915        'defaut' => '"coeur = c&oelig;ur
916manoeuvre = man&oelig;uvre
917(oeuvre(s?|r?)) = &oelig;uvre$1
918(O(E|e)uvre(s?|r?)\b/ = &OElig;uvre$2
919((h|H)uits) = $1uit
920/\b(c|C|m.c|M.c|rec|Rec)onn?aiss?a(nce|nces|nt|nts|nte|ntes|ble)\b/ = $1onnaissa$2
921/\boeuf(s?)\b/ = &oelig;uf$1
922"',
923        'code' => "define('_insertions_LISTE', %s);",
924));
925add_outil( array(
926        'id' => 'insertions',
927        'categorie'      => 'typo-corr',
928        'code:options' => "%%insertions%%",
929        'traitement:TEXTE:pre_propre' => 'insertions_pre_propre',
930        // sans oublier les articles, les breves et les rubriques :
931        // SPIP ne considere pas que la definition precedente est un tronc commun...
932        'traitement:TEXTE/articles:pre_propre,
933         traitement:TEXTE/breves:pre_propre,
934         traitement:TEXTE/rubriques:pre_propre' => 'insertions_pre_propre',
935));
936
937// le plugin moderation moderee dans le couteau suisse
938include_spip('inc/charsets');
939add_outil( array(
940        'id' => 'moderation_moderee',
941        'auteur' => 'Yohann(potter64)',
942        'categorie' => 'admin',
943        'version-min' => '1.9300',
944        'code:options' => '%%moderation_admin%%%%moderation_redac%%%%moderation_visit%%',
945        'code:jq_init' => 'if (window.location.search.match(/page=forum/)!=null) jQuery("legend:contains(\''.addslashes(unicode2charset(html2unicode(_T('bouton_radio_modere_priori')))).'\')", this).next().html(\''.addslashes(_T('couteauprive:moderation_message')).'\');',
946        'pipeline:pre_edition' => 'moderation_vip',
947));
948add_variables( array(
949        'nom' => 'moderation_admin',
950        'check' => 'couteauprive:moderation_admins',
951        'defaut' => 1,
952        'code:%s' => "define('_MOD_MOD_0minirezo',%s);",
953), array(
954        'nom' => 'moderation_redac',
955        'check' => 'couteauprive:moderation_redacs',
956        'defaut' => 0,
957        'code:%s' => "define('_MOD_MOD_1comite',%s);",
958), array(
959        'nom' => 'moderation_visit',
960        'check' => 'couteauprive:moderation_visits',
961        'defaut' => 0,
962        'code:%s' => "define('_MOD_MOD_6forum',%s);",
963));
964
965add_outil( array(
966        'id' => 'titre_parent',
967        'categorie' => 'spip',
968        'contrib' => 2900,
969        'code:options' => '%%titres_etendus%%',
970));
971add_variable( array(
972        'nom' => 'titres_etendus',
973        'check' => 'couteauprive:titres_etendus',
974        'format' => _format_NOMBRE,
975        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
976        'defaut' => 0,
977        'code:%s' => "define('_PARENTS_ETENDUS',%s);",
978));
979
980add_outil( array(
981        'id' => 'corbeille',
982        'categorie' => 'admin',
983        'version-min' => '1.9300',
984        'code:options' => "%%arret_optimisation%%",
985));
986add_variable( array(
987        'nom' => 'arret_optimisation',
988        'format' => _format_NOMBRE,
989        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
990        'defaut' => 0,
991        'code:%s' => "define('_CORBEILLE_SANS_OPTIM', 1);
992if(!function_exists('genie_optimiser')) {
993        // surcharge de la fonction d'optimisation de SPIP (inc/optimiser.php)
994        function genie_optimiser(\$t='foo'){ include_spip('optimiser','genie'); optimiser_base_une_table(); return -(mktime(2,0,0) + rand(0, 3600*4)); }\n}",
995));
996
997add_outil( array(
998        'id' => 'trousse_balises',
999        'categorie' => 'spip',
1000        'contrib' => 3005,
1001));
1002
1003add_outil( array(
1004        'id' => 'horloge',
1005        'categorie' => 'spip',
1006        'contrib' => 2998,
1007        'pipelinecode:insert_head,
1008         pipelinecode:header_prive' => '$flux.=\'<script type="text/javascript" src="\'.generer_url_public(\'cout_dates.js\',\'lang=\'.$GLOBALS[\'spip_lang\']).\'"></script>
1009<script type="text/javascript" src="'.url_absolue(find_in_path("outils/jquery.jclock.js")).'"></script>\'."\n";',
1010        'code:jq_init' => 'jclock_init.apply(this);',
1011));
1012
1013add_outil( array(
1014        'id' => 'maj_auto',
1015        'categorie' => 'admin',
1016        'version-min' => '1.9300',
1017));
1018
1019//reglage du nombre de case pour le brouteur
1020add_outil( array(
1021        'id' => 'brouteur',
1022        'categorie' => 'interface',
1023        'code:options' => "%%rubrique_brouteur%%"
1024));
1025add_variable( array(
1026        'nom' => 'rubrique_brouteur',
1027        'format' => _format_NOMBRE,
1028        'defaut' => 20,
1029        'code:%s' => "define('_SPIP_SELECT_RUBRIQUES', %s);"
1030));
1031
1032// Recuperer tous les outils de la forme outils/monoutil_config.php
1033// y compris les lames perso dont on met le nom en italiques
1034foreach (find_all_in_path('outils/', '\w+_config\.php$') as $f) 
1035if (preg_match(',^([^.]*)_config$,', basename($f, '.php'),$regs)){
1036        include $f;
1037        if(function_exists($cs_temp=$regs[1].'_add_outil')) {
1038                $cs_temp = $cs_temp();
1039                $cs_temp['id'] = $regs[1];
1040                if(strlen($cs_temp['nom']) && !preg_match(',couteau_suisse/outils/,', $f))
1041                        $cs_temp['nom'] = "<i>$cs_temp[nom]</i>";
1042                add_outil($cs_temp);
1043        }
1044        if(function_exists($cs_temp='add_variable_'.$regs[1])) add_variable($cs_temp());
1045        if(function_exists($cs_temp='add_variables_'.$regs[1])) add_variables($cs_temp());
1046}
1047
1048// Nettoyage
1049unset($cs_temp);
1050
1051// Ajout des outils personnalises sous forme globale
1052if(isset($GLOBALS['mes_outils'])) {
1053        foreach($GLOBALS['mes_outils'] as $id=>$outil) {
1054                $outil['id'] = $id;
1055                if(strlen($outil['nom'])) $outil['nom'] = "<i>$outil[nom]</i>";
1056                add_outil($outil);
1057        }
1058        unset($GLOBALS['mes_outils']);
1059}
1060
1061
1062// Idees d'ajouts :
1063// http://archives.rezo.net/spip-core.mbox/
1064// http://www.spip-contrib.net/Citations
1065// http://www.spip-contrib.net/la-balise-LESMOTS et d'autres balises #MAINTENANT #LESADMINISTRATEURS #LESREDACTEURS #LESVISITEURS
1066// http://www.spip-contrib.net/Ajouter-une-lettrine-aux-articles
1067// http://www.spip-contrib.net/Generation-automatique-de
1068// http://www.spip-contrib.net/Balise-LOGO-ARTICLE-ORITRAD
1069// boutonstexte
1070
1071//global $cs_variables; cs_log($cs_variables, 'cs_variables :');
1072?>
Note: See TracBrowser for help on using the repository browser.