commit 76d31ae5b0b627a9fd77f2708854064e4bdc0d9c
parent 08449d4296b0edcf40a9e721b2089ac55dd01bfa
Author: Bertrand BRUN <bertrand0brun@gmail.com>
Date: Sun, 8 May 2011 22:08:54 +0200
Merge branch 'unstable' of https://github.com/jsmaniac/2011-m1s2-ter into unstable
Diffstat:
9 files changed, 344 insertions(+), 310 deletions(-)
diff --git a/code/serveur/php/jeu.html b/code/serveur/php/jeu.html
@@ -1,122 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <title>PtiClic pre-alpha 0.2</title>
- <meta charset="utf-8" />
- <meta name="viewport" content="target-densitydpi=device-dpi" />
- <style>.screen { display: none; }</style>
- <link rel="stylesheet" href="ressources/green.css" title="green" />
- <link rel="alternate stylesheet" href="ressources/black.css" title="black" />
- <script src="ressources/jquery-1.5.1.min.js"></script>
- <script src="ressources/jquery-ui-1.8.11.custom.min.js"></script>
- <script src="ressources/jquery.ba-hashchange.min.js"></script>
- <script src="ressources/jquery.JSON.js"></script>
- <script src="ressources/my-extensions.js"></script>
- <script src="ressources/pticlic.js"></script>
- </head>
- <body>
- <div id="nojs">Chargement…</div>
- <div class="screen" id="splash">
- <img src="ressources/img/splash.png" />
- </div>
- <div class="screen" id="game">
- <div id="mc-caption-block"></div>
- <div id="mn-caption-block"></div>
- <div id="mc-caption" class="mc"></div>
- <div id="mn-caption" class="mn"></div>
- <div class="relations"></div>
- </div>
- <div class="screen" id="frontpage">
- <div id="title-block"></div>
-
- <span id="title">PtiClic</span>
- <div class="frontpage-button game">
- <div><img class="icon" alt="" src="ressources/img/72/default.png" /></div>
- <div class="text">Jouer</div>
- </div>
- <div class="frontpage-button prefs">
- <div><img class="icon" alt="" src="ressources/img/72/default.png" /></div>
- <div class="text">Configuration</div>
- </div>
- <div class="frontpage-button connection">
- <div><img class="icon" alt="" src="ressources/img/72/default.png" /></div>
- <div class="text">Connexion</div>
- </div>
- <div class="frontpage-button info">
- <div><img class="icon" alt="" src="ressources/img/72/default.png" /></div>
- <div class="text">A Propos</div>
- </div>
- </div>
- <div class="screen" id="score">
- <h1>Score total : <span class="scoreTotal"></span></h1>
- <div class="scores"></div>
- <input type="button" value="J'ai vu !" id="jaivu"/>
- </div>
- <div class="screen" id="connection">
- <form id="connect-form" action="#" method="GET">
- <label id="user-label" for="user">Login : </label>
- <input type="text" name="user" id="user" />
- <label id="passwd-label" for="passwd">Mot de passe : </label>
- <input type="password" name="passwd" id="passwd" />
- <input type="submit" name="connect" id="connect" value="Se connecter" />
- </form>
- </div>
- <div class="screen" id="info">
- <div class="container">
- <p>
- PtiClic a été conçu et développé par Mathieu Lafourcade
- (LIRMM - Université Montpellier 2) et Virginie Zampa
- (LIDILEM - Université Stendhal Grenoble 3)
- </p>
- <p>
- La présente version pour SmartPhone sous Android, en cours
- de développement a été conçue et réalisée par des
- étudiants en Master 1 à l'Université Montpellier II :
- Yoann BONAVERO, Bertrand BRUN, John CHARRON et
- Georges DUPÉRON.
- </p>
- <p>
- Cette version du PtiClic est une version Alpha. Elle n'est
- pas exempte de bogues.
- </p>
- <p>
- Si vous souhaitez participer au projet en tant que
- Bêta-testeur, rendez-vous sur le site
- <a href="http://pticlic.fr/">http://pticlic.fr</a>
- pour vous y inscrire.
- </p>
- <p>
- Si vous souhaitez signaler des bogues ou nous faire part
- de vos commentaires, vous pouvez nous contacter par
- courriel à l'adresse suivante : <a href="mailto:pticlic.android.beta@gmail.com">pticlic.android.beta@gmail.com</a>
- </p>
- <p id="info-back-p">
- <input id="info-back" type="button" value="Retour" />
- </p>
- </div>
- </div>
- <div class="screen" id="prefs">
- <form id="prefs-form" action="#" method="GET">
- <label id="theme-label" for="theme">Thème : </label>
- <select name="theme" id="theme">
- <option value="green">Colline verdoyante</option>
- <option value="black">Bas-fond de cachot</option>
- </select>
- <input type="submit" name="prefs-apply" id="prefs-apply" value="Appliquer" />
- <input type="reset" name="prefs-cancel" id="prefs-cancel" value="Annuler" />
- </form>
- </div>
- <div id="templates" style="display: none;">
- <div class="relationBox">
- <div class="relation"><img class="icon" alt="" src="ressources/img/72/default.png" /><span class="text"></span></div>
- <div class="clearboth"></div>
- </div>
- <div class="scoreLine">
- <span class="word"></span> (<span class="score"></span>)
- </div>
- </div>
- <div id="message" style="display: none;">
- </div>
- </body>
-</html>
-<html>
diff --git a/code/serveur/php/jeu.php b/code/serveur/php/jeu.php
@@ -0,0 +1,121 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>PtiClic pre-alpha 0.2</title>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="target-densitydpi=device-dpi" />
+ <style>.screen { display: none; }</style>
+ <script src="ressources/jquery-1.5.1.min.js"></script>
+ <script src="ressources/jquery-ui-1.8.11.custom.min.js"></script>
+ <script src="ressources/jquery.ba-hashchange.min.js"></script>
+ <script src="ressources/jquery.JSON.js"></script>
+ <script src="ressources/my-extensions.js"></script>
+ <script src="ressources/pticlic.js"></script>
+ <script src="server.php?callback=prefs.loadPrefs&action=7"></script>
+ </head>
+ <body>
+ <div id="nojs">Chargement…</div>
+ <div class="screen" id="splash">
+ <img src="ressources/img/splash.png" />
+ </div>
+ <div class="screen" id="game">
+ <div id="mc-caption-block"></div>
+ <div id="mn-caption-block"></div>
+ <div id="mc-caption" class="mc"></div>
+ <div id="mn-caption" class="mn"></div>
+ <div class="relations"></div>
+ </div>
+ <div class="screen" id="frontpage">
+ <div id="title-block"></div>
+
+ <span id="title">PtiClic</span>
+ <div class="frontpage-button game">
+ <div><img class="icon" alt="" src="ressources/img/72/default.png" /></div>
+ <div class="text">Jouer</div>
+ </div>
+ <div class="frontpage-button prefs">
+ <div><img class="icon" alt="" src="ressources/img/72/default.png" /></div>
+ <div class="text">Configuration</div>
+ </div>
+ <div class="frontpage-button connection">
+ <div><img class="icon" alt="" src="ressources/img/72/default.png" /></div>
+ <div class="text">Connexion</div>
+ </div>
+ <div class="frontpage-button info">
+ <div><img class="icon" alt="" src="ressources/img/72/default.png" /></div>
+ <div class="text">A Propos</div>
+ </div>
+ </div>
+ <div class="screen" id="score">
+ <h1>Score total : <span class="scoreTotal"></span></h1>
+ <div class="scores"></div>
+ <input type="button" value="J'ai vu !" id="jaivu"/>
+ </div>
+ <div class="screen" id="connection">
+ <form id="connect-form" action="#" method="GET">
+ <label id="user-label" for="user">Login : </label>
+ <input type="text" name="user" id="user" />
+ <label id="passwd-label" for="passwd">Mot de passe : </label>
+ <input type="password" name="passwd" id="passwd" />
+ <input type="submit" name="connect" id="connect" value="Se connecter" />
+ </form>
+ </div>
+ <div class="screen" id="info">
+ <div class="container">
+ <p>
+ PtiClic a été conçu et développé par Mathieu Lafourcade
+ (LIRMM - Université Montpellier 2) et Virginie Zampa
+ (LIDILEM - Université Stendhal Grenoble 3)
+ </p>
+ <p>
+ La présente version pour SmartPhone sous Android, en cours
+ de développement a été conçue et réalisée par des
+ étudiants en Master 1 à l'Université Montpellier II :
+ Yoann BONAVERO, Bertrand BRUN, John CHARRON et
+ Georges DUPÉRON.
+ </p>
+ <p>
+ Cette version du PtiClic est une version Alpha. Elle n'est
+ pas exempte de bogues.
+ </p>
+ <p>
+ Si vous souhaitez participer au projet en tant que
+ Bêta-testeur, rendez-vous sur le site
+ <a href="http://pticlic.fr/">http://pticlic.fr</a>
+ pour vous y inscrire.
+ </p>
+ <p>
+ Si vous souhaitez signaler des bogues ou nous faire part
+ de vos commentaires, vous pouvez nous contacter par
+ courriel à l'adresse suivante : <a href="mailto:pticlic.android.beta@gmail.com">pticlic.android.beta@gmail.com</a>
+ </p>
+ <p id="info-back-p">
+ <input id="info-back" type="button" value="Retour" />
+ </p>
+ </div>
+ </div>
+ <div class="screen" id="prefs">
+ <form id="prefs-form" action="#" method="GET">
+ <fieldset id="theme">
+ <legend>Thème</legend>
+ <input type="radio" id="theme-green" name="theme" value="green" /><label for="theme-green">Colline verdoyante</label><br/>
+ <input type="radio" id="theme-black" name="theme" value="black" /><label for="theme-black">Bas-fond de cachot</label>
+ </fieldset>
+ <input type="submit" name="prefs-apply" id="prefs-apply" value="Appliquer" />
+ <input type="reset" name="prefs-cancel" id="prefs-cancel" value="Annuler" />
+ </form>
+ </div>
+ <div id="templates" style="display: none;">
+ <div class="relationBox">
+ <div class="relation"><img class="icon" alt="" src="ressources/img/72/default.png" /><span class="text"></span></div>
+ <div class="clearboth"></div>
+ </div>
+ <div class="scoreLine">
+ <span class="word"></span> (<span class="score"></span>)
+ </div>
+ </div>
+ <div id="message" style="display: none;">
+ </div>
+ </body>
+</html>
+<html>
diff --git a/code/serveur/php/ressources/backend.inc b/code/serveur/php/ressources/backend.inc
@@ -795,9 +795,6 @@ function userPrefs($user) {
function setUserPref($user, $key, $value) {
if (array_key_exists($key, userPrefsDefaults())) {
setUserInfo($user, $key, $value);
- echo 'true';
- } else {
- echo 'false';
}
}
diff --git a/code/serveur/php/ressources/black.css b/code/serveur/php/ressources/black.css
@@ -1,40 +0,0 @@
-/* Colors */
-
-html, body {
- background-color: black;
- color: white;
-}
-
-#nojs {
- color: white;
-}
-
-.screen {
- background-color: black;
-}
-
-#splash.screen {
- background-color: black;
-}
-
-#mc-caption {
- color: white;
-}
-
-#mn-caption {
- color: white;
-}
-
-#mn-caption-block {
- border-color: #aaaaaa;
- background-color: #222222;
-}
-
-#message, .relationBox {
- border-color: #cccccc;
- background-color: #222222;
-}
-
-.relations .hot {
- background-color: #cccccc;
-}
diff --git a/code/serveur/php/ressources/green.css b/code/serveur/php/ressources/green.css
@@ -1,40 +0,0 @@
-/* Colors */
-
-html, body {
- background-color: black;
- color: black;
-}
-
-#nojs {
- color: white;
-}
-
-.screen {
- background-color: #FFFFE0;
-}
-
-#splash.screen {
- background-color: black;
-}
-
-#mc-caption {
- color: #8b4;
-}
-
-#mn-caption {
- color: #4a4;
-}
-
-#mn-caption-block {
- border-color: #44AA44;
- background-color: #F0F8D0;
-}
-
-#message, .relationBox {
- border-color: #44AA44;
- background-color: #F0F8D0;
-}
-
-.relations .hot {
- background-color: yellow;
-}
diff --git a/code/serveur/php/ressources/menu.inc b/code/serveur/php/ressources/menu.inc
@@ -4,7 +4,7 @@
<span id="links">
<a href="index.php">Accueil</a>
<a href="download.php">Téléchargement</a>
- <a href="jeu.html">Jouer en ligne</a>
+ <a href="jeu.php">Jouer en ligne</a>
<!-- <a href=".php">Créer des parties</a> -->
<a href="contact.php">Contact</a>
<?php
diff --git a/code/serveur/php/ressources/my-extensions.js b/code/serveur/php/ressources/my-extensions.js
@@ -45,19 +45,22 @@ $.fn.sumHeight = function() {
} catch(e) {alert("Error sumHeight");alert(e);}
}
-$.fn.fitFont = function(w, h, minFont, maxFont, noContainer) {
+$.fn.fitFont = function(w, h, minFont, maxFont, noContainer, oneline) {
try {
var oldpos = this.css("position");
- this.css({
- position: "absolute",
- maxWidth: w
- });
+ this.css({position: "absolute"});
+
+ if (oneline)
+ this.css("white-space", "nowrap");
+ else
+ this.css({maxWidth: w});
+
if (noContainer) {
var wrappers = this;
} else {
var wrappers = this.wrapInner("<span/>").children();
}
-
+
var that = this;
this.css("font-size", dichotomy(parseInt(this.css("font-size"), 10), function(x) {
try {
diff --git a/code/serveur/php/ressources/pticlic.js b/code/serveur/php/ressources/pticlic.js
@@ -75,11 +75,11 @@ function jss() {
borderStyle: 'solid',
MozBorderRadius: 10,
WebkitBorderRadius: 10,
- padding: 10,
textAlign: 'center'
})
- .wh(w/2, h*0.1)
.fitFont(w/2, h*0.1)
+ .css('max-width', w*0.6)
+ .width(w*0.6)
.center({left: w/2, top:h*0.1});
$("#"+state.screen+".screen")
@@ -108,9 +108,91 @@ function jss() {
e.attr("src", "ressources/img/"+iconSize+"/"+e.data('image')+".png");
} catch(e) {alert("Error anonymous in jss");alert(e);}
});
+
+ jssTheme(runstate.prefs.theme);
} catch(e) {alert("Error jss");alert(e);}
}
+function jssTheme(theme) {
+ if (theme == "black") {
+ var bg1 = "black";
+ var fg1 = "white";
+ var bg2 = "#222222";
+ var fg2 = "#cccccc";
+ var fg3 = "white";
+ var hot = "#aaaaaa";
+ } else {
+ var bg1 = "#ffffe0";
+ var fg1 = "black";
+ var bg2 = "#f0f8d0";
+ var fg2 = "#4a4";
+ var fg3 = "#8b4";
+ var hot = "yellow";
+ }
+ var splashbg = "black";
+ var splashfg = "white";
+ var screenbg = bg1;
+ var screenfg = fg1;
+ var messagebg = bg2;
+ var messagefg = fg1;
+ var messagebd = fg2;
+ var centralfg = fg3;
+ var cloudbg = bg2;
+ var cloudfg = fg2;
+ var cloudbd = fg2;
+ var relationbg = bg2;
+ var relationbd = fg2;
+ var fphoverbg = bg2;
+ var fphoverbd = fg2;
+ var hotbg = hot;
+
+ $('.screen').css({
+ color: screenfg,
+ backgroundColor: screenbg
+ });
+
+ $('html, body, #splash.screen').css({
+ backgroundColor: splashbg,
+ color: splashfg
+ });
+
+ $("#message").css({
+ backgroundColor: messagebg,
+ color: messagefg,
+ borderColor: messagebd
+ });
+
+ $(".frontpage-button").hover(function() {
+ $(this).css({
+ backgroundColor: fphoverbg,
+ outline: "medium solid "+fphoverbd
+ });
+ }, function() {
+ $(this).css({
+ outline: '',
+ backgroundColor: "transparent"
+ });
+ });
+
+ $('#mc-caption').css({color: centralfg});
+
+ $('#mn-caption').css({color: cloudfg});
+
+ $('#mn-caption-block').css({
+ borderColor: cloudbd,
+ backgroundColor: cloudbg
+ });
+
+ $('.relationBox').css({
+ borderColor: relationbd,
+ backgroundColor: relationbg
+ });
+
+ $('.relations .hot').css({backgroundColor: hotbg});
+
+ $("a, a:visited").css({color: "#8888ff"});
+}
+
// ==== Interface Android
function UI () {
try {
@@ -131,19 +213,8 @@ function UI () {
},
info: function(title, msg) {
try {
- $('#message')
- .qCss('opacity',0)
- .qShow()
- .queue(function(next){
- $('#message')
- .text(msg);
- jss();
- next();
- })
- .animate({opacity:0.9}, 700)
- .delay(1000)
- .animate({opacity:0}, 700);
- } catch(e) {alert("Error UI().info");alert(e);}
+ alert(msg);
+ } catch(e) {alert("Error UI().info");alert(e);}
},
setScreen: function() {}
};
@@ -151,40 +222,64 @@ function UI () {
} catch(e) {alert("Error UI");alert(e);}
}
+function UIInfo(title, msg) {
+ try {
+ $('#message')
+ .qCss('opacity',0)
+ .qShow()
+ .queue(function(next){
+ try {
+ $('#message')
+ .text(msg);
+ jss();
+ next();
+ } catch(e) {alert("Error anonymous in UIInfo");alert(e);}
+ })
+ .animate({opacity:0.9}, 700)
+ .delay(5000)
+ .animate({opacity:0}, 700);
+ } catch(e) {alert("Error UI().info");alert(e);}
+}
+
// ==== Code métier général
$(function() {
try {
- $(window).resize(jss);
- $(window).hashchange(hashchange);
- hashchange();
+ $(window).resize(jss);
+ $(window).hashchange(hashchange);
+ hashchange();
+ runstate.loaded = true;
} catch(e) {alert("Error main function");alert(e);}
});
// ==== Asynchronous Javascript And Json.
ajaj = {};
ajaj.request = function(url, data, okFunction, smallErrorFunction, bigErrorFunction) {
- smallErrorFunction = smallErrorFunction || ajaj.smallError;
- bigErrorFunction = bigErrorFunction || ajaj.bigError;
- var user = UI().getPreference("user");
- var passwd = UI().getPreference("passwd");
- if (user != '' && passwd != '') {
- // TODO : on transfère le user/passwd à chaque fois ici… c'est pas très bon.
- data = $.extend({user:user, passwd:passwd}, data);
- }
try {
+ smallErrorFunction = smallErrorFunction || ajaj.smallError;
+ bigErrorFunction = bigErrorFunction || ajaj.bigError;
+ var user = "" + UI().getPreference("user");
+ var passwd = "" + UI().getPreference("passwd");
+ if (user != '' && passwd != '') {
+ if (!data.user) data.user = user;
+ if (!data.passwd) data.passwd = passwd;
+ }
+
return $.getJSON(url, data, function(data) {
+ try {
if (data && data.isError) {
smallErrorFunction(data);
} else {
okFunction(data);
}
+ } catch(e) {alert("Error anonymous in ajaj.request");alert(e);}
}).error(bigErrorFunction);
} catch(e) {alert("Error ajaj.request");alert(e);}
}
-ajaj.smallError = function(x) {
+ajaj.smallError = function(x, ignoreConnect) {
try {
if (x.error == 10) {
- state.set('screen', 'connection').commit().validate();
+ if (!ignoreConnect)
+ state.set('screen', 'connection').commit().validate();
} else {
ajaj.error(
"Erreur fatale. Merci de nous envoyer ce message : \n"
@@ -210,7 +305,6 @@ ajaj.error = function(msg) {
try {
UI().dismiss();
UI().info("Erreur !", msg);
- UI().exit();
} catch(e) {alert("Error ajaj.error");alert(e);}
}
@@ -232,10 +326,9 @@ splash.jss = function(w,h,iconSize) {
splash.enter = function() {
try {
// Si l'application est déjà chargée, on zappe directement jusqu'à la frontpage.
- if (runstate.skipSplash) {
+ if (runstate.loaded) {
splash.click.goFrontpage();
} else {
- runstate.skipSplash = true;
jss();
$('#splash.screen').clickOnce(splash.click.goFrontpage);
}
@@ -267,7 +360,8 @@ frontpage.jss = function(w, h, iconSize) {
var hh = h - nbRows * iconSize;
var titleHeight = hh*0.4;
var labelHeight = hh*0.4 / nbRows;
- var buttonHeight = labelHeight + iconSize;
+ var buttonPadding = hh*0.05/nbRows;
+ var buttonHeight = labelHeight + iconSize + buttonPadding;
var buttonWidth = Math.max(w*0.25,iconSize);
var freeSpace = h - titleHeight;
$fp("#title-block")
@@ -288,17 +382,20 @@ frontpage.jss = function(w, h, iconSize) {
$fp(".info .icon").data('image', 'aide');
$fp(".frontpage-button")
- .css('text-align', 'center')
+ .css({
+ textAlign: 'center',
+ paddingTop: buttonPadding
+ })
.width(buttonWidth);
$fp(".frontpage-button > div").css('display', 'block');
+ var interIconSpace = (freeSpace - nbRows * buttonHeight) / (nbRows + 1);
$fp(".frontpage-button").each(function(i,e){
try {
e=$(e);
var currentRow = Math.floor(i/2);
var currentColumn = i % 2;
- var interIconSpace = (freeSpace - nbRows * buttonHeight) / (nbRows + 1);
var iconOffset = titleHeight + ((currentRow+1) * interIconSpace) + (currentRow * buttonHeight);
if (currentColumn == 0) {
e.northEast({left:w/2-ww*0.05,top:iconOffset});
@@ -621,6 +718,34 @@ score.click.jaivu = function() {
} catch(e) {alert("Error score.click.jaivu");alert(e);}
};
+// ==== Code métier pour la page d'info
+info = {};
+
+info.jss = function(w,h,iconSize) {
+ try {
+ $("#info-back-p").css('text-align', 'center');
+ $("#info.screen .container input").css('font-size', 'inherit');
+ $("#info.screen .container")
+ .fitFont(w*0.9, h*0.9, null, null, true)
+ .center($("#info.screen"));
+ } catch(e) {alert("Error info.jss");alert(e);}
+}
+
+info.enter = function() {
+ try {
+ $("#info-back").clickOnce(info.click.goBack);
+ jss();
+ UI().dismiss();
+ } catch(e) {alert("Error info.enter");alert(e);}
+};
+
+info.click = {};
+info.click.goBack = function(){
+ try {
+ state.set('screen', 'frontpage').validate();
+ } catch(e) {alert("Error anonymous in info.enter");alert(e);}
+};
+
// ==== Code métier pour la connexion
connection = {};
@@ -634,13 +759,11 @@ connection.jss = function(w, h, iconSize) {
};
$c("input, label")
- .css("white-space", "nowrap")
- .css('position', 'absolute')
- .fitFont(w*0.3, h*0.06);
- $c("#user-label").east({left:w*0.45,top:h*0.25});
- $c("#user").west({left:w*0.55,top:h*0.25});
- $c("#passwd-label").east({left:w*0.45,top:h*0.5});
- $c("#passwd").west({left:w*0.55,top:h*0.5});
+ .fitFont(w*0.45, h*0.06, null, null, true, true);
+ $c("#user-label").east({left:w*0.475,top:h*0.25});
+ $c("#user").west({left:w*0.525,top:h*0.25});
+ $c("#passwd-label").east({left:w*0.475,top:h*0.5});
+ $c("#passwd").west({left:w*0.525,top:h*0.5});
$c("#connect").center({left:w/2,top:h*0.75});
} catch(e) {alert("Error connection.jss");alert(e);}
};
@@ -658,7 +781,7 @@ connection.connect = function() {
UI().setPreference("user", $("#user").val());
UI().setPreference("passwd", $("#passwd").val());
ajaj.request("server.php?callback=?", {
- action: 3,
+ action: 7,
user: $("#user").val(),
passwd: $("#passwd").val(),
}, connection.connectFetched, connection.connectFetched);
@@ -668,43 +791,20 @@ connection.connect = function() {
connection.connectFetched = function(data) {
try {
- if (data && data.loginOk) {
- UI().info("Connexion", "Vous êtes connecté !");
+ if (data && data.theme) {
+ prefs.loadPrefs();
+ UIInfo("Connexion", "Vous êtes connecté !");
} else if (data && data.isError && data.error == 3) {
- UI().info("Connexion", data.msg);
+ prefs.loadPrefs();
+ UIInfo("Connexion", data.msg);
} else {
+ prefs.loadPrefs();
ajaj.smallError(data);
}
state.set('screen', 'frontpage').validate();
} catch(e) {alert("Error connection.connectFetched");alert(e);}
}
-// ==== Code métier pour la page d'info
-info = {};
-
-info.jss = function(w,h,iconSize) {
- $("#info-back-p").css('text-align', 'center');
- $("#info.screen .container input").css('font-size', 'inherit');
- $("#info.screen .container")
- .fitFont(w*0.9, h*0.9, null, null, true)
- .center($("#info.screen"));
-}
-
-info.enter = function() {
- try {
- $("#info-back").clickOnce(info.click.goBack);
- jss();
- UI().dismiss();
- } catch(e) {alert("Error info.enter");alert(e);}
-};
-
-info.click = {};
-info.click.goBack = function(){
- try {
- state.set('screen', 'frontpage').validate();
- } catch(e) {alert("Error anonymous in info.enter");alert(e);}
-};
-
// ==== Code métier pour la page de configuration
prefs = {};
@@ -717,14 +817,13 @@ prefs.jss = function(w,h,iconSize) {
} catch(e) {alert("Error anonymous 1 in prefs.jss");alert(e);}
};
- $("input, label, select")
- .css("white-space", "nowrap")
- .css('position', 'absolute')
- .fitFont(w*0.3, h*0.06);
- $p("#theme-label").east({left:w*0.45,top:h*0.25});
- $p("#theme").west({left:w*0.55,top:h*0.25});
- $p("#prefs-cancel").east({left:w*0.45,top:h*0.5});
- $p("#prefs-apply").west({left:w*0.55,top:h*0.5});
+ $p("input, label")
+ .fitFont(w*0.45, h*0.06, null, null, true, true);
+ $p("legend")
+ .fitFont(w*0.3, h*0.05, null, null, true, true);
+ $p("#theme").center({left:w*0.5,top:h*0.25});
+ $p("#prefs-cancel").east({left:w*0.475,top:h*0.5});
+ $p("#prefs-apply").west({left:w*0.525,top:h*0.5});
} catch(e) {alert("Error prefs.jss");alert(e);}
}
@@ -732,6 +831,9 @@ prefs.enter = function() {
try {
$("#prefs-form").unbind('submit', prefs.apply).submit(prefs.apply);
$("#prefs-cancel").clickOnce(prefs.cancel);
+ $("#prefs-form input:radio[name=theme]").attr('checked', function(i,val) {
+ return $(this).val() == runstate.prefs.theme;
+ });
jss();
UI().dismiss();
} catch(e) {alert("Error prefs.enter");alert(e);}
@@ -739,32 +841,42 @@ prefs.enter = function() {
prefs.apply = function(){
try {
- var newtheme = $("#theme").val();
+ var newtheme = $("#prefs-form input:radio[name=theme]:checked").val();
ajaj.request("server.php?callback=?", {
action: 8,
key: 'theme',
value: newtheme
}, function(data) {
- if (data)
- UI().info("Préférences", "Les préférences ont été enregistrées.");
- else
- UI().info("Préférences", "Les préférences n'ont pas pu être enregistrées.");
- });
- $("link[@rel*=stylesheet][title]").each(function(i,e){
- // Il semblerait que pour qu'un "aleternate stylesheet" puisse être activé, il faut d'abord qu'il ait été désactivé…
- e.disabled = true;
- e.disabled = (e.getAttribute('title') != newtheme);
+ try {
+ if (data.theme) {
+ UIInfo("Préférences", "Les préférences ont été enregistrées.");
+ prefs.loadPrefs(data);
+ } else {
+ UIInfo("Préférences", "Les préférences n'ont pas pu être enregistrées.");
+ }
+ } catch(e) {alert("Error anonymous in prefs.apply");alert(e);}
});
state.set('screen', 'frontpage').validate();
return false;
} catch(e) {alert("Error anonymous in prefs.apply");alert(e);}
};
-function switchStylestyle(styleName) {
-}
-
prefs.cancel = function(){
try {
state.set('screen', 'frontpage').validate();
} catch(e) {alert("Error anonymous in prefs.cancel");alert(e);}
};
+
+prefs.loadPrefs = function(data) {
+ try {
+ console.log('loadPrefs');
+ if (data && data.theme) {
+ runstate.prefs = data;
+ } else {
+ runstate.prefs = {
+ theme: "green"
+ };
+ }
+ if (runstate.loaded) jss();
+ } catch(e) {alert("Error anonymous in prefs.loadPrefs");alert(e);}
+};
+\ No newline at end of file
diff --git a/code/serveur/php/server.php b/code/serveur/php/server.php
@@ -65,10 +65,6 @@ function main()
return;
}
- // Sinon tout est bon on effectue l'opération correspondant à la commande passée.
- // TODO : en production, utiliser : header("Content-Type: application/json; charset=utf-8");
- header("Content-Type: text/plain; charset=utf-8");
-
if ($action == 2) { // "Create partie"
// Requête POST : http://serveur/server.php?action=2&nb=2&mode=normal&user=foo&passwd=bar
if (!isset($_GET['nb']) || !isset($_GET['mode'])) {
@@ -110,14 +106,19 @@ function main()
if (!isset($_GET['key']) || !isset($_GET['value']))
throw new Exception("La requête est incomplète", 2);
setUserPref($user, $_GET['key'], $_GET['value']);
+ userPrefs($user);
} else {
throw new Exception("Commande inconnue", 2);
}
}
function server() {
- if(isset($_GET['callback']))
+ if(isset($_GET['callback'])) {
echo $_GET['callback'].'(';
+ header("Content-Type: application/javascript; charset=utf-8");
+ } else {
+ header("Content-Type: application/json; charset=utf-8");
+ }
ob_start();
try {
main();
@@ -140,4 +141,4 @@ function server() {
server();
-?>
+?>
+\ No newline at end of file