@@ -454,7 +454,7 @@ function $(selector) {
454454*/
455455
456456var config = {
457- menus : [ 'head' , 'bold' , 'italic' , 'underline' , 'strikeThrough' , 'foreColor' , 'backColor' , 'link' , 'list' , 'justify' , 'quote' , 'emoticon' , 'table' , 'code' , 'undo' , 'redo' ]
457+ menus : [ 'head' , 'bold' , 'italic' , 'underline' , 'strikeThrough' , 'foreColor' , 'backColor' , 'link' , 'list' , 'justify' , 'quote' , 'emoticon' , 'table' , 'video' , ' code', 'undo' , 'redo' ]
458458} ;
459459
460460/*
@@ -819,13 +819,14 @@ Panel.prototype = {
819819 $textContainerElem . append ( $container ) ;
820820
821821 // 绑定 opt 的事件,只有添加到 DOM 之后才能绑定成功
822- tabs . forEach ( function ( tab ) {
822+ tabs . forEach ( function ( tab , index ) {
823823 var events = tab . events || [ ] ;
824824 events . forEach ( function ( event ) {
825825 var selector = event . selector ;
826826 var type = event . type ;
827827 var fn = event . fn || emptyFn ;
828- $container . find ( selector ) . on ( type , function ( e ) {
828+ var $content = tabContentArr [ index ] ;
829+ $content . find ( selector ) . on ( type , function ( e ) {
829830 e . stopPropagation ( ) ;
830831 var needToHide = fn ( e ) ;
831832 // 执行完事件之后,是否要关闭 panel
@@ -1565,10 +1566,20 @@ Emoticon.prototype = {
15651566 var _this = this ;
15661567
15671568 // 拼接表情字符串
1568- var html = '' ;
1569- var str = '😀 😃 😄 😁 😆 😅 😂 😊 😇 🙂 🙃 😉 😌 😍 😘 😗 😙 😚 😋 😜 😝 😛 🤑 🤗 🤓 😎 😏 😒 😞 😔 😟 😕 🙁 😣 😖 😫 😩 😤 😠 😡 😶 😐 😑 😯 😦 😧 😮 😲 😵 😳 😱 😨 😰 😢 😥 😭 😓 😪 😴 🙄 🤔 😬 🤐' ;
1570- str . split ( / \s / ) . forEach ( function ( item ) {
1571- html += '<span class="w-e-item">' + item + '</span>' ;
1569+ var faceHtml = '' ;
1570+ var faceStr = '😀 😃 😄 😁 😆 😅 😂 😊 😇 🙂 🙃 😉 😌 😍 😘 😗 😙 😚 😋 😜 😝 😛 🤑 🤗 🤓 😎 😏 😒 😞 😔 😟 😕 🙁 😣 😖 😫 😩 😤 😠 😡 😶 😐 😑 😯 😦 😧 😮 😲 😵 😳 😱 😨 😰 😢 😥 😭 😓 😪 😴 🙄 🤔 😬 🤐' ;
1571+ faceStr . split ( / \s / ) . forEach ( function ( item ) {
1572+ if ( item ) {
1573+ faceHtml += '<span class="w-e-item">' + item + '</span>' ;
1574+ }
1575+ } ) ;
1576+
1577+ var handHtml = '' ;
1578+ var handStr = '🙌 👏 👋 👍 👎 👊 ✊ ️👌 ✋ 👐 💪 🙏 ️👆 👇 👈 👉 🖕 🖐 🤘 🖖' ;
1579+ handStr . split ( / \s / ) . forEach ( function ( item ) {
1580+ if ( item ) {
1581+ handHtml += '<span class="w-e-item">' + item + '</span>' ;
1582+ }
15721583 } ) ;
15731584
15741585 var panel = new Panel ( this , {
@@ -1579,7 +1590,7 @@ Emoticon.prototype = {
15791590 // 标题
15801591 title : '表情' ,
15811592 // 模板
1582- tpl : '<div class="w-e-emoticon-container">' + html + '</div>' ,
1593+ tpl : '<div class="w-e-emoticon-container">' + faceHtml + '</div>' ,
15831594 // 事件绑定
15841595 events : [ {
15851596 selector : 'span.w-e-item' ,
@@ -1591,7 +1602,24 @@ Emoticon.prototype = {
15911602 return true ;
15921603 }
15931604 } ]
1594- } // first tab end
1605+ } , // first tab end
1606+ {
1607+ // 标题
1608+ title : '手势' ,
1609+ // 模板
1610+ tpl : '<div class="w-e-emoticon-container">' + handHtml + '</div>' ,
1611+ // 事件绑定
1612+ events : [ {
1613+ selector : 'span.w-e-item' ,
1614+ type : 'click' ,
1615+ fn : function fn ( e ) {
1616+ var target = e . target ;
1617+ _this . _insert ( target . innerHTML ) ;
1618+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
1619+ return true ;
1620+ }
1621+ } ]
1622+ } // second tab end
15951623 ] // tabs end
15961624 } ) ;
15971625 // 显示 panel
@@ -1936,6 +1964,79 @@ Table.prototype = {
19361964 }
19371965} ;
19381966
1967+ /*
1968+ menu - video
1969+ */
1970+ // 构造函数
1971+ function Video ( editor ) {
1972+ this . editor = editor ;
1973+ this . $elem = $ ( '<div class="w-e-menu"><i class="w-e-icon-play"><i/></div>' ) ;
1974+ this . type = 'panel' ;
1975+
1976+ // 当前是否 active 状态
1977+ this . _active = false ;
1978+ }
1979+
1980+ // 原型
1981+ Video . prototype = {
1982+ constructor : Video ,
1983+
1984+ onClick : function onClick ( ) {
1985+ this . _createPanel ( ) ;
1986+ } ,
1987+
1988+ _createPanel : function _createPanel ( ) {
1989+ var _this = this ;
1990+
1991+ // 创建 id
1992+ var textValId = getRandom ( 'text-val' ) ;
1993+ var btnId = getRandom ( 'btn' ) ;
1994+
1995+ // 创建 panel
1996+ var panel = new Panel ( this , {
1997+ width : 350 ,
1998+ height : 120 ,
1999+ // 一个 panel 多个 tab
2000+ tabs : [ {
2001+ // 标题
2002+ title : '插入视频' ,
2003+ // 模板
2004+ tpl : '<div>\n <div>\n <input id="' + textValId + '" type="text" style="display:block;width:100%;" placeholder="\u683C\u5F0F\u5982\uFF1A<iframe src=... ></iframe>"/>\n </div>\n <div class="w-e-button-container w-e-clear-fix">\n <button id="' + btnId + '" class="default left">\u63D2\u5165</button>\n </div>\n </div>' ,
2005+ // 事件绑定
2006+ events : [ {
2007+ selector : '#' + btnId ,
2008+ type : 'click' ,
2009+ fn : function fn ( ) {
2010+ var $text = $ ( '#' + textValId ) ;
2011+ var val = $text . val ( ) . trim ( ) ;
2012+
2013+ // 测试用视频地址
2014+ // <iframe height=498 width=510 src='http://player.youku.com/embed/XMjcwMzc3MzM3Mg==' frameborder=0 'allowfullscreen'></iframe>
2015+
2016+ if ( val ) {
2017+ // 插入视频
2018+ _this . _insert ( val ) ;
2019+ }
2020+
2021+ // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
2022+ return true ;
2023+ }
2024+ } ]
2025+ } // first tab end
2026+ ] // tabs end
2027+ } ) ; // panel end
2028+
2029+ // 显示 panel
2030+ panel . show ( ) ;
2031+ } ,
2032+
2033+ // 插入视频
2034+ _insert : function _insert ( val ) {
2035+ var editor = this . editor ;
2036+ editor . cmd . do ( 'insertHTML' , val ) ;
2037+ }
2038+ } ;
2039+
19392040/*
19402041 所有菜单的汇总
19412042*/
@@ -1975,6 +2076,8 @@ MenuConstructors.emoticon = Emoticon;
19752076
19762077MenuConstructors . table = Table ;
19772078
2079+ MenuConstructors . video = Video ;
2080+
19782081/*
19792082 菜单集合
19802083*/
0 commit comments