/** * 百度应用 * @file * @since 1.2.6.1 */ /** * 插入百度应用 * @command webapp * @method execCommand * @remind 需要百度APPKey * @remind 百度应用主页: http://app.baidu.com/ * @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 ? '

' : '') + '' + // (addParagraph ? '

' : '') // : // ''; // } // // 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 ? '" : ''; } 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 百度应用主页: http://app.baidu.com/ * @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; } } } }; });