quand il n'y a pas de retour a la ligne (3 niveaux, preg sans l'option s) + 'code:options' => 'function citations_bb_rempl($texte){ + $texte = preg_replace($a="/(.*?)<\/quote>/", $b="\$1", $texte); + if(strpos($texte, "'decoration_styles', + 'format' => _format_CHAINE, + 'lignes' => 8, + 'defaut' => '"span.sc = font-variant:small-caps; +span.souligne = text-decoration:underline; +span.barre = text-decoration:line-through; +span.dessus = text-decoration:overline; +span.clignote = text-decoration:blink; +span.surfluo = background-color:#ffff00; padding:0px 2px; +span.surgris = background-color:#EAEAEC; padding:0px 2px; +fluo = surfluo"', + 'code:trim(%s)' => 'function _decoration_BALISES() { return trim(%s); }', +)); +add_outil( array( + 'id' => 'decoration', + 'auteur' => 'izo@aucuneid.net, Pat', + 'contrib' => 2427, + 'categorie' => 'typo-racc', + 'code:options' => "%%decoration_styles%%", + 'pipeline:pre_typo' => 'decoration_pre_typo', + 'pipeline:bt_toolbox' => 'decoration_BarreTypo', + 'pipeline:porte_plume_barre_pre_charger' => 'decoration_PP_pre_charger', + 'pipeline:porte_plume_lien_classe_vers_icone' => 'decoration_PP_icones', +)); + +add_variables( array( + 'nom' => 'couleurs_fonds', + 'format' => _format_NOMBRE, + 'radio' => array(1 => 'item_oui', 0 => 'item_non' ), + 'defaut' => 1, + 'code' => "define('_COULEURS_FONDS', %s);\n", +), array( + 'nom' => 'set_couleurs', + 'format' => _format_NOMBRE, + 'radio' => array(0 => 'couteauprive:toutes_couleurs', 1 => 'couteauprive:certaines_couleurs'), + 'radio/ligne' => 1, + 'defaut' => 0, + 'code' => "define('_COULEURS_SET', %s);\n", +), array( + 'nom' => 'couleurs_perso', + 'format' => _format_CHAINE, + 'lignes' => 3, + 'defaut' => '"gris, rouge"', + 'code' => "define('_COULEURS_PERSO', %s);", +)); +add_outil( array( + 'id' => 'couleurs', + 'auteur' => 'Aurélien PIERARD (idée originale), Pat', + 'categorie' => 'typo-racc', + 'contrib' => 2427, + 'pipeline:pre_typo' => 'couleurs_pre_typo', + 'pipeline:nettoyer_raccourcis_typo' => 'couleurs_nettoyer_raccourcis', + 'pipeline:bt_toolbox' => 'couleurs_BarreTypo', + 'pipeline:porte_plume_barre_pre_charger' => 'couleurs_PP_pre_charger', + 'pipeline:porte_plume_lien_classe_vers_icone' => 'couleurs_PP_icones', + 'pipeline:pre_description_outil' => 'couleurs_pre_description_outil', + 'code:options' => "%%couleurs_fonds%%%%set_couleurs%%%%couleurs_perso%%", + 'code:fonctions' => "// aide le Couteau Suisse a calculer la balise #INTRODUCTION +include_spip('outils/couleurs'); +\$GLOBALS['cs_introduire'][] = 'couleurs_nettoyer_raccourcis'; +", +)); + +// outil essentiellement français. D'autres langues peuvent etre ajoutees dans outils/typo_exposants.php +add_variable( array( + 'nom' => 'expo_bofbof', + 'format' => _format_NOMBRE, + 'radio' => array(1 => 'item_oui', 0 => 'item_non' ), + 'defaut' => 0, + 'code:%s' => "define('_CS_EXPO_BOFBOF', %s);", +)); +add_outil( array( + 'id' => 'typo_exposants', + 'auteur' => 'Vincent Ramos, Pat', + 'categorie' => 'typo-corr', + 'contrib' => 1564, + 'code:options' => '%%expo_bofbof%%', + 'pipeline:post_typo' => 'typo_exposants', + 'code:css' => 'sup, sup.typo_exposants { font-size:78%; font-variant:inherit; vertical-align:23%; }', +)); + +add_outil( array( + 'id' => 'guillemets', + 'auteur' => 'Vincent Ramos', + 'categorie' => 'typo-corr', + 'pipeline:post_typo' => 'typo_guillemets', +)); + +add_variables( array( + 'nom' => 'liens_interrogation', + 'format' => _format_NOMBRE, + 'radio' => array(1 => 'item_oui', 0 => 'item_non'), + 'defaut' => 1, + 'code:%s' => "\$GLOBALS['liens_interrogation']=true;\n", +), array( + 'nom' => 'liens_orphelins', + 'format' => _format_NOMBRE, + 'radio' => array(-1 => 'item_non', 0 => 'couteauprive:basique', 1 => 'couteauprive:etendu', -2 => 'couteauprive:par_defaut'), + 'defaut' => 0, + 'code' => '$GLOBALS["liens_orphelins"]=%s;', + // empeche SPIP de convertir les URLs orphelines (URLs brutes) + 'code:%s<>-2' => defined('_SPIP19300')?"\n// Pas de traitement automatique des liens orphelins :\n\$GLOBALS['spip_pipeline']['pre_liens']=str_replace('|traiter_raccourci_liens','',\$GLOBALS['spip_pipeline']['pre_liens']); +@define('_EXTRAIRE_LIENS',',^\$,');":'', +), array( + 'nom' => 'long_url', + 'format' => _format_NOMBRE, + 'defaut' => 40, + 'code:%s' => "define('_MAX_LONG_URL', %s);", +), array( + 'nom' => 'coupe_url', + 'format' => _format_NOMBRE, + 'defaut' => 35, + 'code:%s' => "define('_MAX_COUPE_URL', %s);", +)); +// attention : liens_orphelins doit etre place avant mailcrypt ou liens_en_clair +add_outil( array( + 'id' => 'liens_orphelins', + 'categorie' => 'typo-corr', + 'contrib' => 2443, + 'code:options' => '%%liens_interrogation%%', + 'code:spip_options' => '%%liens_orphelins%%%%long_url%%%%coupe_url%%', + 'pipeline:pre_propre' => 'liens_orphelins_pipeline', + 'traitement:EMAIL' => 'expanser_liens(liens_orphelins', + 'pipeline:pre_typo' => 'interro_pre_typo', + 'pipeline:post_propre' => 'interro_post_propre', + 'description' => defined('_SPIP19300')?'<:liens_orphelins::> <:liens_orphelins:1:> ':'<:liens_orphelins::>', +)); + +add_outil( array( + 'id' => 'filets_sep', + 'auteur' => 'FredoMkb', + 'categorie' => 'typo-racc', + 'contrib' => 1563, + 'pipeline:pre_typo' => 'filets_sep', + 'pipeline:bt_toolbox' => 'filets_sep_BarreTypo', + 'pipeline:porte_plume_barre_pre_charger' => 'filets_PP_pre_charger', + 'pipeline:porte_plume_lien_classe_vers_icone' => 'filets_PP_icones', +)); + +add_outil( array( + 'id' => 'smileys', + 'auteur' => "Sylvain, Pat", + 'categorie' => 'typo-corr', + 'contrib' => 1561, + 'code:css' => "table.cs_smileys td {text-align:center; font-size:90%; font-weight:bold;}", + 'pipeline:pre_typo' => 'cs_smileys_pre_typo', + 'pipeline:bt_toolbox' => 'cs_smileys_BarreTypo', + 'pipeline:porte_plume_barre_pre_charger' => 'cs_smileys_PP_pre_charger', + 'pipeline:porte_plume_lien_classe_vers_icone' => 'cs_smileys_PP_icones', +)); + +add_outil( array( + 'id' => 'chatons', + 'auteur' => "BoOz, Pat", + 'categorie' => 'typo-racc', + 'pipeline:pre_typo' => 'chatons_pre_typo', + 'pipeline:bt_toolbox' => 'chatons_BarreTypo', + 'pipeline:porte_plume_barre_pre_charger' => 'chatons_PP_pre_charger', + 'pipeline:porte_plume_lien_classe_vers_icone' => 'chatons_PP_icones', +)); + +add_variables( array( + 'nom' => 'glossaire_groupes', + 'format' => _format_CHAINE, + 'defaut' => "'Glossaire'", + 'code' => "\$GLOBALS['glossaire_groupes']=%s;\n", + 'commentaire' => defined('_SPIP19300')?'fct_glossaire_groupes(%s); +function fct_glossaire_groupes($gr){ + $s=""; + foreach(explode(":",$gr) as $g) + if(!sql_countsel("spip_groupes_mots", "titre="._q($g))) $s.=($s?"
":"")._T("couteauprive:erreur_groupe", array("groupe"=>$g)); + return $s?"$s
":""; +}':NULL, +), array( + 'nom' => 'glossaire_limite', + 'format' => _format_NOMBRE, + 'defaut' => 0, + 'code:%s>0' => "define('_GLOSSAIRE_LIMITE', %s);\n", +), array( + 'nom' => 'glossaire_js', + 'radio' => array(0 => 'couteauprive:glossaire_css', 1 => 'couteauprive:glossaire_js'), + 'format' => _format_NOMBRE, + 'defaut' => 1, + 'code:%s' => "define('_GLOSSAIRE_JS', %s);", +)); +add_outil( array( + 'id' => 'glossaire', + 'categorie' => 'typo-corr', + 'contrib' => 2206, + 'code:options' => "@define('_CS_SANS_GLOSSAIRE', '[!glossaire]');\n%%glossaire_limite%%%%glossaire_groupes%%%%glossaire_js%%", +// 'traitement:LIEU:post_propre' => 'cs_glossaire', + // sans oublier les articles, les breves, les forums et les rubriques ! + // SPIP ne considere pas que la premiere definition est un tronc commun... + // meme traitement au chapo des articles... + 'traitement:TEXTE:post_propre, + traitement:TEXTE/articles:post_propre, + traitement:TEXTE/breves:post_propre, + traitement:TEXTE/forums:post_propre, + traitement:TEXTE/rubriques:post_propre, + traitement:CHAPO:post_propre' => 'cs_glossaire', + // Precaution pour les articles virtuels (SPIP < 3.0) + defined('_SPIP30000')?'foo':'traitement:CHAPO:pre_propre' => 'nettoyer_chapo', + // Mise en forme des titres + 'traitement:TITRE/mots:post_typo' => 'cs_glossaire_titres', + 'code:css' => 'a.cs_glossaire:after {display:none;}', + // fonction glossaire_init() codee dans glossaire.js : executee lors du chargement de la page et a chaque hit ajax + 'code:jq_init' => 'glossaire_init.apply(this);', + 'pipelinecode:nettoyer_raccourcis_typo' => '$flux=str_replace(_CS_SANS_GLOSSAIRE, "", $flux);', +)); + +// attention : mailcrypt doit etre place apres liens_orphelins +add_outil( array( + 'id' => 'mailcrypt', + 'categorie' => 'securite', + 'auteur' => "Alexis Roussel, Paolo, Pat", + 'contrib' => 2443, + 'jquery' => 'oui', + 'pipelinecode:post_propre' => "if(strpos(\$flux, '@')!==false) \$flux=cs_echappe_balises('', 'mailcrypt', \$flux);", + 'code:js' => "function lancerlien(a,b){ x='ma'+'ilto'+':'+a+'@'+b; return x; }", + // jQuery pour remplacer l'arobase image par l'arobase texte + // ... puis arranger un peu le title qui a ete protege + 'code:jq_init' => "jQuery('span.spancrypt', this).attr('class','cryptOK').html(''+'4;'); + jQuery(\"a[\"+cs_sel_jQuery+\"title*='..']\", this).each(function () { + this.title = this.title.replace(/\.\..t\.\./,'[@]'); + });", + 'code:css' => 'span.spancrypt {background:transparent url(' . url_absolue(find_in_path('img/mailcrypt/leure.gif')) + . ') no-repeat scroll 0.1em center; padding-left:12px; text-decoration:none;}', + 'traitement:EMAIL' => 'mailcrypt_email_dist', + // compatibilite avec le plugin facteur + 'pipelinecode:facteur_pre_envoi' => 'include_spip("public/parametrer"); // charger mes_fonctions +$flux->Body = maildecrypt($flux->Body); +$flux->AltBody = maildecrypt($flux->AltBody);', +)); + + +// attention : liens_en_clair doit etre place apres tous les outils traitant des liens +add_outil( array( + 'id' => 'liens_en_clair', + 'categorie' => 'spip', + 'contrib' => 2443, + 'pipeline:post_propre' => 'liens_en_clair_post_propre', + 'code:css' => 'a.spip_out:after {display:none;}', +)); + +add_variables( array( // variable utilisee par 'pipelinecode:insert_head' + 'nom' => 'scrollTo', + 'check' => 'couteauprive:jq_scrollTo', + 'defaut' => 1, + 'format' => _format_NOMBRE, +), array( // variable utilisee par 'pipelinecode:insert_head' + 'nom' => 'LocalScroll', + 'check' => 'couteauprive:jq_localScroll', + 'defaut' => 1, + 'format' => _format_NOMBRE, +)); +add_outil( array( + 'id' => 'soft_scroller', + 'categorie' => 'public', + 'jquery' => 'oui', + 'pipelinecode:insert_head' => 'if(%%scrollTo%%) {$flux.=\'\'."\n";} +if(%%LocalScroll%%) {$flux.=\'\'."\n";}', + 'code:js' => 'function soft_scroller_init() { if(typeof jQuery.localScroll=="function") jQuery.localScroll({hash: true}); }', + 'code:jq_init' => 'soft_scroller_init.apply(this);', +)); + +// http://www.malsup.com/jquery/corner/ +add_variables( array( + 'nom' => 'jcorner_classes', + 'format' => _format_CHAINE, + 'lignes' => 10, + 'defaut' => defined('_SPIP19300')?'"// coins ronds aux formulaires +.formulaire_inscription, .formulaire_forum, .formulaire_ecrire_auteur + +// colorisation de la dist de SPIP 2.0 en ajoutant un parent +\".chapo, .texte\" = wrap(\'<\/div>\') +\".menu\" = wrap(\'<\/div>\') + +// coins ronds aux parents ! +.jc_parent"' + :'" // coins ronds pour les menus de navigation +.rubriques, .breves, .syndic, .forums, .divers + + // en couleurs sur l\'accueil +.liste-articles li .texte = css(\'background-color\', \'#E0F0F0\') .corner() + +// colorisation de la dist de SPIP 1.92 en ajoutant un parent +\"#contenu .texte\" = wrap(\'<\/div>\') + +// coins ronds aux parents ! +.jc_parent"', + 'code:trim(%s)' => 'function _jcorner_CLASSES() { return trim(%s); }', +), array( // variable utilisee par 'pipelinecode:insert_head' + 'nom' => 'jcorner_plugin', + 'check' => 'couteauprive:jcorner_plugin', + 'defaut' => 1, + 'format' => _format_NOMBRE, +)); +add_outil( array( + 'id' => 'jcorner', + 'categorie' => 'public', + 'jquery' => 'oui', + 'contrib' => 2987, + 'code:options' => "%%jcorner_classes%%", + // fichier distant pour le plugin jQuery : http://github.com/malsup/corner/commits/ + 'distant' => defined('_SPIP20100') + // version 2.09 (11-MAR-2010), jQuery v1.3.2 mini + ?'http://github.com/malsup/corner/raw/ca8d745fdfe054e1bb62fbd22eca9850c1353e03/jquery.corner.js' + // version 2.03 (05-DEC-2009) + :'http://github.com/malsup/corner/raw/46bbbc8706853c879c9224b7ebf5f284f726314d/jquery.corner.js', + 'pipelinecode:insert_head' => 'if(%%jcorner_plugin%%) {$flux.=\'\'."\n";}', + 'pipeline:insert_head' => 'jcorner_insert_head', + // jcorner_init() n'est disponible qu'en partie publique + 'code:jq_init' => 'if(typeof jcorner_init=="function") jcorner_init.apply(this);', +)); + +add_variables( array( + 'nom' => 'insertions', + 'format' => _format_CHAINE, + 'lignes' => 10, + 'defaut' => '"oeuf = œuf +cceuil = ccueil +(a priori) = {a priori} +(([hH])uits) = $1uit +/([cC]h?)oeur/ = $1œur +/oeuvre/ = œuvre +(O[Ee]uvre([rs]?)) = Œuvre$1 +/\b([cC]|[mM].c|[rR]ec)on+ais+a((?:n(?:ce|te?)|ble)s?)\b/ = $1onnaissa$2 +"', + 'code' => 'function _insertions_LISTE() { return trim(%s); }', +)); +add_outil( array( + 'id' => 'insertions', + 'categorie' => 'typo-corr', + 'code:options' => "%%insertions%%", + // sans oublier les articles, les breves, les forums et les rubriques ! + // SPIP ne considere pas que la premiere definition est un tronc commun : + 'traitement:CHAPO:pre_propre, + traitement:PS:pre_propre, + traitement:TEXTE:pre_propre, + traitement:TEXTE/articles:pre_propre, + traitement:TEXTE/breves:pre_propre, + traitement:TEXTE/forums:post_propre, + traitement:TEXTE/rubriques:pre_propre' => 'insertions_pre_propre', +)); + +// le plugin moderation moderee dans le couteau suisse +include_spip('inc/charsets'); +add_outil( array( + 'id' => 'moderation_moderee', + 'auteur' => 'Yohann(potter64)', + 'categorie' => 'admin', + 'version-min' => '1.9300', + 'code:options' => '%%moderation_admin%%%%moderation_redac%%%%moderation_visit%%', + 'code:jq_init' => 'if(window.location.search.match(/page=forum/)!=null) jQuery("legend:contains(\'' + .addslashes(unicode2charset(html2unicode(_T((defined('_SPIP30000')?'forum:':'').'bouton_radio_modere_priori')))).'\')", this).next().html(\'' + .addslashes(_T('couteauprive:moderation_message')).'\');', + 'pipeline:pre_edition' => 'moderation_vip', +)); +add_variables( array( + 'nom' => 'moderation_admin', + 'check' => 'couteauprive:moderation_admins', + 'defaut' => 1, + 'code:%s' => "define('_MOD_MOD_0minirezo',%s);", +), array( + 'nom' => 'moderation_redac', + 'check' => 'couteauprive:moderation_redacs', + 'defaut' => 0, + 'code:%s' => "define('_MOD_MOD_1comite',%s);", +), array( + 'nom' => 'moderation_visit', + 'check' => 'couteauprive:moderation_visits', + 'defaut' => 0, + 'code:%s' => "define('_MOD_MOD_6forum',%s);", +)); + +add_outil( array( + 'id' => 'titre_parent', + 'categorie' => 'spip', + 'contrib' => 2900, + 'code:options' => '%%titres_etendus%%', +)); +add_variable( array( + 'nom' => 'titres_etendus', + 'check' => 'couteauprive:titres_etendus', + 'format' => _format_NOMBRE, + 'radio' => array(1 => 'item_oui', 0 => 'item_non'), + 'defaut' => 0, + 'code:%s' => "define('_PARENTS_ETENDUS',%s);", +)); + +add_outil( array( + 'id' => 'balise_set', + 'categorie' => 'spip', +)); + +add_outil( array( + 'id' => 'corbeille', + 'categorie' => 'admin', + 'version-min' => '1.9300', + 'code:options' => "%%arret_optimisation%%", +)); +add_variable( array( + 'nom' => 'arret_optimisation', + 'format' => _format_NOMBRE, + 'radio' => array(1 => 'item_oui', 0 => 'item_non'), + 'defaut' => 0, + 'code:%s' => "define('_CORBEILLE_SANS_OPTIM', 1); +if(!function_exists('genie_optimiser')) { + // surcharge de la fonction d'optimisation de SPIP (inc/optimiser.php) + function genie_optimiser(\$t='foo'){ include_spip('optimiser','genie'); optimiser_base_une_table(); return -(mktime(2,0,0) + rand(0, 3600*4)); }\n}", +)); + +add_outil( array( + 'id' => 'trousse_balises', + 'categorie' => 'spip', + 'contrib' => 3005, +)); + +add_outil( array( + 'id' => 'horloge', + 'categorie' => 'spip', + 'contrib' => 2998, + 'pipelinecode:insert_head, + pipelinecode:header_prive' => '$flux.=\' +\'."\n";', + 'code:jq_init' => 'jclock_init.apply(this);', +)); + +add_outil(defined('_SPIP20100')?array( + 'id' => 'maj_auto', + 'categorie' => 'securite', + 'contrib' => 3223, +):array( + 'id' => 'maj_auto', + 'categorie' => 'securite', + 'version-min' => '1.9300', + 'contrib' => 3223, + 'distant' => 'http://core.spip.org/projects/spip/repository/raw/branches/spip-2.1/ecrire/genie/mise_a_jour.php', +)); + +// reglage des differents selecteurs en partie privee +add_outil( array( + 'id' => 'brouteur', + 'categorie' => 'interface', + 'code:spip_options' => "%%rubrique_brouteur%%%%select_mots_clefs%%%%select_min_auteurs%%%%select_max_auteurs%%" +)); +add_variable( array( + 'nom' => 'rubrique_brouteur', + 'format' => _format_NOMBRE, + 'defaut' => 20, + 'code:%s' => "define('_SPIP_SELECT_RUBRIQUES', %s);" +)); +add_variable( array( + 'nom' => 'select_mots_clefs', + 'format' => _format_NOMBRE, + 'defaut' => 50, + 'code:%s<>50' => "define('_MAX_MOTS_LISTE', %s);" +)); +add_variable( array( + 'nom' => 'select_min_auteurs', + 'format' => _format_NOMBRE, + 'defaut' => 30, + 'code:%s<>30' => "define('_SPIP_SELECT_MIN_AUTEURS', %s);" +)); +add_variable( array( + 'nom' => 'select_max_auteurs', + 'format' => _format_NOMBRE, + 'defaut' => 30, + 'code:%s<>30' => "define('_SPIP_SELECT_MAX_AUTEURS', %s);" +)); + + +// Recuperer tous les outils (et leurs variables) de la forme outils/toto_config.xml +foreach (find_all_in_path('outils/', '\w+_config\.xml$') as $f) { + add_outils_xml($f); +} + +// Recuperer tous les outils de la forme outils/monoutil_config.php +// y compris les lames perso dont on met le nom en italiques +global $outils; +foreach (find_all_in_path('outils/', '\w+_config\.php$') as $f) +if(preg_match(',^([^.]*)_config$,', basename($f, '.php'),$regs)){ + if($outil = charger_fonction($regs[0], 'outils')) + $outil(preg_match(',couteau_suisse/outils/,', $f)); + /*else { + // compatibilite ... + include $f; + if(function_exists($cs_temp=$regs[1].'_add_outil')) { + $cs_temp = $cs_temp(); + $cs_temp['id'] = $regs[1]; + add_outil($cs_temp); + } + }*/ + if(isset($outils[$regs[1]]) && strpos($f, '/couteau_suisse/outils/'.$regs[1])===false) + $outils[$regs[1]]['perso'] = 1; +} + +// Nettoyage +unset($cs_temp); + +// Ajout des outils personnalises sous forme globale +if(isset($GLOBALS['mes_outils'])) { + foreach($GLOBALS['mes_outils'] as $id=>$outil) { + $outil['id'] = $id; + $outil['perso'] = 1; + add_outil($outil); + } + unset($GLOBALS['mes_outils']); +} + +// Idees d'ajouts : +// http://archives.rezo.net/spip-core.mbox/ +// http://www.spip-contrib.net/Citations +// http://www.spip-contrib.net/la-balise-LESMOTS et d'autres balises #MAINTENANT #LESADMINISTRATEURS #LESREDACTEURS #LESVISITEURS +// http://www.spip-contrib.net/Ajouter-une-lettrine-aux-articles +// http://www.spip-contrib.net/Generation-automatique-de +// http://www.spip-contrib.net/Balise-LOGO-ARTICLE-ORITRAD +// boutonstexte + +//global $cs_variables; cs_log($cs_variables, 'cs_variables :'); +?> \ No newline at end of file