0

CKEditorを使用するようにCMSを移行しています。私は現在、スタイルシートパーサーを利用しようとしています。エディタースタイルがすでに定義されているサイトがたくさんあります。定義は、単純なクラス宣言で作成されます.[class]。デフォルトでは、セレクターは[element].[class]宣言を検索します。

設定してみましたstylesheetParser_validSelectors

config.stylesheetParser_validSelectors = /\.\w+/;

...しかし、スタイルの選択は空です。

Firebugを使用していますが、コンソールにエラーは表示されません。


私の解決策

私はstylesSet2つの理由で構成オプションを使用することになりました:

  1. スタイルの選択に表示される名前を制御できます
  2. デフォルトを設定できますが、オーバーライドは許可します

コード:

if ((typeof EditorStyleSet === 'undefined')
        || (typeof EditorStyleSet !== 'object')
        || !(EditorStyleSet instanceof Array)) {
    // Allow this variable to be set at the site level
    EditorStyleSet = [
        {name:'Title', element:'span', attributes:{'class':'title'}},
        {name:'Subtitle', element:'span', attributes:{'class':'subTitle'}},
        {name:'Header Text', element:'span', attributes:{'class':'headerText'}},
        {name:'Red', element:'span', attributes:{'class':'red'}},
        {name:'Small', element:'span', attributes:{'class':'small'}},
        {name:'Hi-Lite', element:'span', attributes:{'class':'hi-lite'}}
    ];
}
config.stylesSet = EditorStyleSet;
4

1 に答える 1

1

セレクターはデフォルトでブロックされています skipSelectors ( ^\.):

config.stylesheetParser_skipSelectors = /(^body\.|^\.)/i

これは、stylesheetparser プラグインがそのようなケースに対処するように設計されていないためです。ただし、次のようにオーバーライドできます。

config.stylesheetParser_skipSelectors: /^body\./i

スタイルはリストに表示されますが、視覚的に壊れています。次に、stylesheedparser プラグインのコードを見てください (ログaClasses変数も):

for ( i = 0; i < aClasses.length; i++ ) {
    var oElement = aClasses[ i ].split( '.' ),
        element = oElement[ 0 ].toLowerCase(),
        sClassName = oElement[ 1 ];

    styles.push({
        name: element + '.' + sClassName,
        element: element,
        attributes: { 'class': sClassName }
    });
}

少しパッチを当てます:

for ( i = 0; i < aClasses.length; i++ ) {
    var oElement = aClasses[ i ].split( '.' ),
        element, sClassName;

    if ( !oElement.length ) {
        element = '',
        sClassName = oElement;
    } else {
        element = oElement[ 0 ].toLowerCase(),
        sClassName = oElement[ 1 ];
    }

    styles.push({
        name: element + '.' + sClassName,
        element: !element.length ? 'span' : element,
        attributes: { 'class': sClassName }
    });
}

で、これだ!


編集:この問題のチケットを作成しました。

于 2013-01-08T22:34:27.887 に答える