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);
}
}