Changeset 117669 in spip-zone


Ignore:
Timestamp:
Aug 27, 2019, 3:36:55 PM (13 months ago)
Author:
cam.lafit
Message:

Compléter le traitement de conversion HTML de ckeditor

  • Ne pas remplacer ce que fait ckeditor mais le compléter si voulu
  • Evite une boucle infini dans les déclencheur d'événements lors de la conversion SPIP
Location:
_plugins_/ckeditor-spip-plugin/branches/ckeditor-4.x
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/ckeditor-spip-plugin/branches/ckeditor-4.x

    • Property subgit:lock:4d0fc8cd140260e00e0fe60be43900dfe34b75d1 deleted
    • Property subgit:lock:ca4a8a9c59e84a078d00aea19bfc8c2ef9e1b15d set to 2019-08-27T18:18:00.690
  • _plugins_/ckeditor-spip-plugin/branches/ckeditor-4.x/ckeditor4spip.js.html

    r117668 r117669  
    127127    EdConfig.toolbar = 'Spip' + stack[editor_id].tb;
    128128    try {
    129         jQuery(editor_id).ckeditor(function () {
     129        editor = jQuery(editor_id).ckeditor(function () {
    130130            HideSpipUI(editor_id);
    131131            stack[editor_id].n = '#' + this.container.getId();
     
    162162                this.resize(CKEDITOR.ckConfig.minwidth, CKEDITOR.ckConfig.height);
    163163            });
    164         }, EdConfig);
     164        }, EdConfig).editor;
     165
     166        if (!sansConversion) {
     167            /*
     168                Note : La conversion SPIP se fait sur le HTML final.
     169                Par conséquent cela se passe à l'étape 16 des état de l'événement. Autrement il s'agit d'un fragment ckeditor (cf documentation)
     170            */
     171            //https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editor.html#event-toDataFormat
     172            editor.on('toDataFormat', function (evt) {
     173                evt.data.dataValue = jQuery.ajax({
     174                    url: CKEDITOR.spipurl + '?page=ckspip_convert',
     175                    data: {
     176                        text_area: evt.data.dataValue.replace(/<span\s+data-scayt[^>]*>\s*(.*?)\s*<\/span>/g, '$1'),
     177                        cvt: 'html2spip',
     178                        fix: evt.data.fixForBody
     179                    },
     180                    global: false,
     181                    type: 'POST',
     182                    dataType: 'text',
     183                    async: false
     184                }
     185                ).responseText;
     186            }, null, null, 16);
     187
     188            //https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_editor.html#event-toHtml
     189            editor.on('toHtml', function (evt) {
     190                evt.data.dataValue = jQuery.ajax({
     191                    url: CKEDITOR.spipurl + '?page=ckspip_convert',
     192                    data: {
     193                        text_area: evt.data.dataValue.replace(/<span\s+data-scayt[^>]*>\s*(.*?)\s*<\/span>/g, '$1'),
     194                        cvt: 'spip2html',
     195                        fix: evt.data.fixForBody
     196                    },
     197                    global: false,
     198                    type: 'POST',
     199                    dataType: 'text',
     200                    async: false
     201                }
     202                ).responseText;
     203            }, null, null, 16);
     204        }
    165205    } catch (E) { /* rien */ }
    166206}
Note: See TracChangeset for help on using the changeset viewer.