| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376 | 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);        }        //如果网盘没有弹出的处理        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("<div class='U_MD_F_S_TI'>网盘</div>",                                     _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.AUTH, ["InitDisk", _loginuserid, userid, dirid], U.MD.DK.asynInitDisk, [_diskel, userid, dirid, US.userInfo.userid || US.EMPTYGUID]); //服务器加载        }        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        _value = r.value //数据库返回的值    ;    //判断根据用户id是否能获取到用户的资料    if (_value) {        //设置用户全局变量        var _diskinfo = U.MD.DK.setUserGlobalVariable(_userid, _dirid, _value);        //初始化当前用户网盘前进后退        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_LCP", "U_MD_DK_LCT", "U_MD_DK_LCY"])        //导航到达指定的目录        //打开文件,目录及导航到达区域。因为现在是按需加载数据,不可能完全导航到达指定位置,则不做左边树目录展开功能        _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]);        }    }    //获取用户资料失败    else {        U.alert("帐号不存在...");        //移除网盘窗体        $(_diskinfo.formel).remove();    }}/*** 打开应用** @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);            //如果是群主的处理,那么就做为协同文件            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    ; //头部新建文件夹等按钮    //上传事件    _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);    }    //新建表格事件    _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.DK.C.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); //刷新函数    }    //右键菜单点击处理    $("#U_MD_DK_RZ", diskinfo.formel)[0].oncontextmenu = function () {        U.MD.DK.RM.rightMenu(null, null, 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,        "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
 |