RightClick.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. 
  2. Namespace.register("U.MD.F.R"); //好友和群窗口区域命名空间
  3. //#region 右键菜单
  4. /**
  5. * 右键功能 显示[移动至][删除]窗体
  6. * 参数说明 0 当前元素 1 用户信息
  7. * @param {element} 右键好友的区域
  8. * @param {object} 好友信息
  9. */
  10. U.MD.F.R.friendsRightClickMenu = function (el, friendinfo) {
  11. var _friendmenuel = $('#U_MD_F_G_Div')[0], //右键的菜单
  12. _child = $(_friendmenuel).Child(); //子菜单
  13. //显示菜单,定位
  14. $(_friendmenuel).css({ "display": "block", "zIndex": "999" });
  15. U.UF.C.rightClickMenuLocation(_friendmenuel); //右键菜单定位
  16. //按钮功能赋值
  17. _child[0].onclick = function () { U.MD.F.W.popupFriendsForm(friendinfo); }; //发送消息
  18. _child[1].onclick = function () { U.MD.U.V.ViewOtherUserInfo(friendinfo); }; //查看个人资料
  19. _child[2].onmouseover = function () { U.MD.F.R.moveFriendForm(friendinfo, el, _child[2]); }; //移动联系人至
  20. _child[3].onclick = function () { U.MD.F.R.deleteFriendForm(friendinfo); }; //删除
  21. //点击其它区域隐藏右键菜单
  22. $(document).bind("click", function () {
  23. $(_friendmenuel)[0].style.display = "none";
  24. })
  25. }
  26. /**
  27. * 鼠标移动到 联系人移动至制定的好友分组弹框
  28. * @param {object} 好友信息
  29. * @param {element} 右键好友的区域
  30. * @param {element} onmouseover出发的按钮
  31. */
  32. U.MD.F.R.moveFriendForm = function (friendinfo, el, menubootom) {
  33. var i,
  34. _friendclassel = $(menubootom).parentElement().Child()[4], //获取好友分组打印的元素
  35. _friendclassinfo = US.friend.allclass; //获取用户所有的好友分组
  36. _friendclassel.innerText = ""; //清空之前打印的好友分组
  37. //如果有好友分组可以移动的情况
  38. if (_friendclassinfo.length > 1) {
  39. //循环打印好友分组
  40. for (i = 0; i < _friendclassinfo.length; i++) {
  41. //如果是当前用户所在的好友分组不打印,否则都打印
  42. if (_friendclassinfo[i].FriendsGroupID != friendinfo.FriendsGroupID) {
  43. //创建好友分组元素
  44. $$("div", { "class": "U_MD_F_G_Div_Children_A", "innerText": _friendclassinfo[i]["FriendsGroupName"],
  45. "onclick": U.UF.C.closure(function (i) {
  46. U.MD.F.R.assignMoveFriend(friendinfo, _friendclassinfo[i], el);
  47. }, [i])
  48. }, _friendclassel);
  49. }
  50. }
  51. _friendclassel.style.display = "block";
  52. }
  53. }
  54. /**
  55. * 触发移动好友
  56. *
  57. * @param {object} 好友信息
  58. * @param {object} 群信息
  59. * @param {element} 好友元素
  60. */
  61. U.MD.F.R.assignMoveFriend = function (friendinfo, groupinfo, el) {
  62. //只有选择移动了触发
  63. if (friendinfo) {
  64. $('#U_MD_F_G_Div')[0].style.display = "none"; //点击后隐藏右键
  65. $(".U_MD_F_G_Div_Children")[0].style.display = "none"; //隐藏右键后好友分组选择的菜单
  66. //数据库设置移动好友信息
  67. U.A.Request(US.CD, [US.DB, "UseStudio_Friends", "MoveFriendToOtherClass", friendinfo.FriendsID, groupinfo["FriendsGroupID"]],
  68. U.MD.F.R.asynAssignMoveFriend, ["", friendinfo, groupinfo, el]);
  69. U.alert('修改成功');
  70. }
  71. }
  72. /**
  73. * 把相应的好友移动到指定的群组里
  74. */
  75. U.MD.F.R.asynAssignMoveFriend = function (r) {
  76. var _child, //好友分组元素
  77. _context = r.context, //异步传参
  78. _friendinfo = _context[1], //移动好友实体
  79. _groupinfo = _context[2], //好友分组字体
  80. _el = _context[3], //移动的元素
  81. _friendgroupel = $("#g" + _groupinfo.FriendsGroupID)[0], //移动到的好友分组
  82. _previousgroupinfo = U.Json.select(US.friend.allclass, { "FriendsGroupID": _friendinfo.FriendsGroupID })[0], //修改前的好友分组
  83. _friendnum = U.Json.select(US.friend.friends, { "FriendsGroupID": _friendinfo.FriendsGroupID }).length - 1 //好友分组的数量
  84. ;
  85. //设置好友原本所在的分组信息
  86. $(_el).parentElement(2).Child()[0].innerHTML = _previousgroupinfo.FriendsGroupName + "(" + _friendnum + ")"; //移动好友出去后需改数量显示
  87. //好友实体的id变化FriendsGroupID
  88. _friendinfo.FriendsGroupID = _groupinfo.FriendsGroupID;
  89. //判断分组是否显示
  90. if (_friendgroupel) {
  91. _child = $(_friendgroupel).Child();
  92. _friendnum = U.Json.select(US.friend.friends, { "FriendsGroupID": _friendinfo.FriendsGroupID }).length;
  93. _child[0].innerHTML = _groupinfo["FriendsGroupName"] + "(" + _friendnum + ")"; //新好友分组
  94. _child[1].appendChild(_el); //添加移动的元素
  95. }
  96. }
  97. /**
  98. * 鼠标从 联系人移动至 移开
  99. * 隐藏现有的好友分组 Jude
  100. */
  101. U.MD.F.R.moveFriendOver = function (isdisplay, friendgroupmenu, el) {
  102. //判断是否是冒泡上来的,如果是冒泡的则不处理
  103. if (!U.UF.EV.stopBubbleMouseOutOrOver(el)) {
  104. //根据传参设置是否显示隐藏
  105. friendgroupmenu.style.display = isdisplay ? "none" : "block";
  106. }
  107. }
  108. /**
  109. * 弹出移动好友分组
  110. * 参数说明 0 要移动的对象的信息集合 1 右键区域
  111. * @param {element} 点击移动至区域
  112. */
  113. U.MD.F.R.topMoveFriendForm = function (el, friendinfo) {
  114. var _chooseGroupInfon = null;
  115. //未创建
  116. if (!$(".U_MD_F_G_Y_D")[0]) {
  117. var i, //循环
  118. _tempel,
  119. _friendclassel = $$("div", { "className": "U_MD_F_G_Y_D" }), //弹出框内容区域
  120. _friendclassinfo = US.friend.allclass, //好友分组信息
  121. _friendclassform = U.UF.UI.confirm(_friendclassel, function () { U.MD.F.R.assignMoveFriend(friendinfo, _chooseGroupInfon, el) }); //好友分组弹框
  122. $$("div", { "innerText": "选择好友移动至", "className": "U_MD_F_G_Y_DT" }, _friendclassel);
  123. _tempel = $$("div", { "className": "U_MD_F_G_Y_DS" }, _friendclassel);
  124. //循环所有可以移动的分组
  125. for (i = 0; i < _friendclassinfo.length; i++) {
  126. $$("div", { "innerHTML": _friendclassinfo[i].FriendsGroupName,
  127. "className": "U_MD_F_G_Div_Q" + (friendinfo.FriendsGroupID == _friendclassinfo[i].FriendsGroupID ? " U_MD_F_G_Div_QO" : ""),
  128. "onclick": U.UF.C.closure(function (i) {
  129. U.MD.F.R.topMoveFriendFormSwitch(this, friendinfo, _friendclassinfo[i], _friendclassform, el);
  130. _chooseGroupInfon = _friendclassinfo[i];
  131. }, [i])
  132. }, _tempel);
  133. }
  134. //自适应宽度
  135. $($(_friendclassform.content)[0]).Parent().style.height = "100%";
  136. } else {//已经创建
  137. var _formparent = $($($($($($(".U_MD_F_G_Y_D")[0]).Parent()).Parent()).Parent()).Parent()).Parent(); //获取父级窗体元素
  138. if (_formparent.style.display == "none") {
  139. _formparent.style.display = "block";
  140. } else {
  141. _formparent.style.display = "none"
  142. }
  143. }
  144. }
  145. /**
  146. * 右键功能 显示[移动至][删除]窗体
  147. *
  148. * @param {element} 选中变化的元素
  149. * @param {object} 好友信息
  150. * @param {object} 群信息
  151. * @param {array} 对话框
  152. ------------[0] 对话框
  153. * @param {element} 好友元素
  154. */
  155. U.MD.F.R.topMoveFriendFormSwitch = function (groupel, friendinfo, friendclassinfo, friendclassform, el) {
  156. var i, //用于循环
  157. _child = $(el).parentElement().Child(); //获取
  158. _group = $(".U_MD_F_G_Y_DS").Child();
  159. for (i = 0; i < _group.length; i++) {
  160. _group[i].className = $(".U_MD_F_G_Y_DS").Child()[i].className == "U_MD_F_G_Div_Q U_MD_F_G_Div_QO" ? "U_MD_F_G_Div_Q" : "U_MD_F_G_Div_Q";
  161. groupel.className = "U_MD_F_G_Div_Q U_MD_F_G_Div_QO";
  162. }
  163. //设置点击的效果
  164. for (i = 0; i < _child.length; i++) {
  165. _child[i].className = "U_MD_F_H_ZLZOCO" + (el == _child[i] ? " U_MD_F_G_Div_QQ" : "");
  166. }
  167. //设置确定按钮的事件,这里要结合窗体的api
  168. // friendclassform.AddEvent({ Yes: [U.MD.F.R.assignMoveFriend, [friendinfo, friendclassinfo, el]] });
  169. }
  170. //#endregion
  171. //#region 好友分组
  172. /**
  173. * 右键群显示
  174. * @param object 右键元素的信息集合
  175. */
  176. U.MD.F.R.friendClassRightClickMenu = function (friendgroupinfo, el) {
  177. var _el = $('#U_MD_F_G_Qun')[0], //右键的菜单
  178. _child = $(_el).Child(); //子菜单
  179. $(_el).css({ "display": "block", "zIndex": "999" }); //显示右键菜单
  180. U.UF.C.rightClickMenuLocation(_el); //右键菜单定位
  181. //修改分组名字的点击处理
  182. _child[0].onclick = function () { U.MD.F.R.popupUpdateFriendsClassForm(friendgroupinfo, el); };
  183. _child[1].onclick = function () { U.MD.F.R.popupDeleteFriendsClassForm(friendgroupinfo, el); };
  184. $(document).bind("click", function () {
  185. $('#U_MD_F_G_Qun')[0].style.display = "none";
  186. })
  187. }
  188. /**
  189. * 修改分组昵称 弹框
  190. * @param object 分组信息集合
  191. * @param object 当前的el
  192. */
  193. U.MD.F.R.popupUpdateFriendsClassForm = function (friendgroupinfo, el) {
  194. var _tempel,
  195. _temponeel,
  196. _temptwoel;
  197. var _el = $('#U_MD_F_G_Qun')[0]; //右键的菜单
  198. $(_el).css({ "display": "none" }); //显示右键菜单
  199. if (friendgroupinfo) {
  200. //创建好友分组的样式
  201. _tempel = $$("div", { "className": "U_MD_U_L_Box_I U_MD_F_Add_TNL U_MD_F_G" });
  202. _temponeel = $$("div", {}, _tempel)
  203. _temptwoel = $$("input", { "value": friendgroupinfo.FriendsGroupName, "onfocus": function () { U.UF.MR.inputPlaceholder(this, friendgroupinfo.FriendsGroupName, ""); },
  204. "onblur": function () { U.UF.MR.inputPlaceholder(this, "", friendgroupinfo.FriendsGroupName); }
  205. }, _temponeel);
  206. //弹出好友对话框
  207. U.UF.UI.confirm(_tempel, function () { U.MD.F.R.assignUpdateFriendsClass(friendgroupinfo, _temptwoel, el); }); //创建一个对话框
  208. }
  209. else {
  210. U.alert("暂无群信息");
  211. }
  212. }
  213. /**
  214. *
  215. * 参数说明 0 群消息集合 1 更改的分组名称 3对应修改的el
  216. * @param {object} 群信息
  217. * @param {element} 输入框
  218. * @param {object} 对应的el
  219. */
  220. U.MD.F.R.assignUpdateFriendsClass = function (friendgroupinfo, formel, el) {
  221. U.A.Request(US.CD, [US.DB, "UseStudio_Friends", "UpdateClassNameAndDescription", friendgroupinfo["FriendsGroupID"], formel.value, ""],
  222. function () {
  223. $(el)[0].innerText = formel.value;
  224. U.alert("修改成功");
  225. }, []);
  226. U.alert("正在修改中");
  227. }
  228. /*
  229. * 删除好友分组弹框
  230. * @param object 分组信息集合
  231. * @param object 当前的el
  232. */
  233. U.MD.F.R.popupDeleteFriendsClassForm = function (friendgroupinfo, el) {
  234. var _content;
  235. var _el = $('#U_MD_F_G_Qun')[0]; //右键的菜单
  236. $(_el).css({ "display": "none" }); //显示右键菜单
  237. if (friendgroupinfo) {
  238. _content = "是否确定删除(" + friendgroupinfo.FriendsGroupName + ")该分组";
  239. U.UF.UI.confirm(_content, function () { U.MD.F.R.assignDeleteFriendsClass(friendgroupinfo, el); });
  240. }
  241. }
  242. /*
  243. * 确定删除好友分组
  244. * @param object 分组信息集合
  245. * @param object 当前的el
  246. */
  247. U.MD.F.R.assignDeleteFriendsClass = function (friendgroupinfo, el) {
  248. var _friendGroupLength = U.Json.select(US.friend.friends, { "FriendsGroupID": friendgroupinfo.FriendsGroupID }).length;
  249. if (friendgroupinfo.FriendsGroupDescript != "自动创建") {
  250. if (_friendGroupLength == 0) {
  251. U.A.Request(US.CD, [US.DB, "UseStudio_Friends", "DeleteFriendClass", friendgroupinfo.FriendsGroupID],
  252. function () {
  253. $(el).Parent().remove()
  254. U.alert("删除成功");
  255. //在好友数组的全局变量中删除好友分组的信息
  256. for (i = 0; i < US.friend.allclass.length; i++) {
  257. if (US.friend.allclass[i].FriendsGroupID == friendgroupinfo.FriendsGroupID) {
  258. US.friend.allclass.splice(i, 1);
  259. }
  260. }
  261. }, []);
  262. U.alert("正在删除中");
  263. } else {
  264. U.alert(friendgroupinfo.FriendsGroupName + "该分组下有好友,无法删除");
  265. }
  266. } else {
  267. U.alert("自动创建的分组不可删除");
  268. }
  269. }
  270. //#endregion
  271. /**
  272. * 删除确定
  273. * 参数说明 0 要删除的对象ID 1右键的区域
  274. * @param {element} 右键好友的区域
  275. */
  276. U.MD.F.R.deleteFriendForm = function (friendinfo, callback) {
  277. var _el;
  278. //创建删除好友的信息样式
  279. _el = $$("div", { "class": "U_MD_F_G_D" });
  280. $$("div", { "class": "U_MD_F_G_DelSpan", "innerText": "删除后对方将从好友列表中消失,无法进行发送以及接收消息。" }, _el);
  281. //弹出删除好友的框
  282. U.UF.UI.confirm(_el, function () {
  283. U.MD.F.M.deleteFriend(friendinfo);
  284. U.UF.C.isFunction(callback) && callback();
  285. });
  286. }
  287. /**
  288. * 右上角设置
  289. * 参数说明 friendinfo对应的好友信息集合
  290. * @param object 好友信息
  291. *
  292. */
  293. U.MD.F.R.popupRightCornerMenu = function (friendinfo, el) {
  294. var _tempel,
  295. _friendclassinfo,
  296. _isaddfriend,
  297. _menuel = $(el).Child()[0];
  298. //如果菜单存在则删除
  299. if (_menuel) {
  300. $(_menuel).remove();
  301. }
  302. else {
  303. //好友查看
  304. if (friendinfo.UserId) {
  305. _isaddfriend = U.Json.selectOne(US.friend.friends, { "UserId": friendinfo.UserId }); //判断用户是否在好友列表里
  306. //判断用户是否是自己的好友,是的话则操作好友信息
  307. if (_isaddfriend) {
  308. //获取好友分组信息
  309. _friendclassinfo = $($("#g" + _isaddfriend.FriendsGroupID + " div")[1]).find('[tid="' + _isaddfriend["UserId"] + '"]')[0]; //好友分组信息
  310. //创建菜单
  311. _tempel = $$("div", { "class": "U_MD_F_T_B", style: {} }, el);
  312. $$("div",
  313. {
  314. "innerText": "修改备注姓名",
  315. "onclick": function () {
  316. U.MD.F.R.updateFriendDescriptForm(_isaddfriend);
  317. }
  318. },
  319. _tempel);
  320. $$("div",
  321. {
  322. "innerText": "修改好友分组",
  323. "onclick": function () {
  324. U.MD.F.R.topMoveFriendForm(_friendclassinfo, _isaddfriend);
  325. }
  326. },
  327. _tempel);
  328. $$("div",
  329. {
  330. "innerText": "删除好友",
  331. "onclick": function () {
  332. U.MD.F.R.deleteFriendForm(_isaddfriend);
  333. }
  334. },
  335. _tempel);
  336. }
  337. //如果好友不是自己的好友,则菜单为添加好友
  338. else {
  339. $$("div", { "innerText": "添加该好友" }, _tempel);
  340. }
  341. }
  342. //群菜单查看
  343. else {
  344. U.MD.F.J.groupInfoForm(friendinfo); //查看群 操作
  345. }
  346. }
  347. }
  348. /**
  349. * 修改好友备注
  350. * 参数说明 UGE对应的好友信息集合
  351. * @param object
  352. */
  353. U.MD.F.R.updateFriendDescriptForm = function (_friendinfo) {
  354. var _tempel,
  355. _temponeel,
  356. _temptwoel,
  357. _descript;
  358. _descript = _friendinfo.FriendsDescript || _friendinfo.UserNickName; //修改的好友昵称
  359. //创建好友分组的样式
  360. _tempel = $$("div", { "className": "U_MD_U_L_Box_I U_MD_F_Add_TNL U_MD_F_G" });
  361. _temponeel = $$("div", {}, _tempel)
  362. _temptwoel = $$("input",
  363. {
  364. "value": _descript,
  365. "onfocus": function () {
  366. U.UF.MR.inputPlaceholder(this, _descript, "");
  367. },
  368. "onblur": function () {
  369. U.UF.MR.inputPlaceholder(this, "", _descript);
  370. }
  371. }, _temponeel);
  372. //弹出好友对话框
  373. U.UF.UI.confirm(_tempel, function () {
  374. U.MD.F.R.updateFriendDescript(_friendinfo, _temptwoel);
  375. }); //创建一个对话框
  376. }
  377. /**
  378. * 确认修改备注
  379. * 参数说明 0 对应好友信息集合 1对应的el 用于静态改变当前的备注
  380. * @param{object}群信息
  381. * @{element}对应el
  382. */
  383. U.MD.F.R.updateFriendDescript = function (friendinfo, el) {
  384. U.A.Request(US.CD, [US.DB, "UseStudio_Friends", "UpdateFriendDescription", friendinfo['FriendsID'], el.value],
  385. U.MD.F.R.asynUpdateFriendDescript, [null, friendinfo, el.value]);
  386. }
  387. /**
  388. * 好友备注修改异步
  389. * @param{object} 异步服务器返回的信息
  390. */
  391. U.MD.F.R.asynUpdateFriendDescript = function (r) {
  392. var _context = r.context,
  393. _friendinfo = _context[1],
  394. _descript = _context[2],
  395. _el = $($("#g" + _friendinfo.FriendsGroupID + " div")[1]).find('[tid="' + _friendinfo["UserId"] + '"]')[0];
  396. _friendinfo.FriendsDescript = _descript; //在好友信息集合里修改用户描述
  397. //在好友列表中修改好友
  398. if (_el) {
  399. $("div", _el)[2].innerText = _context[2];
  400. }
  401. //在聊天窗口修改好友
  402. $("div", $('.U_MD_F_TO.U_MD_F_TOT')[0])[1].innerText = _context[2];
  403. var _obj = $('.U_MD_F_TO.U_MD_F_TOT')[0],
  404. _tags = $(".U_MD_F_TA")[0].children;
  405. for (var i = 0, len = _tags.length; i < len; i++) {
  406. // 找到节点,返回下标
  407. if (_tags[i] == _obj) {
  408. $("div", $('.U_MD_F_H')[i])[2].innerText = _context[2];
  409. }
  410. }
  411. }
  412. //#region 群聊
  413. /**
  414. * 右键群聊显示
  415. * @param object 右键元素的信息集合
  416. */
  417. U.MD.F.R.GroupRightClickMenu = function (el, friendgroupinfo) {
  418. var _el = $('#U_MD_F_G_Group')[0], //右键的菜单
  419. _child = $(_el).Child(); //子菜单
  420. $(_el).css({ "display": "block", "zIndex": "999" }); //显示右键菜单
  421. U.UF.C.rightClickMenuLocation(_el); //右键菜单定位
  422. //修改分组名字的点击处理
  423. _child[0].onclick = function () { U.MD.F.J.groupInfoForm(friendgroupinfo, el) };
  424. _child[1].onclick = function () { U.MD.F.J.groupExit(friendgroupinfo, US.userInfo); };
  425. $(document).bind("click", function () {
  426. $('#U_MD_F_G_Group')[0].style.display = "none";
  427. })
  428. }