123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- /**
- * 百度应用
- * @file
- * @since 1.2.6.1
- */
- /**
- * 插入百度应用
- * @command webapp
- * @method execCommand
- * @remind 需要百度APPKey
- * @remind 百度应用主页: <a href="http://app.baidu.com/" target="_blank">http://app.baidu.com/</a>
- * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度,
- * height=>应用容器高度,logo=>应用logo,url=>应用地址
- * @example
- * ```javascript
- * //editor是编辑器实例
- * //在编辑器里插入一个“植物大战僵尸”的APP
- * editor.execCommand( 'webapp' , {
- * title: '植物大战僵尸',
- * width: 560,
- * height: 465,
- * logo: '应用展示的图片',
- * url: '百度应用的地址'
- * } );
- * ```
- */
- //UE.plugins['webapp'] = function () {
- // var me = this;
- // function createInsertStr( obj, toIframe, addParagraph ) {
- // return !toIframe ?
- // (addParagraph ? '<p>' : '') + '<img title="'+obj.title+'" width="' + obj.width + '" height="' + obj.height + '"' +
- // ' src="' + me.options.UEDITOR_HOME_URL + 'themes/default/images/spacer.gif" style="background:url(' + obj.logo+') no-repeat center center; border:1px solid gray;" class="edui-faked-webapp" _url="' + obj.url + '" />' +
- // (addParagraph ? '</p>' : '')
- // :
- // '<iframe class="edui-faked-webapp" title="'+obj.title+'" width="' + obj.width + '" height="' + obj.height + '" scrolling="no" frameborder="0" src="' + obj.url + '" logo_url = '+obj.logo+'></iframe>';
- // }
- //
- // function switchImgAndIframe( img2frame ) {
- // var tmpdiv,
- // nodes = domUtils.getElementsByTagName( me.document, !img2frame ? "iframe" : "img" );
- // for ( var i = 0, node; node = nodes[i++]; ) {
- // if ( node.className != "edui-faked-webapp" ){
- // continue;
- // }
- // tmpdiv = me.document.createElement( "div" );
- // tmpdiv.innerHTML = createInsertStr( img2frame ? {url:node.getAttribute( "_url" ), width:node.width, height:node.height,title:node.title,logo:node.style.backgroundImage.replace("url(","").replace(")","")} : {url:node.getAttribute( "src", 2 ),title:node.title, width:node.width, height:node.height,logo:node.getAttribute("logo_url")}, img2frame ? true : false,false );
- // node.parentNode.replaceChild( tmpdiv.firstChild, node );
- // }
- // }
- //
- // me.addListener( "beforegetcontent", function () {
- // switchImgAndIframe( true );
- // } );
- // me.addListener( 'aftersetcontent', function () {
- // switchImgAndIframe( false );
- // } );
- // me.addListener( 'aftergetcontent', function ( cmdName ) {
- // if ( cmdName == 'aftergetcontent' && me.queryCommandState( 'source' ) ){
- // return;
- // }
- // switchImgAndIframe( false );
- // } );
- //
- // me.commands['webapp'] = {
- // execCommand:function ( cmd, obj ) {
- // me.execCommand( "inserthtml", createInsertStr( obj, false,true ) );
- // }
- // };
- //};
- UE.plugin.register("webapp", function() {
- var me = this;
- function createInsertStr(obj, toEmbed) {
- return !toEmbed
- ? '<img title="' +
- obj.title +
- '" width="' +
- obj.width +
- '" height="' +
- obj.height +
- '"' +
- ' src="' +
- me.options.UEDITOR_HOME_URL +
- 'themes/default/images/spacer.gif" _logo_url="' +
- obj.logo +
- '" style="background:url(' +
- obj.logo +
- ') no-repeat center center; border:1px solid gray;" class="edui-faked-webapp" _url="' +
- obj.url +
- '" ' +
- (obj.align && !obj.cssfloat ? 'align="' + obj.align + '"' : "") +
- (obj.cssfloat ? 'style="float:' + obj.cssfloat + '"' : "") +
- "/>"
- : '<iframe class="edui-faked-webapp" title="' +
- obj.title +
- '" ' +
- (obj.align && !obj.cssfloat ? 'align="' + obj.align + '"' : "") +
- (obj.cssfloat ? 'style="float:' + obj.cssfloat + '"' : "") +
- 'width="' +
- obj.width +
- '" height="' +
- obj.height +
- '" scrolling="no" frameborder="0" src="' +
- obj.url +
- '" logo_url = "' +
- obj.logo +
- '"></iframe>';
- }
- return {
- outputRule: function(root) {
- utils.each(root.getNodesByTagName("img"), function(node) {
- var html;
- if (node.getAttr("class") == "edui-faked-webapp") {
- html = createInsertStr(
- {
- title: node.getAttr("title"),
- width: node.getAttr("width"),
- height: node.getAttr("height"),
- align: node.getAttr("align"),
- cssfloat: node.getStyle("float"),
- url: node.getAttr("_url"),
- logo: node.getAttr("_logo_url")
- },
- true
- );
- var embed = UE.uNode.createElement(html);
- node.parentNode.replaceChild(embed, node);
- }
- });
- },
- inputRule: function(root) {
- utils.each(root.getNodesByTagName("iframe"), function(node) {
- if (node.getAttr("class") == "edui-faked-webapp") {
- var img = UE.uNode.createElement(
- createInsertStr({
- title: node.getAttr("title"),
- width: node.getAttr("width"),
- height: node.getAttr("height"),
- align: node.getAttr("align"),
- cssfloat: node.getStyle("float"),
- url: node.getAttr("src"),
- logo: node.getAttr("logo_url")
- })
- );
- node.parentNode.replaceChild(img, node);
- }
- });
- },
- commands: {
- /**
- * 插入百度应用
- * @command webapp
- * @method execCommand
- * @remind 需要百度APPKey
- * @remind 百度应用主页: <a href="http://app.baidu.com/" target="_blank">http://app.baidu.com/</a>
- * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度,
- * height=>应用容器高度,logo=>应用logo,url=>应用地址
- * @example
- * ```javascript
- * //editor是编辑器实例
- * //在编辑器里插入一个“植物大战僵尸”的APP
- * editor.execCommand( 'webapp' , {
- * title: '植物大战僵尸',
- * width: 560,
- * height: 465,
- * logo: '应用展示的图片',
- * url: '百度应用的地址'
- * } );
- * ```
- */
- webapp: {
- execCommand: function(cmd, obj) {
- var me = this,
- str = createInsertStr(
- utils.extend(obj, {
- align: "none"
- }),
- false
- );
- me.execCommand("inserthtml", str);
- },
- queryCommandState: function() {
- var me = this,
- img = me.selection.getRange().getClosedNode(),
- flag = img && img.className == "edui-faked-webapp";
- return flag ? 1 : 0;
- }
- }
- }
- };
- });
|