From fc3c7e2a7769dcc433e47450455f604442e88631 Mon Sep 17 00:00:00 2001 From: David Phillips Date: Thu, 18 Feb 2016 19:24:32 +1300 Subject: Import --- petrichor.js | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 petrichor.js (limited to 'petrichor.js') diff --git a/petrichor.js b/petrichor.js new file mode 100644 index 0000000..c96c21e --- /dev/null +++ b/petrichor.js @@ -0,0 +1,150 @@ +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() +{ + if (lightdm.is_authenticated) + lightdm.start_session_sync(lightdm.authentication_user, lightdm.default_session); + else + show_message(' 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); +} + +function start() +{ + document.write('
'); + for (i in lightdm.users) + { + user = lightdm.users[i]; + + if (user.image.match(/\.face$/)) + image = '/usr/share/icons/Adwaita/256x256/emotes/face-laugh.png'; + else + image = user.image; + + document.write('
'); + document.write(''+user.display_name+''); + + if (user.name == lightdm.autologin_user && lightdm.autologin_timeout > 0) + document.write(''); + + document.write('
'); + } + document.write('
'); + + + time_remaining = lightdm.autologin_timeout; + if (time_remaining > 0) + countdown(); +} -- cgit v1.1