Browse Source

fix: utilisation de ckeditor avec les forums

clean: meilleurs implémentation du nettoyages des instances fantômes
svn/root/tags/v0.17.1
fredlefred@gmail.com 10 years ago
parent
commit
eda3082167
  1. 2
      .gitattributes
  2. 26
      ckeditor4spip.js.html
  3. 37
      ckeditor_fonctions.php

2
.gitattributes vendored

@ -21,6 +21,7 @@ ckeditor-plugin/spipmodeles/plugin.js -text
ckeditor-plugin/spipsave/plugin.js -text
ckeditor-plugin/zpippreview/plugin.js -text
ckeditor-plugin/zpippreview/preview.png -text svneol=unset#image/png
/ckeditor4spip.js.html -text
/ckeditor_administrations.php -text
/ckeditor_autorisations.php -text
/ckeditor_fonctions.php -text
@ -32,7 +33,6 @@ css/cked-editor.css -text
css/ckeditor.css.html -text
css/filebrowser.css -text
/filebrowser.html -text
fonds/ckeditor4spip.js.html -text
formulaires/configurer_ckeditor.html -text
formulaires/configurer_ckeditor.php -text
formulaires/configurer_ckeditor_p2.html -text

26
fonds/ckeditor4spip.js.html → ckeditor4spip.js.html

@ -1,8 +1,6 @@
[(#CACHE{0})][(#HTTP_HEADER{Content-type: text/javascript[; charset=(#CHARSET)]})]
<BOUCLE_si(CONDITION){si #SESSION{statut}|<{2}}>
var ckeDataProcessor;
var defined_ed = {} ; // liste les editeurs déjà définis - pour éviter les créations redondantes
var sansConversion = [(#CONFIG{ckeditor/conversion}|=={'aucune'}|?{true,false})] ;
if (sansConversion) {
@ -128,16 +126,14 @@ function SpipEditor2CKEditor(editor_id){
var EdConfig={};$.extend(EdConfig,CKEDITOR.ckConfig) ;
EdConfig.toolbar='Spip'+stack[editor_id].tb;
try { // fix les problèmes des instances de ckeditor répertoriées, mais non visibles/accessibles du fait du rechargement via ajax
if (stack[editor_id].editor) {
var instance = CKEDITOR.instances[stack[editor_id].editor] ;
var id = $(editor_id).attr('id') ;
if (id) {
var instance = CKEDITOR.instances[id] ;
if (instance) {
exit;
CKEDITOR.remove(instance) ;
instance.destroy() ;
}
}
} catch (E) {
/* rien */
}
} catch (E) { /* rien */ }
try {
$(editor_id).ckeditor(function(){
HideSpipUI(editor_id);
@ -173,15 +169,10 @@ function SpipEditor2CKEditor(editor_id){
$('#swapeditor_'+stack[editor_id].ndx).attr('disabled',false);
this.setReadOnly(false);
this.resize(CKEDITOR.ckConfig.minwidth,CKEDITOR.ckConfig.height);
var ckeditor = this ;
$(editor_id).parents().find('input[class=submit]').click(function() {
CKEditor2SpipEditor(editor_id) ; // ça c'est sub-optimal, mais ça fonctionne
//ckeditor.updateElement() ; // ça c'est ce qu'il me semble qu'il faurait faire, mais ça ne fonctionne pas ...
}) ;
$(editor_id).parents().find('input[class=submit]') // fix: a priori ceci n'est nécessaire que pour les forums, mais il semble que cela fonctionne aussi pour les autres formulaires
.attr('onclick', 'javacript:CKEditor2SpipEditor(\''+editor_id+'\');') ;
},EdConfig);
} catch (E) {
alert("Erreur non prévue : \n"+E) ;
}
} catch (E) { /* rien */ }
}
function barrebouilles_editor(editor_id){
@ -382,4 +373,3 @@ function fullInitCKEDITOR(editor_ids){
}}
}
}
</BOUCLE_si>

37
ckeditor_fonctions.php

@ -594,7 +594,7 @@ $ajaxload
<script type=\"text/javascript\" src=\"".url_absolue(_CKE_JS)."\"></script>
<script type=\"text/javascript\">CKEDITOR.config.jqueryOverrideVal=true;</script>
<script type=\"text/javascript\" src=\"".url_absolue(_CKE_JQUERY)."\"></script>
<script type=\"text/javascript\" src=\"".(function_exists("produire_fond_statique")?produire_fond_statique("fonds/ckeditor4spip.js"):url_absolue(_DIR_RACINE."?page=fonds/ckeditor4spip.js"))."\"></script>\n";
<script type=\"text/javascript\" src=\"".(function_exists("produire_fond_statique")?produire_fond_statique("ckeditor4spip.js"):url_absolue(_DIR_RACINE."?page=ckeditor4spip.js"))."\"></script>\n";
if ($load_extra_js) {
$script .= " <script type=\"text/javascript\" src=\"$load_extra_js\"></script>\n" ;
}
@ -610,34 +610,25 @@ $ajaxload
}
$script .= " <script type=\"text/javascript\">
function loadCKEditor() {
var prefix_id ;
try {
prefix_id = $(this).attr('id');
} catch (E) {
prefix_id = undefined ;
}
var ajaxload=".$ckeditor_json_encode($config['ajaxload']).";
if ((prefix_id != undefined) && prefix_id.match(/^\w+$/)){
$.each(ajaxload, function(i){
ajaxload[i][2]=prefix_id;
ajaxload[i][0]='#'+prefix_id+' '+ajaxload[i][0];
});
}
$.each(ajaxload, function(i){
$(ajaxload[i][0]).each(function(i){
var temp_id = this.id;
var hEd = CKEDITOR.instances[temp_id];
if (hEd)
hEd.destroy();
});
});
try {
var prefix_id = $(this).attr('id');
if ((prefix_id != undefined) && prefix_id.match(/^\w+$/)){
$.each(ajaxload, function(i){
ajaxload[i][2]=prefix_id;
ajaxload[i][0]='#'+prefix_id+' '+ajaxload[i][0];
});
for(name in CKEDITOR.instances) {
CKEDITOR.instances[name].destroy()
}
CKEDITOR.instances = [] ;
}
} catch (E) {}
fullInitCKEDITOR(ajaxload) ;
}
$(window).load(function(){
if(typeof onAjaxLoad == 'function') onAjaxLoad(loadCKEditor);
loadCKEditor();
}) ;
</script>" ;

Loading…
Cancel
Save