aboutsummaryrefslogtreecommitdiff
path: root/index.html
diff options
context:
space:
mode:
authorDavid Phillips <dbphillipsnz@gmail.com>2016-02-18 19:24:32 +1300
committerDavid Phillips <dbphillipsnz@gmail.com>2016-02-18 20:54:57 +1300
commitfc3c7e2a7769dcc433e47450455f604442e88631 (patch)
treecafb1002e711682bb621cc35515bbfdf0660fd4a /index.html
downloadpetrichor-fc3c7e2a7769dcc433e47450455f604442e88631.tar.xz
Import
Diffstat (limited to 'index.html')
-rw-r--r--index.html168
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">&#x26A0;</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>