U.DK.M.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. Namespace.register("U.Dk.M"); //Disk树操作
  2. //disk变量使用区域
  3. //硬盘里面复制粘贴的全局变量。,暂未整理。
  4. US.Disk.DiskDaren = {};
  5. //包含了当前所有用户的硬盘目录文件等数据的信息.
  6. //
  7. US.Disk.Disks = {};
  8. //当前操作用户的网盘数据,相当于US.Disk.Disks[userid]。
  9. US.Disk.UserDisk = null;
  10. // US.Disk.Disks 用户网盘数据前台存储的全局变量 该全局变量为一个数组
  11. // US.Disk.Disks[userid][0] 0为该userid用户下面的所有网盘目录及文件的数据信息。以数组形式展示
  12. // US.Disk.Disks[userid][1] 1为其他额外信息数组(0为当前用户基本信息集合,1为当前打开目录的id ,2为用户id,3未知,4网盘展示文件的格式形式样式),2为未知,3为未知 ,4、数据与0的数据是一样的,但是这里是以object形式展示的,这里可以更快的通过id去找指定的文件或者目录 pdiv为当前网盘用户的弹框
  13. // US.Disk.Disks[userid][1][0] 0为当前用户基本信息集合,
  14. // US.Disk.Disks[userid][1][1] 1为当前打开目录的id
  15. // US.Disk.Disks[userid][1][2] 2为用户id
  16. // US.Disk.Disks[userid][1][3] 3未知
  17. // US.Disk.Disks[userid][1][4] 4网盘展示文件的形式.例如列表形式展示,视图形式展示
  18. // US.Disk.Disks[userid][2] 2为未知
  19. // US.Disk.Disks[userid][3] 3为未知
  20. // US.Disk.Disks[userid][4] 4、数据与0的数据是一样的,但是这里是以object形式展示的,这里可以更快的通过id去找指定的文件或者目录
  21. // US.Disk.Disks[userid].pdiv pdiv为当前网盘用户的弹框,这个是唯一的。
  22. //例:US.Disk.Disks["张三"]; //张三的网盘信息,张三需要用guid表示,US.Disk.Disks["95f7bacc-0b3a-4265-a2ea-15e066b97bf7"]
  23. //例:US.Disk.Disks["李四"]; //李四的网盘信息,李四需要用guid表示。US.Disk.Disks["f6d7a4b6-e34c-4964-beed-24187b2cb1ba"]
  24. //
  25. //disk文件和文件夹实体,US.Disk.Disks里面的内容的数据结构。
  26. U.Dk.M.Entity = function (directoryid, size, parentid, shortname, name, extendtype, serverurl, addtime, iconurl, deep, modifytime, encryt, filetype, descript, groupid, officevalue, userid, usernickname, username, imagehead) {
  27. this.UserDirectoryID = directoryid; //文件id或者目录id
  28. this.UserDirectorySize = size; //文件大小。
  29. this.UserDirectoryParentID = parentid; //父亲id
  30. this.UserDirectoryName = shortname; //文件名或者文件夹名,
  31. this.UserallDirectoryName = name; //文件名或者文件夹名,会删除不要
  32. this.UserDirectoryExtendType = extendtype; //文件扩展名,目录扩展名为folder,加密的目录也有一个标识。
  33. this.UserFilesServerName = serverurl; //文件服务器链接地址,需要统一加US.fs + filesinfo.UserDirectoryUrl
  34. this.UserDirectoryAddTime = addtime; //文件或者文件夹添加时间
  35. this.UserDirectoryUrl = iconurl; //文件服务器链接地址,缩略图,需要统一加US.fs + filesinfo.UserDirectoryUrl
  36. this.UserDirectoryDeep = deep; //文件夹深度
  37. this.UserDirectoryModifyTime = modifytime; //文件或者文件夹修改时间
  38. this.UserDirectoryEncrypt = encryt; //文件夹加密
  39. this.filetype = filetype; //文件类型,文件夹为1,文件为0
  40. this.Descript = descript; //文件描述。例如图片,声音,视频的描述
  41. this.GroupID = groupid; //群id,用于群文件
  42. this.UsOffice = officevalue; //文件内容。
  43. this.UserId = userid; //文件或者文件夹所属用户id
  44. this.UserNickName = usernickname; //文件或者文件夹所属用户昵称
  45. this.UserName = username; //文件或者文件夹所属用户账号
  46. this.UserThumbnailImageHead = imagehead; //文件或者文件夹所属用户头像
  47. this.Child = null; //文件夹中的子文件夹数组。
  48. this.Parent = null; //文件或者文件夹的父亲
  49. }
  50. //初始化一级目录的全局变量。即左边树目录结构。
  51. US.Disk.InitTree = [
  52. [US.DG, 0, US.OG, "电脑", "我的文档", "folder", null, null, null, 1, null, null, 0, ""],
  53. [US.FG, 0, US.OG, "ftp", "Ftp文件传输", "folder", null, null, null, 1, null, null, 0, "", ""],
  54. [US.VG, 0, US.OG, "视频", "在线视频", "folder", null, null, null, 1, null, null, 0, ""],
  55. [US.PG, 0, US.OG, "相册", "图片、相册", "folder", null, null, null, 1, null, null, 0, ""],
  56. [US.MG, 0, US.OG, "音乐", "音乐收听", "folder", null, null, null, 1, null, null, 0, ""],
  57. [US.SG, 0, US.OG, "私密", "私密空间", "folder", null, null, null, 1, null, null, 0, "", true]
  58. ];
  59. //文件类型全局变量。
  60. US.Disk.FileType = {
  61. "image": ["jpg", "gif", "png", "bmp", "jpeg", "JPG", "GIF", "BMP", "PNG", "JPEG"],
  62. "music": ["mp3"],
  63. "video": ["wmv", "video", "ogg", "webm", "mp4"],
  64. "usword": ["uw"],
  65. "usexcel": ["ue"],
  66. "text": ["rtf", "mht", "txt", "htm", "html", "wsh", "wsf", "cpp", "c", "css", "txt", "php", "cs", "java", "log", "sql", "jsp"]
  67. }
  68. //全局变量,应用程序类型,包含了应用扩展名,id,中文描述,图标的css名。
  69. US.Disk.ApplicationTypes = {
  70. "image": {
  71. //图片类型的后缀
  72. "types": US.Disk.FileType.image,
  73. //该格式对应在网盘的目录id
  74. "directoryid": US.PG,
  75. //格式对应的名字
  76. "name": "图片",
  77. //格式对应的样式
  78. "classname": ["UD_SYVCOIT"]
  79. },
  80. "music": {
  81. //音乐类型的后缀
  82. "types": US.Disk.FileType.music,
  83. //该格式对应在网盘的目录id
  84. "directoryid": US.MG,
  85. //格式对应的名字
  86. "name": "音乐",
  87. //格式对应的样式
  88. "classname": ["UD_SYVCOIY", "UD_SYWRZOY", "UD_SYWLCY"]
  89. },
  90. "video": {
  91. //视频类型的后缀
  92. "types": US.Disk.FileType.video,
  93. //该格式对应在网盘的目录id
  94. "directoryid": US.VG,
  95. //格式对应的名字
  96. "name": "视频",
  97. //格式对应的样式
  98. "classname": ["UD_SYVCOIS", "UD_SYWRZOP", "UD_SYWLCP"]
  99. },
  100. "uw": {
  101. //互联办公word文档格式
  102. "types": US.Disk.FileType.usword,
  103. //该格式对应在网盘的目录id
  104. "directoryid": US.DG,
  105. //格式对应的名字
  106. "name": "文档",
  107. //格式对应的样式
  108. "classname": ["UD_SYVCOIW", "UD_SYWRZOD", "UD_SYWLCD"]
  109. },
  110. "ue": {
  111. //互联办公Excel文档格式
  112. //视频类型的后缀
  113. "types": US.Disk.FileType.usexcel,
  114. //该格式对应在网盘的目录id
  115. "directoryid": US.NU,
  116. //格式对应的名字
  117. "name": "表格",
  118. //格式对应的样式
  119. "classname": ["UD_SYVCOIE", "UD_SYWRZOE", "UD_SYWLCE"]
  120. },
  121. "text": {
  122. //可以通过记事本打开的文件格式
  123. "types": US.Disk.FileType.text,
  124. //该格式对应在网盘的目录id
  125. "directoryid": US.NU,
  126. //格式对应的名字
  127. "name": "文档",
  128. //格式对应的样式
  129. "classname": ["UD_SYVCOIT", "UD_SYWRZON", "UD_SYWLCB"]
  130. },
  131. "folder": {
  132. //文件夹处理,一种是加密文件夹,一种是不加密
  133. "types": ["folder", "folderencrypt"],
  134. //该格式对应在网盘的目录id
  135. "directoryid": US.NU,
  136. //格式对应的名字
  137. "name": "文件夹",
  138. //格式对应的样式
  139. "classname": ["", "UD_SYWRZOW", "UD_SYWLCW"]
  140. },
  141. "unknownfile": {
  142. //无法用应用打开的文件类型
  143. "types": [],
  144. //该格式对应在网盘的目录id
  145. "directoryid": US.DG,
  146. //格式对应的名字
  147. "name": "文件",
  148. //格式对应的样式
  149. "classname": ["UD_SYVCOIT", "UD_SYWRZON", "UD_SYWLCB"]
  150. }
  151. }
  152. /**
  153. * 循环添加文件到全局树里
  154. * @param {array} 文件数组
  155. * @param {object} 制定文件夹的信息
  156. * @param {object} 添加文件是否具有群id
  157. */
  158. U.Dk.M.Entity.Add = function (filesinfo, diskinfo, isgroup) {
  159. var i;
  160. for (i = 0; i < filesinfo.length; i++) {
  161. //如果是新建群文件,则通过放在前面,这样的话查询方便
  162. if (isgroup) {
  163. diskinfo[0].splice(6, 0, filesinfo[i])
  164. }
  165. //普通文件添加处理
  166. else {
  167. diskinfo[0].push(filesinfo[i]);
  168. }
  169. //目录树添加
  170. diskinfo[4][filesinfo[i].UserDirectoryID] = filesinfo[i];
  171. }
  172. }
  173. /**
  174. * 递归修改所有的子目录文件的Id
  175. * @param {array} 文件数组
  176. * @param {object} 修改的属性 例:{groupid:a} //修改所有的群id
  177. */
  178. U.Dk.M.RecursionUpdateDirectory = function (filesinfo, attribute) {
  179. //循环所有的文件修改
  180. for (i = 0; i < filesinfo.length; i++) {
  181. //修改文件的属性
  182. U.Ut.AddObj(filesinfo[i], attribute);
  183. //如果文件是文件夹,那么查找自己节点元素,不断的递归修改
  184. if (!filesinfo[i].fileType && filesinfo[i].Child) {
  185. //递归修改
  186. U.Dk.M.RecursionUpdateDirectory(filesinfo[i].Child, attribute);
  187. }
  188. }
  189. }