Merge branch 'unstable' of https://github.com/jsmaniac/2011-m1s2-ter into unstable

This commit is contained in:
Bertrand BRUN 2011-05-07 23:32:06 +02:00
commit 183767ce7b
7 changed files with 202 additions and 40 deletions

View File

@ -34,6 +34,7 @@ create table played_game_cloud(pgid, gid, type, num, relation, weight, score);
create table colon_nodes(eid);
create table random_cloud_node(eid,nbneighbors);
create table random_center_node(eid);
create table user_info(user, key, value, primary key (user, key));
insert into user(login, mail, hash_passwd, score, ugroup) values('$(echo "$user" | sed -e "s/'/''/g")', 'foo@isp.com', '$(echo "$passwd" | dd bs=1 count="${#passwd}" | (if which md5sum >/dev/null 2>&1; then md5sum; else md5; fi) | cut -d ' ' -f 1)', 0, 1);
EOF

View File

@ -5,41 +5,27 @@
<meta charset="utf-8" />
<style>
html, body {
background-color: black;
overflow: hidden;
}
.screen {
background-color: #FFFFE0;
display: none;
}
#splash.screen {
background-color: black;
display: block;
}
#mc-caption {
color: #8b4;
}
#mn-caption {
color: #4a4;
}
#mn-caption-block {
border-top: medium solid #44AA44;
border-bottom: medium solid #44AA44;
background-color: #F0F8D0;
border-top-width: medium;
border-top-style: solid;
border-bottom-width: medium;
border-bottom-style: solid;
}
.relationBox {
background-color: #F0F8D0;
border: thin solid #44AA44;
}
.relations .hot {
background-color: yellow;
border-width: thin;
border-style: solid;
}
.clearboth {
@ -50,6 +36,7 @@ html, body {
text-align: center;
}
</style>
<link rel="stylesheet" href="ressources/green.css" />
<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>
@ -137,6 +124,17 @@ html, body {
</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>

View File

@ -766,4 +766,35 @@ function wordExist($node) {
return getNodeEid($node) === null ? "0" : "1";
}
function getUserInfo($user, $key) {
return getdb()->querySingle("SELECT value FROM user_info WHERE user = '".sqlite3::escapestring($user)."' AND key = '".SQLite3::escapeString($key)."';");
}
function setUserInfo($user, $key, $value) {
getDB()->exec("UPDATE user_info SET value = '".SQLite3::escapeString($value)
."' WHERE user = '".SQLite3::escapeString($user)
."' AND key = '".SQLite3::escapeString($key)."';");
}
function userPrefsDefaults() {
$prefs = Array(
"theme" => "green"
);
}
function userPrefs($user) {
$res = userPrefsDefaults();
foreach ($res as $k => &$v) {
$x = getUserInfo($user, $k);
if ($x !== null) $v = $x;
}
echo json_encode($res);
}
function setUserPref($user, $key, $value) {
if (array_key_exists($key, userPrefsDefaults()))
setUserInfo($user, $key, $value);
}
?>

View File

@ -0,0 +1,36 @@
/* Colors */
html, body {
background-color: black;
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;
}
.relationBox {
border-color: #cccccc;
background-color: #222222;
}
.relations .hot {
background-color: #cccccc;
}

View File

@ -0,0 +1,36 @@
/* Colors */
html, body {
background-color: black;
color: black;
}
.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;
}
.relationBox {
border-color: #44AA44;
background-color: #F0F8D0;
}
.relations .hot {
background-color: yellow;
}

View File

@ -1,4 +1,6 @@
// ==== URL persistante
var nullFunction = function(){};
function State(init) {
try {
$.extend(this, init || {});
@ -109,6 +111,7 @@ function UI () {
window.console && console.log(msg);
} catch(e) {alert("Error UI.log");alert(e);}
},
info: function(title, msg) { alert(msg); },
setScreen: function() {}
};
}
@ -173,7 +176,7 @@ ajaj.bigError = function(x) {
ajaj.error = function(msg) {
try {
UI().dismiss();
alert(msg);
UI().info("Erreur !", msg);
UI().exit();
} catch(e) {alert("Error ajaj.error");alert(e);}
}
@ -280,6 +283,7 @@ frontpage.enter = function () {
$("#frontpage .frontpage-button.game").clickOnce(frontpage.click.goGame);
$("#frontpage .frontpage-button.connection").clickOnce(frontpage.click.goConnection);
$("#frontpage .frontpage-button.info").clickOnce(frontpage.click.goInfo);
$("#frontpage .frontpage-button.prefs").clickOnce(frontpage.click.goPrefs);
jss();
UI().dismiss();
} catch(e) {alert("Error frontpage.enter");alert(e);}
@ -306,6 +310,12 @@ frontpage.click.goInfo = function() {
} catch(e) {alert("Error frontpage.click.goInfo");alert(e);}
};
frontpage.click.goPrefs = function() {
try {
UI().show("PtiClic", "Chargement…");
state.set('screen', 'prefs').commit().validate();
} catch(e) {alert("Error frontpage.click.goPrefs");alert(e);}
};
// ==== Code métier pour le jeu
game = {};
@ -364,7 +374,7 @@ game.jss = function(w, h, iconSize) {
game.enter = function () {
try {
if (!state.game) {
var notAlreadyFetching = !runstate.gameFetched;
var notAlreadyFetching = !runstate.gameFetched || runstate.gameFetched == nullFunction;
runstate.gameFetched = function(data) {
try {
state.game = data;
@ -396,7 +406,7 @@ game.leave = function () {
try {
$("#game .relations").empty();
$('#game #mn-caption').stop().clearQueue();
if (runstate.gameFetched) runstate.gameFetched = function() {};
if (runstate.gameFetched) runstate.gameFetched = nullFunction;
} catch(e) {alert("Error game.leave");alert(e);}
};
@ -496,7 +506,7 @@ score.jss = function(w, h, iconSize) {
score.enter = function () {
try {
if (!state.hasScore) {
var notAlreadyFetching = !runstate.scoreFetched;
var notAlreadyFetching = !runstate.scoreFetched || runstate.scoreFetched == nullFunction;
runstate.scoreFetched = function(data) {
try {
for (var i = 0; i < data.scores.length; ++i) {
@ -534,7 +544,7 @@ score.enter = function () {
score.leave = function () {
try {
if (runstate.scoreFetched) runstate.scoreFetched = function() {};
if (runstate.scoreFetched) runstate.scoreFetched = nullFunction;
$("#score .scores").empty();
$("#templates .scoreTotal").empty();
} catch(e) {alert("Error score.leave");alert(e);}
@ -585,12 +595,8 @@ connection.jss = function(w, h, iconSize) {
} catch(e) {alert("Error anonymous 1 in connection.jss");alert(e);}
};
(c)
.css('text-align', 'center');
$c("label")
.css("white-space", "nowrap");
$c("input, label")
.css("white-space", "nowrap")
.css('position', 'absolute')
.fitFont(w*0.3, h*0.25);
$c("#user-label").east({left:w/2,top:h*0.25});
@ -603,8 +609,8 @@ connection.jss = function(w, h, iconSize) {
connection.enter = function() {
try {
jss();
$("#connect-form").unbind("submit", connection.connect).submit(connection.connect);
jss();
UI().dismiss();
} catch(e) {alert("Error connection.enter");alert(e);}
};
@ -618,16 +624,16 @@ connection.connect = function() {
user: $("#user").val(),
passwd: $("#passwd").val(),
}, connection.connectFetched, connection.connectFetched);
return false
return false;
} catch(e) {alert("Error connection.connect");alert(e);}
}
connection.connectFetched = function(data) {
try {
if (data && data.loginOk) {
alert("Vous êtes connecté !");
UI().info("Connexion", "Vous êtes connecté !");
} else if (data && data.isError && data.error == 3) {
alert(data.msg);
UI().info("Connexion", data.msg);
} else {
ajaj.smallError(data);
}
@ -648,12 +654,61 @@ info.jss = function(w,h,iconSize) {
info.enter = function() {
try {
$("#info-back").clickOnce(info.click.goBack);
jss();
$("#info-back").clickOnce(function(){
try {
state.set('screen', 'frontpage').validate();
} catch(e) {alert("Error anonymous in info.enter");alert(e);}
});
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 = {};
prefs.jss = function(w,h,iconSize) {
try {
var p = $("#prefs.screen");
var $p = function() {
try {
return p.find.apply(p,arguments);
} catch(e) {alert("Error anonymous 1 in prefs.jss");alert(e);}
};
$("input, label, select")
.css("white-space", "nowrap")
.css('position', 'absolute')
.fitFont(w*0.4, h*0.1);
$p("#theme-label").east({left:w/2,top:h*0.25});
$p("#theme").west({left:w/2,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});
} catch(e) {alert("Error prefs.jss");alert(e);}
}
prefs.enter = function() {
try {
$("#prefs-form").unbind('submit', prefs.apply).submit(prefs.apply);
$("#prefs-cancel").clickOnce(prefs.cancel);
jss();
UI().dismiss();
} catch(e) {alert("Error prefs.enter");alert(e);}
};
prefs.apply = function(){
try {
alert($("#theme").val());
state.set('screen', 'frontpage').validate();
return false;
} catch(e) {alert("Error anonymous in prefs.click.apply");alert(e);}
};
prefs.cancel = function(){
try {
state.set('screen', 'frontpage').validate();
} catch(e) {alert("Error anonymous in prefs.click.cancel");alert(e);}
};

View File

@ -104,10 +104,15 @@ function main()
throw new Exception("La requête est incomplète", 2);
decodeAndInsertGame($user,$_GET['game']);
} elseif ($action == 7) { // Get user prefs
userPrefs($user);
} elseif ($action == 8) { // Set user pref
if (!isset($_GET['key']) || !isset($_GET['value']))
throw new Exception("La requête est incomplète", 2);
setUserPref($user, $_GET['key'], $_GET['value']);
} else {
throw new Exception("Commande inconnue", 2);
}
// Attention, il y a une $action == 7, mais plus haut.
}
function server() {