source: spip-zone/_squelettes_/escal/branche_V3/barre_outils/edition.php @ 87190

Last change on this file since 87190 was 87190, checked in by jcvilleneuve@…, 5 years ago

EscalV3 : on peaufine pour les outils rajoutés dans la barre d'édition

File size: 19.2 KB
Line 
1<?php
2/**
3 * Déclaration de la barre d'outil d'édition de SPIP
4 *
5 * @plugin Porte Plume pour SPIP
6 * @license GPL
7 * @package SPIP\PortePlume\BarreOutils
8 */
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11
12/**
13 * Définition de la barre 'edition' pour markitup
14 *
15 * @return Barre_outils La barre d'outil
16 */
17function barre_outils_edition(){
18        $set = new Barre_outils(array(
19                'nameSpace'         => 'edition',
20                #'previewAutoRefresh'=> true,
21                #'previewParserPath' => url_absolue(generer_url_public('preview')),
22                'onShiftEnter'      => array('keepDefault'=>false, 'replaceWith'=>"\n_ "),
23                'onCtrlEnter'       => array('keepDefault'=>false, 'replaceWith'=>"\n\n"),
24                // garder les listes si on appuie sur entree
25                'onEnter'           => array('keepDefault'=>false, 'selectionType'=>'return', 'replaceWith'=>"\n"),
26                // Utile quand on saisi du code, mais pas accessible !
27                #'onTab'             => array('keepDefault'=>false, 'replaceWith'=>"\t"),
28                'markupSet'         => array(
29                        // H1 - {{{
30                        array(
31                                "id"        => 'header1', 
32                                "name"      => _T('barreoutils:barre_intertitre'), 
33                                "key"       => "H", 
34                                "className" => "outil_header1", 
35                                "openWith" => "\n{{{", 
36                                "closeWith" => "}}}\n",
37                                "display"   => true,
38                                "selectionType" => "line",
39                        ),
40                        // Bold - {{
41                        array(
42                                "id"        => 'bold',
43                                "name"      => _T('barreoutils:barre_gras'), 
44                                "key"       => "B", 
45                                "className" => "outil_bold", 
46                                "replaceWith" => "function(h){ return espace_si_accolade(h, '{{', '}}');}",
47                                //"openWith" => "{{",
48                                //"closeWith" => "}}",
49                                "display"   => true,
50                                "selectionType" => "word",
51                        ),
52                        // Italic - {
53                        array(
54                                "id"        => 'italic',
55                                "name"      => _T('barreoutils:barre_italic'), 
56                                "key"       => "I", 
57                                "className" => "outil_italic", 
58                                "replaceWith" => "function(h){ return espace_si_accolade(h, '{', '}');}",
59                                //"openWith" => "{",
60                                //"closeWith" => "}",
61                                "display"   => true,
62                                "selectionType" => "word",
63                        ),
64                       
65                        // montrer une suppression
66                        array(
67                                "id"        => 'stroke_through',
68                                "name"      => _T('barreoutils:barre_barre'), // :-)
69                                "className" => "outil_stroke_through", 
70                                "openWith" => "<del>", 
71                                "closeWith" => "</del>",
72                                "display"   => true,
73                                "selectionType" => "word",
74                        ),
75                       
76                        // listes -*
77                        array(
78                                "id"        => 'liste_ul',
79                                "name"      => _T('barreoutils:barre_liste_ul'), 
80                                "className" => "outil_liste_ul", 
81                                "replaceWith" => "function(h){ return outil_liste(h, '*');}", 
82                                "display"   => true,
83                                "selectionType" => "line",
84                                "forceMultiline" => true,
85                                "dropMenu"    => array(
86                                        // liste -#
87                                        array(
88                                                "id"        => 'liste_ol',
89                                                "name"      => _T('barreoutils:barre_liste_ol'), 
90                                                "className" => "outil_liste_ol", 
91                                                "replaceWith" => "function(h){ return outil_liste(h, '#');}", 
92                                                "display"   => true,
93                                                "selectionType" => "line",
94                                                "forceMultiline" => true,
95                                        ),
96                                        // desindenter
97                                        array(
98                                                "id"        => 'desindenter',
99                                                "name"      => _T('barreoutils:barre_desindenter'), 
100                                                "className" => "outil_desindenter", 
101                                                "replaceWith" => "function(h){return outil_desindenter(h);}", 
102                                                "display"   => true,
103                                                "selectionType" => "line",
104                                                "forceMultiline" => true,
105                                        ),
106                                        // indenter
107                                        array(
108                                                "id"        => 'indenter',
109                                                "name"      => _T('barreoutils:barre_indenter'), 
110                                                "className" => "outil_indenter", 
111                                                "replaceWith" => "function(h){return outil_indenter(h);}", 
112                                                "display"   => true,
113                                                "selectionType" => "line",
114                                                "forceMultiline" => true,
115                                        ),
116                                ),
117                        ),
118
119
120                        // separation
121                        array(
122                                "id" => "sepLink", // trouver un nom correct !
123                                "separator" => "---------------",
124                                "display"   => true,
125                        ),
126                        // lien spip
127                        array(
128                                "id"          => 'link',
129                                "name"        => _T('barreoutils:barre_lien'),
130                                "key"         => "L", 
131                                "className"   => "outil_link", 
132                                "openWith"    => "[", 
133                                "closeWith"   => "->[!["._T('barreoutils:barre_lien_input')."]!]]",
134                                "display"     => true,
135                        ),
136                        // note en bas de page spip
137                        array(
138                                "id"          => 'notes',
139                                "name"        => _T('barreoutils:barre_note'),
140                                "className"   => "outil_notes", 
141                                "openWith"    => "[[", 
142                                "closeWith"   => "]]",
143                                "display"     => true,
144                                "selectionType" => "word",
145                        ),
146                       
147                       
148                        // separation
149                        array(
150                                "id" => "sepGuillemets",
151                                "separator" => "---------------",
152                                "display"   => true,
153                        ),
154                       
155                        // quote spip
156                        // (affichee dans forum)
157                        array(
158                                "id"          => 'quote',
159                                "name"        => _T('barreoutils:barre_quote'),
160                                "key"         => "Q", 
161                                "className"   => "outil_quote", 
162                                "openWith"    => "\n<quote>", 
163                                "closeWith"   => "</quote>\n",
164                                "display"     => true,
165                                "selectionType" => "word",
166                                "dropMenu"    => array(
167                                        // poesie spip
168                                        array(
169                                                "id"          => 'barre_poesie',
170                                                "name"        => _T('barreoutils:barre_poesie'),
171                                                "className"   => "outil_poesie", 
172                                                "openWith"    => "\n&lt;poesie&gt;", 
173                                                "closeWith"   => "&lt;/poesie&gt;\n",
174                                                "display"     => true,
175                                                "selectionType" => "line",
176                                        ),
177                                ),
178                        ),
179                        // guillemets
180                        array(
181                                "id"          => 'guillemets',
182                                "name"        => _T('barreoutils:barre_guillemets'),
183                                "className"   => "outil_guillemets", 
184                                "openWith"    => "&laquo;", 
185                                "closeWith"   => "&raquo;",
186                                "display"     => true,
187                                "lang"        => array('fr','eo','cpf','ar','es'),
188                                "selectionType" => "word",
189                                "dropMenu"    => array(
190                                        // guillemets internes
191                                        array(
192                                                "id"          => 'guillemets_simples',
193                                                "name"        => _T('barreoutils:barre_guillemets_simples'),
194                                                "className"   => "outil_guillemets_simples", 
195                                                "openWith"    => "&ldquo;", 
196                                                "closeWith"   => "&rdquo;",
197                                                "display"     => true,
198                                                "lang"        => array('fr','eo','cpf','ar','es'),
199                                                "selectionType" => "word",
200                                        ),
201                                )
202                        ),
203
204                        // guillemets de
205                        array(
206                                "id"          => 'guillemets_de',
207                                "name"        => _T('barreoutils:barre_guillemets'),
208                                "className"   => "outil_guillemets_de", 
209                                "openWith"    => "&bdquo;", 
210                                "closeWith"   => "&ldquo;",
211                                "display"     => true,
212                                "lang"        => array('bg','de','pl','hr','src'),
213                                "selectionType" => "word",
214                                "dropMenu"    => array(
215                                        // guillemets de, simples
216                                        array(
217                                                "id"          => 'guillemets_de_simples',
218                                                "name"        => _T('barreoutils:barre_guillemets_simples'),
219                                                "className"   => "outil_guillemets_de_simples", 
220                                                "openWith"    => "&sbquo;", 
221                                                "closeWith"   => "&lsquo;",
222                                                "display"     => true,
223                                                "lang"        => array('bg','de','pl','hr','src'),
224                                                "selectionType" => "word",
225                                        ),
226                                )
227                        ),
228
229                        // guillemets autres langues
230                        array(
231                                "id"          => 'guillemets_autres',
232                                "name"        => _T('barreoutils:barre_guillemets'),
233                                "className"   => "outil_guillemets_simples", 
234                                "openWith"    => "&ldquo;", 
235                                "closeWith"   => "&rdquo;",
236                                "display"     => true,
237                                "lang_not"    => array('fr','eo','cpf','ar','es','bg','de','pl','hr','src'),
238                                "selectionType" => "word",
239                                "dropMenu"    => array(
240                                        // guillemets simples, autres langues
241                                        array(
242                                                "id"          => 'guillemets_autres_simples',
243                                                "name"        => _T('barreoutils:barre_guillemets_simples'),
244                                                "className"   => "outil_guillemets_uniques", 
245                                                "openWith"    => "&lsquo;", 
246                                                "closeWith"   => "&rsquo;",
247                                                "display"     => true,
248                                                "lang_not"    => array('fr','eo','cpf','ar','es','bg','de','pl','hr','src'),
249                                                "selectionType" => "word",
250                                        ),
251                                )
252                        ),
253
254
255                        // separation
256                        array(
257                                "id" => "sepCaracteres",
258                                "separator" => "---------------",
259                                "display"   => true,
260                        ),
261                        // icones clavier
262                        array(
263                                "id"          => 'grpCaracteres',
264                                "name"        => _T('barreoutils:barre_inserer_caracteres'),
265                                "className"   => 'outil_caracteres',
266                                "display"     => true,
267                               
268                                "dropMenu"    => array(
269                                        // A majuscule accent grave
270                                        array(
271                                                "id"          => 'A_grave',
272                                                "name"        => _T('barreoutils:barre_a_accent_grave'),
273                                                "className"   => "outil_a_maj_grave", 
274                                                "replaceWith"   => "&Agrave;",
275                                                "display"     => true,
276                                                "lang"    => array('fr','eo','cpf'),
277                                        ),
278                                        // E majuscule accent aigu
279                                        array(
280                                                "id"          => 'E_aigu',
281                                                "name"        => _T('barreoutils:barre_e_accent_aigu'),
282                                                "className"   => "outil_e_maj_aigu", 
283                                                "replaceWith"   => "&Eacute;",
284                                                "display"     => true,
285                                                "lang"    => array('fr','eo','cpf'),
286                                        ),
287                                        // E majuscule accent grave
288                                        array(
289                                                "id"          => 'E_grave',
290                                                "name"        => _T('barreoutils:barre_e_accent_grave'),
291                                                "className"   => "outil_e_maj_grave",
292                                                "replaceWith" => "&Egrave;",
293                                                "display"     => true,
294                                                "lang"        => array('fr','eo','cpf'),
295                                        ),
296                                        // e dans le a
297                                        array(
298                                                "id"          => 'aelig',
299                                                "name"        => _T('barreoutils:barre_ea'),
300                                                "className"   => "outil_aelig",
301                                                "replaceWith" => "&aelig;",
302                                                "display"     => true,
303                                                "lang"        => array('fr','eo','cpf'),
304                                        ),
305                                        // e dans le a majuscule
306                                        array(
307                                                "id"          => 'AElig',
308                                                "name"        => _T('barreoutils:barre_ea_maj'),
309                                                "className"   => "outil_aelig_maj",
310                                                "replaceWith" => "&AElig;",
311                                                "display"     => true,
312                                                "lang"        => array('fr','eo','cpf'),
313                                        ),
314                                        // oe
315                                        array(
316                                                "id"          => 'oe',
317                                                "name"        => _T('barreoutils:barre_eo'),
318                                                "className"   => "outil_oe", 
319                                                "replaceWith"   => "&oelig;",
320                                                "display"     => true,
321                                                "lang"    => array('fr'),
322                                        ),
323                                        // OE
324                                        array(
325                                                "id"          => 'OE',
326                                                "name"        => _T('barreoutils:barre_eo_maj'),
327                                                "className"   => "outil_oe_maj", 
328                                                "replaceWith"   => "&OElig;",
329                                                "display"     => true,
330                                                "lang"    => array('fr'),
331                                        ),
332                                        // c cedille majuscule
333                                        array(
334                                                "id"          => 'Ccedil',
335                                                "name"        => _T('barreoutils:barre_c_cedille_maj'),
336                                                "className"   => "outil_ccedil_maj",
337                                                "replaceWith" => "&Ccedil;",
338                                                "display"     => true,
339                                                "lang"        => array('fr','eo','cpf'),
340                                        ),
341                                        // Transformation en majuscule
342                                        array(
343                                                "id"          => 'uppercase',
344                                                "name"        => _T('barreoutils:barre_gestion_cr_changercassemajuscules'),
345                                                "className"   => "outil_uppercase",
346                                                "replaceWith" => 'function(markitup) { return markitup.selection.toUpperCase() }',
347                                                "display"     => true,
348                                                "lang"        => array('fr','en'),
349                                        ),
350                                        // Transformation en minuscule
351                                        array(
352                                                "id"          => 'lowercase',
353                                                "name"        => _T('barreoutils:barre_gestion_cr_changercasseminuscules'),
354                                                "className"   => "outil_lowercase",
355                                                "replaceWith" => 'function(markitup) { return markitup.selection.toLowerCase() }',
356                                                "display"     => true,
357                                                "lang"        => array('fr','en'),
358                                        ),
359                                ),
360                        ),
361
362                        // Groupe de Codes informatiques.
363                        array(
364                                        "id" => "sepCode",
365                                        "separator" => "---------------",
366                                        "display"   => true,
367                        ),
368                        array(
369                                        // groupe code et bouton <code>
370                                        "id"          => 'grpCode',
371                                        "name"        => _T('barreoutils:barre_inserer_code'),
372                                        "className"   => 'outil_code',
373                                        "openWith" => "<code>",
374                                        "closeWith" => "</code>",
375                                        "display"     => true,
376                                        "dropMenu"    => array(
377                                                // bouton <cadre>
378                                                array(
379                                                        "id"          => 'cadre',
380                                                        "name"        => _T('barreoutils:barre_inserer_cadre'),
381                                                        "className"   => 'outil_cadre', 
382                                                        "openWith" => "<cadre>\n",
383                                                        "closeWith" => "\n</cadre>",
384                                                        "display"     => true,
385                                                ),
386                                        ),
387                        ),
388
389                        // ajouts ESCAL
390                        array(
391                                "id"          => 'ajouts_escal',
392                                "name"        => 'utiliser un outil d\'Escal',
393                "className"   => "outil_ajouts_escal",
394                                "display"     => true,
395                                "dropMenu"    => array(
396                    // aide
397                    array(
398                                        "id"          => 'escal_aide',
399                                        "name"        => 'apporter <aide>une aide</aide>',
400                                        "className"   => "outil_escal_aide",
401                                        "openWith"    => "\n<aide>",
402                                        "closeWith"   => "</aide>\n",
403                                        "display"     => true,
404                                        "selectionType" => "line",
405                    ),
406                                        // important
407                                        array(
408                                                "id"          => 'escal_important',
409                                        "name"        => 'une <important>remarque importante</important>',
410                                        "className"   => "outil_escal_important",
411                                        "openWith"    => "\n<important>",
412                                        "closeWith"   => "</important>\n",
413                                        "display"     => true,
414                                        "selectionType" => "line",
415                                        ),
416                                        // avertissement
417                                        array(
418                                                "id"          => 'escal_avertissement',
419                                        "name"        => 'une <avertissement>remarque moyennement importante</avertissement>',
420                                        "className"   => "outil_escal_avertissement", 
421                                        "openWith"    => "\n<avertissement>", 
422                                        "closeWith"   => "</avertissement>\n",
423                                        "display"     => true,
424                                        "selectionType" => "line",
425                                        ),
426                                        // info
427                                        array(
428                                                "id"          => 'escal_info',
429                                        "name"        => 'une <info>information</info>',
430                                        "className"   => "outil_escal_info", 
431                                        "openWith"    => "\n<info>", 
432                                        "closeWith"   => "</info>\n",
433                                        "display"     => true,
434                                        "selectionType" => "line",
435                                        ),
436                    // info
437                                        array(
438                                                "id"          => 'escal_centrer',
439                                        "name"        => '<centrer>centrer</centrer> le paragraphe',
440                                        "key"         => "E",
441                                        "className"   => "outil_escal_centrer",
442                                        "openWith"    => "\n<centrer>",
443                                        "closeWith"   => "</centrer>\n",
444                                        "display"     => true,
445                                        "selectionType" => "word",
446                                        ),
447                                ),
448                        ),
449
450/*      inutile (origine de markitup et non de spip)
451                                       
452                        // separation
453                        array(
454                                "id" => "sepPreview", // trouver un nom correct !
455                                "separator" => "---------------",
456                                "display"   => true,
457                        ),
458                        // clean
459                        array(
460                                "id"          => 'clean',
461                                "name"        => _T('barreoutils:barre_clean'),
462                                "className"   => "outil_clean",
463                                "replaceWith" => 'function(markitup) { return markitup.selection.replace(/<(.*?)>/g, "") }',
464                                "display"     => true,
465                        ),
466                        // preview
467                        array(
468                                "id"        => 'preview',
469                                "name"      => _T('barreoutils:barre_preview'),
470                                "className" => "outil_preview",
471                                "call"      => "preview",
472                                "display"   => true,
473                        ),
474*/
475                       
476                ),
477               
478        'functions'         => "
479                                // remplace ou cree -* ou -** ou -# ou -##
480                                function outil_liste(h, c) {
481                                        if ((s = h.selection) && (r = s.match(/^-([*#]+) (.*)\$/)))      {
482                                                r[1] = r[1].replace(/[#*]/g, c);
483                                                s = '-'+r[1]+' '+r[2];
484                                        } else {
485                                                s = '-' + c + ' '+s;
486                                        }
487                                        return s;
488                                }
489
490                                // indente des -* ou -#
491                                function outil_indenter(h) {
492                                        if (s = h.selection) {
493                                                if (s.substr(0,2)=='-*') {
494                                                        s = '-**' + s.substr(2);
495                                                } else if (s.substr(0,2)=='-#') {
496                                                        s = '-##' + s.substr(2);
497                                                } else {
498                                                        s = '-* ' + s;
499                                                }
500                                        }
501                                        return s;
502                                }
503                                               
504                                // desindente des -* ou -** ou -# ou -##
505                                function outil_desindenter(h){
506                                        if (s = h.selection) {
507                                                if (s.substr(0,3)=='-**') {
508                                                        s = '-*' + s.substr(3);
509                                                } else if (s.substr(0,3)=='-* ') {
510                                                        s = s.substr(3);
511                                                } else if (s.substr(0,3)=='-##') {
512                                                        s = '-#' + s.substr(3);
513                                                } else if (s.substr(0,3)=='-# ') {
514                                                        s = s.substr(3);
515                                                }
516                                        }
517                                        return s;
518                                }
519                               
520                                // ajouter un espace avant, apres un {qqc} pour ne pas que
521                                // gras {{}} suivi de italique {} donnent {{{}}}, mais { {{}} }
522                                function espace_si_accolade(h, openWith, closeWith){
523                                        if (s = h.selection) {
524                                                // accolade dans la selection
525                                                if (s.charAt(0)=='{') {
526                                                        return openWith + ' ' + s + ' ' + closeWith;
527                                                }
528                                                // accolade avant la selection
529                                                else if (c = h.textarea.selectionStart) {
530                                                        if (h.textarea.value.charAt(c-1) == '{') {
531                                                                return ' ' + openWith + s + closeWith + ' ';
532                                                        }
533                                                }
534                                        }
535                                        return openWith + s + closeWith;
536                                }
537                                ",
538        ));
539       
540        $set->cacher(array(
541                'stroke_through',
542                'clean', 'preview',
543        ));
544       
545        return $set;
546}
547
548
549
550/**
551 * Définitions des liens entre css et icones
552 *
553 * @return array
554 *     Couples identifiant de bouton => nom de l'image (ou tableau nom, position haut, position bas)
555 */
556function barre_outils_edition_icones(){
557        return array(
558                //'outil_header1' => 'text_heading_1.png',
559                'outil_header1' => array('spt-v1.png','-10px -226px'), //'intertitre.png'
560                'outil_bold' => array('spt-v1.png','-10px -478px'), //'text_bold.png'
561                'outil_italic' => array('spt-v1.png','-10px -586px'), //'text_italic.png'
562
563                'outil_stroke_through' => array('spt-v1.png','-10px -946px'), //'text_strikethrough.png'
564
565                'outil_liste_ul' => array('spt-v1.png','-10px -622px'), //'text_list_bullets.png'
566                'outil_liste_ol' => array('spt-v1.png','-10px -658px'), //'text_list_numbers.png'
567                'outil_indenter' => array('spt-v1.png','-10px -514px'), //'text_indent.png'
568                'outil_desindenter' => array('spt-v1.png','-10px -550px'), //'text_indent_remove.png'
569               
570                //'outil_quote' => 'text_indent.png',
571                'outil_quote' => array('spt-v1.png','-10px -442px'), //'quote.png'
572                'outil_poesie' => array('spt-v1.png','-10px -1050px'), //'poesie.png'
573
574                //'outil_link' => 'world_link.png',
575                'outil_link' => array('spt-v1.png','-10px -298px'), //'lien.png'
576                'outil_notes' => array('spt-v1.png','-10px -334px'), //'notes.png'
577
578
579                'outil_guillemets' => array('spt-v1.png','-10px -910px'), //'guillemets.png'
580                'outil_guillemets_simples' => array('spt-v1.png','-10px -802px'), //'guillemets-simples.png'
581                'outil_guillemets_de' => array('spt-v1.png','-10px -766px'), //'guillemets-de.png'
582                'outil_guillemets_de_simples' => array('spt-v1.png','-10px -838px'), //'guillemets-uniques-de.png'
583                'outil_guillemets_uniques' => array('spt-v1.png','-10px -874px'), //'guillemets-uniques.png'
584               
585                'outil_caracteres' => array('spt-v1.png','-10px -262px'), //'keyboard.png'
586                        'outil_a_maj_grave' => array('spt-v1.png','-10px -82px'), //'agrave-maj.png'
587                        'outil_e_maj_aigu' => array('spt-v1.png','-10px -154px'), //'eacute-maj.png'
588                        'outil_e_maj_grave' => array('spt-v1.png','-10px -190px'), //'eagrave-maj.png'
589                        'outil_aelig' => array('spt-v1.png','-10px -46px'), //'aelig.png'
590                        'outil_aelig_maj' => array('spt-v1.png','-10px -10px'), //'aelig-maj.png'
591                        'outil_oe' => array('spt-v1.png','-10px -406px'), //'oelig.png'
592                        'outil_oe_maj' => array('spt-v1.png','-10px -370px'), //'oelig-maj.png'
593                        'outil_ccedil_maj' => array('spt-v1.png','-10px -118px'),  //'ccedil-maj.png'
594                        'outil_uppercase' => array('spt-v1.png','-10px -730px'), //'text_uppercase.png'
595                        'outil_lowercase' => array('spt-v1.png','-10px -694px'), //'text_lowercase.png'
596
597                'outil_code' => array('spt-v1.png','-10px -1086px'),
598                        'outil_cadre' => array('spt-v1.png','-10px -1122px'),
599               
600                'outil_clean' => array('spt-v1.png','-10px -982px'), //'clean.png'
601                'outil_preview' => array('spt-v1.png','-10px -1018px'), //'eye.png'
602       
603                'outil_ajouts_escal' => '../icones_barre/escal16.png',
604            'outil_escal_aide' => '../icones_barre/aide.png',
605                'outil_escal_important' => '../icones_barre/important.png',
606            'outil_escal_avertissement' => '../icones_barre/avertissement.png',
607            'outil_escal_info' => '../icones_barre/info.png',
608            'outil_escal_centrer' => '../icones_barre/centrer.png',
609     
610        );
611}
612?>
Note: See TracBrowser for help on using the repository browser.