| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 | /*存在问题1、非能打开文件处理*/Namespace.register("U.MD.DK.LE"); //Disk左键事件命名空间//#region 左键事件处理//#region 当前网盘打开//文件点击,文件夹点击,及url导航到达区域。/*文件管理区域点击事件,暂时分为:音乐、图片、视频、文件。参数一:fileinfo为单击的文件对象参数四:userid为用户id。*/U.MD.DK.LE.openFileDirectory = function (fileinfo, userid) {    var i,        _apptype, //打开应用的名字        _applicationame, //应用的名字        _types = US.disk.applicationTypes, //所有的文件类型        _navarray, //导航数组        _extension, //文件扩展名        _diskinfo = U.MD.DK.M.diskOperatingSwitch(userid); //根据用户id找到其所有硬盘数据。    U.UF.EV.stopBubble(); //阻止冒泡    //fileinfo.filetype ==  1是文件 == 0 是文件夹    //如果是文件的情况下的处理    if (fileinfo.filetype) {        _extension = fileinfo["UserDirectoryExtendType"].toLocaleLowerCase(); //得到文件扩展名        //根据文件类型进入不同的应用。        _types = US.disk.applicationTypes;        _applicationame;        //判断后缀名归属于哪一个应用程序。得到应用程序的名称。        for (i in _types) {            if (_types[i].types.indexOf(_extension) > -1) { //判断文件类型是否归属该应用                _applicationame = i;                break;            }        }        //根据应用名称打开不同的应用。        switch (_applicationame) {            case "music": //播放制定的音乐,需要流程图                U.MD.DK.LE.music(fileinfo); //音乐控件                break;            case "image": //图片查看,需要流程图                                U.MD.DK.LE.img(fileinfo); //图片控件                break;            case "video": //视频处理 需要流程图                U.MD.DK.LE.video(fileinfo); //视频控件                break;            case "text": //文本文件需要流程图                U.MD.D.Txt.textCreate(fileinfo);                break;            case "usoffice": //如果是云端系统自有格式文件。 需要流程图            //excel处理            case "ue": //word处理                U.MD.D.I.openApplication("excel", fileinfo); //弹出应用处理                break;            case "uw": case "un": //word处理                U.MD.D.I.openApplication("word", fileinfo); //弹出应用处理                break;            case "txt": //txt处理                U.MD.D.I.openApplication("txt", fileinfo); //弹出应用处理                break;            //windows上传的不可识别的文件打开,直接跳转到下载页面。                                           default:                window.open("/Pages/DownAndCheck.aspx?FildID=" + fileinfo.UserDirectoryID); //页面打开                break;        }    }    //打印目录信息    else {        //添加前进后退事件        U.UF.N.addEvent(function () {            U.MD.DK.LE.openDirectory(fileinfo, userid); //打开目录        }, "disk" + userid);    }    //设置文件及文件夹的修改时间,打开文件或者文件夹时,把打开文件的时间记录到数据库。以实现最近访问文件,最近访问文件夹的功能。fileinfo.filetype == 0 表示文件夹 fileinfo.filetype == 1表示文件    if (fileinfo.UserDirectoryDeep > 1) {        //filetype = 0的情况是文件夹的处理        if (fileinfo.filetype == 0) {            U.A.Request(US.AUTH, ["UpdateDirectoryInfo", fileinfo.UserDirectoryID, ""], function () { });        }        //文件的处理        else {            U.A.Request(US.AUTH, ["UpdateFileInfo", fileinfo.UserDirectoryID, ""], function () { });        }        //设置文件更新时间        fileinfo["UserDirectoryModifyTime"] = U.UF.D.toTimeStamp(); //修改前台的时间    }}/*** 打开目录* @param  {array}  需要输出的文件或者文件夹信息* @param  {element}  输出到那个区域**/U.MD.DK.LE.openDirectory = function (fileinfo, userid) {    var _leftel, //左边元素        _diskinfo = U.MD.DK.M.diskOperatingSwitch(userid), //获取网盘信息        _content = $("#U_MD_DK_RZ", _diskinfo.formel)[0]; //获取打印内容的元素    _content.innerText = ""; //清空内容    _diskinfo.directoryid = fileinfo["UserDirectoryID"]; //设置当前打开目录的id.看全集变量US.disk.Disks    //设置url重写    U.MD.N.urlWrite("disk/" + _diskinfo.userInfo.UserId + "/" + _diskinfo.directoryid, _diskinfo.userInfo.UserNickName + "的网盘");    //判断这个目录下面有没有孩子节点,如果有就可以直接打印,如果没有那么需要去数据库取数据    if (fileinfo.Child) { //已加载文件        U.MD.DK.LE.loadDirectory(fileinfo, _diskinfo, userid);    }    //去数据库取文件夹及文件信息,异步加载    else {        //如果是最新文档的数据处理        if (_diskinfo.directoryOrFiles[0].UserDirectoryID == fileinfo.UserDirectoryID) {            U.MD.DK.LE.getNewDocument(userid, fileinfo, _content);        }        //如果是点击他人邀请或者是我的协同的处理        else if (_diskinfo.directoryOrFiles[1].UserDirectoryID == fileinfo.UserDirectoryID || _diskinfo.directoryOrFiles[2].UserDirectoryID == fileinfo.UserDirectoryID) {            if (US.friend.group) {                U.MD.DK.getGroupDirectory(US.friend.group, _diskinfo.directoryOrFiles, userid); //初始化            }            U.MD.DK.LE.loadDirectory(fileinfo, _diskinfo, userid); //打印目录信息        }        //获取文件夹下面的文件或者文件夹        else {            U.MD.DK.LE.getChildsByDirectoryId(userid, fileinfo, _content);        }    }}/*** 初始化目录* @param  {object}  文档信息* @param  {object}  网盘信息* @param  {string}  用户id**/U.MD.DK.LE.loadDirectory = function (fileinfo, diskinfo, userid) {    //展开下级文件夹    var _childs = fileinfo.Child || [],        _leftel = $("#L" + fileinfo["UserDirectoryID"], diskinfo.formel)[0],        _content = $("#U_MD_DK_RZ", diskinfo.formel)[0];    //左边树目录处理    if (_leftel) {        U.MD.DK.LL.printLeftTreeDirectory(U.Json.select(_childs, { "filetype": 0 }), _leftel, userid); //如果左边数目显示了    }    $("#U_MD_DK_RKR", diskinfo.formel)[0].innerHTML = "当前文件的数量:" + _childs.length;    diskinfo.currentDirectoryFile = _childs; //把当前显示打印的资料显示到网盘中。    //头部导航打印    var _navarray = U.MD.DK.C.getAncestors(fileinfo, diskinfo); //获取需要输出的导航信息,这里直接获取这个目录一条线上的祖先元素    U.MD.DK.LL.printNavigation(_navarray, $("#U_MD_DK_RYB", diskinfo.formel)[0], userid); //打印出导航数据    //打印数据    U.MD.DK.VW.printContent(_childs, _content);    //给当前目录设置权限    U.MD.DK.C.getDirectoryPermissions(fileinfo.UserDirectoryID, diskinfo);}//加载当前网盘内容////* @param  {string} 用户id//* @param  {object} 目录信息//* @param  {element} loading的元素。//* @param  {callback} 回调函数//* @returns {} 无 //U.MD.DK.LE.getChildsByDirectoryId = function (userid, fileinfo, loading, cb) {    //如果没有孩子节点,则去数据库取数据。    U.A.Request(US.AUTH, ["GetChildsByDirectoryId", userid, fileinfo.UserDirectoryID], U.MD.DK.LE.asynGetChildsByDirectoryId, [loading, userid, fileinfo, cb]);}//加载当前网盘内容////* @param  {string} 用户id//* @param  {object} 目录信息//* @param  {element} loading的元素。//* @param  {callback} 回调函数//* @returns {} 无 //U.MD.DK.LE.getNewDocument = function (userid, fileinfo, loading, cb) {    //用户必须登录才能查看自己网盘的内容    if (US.userInfo.userid) {        //如果没有孩子节点,则去数据库取数据。        U.A.Request(US.CD, [US.DB, "UseStudio_Office", "GetCollaborativeDocument", US.userInfo.userid, "00000000-0000-0000-0000-000000000000", "", 0, 0, 100], function (r) {            var i;            for (i = 0; i < r.value.length; i++) {                r.value[i] = new U.MD.DK.M.entity(r.value[i].UserFilesID, r.value[i].UserFilesSize, r.value[i].UserDirectoryID, r.value[i].UserFilesName, r.value[i].UserFilesName, r.value[i].UserFilesExtendName, r.value[i].UserFilesServerName, r.value[i].UserFilesAddTime, "", "9999", r.value[i].UserFilesModifyTime, r.value[i].UserDirectoryEncrypt, 1, r.value[i].UserFilesDescript, r.value[i].UserDirectoryEncrypt, "", r.value[i].UserID, US.userInfo.UserNickName, US.userInfo.username, US.userInfo.UserThumbnailImageHead);            }            U.MD.DK.LE.asynGetChildsByDirectoryId(r);        }, [loading, userid, fileinfo, cb]);    }    //直接打印空数据    else {        U.MD.DK.LE.asynGetChildsByDirectoryId({ "context": [loading, userid, fileinfo, cb], "value": [] });    }}/*** 获取网盘数据异步,这里处理了后台数据返回后吧数据写到了全局变量US.disk.Disks[userid][0]和US.disk.Disks[userid][4]中** @param  {object} ajax异步数据*/U.MD.DK.LE.asynGetChildsByDirectoryId = function (r) {    var _context = r.context, //获取异步的传参        _userid = _context[1], //用户的id        _fileinfo = _context[2], //文件的信息        _cb = _context[3], //回调函数        _dirid = _fileinfo.UserDirectoryID, //当前获取数据的目录id        _diskinfo = U.MD.DK.M.diskOperatingSwitch(_userid); //获取用户的disk信息    r = r.value;    //把获取的数据设置到网盘全局变量中,为啥有两种数据结构?    U.Json.del(_diskinfo.directoryOrFiles, { "UserDirectoryParentID": _dirid }); //移除原本有的目录文件    _fileinfo.Child = r; //设置目录的子目录或者文件    U.Json.add(r, { "Parent": _fileinfo });    //添加文件    U.MD.DK.M.entity.add(r, _diskinfo); //把文件写入到全局变量中 在_diskinfo[0]和_diskinfo[4]写入获取文件的信息    //执行回调处理    if (U.UF.C.isFunction(_cb)) {        _cb();    }    //否则执行获取数据后打开文件的处理    else if (_fileinfo.UserDirectoryID == _diskinfo.directoryid) {        //如果用户还在等待当前目录信息出现,那么就展示,如果用户在loading的时候已经切换到其他地方去查看,那么则不展示数据更新        U.MD.DK.LE.openDirectory(_fileinfo, _userid); //打开目录操作    }}/*** 根据应用名称打开音乐播放器**参数一:fileinfo为单击的文件对象*/U.MD.DK.LE.music = function (fileinfo) {    var _userid = US.disk.UserDisk.userInfo.UserId; //当前打开网盘ID    var _diskinfo = U.MD.DK.M.diskOperatingSwitch(_userid); //磁盘信息    U.UF.DL.asynLoadCss({ "href": "/css/Controls/Basic/Music.css", type: "text/css", rel: "stylesheet" }); //动态添加css文件    U.UF.DL.asynLoadJs({ type: "text/javascript", src: "/js/Controls/Basic/Music.js" }, function () {//动态添加js文件        var _music = U.Json.select(_diskinfo.currentDirectoryFile, { "UserDirectoryExtendType": "mp3" }); //获取当前打开的文件夹的所有音乐文件信息        var _arr = []; //空数组        var _num1 = ""; //索引位置        for (var _num = 0; _num < _music.length; _num++) {//当前打开的文件夹的所有音乐文件信息                                                        _arr[_num] = {                title: _music[_num].UserallDirectoryName, //音乐名                author: "", //歌手名                src: "http://fs.1473.cn/" + _music[_num].UserFilesServerName, //音乐播放路径                cover: _music[_num].UserThumbnailImageHead, //音乐封面路径                lrc: ""//歌词            }            if (_music[_num].UserDirectoryID == fileinfo.UserDirectoryID) {//判断在哪个音乐文件打开的                _num1 = _num; //索引位置            }        }        U.MD.UI.music(_arr, _num1); //音乐控件    });}/*** 根据应用名称打开图片**参数一:fileinfo为单击的文件对象*/U.MD.DK.LE.img = function (fileinfo) {    var _userid = US.disk.UserDisk.userInfo.UserId; //当前打开网盘ID    var _diskinfo = U.MD.DK.M.diskOperatingSwitch(_userid); //磁盘信息    U.UF.DL.asynLoadCss({ "href": "/css/Controls/Basic/Picture.css", type: "text/css", rel: "stylesheet" }); //动态添加css文件    U.UF.DL.asynLoadJs({ type: "text/javascript", src: "/js/Controls/Basic/Picture.js" }, function () {        var _arr = []; //空数组        var _num = 0; //所有图片的数量        var _num2 = ""; //索引位置        for (var _num1 = 0; _num1 < _diskinfo.currentDirectoryFile.length; _num1++) {//当前打开文件夹的文件            if ((_diskinfo.currentDirectoryFile[_num1].UserDirectoryExtendType == "png") || (_diskinfo.currentDirectoryFile[_num1].UserDirectoryExtendType == "jpg") || (_diskinfo.currentDirectoryFile[_num1].UserDirectoryExtendType == "gif")) {                _arr[_num] = "http://fs.1473.cn/" + _diskinfo.currentDirectoryFile[_num1].UserFilesServerName //图片地址                if (_diskinfo.currentDirectoryFile[_num1].UserDirectoryID == fileinfo.UserDirectoryID) {//判断在哪个音乐文件打开的                    _num2 = _num; //索引位置                }                _num++; //存储图片数组的数据            }        }        U.MD.UI.picture(_arr, _num2)//图片控件        U.UF.F.topWindow($('#U_MD_UI_PictureForm')[0], true); //窗体置顶    });}/*** 根据应用名称打开视频**参数一:fileinfo为单击的文件对象*/U.MD.DK.LE.video = function (fileinfo) {    new U.UF.UI.form(fileinfo.UserallDirectoryName, "", { "id": "aaa", "style": { "width": "780px", "height": "325px", "margin": "0" } }, { istop: true, isstretching: false, isenlarge: false, isnarrow: false }); //窗体    U.UF.DL.asynLoadCss({ rel: "stylesheet", type: "text/css", href: "/css/Controls/Basic/Video.css" }); //动态添加css文件    U.UF.DL.asynLoadJs({ src: "/js/Controls/Basic/Video.js", "charset": "utf-8", "type": "text/javascript" }, function () {//动态添加js文件        U.MD.UI.video(("http://fs.1473.cn/" + fileinfo.UserFilesServerName), 780, 300, false, $("#aaa")[0]); //视频控件        $(".U_MD_UI_video_VideoDiv")[$(".U_MD_UI_video_VideoDiv").length - 1].style.position = "absolute"; //视频的位置        $(".U_MD_UI_video_VideoDiv")[$(".U_MD_UI_video_VideoDiv").length - 1].style.top = "25px"; //视频的定位高低        $(".U_MD_UI_video_VideoDiv")[$(".U_MD_UI_video_VideoDiv").length - 1].style.left = "0px"; //视频的定位左右    });}//#endregion
 |