U.F.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. /*
  2. 问题:
  3. 1、整套好友的功能流程图
  4. 2、设计缺少流程 只有大流程 没有那个按钮的细节流程
  5. */
  6. Namespace.register("U.F"); //好友主命名空间
  7. //#region 初始化好友
  8. //初始化好友函数
  9. /**
  10. * 初始化加载好友
  11. */
  12. U.F.InitFriend = U.F.CSHFG = function () {
  13. //如果第三方应用1473,包含了好友窗体。
  14. if ($("#UD_SYHZ")[0]) {
  15. var i,
  16. _selectbottomel,
  17. _childsel,
  18. _chatform = $("#UD_SYHZ")[0], //好友窗体
  19. _userinfoel = $("#UD_SYHZLTI", _chatform)[0]; //多好友分栏
  20. //初始化出现右边的好友聊天
  21. U.F.W.FriendDisplayAndNone([{ "display": "none", "left": "auto" },
  22. { "display": "block", "top": (US.Height - 530) / 2, "right": "0px"}], true);
  23. //添加当前使用用户的头像
  24. $($("img", _userinfoel)[0] || $$("img")).addAttrArray({ "onerror": U.M.ImgError,
  25. "src": U.M.GetImgU(US.userInfo.UserThumbnailImageHead), "onclick": U.U.DKGEZL
  26. }).appendTo(_userinfoel);
  27. //右侧好友最近联系人
  28. U.F.PrintRightFormFriend(US.Friend[4].length ? US.Friend[4] : US.Friend[1], $("#UD_SYHRC")[0]);
  29. //我的好友、我的群组等按钮,默认显示我的好友 所以找到我的好友的按钮,并且默认调用onclick
  30. _selectbottomel = $("#UD_SYHZLTA").Child()[0];
  31. $(_selectbottomel).Child()[0].onclick();
  32. }
  33. }
  34. /**
  35. * 初始化右边好友出现
  36. *
  37. * @param {object} 好友头像处理
  38. * @param {element} 元素处理
  39. */
  40. U.F.PrintRightFormFriend = function (friendinfo, el) {
  41. var i,
  42. _tempel,
  43. _temponeel,
  44. _frag = $$("frag"),
  45. _childs = $(el).Child();
  46. //如果是用户登录多次,移除之前残留的信息
  47. for (i = 1; i < _childs.length; i++) {
  48. el.removeChild(_childs[i]);
  49. }
  50. //如果有好友资料输出
  51. if (friendinfo.length) {
  52. //循环打印好友资料
  53. for (i = 0; (i < friendinfo.length && i < 11); i++) {
  54. $$("img", { "onerror": U.M.ImgError, "title": friendinfo[i]["FriendsDescript"],
  55. "className": "UD_SYHRCI", "src": U.M.GetImgU(friendinfo[i].UserThumbnailImageHead),
  56. "alt": friendinfo[i].FriendsDescript || friendinfo[i].UserNickName,
  57. "onclick": [[U.M.StopBubble], [U.F.W.PopupFriendsForm, [friendinfo[i]]]]
  58. }, _frag);
  59. }
  60. }
  61. //暂无好友追随
  62. else {
  63. _tempel = $$("div", { "className": "UD_SYHRCT" }, _frag);
  64. _temponeel = $$("div", { "className": "UD_SYHRCTS" }, _tempel);
  65. $$("img", { "src": "/img/YSUN.png" }, _temponeel);
  66. $$("div", { "className": "UD_SYHRCTZ UD_SYI" }, _tempel);
  67. $$("div", { "className": "UD_SYHRCTX", "innerHTML": "暂时无追随" }, _tempel);
  68. }
  69. el.appendChild(_frag);
  70. }
  71. /**
  72. * 用户列表好友打印
  73. *
  74. * @param {element} 元素11
  75. */
  76. U.F.PrintFriendGroupOrFriend = function (el) {
  77. var i,
  78. _tempel,
  79. _temponeel,
  80. _classinfo,
  81. _friendinfo = US.Friend[0],
  82. _frag = $$("frag");
  83. el.innerText = "";
  84. //如果用户有好友则打印
  85. if (US.Friend[1].length) {
  86. //循环打印好友分组
  87. for (i = 0; i < _friendinfo.length; i++) {
  88. _classinfo = _$(US.Friend[1]).Select({ "FriendsGroupID": _friendinfo[i].FriendsGroupID }); //根据好友分组获取好友
  89. //打印好友分组
  90. _tempel = $$("div", { id: "g" + _friendinfo[i].FriendsGroupID, "TID": _friendinfo[i].FriendsGroupID, "className": "UD_SYHZLZO" }, _frag);
  91. $$("div", { "className": "UD_SYHZLZOT", "innerHTML": _friendinfo[i].FriendsGroupName + "(" + _classinfo.length + ")",
  92. "onclick": [[U.F.OpenOrCloseFriendClass, [_tempel]]], "oncontextmenu": [[U.F.R.FriendClassRightClickMenu, [US.Friend[0][i], "this"]]]
  93. }, _tempel);
  94. _temponeel = $$("div", { "className": "UD_SYHZLZOC" }, _tempel);
  95. //打印好友
  96. U.F.PrintFriendOrGroup(_temponeel, _classinfo);
  97. }
  98. }
  99. //无好友打印提示
  100. else {
  101. U.F.PrintHasNoFriend(_frag);
  102. }
  103. el.appendChild(_frag);
  104. }
  105. /**
  106. * 好友和群样式输出
  107. *
  108. * @param {element} 元素
  109. * @param {array} 好友数组
  110. */
  111. U.F.PrintFriendOrGroup = function (el, friendorgroupinfo, isinsert) {
  112. var i,
  113. _isfront,
  114. _friendel,
  115. _friendoneel,
  116. _friendtwoel,
  117. _onlinefrag = $$("frag"),
  118. _offlinefrag = $$("frag");
  119. //循环所有的好友或者群,打印到左边好友或群面板中
  120. for (i = 0; i < friendorgroupinfo.length; i++) {
  121. _friendel = $$("div", { "className": "UD_SYHZLZOCO", "onclick": [[U.F.W.PopupFriendsForm, [friendorgroupinfo[i], "this"]]], "TID": friendorgroupinfo[i].GroupManageID || friendorgroupinfo[i].UserId,
  122. "oncontextmenu": friendorgroupinfo[i].UserId ? [[U.F.R.FriendsRightClickMenu, ["this", friendorgroupinfo[i]]]] : ""
  123. });
  124. _friendoneel = $$("div", { "className": "UD_SYHZLZOCOI" }, _friendel);
  125. //如果是群的处理,群的头像输出
  126. if (friendorgroupinfo[i].GroupManageID) {
  127. U.F.PrintGroupHeadImage(_$(US.Friend[2]).Select({ "GroupManageID": friendorgroupinfo[i].GroupManageID })[0], _friendoneel, 4, [35, 35]);
  128. }
  129. //好友头像输出
  130. else {
  131. $$("img", { "onerror": U.M.ImgError, "title": "点击查看", "src": U.M.GetImgU(friendorgroupinfo[i].UserThumbnailImageHead) }, _friendoneel);
  132. }
  133. _friendtwoel = $$("div", { "className": "UD_SYHZLZOCOR UTDF" }, _friendel);
  134. $$("div", { "className": "UD_SYHZLZOCORN UTDF", "innerHTML": friendorgroupinfo[i].FriendsDescript || friendorgroupinfo[i].UserNickName || friendorgroupinfo[i].GroupManageName }, _friendtwoel);
  135. $$("div", { "className": "UD_SYHZLZOCORT UTDF", "innerHTML": friendorgroupinfo[i].UserIndividualitysignature || friendorgroupinfo[i].GroupManageRemark || "" }, _friendtwoel);
  136. //如果用户在线那么插入到最前面
  137. if (friendorgroupinfo[i].IsLogin == 1) {
  138. _onlinefrag.appendChild(_friendel);
  139. }
  140. //否则插入到后面
  141. else {
  142. _offlinefrag.appendChild(_friendel);
  143. }
  144. }
  145. el.insertBefore(_onlinefrag, el.firstChild); //在线用户插入到最前面
  146. //如果需要插入到最前面,那么则不管在不在线的用户都插入到最前面
  147. if (isinsert) {
  148. el.insertBefore(_offlinefrag, el.firstChild); //用户插入到最前面
  149. }
  150. else {
  151. el.appendChild(_offlinefrag); //非在线用户插入到最后米娜
  152. }
  153. }
  154. /**
  155. * 打开分组展开好友
  156. *
  157. * @param {element} 展开好友的区域
  158. */
  159. U.F.OpenOrCloseFriendClass = function (el) {
  160. var _firendel = $(el).Child()[1]; //获取好友分组对应的好友元素
  161. //如果现在隐藏了则打开
  162. if (_firendel.style.display == "none") {
  163. _firendel.style.display = "block";
  164. }
  165. //如果是显示则隐藏
  166. else {
  167. _firendel.style.display = "none";
  168. }
  169. }
  170. /**
  171. * 打印空好友
  172. *
  173. * @param {element} 打印的区域
  174. */
  175. U.F.PrintHasNoFriend = function (el) {
  176. var _tempel,
  177. _temponeel
  178. ;
  179. _tempel = $$("div", { "className": "UD_SYHZLZT" }, el);
  180. _temponeel = $$("div", { "className": "UD_SYHZLZTS" }, _tempel);
  181. $$("img", { "src": "/img/YSUN.png" }, _temponeel);
  182. $$("div", { "className": "UD_SYHZLZTZ UD_SYI" }, _tempel);
  183. $$("div", { "className": "UD_SYHZLZTX", "innerHTML": "暂时没有添加追随!!" }, _tempel);
  184. }
  185. //#endregion
  186. //#region 好友功能
  187. /**
  188. * 打印空好友
  189. *
  190. * @param {string} 切换类型
  191. * @param {element} 点钱点击的区域
  192. * @param {element} 变化的样式
  193. */
  194. U.F.SwitchFriendOrGroup = function (typename, el, classname) {
  195. var i,
  196. _chatform = $("#UD_SYHZLZ")[0], //打印内容区域
  197. _childsel = $(el).parentg(2).Child(), //所有参与切换的元素
  198. _classarray = ["UD_SYHZLTO", "UD_SYHZLTT", "UD_SYHZLTS", "UD_SYHZLTF"]; //切换样式数组
  199. //切换按钮的样式,把样式改成用户默认按钮的样式
  200. for (i = 0; i < _childsel.length; i++) {
  201. $(_childsel[i]).Child()[0].className = _classarray[i] + " UD_SYI UD_SYHZLTOK";
  202. }
  203. //设置选中的按钮样式
  204. el.className = classname + " UD_SYI UD_SYHZLTOK";
  205. //点击好友添加按钮
  206. if (typename == "A") {
  207. U.F.M.CreateFriendGroupPopup(); //调用创建群弹框
  208. }
  209. else {
  210. //群成员或者最近联系人输出
  211. if (typename == "G" || typename == "H") {
  212. _chatform.innerText = ""; //清空展示区域的内容
  213. U.F.PrintFriendOrGroup(_chatform); //打印
  214. }
  215. //打印好友,由于好友有好友分组,所以不能直接调用U.F.PrintFriendOrGroup输出
  216. else {
  217. U.F.PrintFriendGroupOrFriend(_chatform); //打印
  218. }
  219. }
  220. }
  221. /**
  222. * 获取群里头像集
  223. *
  224. * @param {object} 群信息
  225. * @param {element} 添加指定的元素
  226. * @param {element} 变化的样式
  227. * @param {element} 最大长度
  228. */
  229. U.F.PrintGroupHeadImage = function (groupinfo, el, num, size) {
  230. var i, j,
  231. _groupnameel,
  232. _imageel,
  233. _groupuserinfo = _$(US.Friend[3]).Select({ "GroupManageID": groupinfo.GroupManageID }, null, (num || 9)), //获取当前群
  234. _horizontal = _groupuserinfo.length < 3 ? _groupuserinfo.length : (_groupuserinfo.length > 6 ? 3 : 2), //每排几个
  235. _vertical = (_groupuserinfo.length > 4) ? 3 : (_groupuserinfo.length > 1) ? 2 : 1; //一共多少行
  236. size = size || [el.offsetHeight || 40, el.offsetWidth || 40]; //最大长宽
  237. _groupnameel = $$("div", { "className": "UD_SYSSZFZAIO", "title": groupinfo.GroupManageName }); //群名
  238. //打印所有群成员头像 横排打印
  239. for (i = 0; i < _horizontal; i++) {
  240. _imageel = $$("div", { "style": { "width": "100%", "height": Math.floor(size[0] / _horizontal) + "px"} }, _groupnameel);
  241. //竖排打印
  242. for (j = i * _vertical; j < i * _vertical + _vertical && j < _groupuserinfo.length; j++) {
  243. $$("img", {
  244. "onerror": U.M.ImgError,
  245. "src": U.M.GetImgU(_groupuserinfo[j].UserThumbnailImageHead),
  246. "style": { "width": Math.floor(size[1] / _vertical) + "px",
  247. "height": Math.floor(size[0] / _vertical) + "px"
  248. }
  249. }, _imageel);
  250. }
  251. };
  252. //追加
  253. el.appendChild(_groupnameel);
  254. }
  255. //#endregion