LeftClick.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. /*
  2. 存在问题
  3. 1、非能打开文件处理
  4. */
  5. Namespace.register("U.MD.DK.LE"); //Disk左键事件命名空间
  6. //#region 左键事件处理
  7. //#region 当前网盘打开
  8. //文件点击,文件夹点击,及url导航到达区域。
  9. /*
  10. 文件管理区域点击事件,暂时分为:音乐、图片、视频、文件。
  11. 参数一:fileinfo为单击的文件对象
  12. 参数四:userid为用户id。
  13. */
  14. U.MD.DK.LE.openFileDirectory = function (fileinfo, userid) {
  15. var i,
  16. _apptype, //打开应用的名字
  17. _applicationame, //应用的名字
  18. _types = US.disk.applicationTypes, //所有的文件类型
  19. _navarray, //导航数组
  20. _extension, //文件扩展名
  21. _diskinfo = U.MD.DK.M.diskOperatingSwitch(userid); //根据用户id找到其所有硬盘数据。
  22. U.UF.EV.stopBubble(); //阻止冒泡
  23. //fileinfo.filetype == 1是文件 == 0 是文件夹
  24. //如果是文件的情况下的处理
  25. if (fileinfo.filetype) {
  26. _extension = fileinfo["UserDirectoryExtendType"].toLocaleLowerCase(); //得到文件扩展名
  27. //根据文件类型进入不同的应用。
  28. _types = US.disk.applicationTypes;
  29. _applicationame;
  30. //判断后缀名归属于哪一个应用程序。得到应用程序的名称。
  31. for (i in _types) {
  32. if (_types[i].types.indexOf(_extension) > -1) { //判断文件类型是否归属该应用
  33. _applicationame = i;
  34. break;
  35. }
  36. }
  37. //根据应用名称打开不同的应用。
  38. switch (_applicationame) {
  39. case "music": //播放制定的音乐,需要流程图
  40. U.MD.DK.LE.music(fileinfo); //音乐控件
  41. break;
  42. case "image": //图片查看,需要流程图
  43. U.MD.DK.LE.img(fileinfo); //图片控件
  44. break;
  45. case "video": //视频处理 需要流程图
  46. U.MD.DK.LE.video(fileinfo); //视频控件
  47. break;
  48. case "text": //文本文件需要流程图
  49. U.MD.D.Txt.textCreate(fileinfo);
  50. break;
  51. case "usoffice": //如果是云端系统自有格式文件。 需要流程图
  52. //excel处理
  53. case "ue": //word处理
  54. U.MD.D.I.openApplication("excel", fileinfo); //弹出应用处理
  55. break;
  56. case "uw": case "un": //word处理
  57. U.MD.D.I.openApplication("word", fileinfo); //弹出应用处理
  58. break;
  59. case "txt": //txt处理
  60. U.MD.D.I.openApplication("txt", fileinfo); //弹出应用处理
  61. break;
  62. //windows上传的不可识别的文件打开,直接跳转到下载页面。
  63. default:
  64. window.open("/Pages/DownAndCheck.aspx?FildID=" + fileinfo.UserDirectoryID); //页面打开
  65. break;
  66. }
  67. }
  68. //打印目录信息
  69. else {
  70. //添加前进后退事件
  71. U.UF.N.addEvent(function () {
  72. U.MD.DK.LE.openDirectory(fileinfo, userid); //打开目录
  73. }, "disk" + userid);
  74. }
  75. //设置文件及文件夹的修改时间,打开文件或者文件夹时,把打开文件的时间记录到数据库。以实现最近访问文件,最近访问文件夹的功能。fileinfo.filetype == 0 表示文件夹 fileinfo.filetype == 1表示文件
  76. if (fileinfo.UserDirectoryDeep > 1) {
  77. //filetype = 0的情况是文件夹的处理
  78. if (fileinfo.filetype == 0) {
  79. U.A.Request(US.AUTH, ["UpdateDirectoryInfo", fileinfo.UserDirectoryID, ""], function () { });
  80. }
  81. //文件的处理
  82. else {
  83. U.A.Request(US.AUTH, ["UpdateFileInfo", fileinfo.UserDirectoryID, ""], function () { });
  84. }
  85. //设置文件更新时间
  86. fileinfo["UserDirectoryModifyTime"] = U.UF.D.toTimeStamp(); //修改前台的时间
  87. }
  88. }
  89. /**
  90. * 打开目录
  91. * @param {array} 需要输出的文件或者文件夹信息
  92. * @param {element} 输出到那个区域
  93. **/
  94. U.MD.DK.LE.openDirectory = function (fileinfo, userid) {
  95. var _leftel, //左边元素
  96. _diskinfo = U.MD.DK.M.diskOperatingSwitch(userid), //获取网盘信息
  97. _content = $("#U_MD_DK_RZ", _diskinfo.formel)[0]; //获取打印内容的元素
  98. _content.innerText = ""; //清空内容
  99. _diskinfo.directoryid = fileinfo["UserDirectoryID"]; //设置当前打开目录的id.看全集变量US.disk.Disks
  100. //设置url重写
  101. U.MD.N.urlWrite("disk/" + _diskinfo.userInfo.UserId + "/" + _diskinfo.directoryid, _diskinfo.userInfo.UserNickName + "的网盘");
  102. //判断这个目录下面有没有孩子节点,如果有就可以直接打印,如果没有那么需要去数据库取数据
  103. if (fileinfo.Child) { //已加载文件
  104. U.MD.DK.LE.loadDirectory(fileinfo, _diskinfo, userid);
  105. }
  106. //去数据库取文件夹及文件信息,异步加载
  107. else {
  108. //如果是最新文档的数据处理
  109. if (_diskinfo.directoryOrFiles[0].UserDirectoryID == fileinfo.UserDirectoryID) {
  110. U.MD.DK.LE.getNewDocument(userid, fileinfo, _content);
  111. }
  112. //如果是点击他人邀请或者是我的协同的处理
  113. else if (_diskinfo.directoryOrFiles[1].UserDirectoryID == fileinfo.UserDirectoryID || _diskinfo.directoryOrFiles[2].UserDirectoryID == fileinfo.UserDirectoryID) {
  114. if (US.friend.group) {
  115. U.MD.DK.getGroupDirectory(US.friend.group, _diskinfo.directoryOrFiles, userid); //初始化
  116. }
  117. U.MD.DK.LE.loadDirectory(fileinfo, _diskinfo, userid); //打印目录信息
  118. }
  119. //获取文件夹下面的文件或者文件夹
  120. else {
  121. U.MD.DK.LE.getChildsByDirectoryId(userid, fileinfo, _content);
  122. }
  123. }
  124. }
  125. /**
  126. * 初始化目录
  127. * @param {object} 文档信息
  128. * @param {object} 网盘信息
  129. * @param {string} 用户id
  130. **/
  131. U.MD.DK.LE.loadDirectory = function (fileinfo, diskinfo, userid) {
  132. //展开下级文件夹
  133. var _childs = fileinfo.Child || [],
  134. _leftel = $("#L" + fileinfo["UserDirectoryID"], diskinfo.formel)[0],
  135. _content = $("#U_MD_DK_RZ", diskinfo.formel)[0];
  136. //左边树目录处理
  137. if (_leftel) {
  138. U.MD.DK.LL.printLeftTreeDirectory(U.Json.select(_childs, { "filetype": 0 }), _leftel, userid); //如果左边数目显示了
  139. }
  140. $("#U_MD_DK_RKR", diskinfo.formel)[0].innerHTML = "当前文件的数量:" + _childs.length;
  141. diskinfo.currentDirectoryFile = _childs; //把当前显示打印的资料显示到网盘中。
  142. //头部导航打印
  143. var _navarray = U.MD.DK.C.getAncestors(fileinfo, diskinfo); //获取需要输出的导航信息,这里直接获取这个目录一条线上的祖先元素
  144. U.MD.DK.LL.printNavigation(_navarray, $("#U_MD_DK_RYB", diskinfo.formel)[0], userid); //打印出导航数据
  145. //打印数据
  146. U.MD.DK.VW.printContent(_childs, _content);
  147. //给当前目录设置权限
  148. U.MD.DK.C.getDirectoryPermissions(fileinfo.UserDirectoryID, diskinfo);
  149. }
  150. //加载当前网盘内容
  151. //
  152. //* @param {string} 用户id
  153. //* @param {object} 目录信息
  154. //* @param {element} loading的元素。
  155. //* @param {callback} 回调函数
  156. //* @returns {} 无
  157. //
  158. U.MD.DK.LE.getChildsByDirectoryId = function (userid, fileinfo, loading, cb) {
  159. //如果没有孩子节点,则去数据库取数据。
  160. U.A.Request(US.AUTH, ["GetChildsByDirectoryId", userid, fileinfo.UserDirectoryID], U.MD.DK.LE.asynGetChildsByDirectoryId, [loading, userid, fileinfo, cb]);
  161. }
  162. //加载当前网盘内容
  163. //
  164. //* @param {string} 用户id
  165. //* @param {object} 目录信息
  166. //* @param {element} loading的元素。
  167. //* @param {callback} 回调函数
  168. //* @returns {} 无
  169. //
  170. U.MD.DK.LE.getNewDocument = function (userid, fileinfo, loading, cb) {
  171. //用户必须登录才能查看自己网盘的内容
  172. if (US.userInfo.userid) {
  173. //如果没有孩子节点,则去数据库取数据。
  174. U.A.Request(US.CD, [US.DB, "UseStudio_Office", "GetCollaborativeDocument", US.userInfo.userid, "00000000-0000-0000-0000-000000000000", "", 0, 0, 100], function (r) {
  175. var i;
  176. for (i = 0; i < r.value.length; i++) {
  177. 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);
  178. }
  179. U.MD.DK.LE.asynGetChildsByDirectoryId(r);
  180. }, [loading, userid, fileinfo, cb]);
  181. }
  182. //直接打印空数据
  183. else {
  184. U.MD.DK.LE.asynGetChildsByDirectoryId({ "context": [loading, userid, fileinfo, cb], "value": [] });
  185. }
  186. }
  187. /**
  188. * 获取网盘数据异步,这里处理了后台数据返回后吧数据写到了全局变量US.disk.Disks[userid][0]和US.disk.Disks[userid][4]中
  189. *
  190. * @param {object} ajax异步数据
  191. */
  192. U.MD.DK.LE.asynGetChildsByDirectoryId = function (r) {
  193. var _context = r.context, //获取异步的传参
  194. _userid = _context[1], //用户的id
  195. _fileinfo = _context[2], //文件的信息
  196. _cb = _context[3], //回调函数
  197. _dirid = _fileinfo.UserDirectoryID, //当前获取数据的目录id
  198. _diskinfo = U.MD.DK.M.diskOperatingSwitch(_userid); //获取用户的disk信息
  199. r = r.value;
  200. //把获取的数据设置到网盘全局变量中,为啥有两种数据结构?
  201. U.Json.del(_diskinfo.directoryOrFiles, { "UserDirectoryParentID": _dirid }); //移除原本有的目录文件
  202. _fileinfo.Child = r; //设置目录的子目录或者文件
  203. U.Json.add(r, { "Parent": _fileinfo });
  204. //添加文件
  205. U.MD.DK.M.entity.add(r, _diskinfo); //把文件写入到全局变量中 在_diskinfo[0]和_diskinfo[4]写入获取文件的信息
  206. //执行回调处理
  207. if (U.UF.C.isFunction(_cb)) {
  208. _cb();
  209. }
  210. //否则执行获取数据后打开文件的处理
  211. else if (_fileinfo.UserDirectoryID == _diskinfo.directoryid) {
  212. //如果用户还在等待当前目录信息出现,那么就展示,如果用户在loading的时候已经切换到其他地方去查看,那么则不展示数据更新
  213. U.MD.DK.LE.openDirectory(_fileinfo, _userid); //打开目录操作
  214. }
  215. }
  216. /**
  217. * 根据应用名称打开音乐播放器
  218. *
  219. *参数一:fileinfo为单击的文件对象
  220. */
  221. U.MD.DK.LE.music = function (fileinfo) {
  222. var _userid = US.disk.UserDisk.userInfo.UserId; //当前打开网盘ID
  223. var _diskinfo = U.MD.DK.M.diskOperatingSwitch(_userid); //磁盘信息
  224. U.UF.DL.asynLoadCss({ "href": "/css/Controls/Basic/Music.css", type: "text/css", rel: "stylesheet" }); //动态添加css文件
  225. U.UF.DL.asynLoadJs({ type: "text/javascript", src: "/js/Controls/Basic/Music.js" }, function () {//动态添加js文件
  226. var _music = U.Json.select(_diskinfo.currentDirectoryFile, { "UserDirectoryExtendType": "mp3" }); //获取当前打开的文件夹的所有音乐文件信息
  227. var _arr = []; //空数组
  228. var _num1 = ""; //索引位置
  229. for (var _num = 0; _num < _music.length; _num++) {//当前打开的文件夹的所有音乐文件信息
  230. _arr[_num] = {
  231. title: _music[_num].UserallDirectoryName, //音乐名
  232. author: "", //歌手名
  233. src: "http://fs.1473.cn/" + _music[_num].UserFilesServerName, //音乐播放路径
  234. cover: _music[_num].UserThumbnailImageHead, //音乐封面路径
  235. lrc: ""//歌词
  236. }
  237. if (_music[_num].UserDirectoryID == fileinfo.UserDirectoryID) {//判断在哪个音乐文件打开的
  238. _num1 = _num; //索引位置
  239. }
  240. }
  241. U.MD.UI.music(_arr, _num1); //音乐控件
  242. });
  243. }
  244. /**
  245. * 根据应用名称打开图片
  246. *
  247. *参数一:fileinfo为单击的文件对象
  248. */
  249. U.MD.DK.LE.img = function (fileinfo) {
  250. var _userid = US.disk.UserDisk.userInfo.UserId; //当前打开网盘ID
  251. var _diskinfo = U.MD.DK.M.diskOperatingSwitch(_userid); //磁盘信息
  252. U.UF.DL.asynLoadCss({ "href": "/css/Controls/Basic/Picture.css", type: "text/css", rel: "stylesheet" }); //动态添加css文件
  253. U.UF.DL.asynLoadJs({ type: "text/javascript", src: "/js/Controls/Basic/Picture.js" }, function () {
  254. var _arr = []; //空数组
  255. var _num = 0; //所有图片的数量
  256. var _num2 = ""; //索引位置
  257. for (var _num1 = 0; _num1 < _diskinfo.currentDirectoryFile.length; _num1++) {//当前打开文件夹的文件
  258. if ((_diskinfo.currentDirectoryFile[_num1].UserDirectoryExtendType == "png") || (_diskinfo.currentDirectoryFile[_num1].UserDirectoryExtendType == "jpg") || (_diskinfo.currentDirectoryFile[_num1].UserDirectoryExtendType == "gif")) {
  259. _arr[_num] = "http://fs.1473.cn/" + _diskinfo.currentDirectoryFile[_num1].UserFilesServerName //图片地址
  260. if (_diskinfo.currentDirectoryFile[_num1].UserDirectoryID == fileinfo.UserDirectoryID) {//判断在哪个音乐文件打开的
  261. _num2 = _num; //索引位置
  262. }
  263. _num++; //存储图片数组的数据
  264. }
  265. }
  266. U.MD.UI.picture(_arr, _num2)//图片控件
  267. U.UF.F.topWindow($('#U_MD_UI_PictureForm')[0], true); //窗体置顶
  268. });
  269. }
  270. /**
  271. * 根据应用名称打开视频
  272. *
  273. *参数一:fileinfo为单击的文件对象
  274. */
  275. U.MD.DK.LE.video = function (fileinfo) {
  276. new U.UF.UI.form(fileinfo.UserallDirectoryName, "", { "id": "aaa", "style": { "width": "780px", "height": "325px", "margin": "0" } }, { istop: true, isstretching: false, isenlarge: false, isnarrow: false }); //窗体
  277. U.UF.DL.asynLoadCss({ rel: "stylesheet", type: "text/css", href: "/css/Controls/Basic/Video.css" }); //动态添加css文件
  278. U.UF.DL.asynLoadJs({ src: "/js/Controls/Basic/Video.js", "charset": "utf-8", "type": "text/javascript" }, function () {//动态添加js文件
  279. U.MD.UI.video(("http://fs.1473.cn/" + fileinfo.UserFilesServerName), 780, 300, false, $("#aaa")[0]); //视频控件
  280. $(".U_MD_UI_video_VideoDiv")[$(".U_MD_UI_video_VideoDiv").length - 1].style.position = "absolute"; //视频的位置
  281. $(".U_MD_UI_video_VideoDiv")[$(".U_MD_UI_video_VideoDiv").length - 1].style.top = "25px"; //视频的定位高低
  282. $(".U_MD_UI_video_VideoDiv")[$(".U_MD_UI_video_VideoDiv").length - 1].style.left = "0px"; //视频的定位左右
  283. });
  284. }
  285. //#endregion