Commit | Line | Data |
---|---|---|
eaaf73b0 | 1 | _kiwi.model.Member = Backbone.Model.extend({\r |
9df70c63 D |
2 | sortModes: function (modes) {\r |
3 | return modes.sort(function (a, b) {\r | |
4 | var a_idx, b_idx, i;\r | |
eaaf73b0 | 5 | var user_prefixes = _kiwi.gateway.get('user_prefixes');\r |
9df70c63 D |
6 | \r |
7 | for (i = 0; i < user_prefixes.length; i++) {\r | |
8 | if (user_prefixes[i].mode === a) {\r | |
9 | a_idx = i;\r | |
10 | }\r | |
11 | }\r | |
12 | for (i = 0; i < user_prefixes.length; i++) {\r | |
13 | if (user_prefixes[i].mode === b) {\r | |
14 | b_idx = i;\r | |
15 | }\r | |
16 | }\r | |
17 | if (a_idx < b_idx) {\r | |
18 | return -1;\r | |
19 | } else if (a_idx > b_idx) {\r | |
20 | return 1;\r | |
21 | } else {\r | |
22 | return 0;\r | |
23 | }\r | |
24 | });\r | |
25 | },\r | |
26 | initialize: function (attributes) {\r | |
27 | var nick, modes, prefix;\r | |
28 | nick = this.stripPrefix(this.get("nick"));\r | |
29 | \r | |
30 | modes = this.get("modes");\r | |
31 | modes = modes || [];\r | |
32 | this.sortModes(modes);\r | |
33 | this.set({"nick": nick, "modes": modes, "prefix": this.getPrefix(modes)}, {silent: true});\r | |
34 | },\r | |
35 | addMode: function (mode) {\r | |
36 | var modes_to_add = mode.split(''),\r | |
37 | modes, prefix;\r | |
38 | \r | |
39 | modes = this.get("modes");\r | |
40 | $.each(modes_to_add, function (index, item) {\r | |
41 | modes.push(item);\r | |
42 | });\r | |
43 | \r | |
44 | modes = this.sortModes(modes);\r | |
45 | this.set({"prefix": this.getPrefix(modes), "modes": modes});\r | |
46 | },\r | |
47 | removeMode: function (mode) {\r | |
48 | var modes_to_remove = mode.split(''),\r | |
49 | modes, prefix;\r | |
50 | \r | |
51 | modes = this.get("modes");\r | |
52 | modes = _.reject(modes, function (m) {\r | |
c4fc06f6 | 53 | return (_.indexOf(modes_to_remove, m) !== -1);\r |
9df70c63 D |
54 | });\r |
55 | \r | |
56 | this.set({"prefix": this.getPrefix(modes), "modes": modes});\r | |
57 | },\r | |
58 | getPrefix: function (modes) {\r | |
59 | var prefix = '';\r | |
eaaf73b0 | 60 | var user_prefixes = _kiwi.gateway.get('user_prefixes');\r |
9df70c63 D |
61 | \r |
62 | if (typeof modes[0] !== 'undefined') {\r | |
63 | prefix = _.detect(user_prefixes, function (prefix) {\r | |
64 | return prefix.mode === modes[0];\r | |
65 | });\r | |
66 | prefix = (prefix) ? prefix.symbol : '';\r | |
67 | }\r | |
68 | return prefix;\r | |
69 | },\r | |
70 | stripPrefix: function (nick) {\r | |
71 | var tmp = nick, i, j, k;\r | |
eaaf73b0 | 72 | var user_prefixes = _kiwi.gateway.get('user_prefixes');\r |
9df70c63 D |
73 | i = 0;\r |
74 | \r | |
75 | for (j = 0; j < nick.length; j++) {\r | |
76 | for (k = 0; k < user_prefixes.length; k++) {\r | |
77 | if (nick.charAt(j) === user_prefixes[k].symbol) {\r | |
78 | i++;\r | |
79 | break;\r | |
80 | }\r | |
81 | }\r | |
82 | }\r | |
83 | \r | |
84 | return tmp.substr(i);\r | |
85 | },\r | |
86 | displayNick: function (full) {\r | |
87 | var display = this.get('nick');\r | |
88 | \r | |
89 | if (full) {\r | |
90 | if (this.get("ident")) {\r | |
91 | display += ' [' + this.get("ident") + '@' + this.get("hostname") + ']';\r | |
92 | }\r | |
93 | }\r | |
94 | \r | |
95 | return display;\r | |
96 | }\r | |
97 | }); |