X-Git-Url: https://jfr.im/git/irc/quakenet/qwebirc.git/blobdiff_plain/74caeb3e8e992a2c63cca33230f84cdb568bce08..6ce70043d7bcfee7b3275ec188cc2217a4902387:/js/ui/panes/connect.js diff --git a/js/ui/panes/connect.js b/js/ui/panes/connect.js index 8f0ba4a..9161bfe 100644 --- a/js/ui/panes/connect.js +++ b/js/ui/panes/connect.js @@ -6,10 +6,26 @@ qwebirc.ui.GenericLoginBox = function(parentElement, callback, initialNickname, } } +qwebirc.ui.AuthLogin = function(e) { + var cookie = Cookie.write("redirect", document.location); + document.location = "./auth/"; + new Event(e).stop(); +} + qwebirc.ui.ConfirmBox = function(parentElement, callback, initialNickname, initialChannels, autoNick, networkName) { + var outerbox = new Element("table"); + outerbox.addClass("qwebirc-centrebox"); + parentElement.appendChild(outerbox); + var tbody = new Element("tbody"); + outerbox.appendChild(tbody); + var tr = new Element("tr"); + tbody.appendChild(tr); + var td = new Element("td"); + tr.appendChild(td); + var box = new Element("table"); box.addClass("qwebirc-confirmbox"); - parentElement.appendChild(box); + td.appendChild(box); var tbody = new Element("tbody"); box.appendChild(tbody); @@ -45,7 +61,7 @@ qwebirc.ui.ConfirmBox = function(parentElement, callback, initialNickname, initi text.appendChild(document.createTextNode(" click 'Connect'.")); text.appendChild(new Element("br")); - if(!qwebirc.auth.loggedin()) + if(qwebirc.auth.enabled() && qwebirc.auth.quakeNetAuth() && !qwebirc.auth.loggedin()) text.appendChild(document.createTextNode("If you'd like to connect using your Q auth click 'Log in'.")); var tr = new Element("tr"); @@ -59,24 +75,31 @@ qwebirc.ui.ConfirmBox = function(parentElement, callback, initialNickname, initi td.appendChild(yes); yes.focus(); yes.addEvent("click", function(e) { - parentElement.removeChild(box); + parentElement.removeChild(outerbox); callback({"nickname": initialNickname, "autojoin": initialChannels}); }); - if(!qwebirc.auth.loggedin()) { + if(qwebirc.auth.enabled() && qwebirc.auth.quakeNetAuth() && !qwebirc.auth.loggedin()) { var auth = new Element("input", {"type": "submit", "value": "Log in"}); td.appendChild(auth); - auth.addEvent("click", function(e) { - var cookie = Cookie.write("redirect", document.location); - document.location = "./auth/"; - }); + auth.addEvent("click", qwebirc.ui.AuthLogin); } } qwebirc.ui.LoginBox = function(parentElement, callback, initialNickname, initialChannels, networkName) { + var outerbox = new Element("table"); + outerbox.addClass("qwebirc-centrebox"); + parentElement.appendChild(outerbox); + var tbody = new Element("tbody"); + outerbox.appendChild(tbody); + var tr = new Element("tr"); + tbody.appendChild(tr); + var td = new Element("td"); + tr.appendChild(td); + var box = new Element("table"); - parentElement.appendChild(box); box.addClass("qwebirc-loginbox"); + td.appendChild(box); var tbody = new Element("tbody"); box.appendChild(tbody); @@ -105,7 +128,7 @@ qwebirc.ui.LoginBox = function(parentElement, callback, initialNickname, initial var tbody = new Element("tbody"); boxtable.appendChild(tbody); /* stupid IE */ - function createRow(label, e2) { + function createRow(label, e2, style) { var r = new Element("tr"); tbody.appendChild(r); @@ -116,18 +139,54 @@ qwebirc.ui.LoginBox = function(parentElement, callback, initialNickname, initial var d2 = new Element("td"); r.appendChild(d2); - d2.appendChild(e2); - return d1; + + if($defined(e2)) + d2.appendChild(e2); + if($defined(style)) { + r.setStyles(style); + return [r, d2]; + } + + return d2; } var nick = new Element("input"); createRow("Nickname:", nick); + + var chanStyle = null; + if(qwebirc.auth.enabled() && qwebirc.auth.bouncerAuth()) + chanStyle = {display: "none"}; + var chan = new Element("input"); - createRow("Channels:", chan); + createRow("Channels:", chan, chanStyle); + if(qwebirc.auth.enabled()) { + if(qwebirc.auth.passAuth()) { + var authRow = createRow("Auth to services:"); + var authCheckBox = qwebirc.util.createInput("checkbox", authRow, "connect_auth_to_services", false); + + var usernameBox = new Element("input"); + var usernameRow = createRow("Username:", usernameBox, {display: "none"})[0]; + + var passwordRow = createRow("Password:", null, {display: "none"}); + var passwordBox = qwebirc.util.createInput("password", passwordRow[1], "connect_auth_password"); + + authCheckBox.addEvent("click", function(e) { qwebirc.ui.authShowHide(authCheckBox, authRow, usernameBox, usernameRow, passwordRow[0]) }); + } else if(qwebirc.auth.bouncerAuth()) { + var passwordRow = createRow("Password:"); + var passwordBox = qwebirc.util.createInput("password", passwordRow, "connect_auth_password"); + } + } + var connbutton = new Element("input", {"type": "submit"}); connbutton.set("value", "Connect"); - createRow(undefined, connbutton) + var r = createRow(undefined, connbutton); + + if(qwebirc.auth.enabled() && qwebirc.auth.quakeNetAuth() && !qwebirc.auth.loggedin()) { + var auth = new Element("input", {"type": "submit", "value": "Log in"}); + r.appendChild(auth); + auth.addEvent("click", qwebirc.ui.AuthLogin); + } form.addEvent("submit", function(e) { new Event(e).stop(); @@ -142,13 +201,48 @@ qwebirc.ui.LoginBox = function(parentElement, callback, initialNickname, initial return; } - parentElement.removeChild(box); + var data = {"nickname": nickname, "autojoin": chans}; + if(qwebirc.auth.passAuth() && authCheckBox.checked) { + if(!usernameBox.value || !passwordBox.value) { + alert("You must supply your username and password in auth mode."); + if(!usernameBox.value) { + usernameBox.focus(); + } else { + passwordBox.focus(); + } + return; + } + + data["serverPassword"] = usernameBox.value + " " + passwordBox.value; + } else if(qwebirc.auth.bouncerAuth()) { + if(!passwordBox.value) { + alert("You must supply a password."); + passwordBox.focus(); + return; + } + + data["serverPassword"] = passwordBox.value; + } + + parentElement.removeChild(outerbox); - callback({"nickname": nickname, "autojoin": chans}); + callback(data); }.bind(this)); - + nick.set("value", initialNickname); chan.set("value", initialChannels); nick.focus(); } + +qwebirc.ui.authShowHide = function(checkbox, authRow, usernameBox, usernameRow, passwordRow) { + var visible = checkbox.checked; + var display = visible?null:"none"; + usernameRow.setStyle("display", display); + passwordRow.setStyle("display", display); + + if(visible) { +// authRow.parentNode.setStyle("display", "none"); + usernameBox.focus(); + } +}