Commit ecd5731f authored by libin's avatar libin

视频上传配置修改

parent 548b5088
......@@ -6,14 +6,14 @@
* To change this template use File | Settings | File Templates.
*/
(function(){
(function () {
var video = {},
uploadVideoList = [],
isModifyUploadVideo = false,
uploadFile;
window.onload = function(){
window.onload = function () {
$focus($G("videoUrl"));
initTabs();
initVideo();
......@@ -21,17 +21,17 @@
};
/* 初始化tab标签 */
function initTabs(){
function initTabs() {
var tabs = $G('tabHeads').children;
for (var i = 0; i < tabs.length; i++) {
domUtils.on(tabs[i], "click", function (e) {
var j, bodyId, target = e.target || e.srcElement;
for (j = 0; j < tabs.length; j++) {
bodyId = tabs[j].getAttribute('data-content-id');
if(tabs[j] == target){
if (tabs[j] == target) {
domUtils.addClass(tabs[j], 'focus');
domUtils.addClass($G(bodyId), 'focus');
}else {
} else {
domUtils.removeClasses(tabs[j], 'focus');
domUtils.removeClasses($G(bodyId), 'focus');
}
......@@ -40,26 +40,26 @@
}
}
function initVideo(){
createAlignButton( ["videoFloat", "upload_alignment"] );
function initVideo() {
createAlignButton(["videoFloat", "upload_alignment"]);
addUrlChangeListener($G("videoUrl"));
addOkListener();
//编辑视频时初始化相关信息
(function(){
var img = editor.selection.getRange().getClosedNode(),url;
if(img && img.className){
(function () {
var img = editor.selection.getRange().getClosedNode(), url;
if (img && img.className) {
var hasFakedClass = (img.className == "edui-faked-video"),
hasUploadClass = img.className.indexOf("edui-upload-video")!=-1;
if(hasFakedClass || hasUploadClass) {
hasUploadClass = img.className.indexOf("edui-upload-video") != -1;
if (hasFakedClass || hasUploadClass) {
$G("videoUrl").value = url = img.getAttribute("_url");
$G("videoWidth").value = img.width;
$G("videoHeight").value = img.height;
var align = domUtils.getComputedStyle(img,"float"),
parentAlign = domUtils.getComputedStyle(img.parentNode,"text-align");
updateAlignButton(parentAlign==="center"?"center":align);
var align = domUtils.getComputedStyle(img, "float"),
parentAlign = domUtils.getComputedStyle(img.parentNode, "text-align");
updateAlignButton(parentAlign === "center" ? "center" : align);
}
if(hasUploadClass) {
if (hasUploadClass) {
isModifyUploadVideo = true;
}
}
......@@ -70,11 +70,11 @@
/**
* 监听确认和取消两个按钮事件,用户执行插入或者清空正在播放的视频实例操作
*/
function addOkListener(){
dialog.onok = function(){
function addOkListener() {
dialog.onok = function () {
$G("preview").innerHTML = "";
var currentTab = findFocus("tabHeads","tabSrc");
switch(currentTab){
var currentTab = findFocus("tabHeads", "tabSrc");
switch (currentTab) {
case "video":
return insertSingle();
break;
......@@ -86,7 +86,7 @@
break;
}
};
dialog.oncancel = function(){
dialog.oncancel = function () {
$G("preview").innerHTML = "";
};
}
......@@ -95,15 +95,15 @@
* 依据传入的align值更新按钮信息
* @param align
*/
function updateAlignButton( align ) {
var aligns = $G( "videoFloat" ).children;
for ( var i = 0, ci; ci = aligns[i++]; ) {
if ( ci.getAttribute( "name" ) == align ) {
if ( ci.className !="focus" ) {
function updateAlignButton(align) {
var aligns = $G("videoFloat").children;
for (var i = 0, ci; ci = aligns[i++];) {
if (ci.getAttribute("name") == align) {
if (ci.className != "focus") {
ci.className = "focus";
}
} else {
if ( ci.className =="focus" ) {
if (ci.className == "focus") {
ci.className = "";
}
}
......@@ -113,39 +113,39 @@
/**
* 将单个视频信息插入编辑器中
*/
function insertSingle(){
function insertSingle() {
var width = $G("videoWidth"),
height = $G("videoHeight"),
url=$G('videoUrl').value,
align = findFocus("videoFloat","name");
if(!url) return false;
if ( !checkNum( [width, height] ) ) return false;
url = $G('videoUrl').value,
align = findFocus("videoFloat", "name");
if (!url) return false;
if (!checkNum([width, height])) return false;
editor.execCommand('insertvideo', {
url: convert_url(url),
width: width.value,
height: height.value,
align: align
}, isModifyUploadVideo ? 'upload':null);
}, isModifyUploadVideo ? 'upload' : null);
}
/**
* 将元素id下的所有代表视频的图片插入编辑器中
* @param id
*/
function insertSearch(id){
var imgs = domUtils.getElementsByTagName($G(id),"img"),
videoObjs=[];
for(var i=0,img; img=imgs[i++];){
if(img.getAttribute("selected")){
function insertSearch(id) {
var imgs = domUtils.getElementsByTagName($G(id), "img"),
videoObjs = [];
for (var i = 0, img; img = imgs[i++];) {
if (img.getAttribute("selected")) {
videoObjs.push({
url:img.getAttribute("ue_video_url"),
width:420,
height:280,
align:"none"
url: img.getAttribute("ue_video_url"),
width: 420,
height: 280,
align: "none"
});
}
}
editor.execCommand('insertvideo',videoObjs);
editor.execCommand('insertvideo', videoObjs);
}
/**
......@@ -153,19 +153,20 @@
* @param id
* @param returnProperty
*/
function findFocus( id, returnProperty ) {
var tabs = $G( id ).children,
function findFocus(id, returnProperty) {
var tabs = $G(id).children,
property;
for ( var i = 0, ci; ci = tabs[i++]; ) {
if ( ci.className=="focus" ) {
property = ci.getAttribute( returnProperty );
for (var i = 0, ci; ci = tabs[i++];) {
if (ci.className == "focus") {
property = ci.getAttribute(returnProperty);
break;
}
}
return property;
}
function convert_url(url){
if ( !url ) return '';
function convert_url(url) {
if (!url) return '';
url = utils.trim(url)
.replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, 'player.youku.com/player.php/sid/$1/v.swf')
.replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2")
......@@ -187,11 +188,11 @@
* 检测传入的所有input框中输入的长宽是否是正数
* @param nodes input框集合,
*/
function checkNum( nodes ) {
for ( var i = 0, ci; ci = nodes[i++]; ) {
function checkNum(nodes) {
for (var i = 0, ci; ci = nodes[i++];) {
var value = ci.value;
if ( !isNumber( value ) && value) {
alert( lang.numError );
if (!isNumber(value) && value) {
alert(lang.numError);
ci.value = "";
ci.focus();
return false;
......@@ -204,27 +205,27 @@
* 数字判断
* @param value
*/
function isNumber( value ) {
return /(0|^[1-9]\d*$)/.test( value );
function isNumber(value) {
return /(0|^[1-9]\d*$)/.test(value);
}
/**
* 创建图片浮动选择按钮
* @param ids
*/
function createAlignButton( ids ) {
for ( var i = 0, ci; ci = ids[i++]; ) {
var floatContainer = $G( ci ),
nameMaps = {"none":lang['default'], "left":lang.floatLeft, "right":lang.floatRight, "center":lang.block};
for ( var j in nameMaps ) {
var div = document.createElement( "div" );
div.setAttribute( "name", j );
if ( j == "none" ) div.className="focus";
function createAlignButton(ids) {
for (var i = 0, ci; ci = ids[i++];) {
var floatContainer = $G(ci),
nameMaps = {"none": lang['default'], "left": lang.floatLeft, "right": lang.floatRight, "center": lang.block};
for (var j in nameMaps) {
var div = document.createElement("div");
div.setAttribute("name", j);
if (j == "none") div.className = "focus";
div.style.cssText = "background:url(images/" + j + "_focus.jpg);";
div.setAttribute( "title", nameMaps[j] );
floatContainer.appendChild( div );
div.setAttribute("title", nameMaps[j]);
floatContainer.appendChild(div);
}
switchSelect( ci );
switchSelect(ci);
}
}
......@@ -232,16 +233,16 @@
* 选择切换
* @param selectParentId
*/
function switchSelect( selectParentId ) {
var selects = $G( selectParentId ).children;
for ( var i = 0, ci; ci = selects[i++]; ) {
domUtils.on( ci, "click", function () {
for ( var j = 0, cj; cj = selects[j++]; ) {
function switchSelect(selectParentId) {
var selects = $G(selectParentId).children;
for (var i = 0, ci; ci = selects[i++];) {
domUtils.on(ci, "click", function () {
for (var j = 0, cj; cj = selects[j++];) {
cj.className = "";
cj.removeAttribute && cj.removeAttribute( "class" );
cj.removeAttribute && cj.removeAttribute("class");
}
this.className = "focus";
} )
})
}
}
......@@ -249,15 +250,15 @@
* 监听url改变事件
* @param url
*/
function addUrlChangeListener(url){
function addUrlChangeListener(url) {
if (browser.ie) {
url.onpropertychange = function () {
createPreviewVideo( this.value );
createPreviewVideo(this.value);
}
} else {
url.addEventListener( "input", function () {
createPreviewVideo( this.value );
}, false );
url.addEventListener("input", function () {
createPreviewVideo(this.value);
}, false);
}
}
......@@ -265,14 +266,14 @@
* 根据url生成视频预览
* @param url
*/
function createPreviewVideo(url){
if ( !url )return;
function createPreviewVideo(url) {
if (!url) return;
var conUrl = convert_url(url);
conUrl = utils.unhtmlForUrl(conUrl);
$G("preview").innerHTML = '<div class="previewMsg"><span>'+lang.urlError+'</span></div>'+
$G("preview").innerHTML = '<div class="previewMsg"><span>' + lang.urlError + '</span></div>' +
'<embed class="previewVideo" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"' +
' src="' + conUrl + '"' +
' width="' + 420 + '"' +
......@@ -283,19 +284,19 @@
/* 插入上传视频 */
function insertUpload(){
var videoObjs=[],
function insertUpload() {
var videoObjs = [],
uploadDir = editor.getOpt('videoUrlPrefix'),
width = parseInt($G('upload_width').value, 10) || 420,
height = parseInt($G('upload_height').value, 10) || 280,
align = findFocus("upload_alignment","name") || 'none';
for(var key in uploadVideoList) {
align = findFocus("upload_alignment", "name") || 'none';
for (var key in uploadVideoList) {
var file = uploadVideoList[key];
videoObjs.push({
url: uploadDir + file.url,
width:width,
height:height,
align:align
width: width,
height: height,
align: align
});
}
......@@ -309,7 +310,7 @@
}
/*初始化上传标签*/
function initUpload(){
function initUpload() {
uploadFile = new UploadFile('queueList');
}
......@@ -319,6 +320,7 @@
this.$wrap = target.constructor == String ? $('#' + target) : $(target);
this.init();
}
UploadFile.prototype = {
init: function () {
this.fileList = [];
......@@ -376,7 +378,8 @@
uploader,
actionUrl = editor.getActionUrl(editor.getOpt('videoActionName')),
fileMaxSize = editor.getOpt('videoMaxSize'),
acceptExtensions = (editor.getOpt('videoAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');;
acceptExtensions = (editor.getOpt('videoAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');
;
if (!WebUploader.Uploader.support()) {
$('#filePickerReady').after($('<div>').html(lang.errorNotSupport)).hide();
......@@ -392,7 +395,7 @@
label: lang.uploadSelectFile
},
swf: '../../third-party/webuploader/Uploader.swf',
server: actionUrl,
server: '/' + actionUrl,
fileVal: editor.getOpt('videoFieldName'),
duplicate: true,
fileSingleSizeLimit: fileMaxSize,
......@@ -449,7 +452,7 @@
showError(file.statusText);
} else {
$wrap.text(lang.uploadPreview);
if ('|png|jpg|jpeg|bmp|gif|'.indexOf('|'+file.ext.toLowerCase()+'|') == -1) {
if ('|png|jpg|jpeg|bmp|gif|'.indexOf('|' + file.ext.toLowerCase() + '|') == -1) {
$wrap.empty().addClass('notimage').append('<i class="file-preview file-type-' + file.ext.toLowerCase() + '"></i>' +
'<span class="file-title">' + file.name + '</span>');
} else {
......@@ -469,7 +472,7 @@
}, thumbnailWidth, thumbnailHeight);
}
}
percentages[ file.id ] = [ file.size, 0 ];
percentages[file.id] = [file.size, 0];
file.rotation = 0;
/* 检查文件格式 */
......@@ -489,11 +492,11 @@
// 成功
if (cur === 'error' || cur === 'invalid') {
showError(file.statusText);
percentages[ file.id ][ 1 ] = 1;
percentages[file.id][1] = 1;
} else if (cur === 'interrupt') {
showError('interrupt');
} else if (cur === 'queued') {
percentages[ file.id ][ 1 ] = 0;
percentages[file.id][1] = 0;
} else if (cur === 'progress') {
$info.hide();
$prgress.css('display', 'block');
......@@ -546,7 +549,7 @@
// 负责view的销毁
function removeFile(file) {
var $li = $('#' + file.id);
delete percentages[ file.id ];
delete percentages[file.id];
updateTotalProgress();
$li.off().find('.file-panel').off().end().remove();
}
......@@ -558,8 +561,8 @@
percent;
$.each(percentages, function (k, v) {
total += v[ 0 ];
loaded += v[ 0 ] * v[ 1 ];
total += v[0];
loaded += v[0] * v[1];
});
percent = total ? loaded / total : 0;
......@@ -585,7 +588,8 @@
$queue.addClass('element-invisible');
$statusBar.addClass('element-invisible');
$placeHolder.removeClass('element-invisible');
$progress.hide(); $info.hide();
$progress.hide();
$info.hide();
uploader.refresh();
break;
......@@ -594,25 +598,29 @@
$placeHolder.addClass('element-invisible');
$queue.removeClass('element-invisible');
$statusBar.removeClass('element-invisible');
$progress.hide(); $info.show();
$progress.hide();
$info.show();
$upload.text(lang.uploadStart);
uploader.refresh();
break;
/* 上传中 */
case 'uploading':
$progress.show(); $info.hide();
$progress.show();
$info.hide();
$upload.text(lang.uploadPause);
break;
/* 暂停上传 */
case 'paused':
$progress.show(); $info.hide();
$progress.show();
$info.hide();
$upload.text(lang.uploadContinue);
break;
case 'confirm':
$progress.show(); $info.hide();
$progress.show();
$info.hide();
$upload.text(lang.uploadStart);
stats = uploader.getStats();
......@@ -623,7 +631,8 @@
break;
case 'finish':
$progress.hide(); $info.show();
$progress.hide();
$info.show();
if (stats.uploadFailNum) {
$upload.text(lang.uploadRetry);
} else {
......@@ -657,9 +666,7 @@
}
} else {
stats = uploader.getStats();
text = lang.updateStatusFinish.replace('_', fileCount).
replace('_KB', WebUploader.formatSize(fileSize)).
replace('_', stats.successNum);
text = lang.updateStatusFinish.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize)).replace('_', stats.successNum);
if (stats.uploadFailNum) {
text += lang.updateStatusError.replace('_', stats.uploadFailNum);
......@@ -704,7 +711,7 @@
case 'startUpload':
/* 添加额外的GET参数 */
var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '',
url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params);
url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?' : '&') + 'encode=utf-8&' + params);
uploader.option('server', url);
setState('uploading', files);
break;
......@@ -724,7 +731,7 @@
$percent = $li.find('.progress span');
$percent.css('width', percentage * 100 + '%');
percentages[ file.id ][ 1 ] = percentage;
percentages[file.id][1] = percentage;
updateTotalProgress();
});
......@@ -737,7 +744,7 @@
uploadVideoList.push({
'url': json.url,
'type': json.type,
'original':json.original
'original': json.original
});
$file.append('<span class="success"></span>');
} else {
......@@ -777,13 +784,13 @@
},
getQueueCount: function () {
var file, i, status, readyFile = 0, files = this.uploader.getFiles();
for (i = 0; file = files[i++]; ) {
for (i = 0; file = files[i++];) {
status = file.getStatus();
if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++;
}
return readyFile;
},
refresh: function(){
refresh: function () {
this.uploader.refresh();
}
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment