home.js 99.2 KB
Newer Older
高源 已提交
1
/**
青阳龙野's avatar
青阳龙野 已提交
2
 * home.js kiftd主页面操作定义 by 青阳龙野 该文件为home.html的操作定义文件,包含了kiftd页面上的主要操作实现。
高源 已提交
3 4
 */

青阳龙野's avatar
青阳龙野 已提交
5
// 所用val名称列表,注意不要冲突,其中一些参数能够设定界面行为。
青阳龙野's avatar
青阳龙野 已提交
6 7 8 9
var locationpath = "root";// 记录当前文件路径
var parentpath = "null";// 记录当前文件路径的父级目录
var ap;// 音乐播放器对象
var zipTimer;// 打包下载计时器
青阳龙野's avatar
青阳龙野 已提交
10 11 12
var folderView;// 返回的文件系统视图对象
var originFolderView;// 保存原始的文件视图对象
var fs;// 选中的要上传的文件列表
青阳龙野's avatar
青阳龙野 已提交
13
var ifs;// 选中的要上传的文件夹内的文件列表
青阳龙野's avatar
青阳龙野 已提交
14
var checkedMovefiles;// 移动文件的存储列表
青阳龙野's avatar
青阳龙野 已提交
15
var constraintLevel;// 当前文件夹限制等级
青阳龙野's avatar
青阳龙野 已提交
16
var account;// 用户账户
青阳龙野's avatar
青阳龙野 已提交
17 18
var isUpLoading=false;// 是否正在执行上传操作
var isImporting=false;// 是否正在执行上传文件夹操作
青阳龙野's avatar
青阳龙野 已提交
19
var isChangingPassword=false;// 是否正在执行修改密码操作
青阳龙野's avatar
青阳龙野 已提交
20 21
var importFolderName;// 上传文件夹时保存文件夹名称
var xhr;// 文件或文件夹上传请求对象
青阳龙野's avatar
青阳龙野 已提交
22 23 24 25
var viewerPageSize = 15; // 显示图片页的最大长度,注意最好是奇数
var viewer; // viewer对象,用于预览图片功能
var viewerPageIndex; // 分页预览图片——已浏览图片页号
var viewerTotal; // 分页预览图片——总页码数
青阳龙野's avatar
青阳龙野 已提交
26 27
var pvl;// 预览图片列表的JSON格式对象
var checkFilesTip="提示:您还未选择任何文件,请先选中一些文件后再执行本操作:<br /><br /><kbd>单击</kbd>:选中某一文件<br /><br /><kbd><kbd>Shift</kbd>+<kbd>单击</kbd></kbd>:选中多个文件<br /><br /><kbd><kbd>Shift</kbd>+<kbd>双击</kbd></kbd>:选中连续的文件<br /><br /><kbd><kbd>Shitf</kbd>+<kbd>A</kbd></kbd>:选中/取消选中所有文件";// 选取文件提示
青阳龙野's avatar
青阳龙野 已提交
28
var winHeight;// 窗口高度
青阳龙野's avatar
青阳龙野 已提交
29
var pingInt;// 定时应答器的定时装置
高源 已提交
30

青阳龙野's avatar
青阳龙野 已提交
31
// 界面功能方法定义
青阳龙野's avatar
青阳龙野 已提交
32
// 页面初始化
高源 已提交
33
$(function() {
青阳龙野's avatar
青阳龙野 已提交
34 35 36
	window.onresize = function(){
		changeFilesTableStyle();
    }
青阳龙野's avatar
青阳龙野 已提交
37
	getServerOS();// 得到服务器操作系统信息
青阳龙野's avatar
青阳龙野 已提交
38 39 40 41 42 43 44
	// 查询是否存在记忆路径,若有,则直接显示记忆路径的内容,否则显示ROOT根路径
	var arr = document.cookie.match(new RegExp("(^| )folder_id=([^;]*)(;|$)"));
    if (arr != null){
    		showFolderView(unescape(arr[2]));// 显示记忆路径页面视图
    }else{
    		showFolderView("root");// 显示根节点页面视图
    }
青阳龙野's avatar
青阳龙野 已提交
45
	// 点击空白处取消选中文件(已尝试兼容火狐,请期待用户反馈,如不好使再改)
青阳龙野's avatar
青阳龙野 已提交
46 47
	$(document).click(function(e) {
		var filetable = $("#filetable")[0];
青阳龙野's avatar
青阳龙野 已提交
48 49 50 51 52
		var srcElement = e.srcElement;
		if (!srcElement) {
			srcElement = e.target;
		}
		if (srcElement !== filetable && !$.contains(filetable, e.target)) {
青阳龙野's avatar
青阳龙野 已提交
53 54 55
			$(".filerow").removeClass("info");
		}
	});
青阳龙野's avatar
青阳龙野 已提交
56 57 58 59 60 61
	// 关闭音乐播放模态框自动停止播放并将进度归0
	$('#audioPlayerModal').on('hidden.bs.modal', function(e) {
		if (ap != null) {
			ap.seek(0);
			ap.pause();
		}
青阳龙野's avatar
青阳龙野 已提交
62 63 64 65
		if(pingInt != null){
			window.clearInterval(pingInt);
			pingInt = null;
		}
青阳龙野's avatar
青阳龙野 已提交
66 67 68 69 70 71 72
	});
	// 关闭打包下载模态框自动停止计时
	$('#downloadAllCheckedModal').on('hidden.bs.modal', function(e) {
		if(zipTimer!=null){
			window.clearInterval(zipTimer);
		}
	});
青阳龙野's avatar
青阳龙野 已提交
73 74 75 76
	// 关闭登陆模态框自动清空输入数据
	$('#loginModal').on('hidden.bs.modal', function(e) {
		$("#accountid").val('');
		$("#accountpwd").val('');
青阳龙野's avatar
青阳龙野 已提交
77 78 79 80 81 82 83 84
		$("#accountidbox").removeClass("has-error");
		$("#accountpwdbox").removeClass("has-error");
		$("#alertbox").removeClass("alert");
		$("#alertbox").removeClass("alert-danger");
		$("#alertbox").text("");
		$("#vercodebox").html("");
		$("#vercodebox").removeClass("show");
		$("#vercodebox").addClass("hidden");
青阳龙野's avatar
青阳龙野 已提交
85
	});
青阳龙野's avatar
青阳龙野 已提交
86
	// 各个模态框的打开判定及回车响应功能。该功能仅对“首选”的按钮有效,对其他按钮无效,以避免用户误操作。
青阳龙野's avatar
青阳龙野 已提交
87 88 89 90 91 92 93
	$('.modal').on('shown.bs.modal', function(e) {
		$(this).addClass("shown");
	});
	$('.modal').on('hidden.bs.modal', function(e) {
		$(this).removeClass("shown");
	});
	$("body").keypress(function(e) {
青阳龙野's avatar
青阳龙野 已提交
94
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
青阳龙野's avatar
青阳龙野 已提交
95
		if(keyCode == 13) {
青阳龙野's avatar
青阳龙野 已提交
96
			if("sreachKeyWordIn"===document.activeElement.id){
青阳龙野's avatar
青阳龙野 已提交
97
				doSearchFile();
青阳龙野's avatar
青阳龙野 已提交
98 99 100 101 102
			}else{
				var g=$(".shown .btn-primary");
				if(g.get(0)!=null){
					g.click();
				}
青阳龙野's avatar
青阳龙野 已提交
103 104
			}
			return false;
青阳龙野's avatar
青阳龙野 已提交
105 106
		}
	});
青阳龙野's avatar
青阳龙野 已提交
107 108 109 110 111 112 113 114 115
	// 开启登陆模态框自动聚焦账户输入框
	$('#loginModal').on('shown.bs.modal', function(e) {
		$("#accountid").focus();
	});
	// 开启新建文件夹框自动初始化状态
	$('#newFolderModal').on('show.bs.modal', function(e) {
		$("#folderalert").removeClass("alert");
		$("#folderalert").removeClass("alert-danger");
		$("#foldernamebox").removeClass("has-error");
青阳龙野's avatar
青阳龙野 已提交
116
		$("#folderalert").text("");
青阳龙野's avatar
青阳龙野 已提交
117 118 119 120 121 122 123 124 125 126 127 128
		$("#foldername").val("");
		$("#foldertypelist").html("");
		if(account!=null){
			$("#foldername").attr("folderConstraintLevel",constraintLevel+"");
			$("#newfoldertype").text(folderTypes[constraintLevel]);
			for(var i=constraintLevel;i<folderTypes.length;i++){
				$("#foldertypelist").append("<li><a onclick='changeNewFolderType("+i+")'>"+folderTypes[i]+"</a></li>");
			}
		}else{
			$("#foldertypelist").append("<li><a onclick='changeNewFolderType(0)'>"+folderTypes[0]+"</a></li>");
		}
	});
青阳龙野's avatar
青阳龙野 已提交
129 130 131 132
	// 开启新建文件夹模态框自动聚焦文件名输入框
	$('#newFolderModal').on('shown.bs.modal', function(e) {
		$("#foldername").focus();
	});
青阳龙野's avatar
青阳龙野 已提交
133
	// 关闭上传模态框时自动提示如何查看上传进度
青阳龙野's avatar
青阳龙野 已提交
134 135
	$('#uploadFileModal,#importFolderModal').on('hidden.bs.modal', function(e) {
		if(isUpLoading || isImporting){
青阳龙野's avatar
青阳龙野 已提交
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
			$('#operationMenuBox').attr("data-placement", "top");
			$('#operationMenuBox').attr("data-trigger", "focus");
			$('#operationMenuBox').attr("data-title", "上传中");
			$('#operationMenuBox').attr("data-content", "您可以重新打开上传窗口查看上传进度。");
			$('#operationMenuBox').popover();
			$('#operationMenuBox').popover('show');
		    // 2秒后消失提示框
		    var closeUploadTips = setTimeout(
		        function () {
		        		$('#operationMenuBox').attr("data-title", "");
					$('#operationMenuBox').attr("data-content", "");
					$('#operationMenuBox').popover('destroy');
		        }, 2000
		    );
		}
	});
青阳龙野's avatar
青阳龙野 已提交
152 153
	// 开启编辑文件夹框自动初始化状态
	$('#renameFolderModal').on('show.bs.modal', function(e) {
青阳龙野's avatar
青阳龙野 已提交
154 155
		$("#editfolderalert").removeClass("alert");
		$("#editfolderalert").removeClass("alert-danger");
青阳龙野's avatar
青阳龙野 已提交
156
		$("#folderrenamebox").removeClass("has-error");
青阳龙野's avatar
青阳龙野 已提交
157
		$("#editfolderalert").text("");
青阳龙野's avatar
青阳龙野 已提交
158 159 160 161 162 163 164 165 166
		$("#editfoldertypelist").html("");
		if(account!=null){
			for(var i=constraintLevel;i<folderTypes.length;i++){
				$("#editfoldertypelist").append("<li><a onclick='changeEditFolderType("+i+")'>"+folderTypes[i]+"</a></li>");
			}
		}else{
			$("#editfoldertypelist").append("<li><a onclick='changeEditFolderType(0)'>"+folderTypes[0]+"</a></li>");
		}
	});
青阳龙野's avatar
青阳龙野 已提交
167 168
	// 响应拖动上传文件
	document.ondragover = function(e) {
青阳龙野's avatar
青阳龙野 已提交
169 170 171 172 173 174 175
		if(e.preventDefault){
			e.preventDefault();
			e.stopPropagation();
		}else{
			window.event.cancelBubble=true;
			window.event.returnValue=false;
		}
青阳龙野's avatar
青阳龙野 已提交
176 177
	}
	document.ondrop = function(e) {
青阳龙野's avatar
青阳龙野 已提交
178 179 180 181 182 183 184
		if(e.preventDefault){
			e.preventDefault();
			e.stopPropagation();
		}else{
			window.event.cancelBubble=true;
			window.event.returnValue=false;
		}
青阳龙野's avatar
青阳龙野 已提交
185
		if (folderView.authList != null) {
青阳龙野's avatar
青阳龙野 已提交
186
			if (checkAuth(folderView.authList, "U")) {// 如果有上传权限且未进行其他上传
青阳龙野's avatar
青阳龙野 已提交
187
				if(isUpLoading || isImporting){
青阳龙野's avatar
青阳龙野 已提交
188 189 190 191 192 193
					alert("提示:您正在执行另一项上传任务,请在上传窗口关闭后再试。");
				}else{
					if (!(window.ActiveXObject||"ActiveXObject" in window)){// 判断是否为IE
						var dt;
						if(e.dataTransfer != null){
							dt = e.dataTransfer; // 获取到拖入上传的文件对象
青阳龙野's avatar
青阳龙野 已提交
194
						}else{
青阳龙野's avatar
青阳龙野 已提交
195
							dt = window.event.dataTransfer;
青阳龙野's avatar
青阳龙野 已提交
196
						}
青阳龙野's avatar
青阳龙野 已提交
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
						var testFile=true;
						if(dt.items!==undefined){
							for(var i=0;i<dt.items.length;i++){
								var item = dt.items[i];
								if(item.kind === "file" && item.webkitGetAsEntry().isFile) {
									
								}else{
									testFile=false;
								}
							}
						}else{
							for(var i = 0; i < dt.files.length; i++){
					            var dropFile = df.files[i];
					            if ( dropFile.type ) {
					               
					            } else {
					                try {
					                    var fileReader = new FileReader();
					                    fileReader.readAsDataURL(dropFile.slice(0, 10));
					                    fileReader.addEventListener('load', function (e) {
					                        
					                    }, false);
					                    fileReader.addEventListener('error', function (e) {
					                    		testFile=false;
					                    }, false);
					                } catch (e) {
					                		testFile=false;
					                }
					            }
					        }
						}
						if(testFile){
							fs = e.dataTransfer.files; // 获取到拖入上传的文件对象
							showUploadFileModel();
青阳龙野's avatar
青阳龙野 已提交
231
							showfilepath();
青阳龙野's avatar
青阳龙野 已提交
232 233 234 235 236 237
							checkUploadFile();
						}else{
							alert("提示:您拖入的文件中包含了一个或多个文件夹,无法进行上传。");
						}
					}else{
						alert("提示:IE浏览器不支持拖拽上传。您可以使用现代浏览器或将浏览模式切换为“极速模式”来体验该功能。");
青阳龙野's avatar
青阳龙野 已提交
238 239 240
					}
				}
			}else{
青阳龙野's avatar
青阳龙野 已提交
241
				alert("提示:您不具备上传权限,无法上传文件。");
青阳龙野's avatar
青阳龙野 已提交
242 243
			}
		}else{
青阳龙野's avatar
青阳龙野 已提交
244
			alert("提示:您不具备上传权限,无法上传文件。");
青阳龙野's avatar
青阳龙野 已提交
245 246
		}
	}
青阳龙野's avatar
青阳龙野 已提交
247
	// Shift+A全选文件/反选文件,Shift+N新建文件夹,Shift+U上传文件,Shift+F导入文件夹,Shift+C&V剪切粘贴,Shift+D批量删除
青阳龙野's avatar
青阳龙野 已提交
248
	$(document).keypress(function (e) {
青阳龙野's avatar
青阳龙野 已提交
249 250
		if($('.modal.shown').length == 0 || ($('.modal.shown').length == 1 && $('.modal.shown').attr('id') == 'loadingModal')){
			var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
青阳龙野's avatar
青阳龙野 已提交
251
			if (isShift(e) && document.activeElement.id != "sreachKeyWordIn") {
青阳龙野's avatar
青阳龙野 已提交
252 253 254 255 256 257 258 259 260 261 262 263 264
				switch (keyCode) {
				case 65:
					checkallfile();
					break;
				case 78:
					$('#createFolderButtonLi a').click();
					break;
				case 85:
					$('#uploadFileButtonLi a').click();
					break;
				case 68:
					$('#deleteSeelectFileButtonLi a').click();
					break;
青阳龙野's avatar
青阳龙野 已提交
265 266 267
				case 70:
					$('#uploadFolderButtonLi a').click();
					break;
青阳龙野's avatar
青阳龙野 已提交
268
				case 67:
青阳龙野's avatar
青阳龙野 已提交
269 270 271
					if((!$("#cutSignTx").hasClass("cuted"))&&checkedMovefiles==undefined){
						$('#cutFileButtonLi a').click();
					}
青阳龙野's avatar
青阳龙野 已提交
272 273 274 275 276 277 278 279
					break;
				case 86:
					if($("#cutSignTx").hasClass("cuted")&&checkedMovefiles!==undefined){
						$('#cutFileButtonLi a').click();
					}
					break;
	
				default:
青阳龙野's avatar
青阳龙野 已提交
280
					return true;
青阳龙野's avatar
青阳龙野 已提交
281 282
				}
				return false;
青阳龙野's avatar
青阳龙野 已提交
283 284 285 286 287 288
			}
		}
	});
	// 关闭移动提示框自动取消移动
	$('#moveFilesModal').on('hidden.bs.modal', function(e) {
		checkedMovefiles=undefined;
青阳龙野's avatar
青阳龙野 已提交
289
		$("#cutSignTx").html("剪切 <span class='pull-right'><span class='glyphicon glyphicon-arrow-up' aria-hidden='true'></span>+C</span>");
青阳龙野's avatar
青阳龙野 已提交
290
		$("#cutSignTx").removeClass("cuted");
青阳龙野's avatar
青阳龙野 已提交
291 292 293
		$('#moveFilesBox').html("");
	});
	// IE内核浏览器内的startsWith方法的自实现
青阳龙野's avatar
青阳龙野 已提交
294 295 296 297 298
	if(typeof String.prototype.startsWith != 'function') {
		String.prototype.startsWith = function(prefix) {
			return this.slice(0, prefix.length) === prefix;
		};
	}
青阳龙野's avatar
青阳龙野 已提交
299 300 301 302 303
	if(typeof String.prototype.endsWith != 'function') {
		String.prototype.endsWith = function(suffix) {
			return this.indexOf(suffix, this.length - suffix.length) !== -1;
		};
	}
青阳龙野's avatar
青阳龙野 已提交
304 305 306 307 308 309 310
	// 开启详细信息模态框自动显示信息内容
	$('#folderInfoModal').on('show.bs.modal', function(e) {
		var f=folderView.folder;
		$("#fim_name").text(f.folderName);
		$("#fim_creator").text(f.folderCreator);
		$("#fim_folderCreationDate").text(f.folderCreationDate);
		$("#fim_statistics").text("共包含 "+folderView.folderList.length+" 个文件夹, "+folderView.fileList.length+" 个文件。");
青阳龙野's avatar
青阳龙野 已提交
311
		$("#fim_folderId").text(f.folderId);
青阳龙野's avatar
青阳龙野 已提交
312
	});
青阳龙野's avatar
青阳龙野 已提交
313 314 315 316
	// 关闭下载提示模态框自动隐藏下载链接
	$('#downloadModal').on('hidden.bs.modal', function(e) {
		$('#downloadURLCollapse').collapse('hide');
	});
青阳龙野's avatar
青阳龙野 已提交
317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335
	// 获取窗口高度
	if (window.innerHeight){
		winHeight = window.innerHeight;
	}else if ((document.body) && (document.body.clientHeight)){
		winHeight = document.body.clientHeight;
	}
	// 根据屏幕下拉程度自动显示、隐藏“返回顶部”按钮
	$(window).scroll(function(){
		if($(this).scrollTop() > 2*winHeight){
			$('#gobacktotopbox').removeClass("hidden");
		}else{
			$('#gobacktotopbox').addClass("hidden");
		}
	});
	
	// 打开查看下载链接时,向后台生成/获取下载链接
	$('#downloadURLCollapse').on('shown.bs.collapse', function () {
		getDownloadURL();
	});
青阳龙野's avatar
青阳龙野 已提交
336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351
	
	// 开启修改密码模态框时初始化状态
	$('#changePasswordModal').on('show.bs.modal', function(e) {
		if(!isChangingPassword){
			$("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton,#changepassword_vercode").attr('disabled', false);
			$("#changepassword_oldepwdbox,#changepassword_newpwdbox,#changepassword_reqnewpwdbox").removeClass("has-error");
			$("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd").val("");
			$("#changepasswordalertbox,#changepassword_vccodebox").hide();
		}
	});
	// 并自动聚焦旧密码输入框
	$('#changePasswordModal').on('shown.bs.modal', function(e) {
		if(!isChangingPassword){
			$("#changepassword_oldpwd").focus();
		}
	});
高源 已提交
352 353
});

青阳龙野's avatar
青阳龙野 已提交
354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380
// 根据屏幕大小增删表格显示内容
function changeFilesTableStyle(){
	var win = $(window).width();
    if(win < 800){
    		$('#filetableheadera').addClass('filetableheaderstyle');
        $('.hiddenColumn').hide();
        	$('.rightbtn').hide();
        	$('#vicetbbox').show();
        	$('#filetableoptmenusreach').hide();
    }else{
    		$('#filetableheadera').removeClass('filetableheaderstyle');
		$('.hiddenColumn').show();
		$('.rightbtn').show();
		$('#vicetbbox').hide();
		$('#filetableoptmenusreach').show();
    }
    	if(win < 768){
    		$('#filetableheadera').attr('data-toggle','collapse');
    		$('#filetableheadera').attr('data-target','#filetableoptmenu');
    		$('#mdropdownicon').html('(点击展开/折叠菜单)');
    	}else{
		$('#filetableheadera').attr('data-toggle','modal');
	    $('#filetableheadera').attr('data-target','#folderInfoModal');
	    $('#mdropdownicon').html('');
    }
}

青阳龙野's avatar
青阳龙野 已提交
381
// 全局请求失败提示
青阳龙野's avatar
青阳龙野 已提交
382
function doAlert(){
青阳龙野's avatar
青阳龙野 已提交
383
	alert("错误:无法连接到kiftd服务器,请检查您的网络连接或查看服务器运行状态。");
青阳龙野's avatar
青阳龙野 已提交
384 385
}

高源 已提交
386 387 388 389 390
// 获取服务器操作系统
function getServerOS() {
	$.ajax({
		type : "POST",
		dataType : "text",
青阳龙野's avatar
青阳龙野 已提交
391
		data : {},
高源 已提交
392 393
		url : "homeController/getServerOS.ajax",
		success : function(result) {
青阳龙野's avatar
青阳龙野 已提交
394
			if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
395 396
				window.location.href = "prv/login.html";
				return;
青阳龙野's avatar
青阳龙野 已提交
397
			}
高源 已提交
398 399 400 401 402 403 404 405 406
			$("#serverOS").text(result);
		},
		error : function() {
			$("#serverOS").html("<a onclick='getServerOS()'>获取失败,点击重试</a>");
		}
	});
}

// 获取实时文件夹视图
青阳龙野's avatar
青阳龙野 已提交
407
function showFolderView(fid,targetId) {
青阳龙野's avatar
青阳龙野 已提交
408
	startLoading();
高源 已提交
409 410 411 412 413 414 415 416
	$.ajax({
		type : 'POST',
		dataType : 'text',
		data : {
			fid : fid
		},
		url : 'homeController/getFolderView.ajax',
		success : function(result) {
青阳龙野's avatar
青阳龙野 已提交
417
			endLoading();
青阳龙野's avatar
青阳龙野 已提交
418 419 420 421 422 423
			if(result == "ERROR"){
				doAlert();
				$("#tb").html("<span class='graytext'>获取失败,请尝试刷新</span>");
				$("#publishTime").html("<span class='graytext'>获取失败,请尝试刷新</span>");
				$("#parentlistbox").html("<span class='graytext'>获取失败,请尝试刷新</span>");
			} else if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
424
				window.location.href = "prv/login.html";
青阳龙野's avatar
青阳龙野 已提交
425 426 427
			} else if(result == "NOT_FOUND") {
				document.cookie = "folder_id=" + escape("root");// 归位记忆路径
				window.location.href="/";
青阳龙野's avatar
青阳龙野 已提交
428
			} else if(result == "notAccess"){
青阳龙野's avatar
青阳龙野 已提交
429
				document.cookie = "folder_id=" + escape("root");// 归位记忆路径
青阳龙野's avatar
青阳龙野 已提交
430
				window.location.href="/";
青阳龙野's avatar
青阳龙野 已提交
431
			} else {
青阳龙野's avatar
青阳龙野 已提交
432
				folderView = eval("(" + result + ")");
青阳龙野's avatar
青阳龙野 已提交
433
				locationpath = folderView.folder.folderId;
青阳龙野's avatar
青阳龙野 已提交
434 435
				// 存储打开的文件夹路径至Cookie中,以便下次打开时直接显示
				document.cookie = "folder_id=" + escape(locationpath);
青阳龙野's avatar
青阳龙野 已提交
436
				parentpath = folderView.folder.folderParent;
青阳龙野's avatar
青阳龙野 已提交
437
				constraintLevel=folderView.folder.folderConstraint;
青阳龙野's avatar
青阳龙野 已提交
438 439
				screenedFoldrView=null;
				$("#sreachKeyWordIn").val("");
青阳龙野's avatar
青阳龙野 已提交
440 441 442
				showParentList(folderView);
				showAccountView(folderView);
				showPublishTime(folderView);
青阳龙野's avatar
青阳龙野 已提交
443 444 445 446 447
				originFolderView=$.extend(true, {}, folderView);
				$("#sortByFN").removeClass();
				$("#sortByCD").removeClass();
				$("#sortByFS").removeClass();
				$("#sortByCN").removeClass();
青阳龙野's avatar
青阳龙野 已提交
448
				showFolderTable(folderView);
青阳龙野's avatar
青阳龙野 已提交
449 450 451 452
				if(targetId != null && targetId.length > 0){
					$("#"+targetId).addClass("info");
					$("html,body").animate({scrollTop:$("#"+targetId).offset().top - $(window).height()/2},'slow');
				}
青阳龙野's avatar
青阳龙野 已提交
453
			}
高源 已提交
454 455
		},
		error : function() {
青阳龙野's avatar
青阳龙野 已提交
456 457
			endLoading();
			doAlert();
高源 已提交
458 459 460 461 462 463 464 465
			$("#tb").html("<span class='graytext'>获取失败,请尝试刷新</span>");
			$("#publishTime").html("<span class='graytext'>获取失败,请尝试刷新</span>");
			$("#parentlistbox")
					.html("<span class='graytext'>获取失败,请尝试刷新</span>");
		}
	});
}

青阳龙野's avatar
青阳龙野 已提交
466
// 开始文件视图加载动画
青阳龙野's avatar
青阳龙野 已提交
467
function startLoading(){
青阳龙野's avatar
青阳龙野 已提交
468
	$('#loadingModal').modal({backdrop:'static', keyboard: false}); 
青阳龙野's avatar
青阳龙野 已提交
469
	$('#loadingModal').modal('show');
青阳龙野's avatar
青阳龙野 已提交
470
	$('#loadingModal').addClass("shown");
青阳龙野's avatar
青阳龙野 已提交
471 472
}

青阳龙野's avatar
青阳龙野 已提交
473
// 结束文件视图加载动画
青阳龙野's avatar
青阳龙野 已提交
474 475
function endLoading(){
	$('#loadingModal').modal('hide');
青阳龙野's avatar
青阳龙野 已提交
476
	$('#loadingModal').removeClass("shown");
青阳龙野's avatar
青阳龙野 已提交
477 478
}

青阳龙野's avatar
青阳龙野 已提交
479
// 开始登陆加载动画
青阳龙野's avatar
青阳龙野 已提交
480 481 482 483 484 485
function startLogin(){
	$("#accountid").attr('disabled','disabled');
	$("#accountpwd").attr('disabled','disabled');
	$("#dologinButton").attr('disabled','disabled');
}

青阳龙野's avatar
青阳龙野 已提交
486
// 结束登陆加载动画
青阳龙野's avatar
青阳龙野 已提交
487 488 489 490 491 492
function finishLogin(){
	$("#accountid").removeAttr('disabled','disabled');
	$("#accountpwd").removeAttr('disabled','disabled');
	$("#dologinButton").removeAttr('disabled','disabled');
}

高源 已提交
493 494
// 登录操作
function dologin() {
青阳龙野's avatar
青阳龙野 已提交
495 496
	var accountId = $("#accountid").val();
	var accountPwd = $("#accountpwd").val();
高源 已提交
497
	var check = "y";
青阳龙野's avatar
青阳龙野 已提交
498
	if (accountId.length == 0) {
高源 已提交
499
		$("#accountidbox").addClass("has-error");
青阳龙野's avatar
青阳龙野 已提交
500
		check = "n";
高源 已提交
501 502 503
	} else {
		$("#accountidbox").removeClass("has-error");
	}
青阳龙野's avatar
青阳龙野 已提交
504
	if (accountPwd.length == 0) {
高源 已提交
505
		$("#accountpwdbox").addClass("has-error");
青阳龙野's avatar
青阳龙野 已提交
506
		check = "n";
高源 已提交
507 508 509 510
	} else {
		$("#accountpwdbox").removeClass("has-error");
	}
	if (check == "y") {
青阳龙野's avatar
青阳龙野 已提交
511
		startLogin();
青阳龙野's avatar
青阳龙野 已提交
512
		// 加密认证-获取公钥并将请求加密发送给服务器,避免中途被窃取
高源 已提交
513
		$.ajax({
青阳龙野's avatar
青阳龙野 已提交
514 515 516 517
			url : 'homeController/getPublicKey.ajax',
			type : 'POST',
			data : {},
			dataType : 'text',
高源 已提交
518
			success : function(result) {
青阳龙野's avatar
青阳龙野 已提交
519 520 521 522 523 524 525 526
				var publicKeyInfo=eval("("+result+")");
				var date = new Date();// 这个是客户浏览器上的当前时间
				var loginInfo = '{accountId:"' + accountId + '",accountPwd:"'
						+ accountPwd + '",time:"' + publicKeyInfo.time + '"}';
				var encrypt = new JSEncrypt();// 加密插件对象
				encrypt.setPublicKey(publicKeyInfo.publicKey);// 设置公钥
				var encrypted = encrypt.encrypt(loginInfo);// 进行加密
				sendLoginInfo(encrypted);
高源 已提交
527 528
			},
			error : function() {
青阳龙野's avatar
青阳龙野 已提交
529
				finishLogin();
高源 已提交
530 531 532 533 534 535 536 537
				$("#alertbox").addClass("alert");
				$("#alertbox").addClass("alert-danger");
				$("#alertbox").text("提示:登录请求失败,请检查网络或服务器运行状态");
			}
		});
	}
}

青阳龙野's avatar
青阳龙野 已提交
538 539
// 发送加密文本
function sendLoginInfo(encrypted) {
青阳龙野's avatar
青阳龙野 已提交
540
	
青阳龙野's avatar
青阳龙野 已提交
541 542 543 544 545
	$.ajax({
		type : "POST",
		dataType : "text",
		url : "homeController/doLogin.ajax",
		data : {
青阳龙野's avatar
青阳龙野 已提交
546 547
			encrypted : encrypted,
			vercode : $("#vercode").val()
青阳龙野's avatar
青阳龙野 已提交
548 549
		},
		success : function(result) {
青阳龙野's avatar
青阳龙野 已提交
550
			finishLogin();
青阳龙野's avatar
青阳龙野 已提交
551 552 553
			$("#alertbox").removeClass("alert");
			$("#alertbox").removeClass("alert-danger");
			$("#alertbox").text("");
青阳龙野's avatar
青阳龙野 已提交
554 555 556
			$("#vercodebox").html("");
			$("#vercodebox").removeClass("show");
			$("#vercodebox").addClass("hidden");
青阳龙野's avatar
青阳龙野 已提交
557 558 559 560
			switch (result) {
			case "permitlogin":
				$("#accountidbox").removeClass("has-error");
				$("#accountpwdbox").removeClass("has-error");
青阳龙野's avatar
青阳龙野 已提交
561 562
				$('#loginModal').modal('hide');
				showFolderView(locationpath);
青阳龙野's avatar
青阳龙野 已提交
563 564 565 566 567 568 569 570 571 572 573 574 575 576 577
				break;
			case "accountnotfound":
				$("#accountidbox").addClass("has-error");
				$("#accountpwdbox").removeClass("has-error");
				$("#alertbox").addClass("alert");
				$("#alertbox").addClass("alert-danger");
				$("#alertbox").text("提示:登录失败,账户不存在或未设置");
				break;
			case "accountpwderror":
				$("#accountpwdbox").addClass("has-error");
				$("#accountidbox").removeClass("has-error");
				$("#alertbox").addClass("alert");
				$("#alertbox").addClass("alert-danger");
				$("#alertbox").text("提示:登录失败,密码错误或未设置");
				break;
青阳龙野's avatar
青阳龙野 已提交
578 579 580 581 582
			case "needsubmitvercode":
				$("#vercodebox").html("<label id='vercodetitle' class='col-sm-7'><img id='showvercode' class='vercodeimg' alt='点击获取验证码' src='homeController/getNewVerCode.do?s="+(new Date()).getTime()+"' onclick='getNewVerCode()'></label><div class='col-sm-5'><input type='text' class='form-control' id='vercode' placeholder='验证码……'></div>");
				$("#vercodebox").removeClass("hidden");
				$("#vercodebox").addClass("show");
				break;
青阳龙野's avatar
青阳龙野 已提交
583 584 585
			case "error":
				$("#alertbox").addClass("alert");
				$("#alertbox").addClass("alert-danger");
青阳龙野's avatar
青阳龙野 已提交
586
				$("#alertbox").text("提示:登录失败,登录请求无法通过加密效验(可能是请求耗时过长导致的)");
青阳龙野's avatar
青阳龙野 已提交
587 588 589 590 591 592 593 594 595
				break;
			default:
				$("#alertbox").addClass("alert");
				$("#alertbox").addClass("alert-danger");
				$("#alertbox").text("提示:无法登录,未知错误");
				break;
			}
		},
		error : function() {
青阳龙野's avatar
青阳龙野 已提交
596
			finishLogin();
青阳龙野's avatar
青阳龙野 已提交
597 598 599 600 601 602 603
			$("#alertbox").addClass("alert");
			$("#alertbox").addClass("alert-danger");
			$("#alertbox").text("提示:登录请求失败,请检查网络或服务器运行状态");
		}
	});
}

青阳龙野's avatar
青阳龙野 已提交
604 605 606 607 608
// 获取一个新的验证码
function getNewVerCode(){
	$("#showvercode").attr("src","homeController/getNewVerCode.do?s="+(new Date()).getTime());
}

高源 已提交
609 610 611
// 注销操作
function dologout() {
	$('#logoutModal').modal('hide');
青阳龙野's avatar
青阳龙野 已提交
612 613 614 615 616 617 618 619 620 621 622 623 624 625
	$.ajax({
		url:'homeController/doLogout.ajax',
		type:'POST',
		data:{},
		dataType:'text',
		success:function(result){
			if(result=="SUCCESS"){
				showFolderView(locationpath);
			}
		},
		error:function(){
			doAlert();
		}
	});
高源 已提交
626 627 628 629
}

// 显示当前文件夹的父级路径
function showParentList(folderView) {
青阳龙野's avatar
青阳龙野 已提交
630
	$("#parentFolderList").html("");
高源 已提交
631
	var f = folderView.folder;
青阳龙野's avatar
青阳龙野 已提交
632 633 634 635 636 637 638 639 640 641 642 643
	if(folderView.parentList.length>0){
		$.each(folderView.parentList, function(n, val) {
			$("#parentFolderList").append("<li><a href='javascript:void(0);' onclick='entryFolder("+'"' + val.folderId +'"'+")'>"+val.folderName+"</a></li>");
		});
	}else{
		$("#parentFolderList").html("<li class='disabled'><a>无</a></li>");
	}
	if(f.folderName.length>6){
		$("#currentFolderName").text(f.folderName.substr(0,6)+"...");
	}else{
		$("#currentFolderName").text(f.folderName);
	}
青阳龙野's avatar
青阳龙野 已提交
644
	if(f.folderName == "ROOT"){
青阳龙野's avatar
青阳龙野 已提交
645
		$("#folderIconSpan").removeClass("glyphicon-folder-close");
青阳龙野's avatar
青阳龙野 已提交
646
		$("#folderIconSpan").removeClass("glyphicon-search");
青阳龙野's avatar
青阳龙野 已提交
647
		$("#folderIconSpan").addClass("glyphicon-home");
青阳龙野's avatar
青阳龙野 已提交
648 649 650 651
	}else if(folderView.keyWorld != null){
		$("#folderIconSpan").removeClass("glyphicon-folder-close");
		$("#folderIconSpan").removeClass("glyphicon-home");
		$("#folderIconSpan").addClass("glyphicon-search");
青阳龙野's avatar
青阳龙野 已提交
652 653
	}else{
		$("#folderIconSpan").removeClass("glyphicon-home");
青阳龙野's avatar
青阳龙野 已提交
654
		$("#folderIconSpan").removeClass("glyphicon-search");
青阳龙野's avatar
青阳龙野 已提交
655
		$("#folderIconSpan").addClass("glyphicon-folder-close");
高源 已提交
656 657 658 659 660
	}
}

// 显示用户视图,包括文件列表、登录信息、操作权限接口等
function showAccountView(folderView) {
青阳龙野's avatar
青阳龙野 已提交
661
	$("#tb,#tb2").html("");
青阳龙野's avatar
青阳龙野 已提交
662
	account=folderView.account;
高源 已提交
663
	if (folderView.account != null) {
青阳龙野's avatar
青阳龙野 已提交
664
		// 说明已经登录,显示注销按钮
高源 已提交
665 666 667 668 669
		$("#tb")
				.append(
						"<button class='btn btn-link rightbtn' data-toggle='modal' data-target='#logoutModal'>注销 ["
								+ folderView.account
								+ "] <span class='glyphicon glyphicon-off' aria-hidden='true'></span></button>");
青阳龙野's avatar
青阳龙野 已提交
670 671 672 673 674
		$("#tb2")
				.append(
						"<button class='btn btn-link' data-toggle='modal' data-target='#logoutModal'>注销 ["
								+ folderView.account
								+ "] <span class='glyphicon glyphicon-off' aria-hidden='true'></span></button>");
青阳龙野's avatar
青阳龙野 已提交
675 676 677 678 679 680 681 682
		if(folderView.allowChangePassword == 'true'){
			$("#tb")
			.append(
					" <button class='btn btn-link rightbtn' data-toggle='modal' data-target='#changePasswordModal'>修改密码 <span class='glyphicon glyphicon-edit' aria-hidden='true'></span></button>");
			$("#tb2")
			.append(
					" <button class='btn btn-link' data-toggle='modal' data-target='#changePasswordModal'>修改密码 <span class='glyphicon glyphicon-edit' aria-hidden='true'></span></button>");
		}
高源 已提交
683 684 685 686
	} else {
		// 说明用户未登录,显示登录按钮
		$("#tb")
				.append(
青阳龙野's avatar
青阳龙野 已提交
687
						"<button class='btn btn-link rightbtn' data-toggle='modal' data-target='#loginModal'>登入 <span class='glyphicon glyphicon-user' aria-hidden='true'></span></button>");
青阳龙野's avatar
青阳龙野 已提交
688 689 690
		$("#tb2")
				.append(
						"<button class='btn btn-link' data-toggle='modal' data-target='#loginModal'>登入 <span class='glyphicon glyphicon-user' aria-hidden='true'></span></button>");
青阳龙野's avatar
青阳龙野 已提交
691 692 693 694 695 696 697 698
		if(folderView.allowSignUp == 'true'){
			$("#tb")
			.append(
					" <button class='btn btn-link rightbtn' onclick='window.location.href = \"/prv/signup.html\"'>立即注册 <span class='glyphicon glyphicon-log-in' aria-hidden='true'></span></button>");
			$("#tb2")
			.append(
					" <button class='btn btn-link' onclick='window.location.href = \"prv/signup.html\"'>立即注册 <span class='glyphicon glyphicon-log-in' aria-hidden='true'></span></button>");
		}
高源 已提交
699 700
	}
	var authList = folderView.authList;
青阳龙野's avatar
青阳龙野 已提交
701 702 703 704
	// 对操作菜单进行初始化,根据权限显示可操作的按钮(并非约束)。
	$("#fileListDropDown li").addClass("disabled");
	$("#fileListDropDown li a").attr("onclick","");
	$("#fileListDropDown li a").attr("href","javascript:void(0);");
高源 已提交
705 706
	if (authList != null) {
		if (checkAuth(authList, "C")) {
青阳龙野's avatar
青阳龙野 已提交
707 708
			$("#createFolderButtonLi").removeClass("disabled");
			$("#createFolderButtonLi a").attr("onclick","showNewFolderModel()");
高源 已提交
709 710
		}
		if (checkAuth(authList, "U")) {
青阳龙野's avatar
青阳龙野 已提交
711 712
			$("#uploadFileButtonLi").removeClass("disabled");
			$("#uploadFileButtonLi a").attr("onclick","showUploadFileModel()");
青阳龙野's avatar
青阳龙野 已提交
713 714 715 716
			if(checkAuth(authList, "C") && isSupportWebkitdirectory()){// 若浏览器支持文件夹选择,且具备新建文件夹权限,则允许进行文件夹上传
				$("#uploadFolderButtonLi").removeClass("disabled");
				$("#uploadFolderButtonLi a").attr("onclick","showUploadFolderModel()");
			}
高源 已提交
717
		}
青阳龙野's avatar
青阳龙野 已提交
718
		if (checkAuth(authList, "L")) {
青阳龙野's avatar
青阳龙野 已提交
719 720 721 722 723
			$("#packageDownloadBox")
					.html(
							"<button class='btn btn-link navbar-btn' onclick='showDownloadAllCheckedModel()'><span class='glyphicon glyphicon-briefcase'></span> 打包下载</button>");
		}else{
			$("#packageDownloadBox").html("");
青阳龙野's avatar
青阳龙野 已提交
724 725
		}
		if (checkAuth(authList, "D")) {
青阳龙野's avatar
青阳龙野 已提交
726 727
			$("#deleteSeelectFileButtonLi").removeClass("disabled");
			$("#deleteSeelectFileButtonLi a").attr("onclick","showDeleteAllCheckedModel()");
青阳龙野's avatar
青阳龙野 已提交
728
		}
青阳龙野's avatar
青阳龙野 已提交
729
		if (checkAuth(authList, "M")) {
青阳龙野's avatar
青阳龙野 已提交
730 731
			$("#cutFileButtonLi").removeClass("disabled");
			$("#cutFileButtonLi a").attr("onclick","startMoveFile()");
青阳龙野's avatar
青阳龙野 已提交
732 733
			if(checkedMovefiles!==undefined&&checkedMovefiles.length>0){
				$("#cutSignTx").text("粘贴("+checkedMovefiles.length+"");
青阳龙野's avatar
青阳龙野 已提交
734
				$("#cutSignTx").addClass("cuted");
青阳龙野's avatar
青阳龙野 已提交
735 736
			}
		}
高源 已提交
737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786
	}
}

// 检查权限列表
function checkAuth(authList, auth) {
	var k = false;
	$.each(authList, function(n, a) {
		if (a == auth) {
			k = true;
		}
	});
	return k;
}

// 显示视图更新时间
function showPublishTime(folderView) {
	$("#publishTime").html("");
	var pt = "";
	if (folderView.publishTime != null) {
		pt = folderView.publishTime;
	} else {
		pt = "--";
	}
	$("#publishTime").text(pt);
}

// 刷新文件夹视图
function refreshFolderView() {
	if (locationpath != null && locationpath.length > 0) {
		showFolderView(locationpath);
	} else {
		showFolderView('root');
	}
}

// 返回上一级文件夹
function returnPF() {
	if (parentpath != null && parentpath != "null") {
		showFolderView(parentpath);
	} else {
		showFolderView('root');
	}
}

// 显示文件夹内容
function showFolderTable(folderView) {
	$("#foldertable").html("");
	if (parentpath != null && parentpath != "null") {
		$("#foldertable")
				.append(
青阳龙野's avatar
青阳龙野 已提交
787
						"<tr onclick='returnPF()'><td><button onclick='returnPF()' class='btn btn-link btn-xs'>../</button></td><td class='hiddenColumn'>--</td><td>--</td><td class='hiddenColumn'>--</td><td>--</td></tr>");
高源 已提交
788 789 790 791 792
	}
	var authList = folderView.authList;
	var aD = false;
	var aR = false;
	var aL = false;
青阳龙野's avatar
青阳龙野 已提交
793
	var aO = false;
高源 已提交
794 795 796 797 798 799 800 801 802
	if (checkAuth(authList, "D")) {
		aD = true;
	}
	if (checkAuth(authList, "R")) {
		aR = true;
	}
	if (checkAuth(authList, "L")) {
		aL = true;
	}
青阳龙野's avatar
青阳龙野 已提交
803 804 805
	if (checkAuth(authList, "O")){
		aO = true;
	}
青阳龙野's avatar
青阳龙野 已提交
806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983
	// 遍历并倒序显示文件夹列表
	for(var i1=folderView.folderList.length;i1>0;i1--){
		var f=folderView.folderList[i1-1];
		f.folderName = f.folderName.replace('\'','&#39;').replace('<','&lt;').replace('>','&gt;');
		var folderRow = "<tr id='"+f.folderId+"' onclick='checkfile(event,"+'"'+f.folderId+'"'+")' ondblclick='checkConsFile(event,"+'"'+f.folderId+'"'+")' class='filerow' iskfolder='true' ><td><button onclick='entryFolder("
				+ '"' + f.folderId + '"'
				+ ")' class='btn btn-link btn-xs'>/"
				+ f.folderName + "</button></td><td class='hiddenColumn'>"
				+ f.folderCreationDate + "</td><td>--</td><td class='hiddenColumn'>"
				+ f.folderCreator + "</td><td>";
		if (aD) {
			folderRow = folderRow
					+ "<button onclick='showDeleteFolderModel("
					+ '"'
					+ f.folderId
					+ '","'
					+ f.folderName
					+ '"'
					+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-remove'></span> 删除</button>";
		}
		if (aR) {
			folderRow = folderRow
					+ "<button onclick='showRenameFolderModel("
					+ '"'
					+ f.folderId
					+ '","'
					+ f.folderName
					+ '",'
					+ f.folderConstraint
					+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-wrench'></span> 编辑</button>";
		}
		if (aO) {
			folderRow = folderRow
					+ "<button onclick='showFolderView("
					+ '"'
					+ f.folderParent
					+ '","'
					+ f.folderId
					+ '"'
					+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-sunglasses'></span> 定位</button>";
		}
		if (!aR && !aD && !aO) {
			folderRow = folderRow + "--";
		}
		folderRow = folderRow + "</td></tr>";
		$("#foldertable").append(folderRow);
	}
	// 遍历并倒序显示文件列表
	for(var i2=folderView.fileList.length;i2>0;i2--){
		var fi = folderView.fileList[i2-1];
		fi.fileName = fi.fileName.replace('\'','&#39;').replace('<','&lt;').replace('>','&gt;');
		var fileRow = "<tr id=" + fi.fileId + " onclick='checkfile(event," + '"'
				+ fi.fileId + '"' + ")' ondblclick='checkConsFile(event,"+'"'+fi.fileId+'"'+")' id='" + fi.fileId
				+ "' class='filerow'><td>" + fi.fileName
				+ "</td><td class='hiddenColumn'>" + fi.fileCreationDate + "</td>";
		if(fi.fileSize=="0"){
			fileRow=fileRow+"<td>&lt;1MB</td>";
		}else{
			fileRow=fileRow+"<td>" + fi.fileSize + "MB</td>";
		}
		fileRow=fileRow +"<td class='hiddenColumn'>" + fi.fileCreator + "</td><td>";
		if (aL) {
			fileRow = fileRow
					+ "<button onclick='showDownloadModel("
					+ '"'
					+ fi.fileId
					+ '","'
					+ fi.fileName
					+ '"'
					+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-cloud-download'></span> 下载</button>";
			// 对于各种特殊格式文件提供的预览和播放功能
			var suffix=getSuffix(fi.fileName);
			switch (suffix) {
			case "mp4":
			case "webm":
			case "mov":
			case "avi":
			case "wmv":
			case "mkv":
			case "flv":
				fileRow = fileRow
				+ "<button onclick='playVideo("
				+ '"'
				+ fi.fileId
				+ '"'
				+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-play'></span> 播放</button>";
				break;
			case "pdf":
				fileRow = fileRow
				+ "<button onclick='pdfView("
				+ '"'
				+ fi.filePath
				+ '"'
				+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-eye-open'></span> 预览</button>";
				break;
			case "jpg":
			case "jpeg":
			case "gif":
			case "png":
			case "bmp":
				fileRow = fileRow
				+ "<button onclick='showPicture("
				+ '"'
				+ fi.fileId
				+ '"'
				+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-picture'></span> 查看</button>";
				break;
			case "mp3":
			case "wav":
			case "ogg":
				fileRow = fileRow
				+ "<button onclick='playAudio("
				+ '"'
				+ fi.fileId
				+ '"'
				+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-play'></span> 播放</button>";
				break;
			case "docx":
				fileRow = fileRow
				+ "<button onclick='docxView("
				+ '"'
				+ fi.fileId
				+ '"'
				+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-eye-open'></span> 预览</button>";
				break;
			case "txt":
				fileRow = fileRow
				+ "<button onclick='txtView("
				+ '"'
				+ fi.fileId
				+ '"'
				+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-eye-open'></span> 预览</button>";
				break;
			case "ppt":
			case "pptx":
				fileRow = fileRow
				+ "<button onclick='pptView("
				+ '"'
				+ fi.fileId
				+ '"'
				+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-eye-open'></span> 预览</button>";
				break;
			default:
				break;
			}
		}
		if (aD) {
			fileRow = fileRow
					+ "<button onclick='showDeleteFileModel("
					+ '"'
					+ fi.fileId
					+ '","'
					+ fi.fileName
					+ '"'
					+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-remove'></span> 删除</button>";
		}
		if (aR) {
			fileRow = fileRow
					+ "<button onclick='showRenameFileModel("
					+ '"'
					+ fi.fileId
					+ '"'
					+ ","
					+ '"'
					+ fi.fileName
					+ '"'
					+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-wrench'></span> 重命名</button>";
		}
		if (aO) {
			fileRow = fileRow
					+ "<button onclick='showFolderView("
					+ '"'
					+ fi.fileParentFolder
					+ '","'
					+ fi.fileId
					+ '"'
					+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-sunglasses'></span> 定位</button>";
		}
青阳龙野's avatar
青阳龙野 已提交
984 985 986 987 988 989 990 991 992 993
		if (aL && folderView.showFileChain == 'true') {
			fileRow = fileRow
			+ "<button onclick='getFileChain("
			+ '"'
			+ fi.fileId
			+ '","'
			+ fi.fileName
			+ '"'
			+ ")' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-link'></span> 链接</button>";
		}
青阳龙野's avatar
青阳龙野 已提交
994 995 996 997 998 999
		if (!aR && !aD && !aL && !aO) {
			fileRow = fileRow + "--";
		}
		fileRow = fileRow + "</td></tr>";
		$("#foldertable").append(fileRow);
	}
青阳龙野's avatar
青阳龙野 已提交
1000
	changeFilesTableStyle();
高源 已提交
1001 1002
}

青阳龙野's avatar
青阳龙野 已提交
1003 1004
var folderTypes=['公开的','仅小组','仅创建者'];// 文件夹约束条件(由小至大)

高源 已提交
1005 1006
// 显示新建文件夹模态框
function showNewFolderModel() {
青阳龙野's avatar
青阳龙野 已提交
1007 1008 1009 1010 1011 1012 1013
	$('#newFolderModal').modal('show');
}

// 修改新建文件夹约束等级
function changeNewFolderType(type){
	$("#newfoldertype").text(folderTypes[type]);
	$("#foldername").attr("folderConstraintLevel",type+"");
高源 已提交
1014 1015 1016 1017 1018
}

// 创建新的文件夹
function createfolder() {
	var fn = $("#foldername").val();
青阳龙野's avatar
青阳龙野 已提交
1019
	var fc=$("#foldername").attr("folderConstraintLevel");
青阳龙野's avatar
青阳龙野 已提交
1020
	var reg = new RegExp("[\/\|\\\\\*\\<\\>\\?\\:\\&\\$" + '"' + "]+", "g");
高源 已提交
1021 1022
	if (fn.length == 0) {
		showFolderAlert("提示:文件夹名称不能为空。");
青阳龙野's avatar
青阳龙野 已提交
1023
	} else if (fn.length > 128) {
高源 已提交
1024
		showFolderAlert("提示:文件夹名称太长。");
青阳龙野's avatar
青阳龙野 已提交
1025
	} else if (!reg.test(fn) && fn.indexOf(".") != 0) {
高源 已提交
1026 1027 1028 1029 1030 1031 1032 1033 1034
		$("#folderalert").removeClass("alert");
		$("#folderalert").removeClass("alert-danger");
		$("#foldernamebox").removeClass("has-error");
		$("#folderalert").text("");
		$.ajax({
			type : "POST",
			dataType : "text",
			data : {
				parentId : locationpath,
青阳龙野's avatar
青阳龙野 已提交
1035 1036
				folderName : fn,
				folderConstraint : fc
高源 已提交
1037 1038 1039
			},
			url : "homeController/newFolder.ajax",
			success : function(result) {
青阳龙野's avatar
青阳龙野 已提交
1040
				if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
1041
					window.location.href = "prv/login.html";
高源 已提交
1042
				} else {
青阳龙野's avatar
青阳龙野 已提交
1043
					if (result == "noAuthorized") {
青阳龙野's avatar
青阳龙野 已提交
1044
						showFolderAlert("提示:您的操作未被授权,创建文件夹失败。");
青阳龙野's avatar
青阳龙野 已提交
1045
					} else if (result == "errorParameter") {
青阳龙野's avatar
青阳龙野 已提交
1046
						showFolderAlert("提示:参数不正确,创建文件夹失败。");
青阳龙野's avatar
青阳龙野 已提交
1047
					} else if (result == "cannotCreateFolder") {
青阳龙野's avatar
青阳龙野 已提交
1048 1049 1050
						showFolderAlert("提示:出现意外错误,可能未能创建文件夹。");
					} else if (result == "nameOccupied") {
						showFolderAlert("提示:该名称已被占用,请选取其他名称。");
青阳龙野's avatar
青阳龙野 已提交
1051 1052 1053 1054 1055 1056 1057
					} else if (result == "createFolderSuccess") {
						$('#newFolderModal').modal('hide');
						showFolderView(locationpath);
					} else {
						$('#newFolderModal').modal('hide');
						showFolderView(locationpath);
					}
高源 已提交
1058 1059 1060 1061 1062 1063 1064
				}
			},
			error : function() {
				showFolderAlert("提示:出现意外错误,可能未能创建文件夹");
			}
		});
	} else {
青阳龙野's avatar
青阳龙野 已提交
1065
		showFolderAlert("提示:文件夹名中不应含有:引号 / \ * | < > & $ : ? 且不能以“.”开头。");
高源 已提交
1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105
	}
}

// 显示新建文件夹状态提示
function showFolderAlert(txt) {
	$("#folderalert").addClass("alert");
	$("#folderalert").addClass("alert-danger");
	$("#foldernamebox").addClass("has-error");
	$("#folderalert").text(txt);
}

// 进入某一文件夹
function entryFolder(folderId) {
	showFolderView(folderId);
}

// 显示删除文件夹模态框
function showDeleteFolderModel(folderId, folderName) {
	$('#deleteFolderBox')
			.html(
					"<button id='dmbutton' type='button' class='btn btn-danger' onclick='deleteFolder("
							+ '"' + folderId + '"' + ")'>删除</button>");
	$("#dmbutton").attr('disabled', false);
	$('#deleteFolderMessage').text(
			"提示:确定要彻底删除文件夹:[" + folderName + "]及其全部内容么?该操作不可恢复");
	$('#deleteFolderModal').modal('toggle');
}

// 执行删除文件夹
function deleteFolder(folderId) {
	$("#dmbutton").attr('disabled', true);
	$('#deleteFolderMessage').text("提示:正在删除,请稍候...");
	$.ajax({
		type : "POST",
		dataType : "text",
		data : {
			folderId : folderId
		},
		url : "homeController/deleteFolder.ajax",
		success : function(result) {
青阳龙野's avatar
青阳龙野 已提交
1106
			if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
1107
				window.location.href = "prv/login.html";
高源 已提交
1108
			} else {
青阳龙野's avatar
青阳龙野 已提交
1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124
				if (result == "noAuthorized") {
					$('#deleteFolderMessage').text("提示:您的操作未被授权,删除文件夹失败");
					$("#dmbutton").attr('disabled', false);
				} else if (result == "errorParameter") {
					$('#deleteFolderMessage').text("提示:参数不正确,删除文件夹失败");
					$("#dmbutton").attr('disabled', false);
				} else if (result == "cannotDeleteFolder") {
					$('#deleteFolderMessage').text("提示:出现意外错误,可能未能删除文件夹");
					$("#dmbutton").attr('disabled', false);
				} else if (result == "deleteFolderSuccess") {
					$('#deleteFolderModal').modal('hide');
					showFolderView(locationpath);
				} else {
					$('#deleteFolderMessage').text("提示:出现意外错误,可能未能删除文件夹");
					$("#dmbutton").attr('disabled', false);
				}
高源 已提交
1125 1126 1127 1128 1129 1130 1131 1132 1133 1134
			}
		},
		error : function() {
			$('#deleteFolderMessage').text("提示:出现意外错误,可能未能删除文件夹");
			$("#dmbutton").attr('disabled', false);
		}
	});
}

// 显示重命名文件夹模态框
青阳龙野's avatar
青阳龙野 已提交
1135
function showRenameFolderModel(folderId, folderName, type) {
高源 已提交
1136 1137 1138 1139
	$("#renameFolderBox").html(
			"<button type='button' class='btn btn-primary' onclick='renameFolder("
					+ '"' + folderId + '"' + ")'>修改</button>");
	$("#newfoldername").val(folderName);
青阳龙野's avatar
青阳龙野 已提交
1140 1141 1142 1143
	changeEditFolderType(type);
	$("#renameFolderModal").modal('show');
}

青阳龙野's avatar
青阳龙野 已提交
1144
// 修改编辑文件夹的约束等级
青阳龙野's avatar
青阳龙野 已提交
1145 1146 1147
function changeEditFolderType(type){
	$("#editfoldertype").text(folderTypes[type]);
	$("#newfoldername").attr("folderConstraintLevel",type+"");
高源 已提交
1148 1149
}

青阳龙野's avatar
青阳龙野 已提交
1150
// 执行重命名文件夹
高源 已提交
1151 1152
function renameFolder(folderId) {
	var newName = $("#newfoldername").val();
青阳龙野's avatar
青阳龙野 已提交
1153
	var fc=$("#newfoldername").attr("folderConstraintLevel");
青阳龙野's avatar
青阳龙野 已提交
1154
	var reg = new RegExp("[\/\|\\\\\*\\<\\>\\?\\:\\&\\$" + '"' + "]+", "g");
高源 已提交
1155
	if (newName.length == 0) {
青阳龙野's avatar
青阳龙野 已提交
1156
		showRFolderAlert("提示:文件夹名称不能为空。");
青阳龙野's avatar
青阳龙野 已提交
1157
	} else if (newName.length > 128) {
青阳龙野's avatar
青阳龙野 已提交
1158
		showRFolderAlert("提示:文件夹名称太长。");
青阳龙野's avatar
青阳龙野 已提交
1159
	} else if (!reg.test(newName) && newName.indexOf(".") != 0) {
高源 已提交
1160 1161 1162 1163 1164 1165 1166 1167 1168
		$("#newfolderalert").removeClass("alert");
		$("#newfolderalert").removeClass("alert-danger");
		$("#folderrenamebox").removeClass("has-error");
		$("#newfolderalert").text("");
		$.ajax({
			type : "POST",
			dataType : "text",
			data : {
				folderId : folderId,
青阳龙野's avatar
青阳龙野 已提交
1169 1170
				newName : newName,
				folderConstraint : fc
高源 已提交
1171 1172 1173
			},
			url : "homeController/renameFolder.ajax",
			success : function(result) {
青阳龙野's avatar
青阳龙野 已提交
1174
				if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
1175
					window.location.href = "prv/login.html";
高源 已提交
1176
				} else {
青阳龙野's avatar
青阳龙野 已提交
1177
					if (result == "noAuthorized") {
青阳龙野's avatar
青阳龙野 已提交
1178
						showRFolderAlert("提示:您的操作未被授权,编辑失败。");
青阳龙野's avatar
青阳龙野 已提交
1179
					} else if (result == "errorParameter") {
青阳龙野's avatar
青阳龙野 已提交
1180 1181 1182
						showRFolderAlert("提示:参数不正确,编辑失败,请刷新后重试。");
					} else if (result == "nameOccupied") {
						showRFolderAlert("提示:该名称已被占用,请选取其他名称。");
青阳龙野's avatar
青阳龙野 已提交
1183 1184 1185 1186
					} else if (result == "renameFolderSuccess") {
						$('#renameFolderModal').modal('hide');
						showFolderView(locationpath);
					} else {
青阳龙野's avatar
青阳龙野 已提交
1187
						showRFolderAlert("提示:出现意外错误,可能未能编辑文件夹,请刷新后重试。");
青阳龙野's avatar
青阳龙野 已提交
1188
					}
高源 已提交
1189 1190 1191
				}
			},
			error : function() {
青阳龙野's avatar
青阳龙野 已提交
1192
				showRFolderAlert("提示:出现意外错误,可能未能编辑文件夹,请刷新后重试。");
高源 已提交
1193 1194 1195
			}
		});
	} else {
青阳龙野's avatar
青阳龙野 已提交
1196
		showRFolderAlert("提示:文件夹名中不应含有:引号 / \ * | < > & $ : ? 且不能以“.”开头。");
高源 已提交
1197 1198 1199 1200
	}
}

// 显示重命名文件夹状态提示
青阳龙野's avatar
青阳龙野 已提交
1201
function showRFolderAlert(txt) {
青阳龙野's avatar
青阳龙野 已提交
1202 1203
	$("#editfolderalert").addClass("alert");
	$("#editfolderalert").addClass("alert-danger");
高源 已提交
1204
	$("#folderrenamebox").addClass("has-error");
青阳龙野's avatar
青阳龙野 已提交
1205
	$("#editfolderalert").text(txt);
高源 已提交
1206 1207 1208 1209
}

// 显示上传文件模态框
function showUploadFileModel() {
青阳龙野's avatar
青阳龙野 已提交
1210
	$("#uploadFileAlert").hide();
高源 已提交
1211
	$("#uploadFileAlert").text("");
青阳龙野's avatar
青阳龙野 已提交
1212
	if(isUpLoading==false){
青阳龙野's avatar
青阳龙野 已提交
1213
		$("#filepath").removeAttr("disabled");
青阳龙野's avatar
青阳龙野 已提交
1214 1215 1216
		$("#uploadfile").val("");
		$("#filepath").val("");
		$("#pros").width("0%");
青阳龙野's avatar
青阳龙野 已提交
1217
		$("#pros").attr('aria-valuenow','0');
青阳龙野's avatar
青阳龙野 已提交
1218 1219
		$("#umbutton").attr('disabled', false);
		$("#filecount").text("");
青阳龙野's avatar
青阳龙野 已提交
1220
		$("#uploadstatus").html("");
青阳龙野's avatar
青阳龙野 已提交
1221
		$("#selectcount").text("");
青阳龙野's avatar
青阳龙野 已提交
1222
		$("#selectFileUpLoadModelAsAll").removeAttr("checked");
青阳龙野's avatar
青阳龙野 已提交
1223
		$("#selectFileUpLoadModelAlert").hide();
青阳龙野's avatar
青阳龙野 已提交
1224 1225
	}
	$('#uploadFileModal').modal('show');
高源 已提交
1226 1227 1228 1229 1230 1231 1232
}

// 点击文本框触发input:file选择文件动作
function checkpath() {
	$('#uploadfile').click();
}

青阳龙野's avatar
青阳龙野 已提交
1233 1234 1235 1236 1237 1238
// 获取选中文件
function getInputUpload(){
	fs = $("#uploadfile").get(0).files;
	showfilepath();
}

高源 已提交
1239 1240
// 文件选中后自动回填文件路径
function showfilepath() {
青阳龙野's avatar
青阳龙野 已提交
1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253
	var filename = "";
	for (var i = 0; i < fs.length; i++) {
		filename = filename + fs[i].name;
		if (i < (fs.length - 1)) {
			filename = filename + "";
		}
	}
	if (fs.length <= 1) {
		$("#selectcount").text("");
	} else {
		$("#selectcount").text("(共" + fs.length + "个)");
	}
	$("#filepath").val(filename);
高源 已提交
1254 1255
}

青阳龙野's avatar
青阳龙野 已提交
1256
// 检查文件是否能够上传
高源 已提交
1257
function checkUploadFile() {
青阳龙野's avatar
青阳龙野 已提交
1258
	if(isUpLoading==false && isImporting == false){
青阳龙野's avatar
青阳龙野 已提交
1259
		if(fs!=null&&fs.length>0){
青阳龙野's avatar
青阳龙野 已提交
1260
			$("#filepath").attr("disabled","disabled");
青阳龙野's avatar
青阳龙野 已提交
1261
			$("#umbutton").attr('disabled', true);
青阳龙野's avatar
青阳龙野 已提交
1262 1263
			isUpLoading=true;
			repeModelList=null;
青阳龙野's avatar
青阳龙野 已提交
1264
			$("#uploadFileAlert").hide();
青阳龙野's avatar
青阳龙野 已提交
1265 1266
			$("#uploadFileAlert").text("");
			var filenames = new Array();
青阳龙野's avatar
青阳龙野 已提交
1267 1268
			var maxSize = 0;
			var maxFileIndex = 0;
青阳龙野's avatar
青阳龙野 已提交
1269 1270
			for (var i = 0; i < fs.length; i++) {
				filenames[i] = fs[i].name.replace(/^.+?\\([^\\]+?)?$/gi, "$1");
青阳龙野's avatar
青阳龙野 已提交
1271 1272 1273 1274
				if(fs[i].size > maxSize){
					maxSize = fs[i].size;
					maxFileIndex = i;
				}
青阳龙野's avatar
青阳龙野 已提交
1275 1276 1277 1278 1279 1280 1281 1282
			}
			var namelist = JSON.stringify(filenames);
			
			$.ajax({
				type : "POST",
				dataType : "text",
				data : {
					folderId : locationpath,
青阳龙野's avatar
青阳龙野 已提交
1283 1284 1285
					namelist : namelist,
					maxSize : maxSize,
					maxFileIndex : maxFileIndex
青阳龙野's avatar
青阳龙野 已提交
1286 1287 1288 1289
				},
				url : "homeController/checkUploadFile.ajax",
				success : function(result) {
					if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
1290
						window.location.href = "prv/login.html";
青阳龙野's avatar
青阳龙野 已提交
1291 1292 1293 1294 1295 1296
					} else {
						if (result == "errorParameter") {
							showUploadFileAlert("提示:参数不正确,无法开始上传");
						} else if (result == "noAuthorized") {
							showUploadFileAlert("提示:您的操作未被授权,无法开始上传");
						} else {
青阳龙野's avatar
青阳龙野 已提交
1297
							var resp=eval("("+result+")");
青阳龙野's avatar
青阳龙野 已提交
1298 1299 1300
							if(resp.checkResult == "fileTooLarge"){
								showUploadFileAlert("提示:文件["+resp.overSizeFile+"]的体积超过最大限制("+resp.maxUploadFileSize+"),无法开始上传");
							}else if(resp.checkResult == "hasExistsNames"){
青阳龙野's avatar
青阳龙野 已提交
1301 1302 1303 1304 1305 1306 1307 1308
								repeList=resp.pereFileNameList;
								repeIndex=0;
								selectFileUpLoadModelStart();
							}else if(resp.checkResult == "permitUpload"){
								doupload(1);
							}else {
								showUploadFileAlert("提示:出现意外错误,无法开始上传");
							}
青阳龙野's avatar
青阳龙野 已提交
1309 1310 1311 1312
						}
					}
				},
				error : function() {
青阳龙野's avatar
青阳龙野 已提交
1313 1314
					showUploadFileAlert("提示:出现意外错误,无法开始上传");
				}
青阳龙野's avatar
青阳龙野 已提交
1315 1316 1317
			});
		}else{
			showUploadFileAlert("提示:您未选择任何文件,无法开始上传");
高源 已提交
1318
		}
青阳龙野's avatar
青阳龙野 已提交
1319 1320
	}else{
		showUploadFileAlert("提示:另一项上传文件或文件夹的任务尚未完成,无法开始上传");
青阳龙野's avatar
青阳龙野 已提交
1321
	}
高源 已提交
1322 1323
}

青阳龙野's avatar
青阳龙野 已提交
1324 1325 1326
var repeList;// 这个是重复文件名的列表,型如['xxx','ooo',...]
var repeIndex;// 当前设定上传模式的文件序号
var repeModelList;// 这个是对每一个重复文件选取的上传模式,型如{'xxx':'skip','ooo':'both',...}
青阳龙野's avatar
青阳龙野 已提交
1327 1328 1329

// 针对同名文件,选择上传的模式:跳过(skip)、覆盖(cover)和保留两者(both)
function selectFileUpLoadModelStart(){
青阳龙野's avatar
青阳龙野 已提交
1330 1331 1332 1333 1334 1335
	var authList = originFolderView.authList;
	if(checkAuth(authList, "D")){
		$("#uploadcoverbtn").show();
	}else{
		$("#uploadcoverbtn").hide();
	}
青阳龙野's avatar
青阳龙野 已提交
1336 1337 1338 1339
	$("#selectFileUpLoadModelAlert").show();
	$("#repeFileName").text(repeList[repeIndex]);
}

青阳龙野's avatar
青阳龙野 已提交
1340
// 设定重名文件的处理方法
青阳龙野's avatar
青阳龙野 已提交
1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361
function selectFileUpLoadModelEnd(t){
	if(repeModelList == null){
		repeModelList={};
	}
	repeModelList[$("#repeFileName").text()]=t;
	$("#selectFileUpLoadModelAlert").hide();
	if($('#selectFileUpLoadModelAsAll').prop('checked')){
		for(var i=repeIndex;i<repeList.length;i++){
			repeModelList[repeList[i]]=t;
		}
		doupload(1);
	}else{
		repeIndex++;
		if(repeIndex<repeList.length){
			selectFileUpLoadModelStart();
		}else{
			doupload(1);
		}
	}
}

高源 已提交
1362
// 执行文件上传并实现上传进度显示
青阳龙野's avatar
青阳龙野 已提交
1363 1364
function doupload(count) {
	var fcount = fs.length;
高源 已提交
1365
	$("#pros").width("0%");// 先将进度条置0
青阳龙野's avatar
青阳龙野 已提交
1366
	$("#pros").attr('aria-valuenow',"0");
青阳龙野's avatar
青阳龙野 已提交
1367
	var uploadfile = fs[count - 1];// 获取要上传的文件
高源 已提交
1368
	if (uploadfile != null) {
青阳龙野's avatar
青阳龙野 已提交
1369 1370 1371 1372 1373 1374 1375
		var fname = uploadfile.name;
		if (fcount > 1) {
			$("#filecount").text("" + count + "/" + fcount + "");// 显示当前进度
		}
		$("#uploadstatus").prepend(
				"<p>" + fname + "<span id='uls_" + count
						+ "'>[正在上传...]</span></p>");
高源 已提交
1376 1377 1378 1379 1380 1381
		xhr = new XMLHttpRequest();// 这东西类似于servlet里面的request

		var fd = new FormData();// 用于封装文件数据的对象

		fd.append("file", uploadfile);// 将文件对象添加到FormData对象中,字段名为uploadfile
		fd.append("folderId", locationpath);
青阳龙野's avatar
青阳龙野 已提交
1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406
		if(repeModelList != null && repeModelList[fname] != null){
			if(repeModelList[fname] == 'skip'){
				$("#uls_" + count).text("[已完成]");
				if (count < fcount) {
					doupload(count + 1);
					return ;
				} else {
					// 清空所有提示信息,还原上传窗口
					isUpLoading=false;
					$("#filepath").removeAttr("disabled");
					$("#uploadfile").val("");
					$("#filepath").val("");
					$("#pros").width("0%");
					$("#pros").attr('aria-valuenow',"0");
					$("#umbutton").attr('disabled', false);
					$("#filecount").text("");
					$("#uploadstatus").text("");
					$("#selectcount").text("");
					$('#uploadFileModal').modal('hide');
					showFolderView(locationpath);
					return ;
				}
			}
			fd.append("repeType", repeModelList[fname]);
		}
高源 已提交
1407 1408 1409 1410 1411 1412
		xhr.open("POST", "homeController/douploadFile.ajax", true);// 上传目标

		xhr.upload.addEventListener("progress", uploadProgress, false);// 这个是对上传进度的监听
		// 上面的三个参数分别是:事件名(指定名称)、回调函数、是否冒泡(一般是false即可)

		xhr.send(fd);// 上传FormData对象
青阳龙野's avatar
青阳龙野 已提交
1413 1414 1415 1416
		
		if(pingInt == null){
			pingInt = setInterval("ping()",60000);// 上传中开始计时应答
		}
高源 已提交
1417 1418 1419

		// 上传结束后执行的回调函数
		xhr.onloadend = function() {
青阳龙野's avatar
青阳龙野 已提交
1420 1421 1422 1423 1424
			// 停止应答计时
			if(pingInt != null){
				window.clearInterval(pingInt);
				pingInt = null;
			}
高源 已提交
1425 1426 1427 1428
			if (xhr.status === 200) {
				// TODO 上传成功
				var result = xhr.responseText;
				if (result == "uploadsuccess") {
青阳龙野's avatar
青阳龙野 已提交
1429 1430 1431 1432 1433
					$("#uls_" + count).text("[已完成]");
					if (count < fcount) {
						doupload(count + 1);
					} else {
						// 清空所有提示信息,还原上传窗口
青阳龙野's avatar
青阳龙野 已提交
1434
						isUpLoading=false;
青阳龙野's avatar
青阳龙野 已提交
1435
						$("#filepath").removeAttr("disabled");
青阳龙野's avatar
青阳龙野 已提交
1436 1437 1438
						$("#uploadfile").val("");
						$("#filepath").val("");
						$("#pros").width("0%");
青阳龙野's avatar
青阳龙野 已提交
1439
						$("#pros").attr('aria-valuenow',"0");
青阳龙野's avatar
青阳龙野 已提交
1440 1441 1442 1443
						$("#umbutton").attr('disabled', false);
						$("#filecount").text("");
						$("#uploadstatus").text("");
						$("#selectcount").text("");
青阳龙野's avatar
青阳龙野 已提交
1444 1445
						$('#uploadFileModal').modal('hide');
						showFolderView(locationpath);
青阳龙野's avatar
青阳龙野 已提交
1446
					}
高源 已提交
1447
				} else if (result == "uploaderror") {
青阳龙野's avatar
青阳龙野 已提交
1448 1449 1450
					showUploadFileAlert("提示:出现意外错误,文件:[" + fname
							+ "]上传失败,上传被中断。");
					$("#uls_" + count).text("[失败]");
高源 已提交
1451
				} else {
青阳龙野's avatar
青阳龙野 已提交
1452 1453
					showUploadFileAlert("提示:出现意外错误,文件:[" + fname
							+ "]上传失败,上传被中断。");
青阳龙野's avatar
青阳龙野 已提交
1454
					$("#uls_" + count).text("[失败]");
高源 已提交
1455 1456
				}
			} else {
青阳龙野's avatar
青阳龙野 已提交
1457 1458
				showUploadFileAlert("提示:出现意外错误,文件:[" + fname + "]上传失败,上传被中断。");
				$("#uls_" + count).text("[失败]");
高源 已提交
1459 1460 1461
			}
		};
	} else {
青阳龙野's avatar
青阳龙野 已提交
1462 1463 1464
		showUploadFileAlert("提示:要上传的文件不存在。");
		$("#uploadstatus").prepend(
				"<p>未找到要上传的文件<span id='uls_" + count + "'>[失败]</span></p>");
高源 已提交
1465 1466 1467
	}
}

青阳龙野's avatar
青阳龙野 已提交
1468
// 显示上传文件进度
高源 已提交
1469 1470 1471 1472 1473 1474
function uploadProgress(evt) {
	if (evt.lengthComputable) {
		// evt.loaded:文件上传的大小 evt.total:文件总的大小
		var percentComplete = Math.round((evt.loaded) * 100 / evt.total);
		// 加载进度条,同时显示信息
		$("#pros").width(percentComplete + "%");
青阳龙野's avatar
青阳龙野 已提交
1475
		$("#pros").attr('aria-valuenow',""+percentComplete);
高源 已提交
1476 1477 1478
	}
}

青阳龙野's avatar
青阳龙野 已提交
1479
// 显示上传文件错误提示
高源 已提交
1480
function showUploadFileAlert(txt) {
青阳龙野's avatar
青阳龙野 已提交
1481
	isUpLoading=false;
青阳龙野's avatar
青阳龙野 已提交
1482
	$("#filepath").removeAttr("disabled");
青阳龙野's avatar
青阳龙野 已提交
1483
	$("#uploadFileAlert").show();
高源 已提交
1484 1485 1486 1487
	$("#uploadFileAlert").text(txt);
	$("#umbutton").attr('disabled', false);
}

青阳龙野's avatar
青阳龙野 已提交
1488 1489 1490 1491 1492 1493 1494 1495 1496 1497
// 取消上传文件
function abortUpload() {
	isUpLoading=false;
	if (xhr != null) {
		xhr.abort();
	}
	$('#uploadFileModal').modal('hide');
	showFolderView(locationpath);
}

高源 已提交
1498 1499 1500
// 显示下载文件模态框
function showDownloadModel(fileId, fileName) {
	$("#downloadFileName").text("提示:您确认要下载文件:[" + fileName + "]么?");
青阳龙野's avatar
青阳龙野 已提交
1501 1502
	$("#downloadHrefBox").html("<span class='text-muted'>正在生成...</span>");
	getDownloadFileId=fileId;
青阳龙野's avatar
青阳龙野 已提交
1503
	getDownloadFileName=fileName.replace("#","%23").replace("%","%25").replace("?","%3F");
高源 已提交
1504 1505 1506 1507 1508
	$("#downloadFileBox")
			.html(
					"<button id='dlmbutton' type='button' class='btn btn-primary' onclick='dodownload("
							+ '"' + fileId + '"' + ")'>开始下载</button>");
	$("#dlmbutton").attr('disabled', false);
青阳龙野's avatar
青阳龙野 已提交
1509
	$("#downloadModal").modal('show');
高源 已提交
1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542
}

// 执行下载操作
function dodownload(fileId) {
	$("#dlmbutton").attr('disabled', true);
	$("#downloadFileName").text("提示:准备开始下载,请稍候...");
	var t = setTimeout("$('#downloadModal').modal('hide');", 800);
	window.location.href = "homeController/downloadFile.do?fileId=" + fileId;
}

// 显示删除文件模态框
function showDeleteFileModel(fileId, fileName) {
	$('#deleteFileBox')
			.html(
					"<button id='dfmbutton' type='button' class='btn btn-danger' onclick='deleteFile("
							+ '"' + fileId + '"' + ")'>删除</button>");
	$("#dfmbutton").attr('disabled', false);
	$('#deleteFileMessage').text("提示:确定要彻底删除文件:[" + fileName + "]么?该操作不可恢复");
	$('#deleteFileModal').modal('toggle');
}

// 执行删除文件操作
function deleteFile(fileId) {
	$("#dfmbutton").attr('disabled', true);
	$('#deleteFileMessage').text("提示:正在删除,请稍候...");
	$.ajax({
		type : "POST",
		dataType : "text",
		data : {
			fileId : fileId
		},
		url : "homeController/deleteFile.ajax",
		success : function(result) {
青阳龙野's avatar
青阳龙野 已提交
1543
			if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
1544
				window.location.href = "prv/login.html";
高源 已提交
1545
			} else {
青阳龙野's avatar
青阳龙野 已提交
1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561
				if (result == "noAuthorized") {
					$('#deleteFileMessage').text("提示:您的操作未被授权,删除失败");
					$("#dfmbutton").attr('disabled', false);
				} else if (result == "errorParameter") {
					$('#deleteFileMessage').text("提示:参数不正确,删除失败");
					$("#dfmbutton").attr('disabled', false);
				} else if (result == "cannotDeleteFile") {
					$('#deleteFileMessage').text("提示:出现意外错误,可能未能删除文件");
					$("#dfmbutton").attr('disabled', false);
				} else if (result == "deleteFileSuccess") {
					$('#deleteFileModal').modal('hide');
					showFolderView(locationpath);
				} else {
					$('#deleteFileMessage').text("提示:出现意外错误,可能未能删除文件");
					$("#dfmbutton").attr('disabled', false);
				}
高源 已提交
1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585
			}
		},
		error : function() {
			$('#deleteFileMessage').text("提示:出现意外错误,可能未能删除文件");
			$("#dfmbutton").attr('disabled', false);
		}
	});
}

// 显示重命名文件模态框
function showRenameFileModel(fileId, fileName) {
	$("#newFileNamealert").removeClass("alert");
	$("#newFileNamealert").removeClass("alert-danger");
	$("#filerenamebox").removeClass("has-error");
	$("#newFileNamealert").text("");
	$("#renameFileBox").html(
			"<button type='button' class='btn btn-primary' onclick='renameFile("
					+ '"' + fileId + '"' + ")'>修改</button>");
	$("#newfilename").val(fileName);
	$("#renameFileModal").modal('toggle');
}

// 修改文件名
function renameFile(fileId) {
青阳龙野's avatar
青阳龙野 已提交
1586
	var reg = new RegExp("[\/\|\\\\\*\\<\\>\\?\\:\\&\\$" + '"' + "]+", "g");
高源 已提交
1587 1588 1589
	var newFileName = $("#newfilename").val();
	if (newFileName.length > 0) {
		if (newFileName.length < 128) {
青阳龙野's avatar
青阳龙野 已提交
1590
			if (!reg.test(newFileName) && newFileName.indexOf(".")!=0) {
高源 已提交
1591 1592 1593 1594 1595 1596 1597 1598 1599
				$.ajax({
					type : "POST",
					dataType : "text",
					data : {
						fileId : fileId,
						newFileName : newFileName
					},
					url : "homeController/renameFile.ajax",
					success : function(result) {
青阳龙野's avatar
青阳龙野 已提交
1600
						if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
1601
							window.location.href = "prv/login.html";
高源 已提交
1602
						} else {
青阳龙野's avatar
青阳龙野 已提交
1603
							if (result == "cannotRenameFile") {
青阳龙野's avatar
青阳龙野 已提交
1604
								showRFileAlert("提示:出现意外错误,可能未能重命名文件,请刷新后重试。");
青阳龙野's avatar
青阳龙野 已提交
1605 1606 1607 1608
							} else if (result == "renameFileSuccess") {
								$('#renameFileModal').modal('hide');
								showFolderView(locationpath);
							} else if (result == "errorParameter") {
青阳龙野's avatar
青阳龙野 已提交
1609 1610 1611
								showRFileAlert("提示:参数错误,重命名失败,请刷新后重试。");
							} else if (result == "nameOccupied") {
								showRFileAlert("提示:该名称已被占用,请选取其他名称。");
青阳龙野's avatar
青阳龙野 已提交
1612
							} else if (result == "noAuthorized") {
青阳龙野's avatar
青阳龙野 已提交
1613
								showRFileAlert("提示:您的操作未被授权,重命名失败,请刷新后重试。");
青阳龙野's avatar
青阳龙野 已提交
1614
							} else {
青阳龙野's avatar
青阳龙野 已提交
1615
								showRFileAlert("提示:出现意外错误,可能未能重命名文件,请刷新后重试。");
青阳龙野's avatar
青阳龙野 已提交
1616
							}
高源 已提交
1617 1618 1619
						}
					},
					error : function() {
青阳龙野's avatar
青阳龙野 已提交
1620
						showRFileAlert("提示:出现意外错误,可能未能重命名文件。");
高源 已提交
1621 1622 1623
					}
				});
			} else {
青阳龙野's avatar
青阳龙野 已提交
1624
				showRFileAlert("提示:文件名中不应含有:引号 / \ * | < > & $ : ? 且不能以“.”开头。");
高源 已提交
1625 1626
			}
		} else {
青阳龙野's avatar
青阳龙野 已提交
1627
			showRFileAlert("提示:文件名称太长。");
高源 已提交
1628 1629
		}
	} else {
青阳龙野's avatar
青阳龙野 已提交
1630
		showRFileAlert("提示:文件名不能为空。");
高源 已提交
1631 1632 1633 1634
	}
}

// 显示重命名文件状态提示
青阳龙野's avatar
青阳龙野 已提交
1635
function showRFileAlert(txt) {
高源 已提交
1636 1637 1638 1639 1640 1641
	$("#newFileNamealert").addClass("alert");
	$("#newFileNamealert").addClass("alert-danger");
	$("#filerenamebox").addClass("has-error");
	$("#newFileNamealert").text(txt);
}

1642
// 获取文件名的后缀名,以小写形式输出
1643 1644 1645 1646
function getSuffix(filename) {
	var index1 = filename.lastIndexOf(".");
	var index2 = filename.length;
	var suffix = filename.substring(index1 + 1, index2);
1647 1648 1649 1650 1651
	return suffix.toLowerCase();
}

// 播放指定格式的视频
function playVideo(fileId) {
青阳龙野's avatar
青阳龙野 已提交
1652
	window.open("quickview/video.html?fileId=" + fileId);
1653 1654 1655
}

// 预览PDF文档
青阳龙野's avatar
青阳龙野 已提交
1656 1657
function pdfView(filePath) {
	window.open("/pdfview/web/viewer.html?file=/fileblocks/" + filePath);
1658 1659
}

青阳龙野's avatar
青阳龙野 已提交
1660
// 预览Docx文档
青阳龙野's avatar
青阳龙野 已提交
1661 1662 1663 1664
function docxView(fileId){
	window.open("/pdfview/web/viewer.html?file=/resourceController/getWordView/" + fileId);
}

青阳龙野's avatar
青阳龙野 已提交
1665
// 预览TXT文档
青阳龙野's avatar
青阳龙野 已提交
1666 1667 1668 1669
function txtView(fileId){
	window.open("/pdfview/web/viewer.html?file=/resourceController/getTxtView/" + fileId);
}

青阳龙野's avatar
青阳龙野 已提交
1670 1671 1672 1673 1674
// 预览PPT文档
function pptView(fileId){
	window.open("/pdfview/web/viewer.html?file=/resourceController/getPPTView/" + fileId);
}

1675 1676
// 查看图片
function showPicture(fileId) {
青阳龙野's avatar
青阳龙野 已提交
1677 1678 1679 1680 1681 1682 1683 1684 1685
	$.ajax({
		url : "homeController/getPrePicture.ajax",
		data : {
			fileId : fileId
		},
		type : "POST",
		dataType : "text",
		success : function(result) {
			if (result != "ERROR") {
青阳龙野's avatar
青阳龙野 已提交
1686
				pvl = eval("(" + result + ")");
青阳龙野's avatar
青阳龙野 已提交
1687
				// TODO 整合viewer.js插件
青阳龙野's avatar
青阳龙野 已提交
1688 1689 1690 1691 1692 1693 1694 1695 1696 1697
				if(pvl.pictureViewList.length <= viewerPageSize) {
					createViewList();// 以全列方式显示图片列表
				} else {
					// 以分页方式显示图片列表
					viewerPageIndex = Math.ceil((pvl.index + 1) / viewerPageSize);
					viewerTotal = Math.ceil(pvl.pictureViewList.length / viewerPageSize);
					createViewListByPage();
					var innerIndex = pvl.index - ((viewerPageIndex - 1) * viewerPageSize);
					if(viewerPageIndex > 1) {
						innerIndex++;
青阳龙野's avatar
青阳龙野 已提交
1698
					}
青阳龙野's avatar
青阳龙野 已提交
1699 1700 1701 1702
					viewer.viewer('view', innerIndex);
					viewer.viewer('show', true);
				}
				// end
青阳龙野's avatar
青阳龙野 已提交
1703 1704 1705 1706 1707 1708 1709 1710
			} else {
				alert("错误:无法定位要预览的文件或该操作未被授权。");
			}
		},
		error : function() {
			alert("错误:请求失败,请刷新重试。");
		}
	});
青阳龙野's avatar
青阳龙野 已提交
1711 1712
}

青阳龙野's avatar
青阳龙野 已提交
1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746
// 用于创建并显示小于2*limit+1长度的图片列表
function createViewList() {
	if(viewer == null) {
		var images = document.createElement("ul");
		for(var i = 0; i < pvl.pictureViewList.length; i++) {
			if(pvl.pictureViewList[i].filePath.startsWith("homeController")){
				$(images).append("<li><img src='" + pvl.pictureViewList[i].filePath + "' alt='" + pvl.pictureViewList[i].fileName + "' /></li>");
			}else{
				$(images).append("<li><img src='fileblocks/" + pvl.pictureViewList[i].filePath + "' alt='" + pvl.pictureViewList[i].fileName + "' /></li>");
			}
		}
		viewer = $(images);
		viewer.viewer({
			loop: false,
			hidden: function() {
				viewer.data('viewer').destroy();
				viewer = null;
			}
		});
	}
	viewer.viewer('view', pvl.index);
	viewer.viewer('show', true);
}

// 用于创建长于2*limit+1长度的图片分页列表
function createViewListByPage() {
	// 初始化分页结构
	if(viewer == null) {
		var images = document.createElement("ul");
		var startIndex = (viewerPageIndex - 1) * viewerPageSize;
		if(viewerPageIndex > 1) {
			$(images).append("<li><img src='css/left.png' alt='上一页' /></li>");
		}
		for(var i = 0; i < viewerPageSize && i < (pvl.pictureViewList.length - (viewerPageIndex - 1) * viewerPageSize); i++) {
青阳龙野's avatar
青阳龙野 已提交
1747
			if(pvl.pictureViewList[startIndex+i].filePath.startsWith("homeController")){
青阳龙野's avatar
青阳龙野 已提交
1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789
				$(images).append("<li><img src='" + pvl.pictureViewList[startIndex+i].filePath + "' alt='" + pvl.pictureViewList[startIndex+i].fileName + "' /></li>");
			}else{
				$(images).append("<li><img src='fileblocks/" + pvl.pictureViewList[startIndex+i].filePath + "' alt='" + pvl.pictureViewList[startIndex+i].fileName + "' /></li>");
			}
		}
		if(viewerPageIndex < viewerTotal) {
			$(images).append("<li><img src='css/right.png' alt='下一页' /></li>");
		}
		viewer = $(images);
		viewer.viewer({
			loop: false,
			view: function(event) {
				// 点击的计数为event.detail.index;
				if(event.detail.index == 0 && viewerPageIndex != 1) {
					viewerPageIndex--;
					viewer.data('viewer').destroy();
					viewer.empty();
					viewer = null;
					createViewListByPage();
					if(viewerPageIndex > 1){
						viewer.viewer('view',viewerPageSize);
					}else{
						viewer.viewer('view',viewerPageSize - 1);
					}
				} else if(event.detail.index == viewerPageSize + 1 || (event.detail.index == viewerPageSize && viewerPageIndex == 1)) {
					viewerPageIndex++;
					viewer.data('viewer').destroy();
					viewer.empty();
					viewer = null;
					createViewListByPage();
					viewer.viewer('view',1);
				}
			},
			hidden: function() {
				viewer.data('viewer').destroy();
				viewer.empty();
				viewer = null;
			}
		});
	}
}

青阳龙野's avatar
青阳龙野 已提交
1790 1791 1792 1793 1794 1795 1796 1797 1798 1799
// 兼容Chrome、IE、FF的Shift判定
function isShift(event){
	var e=window.event ||event;
	if(e.shiftKey){
		return true;
	}else{
		return false;
	}
}

青阳龙野's avatar
青阳龙野 已提交
1800
// 选中某一行文件,如果使用Shift点击则为多选
青阳龙野's avatar
青阳龙野 已提交
1801 1802
function checkfile(event,fileId) {
	if(!isShift(event)){
青阳龙野's avatar
青阳龙野 已提交
1803
		$(".filerow").removeClass("info");
青阳龙野's avatar
青阳龙野 已提交
1804
		$("#" + fileId).addClass("info");
青阳龙野's avatar
青阳龙野 已提交
1805
	}else{
青阳龙野's avatar
青阳龙野 已提交
1806 1807 1808 1809 1810
		if ($("#" + fileId).hasClass("info")) {
			$("#" + fileId).removeClass("info");
		} else {
			$("#" + fileId).addClass("info");
		}
青阳龙野's avatar
青阳龙野 已提交
1811 1812 1813
	}
}

青阳龙野's avatar
青阳龙野 已提交
1814
// 连续选中若干行文件:Shift+双击,选中规则为:前有选前,后有选后,全有也选后。
青阳龙野's avatar
青阳龙野 已提交
1815 1816
function checkConsFile(event,fileId){
	if(isShift(event)){
青阳龙野's avatar
青阳龙野 已提交
1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835
		var endRow=$("#" + fileId);
		var endRowIndex=endRow.index();
		var startRowIndex=$('.filerow.info:last').index();
		if(startRowIndex != -1){
			if(startRowIndex < endRowIndex){
				while(endRow[0] && !endRow.hasClass("info")){
					endRow.addClass("info");
					endRow=endRow.prev();
				}
			}else{
				while(endRow[0] && !endRow.hasClass("info")){
					endRow.addClass("info");
					endRow=endRow.next();
				}
			}
		}
	}
}

青阳龙野's avatar
青阳龙野 已提交
1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856

// 用于获取全部选中的文件夹和文件ID,该function返回一个对象。
// 该对象中,filesId属性为文件ID,foldersId属性为文件夹ID。两个属性均为JSON数组形式的字符串,可直接发送至服务器。此外还有size,包含了元素的总数。
function getCheckedFilesAndFolders(){
	var filesAndFolders=new Object();
	filesAndFolders.size=0;
	var filesId=new Array();
	var foldersId=new Array();
	var checkedfiles = $(".info").get();
	for (var i = 0; i < checkedfiles.length; i++) {
		if(checkedfiles[i].getAttribute("iskfolder")=="true"){
			foldersId.push(checkedfiles[i].id);
		}else{
			filesId.push(checkedfiles[i].id);
		}
		filesAndFolders.size++;
	}
	filesAndFolders.filesId = JSON.stringify(filesId);
	filesAndFolders.foldersId = JSON.stringify(foldersId);
	return filesAndFolders;
}
青阳龙野's avatar
青阳龙野 已提交
1857 1858 1859

// 切换全部文件行的选中或非选中
function checkallfile() {
青阳龙野's avatar
青阳龙野 已提交
1860
	if ($(".filerow.info").length==$(".filerow").length) {
青阳龙野's avatar
青阳龙野 已提交
1861
		$(".filerow").removeClass("info");
青阳龙野's avatar
青阳龙野 已提交
1862 1863
	} else {
		$(".filerow").addClass("info");
青阳龙野's avatar
青阳龙野 已提交
1864 1865 1866
	}
}

1867
// 显示打包下载模态框
青阳龙野's avatar
青阳龙野 已提交
1868
function showDownloadAllCheckedModel() {
1869 1870
	$("#downloadAllCheckedBox").html("");
	$("#downloadAllCheckedLoad").text("");
青阳龙野's avatar
青阳龙野 已提交
1871 1872
	var faf=getCheckedFilesAndFolders();
	if (faf.size == 0) {
青阳龙野's avatar
青阳龙野 已提交
1873
		$("#downloadAllCheckedName").html(checkFilesTip);
青阳龙野's avatar
青阳龙野 已提交
1874
	} else {
1875
		$("#downloadAllCheckedName").text(
青阳龙野's avatar
青阳龙野 已提交
1876
				"提示:您确认要打包并下载这" + faf.size + "项么?");
1877
		$("#downloadAllCheckedBox")
青阳龙野's avatar
青阳龙野 已提交
1878
				.html(
1879 1880
						"<button id='dclmbutton' type='button' class='btn btn-primary' onclick='downloadAllChecked()'>开始下载</button>");
		$("#dclmbutton").attr('disabled', false);
青阳龙野's avatar
青阳龙野 已提交
1881
	}
1882
	$("#downloadAllCheckedModal").modal('toggle');
青阳龙野's avatar
青阳龙野 已提交
1883 1884 1885 1886
}

// 下载选中的所有文件
function downloadAllChecked() {
1887
	$("#dclmbutton").attr('disabled', true);
青阳龙野's avatar
青阳龙野 已提交
1888
	var faf=getCheckedFilesAndFolders();
1889
	$("#downloadAllCheckedName").text(
青阳龙野's avatar
青阳龙野 已提交
1890
			"提示:服务器正在对选中资源进行压缩(共" + faf.size
青阳龙野's avatar
青阳龙野 已提交
1891 1892 1893 1894 1895 1896
			+ "项),这可能需要一些时间(文件越大耗时越长),压缩完成将自动开始下载。");
	// 计算预计耗时
	$.ajax({
		url:'homeController/getPackTime.ajax',
		type:'POST',
		data:{
青阳龙野's avatar
青阳龙野 已提交
1897 1898
			strIdList:faf.filesId,
			strFidList:faf.foldersId
青阳龙野's avatar
青阳龙野 已提交
1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919
		},
		dataType:'text',
		success:function(result){
			if(result!="0"){
				var count = 0;
				$("#downloadAllCheckedLoad").text("已耗时:"+count+"秒(预计耗时:"+result+"");
				zipTimer=setInterval(function() {
					count++;
					$("#downloadAllCheckedLoad").text("已耗时:"+count+"秒(预计耗时:"+result+"");
				},1000);
			}else{
				var count = 0;
				$("#downloadAllCheckedLoad").text("已耗时:"+count+"");
				zipTimer=setInterval(function() {
					count++;
					$("#downloadAllCheckedLoad").text("已耗时:"+count+"");
				},1000);
			}
		},
		error:function(){
			$("#downloadAllCheckedLoad").text("(无法获取预计耗时)");
1920
		}
青阳龙野's avatar
青阳龙野 已提交
1921 1922
	});
	// 同时发送压缩下载请求
1923 1924 1925 1926
	$.ajax({
		type : "POST",
		url : "homeController/downloadCheckedFiles.ajax",
		data : {
青阳龙野's avatar
青阳龙野 已提交
1927 1928
			strIdList:faf.filesId,
			strFidList:faf.foldersId
1929 1930 1931
		},
		dataType : "text",
		success : function(result) {
青阳龙野's avatar
青阳龙野 已提交
1932 1933 1934
			if(zipTimer!=null){
				window.clearInterval(zipTimer);
			}
1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959
			if (result == "ERROR") {
				$("#downloadAllCheckedName")
						.text("提示:压缩过程出错。无法完成压缩,请重试或告知管理员。");
			} else {
				$("#downloadAllCheckedLoad").text("");
				$("#downloadAllCheckedName").text("提示:压缩完成!准备开始下载...");
				var t = setTimeout(
						"$('#downloadAllCheckedModal').modal('hide');", 800);
				// POST提交全部下载请求
				var temp = document.createElement("form");
				temp.action = 'homeController/downloadCheckedFilesZip.do';
				temp.method = "post";
				temp.style.display = "none";
				var sl = document.createElement("input");
				sl.name = 'zipId';
				sl.value = result;
				temp.appendChild(sl);
				document.body.appendChild(temp);
				temp.submit();
			}
		},
		error : function() {
			$("#downloadAllCheckedName").text("提示:请求失败。无法完成压缩,请重试或告知管理员。");
		}
	});
青阳龙野's avatar
青阳龙野 已提交
1960 1961 1962 1963 1964
}

// 删除选中的所有文件
function showDeleteAllCheckedModel() {
	$('#deleteFileBox').html("");
青阳龙野's avatar
青阳龙野 已提交
1965
	var faf=getCheckedFilesAndFolders();
青阳龙野's avatar
青阳龙野 已提交
1966
	$("#dfmbutton").attr('disabled', false);
青阳龙野's avatar
青阳龙野 已提交
1967
	if (faf.size == 0) {
青阳龙野's avatar
青阳龙野 已提交
1968
		$('#deleteFileMessage').html(checkFilesTip);
青阳龙野's avatar
青阳龙野 已提交
1969 1970 1971 1972 1973
	} else {
		$('#deleteFileBox')
				.html(
						"<button id='dfmbutton' type='button' class='btn btn-danger' onclick='deleteAllChecked()'>全部删除</button>");
		$('#deleteFileMessage').text(
青阳龙野's avatar
青阳龙野 已提交
1974
				"提示:确定要彻底删除这" + faf.size + "项么?该操作不可恢复!");
青阳龙野's avatar
青阳龙野 已提交
1975 1976 1977 1978 1979 1980 1981
	}
	$('#deleteFileModal').modal('toggle');
}

// 删除选中的所有文件
function deleteAllChecked() {
	// TODO 提交全部删除请求
青阳龙野's avatar
青阳龙野 已提交
1982
	var faf=getCheckedFilesAndFolders();
青阳龙野's avatar
青阳龙野 已提交
1983 1984 1985 1986 1987 1988
	$("#dfmbutton").attr('disabled', true);
	$('#deleteFileMessage').text("提示:正在删除,请稍候...");
	$.ajax({
		type : "POST",
		dataType : "text",
		data : {
青阳龙野's avatar
青阳龙野 已提交
1989 1990
			strIdList : faf.filesId,
			strFidList : faf.foldersId
青阳龙野's avatar
青阳龙野 已提交
1991 1992 1993 1994
		},
		url : "homeController/deleteCheckedFiles.ajax",
		success : function(result) {
			if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
1995
				window.location.href = "prv/login.html";
青阳龙野's avatar
青阳龙野 已提交
1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019
			} else {
				if (result == "noAuthorized") {
					$('#deleteFileMessage').text("提示:您的操作未被授权,删除失败");
					$("#dfmbutton").attr('disabled', false);
				} else if (result == "errorParameter") {
					$('#deleteFileMessage').text("提示:参数不正确,未能全部删除文件");
					$("#dfmbutton").attr('disabled', false);
				} else if (result == "cannotDeleteFile") {
					$('#deleteFileMessage').text("提示:出现意外错误,可能未能删除全部文件");
					$("#dfmbutton").attr('disabled', false);
				} else if (result == "deleteFileSuccess") {
					$('#deleteFileModal').modal('hide');
					showFolderView(locationpath);
				} else {
					$('#deleteFileMessage').text("提示:出现意外错误,可能未能删除全部文件");
					$("#dfmbutton").attr('disabled', false);
				}
			}
		},
		error : function() {
			$('#deleteFileMessage').text("提示:出现意外错误,可能未能删除全部文件");
			$("#dfmbutton").attr('disabled', false);
		}
	});
青阳龙野's avatar
青阳龙野 已提交
2020 2021 2022 2023 2024
}

// 播放音乐
function playAudio(fileId) {
	$('#audioPlayerModal').modal('show');
青阳龙野's avatar
青阳龙野 已提交
2025 2026 2027
	if(pingInt == null){
		pingInt = setInterval("ping()",60000);// 播放中开始计时应答
	}
青阳龙野's avatar
青阳龙野 已提交
2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053
	if (ap == null) {
		ap = new APlayer({
			container : document.getElementById('aplayer'),
			lrcType : 3,
			mutex : true,
			volume : 0.7,
			theme:'#EDEDED',
			audio : []
		});
		ap.on('pause', function() {
			$("#playOrPause").html("<span class='glyphicon glyphicon-play' aria-hidden='true'></span>");
		});
		ap.on('play', function() {
			$("#playOrPause").html("<span class='glyphicon glyphicon-pause' aria-hidden='true'></span>");
		});
	}
	ap.list.clear();
	$.ajax({
		url:'homeController/playAudios.ajax',
		data:{
			fileId:fileId
		},
		type:'POST',
		dataType:'text',
		success:function(result){
			var ail=eval("("+result+")");
青阳龙野's avatar
青阳龙野 已提交
2054 2055 2056 2057
			// 避免存在恶意标签注入在文件名中
			for(var i=0;i<ail.as.length;i++){
				ail.as[i].name=ail.as[i].name.replace('\'','&#39;').replace('<','&lt;').replace('>','&gt;');
			}
青阳龙野's avatar
青阳龙野 已提交
2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106
			ap.list.add(ail.as);
			ap.list.switch(ail.index);
			audio_play();
		},
		error:function(){
			alert("错误:无法获取音乐列表,请稍后再试");
			closeAudioPlayer();
		}
	});
}

// 关闭音乐播放器
function closeAudioPlayer() {
	$('#audioPlayerModal').modal('hide');
}

// 切换按钮状态与
function audio_playOrPause() {
	ap.toggle();
}

// 播放
function audio_play() {
	ap.play();
}

// 暂停
function audio_pasue() {
	ap.pause();
}

// 下一首
function audio_fw() {
	ap.skipForward();
}

// 上一首
function audio_bw() {
	ap.skipBack();
}

// 音量加大,每次10%
function audio_vulome_up(){
	ap.volume(ap.audio.volume+0.1,true);
}

// 音量减少,每次10%
function audio_vulome_down(){
	ap.volume(ap.audio.volume-0.1,true);
青阳龙野's avatar
青阳龙野 已提交
2107 2108 2109 2110 2111 2112 2113
}

// 按文件名排序
function sortbyfn(){
	$("#sortByCD").removeClass();
	$("#sortByFS").removeClass();
	$("#sortByCN").removeClass();
青阳龙野's avatar
青阳龙野 已提交
2114 2115 2116 2117 2118 2119 2120 2121 2122
	var order=1;
	if($("#sortByFN").hasClass('glyphicon-triangle-bottom')){
		$("#sortByFN").removeClass();
		$("#sortByFN").addClass("glyphicon glyphicon-triangle-top");
		order=-1;
	}else{
		$("#sortByFN").removeClass();
		$("#sortByFN").addClass("glyphicon glyphicon-triangle-bottom");
	}
青阳龙野's avatar
青阳龙野 已提交
2123
	folderView.fileList.sort(function(v1,v2){
青阳龙野's avatar
青阳龙野 已提交
2124
		return order * v2.fileName.localeCompare(v1.fileName,"zh");
青阳龙野's avatar
青阳龙野 已提交
2125 2126
	});
	folderView.folderList.sort(function(v1,v2){
青阳龙野's avatar
青阳龙野 已提交
2127
		return order * v2.folderName.localeCompare(v1.folderName,"zh");
青阳龙野's avatar
青阳龙野 已提交
2128 2129 2130 2131 2132 2133 2134 2135 2136
	});
	showFolderTable(folderView);
}

// 按创建日期排序
function sortbycd(){
	$("#sortByFN").removeClass();
	$("#sortByFS").removeClass();
	$("#sortByCN").removeClass();
青阳龙野's avatar
青阳龙野 已提交
2137 2138 2139 2140 2141 2142 2143 2144 2145
	var order=1;
	if($("#sortByCD").hasClass('glyphicon-triangle-bottom')){
		$("#sortByCD").removeClass();
		$("#sortByCD").addClass("glyphicon glyphicon-triangle-top");
		order=-1;
	}else{
		$("#sortByCD").removeClass();
		$("#sortByCD").addClass("glyphicon glyphicon-triangle-bottom");
	}
青阳龙野's avatar
青阳龙野 已提交
2146 2147 2148 2149
	folderView.fileList.sort(function(v1,v2){
		var v1DateStr=v1.fileCreationDate.replace("","-").replace("","-").replace("","");
		var v2DateStr=v2.fileCreationDate.replace("","-").replace("","-").replace("","");
		var res=((new Date(Date.parse(v1DateStr)).getTime())-(new Date(Date.parse(v2DateStr)).getTime()));
青阳龙野's avatar
青阳龙野 已提交
2150
		return order * res;
青阳龙野's avatar
青阳龙野 已提交
2151 2152 2153 2154 2155
	});
	folderView.folderList.sort(function(v1,v2){
		var v1DateStr=v1.folderCreationDate.replace("","-").replace("","-").replace("","");
		var v2DateStr=v2.folderCreationDate.replace("","-").replace("","-").replace("","");
		var res=((new Date(Date.parse(v1DateStr)).getTime())-(new Date(Date.parse(v2DateStr)).getTime()));
青阳龙野's avatar
青阳龙野 已提交
2156
		return order * res;
青阳龙野's avatar
青阳龙野 已提交
2157 2158 2159 2160 2161 2162 2163 2164 2165
	});
	showFolderTable(folderView);
}

// 按文件大小排序
function sortbyfs(){
	$("#sortByFN").removeClass();
	$("#sortByCD").removeClass();
	$("#sortByCN").removeClass();
青阳龙野's avatar
青阳龙野 已提交
2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179
	// 正倒序判断
	if($("#sortByFS").hasClass("glyphicon-triangle-bottom")){
		$("#sortByFS").removeClass();
		$("#sortByFS").addClass("glyphicon glyphicon-triangle-top");
		folderView.fileList.sort(function(v1,v2){
			return v2.fileSize - v1.fileSize;
		});
	}else{
		$("#sortByFS").removeClass();
		$("#sortByFS").addClass("glyphicon glyphicon-triangle-bottom");
		folderView.fileList.sort(function(v1,v2){
			return v1.fileSize - v2.fileSize;
		});
	}
青阳龙野's avatar
青阳龙野 已提交
2180 2181 2182 2183 2184 2185 2186 2187
	showFolderTable(folderView);
}

// 按创建者排序
function sortbycn(){
	$("#sortByFN").removeClass();
	$("#sortByCD").removeClass();
	$("#sortByFS").removeClass();
青阳龙野's avatar
青阳龙野 已提交
2188 2189 2190 2191 2192 2193 2194 2195 2196
	var order=1;
	if($("#sortByCN").hasClass('glyphicon-triangle-bottom')){
		$("#sortByCN").removeClass();
		$("#sortByCN").addClass("glyphicon glyphicon-triangle-top");
		order=-1;
	}else{
		$("#sortByCN").removeClass();
		$("#sortByCN").addClass("glyphicon glyphicon-triangle-bottom");
	}
青阳龙野's avatar
青阳龙野 已提交
2197
	folderView.fileList.sort(function(v1,v2){
青阳龙野's avatar
青阳龙野 已提交
2198
		return order * v2.fileCreator.localeCompare(v1.fileCreator,"zh");
青阳龙野's avatar
青阳龙野 已提交
2199 2200
	});
	folderView.folderList.sort(function(v1,v2){
青阳龙野's avatar
青阳龙野 已提交
2201
		return order * v2.folderCreator.localeCompare(v1.folderCreator,"zh");
青阳龙野's avatar
青阳龙野 已提交
2202 2203 2204 2205 2206 2207 2208 2209 2210 2211
	});
	showFolderTable(folderView);
}

// 显示原始的顺序
function showOriginFolderView(){
	$("#sortByFN").removeClass();
	$("#sortByCD").removeClass();
	$("#sortByFS").removeClass();
	$("#sortByCN").removeClass();
青阳龙野's avatar
青阳龙野 已提交
2212 2213 2214 2215 2216
	if(screenedFoldrView!=null){
		folderView=$.extend(true, {}, screenedFoldrView);
	}else{
		folderView=$.extend(true, {}, originFolderView);
	}
青阳龙野's avatar
青阳龙野 已提交
2217 2218 2219 2220 2221
	showFolderTable(folderView);
}

// 确认文件移动(剪切-粘贴)操作
function startMoveFile(){
青阳龙野's avatar
青阳龙野 已提交
2222
	if($("#cutSignTx").hasClass("cuted")&&checkedMovefiles!==undefined){
青阳龙野's avatar
青阳龙野 已提交
2223
		$('#moveFilesMessage').text("提示:确定将这"+checkedMovefiles.size+"项移动到当前位置么?");
青阳龙野's avatar
青阳龙野 已提交
2224
		$('#moveFilesBox').html("<button id='dmvfbutton' type='button' class='btn btn-danger' onclick='doMoveFiles()'>全部移动</button>");
青阳龙野's avatar
青阳龙野 已提交
2225 2226
		$("#selectFileMoveModelAsAll").removeAttr("checked");
		$("#selectFileMoveModelAlert").hide();
青阳龙野's avatar
青阳龙野 已提交
2227 2228
		$('#moveFilesModal').modal('show');
	}else{
青阳龙野's avatar
青阳龙野 已提交
2229 2230
		checkedMovefiles = getCheckedFilesAndFolders();
		if (checkedMovefiles==undefined||checkedMovefiles.size == 0) {
青阳龙野's avatar
青阳龙野 已提交
2231
			$('#moveFilesMessage').html(checkFilesTip);
青阳龙野's avatar
青阳龙野 已提交
2232 2233
			$("#selectFileMoveModelAsAll").removeAttr("checked");
			$("#selectFileMoveModelAlert").hide();
青阳龙野's avatar
青阳龙野 已提交
2234 2235
			$('#moveFilesModal').modal('show');
		} else {
青阳龙野's avatar
青阳龙野 已提交
2236
			$("#cutSignTx").html("粘贴("+checkedMovefiles.size+")<span class='pull-right'><span class='glyphicon glyphicon-arrow-up' aria-hidden='true'></span>+V</span>");
青阳龙野's avatar
青阳龙野 已提交
2237
			$("#cutSignTx").addClass("cuted");
青阳龙野's avatar
青阳龙野 已提交
2238 2239 2240 2241
		}
	}
}

青阳龙野's avatar
青阳龙野 已提交
2242 2243 2244 2245
var repeMap;
var strMoveOptMap;
var mRepeSize;

青阳龙野's avatar
青阳龙野 已提交
2246 2247 2248 2249
// 执行文件移动操作
function doMoveFiles(){
	$("#dmvfbutton").attr('disabled', true);
	$('#moveFilesMessage').text("提示:正在移动,请稍候...");
青阳龙野's avatar
青阳龙野 已提交
2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261
	// 确认移动目标位置
	$.ajax({
		type : "POST",
		dataType : "text",
		data : {
			strIdList : checkedMovefiles.filesId,
			strFidList : checkedMovefiles.foldersId,
			locationpath:locationpath
		},
		url : "homeController/confirmMoveFiles.ajax",
		success : function(result) {
			if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
2262
				window.location.href = "prv/login.html";
青阳龙野's avatar
青阳龙野 已提交
2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285
			} else {
				if (result == "noAuthorized") {
					$('#moveFilesMessage').text("提示:您的操作未被授权,移动失败");
					$("#dmvfbutton").attr('disabled', false);
				} else if (result == "errorParameter") {
					$('#moveFilesMessage').text("提示:参数不正确,未能全部移动文件,请刷新后重试");
					$("#dmvfbutton").attr('disabled', false);
				} else if (result == "cannotMoveFiles") {
					$('#moveFilesMessage').text("提示:出现意外错误,可能未能移动全部文件,请刷新后重试");
					$("#dmvfbutton").attr('disabled', false);
				} else if (result == "confirmMoveFiles") {
					strMoveOptMap={};
					sendMoveFilesReq();
				} else if(result.startsWith("duplicationFileName:")){
					repeMap=eval("("+result.substring(20)+")");
					repeIndex=0;
					strMoveOptMap={};
					mRepeSize=repeMap.repeFolders.length+repeMap.repeNodes.length;
					if(repeMap.repeFolders.length>0){
						$("#mrepeFileName").text(repeMap.repeFolders[repeIndex].folderName);
					}else{
						$("#mrepeFileName").text(repeMap.repeNodes[repeIndex].fileName);
					}
青阳龙野's avatar
青阳龙野 已提交
2286 2287 2288 2289 2290 2291
					var authList = originFolderView.authList;
					if(checkAuth(authList, "D")){
						$("#movecoverbtn").show();
					}else{
						$("#movecoverbtn").hide();
					}
青阳龙野's avatar
青阳龙野 已提交
2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307
					$("#selectFileMoveModelAlert").show();
				} else if(result.startsWith("CANT_MOVE_TO_INSIDE:")){
					$('#moveFilesMessage').text("错误:不能将一个文件夹移动到其自身内部:"+result.substring(20));
				} else {
					$('#moveFilesMessage').text("提示:出现意外错误,可能未能移动全部文件,请刷新后重试");
					$("#dmvfbutton").attr('disabled', false);
				}
			}
		},
		error : function() {
			$('#moveFilesMessage').text("提示:出现意外错误,可能未能移动全部文件");
			$("#dmvfbutton").attr('disabled', false);
		}
	});
}

青阳龙野's avatar
青阳龙野 已提交
2308
// 对冲突的移动进行依次询问
青阳龙野's avatar
青阳龙野 已提交
2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339
function selectFileMoveModel(t){
	if($("#selectFileMoveModelAsAll").prop("checked")){
		while(repeIndex<mRepeSize){
			if(repeIndex<repeMap.repeFolders.length){
				strMoveOptMap[repeMap.repeFolders[repeIndex].folderId]=t;
			}else{
				strMoveOptMap[repeMap.repeNodes[repeIndex-repeMap.repeFolders.length].fileId]=t;
			}
			repeIndex++;
		}
		$("#selectFileMoveModelAlert").hide();
		sendMoveFilesReq();
	}
	if(repeIndex<repeMap.repeFolders.length){
		strMoveOptMap[repeMap.repeFolders[repeIndex].folderId]=t;
	}else{
		strMoveOptMap[repeMap.repeNodes[repeIndex-repeMap.repeFolders.length].fileId]=t;
	}
	repeIndex++;
	if(repeIndex<mRepeSize){
		if(repeIndex<repeMap.repeFolders.length){
			$("#mrepeFileName").text(repeMap.repeFolders[repeIndex].folderName);
		}else{
			$("#mrepeFileName").text(repeMap.repeNodes[repeIndex-repeMap.repeFolders.length].fileName);
		}
	}else{
		$("#selectFileMoveModelAlert").hide();
		sendMoveFilesReq();
	}
}

青阳龙野's avatar
青阳龙野 已提交
2340
// 发送移动文件请求
青阳龙野's avatar
青阳龙野 已提交
2341 2342 2343
function sendMoveFilesReq(){
	// 执行移动行为
	var strOptMap = JSON.stringify(strMoveOptMap);
青阳龙野's avatar
青阳龙野 已提交
2344 2345 2346 2347
	$.ajax({
		type : "POST",
		dataType : "text",
		data : {
青阳龙野's avatar
青阳龙野 已提交
2348 2349 2350
			strIdList : checkedMovefiles.filesId,
			strFidList : checkedMovefiles.foldersId,
			strOptMap : strOptMap,
青阳龙野's avatar
青阳龙野 已提交
2351 2352 2353 2354 2355
			locationpath:locationpath
		},
		url : "homeController/moveCheckedFiles.ajax",
		success : function(result) {
			if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
2356
				window.location.href = "prv/login.html";
青阳龙野's avatar
青阳龙野 已提交
2357 2358 2359 2360 2361
			} else {
				if (result == "noAuthorized") {
					$('#moveFilesMessage').text("提示:您的操作未被授权,移动失败");
					$("#dmvfbutton").attr('disabled', false);
				} else if (result == "errorParameter") {
青阳龙野's avatar
青阳龙野 已提交
2362
					$('#moveFilesMessage').text("提示:参数不正确,未能全部移动文件,请刷新后重试");
青阳龙野's avatar
青阳龙野 已提交
2363 2364
					$("#dmvfbutton").attr('disabled', false);
				} else if (result == "cannotMoveFiles") {
青阳龙野's avatar
青阳龙野 已提交
2365
					$('#moveFilesMessage').text("提示:出现意外错误,可能未能移动全部文件,请刷新后重试");
青阳龙野's avatar
青阳龙野 已提交
2366 2367 2368 2369 2370
					$("#dmvfbutton").attr('disabled', false);
				} else if (result == "moveFilesSuccess") {
					$('#moveFilesModal').modal('hide');
					showFolderView(locationpath);
				} else {
青阳龙野's avatar
青阳龙野 已提交
2371
					$('#moveFilesMessage').text("提示:出现意外错误,可能未能移动全部文件,请刷新后重试");
青阳龙野's avatar
青阳龙野 已提交
2372 2373 2374 2375 2376 2377 2378 2379 2380
					$("#dmvfbutton").attr('disabled', false);
				}
			}
		},
		error : function() {
			$('#moveFilesMessage').text("提示:出现意外错误,可能未能移动全部文件");
			$("#dmvfbutton").attr('disabled', false);
		}
	});
青阳龙野's avatar
青阳龙野 已提交
2381 2382 2383 2384 2385 2386
}

var screenedFoldrView;// 经过排序的文件视图

// 执行搜索功能
function doSearchFile(){
青阳龙野's avatar
青阳龙野 已提交
2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399
	var keyworld=$("#sreachKeyWordIn").val();
	if(keyworld.length!=0){
		// 如果用户在搜索字段中声明了全局搜索
		if(keyworld.startsWith("all:") || keyworld.startsWith("all:")){
			selectInCompletePath(keyworld.substring(4));
		}else{
			startLoading();
			selectInThisPath(keyworld);// 否则,均在本级下搜索
			endLoading();
		}
	}else{
		if(folderView.keyWorld != null){
			showFolderView(locationpath);
青阳龙野's avatar
青阳龙野 已提交
2400 2401 2402 2403
		}else{
			screenedFoldrView=null;
			showOriginFolderView();
		}
青阳龙野's avatar
青阳龙野 已提交
2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429
	}
}

// 在本级内搜索
function selectInThisPath(keyworld){
	try{
		var reg=new RegExp(keyworld+"+");
		screenedFoldrView=$.extend(true, {}, originFolderView);
		screenedFoldrView.folderList=[];
		screenedFoldrView.fileList=[];
		for(var i=0,j=originFolderView.folderList.length;i<j;i++){
			if(reg.test(originFolderView.folderList[i].folderName)){
				screenedFoldrView.folderList.push(originFolderView.folderList[i]);
			}
		}
		for(var i=0,j=originFolderView.fileList.length;i<j;i++){
			if(reg.test(originFolderView.fileList[i].fileName)){
				screenedFoldrView.fileList.push(originFolderView.fileList[i]);
			}
		}
		$("#sortByFN").removeClass();
		$("#sortByCD").removeClass();
		$("#sortByFS").removeClass();
		$("#sortByCN").removeClass();
		folderView=$.extend(true, {}, screenedFoldrView);
		showFolderTable(folderView);
青阳龙野's avatar
青阳龙野 已提交
2430 2431 2432
	}catch(e){
		alert("错误:搜索关键字有误。请在特殊符号(例如“*”)前加上“\\”进行转义。");
	}
青阳龙野's avatar
青阳龙野 已提交
2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457
}

// 全路径查找
function selectInCompletePath(keyworld){
	if(keyworld.length == 0){
		showFolderView(locationpath);
		return;
	}
	startLoading();
	$.ajax({
		type : 'POST',
		dataType : 'text',
		data : {
			fid : locationpath,
			keyworld : keyworld
		},
		url : 'homeController/sreachInCompletePath.ajax',
		success : function(result) {
			endLoading();
			if(result == "ERROR"){
				doAlert();
				$("#tb").html("<span class='graytext'>获取失败,请尝试刷新</span>");
				$("#publishTime").html("<span class='graytext'>获取失败,请尝试刷新</span>");
				$("#parentlistbox").html("<span class='graytext'>获取失败,请尝试刷新</span>");
			} else if (result == "mustLogin") {
青阳龙野's avatar
青阳龙野 已提交
2458
				window.location.href = "prv/login.html";
青阳龙野's avatar
青阳龙野 已提交
2459
			} else if(result == "notAccess"){
青阳龙野's avatar
青阳龙野 已提交
2460
				document.cookie = "folder_id=" + escape("root");
青阳龙野's avatar
青阳龙野 已提交
2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514
				window.location.href="/";
			} else {
				folderView = eval("(" + result + ")");
				locationpath = folderView.folder.folderId;
				parentpath = folderView.folder.folderParent;
				constraintLevel=folderView.folder.folderConstraint;
				screenedFoldrView=null;
				$("#sreachKeyWordIn").val("all:" + folderView.keyWorld);
				showParentList(folderView);
				showAccountView(folderView);
				showPublishTime(folderView);
				originFolderView=$.extend(true, {}, folderView);
				$("#sortByFN").removeClass();
				$("#sortByCD").removeClass();
				$("#sortByFS").removeClass();
				$("#sortByCN").removeClass();
				showFolderTable(folderView);
			}
		},
		error : function() {
			endLoading();
			doAlert();
			$("#tb").html("<span class='graytext'>获取失败,请尝试刷新</span>");
			$("#publishTime").html("<span class='graytext'>获取失败,请尝试刷新</span>");
			$("#parentlistbox")
					.html("<span class='graytext'>获取失败,请尝试刷新</span>");
		}
	});
}

// 返回顶部实现
function goBackToTop(){
	$('html,body').animate({scrollTop: 0},'slow');
}

var getDownloadFileId;// 下载链接的文件ID
var getDownloadFileName;// 下载链接的文件名(便于下载工具识别)

// 获取某一文件的下载链接
function getDownloadURL(){
	$.ajax({
		url:'externalLinksController/getDownloadKey.ajax',
		type:'POST',
		dataType:'text',
		data:{
			fId:getDownloadFileId
		},
		success:function(result){
			$("#downloadHrefBox").html("<a href='"+window.location.protocol+"//"+window.location.host+"/externalLinksController/downloadFileByKey/"+getDownloadFileName+"?dkey="+result+"'>"+window.location.protocol+"//"+window.location.host+"/externalLinksController/downloadFileByKey/"+getDownloadFileName+"?dkey="+result+"</a>");
		},
		error:function(){
			$("#downloadHrefBox").html("<span class='text-muted'>获取失败,请检查网络状态或<a href='javascript:void(0);' onclick='getDownloadURL()'>点此</a>重新获取。</span>");
		}
	});
青阳龙野's avatar
青阳龙野 已提交
2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538
}

// 防止长耗时待机时会话超时的应答器,每分钟应答一次
function ping(){
	$.ajax({
		url:"homeController/ping.ajax",
		type:"POST",
		dataType:"text",
		data:{},
		success:function(result){
			if(result != 'pong'){
				if(pingInt != null){
					window.clearInterval(pingInt);
					pingInt = null;
				}
			}
		},
		error:function(){
			if(pingInt != null){
				window.clearInterval(pingInt);
				pingInt = null;
			}
		}
	});
青阳龙野's avatar
青阳龙野 已提交
2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632
}

// 判断浏览器是否支持webkitdirectory属性且不为ios系统(判断是否能进行文件夹上传)
function isSupportWebkitdirectory() {
	var testWebkitdirectory = document.createElement("input");
	if("webkitdirectory" in testWebkitdirectory && !(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent))) {
		return true;
	} else {
		return false;
	}
};

// 显示上传文件夹模态框
function showUploadFolderModel(){
	$("#importFolderAlert").hide();
	$("#importFolderAlert").text("");
	if(isImporting == false){// 如果未进行上传,则还原上传文件夹的基本状态
		$("#folderpath").val("");
		$("#importfolder").val("");
		$("#importpros").width("0%");
		$("#importpros").attr('aria-valuenow','0');
		$("#importstatus").html("");
		$("#folderpath").attr("disabled",false);
		$("#importFolderLevelBtn").attr("disabled",false);
		$("#importcount").text("");
		$("#importbutton").attr('disabled', false);
		$("#importfoldertypelist").html("");
		$("#selectFolderImportModelAlert").hide();
		if(account!=null){
			$("#folderpath").attr("folderConstraintLevel",constraintLevel+"");
			$("#importfoldertype").text(folderTypes[constraintLevel]);
			for(var i=constraintLevel;i<folderTypes.length;i++){
				$("#importfoldertypelist").append("<li><a onclick='changeImportFolderType("+i+")'>"+folderTypes[i]+"</a></li>");
			}
		}else{
			$("#importfoldertypelist").append("<li><a onclick='changeImportFolderType(0)'>"+folderTypes[0]+"</a></li>");
		}
	}
	$("#importFolderModal").modal('show');
}

// 点击上传路径文本框时弹出文件夹选择窗口
function checkimportpath(){
	$('#importfolder').click();
}

// 用户选择文件夹后回填路径
function getInputImport(){
	ifs = $("#importfolder")[0].files;
	if(ifs.length > 0) {
		importFolderName = ifs[0].webkitRelativePath.substring(0, ifs[0].webkitRelativePath.indexOf("/"));
		$("#folderpath").val(importFolderName);
	}
}

// 检查文件夹是否能够上传
function checkImportFolder(){
	if(isUpLoading == false && isImporting ==false){
		if(ifs != null && ifs.length > 0){// 必须选中文件
			$("#folderpath").attr("disabled",true);
			$("#importFolderLevelBtn").attr("disabled",true);
			$("#importbutton").attr('disabled', true);
			$("#importFolderAlert").hide();
			$("#importFolderAlert").text("");
			isImporting = true;
			var maxSize = 0;
			var maxFileIndex = 0;
			// 找出最大体积的文件避免服务器进行效验
			for (var i = 0; i < ifs.length; i++) {
				if(ifs[i].size > maxSize){
					maxSize = ifs[i].size;
					maxFileIndex = i;
				}
			}
			// 发送合法性检查请求
			$.ajax({
				url:'homeController/checkImportFolder.ajax',
				type:'POST',
				dataType:'text',
				data:{
					folderName : importFolderName,
					maxSize : maxSize,
					folderId : locationpath
				},
				success:function(result){
					var resJson = eval("("+result+")");
					switch (resJson.result) {
					case 'noAuthorized':
						showImportFolderAlert("提示:您的操作未被授权,无法开始上传");
						break;
					case 'errorParameter':
						showImportFolderAlert("提示:参数不正确,无法开始上传");
						break;
					case 'mustLogin':
青阳龙野's avatar
青阳龙野 已提交
2633
						window.location.href = "prv/login.html";
青阳龙野's avatar
青阳龙野 已提交
2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840
						break;
					case 'fileOverSize':
						showImportFolderAlert("提示:文件["+ifs[maxFileIndex].webkitRelativePath+"]的体积超过最大限制("+resJson.maxSize+"),无法开始上传");
						break;
					case 'repeatFolder_Both':
						$("#repeFolderName").text(importFolderName);
						$("#importcoverbtn").hide();
						$("#selectFolderImportModelAlert").show();
						break;
					case 'repeatFolder_coverOrBoth':
						$("#repeFolderName").text(importFolderName);
						$("#importcoverbtn").show();
						$("#selectFolderImportModelAlert").show();
						break;
					case 'permitUpload':
						iteratorImport(0);// 直接允许上传
						break;
					default:
						showImportFolderAlert("提示:出现意外错误,无法开始上传");
						break;
					}
				},
				error:function(){
					showImportFolderAlert("提示:出现意外错误,无法开始上传");
				}
			});
		}else{
			showImportFolderAlert("提示:您未选择任何文件夹,无法开始上传");
		}
	}else{
		showImportFolderAlert("提示:另一项上传文件或文件夹的任务尚未完成,无法开始上传");
	}
}

// 显示上传文件夹错误提示
function showImportFolderAlert(txt) {
	isImporting=false;
	$("#folderpath").attr("disabled",false);
	$("#importFolderLevelBtn").attr("disabled",false);
	$("#importFolderAlert").show();
	$("#importFolderAlert").text(txt);
	$("#importbutton").attr('disabled', false);
}

// 显示上传文件夹进度
function importProgress(evt) {
	if (evt.lengthComputable) {
		// evt.loaded:文件上传的大小 evt.total:文件总的大小
		var percentComplete = Math.round((evt.loaded) * 100 / evt.total);
		// 加载进度条,同时显示信息
		$("#importpros").width(percentComplete + "%");
		$("#importpros").attr('aria-valuenow',""+percentComplete);
	}
}

// 覆盖并上传文件夹
function importAndCover() {
	$("#selectFolderImportModelAlert").hide();
	$.ajax({
		url:'homeController/deleteFolderByName.ajax',
		type:'POST',
		data:{
			parentId : locationpath,
			folderName : importFolderName
		},
		dataType:'text',
		success:function(result){
			if(result == 'deleteSuccess'){
				iteratorImport(0);// 若覆盖成功,则开始上传
			}else{
				showImportFolderAlert("提示:无法覆盖原文件夹,上传失败");
			}
		},
		error:function(){
			showImportFolderAlert("提示:无法覆盖原文件夹,上传失败");
		}
	});
}

// 保留两者并上传文件夹
function importAndBoth() {
	$("#selectFolderImportModelAlert").hide();
	var fc=$("#folderpath").attr("folderConstraintLevel");// 文件夹访问级别
	$.ajax({
		url:'homeController/createNewFolderByName.ajax',
		type:'POST',
		data:{
			parentId : locationpath,
			folderName : importFolderName,
			folderConstraint : fc
		},
		dataType:'text',
		success:function(result){
			var resJson = eval("(" + result + ")");
			if(resJson.result == 'success'){
				iteratorImport(0,resJson.newName);// 若新建成功,则使用新文件夹名称开始上传
			}else{
				showImportFolderAlert("提示:生成新文件夹名称失败,无法开始上传");
			}
		},
		error:function(){
			showImportFolderAlert("提示:生成新文件夹名称失败,无法开始上传");
		}
	});
}

// 迭代上传文件夹内的文件(直接上传)
function iteratorImport(i,newFolderName){
	$("#importpros").width("0%");// 先将进度条置0
	$("#importpros").attr('aria-valuenow',"0");
	var uploadfile = ifs[i];// 获取要上传的文件
	var fcount = ifs.length;
	var fc=$("#folderpath").attr("folderConstraintLevel");// 文件夹访问级别
	if (uploadfile != null) {
		var fname = uploadfile.webkitRelativePath;
		if (fcount > 1) {
			$("#importcount").text("" + (i+1) + "/" + fcount + "");// 显示当前进度
		}
		$("#importstatus").prepend(
				"<p>" + fname + "<span id='ils_" + i
				+ "'>[正在上传...]</span></p>");
		xhr = new XMLHttpRequest();// 这东西类似于servlet里面的request
		
		var fd = new FormData();// 用于封装文件数据的对象
		
		fd.append("file", uploadfile);// 将文件对象添加到FormData对象中,字段名为uploadfile
		fd.append("folderId", locationpath);
		fd.append("folderConstraint",fc);
		if(!!newFolderName){
			fd.append("newFolderName",newFolderName);
		}
		xhr.open("POST", "homeController/doImportFolder.ajax", true);// 上传目标
		
		xhr.upload.addEventListener("progress", importProgress, false);// 这个是对上传进度的监听
		// 上面的三个参数分别是:事件名(指定名称)、回调函数、是否冒泡(一般是false即可)
		
		xhr.send(fd);// 上传FormData对象
		
		if(pingInt == null){
			pingInt = setInterval("ping()",60000);// 上传中开始计时应答
		}
		
		// 上传结束后执行的回调函数
		xhr.onloadend = function() {
			// 停止应答计时
			if(pingInt != null){
				window.clearInterval(pingInt);
				pingInt = null;
			}
			if (xhr.status === 200) {
				// TODO 上传成功
				var result = xhr.responseText;
				if (result == "uploadsuccess") {
					$("#ils_" + i).text("[已完成]");
					var ni=i+1;
					if(ni < fcount){
						iteratorImport(ni,newFolderName);
					}else{
						// 完成全部上传后,清空所有提示信息,并还原上传窗口
						isImporting=false;
						$("#folderpath").removeAttr("disabled");
						$("#importFolderLevelBtn").removeAttr("disabled");
						$("#importfolder").val("");
						$("#folderpath").val("");
						$("#importpros").width("0%");
						$("#importpros").attr('aria-valuenow',"0");
						$("#importbutton").attr('disabled', false);
						$("#importcount").text("");
						$("#importstatus").text("");
						$('#importFolderModal').modal('hide');
						showFolderView(locationpath);
					}
				} else if (result == "uploaderror") {
					showImportFolderAlert("提示:出现意外错误,文件:[" + fname
							+ "]上传失败,上传被中断。");
					$("#ils_" + i).text("[失败]");
				} else {
					showImportFolderAlert("提示:出现意外错误,文件:[" + fname
							+ "]上传失败,上传被中断。");
					$("#ils_" + i).text("[失败]");
				}
			} else {
				showImportFolderAlert("提示:出现意外错误,文件:[" + fname + "]上传失败,上传被中断。");
				$("#ils_" + i).text("[失败]");
			}
		};
	} else {
		showImportFolderAlert("提示:要上传的文件不存在。");
		$("#importstatus").prepend(
				"<p>未找到要上传的文件<span id='ils_" + i + "'>[失败]</span></p>");
	}
}

// 取消文件夹上传
function abortImport(){
	isImporting=false;
	if (xhr != null) {
		xhr.abort();
	}
	$('#importFolderModal').modal('hide');
	showFolderView(locationpath);
}

// 修改上传文件夹约束等级
function changeImportFolderType(type){
	$("#importfoldertype").text(folderTypes[type]);
	$("#folderpath").attr("folderConstraintLevel",type+"");
青阳龙野's avatar
青阳龙野 已提交
2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011
}

// 修改密码
function doChangePassword(){
	// 还原提示状态
	$("#changepassword_oldepwdbox,#changepassword_newpwdbox,#changepassword_reqnewpwdbox").removeClass("has-error");
	$("#changepasswordalertbox").hide();
	var change_oldPassword = $("#changepassword_oldpwd").val();
	var change_newPassword = $("#changepassword_newpwd").val();
	var change_reqNewPassword = $("#changepassword_reqnewpwd").val();
	// 输入非空检查
	if (change_oldPassword.length == 0) {
		$("#changepassword_oldepwdbox").addClass("has-error");
		$("#changepassword_oldpwd").focus();
		return;
	}
	if (change_newPassword.length == 0) {
		$("#changepassword_newpwdbox").addClass("has-error");
		$("#changepassword_newpwd").focus();
		return;
	}
	if (change_reqNewPassword.length == 0) {
		$("#changepassword_reqnewpwdbox").addClass("has-error");
		$("#changepassword_reqnewpwd").focus();
		return;
	}
	// 确认密码检查
	isChangingPassword=true;
	$("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton,#changepassword_vercode").attr('disabled', true);
	if (change_newPassword+"" != change_reqNewPassword+"") {
		showChangePasswordAlert("提示:两次输入的新密码不一致,请检查确认");
		$("#changepassword_newpwdbox").addClass("has-error");
		$("#changepassword_reqnewpwdbox").addClass("has-error");
		return;
	}
	// 以加密方式发送修改密码请求
	$.ajax({
		url : 'homeController/getPublicKey.ajax',
		type : 'POST',
		data : {},
		dataType : 'text',
		success : function(result) {
			// 获取公钥
			var changepwd_publicKeyInfo=eval("("+result+")");
			// 生成JSON对象格式的信息
			var changePasswordInfo = '{oldPwd:"' + change_oldPassword + '",newPwd:"'
			+ change_newPassword + '",time:"' + changepwd_publicKeyInfo.time + '"}';
			var encrypt = new JSEncrypt();// 加密插件对象
			encrypt.setPublicKey(changepwd_publicKeyInfo.publicKey);// 设置公钥
			var encrypted = encrypt.encrypt(changePasswordInfo);// 进行加密
			sendChangePasswordInfo(encrypted);
		},
		error : function() {
			showChangePasswordAlert("提示:密码修改失败,请检查网络链接或服务器运行状态");
		}
	});
}

// 将加密数据发送至服务器并显示操作结果
function sendChangePasswordInfo(encrypted){
	$.ajax({
		type : "POST",
		dataType : "text",
		url : "homeController/doChangePassword.ajax",
		data : {
			encrypted : encrypted,
			vercode : $("#changepassword_vercode").val()
		},
		success : function(result) {
			$("#changepassword_vccodebox").hide();
			isChangingPassword=false;
			switch (result) {
			case "success":
				$('#changePasswordModal').modal('hide');
				break;
			case "mustlogin":
				showChangePasswordAlert("提示:登录已失效或尚未登录账户,请刷新并登陆账户");
				break;
			case "illegal":
				showChangePasswordAlert("提示:用户修改密码功能已被禁用,请求被拒绝");
				break;
			case "oldpwderror":
				showChangePasswordAlert("提示:旧密码输入错误,请求被拒绝");
				$("#changepassword_oldepwdbox").addClass("has-error");
				break;
			case "needsubmitvercode":
				$("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton").attr('disabled', false);
				$("#changepassword_vccodebox").html("<label id='changepassword_vercodetitle' class='col-sm-5'><img id='changepassword_showvercode' class='vercodeimg' alt='点击获取验证码' src='homeController/getNewVerCode.do?s="+(new Date()).getTime()+"' onclick='changePasswordGetNewVerCode()'></label><div class='col-sm-7'><input type='text' class='form-control' id='changepassword_vercode' placeholder='验证码……'></div>");
				$("#changepassword_vccodebox").show();
				isChangingPassword=false;
				break;
			case "invalidnewpwd":
				showChangePasswordAlert("提示:密码修改失败,新密码不合法。新密码的长度需为3-32个字符,且仅支持ISO-8859-1中的字符(推荐使用英文字母、英文符号及阿拉伯数字)。");
				break;
			case "error":
				showChangePasswordAlert("提示:密码修改失败,修改请求无法通过加密效验(可能是请求耗时过长导致的)");
				break;
			case "cannotchangepwd":
				showChangePasswordAlert("提示:密码修改失败,发生意外错误,请稍后重试或联系管理员");
				break;
			default:
				showChangePasswordAlert("提示:密码修改失败,发生未知错误");
				break;
			}
		},
		error : function() {
			showChangePasswordAlert("提示:密码修改失败,请检查网络链接或服务器运行状态");
		}
	});
}

// 显示修改密码错误提示
function showChangePasswordAlert(txt) {
	isChangingPassword=false;
	$("#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton,#changepassword_vercode").attr('disabled', false);
	$("#changepasswordalertbox").show();
	$("#changepasswordalertbox").text(txt);
}

// (修改密码版本的)获取一个新的验证码
function changePasswordGetNewVerCode(){
	$("#changepassword_showvercode").attr("src","homeController/getNewVerCode.do?s="+(new Date()).getTime());
}

// 获取永久资源链接
function getFileChain(fileId,fileName){
	$("#fileChainTextarea").text("正在获取……");
	$("#copyChainBtn").attr('disabled', true);
	$('#fileChainModal').modal('show');
	$.ajax({
		type : "POST",
		dataType : "text",
		url : "homeController/getFileChainKey.ajax",
		data : {
			fid : fileId
		},
		success : function(result) {
			switch (result) {
			case "ERROR":
				$("#fileChainTextarea").text("提示:获取失败,请刷新页面或稍后再试。");
				break;
			case "mustlogin":
				window.location.href = "prv/login.html";
				break;
			default:
				var getChainFileName=fileName.replace("#","%23").replace("%","%25").replace("?","%3F");
				$("#fileChainTextarea").text(encodeURI(window.location.protocol+"//"+window.location.host+"/externalLinksController/chain/"+getChainFileName+"?ckey=")+encodeURIComponent(result));
				$("#copyChainBtn").attr('disabled', false);
				break;
			}
		},
		error : function() {
			$("#fileChainTextarea").text("提示:获取失败,无法连接服务器。");
		}
	});
}

// 复制链接内容
function copyFileChain(){
	let node = document.getElementById('fileChainTextarea');// input框
	let issafariBrowser = /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);
	if(issafariBrowser){
		node.setSelectionRange(0, 9999);
	}else{
		const range = document.createRange();
		range.selectNode(node);
		const selection = window.getSelection();
		if(selection.rangeCount > 0) selection.removeAllRanges();
		selection.addRange(range);
	}
	document.execCommand('copy');
高源 已提交
3012
}