Changeset 67760 in spip-zone


Ignore:
Timestamp:
Nov 16, 2012, 7:59:06 AM (7 years ago)
Author:
piero.wbmstr@…
Message:

Quelques corrections dans le plugin pour TinyMCE : on protège les tags SPIP dès lors qu'ils ne sont pas seuls dans un élément de type Block - on donne le focus à la textarea dès l'ouverture de la popup - montée en version 1.2 du plugin TinyMCE et 0.9.5 du plugin SPIP

Location:
_plugins_/tinymce/spip3
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/tinymce/spip3/jscripts/changelog.txt

    r67623 r67760  
    22- Version 3.5.7 (2012-09-20)
    33
    4 ## Plugin SpipBackBarre
     4## Plugin Spip
    55Plugin créant le bouton de retour à la barre du porte-plume.
     6- version 1.2
     7        * on protege systematiquement les tags SPIP existant s'ils ne sont pas seuls dans un element
     8        de type Block (sinon TinyMCE efface la protection ?)
     9        * on donne le focus a la textarea des l'ouverture
     10- version 1.1
     11        * ajout de la popup pour saisie des tags SPIP et protection des tags avant insertion
     12        * ajout du bouton pour ouvrir la popup en recuperant la selection
     13        * ajout des images des 2 boutons
    614- version 1.0
    715
  • _plugins_/tinymce/spip3/jscripts/tiny_mce/plugins/spip/dialog.htm

    r67748 r67760  
    1616<form onsubmit="SpipCodeDialog.insert();return false;" action="#">
    1717        <div>
    18                 <textarea style="width: 90%" rows="14" cols="30" id="spipcode">{#spip_dlg.insert_spip_code_here}</textarea>
     18                <textarea style="width: 90%" rows="14" cols="30" id="spipcode" class="mceFocus">{#spip_dlg.insert_spip_code_here}</textarea>
    1919        </div>
    2020        <div class="mceActionPanel">
  • _plugins_/tinymce/spip3/jscripts/tiny_mce/plugins/spip/editor_plugin.js

    r67748 r67760  
    44 * - Protection des codes d'inclusion de modeles et balises dans une SPAN speciale
    55 *
    6  * @version 1.2
     6 * @version 1.3
    77 */
    88
     
    3333                                        special_class : t.getSpecialClass(),
    3434                                        special_class_regexp : t.getSpecialClassRegexp(),
    35                                         must_be_protected : !t.isProtected( ed.selection.getNode() )
     35                                        must_be_protected : t.mustBeProtected( ed.selection.getNode() )
    3636                                });
    3737                        });
     
    8181                        return (n && n.nodeName=='SPAN' && n.className==this.getSpecialClass());
    8282                },
     83                // un noeud doit-il protege ?
     84                // s'il l'est deja, on regarde si le noeud parent ne contient que la span,
     85                // sinon on doit le re-proteger
     86                mustBeProtected: function( n ){
     87                        var _isp = this.isProtected(n);
     88                        if (_isp===true){
     89                                var t = this, blockparent=false;
     90                                tinyMCE.each(this.editor.dom.getParents(n), function(parent) {
     91                                        if (t.editor.dom.isBlock(parent) && blockparent===false) blockparent = parent;
     92                                });
     93                                if (blockparent)
     94                                        return (t.getContenuText(blockparent.innerHTML) != t.getContenuText(n.innerHTML));
     95                        }
     96                        return !_isp;
     97                },
    8398                // on encadre si necessaire par une div
    8499                selectionnerContenuNode: function( node ){
     
    87102                // creation de la DIV avec la classe pour proteger les contenus SPIP
    88103                protegerContenuText: function( str ){
    89                                 return '<span class="'+this.getSpecialClass()+'">'+$('<div/>').html(str).text()+'</span>';
     104                                return '<span class="'+this.getSpecialClass()+'">'+this.getContenuText(str)+'</span>';
     105                },
     106                // creation de la DIV avec la classe pour proteger les contenus SPIP
     107                getContenuText: function( str ){
     108                                return $('<div/>').html(str).text();
    90109                }
    91110        });
     
    93112        tinymce.PluginManager.add('spip', tinymce.plugins.SpipSpecialPlugin);
    94113})();
    95 
    96 /*
    97 // Differents essais pour proteger les selections ... sans succes
    98                         ed.addCommand('spip_pre_insert_code', function() {
    99                                 var _node = ed.selection.getNode();
    100                                 if ( t.isProtected(_node) ) {
    101 console.debug('=> cas d un noeud deja protege');
    102                                         ed.selection.select(ed.dom.get(_node), true);
    103                                 } else {
    104 console.debug('=> cas d un noeud non protege');
    105 
    106 
    107                                         var _node_ctt = _node.innerHTML.replace('<br data-mce-bogus="1">', '');
    108                                         // cas ou la selection est un noeud complet ou vide
    109                                         if (ed.selection.getContent()==_node_ctt){
    110 console.debug('=> cas d un noeud complet ou vide, on entoure de la div');
    111 //                                              new_node = _node.cloneNode(true);
    112                                                 var new_node = ed.dom.create('div', {'class': t.getSpecialClass()}, ed.selection.getContent());
    113 //                                              ed.dom.removeAllAttribs(new_node);
    114 //                                              ed.dom.setAttrib(new_node, 'class', t.getSpecialClass());
    115 //                                              ed.dom.rename(new_node, 'div');
    116                                                 ed.dom.replace(_node, new_node);
    117                                                 ed.selection.select( new_node.firstChild() );
    118                                         // sinon, on cree une div
    119                                         } else {
    120 console.debug('=> cas d un noeud existant, on entoure la selection de la div');
    121                                                 ed.selection.setContent( t.protegerContenuText(ed.selection.getContent()) );
    122                                         }
    123 
    124                                         ed.execCommand('mceInsertContent', false, t.protegerContenuText(ed.selection.getContent({format : 'text'})));
    125                                         ed.selection.select(ed.dom.get(_node).firstChild('div'), true);
    126                                 }
    127                                 ed.execCommand('spip_insert_code');
    128                         });
    129 //                      ed.addButton('spipinsert',{ title: 'spip.desc_insert', cmd: 'spip_pre_insert_code', image: url+'/img/spip-code.gif' });
    130 */
  • _plugins_/tinymce/spip3/jscripts/tiny_mce/plugins/spip/js/dialog.js

    r67748 r67760  
    1414                // recuperation du contenu selectionne et insertion dans la textarea
    1515        t.form.spipcode.value = tinyMCEPopup.editor.selection.getContent({format : 'text'});
     16        t.form.spipcode.focus();
    1617        },
    1718
     
    2021                var c = this.form.spipcode.value;
    2122                if ( this.mustbeprotected===true ){
    22 //                      c = '<div class="'+this.special_class+'">'+c+'</div>';
    2323                        c = '<span class="'+this.special_class+'">'+c+'</span>';
    2424                }
  • _plugins_/tinymce/spip3/paquet.xml

    r67748 r67760  
    22        prefix="tinymce"
    33        categorie="edition"
    4         version="0.9.4"
     4        version="0.9.5"
    55        etat="test"
    66        compatibilite="[3.0.0;["
Note: See TracChangeset for help on using the changeset viewer.