var DEBUG = true; var selectedUser = null; var authPending = null; var users_shown = null; function buildUserList() { // User list building var userList = document.getElementById('user-list2'); for (var i in lightdm.users) { var user = lightdm.users[i]; var tux = 'img/antergos-logo-user.png'; var imageSrc = user.image.length > 0 ? user.image : tux; var lastSession = localStorage.getItem(user.name); if (lastSession == null || lastSession == undefined) { localStorage.setItem(user.name, lightdm.default_session); lastSession = localStorage.getItem(user.name); } log('Last Session (' + user.name + '): ' + lastSession); var li = '' + '' + user.display_name + ' ' + '' + user.display_name + '' + '' + ''; $(userList).append(li); } } function buildSessionList() { // Build Session List for (i in lightdm.sessions) { var session = lightdm.sessions[i]; var btnGrp = document.getElementById('sessions'); var theClass = session.name.replace(/ /g, ''); var button = '\n
  • ' + session.name + '
  • '; $(btnGrp).append(button); } } function show_users() { if ($('#collapseOne').hasClass('in')) { $('#trigger').trigger('click'); users_shown = true; } if ($('#user-list2 a').length <= 1) $('#user-list2 a').trigger('click'); } /** * UI Initialization. */ $(document).ready(function () { initialize_timer(); get_hostname(); buildUserList(); buildSessionList(); // Password submit when enter key is pressed $(document).keydown(function (e) { checkKey(e); }); // Action buttons addActionLink("shutdown"); addActionLink("hibernate"); addActionLink("suspend"); addActionLink("restart"); }); function get_hostname() { var hostname = lightdm.hostname; var hostname_span = document.getElementById('hostname'); $(hostname_span).append(hostname); } /** * Actions management. * * */ function update_time() { var time = document.getElementById("current_time"); var date = new Date(); var twelveHr = [ 'sq-al', 'zh-cn', 'zh-tw', 'en-au', 'en-bz', 'en-ca', 'en-cb', 'en-jm', 'en-ng', 'en-nz', 'en-ph', 'en-us', 'en-tt', 'en-zw', 'es-us', 'es-mx']; var userLang = window.navigator.language; var is_twelveHr = twelveHr.indexOf(userLang); var hh = date.getHours(); var mm = date.getMinutes(); var suffix = "AM"; if (hh >= 12) { suffix = "PM"; if (is_twelveHr !== -1 && is_twelveHr !== 12) { hh = hh - 12; } } if (mm < 10) { mm = "0" + mm; } if (hh === 0 && is_twelveHr !== -1) { hh = 12; } time.innerHTML = hh + ":" + mm + " " + suffix; } function initialize_timer() { var userLang = window.navigator.language; log(userLang); update_time(); setInterval(update_time, 60000); } function checkKey(event) { var action; switch (event.which) { case 13: action = authPending ? submitPassword() : !users_shown ? show_users() : 0; log(action); break; case 27: action = authPending ? cancelAuthentication() : 0; log(action); break; case 32: action = !users_shown && !authPending ? show_users() : 0; log(action); break; default: break; } } function addActionLink(id) { if (eval("lightdm.can_" + id)) { var label = id.substr(0, 1).toUpperCase() + id.substr(1, id.length - 1); var id2; if (id == "shutdown") { id2 = "power-off" } if (id == "hibernate") { id2 = "asterisk" } if (id == "suspend") { id2 = "arrow-down" } if (id == "restart") { id2 = "refresh" } $("#actionsArea").append('\n'); } } function capitalize(string) { return string.charAt(0).toUpperCase() + string.slice(1); } function handleAction(id) { log("handleAction(" + id + ")"); eval("lightdm." + id + "()"); } function getUserObj(username) { var user = null; for (var i = 0; i < lightdm.users.length; ++i) { if (lightdm.users[i].name == username) { user = lightdm.users[i]; break; } } return user; } function getSessionObj(sessionname) { var session = null; for (var i = 0; i < lightdm.sessions.length; ++i) { if (lightdm.sessions[i].name == sessionname) { session = lightdm.sessions[i]; break; } } return session; } function startAuthentication(userId) { log("startAuthentication(" + userId + ")"); if (selectedUser !== null) { lightdm.cancel_authentication(); localStorage.setItem('selUser', null); log("authentication cancelled for " + selectedUser); } localStorage.setItem('selUser', userId); selectedUser = '.' + userId; $(selectedUser).addClass('hovered'); $(selectedUser).siblings().hide(); $('.fa-toggle-down').hide(); var usrSession = localStorage.getItem(userId); log("usrSession: " + usrSession); var usrSessionEl = "#" + usrSession; var usrSessionName = $(usrSessionEl).html(); log("usrSessionName: " + usrSessionName); $('.selected').html(usrSessionName); $('.selected').attr('id', usrSession); $('#session-list').removeClass('hidden'); $('#session-list').show(); $('#passwordArea').show(); authPending = true; lightdm.start_authentication(userId); } function cancelAuthentication() { log("cancelAuthentication()"); $('#statusArea').hide(); $('#timerArea').hide(); $('#passwordArea').hide(); $('#session-list').hide(); lightdm.cancel_authentication(); log("authentication cancelled for " + selectedUser); $('.list-group-item').removeClass('hovered').siblings().show(); $('.fa-toggle-down').show(); selectedUser = null; authPending = false; return true; } function submitPassword() { log("provideSecret()"); lightdm.provide_secret($('#passwordField').val()); $('#passwordArea').hide(); $('#timerArea').show(); log("done"); } /** * Image loading management. */ function imgNotFound(source) { source.src = 'img/antergos-logo-user.png'; source.onerror = ""; return true; } function sessionToggle(el) { var selText = $(el).text(); var theID = $(el).attr('id'); var selUser = localStorage.getItem('selUser'); $(el).parents('.btn-group').find('.selected').attr('id', theID); $(el).parents('.btn-group').find('.selected').html(selText); localStorage.setItem(selUser, theID) } /** * Lightdm Callbacks */ function show_prompt(text) { log("show_prompt(" + text + ")"); $('#passwordField').val(""); $('#passwordArea').show(); $('#passwordField').focus(); } function authentication_complete() { log("authentication_complete()"); authPending = false; $('#timerArea').hide(); var selSession = $('.selected').attr('id'); if (lightdm.is_authenticated) { log("authenticated !"); lightdm.login(lightdm.authentication_user, selSession); } else { log("not authenticated !"); $('#statusArea').show(); } } function show_message(text) { msgWrap = document.getElementById('statusArea'); showMsg = document.getElementById('showMsg'); showMsg.innerHTML = text; if (text.length > 0) { $('#passwordArea').hide(); $(msgWrap).show(); } } function show_error(text) { show_message(text); } /** * Logs. */ function log(text) { if (DEBUG) { $('#logArea').append(text); $('#logArea').append('
    '); } }