Merge branch 'settings' of https://github.com/M2Ys4U/KiwiIRC into settings
[KiwiIRC.git] / client / assets / src / models / channel.js
1 // TODO: Channel modes
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") || "",
6 members;
7
8 this.set({
9 "members": new _kiwi.model.MemberList(),
10 "name": name,
11 "scrollback": [],
12 "topic": ""
13 }, {"silent": true});
14
15 this.view = new _kiwi.view.Channel({"model": this, "name": name});
16
17 members = this.get("members");
18 members.channel = this;
19 members.bind("add", function (member) {
20 var show_message = _kiwi.global.settings.get('show_joins_parts');
21 if (show_message === false) {
22 return;
23 }
24
25 this.addMsg(' ', '== ' + _kiwi.global.i18n.translate('client_models_channel_join').fetch(member.displayNick(true)), 'action join');
26 }, this);
27
28 members.bind("remove", function (member, members, options) {
29 var show_message = _kiwi.global.settings.get('show_joins_parts');
30 var msg = (options.message) ? '(' + options.message + ')' : '';
31
32 if (options.type === 'quit' && show_message) {
33 this.addMsg(' ', '== ' + _kiwi.global.i18n.translate('client_models_channel_quit').fetch(member.displayNick(true), msg), 'action quit');
34
35 } else if(options.type === 'kick') {
36
37 if (!options.current_user_kicked) {
38 //If user kicked someone, show the message regardless of settings.
39 if (show_message || options.current_user_initiated) {
40 this.addMsg(' ', '== ' + _kiwi.global.i18n.translate('client_models_channel_kicked').fetch(member.displayNick(true), options.by, msg), 'action kick');
41 }
42 } else {
43 this.addMsg(' ', '== ' + _kiwi.global.i18n.translate('client_models_channel_selfkick').fetch(options.by, msg), 'action kick');
44 }
45 } else if (show_message) {
46
47 this.addMsg(' ', '== ' + _kiwi.global.i18n.translate('client_models_channel_part').fetch(member.displayNick(true), msg), 'action part');
48 }
49 }, this);
50 }
51 });