Changeset 74389 in spip-zone


Ignore:
Timestamp:
Jul 20, 2013, 7:29:37 AM (7 years ago)
Author:
fredlefred@…
Message:

fix: insertion du code CKEDITOR en partie privée ou publique que si nécessaire (http://contrib.spip.net/CKeditor-3-0?lang=fr#forum469576)
fix: correction (j'espère réelle) du problème lié à ajax (en particulier : http://contrib.spip.net/CKeditor-3-0?lang=fr#forum469117)
fix: retour de la compatibilité avec les crayons en partie publique mais un bug persiste, il faut corriger le fichier crayons_fonctions.php (du plugin crayons), en remplaçant ligne 137, $(...) par jQuery(...)

Location:
_plugins_/ckeditor-spip-plugin/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/ckeditor-spip-plugin/trunk/ckeditor4spip.js.html

    r71983 r74389  
    2424        spipDataProcessor={
    2525                toDataFormat:function(html, fixForBody){
    26                         return $.ajax({url:CKEDITOR.spipurl+'?page=ckspip_convert',data:{text_area:html.replace(/<span\s+data-scayt[^>]*>\s*(.*?)\s*<\/span>/g,'$1'),cvt:'html2spip',fix:fixForBody},global:false,type:'POST',dataType:'text',async:false}).responseText;
     26                        return jQuery.ajax({url:CKEDITOR.spipurl+'?page=ckspip_convert',data:{text_area:html.replace(/<span\s+data-scayt[^>]*>\s*(.*?)\s*<\/span>/g,'$1'),cvt:'html2spip',fix:fixForBody},global:false,type:'POST',dataType:'text',async:false}).responseText;
    2727                },
    2828                toHtml:function(data, fixForBody){
    29                         return $.ajax({url:CKEDITOR.spipurl+'?page=ckspip_convert',data:{text_area:data.replace(/<span\s+data-scayt[^>]*>\s*(.*?)\s*<\/span>/g,'$1'),cvt:'spip2html',fix:fixForBody},global:false,type:'POST',dataType:'text',async:false}).responseText;
     29                        return jQuery.ajax({url:CKEDITOR.spipurl+'?page=ckspip_convert',data:{text_area:data.replace(/<span\s+data-scayt[^>]*>\s*(.*?)\s*<\/span>/g,'$1'),cvt:'spip2html',fix:fixForBody},global:false,type:'POST',dataType:'text',async:false}).responseText;
    3030                }
    3131        };
     
    3333
    3434function htmldecode(s){
    35         return $('<div/>').html(s).text();
     35        return jQuery('<div/>').html(s).text();
    3636}
    3737
    3838function HideSpipUI(editor_id){
    39         if($(editor_id).size()==0){return;}
     39        if(jQuery(editor_id).size()==0){return;}
    4040        var crayon=editor_id.match(/^(#crayon_\d+)\s/), item, editor_id_light = editor_id ;
    4141        if(crayon) {
    4242                editor_id_light='textarea.crayon-active' ;
    43                 stack[editor_id].crborder=$(crayon[1]+' .formulaire_spip').css('border');
    44                 stack[editor_id].crbg=$(crayon[1]+' .formulaire_spip').css('background-color');
    45                 $(crayon[1]+' .formulaire_spip')
     43                stack[editor_id].crborder=jQuery(crayon[1]+' .formulaire_spip').css('border');
     44                stack[editor_id].crbg=jQuery(crayon[1]+' .formulaire_spip').css('background-color');
     45                jQuery(crayon[1]+' .formulaire_spip')
    4646                        .css('border','none')
    4747                        .css('background-color','white');
    48                 item=$(crayon+' div.edition');
     48                item=jQuery(crayon+' div.edition');
    4949        } else {
    5050                editor_id_light = editor_id.match(/^#\S*\s+(.*)$/) ;
     
    5555                }
    5656
    57                 item=$(editor_id_light).parents().find('div.forum, div.edition:has('+editor_id_light+')');
     57                item=jQuery(editor_id_light).parents().find('div.forum, div.edition:has('+editor_id_light+')');
    5858        }
    5959        item.each(function() {
    60                 if ($(this).find(editor_id_light).length == 1) {
     60                if (jQuery(this).find(editor_id_light).length == 1) {
    6161                        if (editor_id.match(/^#formulaire_forum\s/)) {
    62                                 stack[editor_id].fobd=$(this).css('border');
    63                                 stack[editor_id].fobg=$(this).css('background');
    64                                 $(this).css('border','none');
    65                                 $(this).css('background','none');
    66                         }
    67                         $(this).find('.spip_barre').css('display','none').end()
     62                                stack[editor_id].fobd=jQuery(this).css('border');
     63                                stack[editor_id].fobg=jQuery(this).css('background');
     64                                jQuery(this).css('border','none');
     65                                jQuery(this).css('background','none');
     66                        }
     67                        jQuery(this).find('.spip_barre').css('display','none').end()
    6868                                .find('.explication').css('display','none').end()
    6969                                .find('.markItUpHeader').css('display','none').end()
     
    7676
    7777function ShowSpipUI(editor_id){
    78         if($(editor_id).size()==0){return;}
     78        if(jQuery(editor_id).size()==0){return;}
    7979        if (! stack[editor_id].nobarre) {
    80                 $(editor_id).removeClass('no_barre') ;
     80                jQuery(editor_id).removeClass('no_barre') ;
    8181                barrebouilles_editor(editor_id) ;
    8282                stack[editor_id].nobarre = false ;
     
    8484        var crayon=editor_id.match(/^(#crayon_\d+)\s/), item ;
    8585        if(crayon) {
    86                 item=$(crayon+' div.edition');
     86                item=jQuery(crayon+' div.edition');
    8787        } else {
    88                 item=$(editor_id).parents().find('div.forum, div.edition:has('+editor_id+')');
     88                item=jQuery(editor_id).parents().find('div.forum, div.edition:has('+editor_id+')');
    8989        }
    9090        item.each(function() {
    9191                if (editor_id.match(/^#formulaire_forum\s/)) {
    92                         $(this).css('border',stack[editor_id].fobd);
    93                         $(this).css('background',stack[editor_id].fobg);
     92                        jQuery(this).css('border',stack[editor_id].fobd);
     93                        jQuery(this).css('background',stack[editor_id].fobg);
    9494                }
    9595                if(crayon) {
    96                         $(crayon[1]+' .formulaire_spip')
     96                        jQuery(crayon[1]+' .formulaire_spip')
    9797                                .css('border',stack[editor_id].crborder)
    9898                                .css('background-color',stack[editor_id].crbg);
    9999                }
    100                 if($(this).find('.markItUpTabs .previsuVoir').hasClass('on')){
    101                         $(this).find('.markItUpTabs').css('display','').end()
     100                if(jQuery(this).find('.markItUpTabs .previsuVoir').hasClass('on')){
     101                        jQuery(this).find('.markItUpTabs').css('display','').end()
    102102                                .find('.markItUpPreview').css('display','block').end()
    103103                                .find('.markItUpEditor').css('display','none');
    104104                }else{
    105                         $(this).find('.spip_barre').css('display','').end()
     105                        jQuery(this).find('.spip_barre').css('display','').end()
    106106                                .find('.explication').css('display','').end()
    107107                                .find('.markItUpHeader').css('display','').end()
     
    117117
    118118function SpipEditor2CKEditor(editor_id){
    119         if ($(editor_id).size()==0) {return;}
    120         $('#swapeditor_'+stack[editor_id].ndx)
     119        if (jQuery(editor_id).size()==0) {return;}
     120        jQuery('#swapeditor_'+stack[editor_id].md5)
    121121                .attr('disabled',true)
    122122                .attr('title',htmldecode('<:ckeditor:loading:>'))
    123123                .find('img')
    124124                        .attr('src','[(#CHEMIN{images/searching.gif}|url_absolue)]');
    125         $(editor_id).attr('disabled',true);
    126         var EdConfig={};$.extend(EdConfig,CKEDITOR.ckConfig) ;
     125        jQuery(editor_id).attr('disabled',true);
     126        var EdConfig={};jQuery.extend(EdConfig,CKEDITOR.ckConfig) ;
    127127        EdConfig.toolbar='Spip'+stack[editor_id].tb;
    128         try { [(#REM) // fix les problèmes des instances de ckeditor répertoriées, mais non visibles/accessibles du fait du rechargement via ajax ]
    129                 var id = $(editor_id).attr('id') ;
    130                 if (id) {
    131                         var instance = CKEDITOR.instances[id] ;
    132                         if (instance) {
    133                                 instance.destroy() ;
    134                         }
    135                 }
    136         } catch (E) { /* rien */ }
    137128        try {
    138         $(editor_id).ckeditor(function(){
     129        jQuery(editor_id).ckeditor(function(){
    139130                HideSpipUI(editor_id);
    140131                stack[editor_id].n='#'+this.container.getId();
     
    149140                do {
    150141                        stack[editor_id].parent_id = parent_ids[pc++] ;
    151                         if ($(stack[editor_id].parent_id).length>0) {
     142                        if (jQuery(stack[editor_id].parent_id).length>0) {
    152143                                parent_trouve=true ;
    153                                 stack[editor_id].marges=$(editor_id).parents(stack[editor_id].parent_id).width()-$(stack[editor_id].n).width() ;
     144                                stack[editor_id].marges=jQuery(editor_id).parents(stack[editor_id].parent_id).width()-jQuery(stack[editor_id].n).width() ;
    154145                        }
    155146                } while ((pc<parent_ids.length) && (!parent_trouve)) ;
    156                
    157147
    158148                if (parent_trouve) {
    159149                        this.on('resize', function(e) {
    160                                 $(editor_id).parents(stack[editor_id].parent_id).width($(stack[editor_id].n).width()+stack[editor_id].marges);
     150                                jQuery(editor_id).parents(stack[editor_id].parent_id).width(jQuery(stack[editor_id].n).width()+stack[editor_id].marges);
    161151                        });
    162152                }
    163153                contexteChange(editor_id);
    164                 $(editor_id).attr('disabled',false);
    165                 $('#swapeditor_'+stack[editor_id].ndx)
     154                jQuery(editor_id).attr('disabled',false);
     155                jQuery('#swapeditor_'+stack[editor_id].md5)
    166156                        .attr('title',htmldecode('<:ckeditor:use_spip_editor:>'))
    167157                        .find('img')
    168158                                .attr('src','[(#CHEMIN{images/ckeditor_spip.png}|url_absolue)]') ;
    169                 $('#swapeditor_'+stack[editor_id].ndx).attr('disabled',false);
     159                jQuery('#swapeditor_'+stack[editor_id].md5).attr('disabled',false);
    170160                this.setReadOnly(false);
    171161                this.on('dataReady', function(e){
    172162                        this.resize(CKEDITOR.ckConfig.minwidth,CKEDITOR.ckConfig.height);
    173163                });
    174                 $(editor_id).parents().find('input[class=submit]') [(#REM) // fix: a priori ceci n'est nécessaire que pour les forums, mais il semble que cela fonctionne aussi pour les autres formulaires]
    175                         .attr('onclick', 'javacript:CKEditor2SpipEditor(\''+editor_id+'\');') ;
    176164        },EdConfig);
    177165        } catch (E) { /* rien */ }
     
    185173        // inserer_barre_forum, inserer_barre_edition, inserer_previsualisation
    186174]
    187         if ($(editor_id).hasClass('inserer_barre_forum'))
    188                 $(editor_id).barre_outils('forum');
    189         if ($(editor_id).hasClass('inserer_barre_edition'))
    190                 $(editor_id).barre_outils('edition');
    191         if ($(editor_id).hasClass('inserer_previsualisation'))
    192                 $(editor_id).barre_previsualisation();
     175        if (jQuery(editor_id).hasClass('inserer_barre_forum'))
     176                jQuery(editor_id).barre_outils('forum');
     177        if (jQuery(editor_id).hasClass('inserer_barre_edition'))
     178                jQuery(editor_id).barre_outils('edition');
     179        if (jQuery(editor_id).hasClass('inserer_previsualisation'))
     180                jQuery(editor_id).barre_previsualisation();
    193181[(#REM) // fonction specifique aux formulaires de SPIP :
    194182        // barre de forum
    195183]
    196         if ($(editor_id).hasClass('textarea_forum'))
    197                 $(editor_id).barre_outils('forum');
    198         if($(editor_id).attr('name').match(/^(texte|\w+_texte)$/)) {
     184        if (jQuery(editor_id).hasClass('textarea_forum'))
     185                jQuery(editor_id).barre_outils('forum');
     186        if(jQuery(editor_id).attr('name').match(/^(texte|\w+_texte)$/)) {
    199187                if (!editor_id.match(/\b#formulaire_forum\b/)) {
    200                         $(editor_id).barre_outils('edition').barre_previsualisation();
     188                        jQuery(editor_id).barre_outils('edition').barre_previsualisation();
    201189                }
    202190                [(#CONFIG{forums_afficher_barre}|=={non}|non)
    203191                else {
    204                         $(editor_id).barre_outils('forum');
     192                        jQuery(editor_id).barre_outils('forum');
    205193                }]
    206194        }
     
    208196
    209197function CKEditor2SpipEditor(editor_id){
    210         if($(editor_id).size()==0){return;}
    211         $('#swapeditor_'+stack[editor_id].ndx)
     198        if(jQuery(editor_id).size()==0){return;}
     199        jQuery('#swapeditor_'+stack[editor_id].md5)
    212200                .attr('disabled',true)
    213201                .attr('title',htmldecode('<:ckeditor:loading:>'))
    214202                .find('img')
    215203                        .attr('src','[(#CHEMIN{images/searching.gif}|url_absolue)]');
    216         $(editor_id)
     204        jQuery(editor_id)
    217205                .attr('disabled',true)
    218206                .css('display','block')
    219207                .ckeditorGet().destroy();
    220208        ShowSpipUI(editor_id);
    221         $('#swapeditor_'+stack[editor_id].ndx)
     209        jQuery('#swapeditor_'+stack[editor_id].md5)
    222210                .attr('title',htmldecode('<:ckeditor:use_ckeditor:>'))
    223211                .find('img')
     
    225213                .end()
    226214                .attr('disabled',false);
    227         $(editor_id)
     215        jQuery(editor_id)
    228216                .attr('disabled',false);
    229217}
    230218
    231219function SwapEditor(editor_id){
    232         if($(editor_id).size()==0){return;}
     220        if(jQuery(editor_id).size()==0){return;}
    233221        try{
    234222                CKEditor2SpipEditor(editor_id);
     
    239227
    240228function contexteChange(editor_id){
    241         if($(editor_id).size()==0){return;}
    242         if($("#contexte_"+stack[editor_id].ndx).length){
    243                 var contexte=$("#contexte_"+stack[editor_id].ndx).val().match(/^([\.#])(.*)$/);
     229        if(jQuery(editor_id).size()==0){return;}
     230        if(jQuery("#contexte_"+stack[editor_id].md5).length){
     231                var contexte=jQuery("#contexte_"+stack[editor_id].md5).val().match(/^([\.#])(.*)$/);
    244232                if(stack[editor_id].ctx){[(#REM)// on supprime l'ancien contexte]
    245233                        if(stack[editor_id].ctx[1]=="#"){[(#REM)// le contexte est donné via un identifiant]
    246                                 $(stack[editor_id].n+' iframe').contents().find('body').attr('id','');
     234                                jQuery(stack[editor_id].n+' iframe').contents().find('body').attr('id','');
    247235                        }else{
    248                                 $(stack[editor_id].n+' iframe').contents().find('body').removeClass(stack[editor_id].ctx[2]);
     236                                jQuery(stack[editor_id].n+' iframe').contents().find('body').removeClass(stack[editor_id].ctx[2]);
    249237                        }
    250238                }
     
    252240                if(contexte){[(#REM)// on affecte  le nouveau contexte]
    253241                        if(contexte[1]=="#"){[(#REM)// le contexte est donné via un identifiant]
    254                                 $(stack[editor_id].n+' iframe').contents().find('body').attr('id', contexte[2]);
     242                                jQuery(stack[editor_id].n+' iframe').contents().find('body').attr('id', contexte[2]);
    255243                        }else{[(#REM)// le contexte est donné via une class]
    256                                 $(stack[editor_id].n+' iframe').contents().find('body').addClass(contexte[2]);
    257                         }
    258                 }
     244                                jQuery(stack[editor_id].n+' iframe').contents().find('body').addClass(contexte[2]);
     245                        }
     246                }
     247        }
     248}
     249
     250function on_submit_destroy_cke() {
     251        for(name in CKEDITOR.instances) {
     252            CKEDITOR.instances[name].destroy()
    259253        }
    260254}
    261255
    262256function cke_crayon_submit(editor_id){
    263         if($(editor_id).size()==0){return;}
     257        if(jQuery(editor_id).size()==0){return;}
    264258        try{[(#REM)// si on est en mode 'ckeditor', on synchronise le textarea]
    265                 $(editor_id).ckeditorGet().updateElement();
     259                jQuery(editor_id).ckeditorGet().updateElement();
    266260        }catch(e){ /* rien */ }
    267         $(this).parents('.formulaire_crayon').submit();
     261        jQuery(this).parents('.formulaire_crayon').submit();
    268262}
    269263
    270264function fullInitCKEDITOR(editor_ids){
    271265        if(!editor_ids)editor_ids=[["textarea[name=texte]","Full"]];
    272         CKEDITOR.ckConfig.on={
    273                 'pluginsLoaded':function(ev){ckeDataProcessor=ev.editor.dataProcessor;ev.editor.dataProcessor=spipDataProcessor;}
    274         };
     266        jQuery("input[type=submit]").click(on_submit_destroy_cke) ;
    275267        if (!CKEDITOR.fullInitDone) {
     268                CKEDITOR.fullInitDone=true;
     269                CKEDITOR.ckConfig.on={
     270                        'pluginsLoaded':function(ev){ckeDataProcessor=ev.editor.dataProcessor;ev.editor.dataProcessor=spipDataProcessor;}
     271                };
    276272                CKEDITOR.on('dialogDefinition',function(ev){
    277273                        var dialogName=ev.data.name,
     
    296292                        CKEDITOR.plugins.addExternal(plugin, CKEDITOR.ckConfig.loadExtraPlugins[plugin]);
    297293                }
    298                 CKEDITOR.fullInitDone=true;
    299294        }
    300295        for(var id in editor_ids){
    301                 if (($(editor_ids[id][0]).length > 0) && ($(editor_ids[id][0]).css('display') != 'none')) {
     296                if ((jQuery(editor_ids[id][0]).length > 0) && (jQuery(editor_ids[id][0]).css('display') != 'none')) {
     297                        var editor_id=editor_ids[id][0], editor_tb=editor_ids[id][1], crayon=null, editor_md5=editor_ids[id][3] ;
     298                        if (jQuery(editor_id).parents("[id^=crayon_]").length>0) { // sommes-nous appelé depuis un crayon ?
     299                                crayon = jQuery(editor_id).parents("[id^=crayon_]").attr('id') ;
     300                                if (! editor_id.match(/^\s*#/)) {
     301                                        editor_id = "#"+crayon+" "+editor_id ;
     302                                }
     303                        }
     304       
    302305                try {
    303                         $(editor_ids[id][0]).ckeditorGet() ;
     306                        jQuery(editor_id).ckeditorGet() ;
    304307                } catch(e) {
    305                         var editor_id=editor_ids[id][0], editor_tb=editor_ids[id][1], crayon=editor_ids[id][2], editor_md5=editor_ids[id][3] ;
    306                                
    307                         var ndx=$('[id^=cke_cpt_]').size(),buttons='';
    308                         while ($('[id=cke_cpt_'+ndx+']').size()>0) { ndx++ ; }
     308                       
     309                        var buttons='';
    309310                        if (typeof stack[editor_id] == 'undefined') {
    310311                                stack[editor_id] = {} ;
    311312                        }
    312313                        stack[editor_id].crayons = 0 ;
    313                         stack[editor_id].ndx = ndx ;
    314314                        stack[editor_id].tb = editor_tb ;
    315                         stack[editor_id].nobarre = ($(editor_id).hasClass('no_barre') || CKEDITOR.ckeditmode == 'spip') ;
     315                        stack[editor_id].nobarre = (jQuery(editor_id).hasClass('no_barre') || CKEDITOR.ckeditmode == 'spip') ;
    316316                        stack[editor_id].md5 = editor_md5 ;
    317317                        if (! stack[editor_id].nobarre)
    318                                 $(editor_id).addClass('no_barre');[(#REM) // on fait en sorte de désactiver l'affichage du porte plume avant qu'il n'entre en scène ...]
    319 
    320                         if ($('.after_'+editor_md5).length==0) {
    321                                 $(editor_id).after('<span id="cke_cpt_'+ndx+'" class="after_'+editor_md5+'"></span>');
     318                                jQuery(editor_id).addClass('no_barre');[(#REM) // on fait en sorte de désactiver l'affichage du porte plume avant qu'il n'entre en scène ...]
     319
     320                        if (jQuery('#after_'+editor_md5).length==0) {
     321                                jQuery(editor_id).after('<span id="after_'+editor_md5+'"></span>');
    322322        [(#CONFIG{ckeditor/ignoreversion}|=={'on'}|non)
    323323                                if(CKEDITOR.version<CKEDITOR.ckpreferedversion){
    324324                                        var pref='<:ckeditor:version_preferee:>';
    325                                         $('#cke_cpt_'+ndx).prepend(
     325                                        jQuery('#after_'+editor_md5).prepend(
    326326                                                '<div class="erreur_message">'+pref.replace(/%2/,CKEDITOR.ckpreferedversion).replace(/%1/,CKEDITOR.version)+'</div>'
    327327                                        );
     
    332332                        if(CKEDITOR.ckeditmode!='ckeditor-exclu'){
    333333                                buttons=buttons +
    334                                         '<button style="margin:0;width:40px;height:24px;" type="button" id="swapeditor_'+ndx+'" onclick="javascript:SwapEditor(\''+editor_id+'\');" title="'
     334                                        '<button style="margin:0;width:40px;height:24px;" type="button" id="swapeditor_'+editor_md5+'" onclick="javascript:SwapEditor(\''+editor_id+'\');" title="'
    335335                                        +htmldecode(CKEDITOR.ckeditmode=='spip'?'<:ckeditor:use_ckeditor:>':'<:ckeditor:use_spip_editor:>')
    336336                                        +'"><img src="[(#CHEMIN{images/ckeditor.png}|url_absolue)]"/></button>';
     
    339339        [(#REM) // on insère le menu déroulant de changement de contexte s'il existe des contextes]
    340340        <B_options>             buttons=buttons+'<span style="padding-right:5px;"><:ckeditor:changer_de_contexte:></span>'
    341                                 +'<select id="contexte_'+ndx+'" name="contexte_'+ndx+'" onchange="contexteChange(\''+editor_id+'\');" style="width:33%;"><option value="" selected><:ckeditor:sans_contexte:></option><BOUCLE_options(POUR){tableau #CONFIG{ckeditor/contextes}|ck_enliste{1}}><option value="[(#VALEUR|table_valeur{0})]">[(#VALEUR|table_valeur{1}|replace{(\.|#)})]</option></BOUCLE_options></select>';</B_options>;
    342                         if(buttons && ($('.before_'+editor_md5).length == 0)) {
    343                                 var div ;
     341                                +'<select id="contexte_'+editor_md5+'" name="contexte_'+editor_md5+'" onchange="contexteChange(\''+editor_id+'\');" style="width:33%;"><option value="" selected><:ckeditor:sans_contexte:></option><BOUCLE_options(POUR){tableau #CONFIG{ckeditor/contextes}|ck_enliste{1}}><option value="[(#VALEUR|table_valeur{0})]">[(#VALEUR|table_valeur{1}|replace{(\.|#)})]</option></BOUCLE_options></select>';</B_options>;
     342                        if(buttons && (jQuery('#before_'+editor_md5).length == 0)) {
     343                                var div = jQuery(editor_id) ;
    344344                                var style = "width;100%;text-align:right;position:relative;top:-24px;height:0px;" ;
    345                                 if (crayon) {
    346                                         div = $('textarea.crayon-active').closest('.formulaire_crayon') ;
    347                                 } else {
    348                                         editor_id_light = editor_id.match(/^#\S*\s+(.*)$/) ;
    349                                         if (editor_id_light) {
    350                                                 editor_id_light = editor_id_light[1] ;
    351                                         } else {
    352                                                 editor_id_light = editor_id ;
    353                                         }
    354 
    355                                         div = $(editor_id_light).closest('.markItUpContainer') ;
    356                                         if (div.length == 0) { [(#REM) // cas où le porteplume n'est pas là... ]
    357                                                 div = $(editor_id).siblings('label:first') ;
    358                                                 style = "width;100%;text-align:right;position:relative;top:-8px;height:0px;" ;
    359                                         }
    360                                        
     345                                if (div.length != 0) {
     346                                        div.before('<div id="before_'+editor_md5+'" style="'+style+'"><a name="ancre_'+editor_md5+'"></a>'+buttons+'</div>');
    361347                                }
    362                                 if (div.length != 0) {
    363                                         div.prepend('<div id="cke_buttons_'+ndx+'" class="before_'+editor_md5+'" style="'+style+'"><a name="cke_buttons_ancre_'+ndx+'"></a>'+buttons+'</div>');
    364                                 }
    365                         }
    366         [(#REM) // gestion des crayons :]
     348                        }
     349                [(#REM) // gestion des crayons :]
    367350                        if(crayon){
    368                                 $('#'+crayon+' .crayon-submit')
    369                                         .after('<button id="save" style=\'background:url("[(#CHEMIN{images/ok.png}|url_absolue)]") no-repeat scroll left top transparent;\' onclick="javascript:return cke_crayon_submit(\''+editor_id+'\');" title="<:bouton_enregistrer:>"><:bouton_enregistrer:></button>')[(#REM)// on ajoute notre bouton qui synchronisera le textarea avant l'editeur avec de soumettre le formulaire]
     351                                jQuery('#'+crayon+' .crayon-submit')
     352                                        .after('<button class="crayon-submit" onclick="javascript:return cke_crayon_submit(\''+editor_id+'\');" title="<:bouton_enregistrer:>"><:bouton_enregistrer:></button>')[(#REM)// on ajoute notre bouton qui synchronisera le textarea avant l'editeur avec de soumettre le formulaire]
    370353                                        .remove();[(#REM)// on supprime le bouton original]
    371354                        }
    372355                        if(CKEDITOR.ckeditmode!='spip'){
    373                                 SpipEditor2CKEditor(editor_ids[id][0]) ;
     356                                SpipEditor2CKEditor(editor_id) ;
    374357                        }
    375358                }}
  • _plugins_/ckeditor-spip-plugin/trunk/ckeditor_fonctions.php

    r73818 r74389  
    8181                        $champs[] = array($item, $tb) ;
    8282                }
     83        }
     84        if ((_request('page')=='cisf_article')&&ckeditor_lire_config('cisf', _CKE_CISF_DEF)) {
     85                $champs[] = array('article',ckeditor_lire_config('cisf_tb',_CKE_CISF_TB_DEF));
    8386        }
    8487
     
    116119
    117120function ckeditor_header_prive($flux) {
    118         $flux .= "\n<!-- début de : ckeditor_header_prive -->\n" ;
    119121        $exec = _request('exec') ;
    120         if (version_compare($GLOBALS['spip_version_affichee'],'3.0','<') && preg_match('~^configurer_ckeditor~',$exec)) {
    121                 $head = inclure_page("prive/squelettes/head/".$exec."-v2",null) ;
    122                 $flux .= "<!-- fond=prive/squelettes/head/".$exec."-v2 -->\n" ;
    123                 $flux .= $head['texte'] ;
    124         }
    125         if (ckeditor_lire_config('insertcssprivee', _CKE_INSERT_CSSPRIVEE_DEF)) {
    126                 $flux .= ckeditor_getcss() ;
    127         }
    128         $flux .= "<link rel='stylesheet' href='".find_in_path('css/cked-cfg.css')."' type='text/css' />\n" ;
    129 
    130122        $config = array('ajaxload'=>array());
    131         $exec = _request('exec') ;
    132 
    133         if(preg_match('~^(\w+)s?_(edit)$~', $exec, $match) || preg_match('~^(\w+)s$~', $exec, $match)) {
    134                 $type = $match[1] ;
    135                 $id_type = _request('id_'.$type) ;
    136                 if ($id_type) {
    137                         $config['type']=$type;
    138                         $config['id']=$id_type;
    139                         switch($type) {
     123        if($champs = ckeditor_prepare_champs(ckeditor_lire_config('selecteurs_prive',_CKE_PRIVE_DEF)))
     124                $config['ajaxload']=$champs;
     125
     126        if($exec == 'configurer_ckeditor_p6') {
     127                $config['ajaxload'][] = array('textarea#champ_modele','Full') ;
     128        }
     129
     130        if (count($config['ajaxload'])) {
     131                $flux .= "\n<!-- début de : ckeditor_header_prive -->\n" ;
     132                $exec = _request('exec') ;
     133                if (version_compare($GLOBALS['spip_version_affichee'],'3.0','<') && preg_match('~^configurer_ckeditor~',$exec)) {
     134                        $head = inclure_page("prive/squelettes/head/".$exec."-v2",null) ;
     135                        $flux .= "<!-- fond=prive/squelettes/head/".$exec."-v2 -->\n" ;
     136                        $flux .= $head['texte'] ;
     137                }
     138                if (ckeditor_lire_config('insertcssprivee', _CKE_INSERT_CSSPRIVEE_DEF)) {
     139                        $flux .= ckeditor_getcss() ;
     140                }
     141                $flux .= "<link rel='stylesheet' href='".find_in_path('css/cked-cfg.css')."' type='text/css' />\n" ;
     142
     143                if(preg_match('~^(\w+)s?_(edit)$~', $exec, $match) || preg_match('~^(\w+)s$~', $exec, $match)) {
     144                        $type = $match[1] ;
     145                        $id_type = _request('id_'.$type) ;
     146                        if ($id_type) {
     147                                $config['type']=$type;
     148                                $config['id']=$id_type;
     149                                switch($type) {
     150                                        case 'article':
     151                                        case 'rubrique':
     152                                                $config['scayt_sLang'] = ckeditor_get_scaytlang($type, $id_type) ;
     153                                                break ;
     154                                }
     155                        }
     156                }
     157                if (!$config['type'] && !$config['id']) {
     158                        $type = $exec ;
     159                        switch($type) {
    140160                                case 'article':
    141161                                case 'rubrique':
    142                                         $config['scayt_sLang'] = ckeditor_get_scaytlang($type, $id_type) ;
    143                                         break ;
    144                         }
    145                 }
    146         }
    147         if (!$config['type'] && !$config['id']) {
    148                 $type = $exec ;
    149                 switch($type) {
    150                         case 'article':
    151                         case 'rubrique':
    152                                 $config['type'] = $type ;
    153                                 $id_type = _request('id_'.$type) ;
    154                                 if ($id_type) {
    155                                         $config['id'] = $id_type ;
    156                                         $config['scayt_sLang'] = ckeditor_get_scaytlang($type, $id_type) ;
    157                                 }
    158                                 break;
    159                         default:
    160                 }
    161         }
    162         if($champs = ckeditor_prepare_champs(ckeditor_lire_config('selecteurs_prive',_CKE_PRIVE_DEF)))
    163                 $config['ajaxload']=$champs;
    164 
    165         if(_request('exec') == 'configurer_ckeditor_p6') {
    166                 $config['ajaxload'][] = array('textarea#champ_modele','Full') ;
    167         }
    168 
    169         if (count($config['ajaxload']))
     162                                        $config['type'] = $type ;
     163                                        $id_type = _request('id_'.$type) ;
     164                                        if ($id_type) {
     165                                                $config['id'] = $id_type ;
     166                                                $config['scayt_sLang'] = ckeditor_get_scaytlang($type, $id_type) ;
     167                                        }
     168                                        break;
     169                                default:
     170                        }
     171                }
    170172                $flux .= ckeditor_preparescript($config) ;
    171 
    172         return $flux."\n<!-- fin de : ckeditor_header_prive -->\n" ;
     173                $flux .= "\n<!-- fin de : ckeditor_header_prive -->\n" ;
     174        }
     175        return $flux ;
    173176}
    174177
    175178function ckeditor_insert_head($flux) {
    176         $flux .= "\n<!-- début de : ckeditor_insert_head -->\n" ;
    177         if (ckeditor_lire_config('insertcsspublic', _CKE_INSERT_CSSPUBLIC_DEF)) {
    178                 $flux .= ckeditor_getcss() ;
    179         }
    180179        $config=array('ajaxload'=>array());
    181         if ((_request('page')=='cisf_article')&&ckeditor_lire_config('cisf', _CKE_CISF_DEF)) {
    182                 $config['ajaxload']=ckeditor_prepare_champs('article',ckeditor_lire_config('cisf_tb',_CKE_CISF_TB_DEF));
    183                 $config['type'] = 'article' ;
    184                 $id = _request('id_article') ;
    185                 if ($id) {
    186                         $config['id'] = $id ;
    187                         switch($type) {
    188                                 case 'article':
    189                                 case 'rubrique':
    190                                         $res = sql_select('lang', 'spip_'.$type.'s', 'id_'.$type.' = '.$id_type) ;
    191                                         if ($row = sql_fetch($res)) {
    192                                                 $config['scayt_sLang'] = ckeditor_spiplang_to_scayt($row['lang']) ;
    193                                         }
    194                                         break ;
    195                         }               
    196                 }
    197         } else // on essaie quand même de déterminer le contexte d'édition :
    198         if (is_array($GLOBALS['page']) && is_array($GLOBALS['page']['contexte'])) {
    199                 $type=$GLOBALS['page']['contexte']['type'] ;
    200                 $id=$GLOBALS['page']['contexte']['id_'.$type];
    201                 if ($id) {
    202                         $config['type']=$type;
    203                         $config['id']=$id;
    204                 }
    205         }
    206180        if($champs = ckeditor_prepare_champs(ckeditor_lire_config('selecteurs_public',_CKE_PUBLIC_DEF)))
    207181                $config['ajaxload']=$champs;
    208182
    209         if (count($config['ajaxload'])) // s'il y a quelque chose à charger :
     183        if (count($config['ajaxload'])) {// s'il y a quelque chose à charger :
     184                $flux .= "\n<!-- début de : ckeditor_insert_head -->\n" ;
     185                if (ckeditor_lire_config('insertcsspublic', _CKE_INSERT_CSSPUBLIC_DEF)) {
     186                        $flux .= ckeditor_getcss() ;
     187                }
     188                if ((_request('page')=='cisf_article')&&ckeditor_lire_config('cisf', _CKE_CISF_DEF)) {
     189                        $config['type'] = 'article' ;
     190                        $id = _request('id_article') ;
     191                        if ($id) {
     192                                $config['id'] = $id ;
     193                                switch($type) {
     194                                        case 'article':
     195                                        case 'rubrique':
     196                                                $res = sql_select('lang', 'spip_'.$type.'s', 'id_'.$type.' = '.$id_type) ;
     197                                                if ($row = sql_fetch($res)) {
     198                                                        $config['scayt_sLang'] = ckeditor_spiplang_to_scayt($row['lang']) ;
     199                                                }
     200                                                break ;
     201                                }               
     202                        }
     203                } else // on essaie quand même de déterminer le contexte d'édition :
     204                if (is_array($GLOBALS['page']) && is_array($GLOBALS['page']['contexte'])) {
     205                        $type=$GLOBALS['page']['contexte']['type'] ;
     206                        $id=$GLOBALS['page']['contexte']['id_'.$type];
     207                        if ($id) {
     208                                $config['type']=$type;
     209                                $config['id']=$id;
     210                        }
     211                }
    210212                $flux .= ckeditor_preparescript($config) ;
    211 
    212         return $flux."\n<!-- fin de : ckeditor_insert_head -->\n" ;
     213                $flux .= "\n<!-- fin de : ckeditor_insert_head -->\n" ;
     214        }
     215        return $flux ;
    213216}
    214217
     
    272275        global $auteur_session ;
    273276        static $init_done = false ;
     277
    274278        if (!$init_done) {
    275279                        $cke_cfg= array() ;
     
    618622        }
    619623        $script .= "    <script type=\"text/javascript\">
    620 function loadCKEditor() {
    621         // la configuration de ckeditor :
    622         CKEDITOR.ckeditorpath=".$ckeditor_json_encode(url_absolue(_CKE_JS)).";
    623         CKEDITOR.spipurl=".$ckeditor_json_encode(url_absolue(_DIR_RACINE.'spip.php')).";
    624         CKEDITOR.ckpreferedversion='"._CKE_PREFERED_VERSION."';
    625         CKEDITOR.ckeditmode='$editmode';
    626         CKEDITOR.cache_redim=".$ckeditor_json_encode(ckeditor_lire_config('cache_redim', _CKE_CACHE_REDIM_DEF)?true:false).";
    627         CKEDITOR.ckConfig = ".$ckeditor_json_encode($ckeditor_config_post($cke_cfg)).";
    628 
    629         var ajaxload=".$ckeditor_json_encode($config['ajaxload']).";
    630         try {
    631                 var prefix_id = $(this).attr('id');
    632                 if ((prefix_id != undefined) && prefix_id.match(/^\w+$/)){
    633                         $.each(ajaxload, function(i){
    634                                 ajaxload[i][2]=prefix_id;
    635                                 ajaxload[i][0]='#'+prefix_id+' '+ajaxload[i][0];
    636                         });
    637                         for(name in CKEDITOR.instances) {
    638                                 CKEDITOR.instances[name].destroy()
    639                         }
    640                         CKEDITOR.instances = [] ;
    641                 }
    642         } catch (E) {}
    643         fullInitCKEDITOR(ajaxload) ;
    644 }
    645 
    646 // fix: http://contrib.spip.net/CKeditor-3-0#forum468153
    647 function ajaxLoadCKEditor() {
    648         CKEDITOR = window.parent.document.CKEDITOR ;
    649         loadCKEditor() ;
    650 }
    651 $(window).load(function(){
    652         if(typeof onAjaxLoad == 'function') onAjaxLoad(ajaxLoadCKEditor);
     624$(document).ready(function(){
     625        function loadCKEditor() {
     626                // la configuration de ckeditor :
     627                CKEDITOR.ckeditorpath=".$ckeditor_json_encode(url_absolue(_CKE_JS)).";
     628                CKEDITOR.spipurl=".$ckeditor_json_encode(url_absolue(_DIR_RACINE.'spip.php')).";
     629                CKEDITOR.ckpreferedversion='"._CKE_PREFERED_VERSION."';
     630                CKEDITOR.ckeditmode='$editmode';
     631                CKEDITOR.cache_redim=".$ckeditor_json_encode(ckeditor_lire_config('cache_redim', _CKE_CACHE_REDIM_DEF)?true:false).";
     632                CKEDITOR.ckConfig = ".$ckeditor_json_encode($ckeditor_config_post($cke_cfg)).";
     633
     634                var ajaxload=".$ckeditor_json_encode($config['ajaxload']).";
     635                CKEDITOR.instances = [] ; // normalement aucune instances de CKEDITOR n'est valide à cet instant, on les vide.
     636                fullInitCKEDITOR(ajaxload) ;
     637        }
     638
     639        if(typeof onAjaxLoad == 'function') onAjaxLoad(loadCKEditor);
    653640        loadCKEditor();
    654641}) ;
  • _plugins_/ckeditor-spip-plugin/trunk/paquet.xml

    r73818 r74389  
    22        prefix="ckeditor"
    33        categorie="edition"
    4         version="0.16.12"
     4        version="0.16.13"
    55        etat="dev"
    66        compatibilite="[3.0.5;3.0.*]"
  • _plugins_/ckeditor-spip-plugin/trunk/plugin.xml

    r73818 r74389  
    22        <nom><multi>[fr]CKEditor pour SPIP[en]CKEditor for SPIP[ar]CKEDITOR &#1604; SPIP</multi></nom>
    33        <auteur>Auteurs : [Fr&#233;d&#233;ric Bonnaud->mailto:fred@lea-linux.org], [Mehdi Cherifi (Superyms)->mailto:superyms@gmail.com], [Emmanuel Dreyfus->mailto:manu@netbsd.org]</auteur>
    4         <version>0.16.12</version>
     4        <version>0.16.13</version>
    55        <etat>test</etat>
    66        <description>
Note: See TracChangeset for help on using the changeset viewer.