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

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

Jolis coins : passe le plugin jQuery en fichier distant versionné, permettant plus facilement les mises à jour.

SPIP>=2.1 : version 2.09 (11-MAR-2010), jQuery v1.3.2 mini
http://github.com/malsup/corner/raw/ca8d745fdfe054e1bb62fbd22eca9850c1353e03/jquery.corner.js
SPIP<=2.0 : version 2.03 (05-DEC-2009)
http://github.com/malsup/corner/raw/46bbbc8706853c879c9224b7ebf5f284f726314d/jquery.corner.js

+ nomenclature spécifique des fichiers distants pour les pipelines : 'distant_pipelines'

File size: 46.5 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
42add_outil( array(
43        'id' => 'supprimer_numero',
44        /* inserer :
45                $table_des_traitements['TITRE'][]= 'typo(supprimer_numero(%s))';
46                $table_des_traitements['TYPE']['mots']= 'typo(supprimer_numero(%s))';
47                $table_des_traitements['NOM'][]= 'typo(supprimer_numero(%s))'; */
48        'traitement:TITRE:pre_typo,
49         traitement:TITRE/mots:pre_typo,
50         traitement:NOM:pre_typo,
51         traitement:TYPE/mots:pre_typo' => 'supprimer_numero',
52        'categorie' => 'public',
53));
54
55add_variable( array(
56        'nom' => 'paragrapher',
57        'format' => _format_NOMBRE,
58        'radio' => array(1 => 'item_oui', 0 => 'item_non', -1 => 'couteauprive:par_defaut'),
59        'defaut' => "-1",
60        'code:%s>=0' => "\$GLOBALS['toujours_paragrapher']=%s;",
61));
62add_outil( array(
63        'id' => 'paragrapher2',
64        'code:spip_options' => '%%paragrapher%%',
65        'categorie' => 'admin',
66));
67
68add_outil( array(
69        'id' => 'forcer_langue',
70        'code:spip_options' => "\$GLOBALS['forcer_lang']=true;",
71        'categorie' => 'public',
72));
73
74add_variable( array(
75        'nom' => 'webmestres',
76        'format' => _format_CHAINE,
77        'defaut' => '"1"',
78        'code:strlen(%s)' => "define('_ID_WEBMESTRES', %s);",
79        'code:!strlen(%s)' => "define('_ID_WEBMESTRES', 1);",
80));
81add_outil( array(
82        'id' => 'webmestres',
83        'code:spip_options' => '%%webmestres%%',
84        'categorie' => 'admin',
85        // non supporte avant la version 1.92
86        'version-min' => '1.9200',
87        'autoriser' => "autoriser('webmestre')",
88        'pipelinecode:pre_description_outil' => 'if($id=="webmestres")
89                $texte=str_replace(array("@_CS_LISTE_WEBMESTRES@","@_CS_LISTE_ADMINS@"),get_liste_administrateurs(),$texte);',
90));
91
92add_outil( array(
93        'id' => 'insert_head',
94        'code:options' => "\$GLOBALS['spip_pipeline']['affichage_final'] .= '|f_insert_head';",
95        'categorie' => 'spip',
96));
97
98// ici on a besoin d'une case input. La variable est : suite_introduction
99// a la toute premiere activation de l'outil, la valeur sera : '&nbsp;(...)'
100add_variables( array(
101        'nom' => 'suite_introduction',
102        'format' => _format_CHAINE,
103        'defaut' => '"&nbsp;(...)"',
104        'code' => "define('_INTRODUCTION_SUITE', %s);\n",
105), array(
106        'nom' => 'lgr_introduction',
107        'format' => _format_NOMBRE,
108        'defaut' => 100,
109        'code:%s && %s!=100' => "define('_INTRODUCTION_LGR', %s);\n",
110), array(
111        'nom' => 'lien_introduction',
112        'format' => _format_NOMBRE,
113        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
114        'defaut' => 0,
115        'code' => "define('_INTRODUCTION_LIEN', %s);",
116));
117add_outil( array(
118        'id' => 'introduction',
119        'code:options' => "%%lgr_introduction%%%%suite_introduction%%%%lien_introduction%%",
120        'categorie' => 'spip',
121));
122
123// ici on a besoin de deux boutons radio : _T('icone_interface_simple') et _T('icone_interface_complet')
124add_variable( array(
125        'nom' => 'radio_set_options4',
126        'format' => _format_CHAINE,
127        'radio' => array('basiques' => 'icone_interface_simple', 'avancees' => 'icone_interface_complet'),
128        'defaut' => '"avancees"',
129        'label' => '@_CS_CHOIX@',
130        'code' => "\$_GET['set_options']=\$GLOBALS['set_options']=%s;",
131));
132add_outil( array(
133        'id' => 'set_options',
134        'auteur'         => 'Vincent Ramos',
135        'code:options' => "%%radio_set_options4%%",
136        'categorie' => 'interface',
137        // pipeline pour retirer en JavaScript le bouton de controle de l'interface
138        'pipeline:header_prive' => 'set_options_header_prive',
139        // non supporte a partir de la version 1.93
140        'version-max' => '1.9299',
141));
142
143// ici on a besoin de trois boutons radio : _T('couteauprive:js_jamais'), _T('couteauprive:js_defaut') et _T('couteauprive:js_toujours')
144add_variable( array(
145        'nom' => 'radio_filtrer_javascript3',
146        'format' => _format_NOMBRE,
147        'radio' => array(-1 => 'couteauprive:js_jamais', 0 => 'couteauprive:js_defaut', 1 => 'couteauprive:js_toujours'),
148        'defaut' => 0,
149        'label' => '@_CS_CHOIX@',
150        // si la variable est non nulle, on code...
151        'code:%s' => "\$GLOBALS['filtrer_javascript']=%s;",
152));
153add_outil( array(
154        'id' => 'filtrer_javascript',
155        'code:options' => "%%radio_filtrer_javascript3%%",
156        'categorie' => 'admin',
157        'version-min' => '1.9200',
158));
159
160// ici on a besoin d'une case input. La variable est : forum_lgrmaxi
161// a la toute premiere activation de l'outil, la valeur sera : 0 (aucune limite)
162add_variable( array(
163        'nom' => 'forum_lgrmaxi',
164        'format' => _format_NOMBRE,
165        'defaut' => 0,
166        'code:%s' => "define('_FORUM_LONGUEUR_MAXI', %s);",
167));
168add_outil( array(
169        'id' => 'forum_lgrmaxi',
170        'code:spip_options' => "%%forum_lgrmaxi%%",
171        'categorie' => 'admin',
172        'version-min' => '1.9200',
173));
174
175
176add_variables( array(
177        'nom' => 'logo_Hmax',
178        'format' => _format_NOMBRE,
179        'defaut' => 0,
180        'code:%s' => "@define('_LOGO_MAX_HEIGHT', %s);\n",
181), array(
182        'nom' => 'logo_Wmax',
183        'format' => _format_NOMBRE,
184        'defaut' => 0,
185        'code:%s' => "@define('_LOGO_MAX_WIDTH', %s);\n",
186), array(
187        'nom' => 'logo_Smax',
188        'format' => _format_NOMBRE,
189        'defaut' => 0,
190        'code:%s' => "@define('_LOGO_MAX_SIZE', %s);\n",
191), array(
192        'nom' => 'img_Hmax',
193        'format' => _format_NOMBRE,
194        'defaut' => 0,
195        'code:%s' => "@define('_IMG_MAX_HEIGHT', %s);\n",
196), array(
197        'nom' => 'img_Wmax',
198        'format' => _format_NOMBRE,
199        'defaut' => 0,
200        'code:%s' => "@define('_IMG_MAX_WIDTH', %s);\n",
201), array(
202        'nom' => 'img_Smax',
203        'format' => _format_NOMBRE,
204        'defaut' => 0,
205        'code:%s' => "@define('_IMG_MAX_SIZE', %s);\n",
206), array(
207        'nom' => 'doc_Smax',
208        'format' => _format_NOMBRE,
209        'defaut' => 0,
210        'code:%s' => "@define('_DOC_MAX_SIZE', %s);\n",
211), array(
212        'nom' => 'img_GDmax',
213        'format' => _format_NOMBRE,
214        'defaut' => 0,
215        'code:%s' => "@define('_IMG_GD_MAX_PIXELS', %s);\n",
216), array(
217        'nom' => 'img_GDqual',
218        'format' => _format_NOMBRE,
219        'defaut' => 85,
220        'code:%s' => "@define('_IMG_GD_QUALITE', %s);\n",
221        'label' => '@_CS_CHOIX@',
222), array(
223        'nom' => 'copie_Smax',
224        'format' => _format_NOMBRE,
225        'defaut' => 16,
226        'code' => "@define('_COPIE_LOCALE_MAX_SIZE', %s*1048576);",
227));
228add_outil( array(
229        'id' => 'SPIP_tailles',
230        'code:spip_options' => "%%logo_Hmax%%%%logo_Wmax%%%%logo_Smax%%%%img_Hmax%%%%img_Wmax%%%%img_Smax%%%%doc_Smax%%%%img_GDmax%%%%img_GDqual%%%%copie_Smax%%",
231        'categorie' => 'admin',
232));
233
234add_outil( array(
235        'id' => 'previsualisation',
236        'categorie' => 'interface',
237        'auteur' => '[C&eacute;dric Morin->http://www.yterium.net]',
238        'pipeline:pre_boucle' => 'previsu_redac_pre_boucle',
239        'pipeline:boite_infos' => 'previsu_redac_boite_infos',
240        // fichier distant pour les pipelines
241        'distant_pipelines' => 'http://zone.spip.org/trac/spip-zone/export/32230/_plugins_/previsu_redaction/previsu_redac_pipelines.php',
242        'version-min' => '1.9300',
243));
244
245add_variable( array(
246        'nom' => 'mot_masquer',
247        'format' => _format_CHAINE,
248        'defaut' => "'masquer'",
249        'code' => "define('_MOT_MASQUER', %s);",
250        'commentaire' => '!sql_countsel("spip_mots", "titre="._q(%s))?"<span style=\"color:red\">"._T("couteauprive:erreur_mot", array("mot"=>%s))."</span>":""',
251));
252add_outil( array(
253        'id' => 'masquer',
254        'categorie' => 'spip',
255        'auteur' => 'Nicolas Hoizey, St&eacute;phanie Caron',
256        'pipeline:pre_boucle' => 'masquer_pre_boucle',
257        // fichier distant pour le pipeline
258        'distant_pipelines' => 'http://zone.spip.org/trac/spip-zone/export/35809/_plugins_/masquer/masquer_pipelines.php',
259        'code:options' => "%%mot_masquer%%",
260        'code:fonctions' => 'if (!function_exists("critere_tout_voir_dist")){
261  function critere_tout_voir_dist($idb, &$boucles, $crit) {
262    $boucle = &$boucles[$idb];
263    $boucle->modificateur["tout_voir"] = true;
264  }
265}',
266        'version-min' => '1.9300',
267));
268
269add_variables( array(
270        'nom' => 'auteur_forum_nom',
271        'check' => 'couteauprive:auteur_forum_nom',
272        'defaut' => 1,
273), array(
274        'nom' => 'auteur_forum_email',
275        'check' => 'couteauprive:auteur_forum_email',
276        'defaut' => 0,
277), array(
278        'nom' => 'auteur_forum_deux',
279        'check' => 'couteauprive:auteur_forum_deux',
280        'defaut' => 0,
281));
282add_outil( array(
283        'id' => 'auteur_forum',
284        'categorie'      => 'admin',
285        'jquery'        => 'oui',
286        'code:jq_init' => 'cs_auteur_forum.apply(this);',
287        'code:js' => "var cs_verif_email = %%auteur_forum_email%%;\nvar cs_verif_nom = %%auteur_forum_nom%%;\nvar cs_verif_deux = %%auteur_forum_deux%%;",
288        'pipelinecode:pre_description_outil' => 'if($id=="auteur_forum") $texte=str_replace(array("@_CS_FORUM_NOM@","@_CS_FORUM_EMAIL@"),
289        array(preg_replace(\',:$,\',"",_T("forum_votre_nom")),preg_replace(\',:$,\',"",_T("forum_votre_email"))),$texte);',
290));
291
292// ici on a besoin de trois boutons radio : _T('couteauprive:par_defaut'), _T('couteauprive:sf_amont') et _T('couteauprive:sf_tous')
293add_variable( array(
294        'nom' => 'radio_suivi_forums3',
295        'format' => _format_CHAINE,
296        'radio' => array('defaut' => 'couteauprive:par_defaut', '_SUIVI_FORUMS_REPONSES' => 'couteauprive:sf_amont', '_SUIVI_FORUM_THREAD' => 'couteauprive:sf_tous'),
297        'defaut' => '"defaut"',
298        'label' => '@_CS_CHOIX@',
299        // si la variable est differente de 'defaut' alors on codera le define
300        'code:%s!=="defaut"' => "define(%s, true);",
301));
302add_outil( array(
303        'id' => 'suivi_forums',
304        'code:options' => "%%radio_suivi_forums3%%",
305        'categorie' => 'admin',
306        // effectif que dans la version 1.92 (cf : plugin notifications)
307        'version-min' => '1.9200',
308        'version-max' => '1.9299',
309));
310
311add_variables( array(
312        'nom' => 'spam_mots',
313        'format' => _format_CHAINE,
314        'lignes' => 8,
315        'defaut' => '"sucking blowjob superbabe ejakulation fucking (asses)"',
316        'code' => "define('_spam_MOTS', %s);",
317), array(
318        'nom' => 'spam_ips',
319        'format' => _format_CHAINE,
320        'lignes' => 6,
321        'defaut' => '""',
322        'code' => "define('_spam_IPS', %s);",
323));
324add_outil( array(
325        'id' => 'spam',
326        'code:options' => "%%spam_mots%%\n%%spam_ips%%",
327        // sauvegarde de l'IP pour tests
328        'code:spip_options' => '$ip_=$ip;',
329        'categorie' => 'admin',
330));
331
332// a placer apres l'outil 'spam' pour compatibilite IP
333add_outil( array(
334        'id' => 'no_IP',
335        'code:spip_options' => '$ip = substr(md5($ip),0,16);',
336        'categorie' => 'admin',
337));
338
339add_outil( array(
340        'id' => 'flock',
341        'code:spip_options' => "define('_SPIP_FLOCK',false);",
342        'categorie' => 'admin',
343        'version-min' => '1.9300',
344));
345
346add_variables( array(
347        'nom' => 'log_couteau_suisse',
348        'check' => 'couteauprive:cs_log_couteau_suisse',
349        'defaut' => 0,
350), array(
351        'nom' => 'spip_options_on',
352        'check' => 'couteauprive:cs_spip_options_on',
353        'defaut' => 0,
354), array(
355        'nom' => 'distant_off',
356        'check' => 'couteauprive:cs_distant_off',
357        'defaut' => 0,
358        'code:%s' => "define('_CS_PAS_DE_DISTANT','oui');",
359), array(
360        'nom' => 'distant_outils_off',
361        'check' => 'couteauprive:cs_distant_outils_off',
362        'defaut' => 0,
363        'code:%s' => "define('_CS_PAS_D_OUTIL_DISTANT','oui');",
364        'commentaire' => 'fct_distant_outils_off();
365function fct_distant_outils_off(){
366        global $outils; $s="";
367        foreach($outils as $o) if(isset($o["fichiers_distants"])) $s.=($s?" - ":"")."[.->$o[id]]";
368        if(!$s) return "";
369        $s=_T("couteauprive:outils_".(%s?"desactives":"concernes")).$s;
370        return "<q1><q3>$s</q3></q1>";
371}',
372));
373add_outil( array(
374        'id' => 'cs_comportement',
375        'code:spip_options' => "%%distant_off%% %%distant_outils_off%%",
376        'pipelinecode:pre_description_outil' => 'if($id=="cs_comportement") {
377$tmp=(!%%spip_options_on%%||!$flux["actif"]||defined("_CS_SPIP_OPTIONS_OK"))?"":"<span style=\"color:red\">"._T("couteauprive:cs_spip_options_erreur")."</span>";
378$texte=str_replace(array("@_CS_FILE_OPTIONS_ERR@","@_CS_DIR_TMP@","@_CS_FILE_OPTIONS@"),
379        array($tmp,cs_canonicalize(_DIR_RESTREINT_ABS._DIR_TMP),show_file_options()),$texte);
380}',
381));
382
383
384add_outil( array(
385        'id' => 'xml',
386        'code:options' => "\$GLOBALS['xhtml']='sax';",
387        'auteur' => 'Ma&iuml;eul Rouquette',
388        'categorie' =>'public',
389        'version-min' => '1.9200',
390));
391
392add_outil( array(
393        'id' => 'f_jQuery',
394        'code:spip_options' => "\$GLOBALS['spip_pipeline']['insert_head'] = str_replace('|f_jQuery', '', \$GLOBALS['spip_pipeline']['insert_head']);",
395        'auteur' => 'Fil',
396        'categorie' =>'public',
397        'version-min' => '1.9200',
398));
399
400add_variables( array(
401        'nom' => 'prive_travaux',
402        'format' => _format_NOMBRE,
403        'radio' => array(0 => 'couteauprive:tous', 1 => 'couteauprive:admins_seuls'),
404        'defaut' => 0,
405        'code:%s' => "define('_en_travaux_PRIVE', %s);\n",
406), array(
407        'nom' => 'admin_travaux',
408        'format' => _format_NOMBRE,
409        'radio' => array(0 => 'couteauprive:tous', 1 => 'couteauprive:sauf_admin', 2 => 'couteauprive:sauf_admin_redac', 3 => 'couteauprive:sauf_identifies'),
410        'radio/ligne' => 1,
411        'defaut' => 0,
412        'code' => "define('_en_travaux_PUBLIC', %s);\n",
413), array(
414        'nom' => 'avertir_travaux',
415        'check' => 'couteauprive:travaux_masquer_avert',
416        'defaut' => 0,
417        'code:%s' => "define('_en_travaux_SANSMSG', %s);\n",
418), array(
419        'nom' => 'message_travaux',
420        'format' => _format_CHAINE,
421        'defaut' => "_T('couteauprive:travaux_prochainement')",
422        'lignes' => 3,
423        'code' => "\$tr_message=%s;\n",
424), array(
425        'nom' => 'titre_travaux',
426        'format' => _format_NOMBRE,
427        'radio' => array(1 => 'couteauprive:travaux_titre', 0 => 'couteauprive:travaux_nom_site'),
428        'defaut' => 1,
429        'code:%s' => "define('_en_travaux_TITRE', %s);",
430));
431add_outil( array(
432        'id' => 'en_travaux',
433        'code:options' => "%%message_travaux%%%%prive_travaux%%%%admin_travaux%%%%avertir_travaux%%%%titre_travaux%%",
434        'categorie' => 'admin',
435        'auteur' => "Arnaud Ventre pour l'id&eacute;e originale",
436        'pipeline:affichage_final' => 'en_travaux_affichage_final',
437        'pipelinecode:pre_description_outil' => 'if($id=="en_travaux") $texte=str_replace(array("@_CS_TRAVAUX_TITRE@","@_CS_NOM_SITE@"),
438        array("["._T("info_travaux_titre")."]","[".$GLOBALS["meta"]["nom_site"]."]"),$texte);',
439));
440
441add_variables( array(
442        'nom' => 'bp_tri_auteurs',
443        'check' => 'couteauprive:bp_tri_auteurs',
444        'defaut' => 1,
445        'code:%s' => "define('boites_privees_TRI_AUTEURS', %s);\n",
446), array(
447        'nom' => 'bp_urls_propres',
448        'check' => 'couteauprive:bp_urls_propres',
449        'defaut' => 1,
450        'code:%s' => "define('boites_privees_URLS_PROPRES', %s);\n",
451), array(
452        'nom' => 'cs_rss',
453        'check' => 'couteauprive:rss_var',
454        'defaut' => 1,
455        'code:%s' => "define('boites_privees_CS', %s);\n",
456), array(
457        'nom' => 'format_spip',
458        'check' => 'couteauprive:format_spip',
459        'defaut' => 1,
460        'code:%s' => "define('boites_privees_ARTICLES', %s);\n",
461), array(
462        'nom' => 'stat_auteurs',
463        'check' => 'couteauprive:stat_auteurs',
464        'defaut' => 1,
465        'code:%s' => "define('boites_privees_AUTEURS', %s);\n",
466), array(
467        'nom' => 'qui_webmasters',
468        'check' => 'couteauprive:qui_webmestres',
469        'defaut' => 1,
470        'code:%s' => "define('boites_privees_WEBMASTERS', %s);\n",
471));
472add_outil( array(
473        'id' => 'boites_privees',
474        'auteur'=>'Pat, Joseph LARMARANGE (format SPIP)',
475        'contrib' => 2564,
476        'code:options' => "%%cs_rss%%%%format_spip%%%%stat_auteurs%%%%qui_webmasters%%%%bp_urls_propres%%%%bp_tri_auteurs%%",
477        'categorie' => 'interface',
478        'pipeline:affiche_milieu' => 'boites_privees_affiche_milieu',
479        'pipeline:affiche_droite' => 'boites_privees_affiche_droite',
480        'pipeline:affiche_gauche' => 'boites_privees_affiche_gauche',
481        // Pour la constante _CS_RSS_SOURCE
482#       'pipelinecode:pre_description_outil' => 'if($id=="boites_privees") include_spip("cout_define");',
483));
484
485add_variables( array(
486        'nom' => 'max_auteurs_page',
487        'format' => _format_NOMBRE,
488        'defaut' => 30,
489        'code:%s' => "@define('MAX_AUTEURS_PAR_PAGE', %s);\n",
490), array(
491        'nom' => 'auteurs_0',   'check' => 'info_administrateurs',      'defaut' => 1,  'code:%s' => "'0minirezo',",
492), array(
493        'nom' => 'auteurs_1',   'check' => 'info_redacteurs',   'defaut' => 1,  'code:%s' => "'1comite',",
494), array(
495        'nom' => 'auteurs_5',   'check' => 'info_statut_site_4',        'defaut' => 1,  'code:%s' => "'5poubelle',",
496), array(
497        'nom' => 'auteurs_6',   'check' => 'info_visiteurs',    'defaut' => 0,  'code:%s' => "'6forum',",
498), array(
499        'nom' => 'auteurs_n',   'check' => 'couteauprive:nouveaux',     'defaut' => 0,  'code:%s' => "'nouveau',",
500), array(
501        'nom' => 'auteurs_tout_voir',
502        'format' => _format_NOMBRE,
503        'radio' => array(1 => 'couteauprive:statuts_tous', 0 => 'couteauprive:statuts_spip'),
504        'radio/ligne' => 1,
505        'defaut' => 0,
506        'label' => '@_CS_CHOIX@',
507//      'code:!%s' => "@define('AUTEURS_DEFAUT', join(\$temp_auteurs,','));",
508        'code:!%s' => "if(_request('exec')=='auteurs' && !_request('statut')) \$_GET['statut'] = join(\$temp_auteurs,',');",
509        'code:%s' => "if(_request('exec')=='auteurs' && !_request('statut')) \$_GET['statut'] = '!foo';",
510));
511add_outil( array(
512        'id' => 'auteurs',
513        'code:options' => "%%max_auteurs_page%%\$temp_auteurs=array(%%auteurs_0%%%%auteurs_1%%%%auteurs_5%%%%auteurs_6%%%%auteurs_n%%); %%auteurs_tout_voir%% unset(\$temp_auteurs);",
514        'categorie' => 'interface',
515        'version-min' => '1.9300',
516//      'pipeline:affiche_milieu' => 'auteurs_affiche_milieu',
517));
518
519//-----------------------------------------------------------------------------//
520//                               fonctions                                     //
521//-----------------------------------------------------------------------------//
522
523add_outil( array(
524        'id' => 'verstexte',
525        'auteur' => 'C&eacute;dric MORIN',
526        'categorie' => 'spip',
527));
528
529add_outil( array(
530        'id' => 'orientation',
531        'auteur'         => 'Pierre Andrews (Mortimer) &amp; IZO',
532        'categorie' => 'spip',
533));
534
535add_variable( array(
536        'nom' => 'balise_decoupe',
537        'format' => _format_NOMBRE,
538        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
539        'defaut' => 0,
540        'code:%s' => "define('_decoupe_BALISE', %s);\n",
541));
542add_outil( array(
543        'id' => 'decoupe',
544        'contrib'       => 2135,
545        // Le separateur <span class="csfoo xxxx"></span> est supprime en fin de calcul de page
546        'code:options' => "%%balise_decoupe%%define('_onglets_FIN', '<span class=\"csfoo ongl\"></span>');\n@define('_decoupe_SEPARATEUR', '++++');
547if(!defined('_SPIP19300') && isset(\$_GET['var_recherche'])) {
548        include_spip('inc/headers');
549        redirige_par_entete(str_replace('var_recherche=', 'decoupe_recherche=', \$GLOBALS['REQUEST_URI']));
550}",
551        'code:css' => "div.pagination {display:block; text-align:center; }
552div.pagination img { border:0pt none; margin:0pt; padding:0pt; }
553span.cs_pagination_off {color: lightgrey; font-weight: bold; text-decoration: underline;} ",
554        // construction des onglets
555        'code:jq_init' => "onglets_init.apply(this);",
556        // pour les balises #TEXTE : $table_des_traitements['TEXTE'] = 'cs_decoupe(propre(%s))';
557        // pour les articles, breves et rubriques : $table_des_traitements['TEXTE']['articles'] = 'cs_decoupe(propre(%s))';
558        'traitement:TEXTE:post_propre,
559         traitement:TEXTE/articles:post_propre,
560         traitement:TEXTE/breves:post_propre,
561         traitement:TEXTE/rubriques:post_propre' => 'cs_decoupe',
562        // pour les balises #TEXTE : $table_des_traitements['TEXTE'] = 'propre(cs_onglets(%s))';
563        // pour les articles, breves et rubriques : $table_des_traitements['TEXTE']['articles'] = 'propre(cs_onglets(%s))';
564        'traitement:TEXTE:pre_propre,
565         traitement:TEXTE/articles:pre_propre,
566         traitement:TEXTE/breves:pre_propre,
567         traitement:TEXTE/rubriques:pre_propre' => 'cs_onglets',
568        'categorie' => 'typo-racc',
569        'pipeline:nettoyer_raccourcis_typo' => 'decoupe_nettoyer_raccourcis',
570        'pipeline:porte_plume_cs_pre_charger' => 'decoupe_CS_pre_charger',
571        'pipeline:porte_plume_lien_classe_vers_icone' => 'decoupe_PP_icones',
572));
573
574// couplage avec l'outil 'decoupe', donc 'sommaire' doit etre place juste apres :
575// il faut inserer le sommaire dans l'article et ensuite seulement choisir la page
576add_variables( array(
577        'nom' => 'prof_sommaire',
578        'format' => _format_NOMBRE,
579        'defaut' => 1,
580        'code:%s>=2 && %s<=4' => "define('_sommaire_PROFONDEUR', %s);\n",
581), array(
582        'nom' => 'lgr_sommaire',
583        'format' => _format_NOMBRE,
584        'defaut' => 30,
585        'code:%s>=9 && %s<=99' => "define('_sommaire_NB_CARACTERES', %s);\n",
586), array(
587        'nom' => 'auto_sommaire',
588        'format' => _format_NOMBRE,
589        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
590        'defaut' => 1,
591        'code:%s' => "define('_sommaire_AUTOMATIQUE', %s);\n",
592), array(
593        'nom' => 'jolies_ancres',
594        'format' => _format_NOMBRE,
595        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
596        'defaut' => 0,
597        'code:%s' => "define('_sommaire_JOLIES_ANCRES', %s);\n",
598), array(
599        'nom' => 'balise_sommaire',
600        'format' => _format_NOMBRE,
601        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
602        'defaut' => 0,
603        'code:%s' => "define('_sommaire_BALISE', %s);",
604));
605include_spip('inc/filtres');
606add_outil( array(
607        'id' => 'sommaire',
608        'contrib'       => 2378,
609        // Le separateur <span class="csfoo xxxx"></span> est supprime en fin de calcul de page
610        'code:options' => "define('_sommaire_REM', '<span class=\"csfoo somm\"></span>');\ndefine('_CS_SANS_SOMMAIRE', '[!sommaire]');\ndefine('_CS_AVEC_SOMMAIRE', '[sommaire]');\n%%prof_sommaire%%%%lgr_sommaire%%%%auto_sommaire%%%%jolies_ancres%%%%balise_sommaire%%",
611        'code:jq' => 'if(jQuery("div.cs_sommaire").length) {
612                // s\'il y a un sommaire, on cache la navigation haute sur les pages
613                jQuery("div.decoupe_haut").css("display", "none");
614                // utilisation des cookies pour conserver l\'etat du sommaire si on quitte la page
615                if(cs_CookiePlugin) jQuery.getScript(cs_CookiePlugin, cs_sommaire_cookie);
616        }',
617        'code:jq_init' => 'cs_sommaire_init.apply(this);',
618        // inserer : $table_des_traitements['TEXTE']['articles']= 'sommaire_d_article(propre(%s))';
619        // idem pour les breves et les rubriques
620        'traitement:TEXTE/articles:post_propre,
621         traitement:TEXTE/breves:post_propre,
622         traitement:TEXTE/rubriques:post_propre' => 'sommaire_d_article',
623        'traitement:CS_SOMMAIRE:post_propre' => 'sommaire_d_article_balise',
624        'categorie' => 'typo-corr',
625        'pipeline:nettoyer_raccourcis_typo' => 'sommaire_nettoyer_raccourcis',
626        'pipeline:pre_description_outil' => 'sommaire_description_outil',
627        'pipeline:pre_propre' => 'sommaire_intertitres',
628));
629
630// intertitres typo, outil compatible avec 'sommaire' :
631add_variables( array(
632        'nom' => 'i_align',
633        'radio' => array('left' => 'left', 'right' => 'right', 'center' => 'center'),
634        'defaut' => "'left'",
635), array(
636        'nom' => 'i_padding',
637        'format' => _format_NOMBRE,
638        'defaut' => 0,
639), array(
640        'nom' => 'i_hauteur',
641        'format' => _format_NOMBRE,
642        'defaut' => 0,
643), array(
644        'nom' => 'i_largeur',
645        'format' => _format_NOMBRE,
646        'defaut' => 600,
647), array(
648        'nom' => 'i_taille',
649        'format' => _format_NOMBRE,
650        'defaut' => 16,
651), array(
652        'nom' => 'i_couleur',
653        'defaut' => "'black'",
654), array(
655        'nom' => 'i_police',
656        'defaut' => "'dustismo.ttf'",
657));
658add_outil( array(
659        'id' => 'titres_typo',
660        'categorie'   => 'typo-corr',
661        'code:options' => 'define("_titres_typo_ARG", "couleur=%%i_couleur%%,taille=%%i_taille%%,police=%%i_police%%,largeur=%%i_largeur%%,hauteur_ligne=%%i_hauteur%%,padding=%%i_padding%%,align=%%i_align%%");',
662        'pipeline:pre_typo'   => 'titres_typo_pre_typo',
663        'pipelinecode:pre_description_outil' => 'if($id=="titres_typo")
664                $texte=str_replace("@_CS_FONTS@",join(" - ",get_liste_fonts()),$texte);',       
665));
666
667//-----------------------------------------------------------------------------//
668//                               PUBLIC                                        //
669//-----------------------------------------------------------------------------//
670
671// TODO : gestion du jQuery dans la fonction a revoir ?
672add_outil( array(
673        'id' => 'desactiver_flash',
674        'auteur'         => 'C&eacute;dric MORIN',
675        'categorie'      => 'public',
676        'jquery'        => 'oui',
677        // fonction InhibeFlash_init() codee dans desactiver_flash.js : executee lors du chargement de la page et a chaque hit ajax
678        'code:jq_init' => 'InhibeFlash_init.apply(this);',
679));
680
681add_variables( array(
682        'nom' => 'radio_target_blank3',
683        'format' => _format_NOMBRE,
684        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
685        'defaut' => 0,
686        'code' => '$GLOBALS["tweak_target_blank"]=%s;',
687), array(
688        'nom' => 'url_glossaire_externe2',
689        'format' => _format_CHAINE,
690        'defaut' => '""',
691        'code:strlen(%s)' => '$GLOBALS["url_glossaire_externe"]=%s;',
692), array(
693        'nom' => 'enveloppe_mails',
694        'format' => _format_NOMBRE,
695        'radio' => array(1 => 'item_oui', 0 => 'item_non', -1 => 'couteauprive:par_defaut'),
696        'defaut' => -1,
697        // Code pour le CSS
698        'code:%s>0' => 'a.spip_mail:before{content:"\002709" !important;}',
699        'code:%s===0' => 'a.spip_mail:before{content:"" !important;}',
700));
701add_outil( array(
702        'id' => 'SPIP_liens',
703        'categorie' => 'public',
704        'contrib'       => 2443,
705        'jquery'        => 'oui',
706        'description' => '<:SPIP_liens::>'.(defined('_SPIP19300')?'<:SPIP_liens:1:>':''),
707        'code:options' => "%%radio_target_blank3%%\n%%url_glossaire_externe2%%",
708        'code:jq_init' => 'if(%%radio_target_blank3%%) { if(!cs_prive) jQuery("a.spip_out,a.spip_url,a.spip_glossaire",this).attr("target", "_blank"); }',
709        'code:css' => defined('_SPIP19300')?'[[%enveloppe_mails%]]':NULL,
710));
711
712//-----------------------------------------------------------------------------//
713//                               NOISETTES                                     //
714//-----------------------------------------------------------------------------//
715
716add_outil( array(
717        'id' => 'visiteurs_connectes',
718        'auteur' => "Phil d'apr&egrave;s spip-contrib",
719        'categorie' => 'public',
720        'contrib'       => 3412,
721        'code:options' => "
722function cs_compter_visiteurs(){ return count(preg_files(_DIR_TMP.'visites/','.')); }
723function action_visiteurs_connectes(){ echo cs_compter_visiteurs(); return true; }",
724        'version-min' => '1.9200', // pour la balise #ARRAY
725        //      une mise a jour toutes les 120 sec ?
726/*      'code:js' => 'function Timer_visiteurs_connectes(){
727                jQuery("span.cs_nb_visiteurs").load("spip.php?action=visiteurs_connectes");
728                setTimeout("Timer_visiteurs_connectes()",120000);                                       
729}',
730        'code:jq' => ' if(jQuery("span.cs_nb_visiteurs").length) Timer_visiteurs_connectes(); ',
731        'jquery' => 'oui',*/
732));
733
734//-----------------------------------------------------------------------------//
735//                               TYPO                                          //
736//-----------------------------------------------------------------------------//
737
738add_outil( array(
739        'id' => 'toutmulti',
740        'categorie'      => 'typo-racc',
741        'pipeline:pre_typo' => 'ToutMulti_pre_typo',
742));
743
744add_variable( array(    // variable utilisee par 'pipelinecode:insert_head'
745        'nom' => 'puceSPIP',
746        'check' => 'couteauprive:puceSPIP',
747        'defaut' => 0,
748        'label' => '@_CS_CHOIX@',
749));
750add_outil( array(
751        'id' => 'pucesli',
752        'auteur'         => "J&eacute;r&ocirc;me Combaz pour l'id&eacute;e originale",
753        'categorie'      => 'typo-corr',
754        'pipelinecode:pre_typo' => 'if(strpos($flux, "-")!==false OR strpos($flux, "*")!==false) $flux = cs_echappe_balises("", "pucesli_remplace", $flux);',
755        'code:options' => 'function pucesli_remplace($texte) {
756        if(%%puceSPIP%%) {$texte = preg_replace(\'/^[*]\s*/m\', \'- \', $texte);}
757        return preg_replace(\'/^-\s*(?![-*#])/m\', \'-* \', $texte);
758}
759if(%%puceSPIP%%) {function pucesli_raccourcis() {return _T(\'couteauprive:puceSPIP_aide\');}}',
760));
761
762add_outil( array(
763    'id' => 'citations_bb',
764    'auteur'    => 'Bertrand Marne, Romy T&ecirc;tue',
765    'categorie' => 'typo-corr',
766        'code:css'      => '/* fr */
767        q:lang(fr):before { content: "\00AB\A0"; }
768        q:lang(fr):after { content: "\A0\00BB"; }
769        q:lang(fr) q:before { content: "\201C"; }
770        q:lang(fr) q:after { content: "\201D"; }
771        q:lang(fr) q q:before { content: "\2018"; }
772        q:lang(fr) q q:after { content: "\2019"; }
773        /* IE */
774        * html q { font-style: italic; }
775        *+html q { font-style: italic; }', 
776    'pipelinecode:pre_propre' => 'if(strpos($flux, "<qu")!==false) $flux=cs_echappe_balises("", "citations_bb_rempl", $flux);',
777        // Remplacer <quote> par <q> quand il n'y a pas de retour a la ligne (3 niveaux, preg sans l'option s)
778    'code:options' => 'function citations_bb_rempl($texte){
779        $texte = preg_replace($a="/<quote>(.*?)<\/quote>/", $b="<q>\$1</q>", $texte);
780        if(strpos($texte, "<qu")!==false) {
781                $texte = preg_replace($a, $b, $texte);
782                if(strpos($texte, "<qu")!==false) $texte = preg_replace($a, $b, $texte);
783        }
784        return $texte;
785}',
786)); 
787
788add_variable( array(
789        'nom' => 'decoration_styles',
790        'format' => _format_CHAINE,
791        'lignes' => 8,
792        'defaut' => '"span.sc = font-variant:small-caps;
793span.souligne = text-decoration:underline;
794span.barre = text-decoration:line-through;
795span.dessus = text-decoration:overline;
796span.clignote = text-decoration:blink;
797span.surfluo = background-color:#ffff00; padding:0px 2px;
798span.surgris = background-color:#EAEAEC; padding:0px 2px;
799fluo = surfluo"',
800        'code' => "define('_decoration_BALISES', %s);",
801));
802add_outil( array(
803        'id' => 'decoration',
804        'auteur'         => 'izo@aucuneid.net, Pat',
805        'contrib'       => 2427,
806        'categorie'      => 'typo-racc',
807        'code:options' => "%%decoration_styles%%",
808        'pipeline:pre_typo' => 'decoration_pre_typo',
809        'pipeline:bt_toolbox' => 'decoration_BarreTypo',
810        'pipeline:porte_plume_barre_pre_charger' => 'decoration_PP_pre_charger',
811        'pipeline:porte_plume_lien_classe_vers_icone' => 'decoration_PP_icones',
812));
813
814add_variables( array(
815        'nom' => 'couleurs_fonds',
816        'format' => _format_NOMBRE,
817        'radio' => array(1 => 'item_oui', 0 => 'item_non' ),
818        'defaut' => 1,
819        'code' => "define('_COULEURS_FONDS', %s);\n",
820), array(
821        'nom' => 'set_couleurs',
822        'format' => _format_NOMBRE,
823        'radio' => array(0 => 'couteauprive:toutes_couleurs', 1 => 'couteauprive:certaines_couleurs'),
824        'radio/ligne' => 1,
825        'defaut' => 0,
826        'code' => "define('_COULEURS_SET', %s);\n",
827), array(
828        'nom' => 'couleurs_perso',
829        'format' => _format_CHAINE,
830        'lignes' => 3,
831        'defaut' => '"gris, rouge"',
832        'code' => "define('_COULEURS_PERSO', %s);",
833));
834add_outil( array(
835        'id' => 'couleurs',
836        'auteur'         => 'Aur&eacute;lien PIERARD (id&eacute;e originale), Pat',
837        'categorie'      => 'typo-racc',
838        'contrib'       => 2427,
839        'pipeline:pre_typo' => 'couleurs_pre_typo',
840        'pipeline:nettoyer_raccourcis_typo' => 'couleurs_nettoyer_raccourcis',
841        'pipeline:bt_toolbox' => 'couleurs_BarreTypo',
842        'pipeline:porte_plume_barre_pre_charger' => 'couleurs_PP_pre_charger',
843        'pipeline:porte_plume_lien_classe_vers_icone' => 'couleurs_PP_icones',
844        'pipeline:pre_description_outil' => 'couleurs_pre_description_outil',
845        'code:options' => "%%couleurs_fonds%%%%set_couleurs%%%%couleurs_perso%%",
846        'code:fonctions' => "// aide le Couteau Suisse a calculer la balise #INTRODUCTION
847include_spip('outils/couleurs');
848\$GLOBALS['cs_introduire'][] = 'couleurs_nettoyer_raccourcis';
849",
850));
851
852// outil essentiellement français. D'autres langues peuvent etre ajoutees dans outils/typo_exposants.php
853add_variable( array(
854        'nom' => 'expo_bofbof',
855        'format' => _format_NOMBRE,
856        'radio' => array(1 => 'item_oui', 0 => 'item_non' ),
857        'defaut' => 0,
858        'code:%s' => "define('_CS_EXPO_BOFBOF', %s);",
859));
860add_outil( array(
861        'id' => 'typo_exposants',
862        'auteur'         => 'Vincent Ramos, Pat',
863        'categorie'      => 'typo-corr',
864        'contrib'       => 1564,
865        'code:options' => '%%expo_bofbof%%',
866        'pipeline:post_typo' => 'typo_exposants',
867        'code:css' => 'sup.typo_exposants { font-size:75%; font-variant:normal; vertical-align:super; }',
868));
869
870add_outil( array(
871        'id' => 'guillemets',
872        'auteur'         => 'Vincent Ramos',
873        'categorie'      => 'typo-corr',
874        'pipeline:post_typo' => 'typo_guillemets',
875));
876
877add_variables( array(
878        'nom' => 'liens_interrogation',
879        'format' => _format_NOMBRE,
880        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
881        'defaut' => 1,
882        'code:%s' => "\$GLOBALS['liens_interrogation']=true;\n",
883), array(
884        'nom' => 'liens_orphelins',
885        'format' => _format_NOMBRE,
886        'radio' => array(-1 => 'item_non', 0 => 'couteauprive:basique', 1 => 'couteauprive:etendu', -2 => 'couteauprive:par_defaut'),
887        'defaut' => 0,
888        'code' => '$GLOBALS["liens_orphelins"]=%s;',
889                // empeche SPIP de convertir les URLs orphelines (URLs brutes)
890        'code:%s<>-2' => defined('_SPIP19300')?"\n\$GLOBALS['spip_pipeline']['pre_liens']=str_replace('|traiter_raccourci_liens','',\$GLOBALS['spip_pipeline']['pre_liens']);
891@define('_EXTRAIRE_LIENS',',^\$,');":'',
892));
893// attention : liens_orphelins doit etre place avant mailcrypt ou liens_en_clair
894add_outil( array(
895        'id' => 'liens_orphelins',
896        'categorie'      => 'typo-corr',
897        'contrib'       => 2443,
898        'code:options' => '%%liens_interrogation%%',
899        'code:spip_options' => '%%liens_orphelins%%',
900        'pipeline:pre_propre' => 'liens_orphelins_pipeline',
901        'traitement:EMAIL' => 'expanser_liens(liens_orphelins',
902        'pipeline:pre_typo'   => 'interro_pre_typo',
903        'pipeline:post_propre'   => 'interro_post_propre',
904));
905
906add_outil( array(
907        'id' => 'filets_sep',
908        'auteur'         => 'FredoMkb',
909        'categorie'      => 'typo-racc',
910        'contrib'       => 1563,
911        'pipeline:pre_typo' => 'filets_sep',
912        'pipeline:bt_toolbox' => 'filets_sep_BarreTypo',
913        'pipeline:porte_plume_barre_pre_charger' => 'filets_PP_pre_charger',
914        'pipeline:porte_plume_lien_classe_vers_icone' => 'filets_PP_icones',
915));
916
917add_outil( array(
918        'id' => 'smileys',
919        'auteur'         => "Sylvain, Pat",
920        'categorie'      => 'typo-corr',
921        'contrib'       => 1561,
922        'code:css' => "table.cs_smileys td {text-align:center; font-size:90%; font-weight:bold;}",
923        'pipeline:pre_typo' => 'cs_smileys_pre_typo',
924        'pipeline:bt_toolbox' => 'cs_smileys_BarreTypo',
925        'pipeline:porte_plume_barre_pre_charger' => 'cs_smileys_PP_pre_charger',
926        'pipeline:porte_plume_lien_classe_vers_icone' => 'cs_smileys_PP_icones',
927));
928
929add_outil( array(
930        'id' => 'chatons',
931        'auteur'         => "BoOz, Pat",
932        'categorie'      => 'typo-racc',
933        'pipeline:pre_typo' => 'chatons_pre_typo',
934        'pipeline:bt_toolbox' => 'chatons_BarreTypo',
935        'pipeline:porte_plume_barre_pre_charger' => 'chatons_PP_pre_charger',
936        'pipeline:porte_plume_lien_classe_vers_icone' => 'chatons_PP_icones',
937));
938
939add_variables( array(
940        'nom' => 'glossaire_groupes',
941        'format' => _format_CHAINE,
942        'defaut' => "'Glossaire'",
943        'code' => "\$GLOBALS['glossaire_groupes']=%s;\n",
944        'commentaire' => defined('_SPIP19300')?'fct_glossaire_groupes(%s);
945function fct_glossaire_groupes($gr){
946        $s="";
947        foreach(explode(":",$gr) as $g)
948                if(!sql_countsel("spip_groupes_mots", "titre="._q($g))) $s.=($s?"<br />":"")._T("couteauprive:erreur_groupe", array("groupe"=>$g));
949        return $s?"<p style=\"color:red\">$s</p>":"";
950}':NULL,
951), array(
952        'nom' => 'glossaire_limite',
953        'format' => _format_NOMBRE,
954        'defaut' => 0,
955        'code:%s>0' => "define('_GLOSSAIRE_LIMITE', %s);\n",
956), array(
957        'nom' => 'glossaire_js',
958        'radio' => array(0 => 'couteauprive:glossaire_css', 1 => 'couteauprive:glossaire_js'),
959        'format' => _format_NOMBRE,
960        'defaut' => 1,
961        'code:%s' => "define('_GLOSSAIRE_JS', %s);",
962));
963add_outil( array(
964        'id' => 'glossaire',
965        'categorie'     => 'typo-corr',
966        'contrib'       => 2206,
967        'code:options' => "@define('_CS_SANS_GLOSSAIRE', '[!glossaire]');\n%%glossaire_limite%%%%glossaire_groupes%%%%glossaire_js%%",
968//      'traitement:LIEU:post_propre' => 'cs_glossaire',
969        // sans oublier les articles, les breves et les rubriques :
970        // SPIP ne considere pas que la definition precedente est un tronc commun...
971        // meme traitement au chapo des articles...
972        'traitement:TEXTE:post_propre,
973         traitement:TEXTE/articles:post_propre,
974         traitement:TEXTE/breves:post_propre,
975         traitement:TEXTE/rubriques:post_propre,
976         traitement:CHAPO:post_propre' => 'cs_glossaire',
977        // Precaution pour les articles virtuels
978        'traitement:CHAPO:pre_propre' => 'nettoyer_chapo',
979        // Mise en forme des titres
980        'traitement:TITRE/mots:post_typo' => 'cs_glossaire_titres',
981        'code:css' =>  'a.cs_glossaire:after {display:none;}',
982        // fonction glossaire_init() codee dans glossaire.js : executee lors du chargement de la page et a chaque hit ajax
983        'code:jq_init' => 'glossaire_init.apply(this);',
984        'pipelinecode:nettoyer_raccourcis_typo' => '$flux=str_replace(_CS_SANS_GLOSSAIRE, "", $flux);',
985));
986
987// attention : mailcrypt doit etre place apres liens_orphelins
988add_outil( array(
989        'id' => 'mailcrypt',
990        'categorie'     => 'typo-corr',
991        'auteur'        => "Alexis Roussel, Paolo, Pat",
992        'contrib'       => 2443,
993        'jquery'        => 'oui',
994        'pipelinecode:post_propre' => "if(strpos(\$flux, '@')!==false) \$flux=cs_echappe_balises('', 'mailcrypt', \$flux);",
995        'code:js' => "function lancerlien(a,b){ x='ma'+'ilto'+':'+a+'@'+b; return x; }",
996        // jQuery pour remplacer l'arobase image par l'arobase texte
997        // ... puis arranger un peu le title qui a ete protege
998        'code:jq_init' => "jQuery('span.spancrypt', this).attr('class','cryptOK').html('&#6'+'4;');
999        jQuery(\"a[\"+cs_sel_jQuery+\"title*='..']\", this).each(function () {
1000                this.title = this.title.replace(/\.\..t\.\./,'[@]');
1001        });",
1002        'code:css' => 'span.spancrypt {background:transparent url(' . url_absolue(find_in_path('img/mailcrypt/leure.gif'))
1003                . ') no-repeat scroll 0.1em center; padding-left:12px; text-decoration:none;}',
1004        'traitement:EMAIL' => 'mailcrypt',
1005)); 
1006
1007
1008// attention : liens_en_clair doit etre place apres tous les outils traitant des liens
1009add_outil( array(
1010        'id' => 'liens_en_clair',
1011        'categorie'      => 'spip',
1012        'contrib'       => 2443,
1013        'pipeline:post_propre' => 'liens_en_clair_post_propre',
1014        'code:css' => 'a.spip_out:after {display:none;}',
1015)); 
1016
1017add_variables( array(   // variable utilisee par 'pipelinecode:insert_head'
1018        'nom' => 'scrollTo',
1019        'check' => 'couteauprive:jq_scrollTo',
1020        'defaut' => 1,
1021        'format' => _format_NOMBRE,
1022), array(       // variable utilisee par 'pipelinecode:insert_head'
1023        'nom' => 'LocalScroll',
1024        'check' => 'couteauprive:jq_localScroll',
1025        'defaut' => 1,
1026        'format' => _format_NOMBRE,
1027));
1028add_outil( array(
1029        'id' => 'soft_scroller',
1030        'categorie'     => 'public',
1031        'jquery'        => 'oui',
1032        'pipelinecode:insert_head' => 'if(%%scrollTo%%) {$flux.=\'<script src="\'.find_in_path("outils/jquery.scrollto.js").\'" type="text/javascript"></script>\'."\n";}
1033if(%%LocalScroll%%) {$flux.=\'<script src="\'.find_in_path("outils/jquery.localscroll.js").\'" type="text/javascript"></script>\'."\n";}',
1034        'code:js' => 'function soft_scroller_init() { if(typeof jQuery.localScroll=="function") jQuery.localScroll({hash: true}); }',
1035        'code:jq_init' => 'soft_scroller_init.apply(this);',
1036));
1037
1038// http://www.malsup.com/jquery/corner/
1039add_variables( array(
1040        'nom' => 'jcorner_classes',
1041        'format' => _format_CHAINE,
1042        'lignes' => 10,
1043        'defaut' => defined('_SPIP19300')?'"// coins ronds aux formulaires
1044.formulaire_inscription, .formulaire_forum, .formulaire_ecrire_auteur
1045
1046// colorisation de la dist de SPIP 2.0 en ajoutant un parent
1047\".chapo, .texte\" = wrap(\'<div class=\"jc_parent\" style=\"padding:4px; background-color:#ffe0c0; margin:4px 0;\"><\/div>\')
1048\".menu\" = wrap(\'<div class=\"jc_parent\" style=\"padding:4px; background-color:lightBlue; margin:4px 0;\"><\/div>\')
1049
1050// coins ronds aux parents !
1051.jc_parent"'
1052                :'" // coins ronds pour les menus de navigation
1053.rubriques, .breves, .syndic, .forums, .divers
1054
1055 // en couleurs sur l\'accueil
1056.liste-articles li .texte = css(\'background-color\', \'#E0F0F0\') .corner()
1057
1058// colorisation de la dist de SPIP 1.92 en ajoutant un parent
1059\"#contenu .texte\" = wrap(\'<div class=\"jc_parent\" style=\"padding:4px; background-color:#E0F0F0; margin:4px 0;\"><\/div>\')
1060
1061// coins ronds aux parents !
1062.jc_parent"',
1063        'code' => "define('_jcorner_CLASSES', %s);",
1064), array(       // variable utilisee par 'pipelinecode:insert_head'
1065        'nom' => 'jcorner_plugin',
1066        'check' => 'couteauprive:jcorner_plugin',
1067        'defaut' => 1,
1068        'format' => _format_NOMBRE,
1069));
1070add_outil( array(
1071        'id' => 'jcorner',
1072        'categorie'     => 'public',
1073        'jquery'        => 'oui',
1074        'contrib'       => 2987,
1075        'code:options' => "%%jcorner_classes%%",
1076        // fichier distant pour le plugin jQuery : http://github.com/malsup/corner/commits/
1077        'distant' => defined('_SPIP20100')
1078                // version 2.09 (11-MAR-2010), jQuery v1.3.2 mini
1079                ?'http://github.com/malsup/corner/raw/ca8d745fdfe054e1bb62fbd22eca9850c1353e03/jquery.corner.js'
1080                // version 2.03 (05-DEC-2009)
1081                :'http://github.com/malsup/corner/raw/46bbbc8706853c879c9224b7ebf5f284f726314d/jquery.corner.js',
1082        'pipelinecode:insert_head' => 'if(%%jcorner_plugin%%) {$flux.=\'<script src="\'.find_in_path("lib/jcorner/distant_jquery.corner.js").\'" type="text/javascript"></script>\'."\n";}',
1083        'pipeline:insert_head' => 'jcorner_insert_head',
1084        // jcorner_init() n'est disponible qu'en partie publique
1085        'code:jq_init' => 'if(typeof jcorner_init=="function") jcorner_init.apply(this);',
1086));
1087
1088add_variables( array(
1089        'nom' => 'insertions',
1090        'format' => _format_CHAINE,
1091        'lignes' => 10,
1092        'defaut' => '"oeuf = &oelig;uf
1093cceuil = ccueil
1094(a priori) = {a priori}
1095(([hH])uits) = $1uit
1096/([cC]h?)oeur/ = $1&oelig;ur
1097/oeuvre/ = &oelig;uvre
1098(O[Ee]uvre([rs]?)) = &OElig;uvre$1
1099/\b([cC]|[mM].c|[rR]ec)on+ais+a((?:n(?:ce|te?)|ble)s?)\b/ = $1onnaissa$2
1100"',
1101        'code' => "define('_insertions_LISTE', %s);",
1102));
1103add_outil( array(
1104        'id' => 'insertions',
1105        'categorie'      => 'typo-corr',
1106        'code:options' => "%%insertions%%",
1107        'traitement:TEXTE:pre_propre' => 'insertions_pre_propre',
1108        // sans oublier les articles, les breves et les rubriques :
1109        // SPIP ne considere pas que la definition precedente est un tronc commun...
1110        'traitement:TEXTE/articles:pre_propre,
1111         traitement:TEXTE/breves:pre_propre,
1112         traitement:TEXTE/rubriques:pre_propre' => 'insertions_pre_propre',
1113));
1114
1115// le plugin moderation moderee dans le couteau suisse
1116include_spip('inc/charsets');
1117add_outil( array(
1118        'id' => 'moderation_moderee',
1119        'auteur' => 'Yohann(potter64)',
1120        'categorie' => 'admin',
1121        'version-min' => '1.9300',
1122        'code:options' => '%%moderation_admin%%%%moderation_redac%%%%moderation_visit%%',
1123        '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')).'\');',
1124        'pipeline:pre_edition' => 'moderation_vip',
1125));
1126add_variables( array(
1127        'nom' => 'moderation_admin',
1128        'check' => 'couteauprive:moderation_admins',
1129        'defaut' => 1,
1130        'code:%s' => "define('_MOD_MOD_0minirezo',%s);",
1131), array(
1132        'nom' => 'moderation_redac',
1133        'check' => 'couteauprive:moderation_redacs',
1134        'defaut' => 0,
1135        'code:%s' => "define('_MOD_MOD_1comite',%s);",
1136), array(
1137        'nom' => 'moderation_visit',
1138        'check' => 'couteauprive:moderation_visits',
1139        'defaut' => 0,
1140        'code:%s' => "define('_MOD_MOD_6forum',%s);",
1141));
1142
1143add_outil( array(
1144        'id' => 'titre_parent',
1145        'categorie' => 'spip',
1146        'contrib' => 2900,
1147        'code:options' => '%%titres_etendus%%',
1148));
1149add_variable( array(
1150        'nom' => 'titres_etendus',
1151        'check' => 'couteauprive:titres_etendus',
1152        'format' => _format_NOMBRE,
1153        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
1154        'defaut' => 0,
1155        'code:%s' => "define('_PARENTS_ETENDUS',%s);",
1156));
1157
1158add_outil( array(
1159        'id' => 'corbeille',
1160        'categorie' => 'admin',
1161        'version-min' => '1.9300',
1162        'code:options' => "%%arret_optimisation%%",
1163));
1164add_variable( array(
1165        'nom' => 'arret_optimisation',
1166        'format' => _format_NOMBRE,
1167        'radio' => array(1 => 'item_oui', 0 => 'item_non'),
1168        'defaut' => 0,
1169        'code:%s' => "define('_CORBEILLE_SANS_OPTIM', 1);
1170if(!function_exists('genie_optimiser')) {
1171        // surcharge de la fonction d'optimisation de SPIP (inc/optimiser.php)
1172        function genie_optimiser(\$t='foo'){ include_spip('optimiser','genie'); optimiser_base_une_table(); return -(mktime(2,0,0) + rand(0, 3600*4)); }\n}",
1173));
1174
1175add_outil( array(
1176        'id' => 'trousse_balises',
1177        'categorie' => 'spip',
1178        'contrib' => 3005,
1179));
1180
1181add_outil( array(
1182        'id' => 'horloge',
1183        'categorie' => 'spip',
1184        'contrib' => 2998,
1185        'pipelinecode:insert_head,
1186         pipelinecode:header_prive' => '$flux.=\'<script type="text/javascript" src="\'.generer_url_public(\'cout_dates.js\',\'lang=\'.$GLOBALS[\'spip_lang\']).\'"></script>
1187<script type="text/javascript" src="\'.find_in_path("outils/jquery.jclock.js").\'"></script>\'."\n";',
1188        'code:jq_init' => 'jclock_init.apply(this);',
1189));
1190
1191add_outil( array(
1192        'id' => 'maj_auto',
1193        'categorie' => 'admin',
1194        'version-min' => '1.9300',
1195        'contrib' => 3223,
1196));
1197
1198// reglage du nombre de case pour le brouteur
1199add_outil( array(
1200        'id' => 'brouteur',
1201        'categorie' => 'interface',
1202        'code:options' => "%%rubrique_brouteur%%"
1203));
1204add_variable( array(
1205        'nom' => 'rubrique_brouteur',
1206        'format' => _format_NOMBRE,
1207        'defaut' => 20,
1208        'code:%s' => "define('_SPIP_SELECT_RUBRIQUES', %s);"
1209));
1210
1211// Recuperer tous les outils (et leurs variables) de la forme outils/toto_config.xml
1212foreach (find_all_in_path('outils/', '\w+_config\.xml$') as $f) {
1213        add_outils_xml($f);
1214}
1215
1216// Recuperer tous les outils de la forme outils/monoutil_config.php
1217// y compris les lames perso dont on met le nom en italiques
1218global $outils;
1219foreach (find_all_in_path('outils/', '\w+_config\.php$') as $f) 
1220if(preg_match(',^([^.]*)_config$,', basename($f, '.php'),$regs)){
1221        if($outil = charger_fonction($regs[0], 'outils'))
1222                $outil(preg_match(',couteau_suisse/outils/,', $f));
1223        /*else {
1224                // compatibilite ...   
1225                include $f;
1226                if(function_exists($cs_temp=$regs[1].'_add_outil')) {
1227                        $cs_temp = $cs_temp();
1228                        $cs_temp['id'] = $regs[1];
1229                        add_outil($cs_temp);
1230                }
1231        }*/
1232        if(isset($outils[$regs[1]]) && strpos($f, '/couteau_suisse/outils/'.$regs[1])===false)
1233                $outils[$regs[1]]['perso'] = 1;
1234}
1235
1236// Nettoyage
1237unset($cs_temp);
1238
1239// Ajout des outils personnalises sous forme globale
1240if(isset($GLOBALS['mes_outils'])) {
1241        foreach($GLOBALS['mes_outils'] as $id=>$outil) {
1242                $outil['id'] = $id;
1243                $outil['perso'] = 1;
1244                add_outil($outil);
1245        }
1246        unset($GLOBALS['mes_outils']);
1247}
1248
1249// Idees d'ajouts :
1250// http://archives.rezo.net/spip-core.mbox/
1251// http://www.spip-contrib.net/Citations
1252// http://www.spip-contrib.net/la-balise-LESMOTS et d'autres balises #MAINTENANT #LESADMINISTRATEURS #LESREDACTEURS #LESVISITEURS
1253// http://www.spip-contrib.net/Ajouter-une-lettrine-aux-articles
1254// http://www.spip-contrib.net/Generation-automatique-de
1255// http://www.spip-contrib.net/Balise-LOGO-ARTICLE-ORITRAD
1256// boutonstexte
1257
1258//global $cs_variables; cs_log($cs_variables, 'cs_variables :');
1259?>
Note: See TracBrowser for help on using the repository browser.