diff --git a/ext/pools/main.php b/ext/pools/main.php
index e449ab1f..7cdc0374 100644
--- a/ext/pools/main.php
+++ b/ext/pools/main.php
@@ -74,6 +74,8 @@ class Pools extends Extension {
if ($config->get_int("ext_pools_version") < 2){
$database->Execute("ALTER TABLE `pools` ADD UNIQUE INDEX (`title`);");
+ $database->Execute("ALTER TABLE `pools` ADD `lastupdated` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;");
+
$config->set_int("ext_pools_version", 2);
}
}
@@ -314,13 +316,26 @@ class Pools extends Extension {
$poolsPerPage = $config->get_int("poolsListsPerPage");
+
+ $order_by = "";
+ $order = get_prefixed_cookie("ui-order-pool");
+ if($order == "created" || is_null($order)){
+ $order_by = "ORDER BY p.date DESC";
+ }elseif($order == "updated"){
+ $order_by = "ORDER BY p.lastupdated DESC";
+ }elseif($order == "name"){
+ $order_by = "ORDER BY p.title ASC";
+ }elseif($order == "count"){
+ $order_by = "ORDER BY p.posts DESC";
+ }
+
$pools = $database->get_all("
SELECT p.id, p.user_id, p.public, p.title, p.description,
p.posts, u.name as user_name
FROM pools AS p
INNER JOIN users AS u
ON p.user_id = u.id
- ORDER BY p.date DESC
+ $order_by
LIMIT :l OFFSET :o
", array("l"=>$poolsPerPage, "o"=>$pageNumber * $poolsPerPage)
);
diff --git a/ext/pools/script.js b/ext/pools/script.js
new file mode 100644
index 00000000..72ea80e6
--- /dev/null
+++ b/ext/pools/script.js
@@ -0,0 +1,10 @@
+$(function() {
+ var order_pool = $.cookie("shm_ui-order-pool");
+ $("#order_pool option[value="+order_pool+"]").attr("selected", true);
+
+ $('#order_pool').change(function(){
+ var val = $("#order_pool option:selected").val();
+ $.cookie("shm_ui-order-pool", val, {path: '/', expires: 365}); //FIXME: This won't play nice if COOKIE_PREFIX is not "shm_".
+ window.location.href = '';
+ });
+});
diff --git a/ext/pools/theme.php b/ext/pools/theme.php
index 39c4318e..cc924045 100644
--- a/ext/pools/theme.php
+++ b/ext/pools/theme.php
@@ -67,11 +67,21 @@ class PoolsTheme extends Themelet {
Pool Changes
';
+ $order_html = '
+
+ ';
+
$blockTitle = "Pools";
$page->set_title(html_escape($blockTitle));
$page->set_heading(html_escape($blockTitle));
$page->add_block(new Block($blockTitle, $html, "main", 10));
$page->add_block(new Block("Navigation", $nav_html, "left", 10));
+ $page->add_block(new Block("Order By", $order_html, "left", 15));
$this->display_paginator($page, "pool/list", null, $pageNumber, $totalPages);
}