2012-10-01 31 views
5

私のCKEditorで、リンクダイアログの 'linkType'と 'protocol'入力を削除しました。CKEditorリンクダイアログ削除プロトコル

CKEDITOR.on('dialogDefinition', function(ev) 
    { 
     var dialogName = ev.data.name; 
     var dialogDefinition = ev.data.definition; 

     if (dialogName == 'link') 
     { 
      var infoTab = dialogDefinition.getContents('info'); 
      infoTab.remove('linkType'); 
      infoTab.remove('protocol'); 
     } 

    }); 

しかし、私はできるだけ早く私は「G」でHTTPSを入力するようhttps://google.comのようなものを入力evertype://は削除されます。
出力を確認したところ、常にhttp://入力を無視しています。

どうすればこの愚かな動作を無効にすることができますか?

答えて

11

多くの研究、デバッグ、調整を経て、私はついにこの問題を解決しました。

ここで私はそれを行う方法は次のとおりです。私のような怠け者のために

CKEDITOR.on('dialogDefinition', function(e) { 
    // NOTE: this is an instance of CKEDITOR.dialog.definitionObject 
    var dd = e.data.definition; 

    if (e.data.name === 'link') { 
     dd.minHeight = 30; 

     // remove the unwanted tabs 
     dd.removeContents('advanced'); 
     dd.removeContents('target'); 
     dd.removeContents('upload'); 

     // remove all elements from the 'info' tab 
     var tabInfo = dd.getContents('info'); 
     while (tabInfo.elements.length > 0) { 
      tabInfo.remove(tabInfo.elements[0].id); 
     } 

     // add a simple URL text field 
     tabInfo.add({ 
      type : 'text', 
      id : 'urlNew', 
      label : 'URL', 
      setup : function(data) { 
       var value = ''; 
       if (data.url) { 
        if (data.url.protocol) { 
         value += data.url.protocol; 
        } 
        if (data.url.url) { 
         value += data.url.url; 
        } 
       } else if (data.email && data.email.address) { 
        value = 'mailto:' + data.email.address; 
       } 
       this.setValue(value); 
      }, 
      commit : function(data) { 
       data.url = { protocol: '', url: this.getValue() }; 
      } 
     }); 
    } 
}); 
+0

ありがとう! – flu

+0

私はCKeditorの新機能です。私はこのコードをどこに置くべきでしょうか?それはlink.jsの中にありますか?それとも私のページの中に入れていますか? – user2699175

+1

@ user2699175上記のコードをckeditorのルートにある 'config.js'に追加してください。 –

0

、単に迅速なコアファイルのハックを実行します。

  1. オープンプラグイン/リンク/ダイアログ/ link.js
  2. 最小化バージョン内find d=/^(http|https|ftp|news):\/\/(?=.)/i.exec(b);
  3. 削除http|https|ftp|
  4. 保存ファイル、アップロードあなたのサーバーに

リロード後に動作しない場合は、キャッシュの問題かもしれません。ブラウザをプライベートモードで開き、ckeditorに移動してもう一度やり直してください。がんばろう。である私は、あなたが完全にそれを削除する必要はありません最近リンクタイプを非表示にする方法を発見した

0

(私はそれは同様プロトコルのために働くと思うが、それをテストしていません)以下のようdispaly : noneにスタイルを設定する:

infoTab.get('linkType').style = 'display: none'; 

私はこのヘルプ誰か同じ質問here

希望に答え!

1

は、ここで私はV4.5.1でプロトコルを削除方法は次のとおりです。共有のため

CKEDITOR.on('dialogDefinition', function(ev) { 
    var dialogName = ev.data.name; 
    var dialogDefinition = ev.data.definition; 

    if (dialogName === 'link') { 
     var infoTab = dialogDefinition.getContents('info'); 
     infoTab.remove('protocol'); 

     var url = infoTab.get('url'); 
     url.onKeyUp = function(){}; 
     url.setup = function(data) { 
      this.allowOnChange = false; 
      if (data.url) { 
       var value = ''; 
       if (data.url.protocol) { 
        value += data.url.protocol; 
       } 
       if (data.url.url) { 
        value += data.url.url; 
       } 
       this.setValue(value); 
      } 
      this.allowOnChange = true; 
     }; 
     url.commit = function(data) { 
      data.url = { protocol: '', url: this.getValue() }; 
     }; 
    } 
}); 
関連する問題