Namespace.register("U.MD.DK"); //Disk的主命名空间
//#region 初始化网盘
//初始化网盘
//
//* @param {string} 用户id,可以是自己的用户id或者其他人的用户id。当为其他人的用户id时,为查看其他人的网盘信息
//* @param {string} 目录id
//* @returns {} 无
//
U.MD.DK.initDisk = function (userid, dirid) {
//判断用户id是否存在,如果不存在说明是桌面的点击,那么就必须要求用户登录
if (userid) {
//获取网盘弹窗
var _formdiv = $("#U_D_" + userid)[0];
//如果网盘已经弹出,直接定位
if (_formdiv) {
U.UF.F.windowTopCenter(_formdiv);
U.MD.DK.openDirByDirID(userid, dirid); //导航到制定目录
}
//如果网盘没有弹出的处理
else {
var _diskel = $("#U_MD_DK").clone(true)[0],
_loginuserid = US.userInfo.userid || US.EMPTYGUID; //网盘内容元素
_diskel.id = "U_MD_DK__" + userid; //网盘内容的元素id设置为U_MD_DK__加上用户id
_diskel.style.display = "block"; //显示
//云盘拖拽
//$('.U_MD_DK_RZA', _diskel).bind('mousedown', function () { console.log(0); })
//窗体的事件处理,api中没有,需要补充。
_formdiv = new U.UF.UI.form("
网盘
",
_diskel, {
"onmousedown": function () {
U.MD.DK.M.diskOperatingSwitch(userid);
}, //鼠标单击事件。打开多个网盘时,切换网盘数据,此处需要修正,并删除.
"onresize": function () {
U.MD.DK.size(_diskel);
}, //窗体放大缩小时的处理。
"id": "U_D_" + userid,
"style": {
"width": "80%",
"height": "85%"
}
}).form;
//数据库获取指定用户指定目录下的网盘数据
U.A.Request(US.DISK, ["InitDisk", _loginuserid, userid, dirid], U.MD.DK.asynInitDisk, [_diskel, userid, dirid, US.userInfo.userid || US.EMPTYGUID, _formdiv]); //服务器加载
}
return _formdiv;
}
//没有用户id说明用户没有登录点击桌面的网盘。
else {
U.MD.U.L.login();
}
}
/**
* 得到后台获取的用户数据
*
* @param {object} request返回值
* context 上下文之间的传参
* value服务器返回值 0 用户初始化定位到指定文件夹下面的所有文件和文件夹 1 用户的信息 2 用户的网盘信息
**/
U.MD.DK.asynInitDisk = function (r) {
var _dirinfo,
_context = r.context, //获取上下文传参
_diskel = _context[0], //disk内容元素
_userid = _context[1], //用户的id
_dirid = _context[2], //目录id
_loginuserid = _context[3], //用户登录id
_formdiv = _context[4], //网盘窗体元素
_value = r.value //数据库返回的值
;
//判断根据用户id是否能获取到用户的资料
if (_value) {
//设置用户全局变量
var _diskinfo = U.MD.DK.setUserGlobalVariable(_userid, _dirid, _value);
//初始化左侧的头部样式
U.MD.DK.VW.followState(_formdiv, _userid, _loginuserid);
//初始化当前用户网盘前进后退
U.UF.N.createNav("disk" + _userid);
//初始化按钮点击事件
U.MD.DK.initDiskButton(_diskinfo);
//网盘大小初始化设置
U.MD.DK.size(_diskinfo.formel);
//初始化用户信息
U.MD.DK.initDiskUserInfo(_diskinfo);
//打印左边树目录信息
U.MD.DK.LL.printLeftTreeDirectory(_diskinfo.directoryOrFiles.slice(0, 8), $("#U_MD_DK_LTXO", _diskinfo.formel)[0], _userid, ["U_MD_DK_LCD", "U_MD_DK_LCS", "U_MD_DK_LCD", "U_MD_DK_LCB", "U_MD_DK_LCF", "U_MD_DK_LCT", "U_MD_DK_LCP", "U_MD_DK_LCY"])
U.MD.DK.openDirByDirID(_userid, _dirid); //导航到制定目录上
}
//获取用户资料失败
else {
U.alert("帐号不存在...");
//移除网盘窗体
$(_diskinfo.formel).remove();
}
}
/**
* 根据目录id打开目录
*
* @param {string} 目录id
**/
U.MD.DK.openDirByDirID = function (userid, dirid) {
var _diskinfo = US.disk.Disks[userid];
if (_diskinfo) {
//导航到达指定的目录
//打开文件,目录及导航到达区域。因为现在是按需加载数据,不可能完全导航到达指定位置,则不做左边树目录展开功能
var _dirinfo = U.Json.select(_diskinfo.directoryOrFiles, { "UserDirectoryID": dirid })[0]; //获取当前需要打开的文件夹信息
//如果目录存在的处理
if (_dirinfo) {
//如果左边的目录可以输出的处理
if ($("#L" + _dirinfo["UserDirectoryID"], _diskinfo.formel)[0]) {
U.MD.DK.LL.leftTreeClick(_dirinfo, $("#L" + _dirinfo["UserDirectoryID"], _diskinfo.formel)[0], userid); //打开该文件夹
}
//否则直接打印数据
else {
U.MD.DK.LE.openFileDirectory(_dirinfo, userid);
}
}
//目录查看不了或者是不允许查看
else {
U.MD.DK.VW.printNullView($("#U_MD_DK_RZ", _diskinfo.formel)[0]);
}
}
}
/**
* 打开应用
*
* @param {string} 用户id
* @param {string} 目录id
* @param {object} directoryOrFiles是dirid目录下所有的文件和文件夹 userInfo是用户的信息+用户的网盘信息
**/
U.MD.DK.setUserGlobalVariable = function (userid, dirid, diskinfo) {
var _dirinfo,
_basicdirectory = U.MD.DK.getBasicDirectory(diskinfo), //获取一级目录
_groupdirectory = U.MD.DK.getGroupDirectory(diskinfo.groups, _basicdirectory, diskinfo.userInfo.UserId) //获取群目录
;
_basicdirectory = _basicdirectory.concat(_groupdirectory); //群和一级目录合并生成初始化目录
//_basicdirectory[1].Child = _groupdirectory; //把群添加到文档群的的下面,作为文件夹
//diskinfo.directoryOrFile是第一次进入的时候获取的文件夹下面的文件,那么这个时候就要添加到指定的目录的child里面
_dirinfo = U.Json.select(_basicdirectory, { "UserDirectoryID": dirid }, 1)[0];
if (!_dirinfo && diskinfo.currentdirectory[0]) {
_dirinfo = diskinfo.currentdirectory[0]; //获取服务器返回的当前目录
_dirinfo = new U.MD.DK.M.entity(_dirinfo.UserDirectoryID, 0,
_dirinfo.UserDirectoryParentID, _dirinfo.UserDirectoryName, _dirinfo.UserDirectoryName, _dirinfo.UserDirectoryExtendType,
"", _dirinfo.UserDirectoryAddTime, _dirinfo.UserDirectoryUrl, _dirinfo.UserDirectoryDeep, _dirinfo.UserDirectoryModifyTime,
_dirinfo.UserDirectoryEncrypt, 0, "", _dirinfo.GroupID);
_basicdirectory.push(_dirinfo);
}
//判断是在制定的以及目录下的子文件的处理
if (_dirinfo) {
_dirinfo.Child = diskinfo.directoryOrFiles;
U.Json.add(diskinfo.directoryOrFiles, { "Parent": _dirinfo });
}
diskinfo.directoryOrFiles = _basicdirectory.concat(diskinfo.directoryOrFiles); //基础目录加上dirid获取的数据
//设置用户的全局变量
US.disk.Disks[userid] = diskinfo; //diskinfo.directoryOrFiles是dirid目录下所有的文件和文件夹 userInfo是用户的信息+用户的网盘信息
US.disk.Disks[userid].formel = $("#U_D_" + userid)[0]; //对应的网盘窗体元素
US.disk.Disks[userid].directoryid = dirid; //当前打开的目录id
US.disk.Disks[userid].currentDirectoryFile = []; //当前目录下所有的文件
US.disk.Disks[userid].operator = US.userInfo.userid; //操作用户id
return US.disk.Disks[userid]; //返回用户网盘的信息
}
/**
* 获取一个一级目录
*
**/
U.MD.DK.getBasicDirectory = function (diskinfo) {
var i,
_diskdir = US.disk.initTree.concat(); //concat相当于数组的克隆,克隆一个一级目录数组
//补充disk网盘的全局变量数据 补充左边初始化目录数据我的电脑等
for (i = 0; i < _diskdir.length; i++) { //初始化查看
//创建一个一级目录对象
_diskdir[i] = new U.MD.DK.M.entity(_diskdir[i][0], _diskdir[i][1], _diskdir[i][2], _diskdir[i][3], _diskdir[i][4],
_diskdir[i][5], _diskdir[i][6], _diskdir[i][7], _diskdir[i][8], _diskdir[i][9],
_diskdir[i][10], _diskdir[i][11], _diskdir[i][12], _diskdir[i][13], _diskdir[i][14],
_diskdir[i][15], diskinfo.userInfo.UserId, diskinfo.userInfo.UserNickName, diskinfo.userInfo.UserName, diskinfo.userInfo.UserThumbnailImageHead);
};
//返回一级目录
return _diskdir;
}
/**
* 生成群目录
* @param {array} 群数组
* @param {array} 目录id
* @param {string} 用户id
*
**/
U.MD.DK.getGroupDirectory = function (groups, basicdirectory, userid) {
if (groups != null) {
var i, _diskgroupinfo; //concat相当于数组的克隆,克隆一个一级目录数组
//还没有初始化群的处理
if (!basicdirectory[1].Child) {
basicdirectory[1].Child = [];
}
//还没有初始化群的处理
if (!basicdirectory[2].Child) {
basicdirectory[2].Child = [];
}
//补充disk网盘的全局变量数据 补充左边初始化目录数据我的电脑等
for (i = 0; i < groups.length; i++) { //初始化查看
_diskgroupinfo = groups[i];
//创建一个一级目录对象
groups[i] = new U.MD.DK.M.entity(groups[i].GroupManageID, 0, US.EMPTYGUID, groups[i].GroupManageName,
groups[i].GroupManageName, "folder", null, U.UF.D.toTimeStamp(new Date()), U.MD.DK.C.getIcon("folder")[1],
1, null, null, 0, "", groups[i].GroupManageID, null, groups[i].GroupManageUserID, groups[i].GroupManageName, groups[i].GroupManageName);
//如果是群主的处理,那么就做为协同文件
if (_diskgroupinfo.GroupManageCreateUserID == userid) {
basicdirectory[1].Child.push(groups[i]);
groups[i].Parent = basicdirectory[1];
}
//非群主的,作为协同他人的处理
else {
basicdirectory[2].Child.push(groups[i]);
groups[i].Parent = basicdirectory[2];
}
};
}
//返回一级目录
return groups || [];
}
/**
* 初始化硬盘点击按钮
*
* @param {string} 用户网盘信息
**/
U.MD.DK.initDiskButton = function (diskinfo) {
var _navchildel = $("#U_MD_DK_RKZ", diskinfo.formel).Child(),
_viewchildel = $("#U_MD_DK_RM", diskinfo.formel).Child(),
_child = $("#U_MD_DK_RY", diskinfo.formel).Child(),
_headchild = $("#U_MD_DK_RT", diskinfo.formel).Child(),
_userid = diskinfo.userInfo.UserId,
_el = $("#U_MD_DK_RZ", diskinfo.formel)[0]
; //头部新建文件夹等按钮
//上传事件
_headchild[0].onclick = function () {
U.MD.DK.C.upload(diskinfo);
}
//新建目录事件
_headchild[1].onclick = function () {
U.MD.DK.RE.newFolder(diskinfo);
}
//新建文本事件
_headchild[2].onclick = function () {
U.MD.DK.RE.newText(diskinfo);
}
//新建文档事件
_headchild[3].onclick = function () {
//U.MD.DK.RE.newDocConfirm(diskinfo);
U.MD.DK.RE.newDocument(diskinfo);
}
//新建表格事件
_headchild[4].onclick = function () {
U.MD.DK.RE.newExcel(diskinfo);
}
//创建站点
_headchild[5].onclick = function () {
var _data = U.Json.select(diskinfo.directoryOrFiles, { "UserDirectoryID": diskinfo.directoryid })[0];
U.MD.DS.dataCheck(_data.UserDirectoryExtendType, _data)
}
//前进事件
_child[0].onclick = function () {
U.UF.N.backOff("disk" + _userid); //前进事件
}
//后退事件
_child[1].onclick = function () {
U.UF.N.goAhead("disk" + _userid); //后退事件
}
//刷新按钮
_child[2].onclick = function () {
U.MD.DK.RE.refresh(_userid, U.Json.select(diskinfo.directoryOrFiles, { "UserDirectoryID": diskinfo.directoryid })[0], diskinfo); //刷新函数
}
//右键菜单点击处理
_el.oncontextmenu = function () {
U.MD.DK.RM.rightMenu(null, null, diskinfo);
};
//拖选元素处理
_el.onmousedown = function () {
U.MD.DK.C.selectElement(_el, diskinfo);
};
//左键点击空白处理
U.UF.EV.addElementEvent("mousedown", window, function () {
$(".U_MD_DK_M")[1].style.display = "none";
})
//时间排序按钮
_navchildel[0].onclick = function () {
U.MD.DK.VW.SortView(diskinfo, "UserDirectoryAddTime", function (timeone, timetwo) {
return U.UF.D.sizeComparison(timeone, timetwo) == false;
}); //时间排序处理
}
//普通视图
_navchildel[1].onclick = function () {
//视图按钮切换
_navchildel[1].className = "U_MD_DK_RKZOI U_MD_DK_Img U_MD_DK_RKZOS U_MD_DK_RKZOSI";
_navchildel[2].className = "U_MD_DK_RKZOI U_MD_DK_Img U_MD_DK_RKZOP";
//普通视图
U.MD.DK.VW.viewsSwitch("Normal", diskinfo);
}
//详细视图
_navchildel[2].onclick = function () {
//视图按钮切换
_navchildel[1].className = "U_MD_DK_RKZOI U_MD_DK_Img U_MD_DK_RKZOS";
_navchildel[2].className = "U_MD_DK_RKZOI U_MD_DK_Img U_MD_DK_RKZOP U_MD_DK_RKZOPI";
//详细视图
U.MD.DK.VW.viewsSwitch("Detailed", diskinfo);
}
//文件名排序
_viewchildel[2].onclick = function () {
U.MD.DK.VW.SortView(diskinfo, "UserallDirectoryName", function (dirnameone, dirnametwo) { //时间排序处理
return dirnameone.localeCompare(dirnametwo, "zh") == 1;
});
}
//分享次数排序,暂时分享次数没有用处
// _child[2].onclick = function () {
// U.MD.DK.VW.SortView(diskinfo, "", function (timeone, timetwo) {
// return U.UF.D.sizeComparison(timeone, timetwo) == false;
// }); //时间排序处理
// }
//来源名字排序
_viewchildel[6].onclick = function () {
U.MD.DK.VW.SortView(diskinfo, "UserNickName", function (nameone, nametwo) { //根据用户名排序
return nameone.localeCompare(nametwo, "zh") == 1;
});
}
//类型排序
_viewchildel[8].onclick = function () {
U.MD.DK.VW.SortView(diskinfo, "UserDirectoryExtendType", function (typeone, typetwo) { //根据类型排序
return typeone.localeCompare(typetwo, "zh") == 1;
});
}
//大小排序排序
_viewchildel[10].onclick = function () {
U.MD.DK.VW.SortView(diskinfo, "UserDirectorySize", function (sizeone, sizetwo) { //根据文件大小排序
return sizeone > sizetwo;
});
}
//时间排序排序
_viewchildel[12].onclick = function () {
U.MD.DK.VW.SortView(diskinfo, "UserDirectoryAddTime", function (timeone, timetwo) { //根据添加事件排序
return U.UF.D.sizeComparison(timeone, timetwo) == 1;
});
}
}
/**
* 打印网盘用户资料
*
* @param {string} 用户网盘信息
**/
U.MD.DK.initDiskUserInfo = function (diskinfo) {
var _formel = diskinfo.formel,
_userinfo = diskinfo.userInfo,
_child
;
//用户头像
$$("img", { "onerror": U.MD.C.imgError,
"onerror": U.MD.C.imgError,
"title": "点击查看",
"src": U.MD.C.getHeadImage(_userinfo.UserThumbnailImageHead)
}, $("#U_MD_DK_LIL", _formel)[0]);
//用户名
$("#U_MD_DK_LIRN", _formel)[0].innerText = _userinfo.UserNickName || _userinfo.UserName;
//用户个人简介
$("#U_MD_DK_LIRZ", _formel)[0].innerText = _userinfo.UserIndividualitysignature || "暂无个人简介";
//用户硬盘信息打印
_child = $("#U_MD_DK_LS", _formel).find("div");
_child[4].innerText = U.UF.UP.minUnitToMaxUnit(_userinfo.UserDiskSpace + "M"); //用户有多少网盘空间
_child[7].innerText = U.UF.UP.minUnitToMaxUnit(_userinfo.FileSize + "B"); //用户用了多少网盘空间
}
/**
* 网盘大小调整
*
* @param {element} 网盘窗体元素
**/
U.MD.DK.size = function (formel) {
var _contentel = $("#U_MD_DK_RZ", formel); //获取中间显示内容区域的大小
_contentel.css("height", _contentel.Parent(2).offsetHeight - 79 + "px"); //设置内容区域的大小
}
//#endregion