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
;
80 var user_prefixes
= _kiwi
.gateway
.get('user_prefixes');
83 for (j
= 0; j
< nick
.length
; j
++) {
84 for (k
= 0; k
< user_prefixes
.length
; k
++) {
85 if (nick
.charAt(j
) === user_prefixes
[k
].symbol
) {
94 displayNick: function (full
) {
95 var display
= this.get('nick');
98 if (this.get("ident")) {
99 display
+= ' [' + this.get("ident") + '@' + this.get("hostname") + ']';
106 var user_prefixes
= _kiwi
.gateway
.get('user_prefixes'),
107 modes
= this.get('modes'),
109 if (modes
.length
> 0) {
110 o
= _
.indexOf(user_prefixes
, _
.find(user_prefixes
, function (prefix
) {
111 return prefix
.mode
=== 'o';
113 max_mode
= _
.indexOf(user_prefixes
, _
.find(user_prefixes
, function (prefix
) {
114 return prefix
.mode
=== modes
[0];
116 if ((max_mode
=== -1) || (max_mode
> o
)) {
117 this.set({"is_op": false}, {silent
: true});
119 this.set({"is_op": true}, {silent
: true});
122 this.set({"is_op": false}, {silent
: true});