德育量化管理系统

特色功能

JavaScript技术

给kindeditor编辑器添加FLV上传播放功能,其中使用flowplayer,适用于大部分版本

作者:admin 来源: 人气: 标签:kindeditor flv

最近在做几个项目都用到编辑器,我以前用eWebEditor,按照网上的方法也增加了FLV上传播放的功能。

这次想换个编辑器,看上了kindeditor。

使用过程中,发现上传FLV文件后不能自动播放,百度了几个修改的攻略:

1.首先是kindereditor交流中心的一个帖子:http://kindeditor.net/view.php?bbsid=7&postid=7275

看到评论就没尝试这个方法了。

2.其次是csdn的一个帖子:http://blog.csdn.net/tangjunping/article/details/8098003

博主介绍的是4.0.5的修改方法,他也修改了4.1.4的,但现在最新版本是4.1.10,有点强迫症的人会使用新版本。于是我也就忽略了这个方法。

3.其它还有些低版本别人修改好的打包文件,我没试。

4.也是csdn的一个帖子,他修改了两处简单的地方http://blog.csdn.net/zhjx922/article/details/7601660

我尝试了,没成功。

5.博客园的帖子。http://www.cnblogs.com/henshui/archive/2013/02/06/2903610.html

在我尝试了好几次,研究了几番之后,成功了。可以看到这个帖子我的回复得到提示。但要注意程序中编辑器的路径。而且帖子中的播放器使用了后没有进度条之类的工具条,经过我几番研究搜索尝试,加上了。

所以以下代码基于kindeditor-4.1.10和博客园的帖子修改。


1、在plugin下建立文件夹flvplayer, 建立flvplayer.js文件 源码如下

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. /******************************************************************************* 
  2. * KindEditor - WYSIWYG HTML Editor for Internet 
  3. * Copyright (C) 2006-2011 kindsoft.net 
  4. * 
  5. * @author Roddy <luolonghao@gmail.com> 
  6. * @site http://www.kindsoft.net/ 
  7. * @licence http://www.kindsoft.net/license.php 
  8. * 再次修改:by tmouse 2014.4.7 
  9. *******************************************************************************/  
  10.    
  11. KindEditor.plugin('flvplayer'function(K) {  
  12.     var self = this, name = 'flvplayer', lang = self.lang(name + '.'),  
  13.         allowFlashUpload = K.undef(self.allowFlashUpload, true),  
  14.         allowFileManager = K.undef(self.allowFileManager, false),  
  15.         formatUploadUrl = K.undef(self.formatUploadUrl, true),  
  16.         extraParams = K.undef(self.extraFileUploadParams, {}),  
  17.         filePostName = K.undef(self.filePostName, 'imgFile'),  
  18.         uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php');  
  19.     self.plugin.flash = {  
  20.         edit : function() {  
  21.             var html = [  
  22.                 '<div style="padding:20px;">',  
  23.                 //url  
  24.                 '<div class="ke-dialog-row">',  
  25.                 '<label for="keUrl" style="width:60px;">' + lang.url + '</label>',  
  26.                 '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" />  ',  
  27.                 '<input type="button" class="ke-upload-button" value="' + lang.upload + '" />  ',  
  28.                 '<span class="ke-button-common ke-button-outer">',  
  29.                 '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',  
  30.                 '</span>',  
  31.                 '</div>',  
  32.                 //width  
  33.                 '<div class="ke-dialog-row">',  
  34.                 '<label for="keWidth" style="width:60px;">' + lang.width + '</label>',  
  35.                 '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> ',  
  36.                 '</div>',  
  37.                 //height  
  38.                 '<div class="ke-dialog-row">',  
  39.                 '<label for="keHeight" style="width:60px;">' + lang.height + '</label>',  
  40.                 '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> ',  
  41.                 '</div>',  
  42.                 '</div>'  
  43.             ].join('');  
  44.             var dialog = self.createDialog({  
  45.                 name : name,  
  46.                 width : 450,  
  47.                 title : self.lang(name),  
  48.                 body : html,  
  49.                 yesBtn : {  
  50.                     name : self.lang('yes'),  
  51.                     click : function(e) {  
  52.                         var url = K.trim(urlBox.val()),  
  53.                             width = widthBox.val(),  
  54.                             height = heightBox.val();  
  55.                         if (url == 'http://' || K.invalidUrl(url)) {  
  56.                             alert(self.lang('invalidUrl'));  
  57.                             urlBox[0].focus();  
  58.                             return;  
  59.                         }  
  60.                         if (!/^\d*$/.test(width)) {  
  61.                             alert(self.lang('invalidWidth'));  
  62.                             widthBox[0].focus();  
  63.                             return;  
  64.                         }  
  65.                         if (!/^\d*$/.test(height)) {  
  66.                             alert(self.lang('invalidHeight'));  
  67.                             heightBox[0].focus();  
  68.                             return;  
  69.                         }  
  70.                     //  var html = K.mediaImg(self.themesPath + 'common/blank.gif', {  
  71. //                              src : url,  
  72. //                              type : K.mediaType('.swf'),  
  73. //                              width : width,  
  74. //                              height : height,  
  75. //                              quality : 'high'  
  76. //                          });  
  77.                     var html='<script src="kindeditor-4.1.10/plugins/flvplayer/flowplayer/flowplayer-3.2.11.min.js"></script>';  
  78.                     html += '<a href="'+url+'" style="display:block;width:'+width+'px;height:'+height+'px;margin-left:auto;margin-right:auto" id="player">      
  79.   
  80. </a>';  
  81.                     //html+='<script language="JavaScript">flowplayer("player", "kindeditor-4.1.10/plugins/flvplayer/flowplayer/flowplayer-  
  82.   
  83. 3.2.15.swf");</script>';                   
  84.                     html+='<script language="JavaScript">var player=flowplayer("player","kindeditor-4.1.10/plugins/flvplayer/flowplayer/flowplayer-  
  85.   
  86. 3.2.16.swf",{plugins:{pseudo:{url:"kindeditor-4.1.10/plugins/flvplayer/flowplayer/flowplayer.pseudostreaming-3.2.12.swf"},controls:{autoHide:  
  87.   
  88. {fullscreenOnly:true,hideDelay:2000},height:30,scrubber:true,buttonColor:"rgba(0, 0, 0,   
  89.   
  90. 0.9)",buttonOverColor:"#000000",backgroundGradient:"medium",backgroundColor:"#D7D7D7",sliderColor:"#2c2c2c",bufferColor:"#606060",progressColor:"#056e9f",sli  
  91.   
  92. derBorder:"1px solid #808080",sliderHeight:20,volumeSliderColor:"#FFFFFF",volumeBorder:"1px solid   
  93.  
  94. #808080",timeColor:"#000000",durationColor:"#535353",tooltips:{buttons:true,play:"播放",fullscreen:"全屏",fullscreenExit:"退出全屏",pause:"暂停",mute:"静  
  95.   
  96. ",unmute:"取消静音"}}},onStart:function(clip){animate(this,{bottom:31})},onFullscreen:function(){},onFullscreenExit:function(){},onBegin:function()  
  97.   
  98. {}});</script>';  
  99.                         self.insertHtml(html).hideDialog().focus();  
  100.                  }  
  101.                 }  
  102.             }),  
  103.             div = dialog.div,  
  104.             urlBox = K('[name="url"]', div),  
  105.             viewServerBtn = K('[name="viewServer"]', div),  
  106.             widthBox = K('[name="width"]', div),  
  107.             heightBox = K('[name="height"]', div);  
  108.             urlBox.val('http://');  
  109.    
  110.             if (allowFlashUpload) {  
  111.                 var uploadbutton = K.uploadbutton({  
  112.                     button : K('.ke-upload-button', div)[0],  
  113.                     fieldName : filePostName,  
  114.                     extraParams : extraParams,  
  115.                     url : K.addParam(uploadJson, 'dir=flvplayer'),  
  116.                     afterUpload : function(data) {  
  117.                         dialog.hideLoading();  
  118.                         if (data.error === 0) {  
  119.                             var url = data.url;  
  120.                             if (formatUploadUrl) {  
  121.                                 url = K.formatUrl(url, 'absolute');  
  122.                             }  
  123.                             urlBox.val(url);  
  124.                             if (self.afterUpload) {  
  125.                                 self.afterUpload.call(self, url, data, name);  
  126.                             }  
  127.                             alert(self.lang('uploadSuccess'));  
  128.                         } else {  
  129.                             alert(data.message);  
  130.                         }  
  131.                     },  
  132.                     afterError : function(html) {  
  133.                         dialog.hideLoading();  
  134.                         self.errorDialog(html);  
  135.                     }  
  136.                 });  
  137.                 uploadbutton.fileBox.change(function(e) {  
  138.                     dialog.showLoading(self.lang('uploadLoading'));  
  139.                     uploadbutton.submit();  
  140.                 });  
  141.             } else {  
  142.                 K('.ke-upload-button', div).hide();  
  143.             }  
  144.    
  145.             if (allowFileManager) {  
  146.                 viewServerBtn.click(function(e) {  
  147.                     self.loadPlugin('filemanager'function() {  
  148.                         self.plugin.filemanagerDialog({  
  149.                             viewType : 'LIST',  
  150.                             dirName : 'flvplayer',  
  151.                             clickFn : function(url, title) {  
  152.                                 if (self.dialogs.length > 1) {  
  153.                                     K('[name="url"]', div).val(url);  
  154.                                     if (self.afterSelectFile) {  
  155.                                         self.afterSelectFile.call(self, url);  
  156.                                     }  
  157.                                     self.hideDialog();  
  158.                                 }  
  159.                             }  
  160.                         });  
  161.                     });  
  162.                 });  
  163.             } else {  
  164.                 viewServerBtn.hide();  
  165.             }  
  166.    
  167.             var img = self.plugin.getSelectedFlash();  
  168.             if (img) {  
  169.                 var attrs = K.mediaAttrs(img.attr('data-ke-tag'));  
  170.                 urlBox.val(attrs.src);  
  171.                 widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0);  
  172.                 heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0);  
  173.             }  
  174.             urlBox[0].focus();  
  175.             urlBox[0].select();  
  176.         },  
  177.         'delete' : function() {  
  178.             self.plugin.getSelectedFlash().remove();  
  179.         }  
  180.     };  
  181.     self.clickToolbar(name, self.plugin.flash.edit);  
  182. });  

这里面的var html=''经过我的修改,分成3句,后一个script经过http://js.clicki.cc/美化成一行,也增加了工具条的功能。

可能复制过来换成多行了,需要自行修改成一行!切记!!!


2、在themes\default\default.css这个文件末尾增加样式:

  1. .ke-icon-flvplayer {  
  2.     background-position: 0px -512px;  
  3.     width: 16px;  
  4.     height: 16px;  
  5. }  

3、默认插件调用增加

修改kindeditor.js文件

items : 里面 'flash' 后增加 'flvplayer'

htmlTags里增加:
script:['src','language'], 我是在最前面font前加的。因为编辑器采用了白名单过滤,在第1处里的Html这个变量里使用了script代码。

4、关于上传和文件管理 的服务器脚本修改(以asp.net为例)

修改upload_json.ashx文件
在对应地方增加 extTable.Add("flvplayer", "flv,f4v,mp4");

修改file_manager_json.ashx文件
修改某处为if (Array.IndexOf("image,flash,media,file,flvplayer".Split(','), dirName) == -1),也就是增加 flvplayer这个目录名

5、修改语言包lang文件夹下的zh_CN.js文件
对应flash两处的下方添加
第一处:
flvplayer : 'FLV视频',

第二处:
'flash.viewServer' : '文件空间',
'flvplayer.url' : 'URL',
'flvplayer.width' : '宽度',
'flvplayer.height' : '高度',
'flvplayer.upload' : '上传',
'flvplayer.viewServer' : '文件空间',

6、关于 flowplayer的设置

我找来找去,找到了http://chenxiuheng.iteye.com/blog/1880484这个帖子

我只取了其中的 var player 这段,同时下载了里面提到的播放器所要用到的4个文件到本地。里面使用了flowplayer-3.2.16.swf,但同时还要下载低一个版本的flowplayer.controls-3.2.15.swf到对应的文件夹,还有flowplayer.pseudostreaming-3.2.12.swf和flowplayer-3.2.12.min.js

经过这几步,就可以上传播放flv等视频了,这应该是最全的方法了吧?


修改后的kindeditor-4.1.10增加FLV上传播放功能文件可以在csdn资源下载里搜索关键词 kindeditor-4.1.10