123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- /*
- 存在问题
- 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
|