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