diff options
author | David Phillips <dbphillipsnz@gmail.com> | 2016-02-18 19:24:32 +1300 |
---|---|---|
committer | David Phillips <dbphillipsnz@gmail.com> | 2016-02-18 20:54:57 +1300 |
commit | fc3c7e2a7769dcc433e47450455f604442e88631 (patch) | |
tree | cafb1002e711682bb621cc35515bbfdf0660fd4a /index.html | |
download | petrichor-fc3c7e2a7769dcc433e47450455f604442e88631.tar.xz |
Import
Diffstat (limited to 'index.html')
-rw-r--r-- | index.html | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/index.html b/index.html new file mode 100644 index 0000000..ef7ddc0 --- /dev/null +++ b/index.html @@ -0,0 +1,168 @@ +<html> + <head> + <link rel="stylesheet" type="text/css" href="petrichor.css" /> + <script type="text/javascript"> + + password_prompt = false; + selected_user = null; + time_remaining = 0 + + function show_prompt(text, type) + { + password_prompt = true; + label = document.getElementById('password_label'); + label.innerHTML = text; + + users = document.getElementById('users'); + for (i in users.children) + { + user = users.children[i]; + if (user.id != ('user_' + selected_user) && user.style != null) + user.style.opacity = 0.1; + } + + entry = document.getElementById('password_entry'); + entry.value = ''; + + var selected = document.getElementById("user_" + selected_user); + rect = selected.getBoundingClientRect(); + cont = document.getElementById('password_container'); + + cont.style.top = rect.top; + if (cont.style.left != rect.right) + cont.style.left = rect.right; + cont.classList.add('shown'); + + entry.focus(); + } + + function show_message(text, type) + { + cont = document.getElementById('message_container'); + document.getElementById('message_label').innerHTML = text; + + if (text.length > 0) + { + var selected = document.getElementById("user_" + selected_user); + rect = selected.getBoundingClientRect(); + + cont.style.top = rect.top; + if (cont.style.left != rect.right) + cont.style.left = rect.right; + cont.style.top = rect.top; + cont.classList.add("shown"); + } else { + cont.classList.remove("shown"); + } + } + + function reset() + { + users = document.getElementById('users'); + for (i in users.children) + { + child = users.children[i]; + if (child.style != null) + child.style.opacity = 1; + } + document.getElementById('password_container').classList.remove("shown"); + password_prompt = false; + } + + function authentication_complete() + { +// document.getElementById('password_entry').value = ''; + if (lightdm.is_authenticated) + lightdm.start_session_sync(lightdm.authentication_user, lightdm.default_session); + else + show_message('<span class="error-icon">⚠</span> Authentication Failed'); + + reset(); + } + + function start_authentication(username) + { + document.getElementById('message_container').classList.remove("shown"); + + if (!password_prompt) { + selected_user = username; + lightdm.authenticate(username); + } + } + + function provide_secret() + { + entry = document.getElementById('password_entry'); + lightdm.respond(entry.value); + } + + function autologin_timer_expired(username) + { + lightdm.authenticate(lightdm.autologin_user); + } + + function countdown() + { + label = document.getElementById('countdown_label'); + label.innerHTML = ' in ' + time_remaining + ' seconds'; + time_remaining--; + if (time_remaining >= 0) + setTimeout('countdown()', 1000); + } + + function update_time() + { + var days = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]; + var months = ["January","February","March","April","May","June","July","August","September","October","November","December"]; + var d = new Date(); + niceHours = d.getHours(); + niceMinutes = d.getMinutes(); + // I'm yearning for strftime + if (niceHours < 10) + niceHours = "0"+niceHours; + if (niceMinutes < 10) + niceMinutes = "0"+niceMinutes; + document.getElementById('date').innerHTML = days[d.getDay()] + ", " + d.getDate() + " " + months[d.getMonth()]; + document.getElementById('time').innerHTML = niceHours + ":" + niceMinutes; + setTimeout('update_time()', 1000); + } + + document.write('<div id="users">'); + for (i in lightdm.users) + { + user = lightdm.users[i]; + + image = user.image; + + document.write('<div class="user" id="user_' + user.name +'"onclick="start_authentication(\'' + user.name + '\')" style="cursor: pointer;">'); + document.write('<img class="avatar" src="file:///' + image + '" /><span class="name">'+user.display_name+'</span>'); + if (user.name == lightdm.autologin_user && lightdm.autologin_timeout > 0) + document.write('<span id="countdown_label"></span>'); + document.write(' </div>'); + } + document.write('</div>'); + + + time_remaining = lightdm.autologin_timeout; + if (time_remaining > 0) + countdown(); + </script> + </head> + + <body onclick="reset();" onload="update_time();"> + <div id="date-container"> + <div id="date"></div> + <div id="time"></div> + </div> + <div id="password_container"> + <form action="javascript:provide_secret()"> + <span id="password_label"></span> + <input id="password_entry" type="password" /> + </form> + </div> + <div id="message_container"> + <span id="message_label"></span> + </div> + <img id="shutdown" src="iec5009.svg" onclick="lightdm.shutdown();" /> + </body> +</html> |