source: spip-zone/_core_/branches/spip-2.1/plugins/porte_plume/barre_outils/edition.php @ 43837

Last change on this file since 43837 was 43837, checked in by real3t@…, 9 years ago

Ordre plus logique pour les boutons désindenter/indenter (comme dans les traitements de texte disponible dans toutes les bonnes crémeries)

File size: 15.0 KB
Line 
1<?php
2/*
3 * Plugin Porte Plume pour SPIP 2
4 * Licence GPL
5 * Auteur Matthieu Marcillaud
6 */
7if (!defined("_ECRIRE_INC_VERSION")) return;
8
9
10/**
11 * Definition de la barre 'edition' pour markitup
12 */
13function barre_outils_edition(){
14        $set = new Barre_outils(array(
15                'nameSpace'         => 'edition',
16                #'previewAutoRefresh'=> true,
17                #'previewParserPath' => url_absolue(generer_url_public('preview')),
18                'onShiftEnter'      => array('keepDefault'=>false, 'replaceWith'=>"\n_ "),
19                'onCtrlEnter'       => array('keepDefault'=>false, 'replaceWith'=>"\n\n"),
20                // garder les listes si on appuie sur entree
21                'onEnter'           => array('keepDefault'=>false, 'selectionType'=>'return', 'replaceWith'=>"\n"),
22                'onTab'             => array('keepDefault'=>false, 'replaceWith'=>"\t"),
23                'markupSet'         => array(
24                        // H1 - {{{
25                        array(
26                                "id"        => 'header1', 
27                                "name"      => _T('barre_outils:barre_intertitre'), 
28                                "key"       => "H", 
29                                "className" => "outil_header1", 
30                                "openWith" => "\n{{{", 
31                                "closeWith" => "}}}\n",
32                                "display"   => true,
33                                "selectionType" => "line",
34                        ),
35                        // Bold - {{
36                        array(
37                                "id"        => 'bold',
38                                "name"      => _T('barre_outils:barre_gras'), 
39                                "key"       => "B", 
40                                "className" => "outil_bold", 
41                                "replaceWith" => "function(h){ return espace_si_accolade(h, '{{', '}}');}",
42                                //"openWith" => "{{",
43                                //"closeWith" => "}}",
44                                "display"   => true,
45                                "selectionType" => "word",
46                        ),
47                        // Italic - {
48                        array(
49                                "id"        => 'italic',
50                                "name"      => _T('barre_outils:barre_italic'), 
51                                "key"       => "I", 
52                                "className" => "outil_italic", 
53                                "replaceWith" => "function(h){ return espace_si_accolade(h, '{', '}');}",
54                                //"openWith" => "{",
55                                //"closeWith" => "}",
56                                "display"   => true,
57                                "selectionType" => "word",
58                        ),
59                               
60                        // montrer une suppression
61                        array(
62                                "id"        => 'stroke_through',
63                                "name"      => _T('barre_outils:barre_barre'), // :-)
64                                "className" => "outil_stroke_through", 
65                                "openWith" => "<del>", 
66                                "closeWith" => "</del>",
67                                "display"   => true,
68                                "selectionType" => "word",
69                        ),
70                       
71                        // listes -*
72                        array(
73                                "id"        => 'liste_ul',
74                                "name"      => _T('barre_outils:barre_liste_ul'), 
75                                "className" => "outil_liste_ul", 
76                                "replaceWith" => "function(h){ return outil_liste(h, '*');}", 
77                                "display"   => true,
78                                "selectionType" => "line",
79                                "forceMultiline" => true,
80                                "dropMenu"    => array(
81                                        // liste -#             
82                                        array(
83                                                "id"        => 'liste_ol',
84                                                "name"      => _T('barre_outils:barre_liste_ol'), 
85                                                "className" => "outil_liste_ol", 
86                                                "replaceWith" => "function(h){ return outil_liste(h, '#');}", 
87                                                "display"   => true,
88                                                "selectionType" => "line",
89                                                "forceMultiline" => true,
90                                        ),
91                                        // desindenter 
92                                        array(
93                                                "id"        => 'desindenter',
94                                                "name"      => _T('barre_outils:barre_desindenter'), 
95                                                "className" => "outil_desindenter", 
96                                                "replaceWith" => "function(h){return outil_desindenter(h);}", 
97                                                "display"   => true,
98                                                "selectionType" => "line",
99                                                "forceMultiline" => true,
100                                        ),
101                                        // indenter             
102                                        array(
103                                                "id"        => 'indenter',
104                                                "name"      => _T('barre_outils:barre_indenter'), 
105                                                "className" => "outil_indenter", 
106                                                "replaceWith" => "function(h){return outil_indenter(h);}", 
107                                                "display"   => true,
108                                                "selectionType" => "line",
109                                                "forceMultiline" => true,
110                                        ),
111                                ),
112                        ),     
113
114                                               
115                       
116                        // separation
117                        array(
118                                "id" => "sepLink", // trouver un nom correct !
119                                "separator" => "---------------",
120                                "display"   => true,
121                        ),
122                        // lien spip
123                        array(
124                                "id"          => 'link',
125                                "name"        => _T('barre_outils:barre_lien'),
126                                "key"         => "L", 
127                                "className"   => "outil_link", 
128                                "openWith"    => "[", 
129                                "closeWith"   => "->[!["._T('barre_outils:barre_lien_input')."]!]]",
130                                "display"     => true,
131                        ),
132                        // note en bas de page spip
133                        array(
134                                "id"          => 'notes',
135                                "name"        => _T('barre_outils:barre_note'),
136                                "className"   => "outil_notes", 
137                                "openWith"    => "[[", 
138                                "closeWith"   => "]]",
139                                "display"     => true,
140                                "selectionType" => "word",
141                        ),
142                                       
143                       
144                        // separation
145                        array(
146                                "id" => "sepGuillemets",
147                                "separator" => "---------------",
148                                "display"   => true,
149                        ),
150                       
151                        // quote spip
152                        // (affichee dans forum)
153                        array(
154                                "id"          => 'quote',
155                                "name"        => _T('barre_outils:barre_quote'),
156                                "key"         => "Q", 
157                                "className"   => "outil_quote", 
158                                "openWith"    => "\n<quote>", 
159                                "closeWith"   => "</quote>\n",
160                                "display"     => true,
161                                "selectionType" => "word",
162                        ),
163                        // guillemets
164                        array(
165                                "id"          => 'guillemets',
166                                "name"        => _T('barre_outils:barre_guillemets'),
167                                "className"   => "outil_guillemets", 
168                                "openWith"    => "&laquo;", 
169                                "closeWith"   => "&raquo;",
170                                "display"     => true,
171                                "lang"        => array('fr','eo','cpf','ar','es'),
172                                "selectionType" => "word",
173                        ),
174                        // guillemets internes
175                        array(
176                                "id"          => 'guillemets_simples',
177                                "name"        => _T('barre_outils:barre_guillemets_simples'),
178                                "className"   => "outil_guillemets_simples", 
179                                "openWith"    => "&ldquo;", 
180                                "closeWith"   => "&rdquo;",
181                                "display"     => true,
182                                "lang"        => array('fr','eo','cpf','ar','es'),
183                                "selectionType" => "word",
184                        ),
185                        // guillemets de
186                        array(
187                                "id"          => 'guillemets_de',
188                                "name"        => _T('barre_outils:barre_guillemets'),
189                                "className"   => "outil_guillemets_de", 
190                                "openWith"    => "&bdquo;", 
191                                "closeWith"   => "&ldquo;",
192                                "display"     => true,
193                                "lang"        => array('bg','de','pl','hr','src'),
194                                "selectionType" => "word",
195                        ),
196                        // guillemets de, simples
197                        array(
198                                "id"          => 'guillemets_de_simples',
199                                "name"        => _T('barre_outils:barre_guillemets_simples'),
200                                "className"   => "outil_guillemets_de_simples", 
201                                "openWith"    => "&sbquo;", 
202                                "closeWith"   => "&lsquo;",
203                                "display"     => true,
204                                "lang"        => array('bg','de','pl','hr','src'),
205                                "selectionType" => "word",
206                        ),
207                        // guillemets autres langues
208                        array(
209                                "id"          => 'guillemets_autres',
210                                "name"        => _T('barre_outils:barre_guillemets'),
211                                "className"   => "outil_guillemets_simples", 
212                                "openWith"    => "&ldquo;", 
213                                "closeWith"   => "&rdquo;",
214                                "display"     => true,
215                                "lang_not"    => array('fr','eo','cpf','ar','es','bg','de','pl','hr','src'),
216                                "selectionType" => "word",
217                        ),
218                        // guillemets simples, autres langues
219                        array(
220                                "id"          => 'guillemets_autres_simples',
221                                "name"        => _T('barre_outils:barre_guillemets_simples'),
222                                "className"   => "outil_guillemets_uniques", 
223                                "openWith"    => "&lsquo;", 
224                                "closeWith"   => "&rsquo;",
225                                "display"     => true,
226                                "lang_not"    => array('fr','eo','cpf','ar','es','bg','de','pl','hr','src'),
227                                "selectionType" => "word",
228                        ),
229                       
230                        // separation
231                        array(
232                                "id" => "sepCaracteres",
233                                "separator" => "---------------",
234                                "display"   => true,
235                        ),
236                        // icones clavier
237                        array(
238                                "id"          => 'grpCaracteres',
239                                "name"        => _T('barre_outils:barre_inserer_caracteres'),
240                                "className"   => 'outil_caracteres',
241                                "display"     => true,
242                               
243                                "dropMenu"    => array(
244                                        // A majuscule accent grave
245                                        array(
246                                                "id"          => 'A_grave',
247                                                "name"        => _T('barre_outils:barre_a_accent_grave'),
248                                                "className"   => "outil_a_maj_grave", 
249                                                "replaceWith"   => "&Agrave;",
250                                                "display"     => true,
251                                                "lang"    => array('fr','eo','cpf'),
252                                        ),
253                                        // E majuscule accent aigu
254                                        array(
255                                                "id"          => 'E_aigu',
256                                                "name"        => _T('barre_outils:barre_e_accent_aigu'),
257                                                "className"   => "outil_e_maj_aigu", 
258                                                "replaceWith"   => "&Eacute;",
259                                                "display"     => true,
260                                                "lang"    => array('fr','eo','cpf'),
261                                        ),
262                                        // E majuscule accent grave
263                                        array(
264                                                "id"          => 'E_grave',
265                                                "name"        => _T('barre_outils:barre_e_accent_grave'),
266                                                "className"   => "outil_e_maj_grave",
267                                                "replaceWith" => "&Egrave;",
268                                                "display"     => true,
269                                                "lang"        => array('fr','eo','cpf'),
270                                        ),
271                                        // e dans le a
272                                        array(
273                                                "id"          => 'aelig',
274                                                "name"        => _T('barre_outils:barre_ea'),
275                                                "className"   => "outil_aelig",
276                                                "replaceWith" => "&aelig;",
277                                                "display"     => true,
278                                                "lang"        => array('fr','eo','cpf'),
279                                        ),
280                                        // e dans le a majuscule
281                                        array(
282                                                "id"          => 'AElig',
283                                                "name"        => _T('barre_outils:barre_ea_maj'),
284                                                "className"   => "outil_aelig_maj",
285                                                "replaceWith" => "&AElig;",
286                                                "display"     => true,
287                                                "lang"        => array('fr','eo','cpf'),
288                                        ),
289                                        // oe
290                                        array(
291                                                "id"          => 'oe',
292                                                "name"        => _T('barre_outils:barre_eo'),
293                                                "className"   => "outil_oe", 
294                                                "replaceWith"   => "&oelig;",
295                                                "display"     => true,
296                                                "lang"    => array('fr'),
297                                        ),
298                                        // OE
299                                        array(
300                                                "id"          => 'OE',
301                                                "name"        => _T('barre_outils:barre_eo_maj'),
302                                                "className"   => "outil_oe_maj", 
303                                                "replaceWith"   => "&OElig;",
304                                                "display"     => true,
305                                                "lang"    => array('fr'),
306                                        ),
307                                        // c cedille majuscule
308                                        array(
309                                                "id"          => 'Ccedil',
310                                                "name"        => _T('barre_outils:barre_c_cedille_maj'),
311                                                "className"   => "outil_ccedil_maj",
312                                                "replaceWith" => "&Ccedil;",
313                                                "display"     => true,
314                                                "lang"        => array('fr','eo','cpf'),
315                                        ),
316                                        // Transformation en majuscule
317                                        array(
318                                                "id"          => 'uppercase',
319                                                "name"        => _T('barre_outils:barre_gestion_cr_changercassemajuscules'),
320                                                "className"   => "outil_uppercase",
321                                                "replaceWith" => 'function(markitup) { return markitup.selection.toUpperCase() }',
322                                                "display"     => true,
323                                                "lang"        => array('fr','en'),
324                                        ),
325                                        // Transformation en minuscule
326                                        array(
327                                                "id"          => 'lowercase',
328                                                "name"        => _T('barre_outils:barre_gestion_cr_changercasseminuscules'),
329                                                "className"   => "outil_lowercase",
330                                                "replaceWith" => 'function(markitup) { return markitup.selection.toLowerCase() }',
331                                                "display"     => true,
332                                                "lang"        => array('fr','en'),
333                                        ),
334                                ),
335                        ),
336
337/*      inutile (origine de markitup et non de spip)
338                                       
339                        // separation
340                        array(
341                                "id" => "sepPreview", // trouver un nom correct !
342                                "separator" => "---------------",
343                                "display"   => true,
344                        ),
345                        // clean
346                        array(
347                                "id"          => 'clean',
348                                "name"        => _T('barre_outils:barre_clean'),
349                                "className"   => "outil_clean",
350                                "replaceWith" => 'function(markitup) { return markitup.selection.replace(/<(.*?)>/g, "") }',
351                                "display"     => true,
352                        ),
353                        // preview
354                        array(
355                                "id"        => 'preview',
356                                "name"      => _T('barre_outils:barre_preview'),
357                                "className" => "outil_preview",
358                                "call"      => "preview",
359                                "display"   => true,
360                        ),
361*/
362                       
363                ),
364               
365        'functions'         => "
366                                // remplace ou cree -* ou -** ou -# ou -##
367                                function outil_liste(h, c) {
368                                        if ((s = h.selection) && (r = s.match(/^-([*#]+) (.*)\$/)))      {
369                                                r[1] = r[1].replace(/[#*]/g, c);
370                                                s = '-'+r[1]+' '+r[2];
371                                        } else {
372                                                s = '-' + c + ' '+s;
373                                        }
374                                        return s;
375                                }
376
377                                // indente des -* ou -#
378                                function outil_indenter(h) {
379                                        if (s = h.selection) {
380                                                if (s.substr(0,2)=='-*') {
381                                                        s = '-**' + s.substr(2);
382                                                } else if (s.substr(0,2)=='-#') {
383                                                        s = '-##' + s.substr(2);
384                                                } else {
385                                                        s = '-* ' + s;
386                                                }
387                                        }
388                                        return s;
389                                }
390                                               
391                                // desindente des -* ou -** ou -# ou -##
392                                function outil_desindenter(h){
393                                        if (s = h.selection) {
394                                                if (s.substr(0,3)=='-**') {
395                                                        s = '-*' + s.substr(3);
396                                                } else if (s.substr(0,3)=='-* ') {
397                                                        s = s.substr(3);
398                                                } else if (s.substr(0,3)=='-##') {
399                                                        s = '-#' + s.substr(3);
400                                                } else if (s.substr(0,3)=='-# ') {
401                                                        s = s.substr(3);
402                                                }
403                                        }
404                                        return s;
405                                }
406                               
407                                // ajouter un espace avant, apres un {qqc} pour ne pas que
408                                // gras {{}} suivi de italique {} donnent {{{}}}, mais { {{}} }
409                                function espace_si_accolade(h, openWith, closeWith){
410                                        if (s = h.selection) {
411                                                // accolade dans la selection
412                                                if (s.charAt(0)=='{') {
413                                                        return openWith + ' ' + s + ' ' + closeWith;
414                                                }
415                                                // accolade avant la selection
416                                                else if (c = h.textarea.selectionStart) {
417                                                        if (h.textarea.value.charAt(c-1) == '{') {
418                                                                return ' ' + openWith + s + closeWith + ' ';
419                                                        }
420                                                }
421                                        }
422                                        return openWith + s + closeWith;
423                                }
424                                ",
425        ));
426       
427        $set->cacher(array(
428                'stroke_through',
429                'clean', 'preview',
430        ));
431       
432        return $set;
433}
434
435
436
437/**
438 * Definitions des liens entre css et icones
439 */
440function barre_outils_edition_icones(){
441        return array(
442                //'outil_header1' => 'text_heading_1.png',
443                'outil_header1' => array('spt-v1.png','-10px -226px'), //'intertitre.png'
444                'outil_bold' => array('spt-v1.png','-10px -478px'), //'text_bold.png'
445                'outil_italic' => array('spt-v1.png','-10px -586px'), //'text_italic.png'
446
447                'outil_stroke_through' => array('spt-v1.png','-10px -946px'), //'text_strikethrough.png'
448
449                'outil_liste_ul' => array('spt-v1.png','-10px -622px'), //'text_list_bullets.png'
450                'outil_liste_ol' => array('spt-v1.png','-10px -658px'), //'text_list_numbers.png'
451                'outil_indenter' => array('spt-v1.png','-10px -514px'), //'text_indent.png'
452                'outil_desindenter' => array('spt-v1.png','-10px -550px'), //'text_indent_remove.png'
453               
454                //'outil_quote' => 'text_indent.png',
455                'outil_quote' => array('spt-v1.png','-10px -442px'), //'quote.png'
456
457                //'outil_link' => 'world_link.png',
458                'outil_link' => array('spt-v1.png','-10px -298px'), //'lien.png'
459                'outil_notes' => array('spt-v1.png','-10px -334px'), //'notes.png'
460
461
462                'outil_guillemets' => array('spt-v1.png','-10px -910px'), //'guillemets.png'
463                'outil_guillemets_simples' => array('spt-v1.png','-10px -802px'), //'guillemets-simples.png'
464                'outil_guillemets_de' => array('spt-v1.png','-10px -766px'), //'guillemets-de.png'
465                'outil_guillemets_de_simples' => array('spt-v1.png','-10px -838px'), //'guillemets-uniques-de.png'
466                'outil_guillemets_uniques' => array('spt-v1.png','-10px -874px'), //'guillemets-uniques.png'
467               
468                'outil_caracteres' => array('spt-v1.png','-10px -262px'), //'keyboard.png'
469                        'outil_a_maj_grave' => array('spt-v1.png','-10px -82px'), //'agrave-maj.png'
470                        'outil_e_maj_aigu' => array('spt-v1.png','-10px -154px'), //'eacute-maj.png'
471                        'outil_e_maj_grave' => array('spt-v1.png','-10px -190px'), //'eagrave-maj.png'
472                        'outil_aelig' => array('spt-v1.png','-10px -46px'), //'aelig.png'
473                        'outil_aelig_maj' => array('spt-v1.png','-10px -10px'), //'aelig-maj.png'
474                        'outil_oe' => array('spt-v1.png','-10px -406px'), //'oelig.png'
475                        'outil_oe_maj' => array('spt-v1.png','-10px -370px'), //'oelig-maj.png'
476                        'outil_ccedil_maj' => array('spt-v1.png','-10px -118px'),  //'ccedil-maj.png'
477                        'outil_uppercase' => array('spt-v1.png','-10px -730px'), //'text_uppercase.png'
478                        'outil_lowercase' => array('spt-v1.png','-10px -694px'), //'text_lowercase.png'
479
480                'outil_clean' => array('spt-v1.png','-10px -982px'), //'clean.png'
481                'outil_preview' => array('spt-v1.png','-10px -1018px'), //'eye.png'
482        );
483}
484?>
Note: See TracBrowser for help on using the repository browser.