diff --git a/authority/jsapi/picker.html b/authority/jsapi/picker.html index f8c564dc40a692339e67740a82cca5e6a771ae8f..3319b14b6436bdd8c4914bf659ef175bcee9c791 100644 --- a/authority/jsapi/picker.html +++ b/authority/jsapi/picker.html @@ -76,16 +76,22 @@ font-weight: bold; } - #availableIdentities > div { + #identities > div { margin-left: .8em; margin-bottom: .5em; height: 1.4em; } - #availableIdentities > div > * { - float: left; + #identities > div > * { + float: left; + cursor: pointer; } + button { + cursor: pointer; + } + + </style> </head> <body id="body"> @@ -93,8 +99,8 @@ <div id="title"> Sign in with your Email Address </div> <div id="content"> <p>Which email would you like to use to log into <span id="sitename"></span>:</p> -<div id="availableIdentities"> -</div> +<form id="identities" name="identities"> +</form> </div> <div id="bottom-bar"> <button id="back">Go Back</button> diff --git a/authority/jsapi/picker.js b/authority/jsapi/picker.js index bcd3ec386c2cf3707e41b6f10009a8d48377698e..3ecf38d322b514e590086b50c4bae800981518b2 100644 --- a/authority/jsapi/picker.js +++ b/authority/jsapi/picker.js @@ -13,25 +13,56 @@ chan.bind("getVerifiedEmail", function(trans, s) { // set the requesting site document.getElementById("sitename").innerText = trans.origin.replace(/^.*:\/\//, ""); - + // iterate over all of the available identities and add a links to them // XXX -- actually pull these guys outta localStorage - var list = document.getElementById('availableIdentities'); + var list = document.getElementById('identities'); + + var first = true; [ "foo@bar.com", "baz@bing.com" ].forEach(function(i) { var div = document.createElement("div"); var button = document.createElement("input"); button.setAttribute('type', 'radio'); + button.checked = first; + first = false; button.name = "id_selection"; button.value = i; div.appendChild(button); var label = document.createElement("div"); label.innerText = i; + label.addEventListener("click", function(evt) { + console.log("clicked label: "); + this.parentNode.firstChild.checked = true; + }); div.appendChild(label); list.appendChild(div); }); // now make the body visible... document.getElementById("body").style.display = "block"; + + document.getElementById('signin').addEventListener("click", function(evt) { + var is = document.forms["identities"].elements['id_selection']; + var id = undefined; + for (var i = 0; i < is.length; i++) { + if (is[i].checked) { + id = is[i].value; + break; + } + } + if (id) { + trans.complete(id); + window.self.close(); + } else { + trans.error("noSelection", "no id selected by user"); + window.self.close(); + } + }); + + document.getElementById('cancel').addEventListener("click", function(evt) { + trans.error("noSelection", "no id selected by user"); + window.self.close(); + }); });