Client: Private `kiwi` namespace renamed to `_kiwi`
[KiwiIRC.git] / client / assets / dev / model_member.js
CommitLineData
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});