DiskView.js 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021
  1. Namespace.register("U.MD.DK.VW"); //Disk视图操作命名空间
  2. //#region 目录文件打印
  3. /**
  4. * 打印网盘视图输出判断的地方 分为普通视图输出和详细视图输出
  5. * @param {array} 需要输出的文件或者文件夹信息
  6. * @param {element} 输出到那个区域
  7. **/
  8. U.MD.DK.VW.viewsSwitch = function (viewtype, diskinfo) {
  9. var _contentel = $("#U_MD_DK_RZ", diskinfo.formel)[0], //内容元素
  10. _viewnav = $(_contentel).prev()[0] //导航元素
  11. ;
  12. _contentel.viewtype = viewtype; //视图
  13. if (diskinfo.currentDirectoryFile.length) {
  14. _contentel.innerHTML = ""; //先清空处理
  15. U.MD.DK.VW.printContent(diskinfo.currentDirectoryFile, _contentel); //打印内容
  16. //这里是普通视图处理
  17. if (viewtype == "Normal") {
  18. _contentel.style.width = ""; //普通视图不修改大小
  19. _viewnav.style.display = "none";
  20. _contentel.style.height = $(_contentel).Parent(2).offsetHeight - 79 + "px"
  21. }
  22. //详细视图处理
  23. else {
  24. U.MD.DK.VW.size(diskinfo); //详细视图的时候需要设置大小和样式,这里统一处理
  25. }
  26. }
  27. }
  28. /**
  29. * 根据时间排序
  30. * @param {object} 用户网盘信息
  31. **/
  32. U.MD.DK.VW.SortView = function (diskinfo, type, cb) {
  33. var _filesinfo = diskinfo.currentDirectoryFile, //用户展示在改文件夹下所有的文件
  34. _contentel = $("#U_MD_DK_RZ", diskinfo.formel)[0]
  35. ;
  36. //判断文件是否存在,如果有打印文件,那么就进行文件的打印,否则不做任何处理
  37. if (_filesinfo.length) {
  38. //判断头两个文件的创建时间,进行排序处理
  39. if (_filesinfo[0].UserDirectoryAddTime > _filesinfo[1].UserDirectoryAddTime) {
  40. //文件降序处理
  41. U.UF.Math.sequence(_filesinfo, type, cb, 1);
  42. } else {
  43. //文件升序处理
  44. U.UF.Math.sequence(_filesinfo, type, cb, -1);
  45. }
  46. //重新打印内容
  47. _contentel.innerHTML = "";
  48. U.MD.DK.VW.printContent(_filesinfo, _contentel); //打印
  49. }
  50. }
  51. /**
  52. * 打印网盘视图输出判断的地方 分为普通视图输出和详细视图输出
  53. * @param {array} 需要输出的文件或者文件夹信息
  54. * @param {element} 输出到那个区域
  55. **/
  56. U.MD.DK.VW.printContent = function (filesinfo, el) {
  57. var _diskinfo = US.disk.UserDisk, //用户网盘的数据
  58. _viewtype = el.viewtype || "Normal", //打印的格式
  59. _viewnav = $(el).prev()[0] //视图导航
  60. ;
  61. //判断是否有需要输出的文件信息
  62. if (filesinfo.length) {
  63. //打印的模式 这里是普通视图输出
  64. if (_viewtype == "Normal") {
  65. U.MD.DK.VW.printNormalView(filesinfo, el); //输出
  66. }
  67. //详细视图输出
  68. else {
  69. U.MD.DK.VW.printDetailedView(filesinfo, el); //详细视图输出
  70. }
  71. }
  72. //如果还有输出的信息在div上面那么不输出空文件的提示
  73. else if (!$(el).Child().length) {
  74. U.MD.DK.VW.printNullView(el); //没有文件的时候样式输出
  75. }
  76. }
  77. /**
  78. * 空文件提示信息输出
  79. * @param {element} 输出到那个区域
  80. **/
  81. U.MD.DK.VW.printNullView = function (el) {
  82. var _viewel,
  83. _infoel,
  84. _promptel,
  85. _viewel = $$("div", { "className": "U_MD_DK_RZF" }, el);
  86. _infoel = $$("div", { "className": "U_MD_DK_RZFS" }, _viewel);
  87. $$("div", { "className": "U_MD_DK_RZTSL U_MD_DK_RZFSL", "innerHTML": "!" }, _infoel);
  88. _promptel = $$("div", { "className": "U_MD_DK_RZFSR" }, _infoel);
  89. //提示信息
  90. _infoel = $$("div", { "className": "U_MD_DK_RZFSRS" }, _promptel);
  91. $$("div", { "className": "U_MD_DK_RZFSRS", "innerHTML": "这地方暂时" }, _infoel);
  92. $$("div", { "className": "U_MD_DK_RZFSRS", "innerHTML": " 没有资源哦。" }, _infoel);
  93. $$("div", { "className": "U_MD_DK_RZTSRX U_MD_DK_RZFSRX", "innerHTML": "Nothing!!" }, _promptel);
  94. }
  95. /**
  96. * 普通视图打印
  97. * @param {array} 需要输出的文件或者文件夹信息
  98. * @param {element} 输出到那个区域
  99. **/
  100. U.MD.DK.VW.printNormalView = function (filesinfo, el) {
  101. //变量定义区域
  102. var i, //用于循环
  103. _isencryp, //判断文件夹是否加密处理
  104. _date, //文件当前使用时间
  105. _icon, //获取文件的icon样式,包含多种
  106. _imgicon, //打印给用户看到的文件类型对应的图标的样式,上面的是
  107. _iconel, //图标元素
  108. _imgeel, //输入给用户看到的元素
  109. _infoel, //信息输出元素
  110. _userimg, //用户头像
  111. _frag = $$("frag"), //临时panel
  112. _userid = US.disk.UserDisk.userInfo.UserId //当前使用用户的id
  113. ;
  114. //逻辑输出区域
  115. for (i = 0; i < filesinfo.length; i++) {
  116. //获取文件的信息
  117. _isencryp = (filesinfo[i]["UserDirectoryEncrypt"] && filesinfo[i]["UserDirectoryEncrypt"] != _userid); //判断文件夹是否是加密属性
  118. _date = U.UF.D.formatDateToArray(filesinfo[i]["UserDirectoryAddTime"], "Array"); //获取文件的创建时间数组 返回值包含 [年, 月, 日]
  119. _icon = U.MD.DK.C.getIcon(filesinfo[i].UserDirectoryExtendType); //根据文件扩展名,得到图标的样式
  120. //创建一个文件夹图标或者文件图标。
  121. _viewel = $$("div", {
  122. "title": filesinfo[i]["UserallDirectoryName"],
  123. "className": "U_MD_DK_RZO",
  124. "id": "R" + (filesinfo[i].UserDirectoryID),
  125. //"onmousedown": U.UF.EV.stopBubble, //onmousedown设置阻止冒泡
  126. "oncontextmenu": U.UF.C.closure(function (fileinfo) {
  127. U.UF.EV.stopBubble();
  128. U.UF.EV.stopDefault();
  129. U.MD.DK.RM.rightMenu(this, fileinfo, US.disk.UserDisk);
  130. }, [filesinfo[i]])
  131. }, _frag);
  132. //设置点击事件
  133. if (filesinfo[i].filetype == "1") { //普通文件的处理
  134. _viewel.onclick = U.UF.C.closure(function (fileinfo) {
  135. U.MD.DK.LE.openFileDirectory(fileinfo, _userid);
  136. }, [filesinfo[i]]);
  137. }
  138. else { //文件夹的处理,文件夹的处理这里加一个前进后退的添加
  139. _viewel.onclick = U.UF.C.closure(function (fileinfo) {
  140. U.MD.DK.LE.openFileDirectory(fileinfo, _userid);
  141. }, [filesinfo[i]]);
  142. }
  143. //图标处理
  144. _imgicon = "";
  145. _iconel = $$("div", { "className": "U_MD_DK_RZOA" }, _viewel);
  146. //文件夹处理
  147. if (filesinfo[i].filetype != 1) {
  148. //加密的处理
  149. if (_isencryp) {
  150. _imgicon = "U_MD_DK_Img U_MD_DK_RZOM";
  151. }
  152. //未加密的处理
  153. else {
  154. _imgicon = "U_MD_DK_Img U_MD_DK_RZOW";
  155. }
  156. }
  157. //根据上面根据类型获取的图标输出图标样式
  158. else if (_icon.classname[1]) {
  159. _imgicon = "U_MD_DK_Img " + _icon.classname[1];
  160. }
  161. _imgeel = $$("div", { "className": "U_MD_DK_RZOS " + _imgicon }, _iconel);
  162. //如果图标是空图标,给空图标写入后缀名
  163. if (_icon.name == "文件") {
  164. $$("div", { "className": "U_MD_DK_RZOSZ", "innerHTML": filesinfo[i].UserDirectoryExtendType || "" }, _imgeel);
  165. }
  166. else if (!_icon.classname[1]) {
  167. $$("img", {
  168. "onerror": function () {
  169. U.MD.C.imgError(this, 1);
  170. },
  171. "title": "点击查看",
  172. "src": U.MD.C.getHeadImage(filesinfo[i].UserDirectoryUrl)
  173. }, _imgeel);
  174. }
  175. //目录名输出
  176. _infoel = $$("div", { "className": "U_MD_DK_RZOZO" }, _iconel);
  177. $$("div", { "className": "U_MD_DK_RZOZ", "innerHTML": filesinfo[i]["UserallDirectoryName"] }, _infoel);
  178. //大小
  179. _infoel = $$("div", { "className": "U_MD_DK_RZOFXJ U_MD_D_Text_Abbreviation" }, _infoel);
  180. $$("span", { "className": "U_MD_DK_RZOFXJO", "innerHTML": _date[0] + "-" + _date[1] + "-" + _date[2] }, _infoel);
  181. $$("span", { "className": "U_MD_DK_RZOFXJT", "innerHTML": U.UF.UP.minUnitToMaxUnit(filesinfo[i]["UserDirectorySize"]) }, _infoel);
  182. //线面输入文件归属用户的信息 头像和名字
  183. _infoel = $$("div", { "className": "U_MD_DK_RZOF" }, _viewel);
  184. _infoel = $$("div", { "className": "U_MD_DK_RZOFD" }, _infoel);
  185. _userimg = $$("div", { "className": "U_MD_DK_RZOFDI" }, _infoel);
  186. //用户头像输出
  187. $$("img", {
  188. "onerror": U.MD.C.imgError, "title": "点击查看",
  189. "src": U.MD.C.getHeadImage(filesinfo[i].UserThumbnailImageHead),
  190. "onclick": function () {
  191. U.UF.EV.stopBubble(); U.MD.U.V.ViewOtherUserInfo(filesinfo[i].UserId);
  192. }
  193. }, _userimg);
  194. //归属用户名输出
  195. $$("div", { "className": "U_MD_DK_RZOFDN U_MD_D_Text_Abbreviation", "innerHTML": filesinfo[i].UserNickName || filesinfo[i]["UserallDirectoryName"] }, _infoel);
  196. }
  197. //追加元素
  198. $(el).append(_frag); // , 0, el.firstChild
  199. }
  200. /**
  201. * 详细视图输出
  202. * @param {array} 需要输出的文件或者文件夹信息
  203. * @param {element} 输出到那个区域
  204. **/
  205. U.MD.DK.VW.printDetailedView = function (filesinfo, el) {
  206. //变量定义区域
  207. var i, //用于循环
  208. _isencryp, //判断文件夹是否加密处理
  209. _date, //文件当前使用时间
  210. _icon, //获取文件的icon样式,包含多种
  211. _iconandnameel, //图标和名字展示的区域
  212. _ischecked = false, //判断文件是否给选中
  213. _userimg, //用户头像
  214. _frag = $$("frag"), //临时panel
  215. _userid = US.disk.UserDisk.userInfo.UserId //当前使用用户的id
  216. ;
  217. //逻辑输出区域
  218. for (i = 0; i < filesinfo.length; i++) {
  219. //获取文件的信息
  220. _isencryp = (filesinfo[i]["UserDirectoryEncrypt"] && filesinfo[i]["UserDirectoryEncrypt"] != _userid); //判断文件夹是否是加密属性
  221. _date = U.UF.D.formatDateToArray(filesinfo[i]["UserDirectoryAddTime"]); //获取文件的创建时间数组 返回值包含 [年, 月, 日]
  222. _icon = U.MD.DK.C.getIcon(filesinfo[i].UserDirectoryExtendType); //根据文件扩展名,得到图标的样式
  223. //创建一个文件夹图标或者文件图标。
  224. _viewel = $$("div", { "title": filesinfo[i]["UserallDirectoryName"], "className": "U_MD_DK_RZS U_MD_DK_RZXO", "id": "R" + (filesinfo[i].UserDirectoryID) }, _frag);
  225. _viewel.oncontextmenu = function () { U.UF.EV.stopBubble(); U.MD.DK.RM.rightMenu(_viewel, filesinfo[i], US.disk.UserDisk); }; //设置右键按钮的处理
  226. //设置点击事件
  227. _viewel.onclick = function () { U.MD.DK.LE.openFileDirectory(filesinfo[i], _userid); };
  228. _iconandnameel = $$("div", { "className": "U_MD_DK_RZSO", "style": { "marginLeft": "0px"} }, _viewel);
  229. //多选的按钮设置
  230. $$("input", { "className": "U_MD_DK_RZSOI",
  231. "checked": _ischecked,
  232. "type": "checkbox",
  233. "onclick": function () {
  234. U.UF.EV.stopBubble();
  235. U.MD.DK.VW.checkFile(this);
  236. }
  237. }, _iconandnameel);
  238. _iconandnameel = $$("div", { "className": "U_MD_DK_RZSM U_MD_D_Text_Abbreviation" }, _viewel);
  239. //设置图标如果有图标设置图标,没有图标的是图片
  240. if (_icon.classname[2]) {
  241. $$("span", { "className": _icon.classname[2] + " U_MD_DK_RZSMI U_MD_DK_Img U_MD_D_Text_Abbreviation", "innerHTML": " &nbsp; &nbsp; &nbsp;" }, _iconandnameel);
  242. }
  243. else {
  244. $$("img", {
  245. "onerror": function () {
  246. U.MD.C.imgError(this, 1);
  247. },
  248. "title": "点击查看",
  249. "src": U.MD.C.getHeadImage(filesinfo[i].UserDirectoryUrl || (US.FILESYSTEMURL + filesinfo[i].UseFilesServerThumbnailName))
  250. }, _iconandnameel);
  251. }
  252. //文件名
  253. $$("span", { "className": "U_MD_DK_RZSMN", "innerHTML": filesinfo[i]["UserallDirectoryName"] }, _iconandnameel);
  254. //引用次数,暂时没有功能
  255. $$("div", { "className": "U_MD_DK_RZSF U_MD_DK_RZSFO U_MD_D_Text_Abbreviation", "innerHTML": 0 }, _viewel);
  256. //归属用户名字
  257. $$("div", { "className": "U_MD_DK_RZSL U_MD_D_Text_Abbreviation", "innerHTML": filesinfo[i]["UserNickName"] }, _viewel);
  258. //文件类别名字,如文件夹、图片等等
  259. $$("div", { "className": "U_MD_DK_RZSX U_MD_D_Text_Abbreviation", "innerHTML": _icon.name }, _viewel);
  260. //文件大小
  261. $$("div", { "className": "U_MD_DK_RZSD U_MD_D_Text_Abbreviation", "innerHTML": U.UF.UP.minUnitToMaxUnit(filesinfo[i]["UserDirectorySize"]) }, _viewel);
  262. //时间
  263. $$("div", { "className": "U_MD_DK_RZST U_MD_D_Text_Abbreviation", "innerHTML": _date[0] + "-" + _date[1] + "-" + _date[2] + " " + _date[3] + ":" + _date[4] }, _viewel);
  264. }
  265. //追加元素
  266. el.appendChild(_frag);
  267. }
  268. /**
  269. * 详细视图的大小变化使用
  270. * @param {array} 需要输出的文件或者文件夹信息
  271. * @param {element} 输出到那个区域
  272. **/
  273. U.MD.DK.VW.size = function (diskinfo) {
  274. var i, j, k, //循环变量
  275. _childel,
  276. _size = [0.1, 0.2, 0.1, 0.15, 0.15, 0.15, 0.14], //详细视图每一格的大小
  277. _contentel = $("#U_MD_DK_RZ", diskinfo.formel)[0], //内容元素
  278. _contentchildel = $(_contentel).Child(), //内容的子元素
  279. _navel = $(_contentel).prev()[0], //导航元素
  280. _navchildel = $(_navel).Child(), //导航的子元素
  281. _width = $(_contentel).width(), //获取编辑区域的长度
  282. _height = $(_contentel).height() //获取编辑区域的高度
  283. ;
  284. _navel.style.display = "block"; //导航按钮出现
  285. //视图格式处理,要满足有数据,没有数据不做任何处理
  286. if (_contentel.viewtype === "Detailed" && diskinfo.currentDirectoryFile.length) {
  287. for (i = 0; i < _size.length; i++) {
  288. //导航按钮区域处理
  289. for (j = 0; j < _navchildel.length; j += 2) {
  290. _navchildel[j].style.width = _width * _size[j / 2] + "px"; //导航按钮带下处理
  291. }
  292. //内容区域处理
  293. for (j = 0; j < _contentchildel.length; j++) {
  294. _childel = $(_contentchildel).Child();
  295. for (k = 0; k < _childel.length; k++) {
  296. _childel[k].style.width = _width * _size[k] + "px"; //内容区域大小处理
  297. }
  298. }
  299. }
  300. _navel.style.width = _width + "px"; //导航区域设置大小
  301. if (_height > 420) {
  302. _contentel.style.height = _height - 35 + "px";
  303. }
  304. }
  305. }
  306. /**
  307. * 全选文件
  308. * @param {element} 输出到那个区域
  309. * @param {string} 输出到那个区域
  310. **/
  311. U.MD.DK.VW.checkAllFile = function (el) {
  312. var i,
  313. _ischeck = el.checked, //选择的状态
  314. _classname = "U_MD_DK_RZS U_MD_DK_RZXO" + (_ischeck ? " U_MD_DK_RZXOO" : ""), //选择或者取消选择的样式
  315. _contentel = $($(el).Parent(2)).next()[0], //内容区域的元素
  316. _childel = $(_contentel).Child() //所有输出的文件或者文件夹
  317. ;
  318. for (i = 0; i < _childel.length; i++) {
  319. _childel[i].className = _classname; //样式处理
  320. $("input", _childel[i])[0].checked = _ischeck; //选中状态
  321. }
  322. }
  323. /**
  324. * 再详细视图下选择文件
  325. * @param {element} 输出到那个区域
  326. * @param {string} 输出到那个区域
  327. **/
  328. U.MD.DK.VW.checkFile = function (el) {
  329. var _ischeck = el.checked; //获取文件是选择还是取消选择
  330. //选择或者取消选择的处理
  331. $(el).Parent(2).className = "U_MD_DK_RZS U_MD_DK_RZXO" + (_ischeck ? " U_MD_DK_RZXOO" : "");
  332. }
  333. //#endregion
  334. //#region 选择保存位置窗口
  335. /**
  336. * 选择文件保存位置窗口打印
  337. * @param postfix {string} 文件后缀 文件类型
  338. * @param filename {string} 文件名
  339. * @param callback {function} 回调函数
  340. * @param formtitle {string} 窗体名称
  341. * @param extendtype {string} 显示的文件属性
  342. **/
  343. U.MD.DK.VW.chosenSaveFile = function (postfix, fileid, filename, callback, formtitle, extendtype) {
  344. if (!U.MD.U.L.isLogin()) {//是否登录
  345. extendtype = extendtype || "folder"; //默认只显示文件夹
  346. var _diskinfo = US.disk.Disks[US.userInfo.userid]; //获取当前登录用户的网盘信息
  347. var _formel = $('#U_MD_DK_VW_ChosenSaveFile')[0]; //获取窗体元素
  348. var _file; //定义变量
  349. if (_formel) { //判断窗体是否存在
  350. //存在则居中显示
  351. U.UF.F.windowTopCenter(_formel);
  352. //获取文件区域
  353. _file = $('#U_MD_DK_VW_ChosenSaveFile_File')[0];
  354. _file.innerHTML = "";
  355. }
  356. else {
  357. var _box = $$('div', { style: { position: "relative", overflow: "hidden" }, "className": "U_MD_DK_VW_ChosenSaveFile" }); //创建文件区域容器
  358. var _newfolder = $$('button', { style: { position: "absolute", right: "0", top: "2px" }, innerHTML: "新建文件夹" }, _box); //创建新建文件夹按钮
  359. $$("div", { style: { "font-size": "16px", padding: "12px 10px 2px" }, innerHTML: "选择文件夹" }, _box); //创建标题
  360. $$("hr", {}, _box); //创建分割线
  361. _file = $$("div", { "className": "U_MD_DK_VW_ChosenSaveFile_File", id: "U_MD_DK_VW_ChosenSaveFile_File" }, _box); //创建文件区域
  362. var _inputarea = $$('div', {}, _box); //创建填写文件名区域
  363. $$('span', { 'innerHTML': '文件名:' }, _inputarea); //标题
  364. var _input = $$('input', { placeholder: filename || "请输入文件名...", style: { width: "89%", "text-indent": "5px", "line-height": "26px"} }, _inputarea); //文件名输入框
  365. var _ensure = $$('button', { innerHTML: "确定" }, _box); //确定按钮
  366. var _cancel = $$('button', { innerHTML: "取消" }, _box); //取消按钮
  367. //创建窗体
  368. _formel = new U.UF.UI.form(
  369. "<span id='U_MD_DK_VW_ChosenSaveFile_Title'>" + (formtitle || "新建文件") + "</span>",
  370. _box, {
  371. "id": "U_MD_DK_VW_ChosenSaveFile",
  372. "style": {
  373. "width": "600px",
  374. "height": "450px"
  375. }
  376. }).form;
  377. //绑定新建文件夹事件
  378. _newfolder.onclick = function () {
  379. U.MD.DK.VW.chosenSaveFile.newFolder();
  380. }
  381. //绑定确定按钮事件
  382. _ensure.onclick = function () {
  383. U.MD.DK.VW.chosenSaveFile.ensure(_formel, _input, postfix, fileid, callback);
  384. }
  385. //取消函数
  386. _cancel.onclick = function () {
  387. U.UF.F.windowMinimize(_formel);
  388. }
  389. }
  390. //默认创建初始化目录
  391. U.MD.DK.VW.chosenSaveFile.printFolder(_diskinfo.directoryOrFiles.slice(1, 8), _file, 0, ["U_MD_DK_LCD", "U_MD_DK_LCS", "U_MD_DK_LCD", "U_MD_DK_LCB", "U_MD_DK_LCF", "U_MD_DK_LCP", "U_MD_DK_LCT", "U_MD_DK_LCY"], _file, extendtype);
  392. }
  393. }
  394. /**
  395. * 答应文件夹函数
  396. * @param data {array} 数据源
  397. * @param filearea {Element} 创建文件位置
  398. * @param deviant {int} 偏移值
  399. * @param iconclass {array} 文件图标class
  400. * @param extendtype {string} 显示的文件属性
  401. **/
  402. U.MD.DK.VW.chosenSaveFile.printFolder = function (data, filearea, deviant, iconclass, topfilearea, extendtype) {
  403. extendtype = extendtype || "folder";
  404. var i, //定义循环变量
  405. _class; //定义样式记录属性
  406. for (i = 0; i < data.length; i++) { //循环答应
  407. _class = null;
  408. if (extendtype == "*" || extendtype.indexOf(extendtype) > -1) { //判断文件类型为文件夹才打印
  409. if ((iconclass || "").length) { //判断文件图片class是否有传入
  410. _class = iconclass[i] || iconclass; //设置样式名
  411. } else if (data[i].UserDirectoryExtendType == extendtype || extendtype == "*") { //判断其能否显示,是不是想要的文件类型
  412. switch (data[i].UserDirectoryExtendType) {
  413. case "folder":
  414. _class = "U_MD_DK_LCW"; //设置默样式名
  415. break;
  416. case "UW": case "txt": case "html": case "uw":
  417. _class = "U_MD_DK_LCB";
  418. break;
  419. case "jpg": case "png":
  420. _class = "U_MD_DK_LCT";
  421. break;
  422. case "mp4":
  423. _class = "U_MD_DK_LCP";
  424. break;
  425. }
  426. }
  427. if (_class) { //判断其是否有样式,没有就不打印
  428. U.MD.DK.VW.chosenSaveFile.Print(data[i], filearea, deviant, _class, topfilearea, extendtype); //调用单个打印函数
  429. }
  430. }
  431. }
  432. }
  433. /**
  434. * 打印文件夹函数
  435. * @param data {object} 数据源
  436. * @param filearea {Element} 创建文件位置
  437. * @param deviant {int} 偏移值
  438. * @param iconclass {string} 文件图标class
  439. * @param extendtype {string} 显示的文件属性
  440. **/
  441. U.MD.DK.VW.chosenSaveFile.Print = function (data, filearea, deviant, iconclass, topfilearea, extendtype) {
  442. var _filediv, _fileel, _folder; //设置变量
  443. _folder = false; //
  444. if (data.UserDirectoryExtendType == "folder") {//判断文件是否是文件夹
  445. _folder = true;
  446. };
  447. _filediv = $$('div', { "className": "U_MD_DK_VW_ChosenSaveFile_File_Box" }, filearea); //创建单个文件区域
  448. _fileel = $$('div', {
  449. id: data["UserDirectoryID"] ? "CS" + data["UserDirectoryID"] : "",
  450. "className": "U_MD_DK_LTXOS",
  451. style: { 'padding-left': deviant + 'px' },
  452. onclick: U.UF.C.closure(function (directoryinfo, el) { //设置点击事件
  453. var _thisdate = data;
  454. var _thisfolder = _folder;
  455. U.UF.EV.stopBubble();
  456. if (_thisfolder) {//判断点击的是否是文件夹
  457. //如果是文件夹,就打开文件夹
  458. U.MD.DK.VW.chosenSaveFile.forderClick(directoryinfo, el, topfilearea, extendtype);
  459. //并且在选择该文件夹
  460. if ($('.U_MD_DK_VW_ChosenSaveFileName')[0]) {
  461. $('.U_MD_DK_VW_ChosenSaveFileName')[0].value = data.UserallDirectoryName;
  462. $('.U_MD_DK_VW_ChosenSaveFileName')[0].data = data;
  463. }
  464. } else {
  465. //不是文件夹就选择该文件
  466. if ($('.U_MD_DK_VW_ChosenSaveFileName')[0]) {
  467. $('.U_MD_DK_VW_ChosenSaveFileName')[0].value = data.UserallDirectoryName;
  468. $('.U_MD_DK_VW_ChosenSaveFileName')[0].data = data;
  469. }
  470. }
  471. }, [data, _filediv])
  472. }, _filediv); //创建文件
  473. if (_folder) {
  474. $$('div', { className: "U_MD_DK_LTXOSI U_MD_DK_Img" }, _fileel); //创建文件角标
  475. } else {
  476. $$('div', { className: "U_MD_DK_LTXOSI" }, _fileel); //不创建文件角标
  477. }
  478. $$('div', { className: "U_MD_DK_LCOI U_MD_DK_LTXOST U_MD_DK_Img " + iconclass }, _fileel); //创建文件icon
  479. $$('span', { innerHTML: data.UserallDirectoryName }, _fileel); //创建文件名
  480. return _filediv; //返回创建的文件元素
  481. }
  482. /**
  483. * 文件夹展开关闭函数
  484. * @param directoryinfo {object} 文件夹信息
  485. * @param el {Element} 文件位置
  486. * @param extendtype {string} 显示的文件属性
  487. **/
  488. U.MD.DK.VW.chosenSaveFile.forderClick = function (directoryinfo, el, topfilearea, extendtype) {
  489. var //_filearea = $('.U_MD_DK_VW_ChosenSaveFile_File')[0], //获取文件区域
  490. _folder = $(el).Child()[0], //获取每个文件
  491. _deviant = parseInt(_folder.style.paddingLeft || 0) + 5; //计算偏移值
  492. var _icon = $('.U_MD_DK_LTXOSI', _folder); //获取角标
  493. $('.U_MD_DK_LTXOSO', topfilearea).removeClass('U_MD_DK_LTXOSO'); //清楚上一个选择的文件背景
  494. $(_folder).addClass('U_MD_DK_LTXOSO'); //设置当前文件背景为选中
  495. if (_icon.hasClass('U_MD_DK_LTXOSIO')) { //判断文件是否展开
  496. //已展开
  497. _icon.removeClass('U_MD_DK_LTXOSIO'); //清楚展开角标样式
  498. var _nextlevel = $(_folder).next(); //判断是否加载了子文件夹
  499. $(_nextlevel).remove(); //删除子文件夹
  500. } else {
  501. //未展开
  502. _icon.addClass('U_MD_DK_LTXOSIO'); //添加角标打开class
  503. if (directoryinfo.Child) { //判断是否已获取子文件数据
  504. //已获取
  505. U.MD.DK.VW.chosenSaveFile.printFolder(directoryinfo.Child, $$('div', {}, el), _deviant, null, null, extendtype); //打印子级文件夹
  506. } else {
  507. //未获取则去数据库获取
  508. U.MD.DK.LE.getChildsByDirectoryId(US.userInfo.userid, directoryinfo, topfilearea, function () {
  509. //打印文件夹
  510. U.MD.DK.VW.chosenSaveFile.printFolder(directoryinfo.Child, $$('div', {}, el), _deviant, null, null, extendtype);
  511. });
  512. }
  513. }
  514. }
  515. /**
  516. * 确定按钮函数
  517. * @param formel {object} 文件夹信息
  518. * @param input {Element} 文件名输入框
  519. * @param postfix {string} 文件后缀名
  520. * @param callback {function} 回调函数
  521. **/
  522. U.MD.DK.VW.chosenSaveFile.ensure = function (formel, input, postfix, fileid, callback) {
  523. var _name = input.value; //获取文件名
  524. if (_name.trim() == "") { //判断是否为空
  525. return U.Alert('请填写文件名!');
  526. }
  527. //判断文件名是否符合规范
  528. if (U.UF.S.ZWFileName.test(_name)) {
  529. var _nowfile = $('.U_MD_DK_LTXOSO', formel)[0]; //获取当前选择的文件夹
  530. if (!_nowfile) { //如果获取不到则为未选择
  531. U.Alert('请选择文件夹新建的目录!'); //提示未选择文件
  532. } else {
  533. var _parentid = _nowfile.id.replace('CS', ''); //获取文件目录ID
  534. var _userid = US.userInfo.userid; //获取用户ID
  535. var _diskinfo = US.disk.Disks[_userid]; //获取用户网盘信息
  536. var _dirinfo = U.Json.select(_diskinfo.directoryOrFiles, { UserDirectoryID: _parentid })[0]; //获取文件夹信息
  537. if (!U.MD.DK.C.getDirectoryPermissions(_dirinfo.UserDirectoryID, _diskinfo).isnew) {
  538. return U.Alert('无权限访问此工作表!'); //提示未选择文件
  539. }
  540. //获取粘贴到制定目录的群id
  541. _ancestors = U.MD.DK.C.getAncestors(_dirinfo, _diskinfo); //获取所有的祖先
  542. //如果是ftp目录,那么groupid就是用户id
  543. if (_ancestors[0].UserDirectoryID == US.FTPFOLDERID) {
  544. _groupid = _diskinfo.userInfo.UserId;
  545. }
  546. //否则就是对应的群id,如果不存在那么就是""
  547. else {
  548. _groupid = _ancestors[0].GroupID || "";
  549. }
  550. var _newfileid = fileid || Guid.newGuid();
  551. //去数据库添加文件
  552. U.A.Request(US.AUTH, ["CreateFile", _userid, _newfileid, _parentid, _name, "", "", "", postfix, _groupid], function (r) {
  553. //创建文件
  554. var _fileinfo = new U.MD.DK.M.entity(_newfileid, 0, _parentid, _name, _name, postfix, "", U.UF.D.toTimeStamp(), "", "9999", null, "", 1, "", _groupid, "", _userid, US.userInfo.UserNickName, US.userInfo.UserName, US.userInfo.UserThumbnailImageHead)
  555. U.MD.DK.RE.addFileOrFolder([_fileinfo], _diskinfo, _dirinfo); //添加到页面上中
  556. U.UF.F.windowMinimize(formel);
  557. //如果存在就执行
  558. if (U.UF.C.isFunction(callback)) {//判断是否有点击事件的方法,如果有,运行它
  559. callback(_fileinfo);
  560. }
  561. }, []);
  562. }
  563. } else {
  564. //不符合规范
  565. U.Alert('请填写文件名符合规范!');
  566. }
  567. }
  568. /**
  569. * 新建文件夹函数
  570. *
  571. **/
  572. U.MD.DK.VW.chosenSaveFile.newFolder = function () {
  573. var _nowfile = $('.U_MD_DK_VW_ChosenSaveFile_File .U_MD_DK_LTXOSO')[0]; //获取当前选择的文件夹
  574. if (!_nowfile) { //如果获取不到则为未选择
  575. return U.Alert('请选择文件夹新建的目录!'); //提示未选择文件
  576. }
  577. var _userid = US.userInfo.userid; //获取用户ID
  578. var _parentid = _nowfile.id.replace('CS', ''); //获取文件目录ID
  579. var _diskinfo = US.disk.Disks[_userid]; //获取用户网盘信息
  580. if (_diskinfo.directoryOrFiles[0].UserDirectoryID == _parentid || _diskinfo.directoryOrFiles[1].UserDirectoryID == _parentid || _diskinfo.directoryOrFiles[2].UserDirectoryID == _parentid) {//新建文件权限
  581. U.Alert('该目录下无法新建文件夹,请重新选择目录!');
  582. } else {
  583. //创建新建文件名输入框
  584. var _input = $$('input', { placeholder: "请输入文件夹名字...", style: { width: '180px', height: "25px", margin: "30px auto", display: "block", "text-indent": "5px"} });
  585. //创建提示框
  586. U.UF.UI.confirm(_input, function () {
  587. //确定函数
  588. var _name = _input.value; //获取输入文件夹名字
  589. if (U.UF.S.ZWFileName.test(_name)) { //判断文件名是否符合规范
  590. var _dirinfo = U.Json.select(_diskinfo.directoryOrFiles, { UserDirectoryID: _parentid })[0]; //获取文件夹信息
  591. //获取粘贴到制定目录的群id
  592. _ancestors = U.MD.DK.C.getAncestors(_dirinfo, _diskinfo); //获取所有的祖先
  593. //如果是ftp目录,那么groupid就是用户id
  594. if (_ancestors[_ancestors.length - 1].UserDirectoryID == US.FTPFOLDERID) {
  595. _groupid = _diskinfo.userInfo.UserId;
  596. }
  597. //否则就是对应的群id,如果不存在那么就是""
  598. else {
  599. _groupid = _ancestors[_ancestors.length - 1].GroupID || "";
  600. }
  601. var _newfolderid = Guid.newGuid(); //随机生成文件夹ID
  602. //填写文件名符合规范 将文件夹以及文件夹名字保存到数据库
  603. U.A.Request(US.AUTH, ["CreateDirectory", _userid, _newfolderid, _dirinfo.UserDirectoryDeep + 1, _name, _parentid, "", _groupid, ""], //保存到数据库
  604. function (r) {
  605. //异步回调函数
  606. var _nextlevel = $(_nowfile).next()[0] || $$('div', {}, $(_nowfile).Parent()); //获取或选择自己文件夹创建位置
  607. var _fileinfo = new U.MD.DK.M.entity(_newfolderid, 0, _parentid, _name, _name, "folder", "", U.UF.D.toTimeStamp(), "", _dirinfo.UserDirectoryDeep + 1,
  608. null, "", 0, "", _groupid, "", _userid, US.userInfo.UserNickName, US.userInfo.UserName, US.userInfo.UserThumbnailImageHead); //创建本地文件信息
  609. U.MD.DK.RE.addFileOrFolder([_fileinfo], _diskinfo, _dirinfo); //添加到页面上中
  610. _filediv = U.MD.DK.VW.chosenSaveFile.Print(_fileinfo, _nextlevel, parseInt(_nowfile.style.paddingLeft || 0) + 6, "U_MD_DK_LCW"); //打印新建文件夹
  611. _nextlevel.insertBefore(_filediv, $(_nextlevel).Child()[0]); //在最前方插入
  612. });
  613. } else {
  614. //提示文件名不符合规范
  615. U.Alert('请填写文件名符合规范!');
  616. return false;
  617. }
  618. });
  619. }
  620. }
  621. //#endregion
  622. //#region 保存到指定协同群窗口
  623. /**
  624. * 保存到指定协同群窗口
  625. *
  626. * @param postfix {string} 文件后缀 文件类型
  627. * @param fileinfo {object} 文件信息
  628. * @param filename {string} 文件名
  629. * @param type {string} 操作类型 move 移动 new 新建
  630. * @param callback {function} 回调函数
  631. *
  632. **/
  633. U.MD.DK.VW.saveSynergy = function (postfix, fileinfo, filename, type, callback) {
  634. if (!U.MD.U.L.isLogin()) {//是否登录
  635. var _grouplistarr = US.disk.Disks[US.userInfo.userid]; //获取当前登录用户的网盘信息
  636. var _formel = $('#U_MD_O_SaveSynergy')[0]; //获取窗体元素
  637. var _grouplist; //定义变量
  638. if (_formel) { //判断窗体是否存在
  639. //存在则居中显示
  640. U.UF.F.windowTopCenter(_formel);
  641. //获取文件区域
  642. _grouplist = $('#U_MD_O_SaveSynergy_GroupList')[0];
  643. _grouplist.innerHTML = "";
  644. }
  645. else {
  646. var _box = $$('div', { style: { position: "relative", overflow: "hidden" }, "className": "U_MD_DK_VW_ChosenSaveFile" }); //创建文件区域容器
  647. var _creategroup = $$('button', { style: { position: "absolute", right: "0", top: "2px" }, innerHTML: "新建群", id: "U_MD_O_SaveSynergy_CreateGroup", onclick: 'U.MD.DK.VW.saveSynergy.swith()' }, _box); //创建新建文件夹按钮
  648. $$("div", { style: { "font-size": "16px", padding: "12px 10px 2px" }, innerHTML: "群列表" }, _box); //创建标题
  649. $$("hr", {}, _box); //创建分割线
  650. var _newgroup = $$("div", { "className": "U_MD_DK_VW_ChosenSaveFile_File", id: "U_MD_O_SaveSynergy_NewGroup", style: { display: 'none', overflow: 'hidden'} }, _box); //创建文件区域
  651. _grouplist = $$("div", { "className": "U_MD_DK_VW_ChosenSaveFile_File", id: "U_MD_O_SaveSynergy_GroupList" }, _box); //创建文件区域
  652. var _inputarea = $$('div', {}, _box); //创建填写文件名区域
  653. $$('span', { 'innerHTML': '文件名:' }, _inputarea); //标题
  654. var _input = $$('input', {
  655. placeholder: "请输入文件名...",
  656. value: filename == "未命名文档(点击编辑)..." ? "" : filename,
  657. //onfocus: "U.UF.MR.inputPlaceholder(this,'未命名文档(点击编辑)...','')",
  658. //onblur: "U.UF.MR.inputPlaceholder(this,'','未命名文档(点击编辑)...');",
  659. style: { width: "89%", "text-indent": "5px", "line-height": "26px" }
  660. }, _inputarea); //文件名输入框
  661. var _ensure = $$('button', { innerHTML: "确定" }, _box); //确定按钮
  662. var _cancel = $$('button', { innerHTML: "取消" }, _box); //取消按钮
  663. //创建窗体
  664. _formel = new U.UF.UI.form(
  665. "<span id='U_MD_O_SaveSynergy_Title'>" + (type == 'move' ? "将文档移动到" : "选择保存到") + "指定群</span>",
  666. _box, {
  667. "id": "U_MD_O_SaveSynergy",
  668. "style": {
  669. "width": "600px",
  670. "height": "450px"
  671. }
  672. }).form;
  673. //绑定确定按钮事件
  674. _ensure.onclick = function () {
  675. U.MD.DK.VW.saveSynergy.ensure(_formel, _input, postfix, fileinfo, type, callback);
  676. }
  677. //取消函数
  678. _cancel.onclick = function () {
  679. U.UF.F.windowMinimize(_formel);
  680. }
  681. }
  682. //打印文件
  683. U.MD.DK.VW.chosenSaveFile.printFolder(_grouplistarr.directoryOrFiles.slice(1, 3), _grouplist, 0, ["U_MD_DK_LCD", "U_MD_DK_LCS"]);
  684. //默认切换 选择群状态
  685. U.MD.DK.VW.saveSynergy.swith(true);
  686. }
  687. };
  688. /**
  689. * 保存到指定协同群窗口 确定函数
  690. *
  691. * @param formel {element} 窗体元素
  692. * @param input {element} 文件名输入框
  693. * @param postfix {string} 文件后缀 文件类型
  694. * @param fileinfo {object} 文件信息
  695. * @param type {string} 操作类型 move 移动 new 新建
  696. * @param callback {function} 回调函数
  697. *
  698. **/
  699. U.MD.DK.VW.saveSynergy.ensure = function (formel, input, postfix, fileinfo, type, callback) {
  700. var _name = input.value; //获取文件名
  701. if (_name.trim() == "") { //判断是否为空
  702. return U.Alert('请填写文件名!');
  703. }
  704. //判断文件名是否符合规范
  705. if (U.UF.S.ZWFileName.test(_name)) {
  706. var _dirinfo;
  707. var _userid = US.userInfo.userid; //获取用户ID
  708. var _diskinfo = US.disk.Disks[_userid]; //获取用户网盘信息
  709. if ($('#U_MD_O_SaveSynergy_GroupList').css('display') == 'none') {
  710. var _groupName = '协同文档群--' + new Date().getHours() + ":" + new Date().getMinutes(), //默认群名/也是文档名
  711. _groupDesc = "由" + US.userInfo.UserName + "发起的互联办公群组。";
  712. U.MD.F.J.determineCreateGroupAndAddGroupUser(false, null, null, false, _groupName, _groupDesc, function (groupid) {
  713. _dirinfo = U.Json.select(_diskinfo.directoryOrFiles, { UserDirectoryID: groupid })[0]; //获取文件夹信息
  714. U.MD.DK.VW.saveSynergy.ensure.operate(formel, _dirinfo, fileinfo, groupid, groupid, type, postfix, _name, callback);
  715. });
  716. } else {
  717. var _groupid, _parentid;
  718. var _nowfile = $('.U_MD_DK_LTXOSO', formel)[0]; //获取当前选择的文件夹
  719. _parentid = _nowfile.id.replace('CS', ''); //获取文件目录ID
  720. _dirinfo = U.Json.select(_diskinfo.directoryOrFiles, { UserDirectoryID: _parentid })[0]; //获取文件夹信息
  721. if (!U.MD.DK.C.getDirectoryPermissions(_dirinfo.UserDirectoryID, _diskinfo).isnew) {
  722. return U.Alert('无权限访问此工作表!'); //提示未选择文件
  723. }
  724. //获取粘贴到制定目录的群id
  725. _ancestors = U.MD.DK.C.getAncestors(_dirinfo, _diskinfo); //获取所有的祖先
  726. //如果是ftp目录,那么groupid就是用户id
  727. if (_ancestors[0].UserDirectoryID == US.FTPFOLDERID) {
  728. _groupid = _diskinfo.userInfo.UserId;
  729. }
  730. //否则就是对应的群id,如果不存在那么就是""
  731. else {
  732. _groupid = _ancestors[0].GroupID || "";
  733. }
  734. U.MD.DK.VW.saveSynergy.ensure.operate(formel, _dirinfo, fileinfo, _parentid, _groupid, type, postfix, _name, callback);
  735. }
  736. } else {
  737. U.Alert('请填写文件名符合规范!');
  738. }
  739. }
  740. /**
  741. * 执行对应操作函数
  742. *
  743. * @param formel {element} 窗体元素
  744. * @param dirinfo {object} 文件夹信息
  745. * @param fileinfo {object} 文件信息
  746. * @param parentid {string} 文件目录ID
  747. * @param groupid {string} 群ID
  748. * @param type {string} 操作类型 move 移动 new 新建
  749. * @param postfix {string} 文件后缀 文件类型
  750. * @param name {string} 文件名
  751. * @param callback {function} 回调函数
  752. *
  753. **/
  754. U.MD.DK.VW.saveSynergy.ensure.operate = function (formel, dirinfo, fileinfo, parentid, groupid, type, postfix, name, callback) {
  755. var _fileid = fileinfo.UserDirectoryID;
  756. var _userid = US.userInfo.userid; //获取用户ID
  757. var _diskinfo = US.disk.Disks[_userid]; //获取用户网盘信息
  758. if (type == "move") {
  759. var _pastecontent = US.disk.Disks[_userid].pasteDirOrFile = {
  760. "type": "shear", //复制或者剪切 "copy" || "shear"
  761. "UserDirectoryID": groupid, //在哪个目录复制或者剪切
  762. "dirorfile": fileinfo, //复制的内容
  763. "userid": _userid //用户id
  764. }
  765. U.A.Request(US.AUTH, ["CutAndPasteFiles", fileinfo.UserId, groupid, fileinfo.UserDirectoryID, groupid, groupid],
  766. top.U.MD.DK.RE.asynPaste, ["", dirinfo, groupid, _pastecontent, _diskinfo]);
  767. U.A.Request(US.AUTH, ["UpdateFileInfo", _fileid, name], function () {
  768. fileinfo.UserallDirectoryName = name; //文件全写的名字
  769. fileinfo.UserDirectoryName = name.addEllipsis(20); //文件的缩略名
  770. fileinfo.GroupId = fileinfo.UserDirectoryEncrypt = groupid;
  771. //如果存在就执行
  772. if (U.UF.C.isFunction(callback)) {//判断是否有点击事件的方法,如果有,运行它
  773. callback(fileinfo);
  774. }
  775. U.UF.F.windowMinimize(formel);
  776. });
  777. } else {
  778. //去数据库添加文件
  779. U.A.Request(US.AUTH, ["CreateFile", _userid, _fileid, parentid, name, "", "", "", postfix, groupid], function (r) {
  780. //创建文件
  781. var _fileinfo = new U.MD.DK.M.entity(_fileid, 0, parentid, name, name, postfix, "", U.UF.D.toTimeStamp(), "", "9999", null, "", 1, "", groupid, "", _userid, US.userInfo.UserNickName, US.userInfo.UserName, US.userInfo.UserThumbnailImageHead)
  782. U.MD.DK.RE.addFileOrFolder([_fileinfo], _diskinfo, dirinfo); //添加到页面上中
  783. U.UF.F.windowMinimize(formel);
  784. //如果存在就执行
  785. if (U.UF.C.isFunction(callback)) {//判断是否有点击事件的方法,如果有,运行它
  786. callback(_fileinfo);
  787. }
  788. U.UF.F.windowMinimize(formel);
  789. }, []);
  790. }
  791. }
  792. /**
  793. * 选择群、新建群方式切换
  794. *
  795. * @param init {boole} 是否为默认状态 选择群状态
  796. *
  797. **/
  798. U.MD.DK.VW.saveSynergy.swith = function (init) {
  799. var _newgroup = $('#U_MD_O_SaveSynergy_NewGroup'); //新建群元素
  800. var _grouplist = $('#U_MD_O_SaveSynergy_GroupList'); //群列表
  801. var _creategroup = $('#U_MD_O_SaveSynergy_CreateGroup'); //按钮
  802. if (_newgroup.css('display') == 'none' && !init) { //是否为新建群状态
  803. _newgroup.css('display', 'block'); //新建群元素显示
  804. _grouplist.css('display', 'none'); //选择群元素影藏
  805. _creategroup[0].innerHTML = "返回群列表"; //修改按钮提示字
  806. _creategroup[0].nextElementSibling.innerHTML = "选择联系人"; //修改标题
  807. if (_newgroup.Child().length == 0) { //判断初始化窗体是否打印
  808. U.MD.DK.VW.saveSynergy.createGroupInit(); //未打印则执行打印
  809. }
  810. U.MD.DK.VW.saveSynergy.Friends(); //打印可选好友
  811. } else {
  812. _newgroup.css('display', 'none'); //新建群元素显隐藏
  813. _grouplist.css('display', 'block'); //选择群元素显示
  814. _creategroup[0].innerHTML = "新建群"; //修改按钮提示字
  815. _creategroup[0].nextElementSibling.innerHTML = "群列表"; //修改标题
  816. }
  817. }
  818. /**
  819. * 新建群区域初始化
  820. *
  821. **/
  822. U.MD.DK.VW.saveSynergy.createGroupInit = function () {
  823. var _newgroup = $('#U_MD_O_SaveSynergy_NewGroup')[0];
  824. var _left = $$('div', { style: { borderRight: "1px solid #ccc", position: "relative"} }, _newgroup);
  825. var _right = $$('div', { style: { overflow: "hidden"} }, _newgroup);
  826. var _count = $$('div', { style: { lineHeight: '30px' }, innerHTML: '已选择联系人:<span>1</span>' }, _right);
  827. var _select = $$('div', { id: "U_MD_O_SaveSynergy_NewGroup_Select", style: { height: '265px', overflow: 'auto'} }, _right);
  828. var _box = $$('div', { "className": 'U_MD_O_SaveSynergy_NewGroup_Friend', style: { paddingLeft: '5px'} }, _select);
  829. $$('img', { src: U.MD.C.getHeadImage(US.userInfo.UserThumbnailImageHead) }, _box);
  830. $$('span', { innerHTML: US.userInfo.UserNickName || US.userInfo.UserName }, _box);
  831. }
  832. /**
  833. * 打印好友列表
  834. *
  835. **/
  836. U.MD.DK.VW.saveSynergy.Friends = function () {
  837. var i, _box, //定义变量
  838. _friends = US.friend.friends; //好友列表
  839. var _child = $('#U_MD_O_SaveSynergy_NewGroup').Child(); //获取新建群区域的子级
  840. var _friendel = _child[0]; //获取好友列表区域
  841. var _countel = $('span', $(_child[1]).Child()[0])[0]; //获取选择计数元素
  842. var _selectel = $("#U_MD_O_SaveSynergy_NewGroup_Select"); //获取选中好友列表
  843. _friendel.innerHTML = ""; //清空好友列表
  844. _countel.innerHTML = "1"; //设置默认选择人数为1 默认选择自己
  845. U.MD.F.J.selectUserInfo.NeedUser = []; //清空选中全局
  846. var _oldfriend = _selectel.Child(); //获取遗留选中好友
  847. //清除遗留选中好友
  848. for (i = 1; i < _oldfriend.length; i++) {
  849. $(_oldfriend[i]).remove();
  850. }
  851. //如果存在好友
  852. if (_friends.length > 0) {
  853. //循环打印好友
  854. for (i = 0; i < _friends.length; i++) {
  855. //创建好友盒子
  856. var _box = $$('div', { "className": 'U_MD_O_SaveSynergy_NewGroup_Friend', onclick: U.UF.C.closure(function (friendinfo) {
  857. U.MD.DK.VW.saveSynergy.Friends.Select(friendinfo, _selectel[0], _countel);
  858. }, [_friends[i]]), friendid: _friends[i].FriendsID
  859. }, _friendel);
  860. //创建头像
  861. $$('img', { src: U.MD.C.getHeadImage(_friends[i].UserThumbnailImageHead) }, _box);
  862. //创建用户名
  863. $$('span', { innerHTML: _friends[i].UserNickName || _friends[i].UserName }, _box);
  864. }
  865. }
  866. //如果不存在好友
  867. else {
  868. //创建提示字
  869. $$('p', { style: { cssText: "font-weight: bold; font-size: 14px;padding-left:60px;padding-top:60px;" },
  870. innerHTML: '您暂无添加好友,</br> 快去<span style="cursor:pointer;color:rgb(41, 103, 167);" onclick="U.MD.F.S.popSearchFriendsOrGroupForm();">添加你的好友</span>吧。 </br>'
  871. }, _friendel);
  872. //创建刷新按钮
  873. $$('span', { innerHTML: "已添加完好友点击刷新好友列表", onclick: function () {
  874. U.UF.DL.loading(_friendel);
  875. setTimeout(function () { U.MD.DK.VW.saveSynergy.Friends(); U.UF.DL.uploading(_friendel); }, 300);
  876. }, style: { color: "red", cursor: "pointer", position: "absolute", bottom: "0px", fontSize: "12px" }
  877. }, _friendel);
  878. }
  879. }
  880. /**
  881. * 选择好友操作
  882. *
  883. * @param friendinfo {object} 好友信息
  884. * @param selectel {element} 选中好友列表区域
  885. * @param countel {element} 计数元素
  886. *
  887. **/
  888. U.MD.DK.VW.saveSynergy.Friends.Select = function (friendinfo, selectel, countel) {
  889. var i, //定义变量
  890. _isselect = U.Json.select(U.MD.F.J.selectUserInfo.NeedUser, { UserId: friendinfo.UserId })[0]; //判断是否已选中
  891. if (!_isselect) { //如果未选中
  892. countel.innerHTML = parseInt(countel.innerHTML) + 1; //计数+1
  893. U.MD.F.J.selectUserInfo.NeedUser.push(friendinfo); //加入选中好友全局
  894. //打印选择好友
  895. var _box = $$('div', { "className": 'U_MD_O_SaveSynergy_NewGroup_Friend', style: { paddingLeft: '5px' }, onclick: function () {
  896. $(this).remove();
  897. U.Json.del(U.MD.F.J.selectUserInfo.NeedUser, { "UserId": friendinfo.UserId });
  898. countel.innerHTML = parseInt(countel.innerHTML) - 1;
  899. }
  900. }, selectel);
  901. //打印头像
  902. $$('img', { src: U.MD.C.getHeadImage(friendinfo.UserThumbnailImageHead) }, _box);
  903. //打印姓名
  904. $$('span', { innerHTML: friendinfo.UserNickName || friendinfo.UserName }, _box);
  905. }
  906. }
  907. /*
  908. U.MD.DK.VW.choseFile
  909. 参数一:选择文件
  910. 参数二: 显示文件类型
  911. */
  912. U.MD.DK.VW.choseFile = function (cb, type) {
  913. var _diskinfo = US.disk.Disks[US.userInfo.userid]; //获取当前登录用户的网盘信息
  914. var _formel = $('#U_MD_DK_VW_ChosenSaveFile')[0]; //获取窗体元素
  915. var _file; //定义变量
  916. type = type ? type : "*"; //默认为全部
  917. if (_formel) { //判断窗体是否存在
  918. //存在则居中显示
  919. U.UF.F.windowTopCenter(_formel);
  920. //获取文件区域
  921. _file = $('#U_MD_DK_VW_ChosenSaveFile_File')[0];
  922. _file.innerHTML = "";
  923. }
  924. else {
  925. var _box = $$('div', { style: { position: "relative", overflow: "hidden" }, "className": "U_MD_DK_VW_ChosenSaveFile" }); //创建文件区域容器
  926. var _newfolder = $$('button', { style: { position: "absolute", right: "0", top: "2px" }, innerHTML: "新建文件夹" }, _box); //创建新建文件夹按钮
  927. $$("div", { style: { "font-size": "16px", padding: "12px 10px 2px" }, innerHTML: "文件名称" }, _box); //创建标题
  928. $$("hr", {}, _box); //创建分割线
  929. _file = $$("div", { "className": "U_MD_DK_VW_ChosenSaveFile_File", id: "U_MD_DK_VW_ChosenSaveFile_File" }, _box); //创建文件区域
  930. var _inputarea = $$('div', {}, _box); //创建填写文件名区域
  931. $$('span', { 'innerHTML': '文件名:' }, _inputarea); //标题
  932. var _input = $$('input', { "className": "U_MD_DK_VW_ChosenSaveFileName", placeholder: "请输入文件名...", style: { width: "89%", "text-indent": "5px", "line-height": "26px"} }, _inputarea); //文件名输入框
  933. var _ensure = $$('button', { innerHTML: "确定" }, _box); //确定按钮
  934. var _cancel = $$('button', { innerHTML: "取消" }, _box); //取消按钮
  935. //创建窗体
  936. _formel = new U.UF.UI.form(
  937. "<span id='U_MD_DK_VW_ChosenSaveFile_Title'>选择文件</span>",
  938. _box, {
  939. "id": "U_MD_DK_VW_ChosenSaveFile",
  940. "style": {
  941. "width": "600px",
  942. "height": "450px"
  943. }
  944. }).form;
  945. //绑定新建文件夹事件
  946. _newfolder.onclick = function () {
  947. U.MD.DK.VW.chosenSaveFile.newFolder();
  948. }
  949. //绑定确定按钮事件
  950. _ensure.onclick = function () {
  951. cb($('.U_MD_DK_VW_ChosenSaveFileName')[0].data); //回调
  952. U.UF.F.windowMinimize(_formel); //隐藏弹框
  953. _input.value = ""; //清空显示
  954. _input.data = null; //清空数据
  955. }
  956. //取消函数
  957. _cancel.onclick = function () {
  958. U.UF.F.windowMinimize(_formel);
  959. }
  960. }
  961. //默认创建初始化目录
  962. U.MD.DK.VW.chosenSaveFile.printFolder(_diskinfo.directoryOrFiles.slice(1, 8), _file, 0, ["U_MD_DK_LCD", "U_MD_DK_LCS", "U_MD_DK_LCD", "U_MD_DK_LCB", "U_MD_DK_LCF", "U_MD_DK_LCP", "U_MD_DK_LCT", "U_MD_DK_LCY"], _file, type);
  963. }
  964. //#endregion