2015-04-08 10:57:09 +02:00
< script type = "text/x-red" data-template-name = "irc in" >
< div class = "form-row" >
2015-06-16 11:36:19 +02:00
< label for = "node-input-ircserver" > < i class = "fa fa-globe" > < / i > < span data-i18n = "irc.label.ircserver" > < / span > < / label >
2015-04-08 10:57:09 +02:00
< input type = "text" id = "node-input-ircserver" >
< / div >
< div class = "form-row" >
2015-06-16 11:36:19 +02:00
< label for = "node-input-channel" > < i class = "fa fa-random" > < / i > < span data-i18n = "irc.label.channel" > < / span > < / label >
2015-04-08 10:57:09 +02:00
< input type = "text" id = "node-input-channel" placeholder = "#nodered" >
< / div >
< div class = "form-row" >
2015-06-16 12:16:29 +02:00
< label for = "node-input-name" > < i class = "fa fa-tag" > < / i > < span data-i18n = "node-red:common.label.name" > < / span > < / label >
< input type = "text" id = "node-input-name" data-i18n = "[placeholder]node-red:common.label.name" >
2015-04-08 10:57:09 +02:00
< / div >
2015-06-16 11:36:19 +02:00
< div class = "form-tips" > < span data-i18n = "[html]irc.tip.in" > < / span > < / div >
2015-04-08 10:57:09 +02:00
< / script >
< script type = "text/x-red" data-help-name = "irc in" >
< p > Connects to a channel on an IRC server.< / p >
< p > You may join multiple channels by comma separating a list - #chan1,#chan2,#etc.< / p >
< p > Any messages on that channel will appear on the < code > msg.payload< / code > at the output,
while < code > msg.topic< / code > will contain who it is from.
< code > msg.to< / code > contains either the name of the channel or PRIV in the case of a pm.< / p >
< p > The second output provides a < code > msg.payload< / code > that has any status messages such as joins, parts, kicks etc.< / p >
< p > The type of the status message is set as < code > msg.payload.type< / code > .< / p >
< p > The possible status types are: < br / >
< table border = "1" cellpadding = "1" cellspacing = "1" >
< thead >
< tr >
< th scope = "col" > Type< / th >
< th scope = "col" > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > message< / td >
< td > message is sent into the channel< / td >
< / tr >
< tr >
< td > pm< / td >
< td > private message to the bot< / td >
< / tr >
< tr >
< td > join< / td >
< td > a user joined the channel (also triggered when the bot joins a channel)< / td >
< / tr >
< tr >
< td > invite< / td >
< td > the bot is being invited to a channel< / td >
< / tr >
< tr >
< td > part< / td >
< td > a user leaves a channel< / td >
< / tr >
< tr >
< td > quit< / td >
< td > a user quits a channel< / td >
< / tr >
< tr >
< td > kick< / td >
< td > a user is kicked from a channel< / td >
< / tr >
2015-11-16 09:33:59 +01:00
< tr >
< td > topic< / td >
< td > a topic has been changed on a joined channel< / td >
< / tr >
2015-04-08 10:57:09 +02:00
< tr >
< td > names< / td >
< td > retrieves the list of users when the bot joins a channel< / td >
< / tr >
< / tbody >
< / table >
< / p >
< / script >
< script type = "text/javascript" >
RED.nodes.registerType('irc in',{
category: 'social-input',
defaults: {
name: {value:""},
ircserver: {type:"irc-server", required:true},
channel: {value:"",required:true,validate:RED.validators.regex(/^#/)}
},
2015-10-30 19:34:35 +01:00
credentials: {
username: {type:"text"},
password: {type:"password"}
},
2015-04-08 10:57:09 +02:00
color:"Silver",
inputs:0,
outputs:2,
icon: "hash.png",
label: function() {
var ircNode = RED.nodes.node(this.ircserver);
return this.name || (ircNode ? ircNode.label() : "irc");
},
labelStyle: function() {
return this.name?"node_label_italic":"";
},
oneditprepare: function() {
if ((this.ircserver !== undefined) & & (this.ircserver !== "")) {
this.channel = this.channel || RED.nodes.node(this.ircserver).channel;
$("#node-input-channel").val(this.channel);
}
else { this.channel = this.channel; }
$("#node-input-channel").val(this.channel);
}
});
< / script >
< script type = "text/x-red" data-template-name = "irc out" >
< div class = "form-row" >
2015-06-16 11:36:19 +02:00
< label for = "node-input-ircserver" > < i class = "fa fa-globe" > < / i > < span data-i18n = "irc.label.ircserver" > < / span > < / label >
2015-04-08 10:57:09 +02:00
< input type = "text" id = "node-input-ircserver" >
< / div >
< div class = "form-row" >
2015-06-16 11:36:19 +02:00
< label for = "node-input-channel" > < i class = "fa fa-random" > < / i > < span data-i18n = "irc.label.channel" > < / span > < / label >
2015-04-08 10:57:09 +02:00
< input type = "text" id = "node-input-channel" placeholder = "#nodered" >
< / div >
< div class = "form-row" >
2015-06-16 11:36:19 +02:00
< label for = "node-input-sendObject" > < i class = "fa fa-arrows" > < / i > < span data-i18n = "irc.label.action" > < / span > < / label >
2015-04-08 10:57:09 +02:00
< select type = "text" id = "node-input-sendObject" style = "display: inline-block; vertical-align: middle; width:70%;" >
2015-06-16 11:36:19 +02:00
< option value = "pay" data-i18n = "irc.payload" > < / option >
< option value = "true" data-i18n = "irc.topic" > < / option >
< option value = "false" data-i18n = "irc.msg" > < / option >
2015-04-08 10:57:09 +02:00
< / select >
< / div >
< div class = "form-row" >
2015-06-16 12:16:29 +02:00
< label for = "node-input-name" > < i class = "fa fa-tag" > < / i > < span data-i18n = "node-red:common.label.name" > < / span > < / label >
< input type = "text" id = "node-input-name" data-i18n = "[placeholder]node-red:common.label.name" >
2015-04-08 10:57:09 +02:00
< / div >
2015-06-16 11:36:19 +02:00
< div class = "form-tips" > < span data-i18n = "[html]irc.tip.out" > < / span > < / div >
2015-04-08 10:57:09 +02:00
< / script >
< script type = "text/x-red" data-help-name = "irc out" >
< p > Sends messages to a channel on an IRC server< / p >
< p > You can send just the < code > msg.payload< / code > , or the complete < code > msg< / code > object to the selected channel,
or you can select to use < code > msg.topic< / code > to send the < code > msg.payload< / code > to a specific user (private message) or channel.< / p >
< p > If multiple output channels are listed (eg. #chan1,#chan2), then the message will be sent to all of them.< / p >
< p > < b > Note:< / b > you can only send to channels you have previously joined so they MUST be specified in the node - even if you then decide to use a subset in msg.topic< / p >
< p > You may send RAW commands using < code > msg.raw< / code > - This must contain an array of parameters - eg. < pre > ["privmsg","#nodered","Hello world"]< / pre > < / p >
< / script >
< script type = "text/javascript" >
RED.nodes.registerType('irc out',{
category: 'social-output',
defaults: {
name: {value:""},
sendObject: {value:"pay", required:true},
ircserver: {type:"irc-server", required:true},
channel: {value:"",required:true,validate:RED.validators.regex(/^#/)}
},
color:"Silver",
inputs:1,
outputs:0,
icon: "hash.png",
align: "right",
label: function() {
return this.name || (this.ircserver ? RED.nodes.node(this.ircserver).label() : "irc");
},
labelStyle: function() {
return this.name?"node_label_italic":"";
},
oneditprepare: function() {
if ((this.ircserver !== undefined) & & (this.ircserver !== "")) {
this.channel = this.channel || RED.nodes.node(this.ircserver).channel;
$("#node-input-channel").val(this.channel);
}
else { this.channel = this.channel; }
}
});
< / script >
< script type = "text/x-red" data-template-name = "irc-server" >
< div class = "form-row" >
2015-06-16 11:36:19 +02:00
< label for = "node-config-input-server" > < i class = "fa fa-globe" > < / i > < span data-i18n = "irc.label.ircserver" > < / span > < / label >
2015-04-09 12:26:07 +02:00
< input type = "text" id = "node-config-input-server" placeholder = "irc.freenode.net" style = "width: 45%;" >
2015-06-16 11:36:19 +02:00
< label for = "node-config-input-port" style = "margin-left: 10px; width: 35px; " > < span data-i18n = "irc.label.port" > < / span > < / label >
< input type = "text" id = "node-config-input-port" style = "width:45px" >
2015-04-09 12:26:07 +02:00
< / div >
< div class = "form-row" >
< label > < / label >
< input type = "checkbox" id = "node-config-input-ssl" style = "display: inline-block; width: auto; vertical-align: top;" >
2015-06-16 11:36:19 +02:00
< label for = "node-config-input-ssl" style = "width: 70%;" > < span data-i18n = "irc.label.ssl" > < / span > < / label >
2015-04-09 12:26:07 +02:00
< / div >
< div class = "form-row" id = "certrow" >
< label > < / label >
< input type = "checkbox" id = "node-config-input-cert" style = "display: inline-block; width: auto; vertical-align: top;" >
2015-06-16 11:36:19 +02:00
< label for = "node-config-input-cert" style = "width: 70%;" > < span data-i18n = "irc.label.self" > < / span > < / label >
2015-04-08 10:57:09 +02:00
< / div >
< div class = "form-row" >
2015-11-04 09:41:01 +01:00
< label for = "node-config-input-nickname" > < i class = "fa fa-heart" > < / i > < span data-i18n = "irc.label.nickname" > < / span > < / label >
2015-06-16 11:36:19 +02:00
< input type = "text" id = "node-config-input-nickname" >
2015-04-08 10:57:09 +02:00
< / div >
2015-10-22 20:00:03 +02:00
< div class = "form-row" >
< label for = "node-config-input-username" > < i class = "fa fa-user" > < / i > < span data-i18n = "irc.label.username" > < / span > < / label >
2015-11-04 09:41:01 +01:00
< input type = "text" id = "node-config-input-username" data-i18n = "[placeholder]irc.placeholder.ifreq" >
2015-10-22 20:00:03 +02:00
< / div >
< div class = "form-row" >
< label for = "node-config-input-password" > < i class = "fa fa-lock" > < / i > < span data-i18n = "irc.label.password" > < / span > < / label >
2015-11-04 09:41:01 +01:00
< input type = "text" id = "node-config-input-password" data-i18n = "[placeholder]irc.placeholder.ifreq" >
2015-10-22 20:00:03 +02:00
< / div >
2015-04-08 10:57:09 +02:00
< / script >
< script type = "text/javascript" >
RED.nodes.registerType('irc-server',{
category: 'config',
defaults: {
server: {value:"",required:true},
2015-04-09 12:26:07 +02:00
port: {value:"6667"},
ssl: {value:false},
cert: {value:false},
2015-10-30 19:34:35 +01:00
nickname: {value:"",required:true}
2015-10-22 20:00:03 +02:00
},
credentials: {
username: {type:"text"},
password: {type:"password"}
2015-04-08 10:57:09 +02:00
},
label: function() {
return this.server;
2015-04-09 12:26:07 +02:00
},
oneditprepare: function() {
$("#node-config-input-ssl").change(function() {
if ($("#node-config-input-ssl").is(":checked")) {
$("#certrow").show();
}
else {
$("#certrow").hide();
}
});
},
oneditsave: function() {
this.ssl = $("#node-config-input-ssl").is(":checked");
this.cert = $("#node-config-input-cert").is(":checked");
2015-04-08 10:57:09 +02:00
}
});
< / script >