diff options
author | Patrick Davison <snapwilliam@gmail.com> | 2013-01-23 22:25:28 -0800 |
---|---|---|
committer | Patrick Davison <snapwilliam@gmail.com> | 2013-01-23 22:25:28 -0800 |
commit | 7969dcfa62ac271ed6ef6d6b8d10bcf0659e25b5 (patch) | |
tree | a902eceb5a2186dc01677392863b0c4aa0c5c377 | |
parent | 1e4045408872ac9bc83417f9c58ca740e54fff3d (diff) | |
download | pathery-7969dcfa62ac271ed6ef6d6b8d10bcf0659e25b5.tar.xz |
A functional Memberlist again! New and improved!
-rw-r--r-- | css/stats.css | 13 | ||||
-rw-r--r-- | do.php | 18 | ||||
-rw-r--r-- | includes/datas.php | 25 | ||||
-rw-r--r-- | js/scores.js | 104 | ||||
-rw-r--r-- | pages/memberlist.php | 85 |
5 files changed, 119 insertions, 126 deletions
diff --git a/css/stats.css b/css/stats.css index 28d6842..122e300 100644 --- a/css/stats.css +++ b/css/stats.css @@ -108,6 +108,19 @@ td, th { position:relative; } +.membersList { + width:850px; +} + +.scoreRight{ + float:right; + margin: 5px; +} +.scoreLeft{ + float:left; + margin: 5px; +} + .scoreMedal { text-align:left; @@ -57,12 +57,13 @@ if (isset($_GET['checkachieve']) && $_GET['checkachieve'] == 'true' && $_SESSION }
if ($_GET['r'] == 'reqMemberPage') {
+ $order = $_GET['order'];
+ $orderBy = $_GET['orderBy'];
- $order = 'ORDER BY dateJoined DESC';
$page = $_GET['reqPage'] + 0;
if (!is_int($page))
return;
- $json = getMembers($order, $page, 4);
+ $json = getMembers($page, 10, $order, $orderBy);
$json['page'] = $page;
$encoded = json_encode($json);
die($encoded);
@@ -253,6 +254,10 @@ if ($_GET['r'] == 'getpath') { }
// --------- CONTINUE EXECUTION ---------
+ //TODO: !! Close the session with session_write_close(); as soon as possible.
+ // This allows the session file to be opened by other requests.
+
+
// Now we don't have to worry about how long we're taking.
// All of this code will execute without the user waiting on the server.
@@ -264,15 +269,6 @@ if ($_GET['r'] == 'getpath') { ////Challenge/Tutorial?
-
- ////--------- RUSH THE PATH BACK TO THE USER
- // ignore_user_abort(true);
- // $encoded = json_encode($json);
- // header("Connection: close");
- // header("Content-Length: " . mb_strlen($encoded));
- // echo $encoded;
- // flush();
-
////TODO: Clean this up a bit
// if ($_GET['isChallenge'] == 'true')
// {
diff --git a/includes/datas.php b/includes/datas.php index 8ae5d5f..124b303 100644 --- a/includes/datas.php +++ b/includes/datas.php @@ -708,7 +708,17 @@ function getChampionPointsArray() { } //Select Members -function getMembers($order, $pageNumber = 1, $pageDivide = 50) { +function getMembers($pageNumber = 1, $pageDivide = 50, $order = 'DESC', $orderBy = 'dateJoined') { + + if ($order !== 'ASC' AND $order !== 'DESC') + $order = 'DESC'; + $columns = array('dateJoined', 'dateLogin', 'championPoints', + 'totalMazes', 'totalWins', 'totalTies', 'totalMovesThisWeek', + 'totalMoves', 'display'); + if (!in_array($orderBy, $columns)) + $orderBy = 'dateJoined'; + //These values are now confirmed. + $sqlOrder = "ORDER BY `$orderBy` $order"; $top = $pageNumber * $pageDivide; $bottom = $top - $pageDivide; @@ -720,7 +730,7 @@ function getMembers($order, $pageNumber = 1, $pageDivide = 50) { $row = mysql_fetch_assoc($result); $total = $row['count']; - $output['pageCount'] = $total / $pageDivide; + $output['pageCount'] = ceil(($total / $pageDivide)); $pageRequest = 'all'; if ($pageRequest == 'all') { @@ -745,17 +755,18 @@ function getMembers($order, $pageNumber = 1, $pageDivide = 50) { WHERE solutions.userID = users.ID AND solutions.dateModified BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) AND CURRENT_DATE) , 0) AS totalMovesThisWeek, - users.totalMazes, - users.totalWins, - users.totalTies, + users.championPoints as championPoints, + users.totalMazes as totalMazes, + users.totalWins as totalWins, + users.totalTies as totalTies, IfNull(userData.wallColor, '#666666') as wallColor, - IfNull(userData.displayColor, '#cccccc'), + IfNull(userData.displayColor, '#cccccc') as displayColor, userData.wallEmblem as wallEmblem, users.datejoined as dateJoined, users.dateLogin as dateLogin FROM `users` LEFT JOIN `userData` ON users.ID = userData.userID - $order + $sqlOrder LIMIT $limitTop, $pageDivide "; diff --git a/js/scores.js b/js/scores.js index 734683a..32f7c7f 100644 --- a/js/scores.js +++ b/js/scores.js @@ -219,7 +219,9 @@ function scoresFormatPageNavi(JO) { //Memberlist related functions:
var membersPages = new Object;
-var membersCurrentPage = 1;
+var membersCurrentPage = 1;
+var membersOrderBy = 'joined';
+var membersOrder = 'ASC';
function membersRequestPage(page) {
console.log('membersRequestPage', page);
@@ -239,7 +241,7 @@ function membersRequestPage(page) { //console.log("Requesting Page", page, ajax.inUse);
// == Additionally, check for achievements.
- ajax.requestFile = "do.php?r=reqMemberPage&reqPage="+page;
+ ajax.requestFile = "do.php?r=reqMemberPage&reqPage="+page+"&orderBy="+membersOrderBy+"&order="+membersOrder;
ajax.onCompletion = membersRequestPageDone; // Specify function to be executed on response.
//ajax.onLoading = '';
//ajax.onLoaded = '';
@@ -255,8 +257,21 @@ function membersRequestPageDone() { return;
membersUpdatePage(JO.page, membersFormatPage(JO));
}
+function membersToggleOrder() {
+ if (membersOrder == 'ASC')
+ membersOrder = 'DESC';
+ else
+ membersOrder = 'ASC';
+}
+
+function membersShowPage(page, orderBy) {
+
+ if (orderBy) {
+ if (membersOrderBy == orderBy)
+ membersToggleOrder();
+ membersOrderBy = orderBy;
+ }
-function membersShowPage(page) {
page = page - 0;
console.log('membersShowPage', page);
if (membersPreparePage(page) == false) {
@@ -276,7 +291,7 @@ function membersShowPage(page) { //Also; update the page
- if (page != membersCurrentPage) {
+ if (page != membersCurrentPage || orderBy) {
membersRequestPage(page);
}
membersCurrentPage = page;
@@ -308,7 +323,7 @@ function membersFormatPageNavi(JO) { var r = '';
var showedPrevPage = true;
for (var i = 1; i <= JO.pageCount; i++) {
- if (
+ if (
(JO.page > i - 3 && JO.page < i + 3)
|| (i == 1)
|| (i == JO.pageCount)
@@ -329,6 +344,24 @@ function membersFormatPageNavi(JO) { showedPrevPage = false;
}
}
+ var nextPage = JO.page - 0 + 1;
+ var prevPage = JO.page - 1;
+ if (JO.pageCount > 1) {
+ if (JO.page < JO.pageCount) {
+ r = r+" <a class='scoreRight' title='Last' href='javascript:membersShowPage("+JO.pageCount+")'>>>></a>";
+ r = r+" <a class='scoreRight' title='Next' href='javascript:membersShowPage("+nextPage+")'>></a>";
+ } else {
+ r = r+" <span class='scoreRight'>>>></span>";
+ r = r+" <span class='scoreRight'>></span>";
+ }
+ if (JO.page > 1) {
+ r = " <a class='scoreLeft' title='Previous' href='javascript:membersShowPage("+prevPage+")'><</a>"+r;
+ r = " <a class='scoreLeft' title='First' href='javascript:membersShowPage(1)'><<<</a>"+r;
+ } else {
+ r = r+" <span class='scoreLeft'><<<</span>";
+ r = r+" <span class='scoreLeft'><</span>";
+ }
+ }
return r;
}
@@ -336,22 +369,24 @@ function membersFormatPageNavi(JO) { function membersFormatPage(JO) {
// console.log("Formating page");
- var p = "<table class='score'>";
+ var p = "<table class='membersList score'>";
if (JO.pageCount > 1) {
var navi = membersFormatPageNavi(JO);
- p = p+"<tr><td colspan='9' style='text-align:center;'>"+navi+"</td></tr>";
+ p = p+"<tr><th colspan='10' style='text-align:center;'>"+navi+"</th></tr>";
}
p = p+"<tr title='Updated "+JO.updateTime+"'>";
p = p+"<th>Rank</th>";
- p = p+"<th style='width:125px; overflow:hidden; text-align:left; padding-left:42px;'>Name</th>";
- p = p+"<th>Mazes</th>";
- p = p+"<th>Moves</th>";
- p = p+"<th>Past Week</th>";
- p = p+"<th>Wins</th>";
- p = p+"<th>Ties</th>";
- p = p+"<th>Joined</th>";
- p = p+"<th>Last Login</th>";
+ p = p+"<th style='width:185px; overflow:hidden; text-align:left; padding-left:42px;'>";
+ p = p+" <a href='javascript:membersShowPage("+membersCurrentPage+",\"display\")'>Name</a></th>";
+ p = p+"<th><a title='Champion Points' href='javascript:membersShowPage("+membersCurrentPage+",\"championPoints\")'>CP</a></th>";
+ p = p+"<th><a href='javascript:membersShowPage("+membersCurrentPage+",\"totalMazes\")'>Mazes</a></th>";
+ p = p+"<th><a href='javascript:membersShowPage("+membersCurrentPage+",\"totalMoves\")'>Moves</a></th>";
+ p = p+"<th><a href='javascript:membersShowPage("+membersCurrentPage+",\"totalMovesThisWeek\")'>Past Week</a></th>";
+ p = p+"<th><a href='javascript:membersShowPage("+membersCurrentPage+",\"totalWins\")'>Wins</a></th>";
+ p = p+"<th><a href='javascript:membersShowPage("+membersCurrentPage+",\"totalTies\")'>Ties</a></th>";
+ p = p+"<th><a href='javascript:membersShowPage("+membersCurrentPage+",\"dateJoined\")'>Joined</a> ⇧</th>";
+ p = p+"<th><a href='javascript:membersShowPage("+membersCurrentPage+",\"dateLogin\")'>Last Login</a> ⇩</th>";
p = p+"</tr>";
var showedLastUser = true;
@@ -369,19 +404,23 @@ function membersFormatPage(JO) { if (previousI != i + 1)
if (previousI < i - 1 && previousI != 0)
styleClass = 'border-top: 6px solid #777799;';
+
+ if (u.wallEmblem == undefined)
+ u.wallEmblem = 'blank.png';
- p = p+ "<tr style='"+styleClass+" background-color: "+u.background+"; color:"+u.displayColor+";' title='Scored "+scoredLocalTime.format("h:MM:ss TT")+"'>";
+ p = p+ "<tr style='"+styleClass+" background-color: "+u.background+"; color:"+u.displayColor+";' title=''>";
p = p+ "<td style='text-align:left;'>";
p = p+ i+ "</td>";
- p = p+ "<td style='vertical-align: middle;'>";
+
+ p = p+ "<td style='vertical-align: middle;width:180px;'>";
p = p+ " <div class='grid_td' style='float:left; width:35px; height:35px; background:"+u.wallColor+" url(images/marks/"+u.wallEmblem+");'>";
- p = p+ " <div style='background-color:transparent;' class='grid_td_inner grid_td_rocks'>";
- p = p+ " </div>";
+ p = p+ " <div style='background-color:transparent;' class='grid_td_inner grid_td_rocks'>";
+ p = p+ " </div>";
p = p+ " </div>";
- p = p+ "";
- p = p+ "<span class='scoreName'><a href='achievements?id="+u.ID+"' style='color:"+u.displayColor+"'>"+u.display+"</a></span>";
+ p = p+ " <span class='scoreName' style='float:left;'><a href='achievements?id="+u.ID+"' style='color:"+u.displayColor+"'>"+u.display+"</a></span>";
p = p+ "</td>";
+ p = p+ "<td style='text-align:right;'>"+u.championPoints+"</td>";
p = p+ "<td style='text-align:right;'>"+u.totalMazes+"</td>";
p = p+ "<td style='text-align:right;'>"+u.totalMoves+"</td>";
p = p+ "<td style='text-align:right;'>"+u.totalMovesThisWeek+"</td>";
@@ -393,29 +432,8 @@ function membersFormatPage(JO) { previousI = i;
}
-
- //p = p+"<tr><th colspan='3' style='text-align:center;'>"+navi+"</th></tr>";
+ p = p+"<tr><th colspan='10' style='text-align:center;'>"+navi+"</th></td>";
p = p+"</table>";
-
- var nextPage = JO.page - 0 + 1;
- var prevPage = JO.page - 1;
-
- if (JO.pageCount > 1) {
- if (JO.page < JO.pageCount) {
- p = p+"<a href='javascript:membersShowPage("+nextPage+")' class='rightBtn scoreActive'>></a>";
- } else
- p = "<div class='rightBtn scoreDisabled'>></div>"+p;
- if (JO.page > 1) {
- p = "<a href='javascript:membersShowPage("+prevPage+")' class='leftBtn scoreActive'><</a>"+p;
- } else
- p = "<div class='leftBtn scoreDisabled'><</div>"+p;
- }
- p = "<div class='scoreContainer1'>"+p+"</div>";
-
- //console.log(p);
- //console.log('jo page', JO.page);
- //console.log('jo pagecount', JO.pageCount);
- //p = JO.navi+p;
return p;
}
diff --git a/pages/memberlist.php b/pages/memberlist.php index 038b023..641034f 100644 --- a/pages/memberlist.php +++ b/pages/memberlist.php @@ -17,88 +17,43 @@ include_once ('./includes/sqlEmbedded.php'); include_once ('./includes/datas.php');
-
-//Order by prep
-$c = 'totalMovesThisWeek';
-if (isset($_GET['c'])) {
- switch ($_GET['c']) {
- case "totalMoves":
- $c = 'totalMoves';
- break;
- case "totalMovesThisWeek":
- $c = 'totalMovesThisWeek';
- break;
- case "totalMazes":
- $c = 'totalMazes';
- break;
- case "totalWins":
- $c = 'totalWins';
- break;
- case "totalTies":
- $c = 'totalTies';
- break;
- case "dateJoined":
- $c = 'dateJoined';
- break;
- case "dateLogin":
- $c = 'dateLogin';
- break;
- }
-}
-$o = 'DESC';
-if (isset($_GET['o'])) {
- switch ($_GET['o']) {
- case "desc":
- $o = 'DESC';
- break;
- case "asc":
- $o = 'ASC';
- break;
- }
-}
-
?>
<script>
-document.write('Begin:');
-
-
-
+ javascript:membersShowPage(1);
</script>
<?
-
//Order by:
//$order = "ORDER BY $c $o";
-$data = getMembers($order, 1, 2);
+//$data = getMembers(1, 10);
$json = json_encode($data);
-
+//onchange="savePref("speed", this.value)"
//style='border:1px solid red;width: 500px; position:absolute;'
-echo "
-<div class='wrapper'>
- <div class='scoreContainer2' style='min-height:700px; width:700px'>
- <div id='members' class='scoreContainer2' >
- <script>
-
- var json = $json;
-
- //var JO = decryptJSON(json);
- var JO = json;
-
- var parsed = membersFormatPage(JO);
-
- document.write(parsed);
- document.write('complete');
+?>
+<div class='wrapper'>
+ <!--
+ <form class='memberListForm'>
+ <select id="membersPerPage">
+ <option value="10" selected="selected">10</option>
+ <option value="25">25</option>
+ <option value="50">50</option>
+ <option value="100">100</option>
+ </select>
+ </form>
+ -->
+
+ <div id='members'>
- </script>
- </div>
</div>
</div>
-";
+<br />
+<br />
+<?
//echo $json;
//print_r($data);
|