insert-doclink.js

来自「Hippo CMS是一个以信息为中心的开源内容管理系统。Hippo CMS目标是」· JavaScript 代码 · 共 121 行

JS
121
字号
function InsertDoclink(editor) {
  this.editor = editor;
  var cfg = editor.config;
  var self = this;

  // register the toolbar buttons provided by this plugin
  cfg.registerButton({
  id       : "insert-doclink", 
  tooltip  : this._lc("Insert document link"),
  image    : editor.imgURL("insertfilelink.gif", "InsertDoclink"),
  textMode : false,
  action   : function(editor) {
               self.buttonPress(editor);
             }
  });
  cfg.addToolbarElement("insert-doclink", "createlink", 1);
}


InsertDoclink._pluginInfo = {
  name          : "InsertDoclink",
  origin        : "version: 1.0, by Jeroen Reijn, Hippo, http://www.hippo.nl",
  version       : "2.0",
  developer     : "Jeroen Reijn",
  developer_url : "http://www.hippo.nl",
  license       : "Apache 2.0"
};

InsertDoclink.prototype._lc = function(string) {
    return HTMLArea._lc(string, 'InsertDoclink');
};

InsertDoclink.prototype.onGenerate = function() {

};

InsertDoclink.prototype.buttonPress = function(editor) {
    
  var outparam = null;
  var html = editor.getSelectedHTML();
  var sel  = editor._getSelection();
  var range  = editor._createRange(sel);

  var compare = 0;
  if (HTMLArea.is_ie) 
  {
    if(sel.type == "Control")
    {
      compare = range.length;
    }
    else
    {
      compare = range.compareEndPoints("StartToEnd", range);
    }
  } 
  else 
  {
      compare = range.compareBoundaryPoints(range.START_TO_END, range);
  }
  
  if (compare == 0) {
    alert(HTMLArea._lc("You need to select some text before creating a link"));
    return;
  }


  var  a = editor._activeElement(sel);
  if(!(a != null && a.tagName.toLowerCase() == 'a')) {
    a = editor._getFirstAncestor(sel, 'a'); 
  }
  if (a != null && a.tagName.toLowerCase() == 'a')
    outparam = { 
      f_href : HTMLArea.is_ie ? editor.stripBaseURL(a.href) : a.getAttribute("href"),
      f_title : a.title,
      f_target : a.target,
      f_usetarget : editor.config.makeLinkShowsTarget    
     };
  else
    outparam = {
      f_href : '',
      f_title : '',
      f_target : '',
      f_usetarget : editor.config.makeLinkShowsTarget     
    };
  editor._popupDialog( "plugin://InsertDoclink/insert_doclink", function( params ) {
    if ( params ) {
      var f_href = params["f_href"];
      var f_title = params["f_title"];
      var f_target = params["f_target"];
      if (f_href == "" || f_href == null) {
        if (a) {
          var child = a.innerHTML;
          a.parentNode.removeChild(a);
          editor.insertHTML(child);
        }
        return;
      } 
      try {
        var doc = editor._doc;
        if (!a) {
          a = doc.createElement("a");
          a.href = f_href;
          a.title = f_title;
          a.target = f_target;
          a.innerHTML = html;
          if (HTMLArea.is_ie) {
            range.pasteHTML(a.outerHTML);
          } else {
            editor.insertNodeAtSelection(a);
          }
        } else {
          a.href = f_href;
          a.title = f_title;
          a.target = f_target;
        }
      }
      catch (e) { }
    }
  }, outparam);    
};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?