/* 存在问题 1、非能打开文件处理 */ Namespace.register("U.MD.DK.LE"); //Disk左键事件命名空间 //#region 左键事件处理 //#region 当前网盘打开 //文件点击,文件夹点击,及url导航到达区域。 /* 文件管理区域点击事件,暂时分为:音乐、图片、视频、文件。 参数一:fileinfo为单击的文件对象 参数四:userid为用户id。 */ U.MD.DK.LE.openFileDirectory = function (fileinfo, userid) { var i, _content, _div, _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 "word": U.A.Request(US.DISK, ["GetFileContent", fileinfo.UserDirectoryID], function (r) { //获取word内容 if (r.value && r.value.UsOffice !== undefined && r.value.UsOffice != null) { fileinfo.UsOffice = r.value.UsOffice.unEscapeQuotes(); U.MD.D.I.openApplication("word", fileinfo); //弹出应用处理 } //如果内容不存在则去office系统中获取 else { U.A.Request("http://office.1473.cn/Officetohtml.ashx", ["Open", fileinfo.UserDirectoryExtendType, fileinfo.UserFilesServerName], function (r) { if (r.value.value != undefined) { r = r.value; fileinfo.UsOffice = r.value.getBodyHtml().replace(/src=[\'\"]?([^\'\"]*)[\'\"]?/ig, function (str1, str2) { return "src=\"http://office.1473.cn/usoffice/" + str2 + "\""; }); U.MD.D.I.openApplication("word", fileinfo); //弹出应用处理 } else { U.Alert('文档已丢失。。。'); } }); } }); break; case "txt": //txt处理 U.MD.D.I.openApplication("txt", fileinfo); //弹出应用处理 break; //windows上传的不可识别的文件打开,直接跳转到下载页面。 default: U.MD.DK.RE.downloadFile(fileinfo.UserDirectoryID, false); 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.DISK, ["UpdateDirectoryInfo", fileinfo.UserDirectoryID, ""], function () { }); } //文件的处理 else { U.A.Request(US.DISK, ["UpdateFileInfo", fileinfo.UserDirectoryID, ""], function () { }); } //设置文件更新时间 fileinfo["UserDirectoryModifyTime"] = U.UF.D.toTimeStamp(); //修改前台的时间 } } /** * 打开目录 * @param {array} 需要输出的文件或者文件夹信息 * @param {element} 输出到那个区域 **/ U.MD.DK.LE.openDirectory = function (fileinfo, userid) { var _groupinfo, _groupdirectory, _leftel, //左边元素 _diskinfo = U.MD.DK.M.diskOperatingSwitch(userid), //获取网盘信息 _content = $("#U_MD_DK_RZ", _diskinfo.formel)[0]; //获取打印内容的元素 _diskinfo.selectElement = []; //切换文件夹修改选择文件 _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) { _groupinfo = US.friend.group.concat(); _diskinfo.groups = _groupdirectory = U.MD.DK.getGroupDirectory(_groupinfo, _diskinfo.directoryOrFiles, userid); //初始化 _diskinfo.directoryOrFiles = _diskinfo.directoryOrFiles.concat(_groupdirectory); //合并数组 } 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.DISK, ["GetChildsByDirectoryId", userid, fileinfo.UserDirectoryID, fileinfo.GroupID], 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, true); //音乐控件 if (!$('#U_MD_D_T_taskbar_music')[0]) { U.MD.UI.music.player.id = "music"; U.MD.D.T.taskbar({ "id": "music", "backgroundPostion": "-144px -296px", "name": "音乐播放器", "forms": U.MD.UI.music.player, "click": function () { U.UF.F.topWindow(U.MD.UI.music.player.form); } }); } // }); } /** * 根据应用名称打开图片 * *参数一:fileinfo为单击的文件对象 */ U.MD.DK.LE.img = function (fileinfo) { if (US.disk.UserDisk) { 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 = _num; //索引位置 if (_diskinfo) { 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++; //存储图片数组的数据 } } } else { _arr.push(fileinfo); } 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