RightClick.js 38 KB

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