]>
jfr.im git - irc/quakenet/qwebirc.git/blob - js/ui/panes/connect.js
1 qwebirc
.ui
.ConnectPane
= new Class({
3 initialize: function(parent
, options
) {
4 var callback
= options
.callback
, initialNickname
= options
.initialNickname
, initialChannels
= options
.initialChannels
, networkName
= options
.networkName
, autoConnect
= options
.autoConnect
, autoNick
= options
.autoNick
;
5 this.options
= options
;
7 var delayfn = function() { parent
.set("html", "<div class=\"loading\">Loading. . .</div>"); };
8 var cb
= delayfn
.delay(500);
10 var r
= qwebirc
.ui
.RequestTransformHTML({url: qwebirc
.global
.staticBaseURL
+ "panes/connect.html", update: parent
, onSuccess: function() {
13 var box
= (autoConnect
? "confirm" : "login");
14 var rootElement
= parent
.getElement("[name=" + box
+ "box]");
15 this.rootElement
= rootElement
;
17 this.util
.exec = function(n
, x
) { rootElement
.getElements(n
).each(x
); };
20 util
.makeVisible(rootElement
);
22 exec("[name=nickname]", util
.setText(initialNickname
));
23 exec("[name=channels]", util
.setText(initialChannels
));
24 exec("[name=prettychannels]", function(node
) { this.__buildPrettyChannels(node
, initialChannels
); }.bind(this));
25 exec("[name=networkname]", util
.setText(networkName
));
27 var focus
= "connect";
30 exec("[name=nickselected]", util
.makeVisible
);
32 this.__validate
= this.__validateConfirmData
;
34 if(!initialNickname
) {
36 } else if(initialNickname
&& !initialChannels
) {
40 this.__validate
= this.__validateLoginData
;
43 exec("[name=" + focus
+ "]", util
.focus
);
44 exec("[name=connect]", util
.attachClick(this.__connect
.bind(this)));
49 makeVisible: function(x
) { x
.setStyle("display", ""); },
50 focus: function(x
) { x
.focus(); },
51 attachClick: function(fn
) { return function(x
) { x
.addListener("click", fn
); } },
52 setText: function(x
) { return function(y
) {
53 if(typeof y
.value
=== "undefined") {
56 y
.value
= x
=== null ? "" : x
;
60 validate: function() {
61 return this.__validate();
63 __connect: function(e
) {
65 var data
= this.validate();
69 this.fireEvent("close");
70 this.options
.callback(data
);
72 __validateConfirmData: function() {
73 return {nickname: this.options
.initialNickname
, autojoin: this.options
.initialChannels
};
75 __validateLoginData: function() {
76 var nick
= this.rootElement
.getElement("input[name=nickname]"), chan
= this.rootElement
.getElement("input[name=channels]");
78 var nickname
= nick
.value
;
79 var chans
= chan
.value
;
80 if(chans
== "#") /* sorry channel "#" :P */
84 alert("You must supply a nickname.");
89 var data
= {nickname: nickname
, autojoin: chans
};
92 __buildPrettyChannels: function(node
, channels
) {
93 var c
= channels
.split(" ")[0].split(",");
94 node
.appendChild(document
.createTextNode("channel" + ((c
.length
>1)?"s":"") + " "));
95 for(var i
=0;i
<c
.length
;i
++) {
96 if((c
.length
> 1) && (i
== c
.length
- 1)) {
97 node
.appendChild(document
.createTextNode(" and "));
99 node
.appendChild(document
.createTextNode(", "));
101 node
.appendChild(new Element("b").set("text", c
[i
]));
106 qwebirc
.ui
.LoginBox2 = function(parentElement
, callback
, initialNickname
, initialChannels
, networkName
) {
108 if(qwebirc.auth.enabled()) {
109 if(qwebirc.auth.passAuth()) {
110 var authRow = createRow("Auth to services:");
111 var authCheckBox = qwebirc.util.createInput("checkbox", authRow, "connect_auth_to_services", false);
113 var usernameBox = new Element("input");
114 var usernameRow = createRow("Username:", usernameBox, {display: "none"})[0];
116 var passwordRow = createRow("Password:", null, {display: "none"});
117 var passwordBox = qwebirc.util.createInput("password", passwordRow[1], "connect_auth_password");
119 authCheckBox.addEvent("click", function(e) { qwebirc.ui.authShowHide(authCheckBox, authRow, usernameBox, usernameRow, passwordRow[0]) });
120 } else if(qwebirc.auth.bouncerAuth()) {
121 var passwordRow = createRow("Password:");
122 var passwordBox = qwebirc.util.createInput("password", passwordRow, "connect_auth_password");
127 var connbutton
= new Element("input", {"type": "submit"});
128 connbutton
.set("value", "Connect");
129 var r
= createRow(undefined, connbutton
);
131 form
.addEvent("submit", function(e
) {
134 var data
= {"nickname": nickname
, "autojoin": chans
};
135 if(qwebirc
.auth
.enabled()) {
136 if(qwebirc
.auth
.passAuth() && authCheckBox
.checked
) {
137 if(!usernameBox
.value
|| !passwordBox
.value
) {
138 alert("You must supply your username and password in auth mode.");
139 if(!usernameBox
.value
) {
147 data
["serverPassword"] = usernameBox
.value
+ " " + passwordBox
.value
;
148 } else if(qwebirc
.auth
.bouncerAuth()) {
149 if(!passwordBox
.value
) {
150 alert("You must supply a password.");
155 data
["serverPassword"] = passwordBox
.value
;
158 parentElement
.removeChild(outerbox
);
163 nick
.set("value", initialNickname
);
164 chan
.set("value", initialChannels
);
166 if(window
== window
.top
)
170 qwebirc
.ui
.authShowHide = function(checkbox
, authRow
, usernameBox
, usernameRow
, passwordRow
) {
171 var visible
= checkbox
.checked
;
172 var display
= visible
?null:"none";
173 usernameRow
.setStyle("display", display
);
174 passwordRow
.setStyle("display", display
);
177 // authRow.parentNode.setStyle("display", "none");