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});
36 addMode: function (mode
) {
37 var modes_to_add
= mode
.split(''),
40 modes
= this.get("modes");
41 $.each(modes_to_add
, function (index
, item
) {
45 modes
= this.sortModes(modes
);
46 this.set({"prefix": this.getPrefix(modes
), "modes": modes
});
49 removeMode: function (mode
) {
50 var modes_to_remove
= mode
.split(''),
53 modes
= this.get("modes");
54 modes
= _
.reject(modes
, function (m
) {
55 return (_
.indexOf(modes_to_remove
, m
) !== -1);
58 this.set({"prefix": this.getPrefix(modes
), "modes": modes
});
61 getPrefix: function (modes
) {
63 var user_prefixes
= _kiwi
.gateway
.get('user_prefixes');
65 if (typeof modes
[0] !== 'undefined') {
66 prefix
= _
.detect(user_prefixes
, function (prefix
) {
67 return prefix
.mode
=== modes
[0];
69 prefix
= (prefix
) ? prefix
.symbol
: '';
73 stripPrefix: function (nick
) {
74 var tmp
= nick
, i
, j
, k
;
75 var user_prefixes
= _kiwi
.gateway
.get('user_prefixes');
78 for (j
= 0; j
< nick
.length
; j
++) {
79 for (k
= 0; k
< user_prefixes
.length
; k
++) {
80 if (nick
.charAt(j
) === user_prefixes
[k
].symbol
) {
89 displayNick: function (full
) {
90 var display
= this.get('nick');
93 if (this.get("ident")) {
94 display
+= ' [' + this.get("ident") + '@' + this.get("hostname") + ']';
101 var user_prefixes
= _kiwi
.gateway
.get('user_prefixes'),
102 modes
= this.get('modes'),
104 if (modes
.length
> 0) {
105 o
= _
.indexOf(user_prefixes
, _
.find(user_prefixes
, function (prefix
) {
106 return prefix
.mode
=== 'o';
108 max_mode
= _
.indexOf(user_prefixes
, _
.find(user_prefixes
, function (prefix
) {
109 return prefix
.mode
=== modes
[0];
111 if ((max_mode
=== -1) || (max_mode
> o
)) {
112 this.set({"is_op": false}, {silent
: true});
114 this.set({"is_op": true}, {silent
: true});
117 this.set({"is_op": false}, {silent
: true});