RightClick.js 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863
  1. Namespace.register("U.MD.DK.RE"); //Disk右键功能命名空间
  2. //#region 文件属性
  3. /**
  4. * 用户属性框的样式
  5. * @param {object} 目录目录或者文件信息
  6. * @param {string} 用户id
  7. */
  8. U.MD.DK.RE.attribute = function (fileordir, userid) {
  9. var _diskinfo = U.MD.DK.M.diskOperatingSwitch(userid),
  10. _attributeel = U.MD.DK.RE.attributeStyle(fileordir, true); //用户属性框的样式
  11. U.UF.UI.confirm(_attributeel);
  12. // $(".U_MD_DK_SX")[$(".U_MD_DK_SX").length - 2].parentNode.style.margin = "0"; //位置美化
  13. }
  14. /**
  15. * 用户属性框的样式
  16. * @param {object} 目录目录或者文件信息
  17. * @param {bool} 是否需要设置权限
  18. */
  19. U.MD.DK.RE.attributeStyle = function (fileordir, issetpermissions) {
  20. var _ael,
  21. _aelo,
  22. _aelt,
  23. _aels,
  24. _aelf,
  25. _aelfo,
  26. _aelfos,
  27. _icon = U.MD.DK.C.getIcon(fileordir.UserDirectoryExtendType.toLowerCase())
  28. ;
  29. _ael = $$("div", { "className": "U_MD_DK_SX" });
  30. _aelo = $$("div", { "className": "U_MD_DK_SX" }, _ael);
  31. _aelt = $$("div", { "className": "U_MD_DK_SXCO" }, _aelo);
  32. //图片样式设置
  33. if (U.UF.UP.isImg(fileordir.UserDirectoryExtendType)) {
  34. $$("img", {
  35. "onerror": function () {
  36. U.MD.C.imgError(1);
  37. },
  38. "src": U.MD.C.getHeadImage(fileordir.UserDirectoryUrl),
  39. "className": "U_MD_DK_RT_UDD_DV"
  40. }, _aelt);
  41. }
  42. //非图片的处理
  43. else {
  44. $$("div", { "className": "U_MD_DK_L_DiskGE U_MD_DK_SXCOI", "style": { "cssText": _icon[1] } }, _aelt);
  45. }
  46. _aels = $$("div", { "className": "U_MD_DK_SXCT" }, _aelo);
  47. $$("div", { "className": "U_MD_DK_SXCTO", "style": { "marginTop": "4px" }, "innerHTML": "名称:" + fileordir.UserallDirectoryName }, _aels);
  48. //文件处理
  49. if (fileordir.filetype) {
  50. $$("div", {
  51. "className": "U_MD_DK_SXCTT U_MD_D_YesText",
  52. "onselectstart": U.UF.EV.stopBubble, "spellcheck": "false",
  53. "innerHTML": "路径:" + "http://disk.1473.cn/" + fileordir["UserDirectoryID"]
  54. }, _aels);
  55. }
  56. //ftp属性设置权限处理
  57. else if (issetpermissions) {
  58. _aelf = $$("div", { "className": "U_MD_DK_SXCTO" }, _aels);
  59. $$("div", { "innerHTML": "权限选择: ", "className": "U_MD_DK_SXCTOQ" }, _aelf);
  60. _aelfo = $$("div", { "className": "U_MD_DK_SXCTOS" }, _aelf);
  61. //权限选择处理
  62. _aelfos = $$("select", {
  63. "onchange": function () {
  64. U.MD.DK.RE.setpermissions(this, fileordir);
  65. }
  66. }, _aelfo);
  67. _aelfos.options.length = 3;
  68. //无权限设置
  69. _aelfos.options[0].text = "无限制";
  70. //只允许上传的设置
  71. _aelfos.options[1].text = "只允许上传";
  72. //只允许下载的设置
  73. _aelfos.options[2].text = "只允许下载";
  74. //聚焦到当前权限的位置
  75. _aelfos.selectedIndex = parseInt(fileordir.UserDirectoryEncrypt)
  76. }
  77. $$("div", { "className": "U_MD_DK_SXCTO", "innerHTML": "类型:" + (fileordir.filetype ? "文件" : "文件夹") }, _aels);
  78. $$("div", { "className": "U_MD_DK_SXCTO", "innerHTML": "创建日期:" + U.UF.D.getYearMonthDay(fileordir.UserDirectoryAddTime) }, _aels);
  79. $$("div", { "className": "U_MD_DK_SXCTO", "innerHTML": "文件大小:" + U.UF.UP.minUnitToMaxUnit(fileordir.UserDirectorySize) }, _aels);
  80. return _ael;
  81. }
  82. /**
  83. * 共享文件夹设置权限
  84. * @param {element} 目录目录或者文件信息
  85. * @param {object} 是否需要设置权限
  86. */
  87. U.MD.DK.RE.setpermissions = function (selectel, dirinfo) {
  88. var _value = selectel.selectedIndex; //获取设置权限的值
  89. U.A.Request(US.CD, [US.DB, "UseStudio_Disk", "SetFtpPriviledge", dirinfo.UserDirectoryID, _value], U.MD.DK.RE.asynSetPermissions, ["", dirinfo, _value]);
  90. U.alert("和服务器同步中...");
  91. }
  92. /**
  93. * 共享文件夹设置权限
  94. * @param {element} 目录目录或者文件信息
  95. * @param {object} 是否需要设置权限
  96. */
  97. U.MD.DK.RE.asynSetPermissions = function (r) {
  98. var _context = r.context,
  99. _dirinfo = _context[1], //文件夹信息
  100. _value = _context[2]; //加密的值
  101. r = r.value;
  102. //判断设置操作
  103. if (r) {
  104. _dirinfo.UserDirectoryEncrypt = _value; //设置加密的值
  105. }
  106. //设置权限或者加密解密
  107. else {
  108. U.alert("设置失败");
  109. }
  110. }
  111. //#endregion
  112. //#region 新建文件夹
  113. /**
  114. * 新建文件夹处理的新建提示框
  115. * @param {array} 需要删除文件的数组
  116. * @param {string} 用户id
  117. **/
  118. U.MD.DK.RE.addFileOrFolder = function (fileordirinfo, diskinfo, dirinfo) {
  119. var _nowdiskinfo = US.disk.UserDisk, //当前使用用户的网盘
  120. _leftel = $("#L" + dirinfo["UserDirectoryID"], diskinfo.formel)[0],
  121. _el = $("#U_MD_DK_RZ", diskinfo.formel)[0];
  122. //在粘贴网盘的数组目录中添加值
  123. U.MD.DK.M.entity.add(fileordirinfo, diskinfo); //添加到用户disk全局变量中
  124. U.MD.DK.M.entity.addChild(fileordirinfo, dirinfo); //添加到子节点中
  125. //操作的文件夹是否在异步结束后还在同一个文件夹下,如果是那么就添加
  126. if (fileordirinfo[0].UserDirectoryParentID == _nowdiskinfo.directoryid && diskinfo == _nowdiskinfo && _nowdiskinfo.directoryid == diskinfo.directoryid) {
  127. //如果里面没有内容是展示没有资源的处理
  128. if ($(_el).Child()[0].className == "U_MD_DK_RZF") {
  129. _el.innerText = "";
  130. }
  131. U.MD.DK.VW.printContent(fileordirinfo, _el); //打印到网盘中
  132. //添加到侧边栏
  133. if (_leftel) {
  134. U.MD.DK.LL.printLeftTreeDirectory(fileordirinfo, _leftel, diskinfo.userInfo.UserId); //如果左边数目显示了
  135. }
  136. }
  137. }
  138. /**
  139. * 新建文件夹处理
  140. **/
  141. U.MD.DK.RE.newFolder = function (diskinfo) {
  142. if (!U.MD.U.L.isLogin()) {//是否登录
  143. var _directoryid = diskinfo.directoryid//目录id
  144. if (U.MD.DK.C.getDirectoryPermissions(_directoryid, diskinfo).isnew) {//新建文件权限
  145. U.MD.DK.RE.newFolder.confirm(diskinfo, _directoryid); //新建提示框
  146. }
  147. else { U.alert("无权限访问此文件夹"); }; /// <reference path="../../robots.txt" />
  148. }
  149. }
  150. /**
  151. * 新建文件夹处理的新建提示框
  152. * @param {array} 需要删除文件的数组
  153. * @param {string} 用户id
  154. **/
  155. U.MD.DK.RE.newFolder.confirm = function (diskinfo, directoryid) {
  156. var _ancestors, //目录的祖先元素
  157. _groupid, //群id
  158. _newguid = Guid.newGuid(), //新建文件夹的id
  159. _dirinfo = U.Json.select(diskinfo.directoryOrFiles, { "UserDirectoryID": directoryid })[0], //目录网盘信息
  160. _userid = US.userInfo.userid, //新建用户id
  161. _input = $$("input", { "placeholder": "请输入文件夹名字", "style": { "width": "180px", "height": "25px" } }) //输入的名字
  162. //弹出comfir
  163. U.MD.DK.RE.newconfirm(
  164. _input,
  165. function () {
  166. var _name = _input.value;
  167. //获取粘贴到制定目录的群id
  168. _ancestors = U.MD.DK.C.getAncestors(_dirinfo, diskinfo); //获取所有的祖先
  169. //如果是ftp目录,那么groupid就是用户id
  170. if (_ancestors[_ancestors.length - 1].UserDirectoryID == US.FTPFOLDERID) {
  171. _groupid = diskinfo.userInfo.UserId;
  172. }
  173. //否则就是对应的群id,如果不存在那么就是""
  174. else {
  175. _groupid = _ancestors[_ancestors.length - 1].GroupID || "";
  176. }
  177. //文件名判断
  178. if (U.UF.S.ZWFileName.test(_input.value)) {
  179. //填写文件名符合规范 将文件夹以及文件夹名字保存到数据库
  180. U.A.Request(US.AUTH, ["CreateDirectory", _userid, _newguid, _dirinfo.UserDirectoryDeep + 1, _input.value, directoryid, "", _groupid, ""], //保存到数据库
  181. function (r) {
  182. var _fileinfo = new U.MD.DK.M.entity(_newguid, 0, directoryid, _name, _name, "folder", "", U.UF.D.toTimeStamp(), "", _dirinfo.UserDirectoryDeep + 1,
  183. null, "", 0, "", _groupid, "", _userid, US.userInfo.UserNickName, US.userInfo.username, US.userInfo.UserThumbnailImageHead)
  184. U.MD.DK.RE.addFileOrFolder([_fileinfo], diskinfo, _dirinfo); //添加到页面上中
  185. }, []);
  186. }
  187. else {
  188. U.alert("文件名过长或者为空");
  189. return false;
  190. }
  191. },
  192. function () { },
  193. "新建文件夹"
  194. );
  195. }
  196. /**
  197. * 新建文件处理
  198. **/
  199. U.MD.DK.RE.newText = function (diskinfo, fun) {
  200. if (!U.MD.U.L.isLogin()) {//是否登录
  201. var _directoryid = diskinfo.directoryid; //目录id
  202. if (U.MD.DK.C.getDirectoryPermissions(_directoryid, diskinfo).isnew) {//新建文件权限
  203. U.MD.DK.RE.newText.confirm(diskinfo, _directoryid, fun); //新建提示框
  204. }
  205. else { U.alert("无权限访问此文件"); };
  206. }
  207. }
  208. /**
  209. * 新建文件处理的新建提示框
  210. **/
  211. U.MD.DK.RE.newText.confirm = function (diskinfo, directoryid, fun) {
  212. var _ancestors, //目录的祖先元素
  213. _groupid, //群id
  214. _newguid = Guid.newGuid(), //新建文件夹的id
  215. _dirinfo = U.Json.select(diskinfo.directoryOrFiles, { "UserDirectoryID": directoryid })[0], //目录网盘信息
  216. _userid = US.userInfo.userid, //新建用户id
  217. _input = $$("input", { "placeholder": "请输入新文本文档的命名", "style": { "width": "180px", "height": "25px", "padding-left": "7px" } }); //输入的名字
  218. //弹出comfirm
  219. U.MD.DK.RE.newconfirm(_input,
  220. function () {
  221. var _name = _input.value;
  222. //获取粘贴到制定目录的群id
  223. _ancestors = U.MD.DK.C.getAncestors(_dirinfo, diskinfo); //获取所有的祖先
  224. //如果是ftp目录,那么groupid就是用户id
  225. if (_ancestors[_ancestors.length - 1].UserDirectoryID == US.FTPFOLDERID) {
  226. _groupid = diskinfo.userInfo.UserId;
  227. }
  228. //否则就是对应的群id,如果不存在那么就是""
  229. else {
  230. _groupid = _ancestors[_ancestors.length - 1].GroupID || "";
  231. }
  232. //文件名判断
  233. if (U.UF.S.ZWFileName.test(_input.value)) {
  234. //去数据库添加文件
  235. U.A.Request(US.AUTH, ["CreateFile", _userid, _newguid, directoryid, _input.value, "", "", "", "txt", _groupid], function (r) {
  236. //创建文件
  237. var _fileinfo = new U.MD.DK.M.entity(_newguid, 0, directoryid, _name, _name, "txt", "", U.UF.D.toTimeStamp(), "", "9999", null, "", 1, "", _groupid, "", _userid, US.userInfo.UserNickName, US.userInfo.username, US.userInfo.UserThumbnailImageHead)
  238. U.MD.DK.RE.addFileOrFolder([_fileinfo], diskinfo, _dirinfo); //添加到页面上中
  239. //如果存在就执行
  240. if (fun) {//判断是否有点击事件的方法,如果有,运行它
  241. fun(_fileinfo);
  242. }
  243. }, []);
  244. }
  245. else {
  246. U.alert("文件名过长或者为空");
  247. return false;
  248. }
  249. },
  250. function () { }, "新建文本文件");
  251. }
  252. /**
  253. * 新建文档处理
  254. **/
  255. U.MD.DK.RE.newDocument = function (diskinfo, fun, fileid) {
  256. if (!U.MD.U.L.isLogin()) {//是否登录
  257. var _directoryid = diskinfo.directoryid; //目录id
  258. if (U.MD.DK.C.getDirectoryPermissions(_directoryid, diskinfo).isnew) {//新建文档权限
  259. return U.MD.DK.RE.newDocument.confirm(diskinfo, _directoryid, fun, fileid);
  260. }
  261. else { U.alert("无权限访问此文档"); };
  262. }
  263. }
  264. /**
  265. * 新建文档处理的新建提示框
  266. **/
  267. U.MD.DK.RE.newDocument.confirm = function (diskinfo, directoryid, fun, fileid) {
  268. var _ancestors, //目录的祖先元素
  269. _groupid, //群id
  270. _newguid = fileid || Guid.newGuid(), //新建文件夹的id
  271. _dirinfo = U.Json.select(diskinfo.directoryOrFiles, { "UserDirectoryID": directoryid })[0], //目录网盘信息
  272. _userid = US.userInfo.userid, //新建用户id
  273. _input = $$("input", { "placeholder": "请输入文档名字", "style": { "width": "180px", "height": "25px" } }); //输入的名字
  274. return U.MD.DK.RE.newconfirm(_input, //创建文档的框
  275. function () {
  276. var _name = _input.value;
  277. //获取粘贴到制定目录的群id
  278. _ancestors = U.MD.DK.C.getAncestors(_dirinfo, diskinfo); //获取所有的祖先
  279. //如果是ftp目录,那么groupid就是用户id
  280. if (_ancestors[0].UserDirectoryID == US.FTPFOLDERID) {
  281. _groupid = diskinfo.userInfo.UserId;
  282. }
  283. //否则就是对应的群id,如果不存在那么就是""
  284. else {
  285. _groupid = _ancestors[0].GroupID || "";
  286. }
  287. //文件名判断
  288. if (U.UF.S.ZWFileName.test(_input.value)) {
  289. //去数据库添加文件
  290. U.A.Request(US.AUTH, ["CreateFile", _userid, _newguid, directoryid, _input.value, "", "", "", "uw", _groupid], function (r) {
  291. //创建文件
  292. var _fileinfo = new U.MD.DK.M.entity(_newguid, 0, directoryid, _name, _name, "uw", "", U.UF.D.toTimeStamp(), "", "9999", null, "", 1, "", _groupid, "", _userid, US.userInfo.UserNickName, US.userInfo.username, US.userInfo.UserThumbnailImageHead)
  293. U.MD.DK.RE.addFileOrFolder([_fileinfo], diskinfo, _dirinfo); //添加到页面上中
  294. //如果存在就执行
  295. if (fun) {//判断是否保存到数据库
  296. fun(_fileinfo);
  297. }
  298. }, []);
  299. }
  300. else {
  301. U.alert("文件名过长或者为空");
  302. return false;
  303. }
  304. }, function () { }, "新建文档");
  305. }
  306. /**
  307. * 新建工作表处理
  308. **/
  309. U.MD.DK.RE.newExcel = function (diskinfo) {
  310. if (!U.MD.U.L.isLogin()) {//是否登录
  311. var _directoryid = diskinfo.directoryid; //目录id
  312. if (U.MD.DK.C.getDirectoryPermissions(_directoryid, diskinfo).isnew) {//新建工作表权限
  313. U.MD.DK.RE.newExcel.confirm(diskinfo, _directoryid); //新建提示框
  314. }
  315. else { U.alert("无权限访问此工作表"); };
  316. }
  317. }
  318. /**
  319. * 新建工作表处理的新建提示框
  320. **/
  321. U.MD.DK.RE.newExcel.confirm = function (diskinfo, directoryid) {
  322. var _ancestors, //目录的祖先元素
  323. _groupid, //群id
  324. _newguid = Guid.newGuid(), //新建文件夹的id
  325. _dirinfo = U.Json.select(diskinfo.directoryOrFiles, { "UserDirectoryID": directoryid })[0], //目录网盘信息
  326. _userid = US.userInfo.userid, //新建用户id
  327. _input = $$("input", { "placeholder": "请输入表格名字", "style": { "width": "180px", "height": "25px" } }); //输入的名字
  328. U.MD.DK.RE.newconfirm(_input, //创建文档的框
  329. function () {
  330. var _name = _input.value;
  331. //获取粘贴到制定目录的群id
  332. _ancestors = U.MD.DK.C.getAncestors(_dirinfo, diskinfo); //获取所有的祖先
  333. //如果是ftp目录,那么groupid就是用户id
  334. if (_ancestors[_ancestors.length - 1].UserDirectoryID == US.FTPFOLDERID) {
  335. _groupid = diskinfo.userInfo.UserId;
  336. }
  337. //否则就是对应的群id,如果不存在那么就是""
  338. else {
  339. _groupid = _ancestors[_ancestors.length - 1].GroupID || "";
  340. }
  341. //文件名判断
  342. if (U.UF.S.ZWFileName.test(_input.value)) {
  343. //去数据库添加文件
  344. U.A.Request(US.AUTH, ["CreateFile", _userid, _newguid, directoryid, _input.value, "", "", "", "ue", _groupid], function (r) {
  345. //创建文件
  346. var _fileinfo = new U.MD.DK.M.entity(_newguid, 0, directoryid, _name, _name, "ue", "", U.UF.D.toTimeStamp(), "", "9999", null, "", 1, "", _groupid, "", _userid, US.userInfo.UserNickName, US.userInfo.username, US.userInfo.UserThumbnailImageHead)
  347. U.MD.DK.RE.addFileOrFolder([_fileinfo], diskinfo, _dirinfo); //添加到页面上中
  348. }, []);
  349. }
  350. else {
  351. U.alert("文件名过长或者为空");
  352. return false;
  353. }
  354. }, function () { }, "新建工作表");
  355. }
  356. /**
  357. * 新建文件对话框
  358. * @content {string/elemnet} 内容
  359. * @determineFun {function} 确认回调函数
  360. * @cancelFun {function} 取消回调函数
  361. * @string {string} 对话框的标题名字
  362. */
  363. U.MD.DK.RE.newconfirm = function (content, determineFun, cancelFun, str) {
  364. //创建对话框主体元素
  365. var _confirm = $$("div", { "style": { "cssText": "width: 100%; background: rgb(255,255,255); overflow:hidden; " }, id: "123133456" });
  366. var _string = str || "提示框";
  367. //创建内容区域
  368. var _content = $$("div", { "style": { "cssText": "text-align: center; margin: 30px 20px 30px 20px; " } }, _confirm);
  369. //判断内容是否为元素
  370. if (U.UF.C.isElement(content)) {
  371. //如果为元素则动态添加到对话框中
  372. $(_content).append(content);
  373. } else {
  374. //如果为文字则修改inerHTML。
  375. _content.innerHTML = content || '内容';
  376. }
  377. //创建页脚部分
  378. var _footer = $$("div", { "style": { "cssText": " height:45px;" } }, _confirm);
  379. //调用Uform窗体创建函数将主体内容添加到窗体中
  380. var _form = new U.UF.UI.form(
  381. _string,
  382. _confirm,
  383. {
  384. "style": {
  385. "cssText": "font-size: 16px; background: rgb(255,255,255); width: 300px; position: fixed; box-shadow: 0 0 10px 3px rgb(0,0,0); border-radius: 5px;"
  386. }
  387. },
  388. {
  389. "istop": true,
  390. "isenlarge": false,
  391. "isstretching": false,
  392. "isnarrow": false
  393. },
  394. {
  395. "style": {
  396. "cssText": " background: rgb(59,88,120); padding: 10px;padding-left: 20px; color: rgb(255,255,255); "
  397. }
  398. });
  399. //创建确定按钮 绑定点击事件,默认点击后执行关闭窗体函数
  400. $$("div", {
  401. "style": {
  402. "cssText": "text-align: center; color: rgb(255,255,255); width: 30%; padding: 5px; background: rgb(48,126,208); border-radius: 5px;float: right; margin-right:35px;"
  403. },
  404. innerHTML: "确定",
  405. onclick: function () {
  406. var _bool = true;
  407. if (U.UF.C.isFunction(determineFun)) {
  408. _bool = determineFun(); //判断是否存在回调 有则执行。
  409. }
  410. if (_bool !== false) {
  411. U.UF.F.closeWindow(_form.form); //关闭窗口函数
  412. }
  413. }
  414. }, _footer);
  415. //创建取消按钮 绑定点击事件,默认点击后执行关闭窗体函数
  416. $$("div", {
  417. "style": {
  418. "cssText": "text-align: center; color: rgb(255,255,255); width: 30%; padding: 5px; background: rgb(48,126,208); border-radius: 5px;background: rgb(170,170,170); float: left; margin-left:35px;"
  419. },
  420. "innerHTML": "取消",
  421. "onclick": function () {
  422. U.UF.C.isFunction(cancelFun) && cancelFun(); //判断是否存在回调 有则执行。
  423. U.UF.F.closeWindow(_form.form); //关闭窗口函数
  424. }
  425. }, _footer);
  426. return _form;
  427. }
  428. /**
  429. * 新建互联办公文件对话框
  430. * @determineFun {function} 确认回调函数
  431. * @cancelFun {function} 取消回调函数
  432. */
  433. U.MD.DK.RE.newDocConfirm = function (diskinfo/*determineFun cancelFun*/) {
  434. if (!U.MD.U.L.isLogin()) {//是否登录
  435. var _directoryid = diskinfo.directoryid; //目录id
  436. if (U.MD.DK.C.getDirectoryPermissions(_directoryid, diskinfo).isnew) {//新建工作表权限
  437. var _confirm = $$('div'),
  438. _pickarea = $$("div", { "style": { "cssText": "display:table; width: 100%; height: auto; " } }, _confirm),
  439. _picklocal = $$("div", { "id": "U_MD_DK_RE_localDoc", "style": { "cssText": "display:table-cell; width:235px; height:170px; background-color:#f5f5f5;text-align:center; vertical-align: middle;cursor: pointer;" } }, _pickarea),
  440. _pickline = $$("div", { "style": { "cssText": "display:table-cell; width:1px; height: 100%; background-color:#cecece;" } }, _pickarea),
  441. _pickoa = $$("div", { "style": { "cssText": "display:table-cell; width:234px; height:100%; background-color:#f5f5f5;text-align:center; vertical-align: middle;cursor: pointer;" } }, _pickarea);
  442. $$("img", { src: "/img/officefileicon.png", style: { "vertical-align": "middle" } }, _picklocal);
  443. $$("img", { src: "/img/oaofficeicon.png", style: { "vertical-align": "middle" } }, _pickoa);
  444. $$('span', { innerText: '互联文档', style: { "margin-left": "10px" } }, _pickoa);
  445. $$('span', { innerText: '本地文档', style: { "margin-left": "10px" } }, _picklocal);
  446. //创建对话框主体元素
  447. var _enter = $$("div", { "style": { "cssText": "width: 100%; background: rgb(255,255,255); overflow:hidden; display:none" }, id: "123133456" }, _confirm);
  448. var _string = "新建文档";
  449. //创建内容区域
  450. var _content = $$("div", { "style": { "cssText": "text-align: center; margin: 30px 20px 30px 20px;" } }, _enter)
  451. //创建页脚部分
  452. var _footer = $$("div", { "style": { "cssText": " height:45px;" } }, _enter);
  453. //调用Uform窗体创建函数将主体内容添加到窗体中
  454. var _form = new U.UF.UI.form(
  455. _string,
  456. _confirm,
  457. {
  458. "style": {
  459. "cssText": "font-size: 16px; background: rgb(255,255,255); width: 470px; position: fixed; box-shadow: rgb(0, 0, 0) 2px 1px 5px; "
  460. }
  461. },
  462. {
  463. "istop": true,
  464. "isenlarge": false,
  465. "isstretching": false,
  466. "isnarrow": false
  467. },
  468. {
  469. "style": {
  470. "cssText": " background: #3c475b;padding:4px 0 ; color: rgb(255,255,255); "
  471. }
  472. });
  473. $(_picklocal).bind({
  474. "mouseover": function () { _picklocal.style.backgroundColor = "#dcdcdc"; }, "mouseout": function () { _picklocal.style.backgroundColor = "#f5f5f5"; }, "click": function () {
  475. U.MD.DK.RE.newDocument(diskinfo);
  476. U.UF.F.closeWindow(_form.form, "remove");
  477. }
  478. })
  479. $(_pickoa).bind({
  480. "mouseover": function () { _pickoa.style.backgroundColor = "#dcdcdc"; }, "mouseout": function () { _pickoa.style.backgroundColor = "#f5f5f5"; }, "click": function () {
  481. // $('#U_UF_UI_confirm')[0].style.display = "none";
  482. var _docId = Guid.newGuid();
  483. U.MD.O.word(US.userInfo, { 'UserDirectoryID': _docId }, function () {
  484. var _iframe = $('#UD_Word' + _docId).find('iframe')[0].contentWindow;
  485. _iframe.document.getElementById('U_MD_O_H_body_left_invite_user').children[0].click();
  486. U.UF.F.closeWindow(_form.form, "remove");
  487. });
  488. }
  489. })
  490. return _form;
  491. }
  492. else { U.alert("无权限访问此工作表"); };
  493. }
  494. }
  495. //#endregion
  496. //#region 删除文件
  497. /**
  498. * 删除文件
  499. *
  500. * @param {array} 需要删除文件的数组
  501. * @param {string} 用户id
  502. */
  503. U.MD.DK.RE.deleteFileOrDir = function (fileordirs, userid) {
  504. var _contentel;
  505. //多文件删除
  506. if (fileordirs.length > 1) {
  507. _contentel = $$("div", { "style": { "cssText": "float:left;text-align:center;width:100%;padding:5% 0 5% 0;" } });
  508. $$("span", { "style": { "cssText": "font-weight:bold;" }, "innerHTML": "你确定要删除这" + fileordirs.length + "项吗?" }, _contentel);
  509. }
  510. //单文件处理
  511. else {
  512. _contentel = U.MD.DK.RE.attributeStyle(fileordirs, null);
  513. fileordirs = [fileordirs];
  514. }
  515. //弹出提示框,确认后删除文件
  516. U.UF.UI.confirm(_contentel, function () {
  517. U.MD.DK.RE.deleteDirectoryOrFile(fileordirs, userid);
  518. });
  519. $(".U_MD_DK_SX")[$(".U_MD_DK_SX").length - 2].parentNode.style.margin = "0"; //位置美化
  520. }
  521. /**
  522. * 删除文件接口
  523. *
  524. * @param {array} 需要删除文件的数组
  525. * @param {string} 用户id
  526. */
  527. U.MD.DK.RE.deleteDirectoryOrFile = function (fileordirs, userid) {
  528. var _allfileordirid = U.Json.toKeyArray(fileordirs, "UserDirectoryID").join(","); //所有删除的文件和文件夹的合并id
  529. U.A.Request(US.AUTH, ["DeleteDirectoryOrFile", _allfileordirid, fileordirs[0].GroupID || ""], U.MD.DK.RE.asynDeleteDirectoryOrFile, ["", fileordirs, userid]); //文件夹和文件同时删除
  530. }
  531. /**
  532. * 删除文件异步
  533. *
  534. * @param {array} 需要删除文件的数组
  535. * @param {string} 用户id
  536. */
  537. U.MD.DK.RE.asynDeleteDirectoryOrFile = function (r) {
  538. var i,
  539. _dirid,
  540. _context = r.context,
  541. _fileordirs = _context[1], //文件或者是文件夹信息
  542. _userid = _context[2], //用户id
  543. _diskinfo = U.MD.DK.M.diskOperatingSwitch(_userid) //获取用户硬盘的信息
  544. ;
  545. r = r.value;
  546. //允许删除
  547. if (r) {
  548. U.MD.DK.M.entity.del(_fileordirs, _diskinfo); //删除diskinfo数组里面的文件或者文件夹
  549. U.MD.DK.RE.delPageFileOrDir(_fileordirs, _diskinfo); //删除文件在页面上的元素
  550. }
  551. else {
  552. U.alert("操作失败!"); //弹出操作失败
  553. }
  554. }
  555. /**
  556. * 删除文件在页面上的显示
  557. *
  558. * @param {array} 文件或者是目录
  559. * @param {string} 删除用户网盘的信息
  560. */
  561. U.MD.DK.RE.delPageFileOrDir = function (fileordirs, diskinfo) {
  562. var i,
  563. _parentdirinfo,
  564. _contentel = $("#U_MD_DK_RZ", diskinfo.formel); //中间的内容
  565. //循环文件或者文件夹处理
  566. for (i = 0; i < fileordirs.length; i++) {
  567. $("#L" + fileordirs[i].UserDirectoryID, diskinfo.formel).remove(); //移除左边的导航
  568. $("#R" + fileordirs[i].UserDirectoryID, diskinfo.formel).remove(); //移除右边的文件或者文件夹
  569. //判断删除的位置是否是当前打开的位置,如果是则保持
  570. if (fileordirs[i].UserDirectoryID == diskinfo.directoryid) {
  571. _parentdirinfo = fileordirs[i].Parent;
  572. }
  573. }
  574. //如果删除的位置是当前打开的位置
  575. if (_parentdirinfo) {
  576. //重新打印
  577. U.MD.DK.LE.openFileDirectory(_parentdirinfo, diskinfo.userInfo.UserId);
  578. }
  579. //如果文件或者文件夹给全部删除,那么就打印空视图
  580. else if (_contentel.Child() == 0) {
  581. U.MD.DK.VW.printNullView(_contentel[0]); //重新打印空视图
  582. }
  583. }
  584. //#endregion
  585. //#region 重命名
  586. /**
  587. * 删除文件在页面上的元素
  588. *
  589. * @param {element} 元素
  590. * @param {string} 用户id
  591. */
  592. U.MD.DK.RE.rename = function (el, fileordir, diskinfo) {
  593. var _el; //创建一个可输入的input标签
  594. if (el.firstChild.children[1]) {//判断是否在左边菜单栏插入
  595. _el = el.firstChild.children[1].children[0]; //插入地方
  596. _el.innerText = ""//清除原文件名,并在上面设置一个input输出框
  597. } else {
  598. _el = el.lastElementChild; //插入地方
  599. _el.innerText = ""//清除原文件名,并在上面设置一个input输出框
  600. }
  601. $$("input", {//创建input框
  602. "ondblclick": U.UF.EV.stopBubble, //阻止冒泡
  603. "onblur": function () {//失焦
  604. U.MD.DK.RE.detemineReName(this, fileordir, diskinfo); //确定修改
  605. },
  606. //回车会理
  607. "onkeyup": function () {
  608. if (event.keyCode == 13 || event.keyCode == 10) {
  609. this.onblur(); //失焦
  610. }
  611. },
  612. "onclick": U.UF.EV.stopBubble, //阻止冒泡
  613. "className": "U_MD_U_P_C_P_N_I", //设置class
  614. "value": fileordir.UserallDirectoryName.replace("." + fileordir.UserDirectoryExtendType, "")//文件名+后缀
  615. }, _el); //在哪里插入
  616. $(".U_MD_U_P_C_P_N_I")[$(".U_MD_U_P_C_P_N_I").length - 1].focus(); //聚焦到重命名的input框上面
  617. }
  618. /**
  619. * 確定修改文件名
  620. *
  621. * @param {element} 元素
  622. * @param {string} 用户id
  623. */
  624. U.MD.DK.RE.detemineReName = function (inputel, fileordir, diskinfo) {
  625. var _leftel,
  626. _rightel,
  627. _extendtype = fileordir.UserDirectoryExtendType, //文件扩展名
  628. _name = inputel.value.replaceHtmlSign() + (fileordir.filetype ? "." + _extendtype : ""); //文件或者文件夹的名字
  629. //修改的名字没有变化
  630. if (_name != fileordir.UserallDirectoryName) {
  631. //判断文件名输入符不符合规范
  632. if (U.UF.S.FileName.test(_name)) {
  633. //目录的处理
  634. if (_extendtype == "folder") {
  635. U.A.Request(US.AUTH, ["UpdateDirectoryInfo", fileordir.UserDirectoryID, _name], U.MD.DK.RE.asynDetemineReName, ["", fileordir, _name, diskinfo]);
  636. }
  637. //文件的处理
  638. else {
  639. U.A.Request(US.AUTH, ["UpdateFileInfo", fileordir.UserDirectoryID, _name], U.MD.DK.RE.asynDetemineReName, ["", fileordir, _name, diskinfo]);
  640. }
  641. _leftel = $("#L" + fileordir.UserDirectoryID, diskinfo.formel)[0]; //左边的导航,文件夹同时展开的时候会存在
  642. _rightel = $("#R" + fileordir.UserDirectoryID, diskinfo.formel)[0]; //右边文件或者文件夹的处理
  643. //左边的目录处理
  644. if (_leftel) {
  645. $("div", _leftel)[3].innerText = _name;
  646. }
  647. //右边的目录处理
  648. if (_rightel) {
  649. $("div", _rightel)[3].innerText = _name;
  650. }
  651. }
  652. }
  653. // if (inputel.parentNode) {
  654. // //删除input输入
  655. // inputel.parentNode.innerText = _name;
  656. // }
  657. }
  658. /**
  659. * 確定修改文件名
  660. *
  661. * @param {element} 元素
  662. * @param {string} 用户id
  663. */
  664. U.MD.DK.RE.asynDetemineReName = function (r) {
  665. var _context = r.context,
  666. _fileordir = _context[1], //文件或者文件夹信息
  667. _name = _context[2] //文件名
  668. ;
  669. r = r.value;
  670. //判断服务器修改是否成功的处理,处理成功后修改文件的信息
  671. if (r) {
  672. _fileordir.UserallDirectoryName = _name; //文件全写的名字
  673. _fileordir.UserDirectoryName = _name.addEllipsis(20); //文件的缩略名
  674. }
  675. }
  676. //#endregion
  677. //#region 复制 剪切 粘贴
  678. /**
  679. * 删除文件在页面上的元素
  680. *
  681. * @param {array} 复制粘贴的元素
  682. * @param {string} 粘贴的格式
  683. */
  684. U.MD.DK.RE.copyorshear = function (dirorfile, type, diskinfo) {
  685. var _userid = US.disk.UserDisk.userInfo.UserId, //用户id
  686. _dirid = dirorfile.UserDirectoryParentID //复制的目录id
  687. ;
  688. //添加复制的全局变量
  689. US.disk.Disks[_userid].pasteDirOrFile = {
  690. "type": type, //复制或者剪切 "copy" || "shear"
  691. "UserDirectoryID": _dirid, //在哪个目录复制或者剪切
  692. "dirorfile": dirorfile, //复制的内容
  693. "userid": _userid //用户id
  694. };
  695. }
  696. /**
  697. * 粘贴文件
  698. *
  699. * @param {array} 复制粘贴的元素
  700. * @param {string} 粘贴的格式
  701. */
  702. U.MD.DK.RE.paste = function (diskinfo) {
  703. var _ancestors, //祖先元素
  704. _groupid, //群元素
  705. _fileordirids, //文件和目录的id集合
  706. _dirid = diskinfo.directoryid, //当前目录id
  707. _dirinfo = U.Json.select(diskinfo.directoryOrFiles, { "UserDirectoryID": _dirid }, 1)[0], //当前目录的信息
  708. _userid = US.disk.UserDisk.userInfo.UserId, //用户id
  709. _pastecontent = US.disk.Disks[_userid].pasteDirOrFile, //粘贴的内容
  710. _type = _pastecontent.type, //粘贴的格式
  711. _pastedirid = _pastecontent.UserDirectoryID, //粘贴目录id
  712. _dirorfile = _pastecontent.dirorfile, //粘贴文件和目录的数组
  713. _pasteuserid = _pastecontent.userid //祖先元素
  714. ;
  715. //需要剪切的内容存在,无需判断权限了,能触发改函数说明是有权限的。 如果剪切文件,同时不是剪切到同一个目录里
  716. if (_pastecontent && (_type == "copy" || _dirid != _pastedirid || _pasteuserid != _userid)) { // && (_dirid != _pastedirid || _pasteuserid != _userid)
  717. //获取粘贴到制定目录的群id
  718. _ancestors = U.MD.DK.C.getAncestors(_dirinfo, diskinfo); //获取所有的祖先
  719. //如果是ftp目录,那么groupid就是用户id
  720. if (_ancestors[_ancestors.length - 1].UserDirectoryID == US.FTPFOLDERID) {
  721. _groupid = diskinfo.userInfo.UserId;
  722. }
  723. //否则就是对应的群id,如果不存在那么就是""
  724. else {
  725. _groupid = _ancestors[_ancestors.length - 1].GroupID || "";
  726. }
  727. _fileordirids = U.Json.toKeyArray([_pastecontent.dirorfile], "UserDirectoryID").join(","); //文件
  728. //处理粘贴在数据库的过程
  729. //剪切的处理
  730. if (_type == "shear") {
  731. //调用剪切的函数 用户ID 粘贴目录id 文件和目录的id集合 群元素
  732. U.A.Request(US.AUTH, ["CutAndPasteFiles", US.userInfo.userid, _dirid, _fileordirids, _groupid, _pastecontent.dirorfile.GroupID], U.MD.DK.RE.asynPaste, ["", _dirinfo, _groupid, _pastecontent, diskinfo]);
  733. _pastecontent.type = "copy";
  734. }
  735. //复制的处理
  736. else {
  737. //调用复制的函数
  738. U.A.Request(US.AUTH, ["CopyAndPasteFiles", US.userInfo.userid, _dirid, _fileordirids, _groupid], U.MD.DK.RE.asynPaste, ["", _dirinfo, _groupid, _pastecontent, diskinfo]);
  739. }
  740. }
  741. }
  742. /**
  743. * 粘贴文件
  744. *
  745. * @param {object} ajax的传参处理
  746. */
  747. U.MD.DK.RE.asynPaste = function (r) {
  748. var i,
  749. _context = r.context, //上线文的传参
  750. _dirinfo = _context[1], //粘贴到制定的目录
  751. _groupid = _context[2], //粘贴的群id
  752. _pastecontent = _context[3], //粘贴的文件或者文件夹内容
  753. _diskinfo = _context[4], //粘贴的网盘信息
  754. _copyorshearinfo = US.disk.Disks[_pastecontent.userid], //粘贴网盘的信息
  755. _pasteinfo = r.value //目录信息
  756. ;
  757. //剪切处理的话,先要移除原本的文件,然后在重新处理
  758. if (_pastecontent.type == "shear") {
  759. U.MD.DK.M.entity.del(_pastecontent.dirorfile, _copyorshearinfo); //在制定的用户中移除
  760. U.MD.DK.RE.delPageFileOrDir(_pastecontent.dirorfile, _copyorshearinfo); //剪切的话会在之前目录里面删除
  761. }
  762. //循环设置粘贴文件的属性
  763. for (i = 0; i < _pasteinfo.length; i++) {
  764. _pasteinfo[i] = new U.MD.DK.M.entity(_pasteinfo[i].UserDirectoryID, _pasteinfo[i].UserDirectorySize, _pasteinfo[i].UserDirectoryParentID, _pasteinfo[i].UserDirectoryName, _pasteinfo[i].UserDirectoryName, _pasteinfo[i].UserDirectoryExtendType, _pasteinfo[i].UserDirectoryUrl, _pasteinfo[i].UserDirectoryAddTime, _pasteinfo[i].UserDirectoryUrl, "9999", null, _pasteinfo[i].UserDirectoryEncrypt, 1, "", _pasteinfo[i].UserDirectoryEncrypt, "", US.userInfo.userid, US.userInfo.UserNickName, US.userInfo.username, US.userInfo.UserThumbnailImageHead)
  765. }
  766. //在粘贴网盘的数组目录中添加值
  767. U.MD.DK.RE.addFileOrFolder(_pasteinfo, _diskinfo, _dirinfo);
  768. }
  769. //#endregion
  770. //#region 文件下载
  771. //弹出下载的处理
  772. U.MD.DK.RE.downloadFile = function (dirorfileid, isdir) {
  773. window.open("/Pages/Downlaod.htm?id=" + dirorfileid + "&type=" + (isdir || ""));
  774. }
  775. //#endregion
  776. //#region 查看评论
  777. /**
  778. * 查看评论
  779. *
  780. * @param {object} 文件信息
  781. */
  782. U.MD.DK.RE.replay = function (fileinfo) {
  783. // U.MD.I.Img(UDE, UDE);
  784. // U.MD.D.CM.CKPLXS(UDE.UserDirectoryID, UDE.UserallDirectoryName);
  785. }
  786. //#endregion
  787. //#region 刷新
  788. /**
  789. * 刷新
  790. *
  791. * @param {string} 用户id
  792. * @param {object} 目录信息
  793. */
  794. U.MD.DK.RE.refresh = function (userid, fileinfo, diskinfo) {
  795. U.MD.DK.LE.getChildsByDirectoryId(userid, fileinfo, $("#U_MD_DK_RZ", diskinfo.formel)[0])//加载当前网盘内容
  796. }
  797. //#endregion