1 _kiwi
.model
.Member
= Backbone
.Model
.extend({
2 sortModes: function (modes
) {
3 return modes
.sort(function (a
, b
) {
5 var user_prefixes
= _kiwi
.gateway
.get('user_prefixes');
7 for (i
= 0; i
< user_prefixes
.length
; i
++) {
8 if (user_prefixes
[i
].mode
=== a
) {
12 for (i
= 0; i
< user_prefixes
.length
; i
++) {
13 if (user_prefixes
[i
].mode
=== b
) {
19 } else if (a_idx
> b_idx
) {
26 initialize: function (attributes
) {
27 var nick
, modes
, prefix
;
28 nick
= this.stripPrefix(this.get("nick"));
30 modes
= this.get("modes");
32 this.sortModes(modes
);
33 this.set({"nick": nick
, "modes": modes
, "prefix": this.getPrefix(modes
)}, {silent
: true});
35 this.view
= new _kiwi
.view
.Member({"model": this});
37 addMode: function (mode
) {
38 var modes_to_add
= mode
.split(''),
41 modes
= this.get("modes");
42 $.each(modes_to_add
, function (index
, item
) {
46 modes
= this.sortModes(modes
);
47 this.set({"prefix": this.getPrefix(modes
), "modes": modes
});
52 removeMode: function (mode
) {
53 var modes_to_remove
= mode
.split(''),
56 modes
= this.get("modes");
57 modes
= _
.reject(modes
, function (m
) {
58 return (_
.indexOf(modes_to_remove
, m
) !== -1);
61 this.set({"prefix": this.getPrefix(modes
), "modes": modes
});
66 getPrefix: function (modes
) {
68 var user_prefixes
= _kiwi
.gateway
.get('user_prefixes');
70 if (typeof modes
[0] !== 'undefined') {
71 prefix
= _
.detect(user_prefixes
, function (prefix
) {
72 return prefix
.mode
=== modes
[0];
74 prefix
= (prefix
) ? prefix
.symbol
: '';
78 stripPrefix: function (nick
) {
79 var tmp
= nick
, i
, j
, k
, nick_char
;
80 var user_prefixes
= _kiwi
.gateway
.get('user_prefixes');
84 for (j
= 0; j
< nick
.length
; j
++) {
85 nick_char
= nick
.charAt(j
);
86 for (k
= 0; k
< user_prefixes
.length
; k
++) {
87 if (nick_char
=== user_prefixes
[k
].symbol
) {
89 continue nick_character_loop
;
97 displayNick: function (full
) {
98 var display
= this.get('nick');
101 if (this.get("ident")) {
102 display
+= ' [' + this.get("ident") + '@' + this.get("hostname") + ']';
109 var user_prefixes
= _kiwi
.gateway
.get('user_prefixes'),
110 modes
= this.get('modes'),
112 if (modes
.length
> 0) {
113 o
= _
.indexOf(user_prefixes
, _
.find(user_prefixes
, function (prefix
) {
114 return prefix
.mode
=== 'o';
116 max_mode
= _
.indexOf(user_prefixes
, _
.find(user_prefixes
, function (prefix
) {
117 return prefix
.mode
=== modes
[0];
119 if ((max_mode
=== -1) || (max_mode
> o
)) {
120 this.set({"is_op": false}, {silent
: true});
122 this.set({"is_op": true}, {silent
: true});
125 this.set({"is_op": false}, {silent
: true});