Question

Est-il possible de créer un bloc de code dans le CKEditor qui ne sera pas touché par l'éditeur lui-même, et sera maintenu dans son état-prévu jusqu'à ce que modifié explicitement par l'utilisateur? Je suis tenté d'entrer des variables javascript (lié dans les balises de script) et une animation flash ci-dessous, mais CKEditor continue de réécrire mon code collé / balisage, et ce faisant briser mon code.

Je travaille avec la configuration suivante:

<script type="text/javascript">
  var editor = CKEDITOR.replace("content", {
    height : "500px",
    width : "680px",
    resize_maxWidth : "680px",
    resize_minWidth : "680px",
    toolbar :
    [
      ['Source','-','Save','Preview'],
      ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
      ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
      ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
      ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
      ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
      ['Link','Unlink','Anchor'],
      ['Image','Table','HorizontalRule','SpecialChar']
    ]
  });
  CKFinder.SetupCKEditor( editor, "<?php print url::base(); ?>assets/ckfinder" );
</script>

Je suppose que la solution la plus idéale serait de préserver le contenu d'une balise qui contient class="preserve" permettant beaucoup plus que les exclusivités limitées.

Mise à jour : Je pense la solution à ce problème est en CKEDITOR.config.protectedSource() , mais mon expérience d'expression régulière se révèle être trop jeune pour gérer ce problème. Comment pourrais-je aller sur exemptant toutes les balises qui contiennent la classe « préservée » d'être touché par CKEditor?

Était-ce utile?

La solution 3

La question est pas avec le CKEditor. Au lieu de cela, la question était avec le MVC-Engine exécutant le site lui-même. Kohana a un global_xss_filtering au sein de sa configuration qui est activée par défaut. Cela empêche la soumission des balises de script, afin d'éviter les scripts attaques sur votre site. La modification de cette valeur à false permettra la présentation des balises <script> dans les formes, mais il ouvre aussi le site à des problèmes de sécurité potentiels qui peuvent être très graves. Il est recommandé que vous ne désactivez global_xss_filtering.

/* /(system|application)/config/config.php - line 66 */
/**
 * Enable or disable global XSS filtering of GET, POST, and SERVER data. This
 * option also accepts a string to specify a specific XSS filtering tool.
 */
$config['global_xss_filtering'] = FALSE;

Autres conseils

Dans le dossier CKEditor vous avez un fichier config.js . Ouvrez-le et collez le code:

CKEDITOR.editorConfig = function( config ) {
    config.allowedContent = {
        script: true,
        $1: {
            // This will set the default set of elements
            elements: CKEDITOR.dtd,
            attributes: true,
            styles: true,
            classes: true
        }
    };
};

Il permettra balises <script>...</script> en mode Source.

Suggestion 1:. Créer une zone de texte simple séparé pour l'administrateur d'entrer dans le script / code HTML

Suggestion 2: Mettre en place un bbcode, comme [script][/script] ou [html][/html] que les administrateurs peuvent utiliser pour mettre les scripts / code HTML et de les traduire votre côté serveur dans <script></script> et le code HTML. Assurez-vous que lors de l'affichage d'un contenu enregistré dans le CKEditor, vous devez avoir les traduire votre côté serveur dans le BBcode premier (ou CKEditor leur dépouilleront). Ou la façon moins de tracas est de stocker le contenu soumis dans la base de données comme il est entré et seulement faire la traduction lors de l'affichage de la page.

Suggestion 3 : Puisque vous souhaitez utiliser class="preserve" pour marquer les balises que vous ne voulez pas CKEditor à dépouilleront, puis ajoutez les lignes JavaScript suivantes lors de l'initialisation de l'éditeur:

// protect <anytag class="preserve"></anytag>
CKEDITOR.config.protectedSource.push( /<([\S]+)[^>]*class="preserve"[^>]*>.*<\/\1>/g );
// protect <anytag class="preserve" /><
CKEDITOR.config.protectedSource.push( /<[^>]+class="preserve"[^>\/]*\/>/g );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top