U.DK.LE.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. /*
  2. 存在问题
  3. 1、非能打开文件处理
  4. */
  5. Namespace.register("U.Dk.LE"); //Disk左键事件命名空间
  6. //#region 左键事件处理
  7. //#region 当前网盘打开
  8. //文件点击,文件夹点击,及url导航到达区域。
  9. /*
  10. 文件管理区域点击事件,暂时分为:音乐、图片、视频、文件。
  11. 参数一:fileinfo为单击的文件对象
  12. 参数二:UAE,打开的不是一个文件夹,打开的是最近访问区域。 群文件查看,最近访问。
  13. 参数四:userid为用户id。
  14. 参数五:UOE,左边树目录与右边文件夹目录点击同步。
  15. */
  16. U.Dk.LE.OpenFileDirectory = function (fileinfo, userid) {
  17. var i, _pictureinfo, _extension, _rightClick, _head, _navArea, _uploadel, _navarray;
  18. var _content;
  19. var _userid = userid || US.userInfo.userid; //得到用户id
  20. var _diskinfo = U.Dk.DiskOperatingSwitch(_userid); //根据用户id找到其所有硬盘数据。
  21. //如果为文件,则直接打开文件,否则,是目录,打开目录
  22. if (fileinfo.filetype) { //生成导航 //文件夹展示
  23. U.M.StopBubble(); //阻止冒泡
  24. _extension = fileinfo["UserDirectoryExtendType"].toLocaleLowerCase(); //得到文件扩展名
  25. //根据文件类型进入不同的应用。
  26. var _types = US.Disk.ApplicationTypes;
  27. var _applicationame;
  28. //判断后缀名归属于哪一个应用程序。得到应用程序的名称。
  29. for (i in _types) {
  30. if (_types[i].types.indexOf(_extension) > -1) { //判断文件类型是否归属该应用
  31. _applicationame = i;
  32. break;
  33. }
  34. }
  35. //根据应用名称打开不同的应用。
  36. switch (_applicationame) {
  37. case "music": //播放制定的音乐
  38. //_diskinfo[4]代表所有文件及文档的另外一种组织方法。
  39. if (_diskinfo[4][fileinfo.UserDirectoryParentID].Child) {
  40. //当前播放的音乐文件
  41. U.MPlayer.YYLoad(fileinfo["UserDirectoryParentID"], _diskinfo[1][0]); //播放文件夹下面所有音乐。
  42. }
  43. else {
  44. U.MPlayer.TYY(fileinfo); //播放单首音乐。
  45. }
  46. break;
  47. case "image": //图片查看
  48. _pictureinfo = fileinfo["UseFilesServerThumbnailName"] ? [fileinfo] : U.Dk.LE.OIMG(fileinfo);
  49. //_pictureinfo[0] 为所有图片,_pictureinfo[1]为当前文件在所有文件中的位置。
  50. U.D.Img.Img(fileinfo, _pictureinfo[0], _pictureinfo[1], { "TF": 2 });
  51. break;
  52. case "video":
  53. U.Dk.LE.OV(fileinfo); //视频播放器。
  54. break; //视频处理
  55. case "text":
  56. U.D.DT.YYDK("Txt", fileinfo, _diskinfo); //弹出网盘
  57. break;
  58. case "usoffice": //如果是云端系统自有格式文件。
  59. var _type = { "ue": "Excel", "uw": "Word", "txt": "Txt"}[_extension];
  60. U.D.DT.YYDK(_type, fileinfo, _diskinfo); //弹出网盘
  61. break;
  62. default: //windows上传的不可识别的文件打开,直接跳转到下载页面。
  63. U.Dk.LE.OFT(fileinfo.UserFilesServerName, fileinfo.UserallDirectoryName, _userid, fileinfo.UserDirectoryID);
  64. break;
  65. }
  66. }
  67. else {//打印目录信息
  68. _content = $("#UD_SYWRZ", _diskinfo.pdiv)[0]; //在"指定的张三的网盘里面查找该id"
  69. _content.innerText = "";
  70. //得到当前打开的目录的id.
  71. _diskinfo[1][1] = fileinfo["UserDirectoryID"]; //设置当前打开目录的id.看全集变量US.Disk.Disks
  72. //如果当前打开目录的id存在,设置url重写。
  73. if (_diskinfo[1][1]) {
  74. U.D.G.UrlWrite(["disk", _diskinfo[1][0].UserName, _diskinfo[1][1]], _diskinfo[1][0].UserNickName + "的网盘");
  75. } //网盘
  76. //如果有子文件夹或者文件,则显示,否则,去数据库里面取数据.
  77. if (fileinfo.Child) { //已加载文件
  78. _diskinfo[1][5] = fileinfo.Child; //把加载到的信息保存到全局变量中。
  79. //打印数据,用计时器的原因是可以解决文件夹过多卡顿的问题。
  80. setTimeout(function () {
  81. U.Dk.VW.XWPDY(_diskinfo[1][5], _content);
  82. }, 0);
  83. //设置在空白地方右键单击,弹出菜单的功能。
  84. _rightClick = [U.Dk.RM.WPYJCD, [_content, null, null, null, userid]]; //右键调用的函数
  85. $(_content).addAttrArray({ "onmouseup": _rightClick, "onmousedown": _rightClick }); //添加右键属性。
  86. //头部导航打印
  87. _navarray = U.Dk.HP.GetAncestors(fileinfo, _diskinfo); //获取需要输出的导航信息,这里直接获取这个目录一条线上的祖先元素
  88. U.Dk.LL.SCDXWPDH(_navarray, $("#UD_SYWRYB", _diskinfo.pdiv)[0], userid); //打印出导航数据
  89. //设置网盘上传按钮点击事件。
  90. _head = $("#UD_SYWRT", _diskinfo.pdiv)[0]; //得到硬盘的头部区域
  91. _uploadel = $("div", _head); //根据头部区域得到导航区域
  92. U.Dk.UP.SCXWPOP(_uploadel[0], { "DS": true, "ID": "UD_SYWRTS" + (_diskinfo[2] ? "O" : "") }, userid); //给头部的上传按钮设置事件。
  93. }
  94. //去数据库取文件夹及文件信息,异步加载
  95. else {
  96. U.Dk.RE.GXWPCKXS(userid, fileinfo, _content);
  97. }
  98. }
  99. //设置文件及文件夹的修改时间,打开文件或者文件夹时,把打开文件的时间记录到数据库。以实现最近访问文件,最近访问文件夹的功能。fileinfo.filetype == 0 表示文件夹 fileinfo.filetype == 1表示文件
  100. if (fileinfo.UserDirectoryDeep > 1) {
  101. //发送到数据库做记录。
  102. if (fileinfo.filetype == 0) {
  103. U.A.Request(US.Auth, ["UpdateDirectoryInfo", UDE.UserDirectoryID, ""], U.M.apply());
  104. }
  105. else {
  106. U.A.Request(US.Auth, ["UpdateFileInfo", UDE.UserDirectoryID, ""], U.M.apply());
  107. }
  108. fileinfo["UserDirectoryModifyTime"] = U.MT.toTimeStamp(); //修改前台的时间
  109. }
  110. }
  111. //默认的域名弹框
  112. U.Dk.LE.ApplyDns = function (UDID) {
  113. $("#U_Help").addAttrArray({ style: { display: "block" }, onclick: [[U.Dk.LE.ApplyDns, [UDID]]] });
  114. }
  115. //点击桌面的申请域名
  116. U.Dk.LE.ApplyDnsEnd = function (UDID) {
  117. if (!U.U.L.isLogin(3) && UDID) { U.UI.Confirm("是否申请域名生成站点", [U.Dk.LE.aDnsF, [UDID]]) }
  118. }
  119. //申请域名判断
  120. U.Dk.LE.aDomain = function (userid, UGE) {
  121. if (!U.U.L.isLogin(3)) { //登录使用
  122. var _UDID = UGE[1][1], _UUID = US.userInfo.userid;
  123. if (UGE[4][_UDID].UserId == _UUID || userid == _UUID) { //本人ftp群文件夹允许
  124. var _UDE = U.Dk.DiskOperatingSwitch(userid);
  125. (_UDE[1][1]) && (U.UI.Confirm("是否申请域名生成站点", [U.Dk.LE.aDnsF, [_UDE[1][1]]])); //当前目录申请
  126. }
  127. else { U.Alert("非本人目录无法建立站点"); }
  128. }
  129. }
  130. //判断当前目录是否生成域名解析
  131. U.Dk.LE.GetDns = function (UDID, UCB) {
  132. //U.A.Request(US.CD, [US.DB, "UseStudio_Disk", "UD_S_CountDns", US.userInfo.userid, UDID], U.Dk.LE.AsynGetDns, ["", UDID, UCB]);
  133. // U.A.Request(US.Auth,"UseStudioDisk.CountDns", [US.userInfo.userid, UDID], U.Dk.LE.AsynGetDns, ["", UDID, UCB]);
  134. }
  135. ///获取dns解析次数异步
  136. //U.Dk.LE.AsynGetDns = function (r) {
  137. // var context = r.context,
  138. // _UDID = context[1],
  139. // _UCB = context[2];
  140. // r = r.value;
  141. // if (r[1]) { U.Alert("该目录已经生成了站点"); }
  142. // else if (_UCB) { _UCB(_UDID); } //else if (r[0] > 5) { U.Alert("已经在本地网盘挂载了5个域名"); }
  143. //}
  144. //弹出申请框
  145. U.Dk.LE.aDnsF = function (UDID) {
  146. var _UDE, _UDTD, _UDMD, _UDSD;
  147. _UDTD = $$("div", { "className": "UD_Disk_A UC_TF", "onselectstart": "U.M.StopBubble();return true;" });
  148. $$("div", { "className": "UD_Disk_AT", "innerHTML": "生成网盘域名" }, _UDTD);
  149. _UDMD = $$("div", { "className": "UD_Disk_AC", "innerHTML": "等待域名生成..." }, _UDTD);
  150. _UDE = U.UI.Form({ draw: false, max: false, id: "UD_W_T", title: "申请域名", content: _UDTD, style: { width: "400px", height: "200px"} });
  151. U.Dk.LE.eaDomain(UDID, _UDMD);
  152. }
  153. //确定申请域名
  154. U.Dk.LE.eaDomain = function (UDID, UDOD) {
  155. //U.A.Request(US.CD, [US.DB, "UseStudio_Disk", "UD_I_AddDns", US.userInfo.userid, UDID, 0], U.Dk.LE.AsyneaDomain, ["", UDID, UDOD]);
  156. //U.A.Request(US.Auth,"UseStudioDisk.AddDns", [US.userInfo.userid, UDID], U.Dk.LE.AsyneaDomain, ["", UDID, UDOD]);
  157. }
  158. //申请域名异步
  159. //U.Dk.LE.AsyneaDomain = function (r) {
  160. // var context = r.context, _UDID = context[1], _UDOD = context[2]; r = r.value;
  161. // if (r[0]) {
  162. // $(_UDOD).addAttrArray({ "innerHTML": "http://" + r[0].UserDomain + ".1473.cn", style: { cursor: "pointer" }, title: "点击跳转", "onclick": U.M.apply(null, "window.open('" + "http://" + r[0].UserDomain + ".1473.cn" + "')") });
  163. // }
  164. // else { U.Alert("你建站超过指定次数请您重新建立。"); }
  165. //}
  166. //#endregion
  167. //#region 其它网盘资料使用
  168. //!------------------------------此函数未被调用。。如果确实没有,直接删除-----------
  169. //(其它网盘文件[搜索])点击执行事件
  170. U.Dk.LE.DXWPDYQT = function (UDE, UDOD) {
  171. var _UAE,
  172. _UGE = US.Disk.Disks;
  173. (!_UGE[US.NU]) && (_UGE[US.NU] = [[]]);
  174. _UGE = _UGE[US.NU][0];
  175. if (UDE.filetype) {
  176. U.Dk.LE.OpenFileDirectory(UDE, US.NU);
  177. }
  178. else {//获取单个文件夹的信息
  179. _UAE = _$(_UGE).Select({ "UserDirectoryID": UDE.UserDirectoryID })[0];
  180. if (_UAE) {
  181. //#error 这里有问题 到时候要改掉
  182. U.Dk.LE.RecordNav([[U.Dk.LE.OpenFileDirectory, [_$(_UGE).Select({ "UserDirectoryParentID": UDE.UserDirectoryID }), _$(_UGE).RecurD(UDE, { "UserDirectoryID": "" }, "UserDirectoryParentID"), US.NU]]]);
  183. } //打印文件
  184. else {//获取指定文件夹文件
  185. _UGE.push(UDE);
  186. U.A.Request(US.CD, [US.DB, "UseStudio_Disk", "GetChildsByDirectoryId", UDE.UserId, UDE.UserDirectoryID, US.NU], U.Dk.LE.AsynDXWPDYQT, ["", UDE, UDOD]);
  187. // U.A.Request(US.Auth,"UseStudioDisk.GetChildsByDirectoryId", [UDE.UserId, UDE.UserDirectoryID, US.NU], U.Dk.LE.AsynDXWPDYQT, ["", UDE, UDOD]);
  188. }
  189. }
  190. }
  191. //其它网盘文件夹的信息
  192. U.Dk.LE.AsynDXWPDYQT = function (r) {
  193. var context = r.context,
  194. _UDE = context[1],
  195. _UDOD = context[2];
  196. r = r.value;
  197. U.Ut.AddObj(r, { "UserId": _UDE.UserId, "UserThumbnailImageHead": _UDE.UserThumbnailImageHead, "UserNickName": _UDE.UserNickName }); //设定指定的值
  198. _UDOD.innerText = "";
  199. US.Disk.Disks[US.NU][0] = US.Disk.Disks[US.NU][0].concat(r);
  200. U.Dk.LE.DXWPDYQT(_UDE, _UDOD);
  201. }
  202. //#endregion
  203. //#region 指定类型点击事件
  204. /*
  205. 在文件夹中单击图片时,把文件夹下所有图片文件选取出来。用户所有的硬盘数据保存在树目录变量US.Disk.UserDisk中。
  206. 参数1:文件所在的目录id
  207. 参数2:目录对象,数据库目录表一条数据。
  208. 返回值:图片二维数组。
  209. */
  210. U.Dk.LE.OIMG = function (fileinfo) {
  211. var _diskinfo = US.Disk.UserDisk; //获取当前用户网盘信息
  212. var _files = _diskinfo[4][fileinfo.UserDirectoryParentID].Child; //获取当前用户打开图片目录的文件信息
  213. var _poto = _$(_files).Like({ "UserDirectoryExtendType": US.Disk.ApplicationTypes.image.types.join(",") }); //选取所有的图片图片
  214. var _i = _poto.objIndexOf({ "UserDirectoryID": fileinfo.UserDirectoryID }); //获取文件所在的图片的第几个
  215. return [_poto, _i]; //返回
  216. }
  217. //点击视屏处理
  218. U.Dk.LE.OV = function (UDE) {
  219. var _UTP = UDE.UserDirectoryExtendType || UDE.UserFilesExtendName,
  220. _USN = UDE.UserFilesServerName,
  221. _UTF = U.M.isPlay(_UTP);
  222. if (_UTP == "video") { window.open(UDE.UserFilesServerName); }
  223. else {
  224. if (_UTF) {
  225. window.open("/userpages/video.htm?url=" + UDE["UserFilesServerName"]);
  226. }
  227. else if (_UTF === 0) {
  228. U.Alert("该格式无法播放");
  229. }
  230. else {
  231. U.Alert("浏览器版本太低。");
  232. }
  233. }
  234. }
  235. //点击文件打开处理
  236. U.Dk.LE.OFT = function (USN, UN, userid, UFID, UTF) {
  237. var _UTF = US.userInfo.userid == userid,
  238. _UMT = USN.split(".")[1],
  239. _UDOD = event ? event.srcElement : null;
  240. U.Alert("正在努力的打开中,请稍后"); window.open("/userpages/U_OF.aspx?FildID=" + UFID); //页面打开
  241. // window.open("/userpages/U_OF.aspx?fileservername=" + USN + "&filename=" + UN + "&UserId=" + US.userInfo.userid + "&FildID=" + UFID + "&usrd=" + Math.random()); //window.open("http://disk.1473.cn/" + UFID + "/" + (UTF || ""));
  242. }
  243. //异步查看
  244. U.Dk.LE.AsynOFT = function (r) {
  245. var context = r.context,
  246. _USN = context[1],
  247. _UN = context[2],
  248. _userid = context[3],
  249. _UFID = context[4],
  250. _UDOD = context[5];
  251. r = r.value;
  252. if (r) {
  253. U.Dk.LE.OFT(_USN, _UN, _userid, _UFID, true);
  254. }
  255. else {
  256. U.Dk.RE.WPXZWJZJO(_UFID, "file");
  257. }
  258. }
  259. //保存到数据
  260. U.Dk.LE.USOS = function (UDID, UTH, UFT, UCB, UTF, UPID, UIN) {
  261. var _UDPD, _UTF,
  262. _UGE = US.Disk.UserDisk,
  263. _userid = _UGE[1][2],
  264. _UYID = US.userInfo.userid,
  265. _UDE = U.Ut.isString(UDID) ? (_UGE[4][UDID] ? _UGE[4][UDID] : UDID) : UDID;
  266. UDID = _UDE ? _UDE.UserDirectoryID : UDID;
  267. if (_UDE.UserFilesID != undefined) { UDID = _UDE.UserFilesID; _UDE.UserFilesServerName = "" }
  268. if (U.MS.Guid.test(UDID) && _UDE && (_UYID == _userid || _UDE.UserId == _UYID || _UDE.GroupID == _UDE.UserId)) { //直接保存文件
  269. (UIN = UIN || "") && (UIN = UIN.replaceHtmlSign() + (_UDE.filetype ? "." + _UDE.UserDirectoryExtendType : "")); // _$(_UGE[4]).Select({ "UserDirectoryID": UDID }, null, 1)[0];
  270. if (_userid == _UGE[1][0].UserId) {
  271. if (_UDE.UsOffice != UTH) {
  272. parent.U.A.Request(US.Auth, ["SaveFileContent", UDID, UTH, UIN], parent.U.Dk.LE.AsynUSOS, ["", UDID, UTH, _UDE, UIN]);
  273. U.Alert("数据同步中..");
  274. }
  275. }
  276. else { U.Alert("拒绝访问"); }
  277. (UCB) && (U.M.apply(this, UCB)());
  278. }
  279. else {
  280. if (!U.Dk.RE.QXWJPD(_UYID, "txt", UPID)) {
  281. _UGE[1][1] = UPID = (userid == _userid) ? US.DG : US.FG;
  282. }; //选择目录
  283. if (UIN) {
  284. return U.Dk.RE.AF(UFT, UIN, U.M.apply(this, UCB), US.userInfo.userid, true);
  285. } //直接新建
  286. else {
  287. _UGE = US.Disk.UserDisk;
  288. _UTF = $(_UGE.pdiv).Parent({ usform: "true" }).style.display == "none";
  289. _UDPD = U.D.DT.YYDK("Disk", { "userid": _userid, "directoryid": UDID }); UCB = UCB || []; //指定的目录保存
  290. (_UTF) && (UCB.push[U.D.CloseWindow, [_UDPD]]);
  291. U.Dk.RE.CMB("txt", U.M.apply(this, UCB), _UDPD, _userid, true); //新建文件保存
  292. }
  293. }
  294. }
  295. //新建文件后保存
  296. U.Dk.LE.NUSOS = function (UDST, UFT, UGE, UCT, UREQ) {
  297. var _UFID = UCT[1]["UserDirectoryID"];
  298. UGE = UGE || window.frames["US_ExcelFrame"].U.Excel.SY;
  299. U.Dk.LE.USOS(_UFID, UDST); UGE["ID"] = _UFID; //保存数据 //Word变量保存
  300. }
  301. //异步保存
  302. U.Dk.LE.AsynUSOS = function (r) {
  303. var _UDE,
  304. context = r.context,
  305. _UFID = context[1],
  306. _UST = context[2],
  307. _UDE = context[3],
  308. _USN = context[4];
  309. r = r.value;
  310. if (r) {
  311. _$(_UDE).Change({ "UsOffice": _UST, "": "", "UserDirectoryModifyTime": U.MT.toTimeStamp() });
  312. (_USN) && (U.Dk.RE.AsynMRN({ value: true, context: ["", _UDE, _USN] })); U.Alert("修改成功..");
  313. } //修改保存值
  314. else {
  315. U.Alert("磁盘空间已满,无法修改内容");
  316. }
  317. }
  318. //获取音乐文件和目录
  319. U.Dk.LE.GM = function (UDE) {
  320. var i, _UCE,
  321. _UME = [],
  322. _UGE = US.Disk.UserDisk;
  323. (!UDE.UserDirectoryID) && (UDE = _UGE[4][UDE]);
  324. UDE = [UDE];
  325. for (i = 0; i < UDE.length; i++) {
  326. _UCE = _UGE[4][UDE[i].UserDirectoryID].Child;
  327. _UME.push([UDE[i], _$(_UCE).Select({ "filetype": 0 }), _$(_UCE).Select({ "UserDirectoryExtendType": "mp3" })]);
  328. }
  329. return _UME;
  330. }
  331. //#endregion
  332. //#endregion