X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins%2Fauto%2Fcouteau_suisse%2Fcouteau_suisse%2Foutils%2Fsmileys.php;fp=www%2Fplugins%2Fauto%2Fcouteau_suisse%2Fcouteau_suisse%2Foutils%2Fsmileys.php;h=bd54eedbb2ab3d1cb8d6e5aba8fa96060699d6f1;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hp=0000000000000000000000000000000000000000;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c;p=velocampus%2Fweb%2Fwww.git diff --git a/www/plugins/auto/couteau_suisse/couteau_suisse/outils/smileys.php b/www/plugins/auto/couteau_suisse/couteau_suisse/outils/smileys.php new file mode 100644 index 0000000..bd54eed --- /dev/null +++ b/www/plugins/auto/couteau_suisse/couteau_suisse/outils/smileys.php @@ -0,0 +1,186 @@ + + $tab[0][1][] = cs_code_echappement("$espace\"$smy\"", 'SMILE'); + $tab[0][2][] = $file; + $tab['racc'][] = $smy; + // pour le porte-plume + $tab[0][4]['smiley_'.$img] = $file; +} + +// cette fonction appelee automatiquement a chaque affichage de la page privee du Couteau Suisse renvoie un tableau +function smileys_installe_dist($tab = array(0 => array(), 'racc' => array())) { + // l'ordre des smileys ici est important : + // - les doubles, puis les simples, puis les courts + // - le raccourci insere par la balise #SMILEYS est la premiere occurence de chaque fichier + $smileys = array( + // attention ' est different de ’ (’) (SPIP utilise/ecrit ce dernier) + ":’-))"=> 'pleure_de_rire', + ":’-)"=> 'pleure_de_rire', + ":’-D" => 'pleure_de_rire', + ":’-(" => 'triste', + + // les doubles : + ':-))' => 'mort_de_rire', + ':))' => 'mort_de_rire', + ":'-))"=> 'pleure_de_rire', + ':-((' => 'en_colere', + + // les simples : + ';-)' => 'clin_d-oeil', + ':-)' => 'sourire', + ':-D' => 'mort_de_rire', + ":'-)"=> 'pleure_de_rire', + ":'-D" => 'pleure_de_rire', + ':-(' => 'pas_content', + ":'-(" => 'triste', + ':->' => 'diable', + '|-)' => 'rouge', + ':o)' => 'rigolo', + 'B-)' => 'lunettes', + ':-P' => 'tire_la_langue', + ':-p' => 'tire_la_langue', + ':-|' => 'bof', + ':-/' => 'mouais', + ':-O' => 'surpris', + ':-o' => 'surpris', + + // les courts : tester a l'usage... + // attention : ils ne sont reconnus que s'il y a un espace avant ! + ':)' => 'sourire', + ':(' => 'pas_content', + ';)' => 'clin_d-oeil', + ':|' => 'bof', + '|)' => 'rouge', + ':/' => 'mouais', + ); + + foreach ($smileys as $smy=>$val) + compile_smiley($tab, $smy, $val); + + return $tab; +} + +// liste des nouveaux raccourcis ajoutes par l'outil +// si cette fonction n'existe pas, le plugin cherche alors _T('couteauprive:un_outil:aide'); +function smileys_raccourcis() { + $racc = cs_lire_data_outil('smileys', 'racc'); + return _T('couteauprive:smileys:aide', array('liste' => ''.join(', ', $racc).'')); +} + +function smileys_echappe_balises_callback($matches) { + return cs_code_echappement($matches[1], 'SMILE'); +} + +// fonction de remplacement +// les balises suivantes sont protegees : html|code|cadre|frame|script|acronym|cite +function cs_rempl_smileys($texte) { + if (strpos($texte, ':')===false && strpos($texte, ')')===false) return $texte; + $smileys_rempl = cs_lire_data_outil('smileys'); + // protection des images, on ne sait jamais... + $texte = preg_replace_callback(',(),ms', 'smileys_echappe_balises_callback', $texte); + // smileys a probleme : + $texte = str_replace(':->', ':->', $texte); // remplacer > par > + // remplacer ’ (apostrophe curly) par ’ + $texte = str_replace(':’-', ':’-', $texte); + $texte = str_replace(':'.chr(146).'-', ':’-', $texte); + // voila, on remplace tous les smileys d'un coup... + $texte = str_replace($smileys_rempl[0], $smileys_rempl[1], $texte); + return echappe_retour($texte, 'SMILE'); +} + +// fonction principale (pipeline pre_typo) +function cs_smileys_pre_typo($texte) { + if (strpos($texte, ':')===false && strpos($texte, ')')===false) return $texte; + // appeler cs_rempl_smileys() une fois que certaines balises ont ete protegees + return cs_echappe_balises('html|code|cadre|frame|script|acronym|cite', 'cs_rempl_smileys', $texte); +} + +// fonction qui renvoie un tableau de smileys uniques +function smileys_uniques($smileys) { + $max = count($smileys[1]); + $new = array(array(), array(), array()); + for ($i=0; $i<$max; $i++) { + if(!in_array($smileys[2][$i], $new[2])) { + $new[0][] = $smileys[0][$i]; // texte + $new[1][] = $smileys[1][$i]; // image + $new[2][] = $smileys[2][$i]; // nom de fichier + } + } + return $new; +} + +// cette fonction renvoie une ligne de tableau entre afin de l'inserer dans la Barre Typo V2, si elle est presente +function cs_smileys_BarreTypo($tr) { + $smileys = smileys_uniques(cs_lire_data_outil('smileys')); + $max = count($smileys[0]); + $res = ''; + for ($i=0; $i<$max; $i++) + $res .= "{$smileys[1][$i]}"; + return $tr.'<@@span@@>'._T('couteauprive:smileys:nom').' '.echappe_retour($res, 'SMILE').''; +} + +// les 2 fonctions suivantes inserent les boutons pour le plugin Porte Plume, s'il est present (SPIP>=2.0) +function cs_smileys_PP_pre_charger($flux) { + $smileys = smileys_uniques(cs_lire_data_outil('smileys')); + $max = count($smileys[0]); + $r = array(); + for ($i=0; $i<$max; $i++) { + $id = 'smiley_' . substr($smileys[2][$i], 0, strrpos($smileys[2][$i], '.')); + $r[] = array( + "id" => $id, + "name" => _T('couteau:pp_smileys_inserer', array('smiley'=>$smileys[0][$i])), + "className" => $id, + "replaceWith" => $smileys[0][$i], + "display" => true); + } + $r = array( + "id" => 'cs_smileys_drop', + "name" => _T('couteau:pp_smileys_inserer', array('smiley'=>'')), + "className" => 'cs_smileys_drop', + "replaceWith" => '', + "display" => true, + "dropMenu" => $r, + ); + foreach(cs_pp_liste_barres('smileys') as $b) + $flux[$b]->ajouterApres('grpCaracteres', $r); + return $flux; +} +function cs_smileys_PP_icones($flux) { + $smileys = cs_lire_data_outil('smileys'); + $path = find_in_path('img/smileys').'/'; + // icones utilisees. Attention : mettre les drop-boutons en premier !! + $flux['cs_smileys_drop'] = smileys_creer_icone_barre(find_in_path('img/smileys/mort_de_rire.png')); + foreach($smileys[4] as $i=>$v) $flux[$i] = smileys_creer_icone_barre($path.$v); + return $flux; +} +// creation d'icone pour le plugin porte-plume +function smileys_creer_icone_barre($file) { + static $icones_barre; + rep_icones_barre($icones_barre); + $file = filtrer('image_recadre', $file, 16, 16, 'topleft'); + $nom = basename($src = extraire_attribut($file, 'src')); + @copy($src, $icones_barre.$nom); + return $nom; +} + +?> \ No newline at end of file