diff --git a/code/serveur/php/jeu.html b/code/serveur/php/jeu.html index 6b89889..8b28d01 100644 --- a/code/serveur/php/jeu.html +++ b/code/serveur/php/jeu.html @@ -104,7 +104,7 @@
-
Connexion
+
Connexion
diff --git a/code/serveur/php/ressources/pticlic.js b/code/serveur/php/ressources/pticlic.js index 80d893d..daa2898 100644 --- a/code/serveur/php/ressources/pticlic.js +++ b/code/serveur/php/ressources/pticlic.js @@ -16,6 +16,7 @@ $.ajaj = function(url, data, dfd, retryCheck, callback) { if (callback) return $.getJSON(url, data, callback); return $.getJSON(url, data, function(data) { if (data.isError) { + isConnected(false); dfd.reject(data); message("Erreur", data.msg); if ((data.error == 10 || data.error == 3) && state.screen == fromScreen && (!retryCheck || retryCheck())) { @@ -24,9 +25,11 @@ $.ajaj = function(url, data, dfd, retryCheck, callback) { $.screen('frontpage').trigger('goto'); } } else { + isConnected(true); dfd.resolve(data); } }).fail(function(data) { + isConnected(false); dfd.reject(data); $("#frontpage").trigger('goto'); message("Erreur", "Une erreur est survenue, veuillez nous en excuser."); @@ -198,6 +201,9 @@ init(function() { window.document.title = "PtiClic pre-alpha 0.2"; if (runstate.pendingSetPrefs) runstate.pendingSetPrefs(); }); + $.screen('frontpage').bind('update', function() { + $('.dis-connect').text(isConnected() ? "Déconnexion" : "Connexion"); + }); if (UI().isAndroid()) $('#back2site').hide(); $('#frontpage a.fpButton').$each(function(i,e) { e.find('img.icon').data('image', e.attr('href').substring(1)); @@ -205,6 +211,15 @@ init(function() { }); // ==== Écran connexion +function isConnected(arg) { + if (typeof arg == 'undefined') { + return !!runstate.connected; + } else { + runstate.connected = !!arg; + if (runstate.screen == 'frontpage') $.screen('frontpage').trigger('update'); + } +} + init(function() { $('#connection.screen form').submit(function() { runstate.user = $('#user').val(); @@ -231,6 +246,21 @@ init(function() { runstate.cancelPendingSetPrefs(); if (state.screen == 'frontpage') $.screen('frontpage').trigger('goto'); }); + + $('a[href="#connection"]').click(function() { + if (isConnected()) { + UI().setPreference("user", ''); + UI().setPreference("passwd", ''); + runstate.user = ''; + runstate.passwd = ''; + $.ajaj("server.php?callback=?", { action: 9 }, null, null, function(data) { + isConnected(false); + message("Succès", "Vous êtes déconnecté."); + loadPrefs({theme:"green"}); + }); + return false; + } + }); }); // ==== Écran game @@ -365,6 +395,7 @@ runstate.serverPrefs = $.extend({}, runstate.prefs); function loadPrefs(prefs) { var previousTheme = runstate.prefs ? runstate.prefs.theme : 'green'; if (prefs && prefs.theme) { + isConnected(true); runstate.prefs = prefs; runstate.serverPrefs = $.extend({}, runstate.prefs); if (runstate.loaded && previousTheme != runstate.prefs.theme) jss(); @@ -383,8 +414,8 @@ function setPrefs(prefs, callback) { runstate.pendingGetPrefs = function() { $.ajaj("server.php?callback=?", { action: 7 }, null, null, function(data) { - if (data.theme) { runstate.connected = true; message("Succès", "Vous êtes connecté.", data.msg); loadPrefs(data); } - if (data.isError) message("Erreur", data.msg); + if (data.theme) { isConnected(true); message("Succès", "Vous êtes connecté."); loadPrefs(data); } + if (data.isError) { isConnected(false); message("Erreur", data.msg); } }); }; diff --git a/code/serveur/php/server.php b/code/serveur/php/server.php index 4626d46..1af57c4 100644 --- a/code/serveur/php/server.php +++ b/code/serveur/php/server.php @@ -111,8 +111,10 @@ function main() setUserPref($user, $_GET['key'], $_GET['value']); userPrefs($user); - } - else { + } elseif ($action == 9) { + session_destroy(); + echo '{"disconnected":true}'; + } else { throw new Exception("Commande inconnue", 2); } }