2 // TODO: Listen to gateway events for anythign related to this channel
3 _kiwi
.model
.Channel
= _kiwi
.model
.Panel
.extend({
4 initialize: function (attributes
) {
5 var name
= this.get("name") || "",
9 "members": new _kiwi
.model
.MemberList(),
15 this.view
= new _kiwi
.view
.Channel({"model": this, "name": name
});
17 members
= this.get("members");
18 members
.channel
= this;
19 members
.bind("add", function (member
, members
, options
) {
20 var show_message
= _kiwi
.global
.settings
.get('show_joins_parts');
21 if (show_message
=== false) {
25 this.addMsg(' ', '== ' + _kiwi
.global
.i18n
.translate('client_models_channel_join').fetch(member
.displayNick(true)), 'action join', {time
: options
.kiwi
.time
});
28 members
.bind("remove", function (member
, members
, options
) {
29 var show_message
= _kiwi
.global
.settings
.get('show_joins_parts');
30 var msg
= (options
.kiwi
.message
) ? '(' + options
.kiwi
.message
+ ')' : '';
32 if (options
.kiwi
.type
=== 'quit' && show_message
) {
33 this.addMsg(' ', '== ' + _kiwi
.global
.i18n
.translate('client_models_channel_quit').fetch(member
.displayNick(true), msg
), 'action quit', {time
: options
.kiwi
.time
});
35 } else if (options
.kiwi
.type
=== 'kick') {
37 if (!options
.kiwi
.current_user_kicked
) {
38 //If user kicked someone, show the message regardless of settings.
39 if (show_message
|| options
.kiwi
.current_user_initiated
) {
40 this.addMsg(' ', '== ' + _kiwi
.global
.i18n
.translate('client_models_channel_kicked').fetch(member
.displayNick(true), options
.kiwi
.by
, msg
), 'action kick', {time
: options
.kiwi
.time
});
43 this.addMsg(' ', '== ' + _kiwi
.global
.i18n
.translate('client_models_channel_selfkick').fetch(options
.kiwi
.by
, msg
), 'action kick', {time
: options
.kiwi
.time
});
45 } else if (show_message
) {
46 this.addMsg(' ', '== ' + _kiwi
.global
.i18n
.translate('client_models_channel_part').fetch(member
.displayNick(true), msg
), 'action part', {time
: options
.kiwi
.time
});
52 addMsg: function (nick
, msg
, type
, opts
) {
53 var message_obj
, bs
, d
,
54 scrollback
= (parseInt(_kiwi
.global
.settings
.get('scrollback'), 10) || 250);
58 // Time defaults to now
59 if (typeof opts
.time
=== 'number') {
60 opts
.time
= new Date(opts
.time
);
62 opts
.time
= new Date();
65 // CSS style defaults to empty string
66 if (!opts
|| typeof opts
.style
=== 'undefined') {
70 // Run through the plugins
71 message_obj
= {"msg": msg
, "date": opts
.date
, "time": opts
.time
, "nick": nick
, "chan": this.get("name"), "type": type
, "style": opts
.style
};
72 //tmp = _kiwi.plugs.run('addmsg', message_obj);
77 // The CSS class (action, topic, notice, etc)
78 if (typeof message_obj
.type
!== "string") {
79 message_obj
.type
= '';
82 // Make sure we don't have NaN or something
83 if (typeof message_obj
.msg
!== "string") {
87 // Update the scrollback
88 bs
= this.get("scrollback");
92 // Keep the scrolback limited
93 if (bs
.length
> scrollback
) {
94 bs
.splice(scrollback
);
96 this.set({"scrollback": bs
}, {silent
: true});
99 this.trigger("msg", message_obj
);
103 clearMessages: function () {
104 this.set({'scrollback': []}, {silent
: true});
105 this.addMsg('', 'Window cleared');
111 setMode: function(mode_string
) {
112 this.get('network').gateway
.mode(this.get('name'), mode_string
);
115 isChannel: function() {