From 743e2f88d8cbba7ea5f7b3b78ab721c141d1ec99 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Tue, 26 Apr 2011 21:02:43 -0700 Subject: Overhaul the Admin > Content > Comments page. Use a tabbed interface for consistency with other parts of the admin UI (ie: G2 import). The UI is now Ajax driven because that's how jQuery tabs works best in this case. This requires a little finagling in JS to get the paginator links to load properly. While I'm in there, add a paginator at the top of the table, make the buttons in the delete tab sane and smooth scroll back to the top of the tab when switching pages. Fixes #1702 --- .../comment/controllers/admin_manage_comments.php | 32 ++-- .../comment/views/admin_manage_comments.html.php | 211 +++------------------ .../views/admin_manage_comments_queue.html.php | 157 +++++++++++++++ 3 files changed, 205 insertions(+), 195 deletions(-) create mode 100644 modules/comment/views/admin_manage_comments_queue.html.php (limited to 'modules/comment') diff --git a/modules/comment/controllers/admin_manage_comments.php b/modules/comment/controllers/admin_manage_comments.php index effefcbb..72684e70 100644 --- a/modules/comment/controllers/admin_manage_comments.php +++ b/modules/comment/controllers/admin_manage_comments.php @@ -28,8 +28,10 @@ class Admin_Manage_Comments_Controller extends Admin_Controller { ->where("updated", "<", db::expr("UNIX_TIMESTAMP() - 86400 * 7")) ->execute(); - // Redirect to the appropriate queue - url::redirect("admin/manage_comments/queue/unpublished"); + $view = new Admin_View("admin.html"); + $view->content = new View("admin_manage_comments.html"); + $view->content->menu = $this->_menu($this->_counts()); + print $view; } public function menu_labels() { @@ -43,15 +45,11 @@ class Admin_Manage_Comments_Controller extends Admin_Controller { public function queue($state) { $page = max(Input::instance()->get("page"), 1); - $view = new Admin_View("admin.html"); - $view->page_title = t("Manage comments"); - $view->page_type = "collection"; - $view->page_subtype = "admin_comments"; - $view->content = new View("admin_manage_comments.html"); - $view->content->counts = $this->_counts(); - $view->content->menu = $this->_menu($view->content->counts); - $view->content->state = $state; - $view->content->comments = ORM::factory("comment") + $view = new Gallery_View("admin_manage_comments_queue.html"); + $view->counts = $this->_counts(); + $view->menu = $this->_menu($view->counts); + $view->state = $state; + $view->comments = ORM::factory("comment") ->order_by("created", "DESC") ->order_by("id", "DESC") ->where("state", "=", $state) @@ -59,11 +57,21 @@ class Admin_Manage_Comments_Controller extends Admin_Controller { ->offset(($page - 1) * self::$items_per_page) ->find_all(); - // Pagination info + // This view is not themed so we can't use $theme->url() in the view and have to + // reproduce Gallery_View::url() logic here. + $atn = theme::$admin_theme_name; + $view->fallback_avatar_url = url::abs_file("themes/$atn/images/avatar.jpg"); + $view->page = $page; + $view->page_type = "collection"; + $view->page_subtype = "admin_comments"; $view->page_size = self::$items_per_page; $view->children_count = $this->_counts()->$state; $view->max_pages = ceil($view->children_count / $view->page_size); + + // Also we want to use $theme->paginator() so we need a dummy theme + $view->theme = $view; + print $view; } diff --git a/modules/comment/views/admin_manage_comments.html.php b/modules/comment/views/admin_manage_comments.html.php index e7a61837..e3c8546c 100644 --- a/modules/comment/views/admin_manage_comments.html.php +++ b/modules/comment/views/admin_manage_comments.html.php @@ -2,200 +2,45 @@ - -
-

-
- -
- render() ?> -
- - -

- - - - - - - - - -

- - -
- - 0): ?> -

- -

- -

- spam): ?> - spam) ?> -

-

- "> - - - - - -

-
- - - -
-

- -

-
- - - - - - - - - - "> - - - - - -
- - - - - -
- - " - class="g-avatar" - alt="author_name()) ?>" - width="40" - height="40" /> - -

author_name()) ?>

-
- -

created) ?>

- text)) ?> -
-
    - state != "unpublished"): ?> -
  • - - - - -
  • - - state != "published"): ?> -
  • - - - - -
  • - - state != "spam"): ?> -
  • - - - - -
  • - - -
  • - - - - -
  • -
-
+ // Paginator clicks load their href in the active tab panel + var fix_links = function() { + $(".g-paginator a, a#g-delete-all-spam").click(function(event) { + event.stopPropagation(); + $.scrollTo(0, 800, { easing: "swing" }); + $(this).parents(".ui-tabs-panel").load( + $(this).attr("href"), + function() { + fix_links(); + }); + return false; + }); + } -
- paginator() ?> -
+ $(document).ready(function() { + $("#g-admin-comments").tabs({ + show: fix_links, + }); + }); + -
+
+ render() ?>
diff --git a/modules/comment/views/admin_manage_comments_queue.html.php b/modules/comment/views/admin_manage_comments_queue.html.php new file mode 100644 index 00000000..d847d729 --- /dev/null +++ b/modules/comment/views/admin_manage_comments_queue.html.php @@ -0,0 +1,157 @@ + +
+ +
+ + 0): ?> +

+ +

+ +

+ spam): ?> + spam) ?> +

+

+ "> + + + + + +

+
+ + + +
+

+ +

+
+ + +
+ paginator() ?> +
+ + + + + + + + "> + + + + + +
+ + + + + +
+ + <?= html::clean_attribute($comment->author_name()) ?> + +

+ + author_name()) ?> + +

+
+ +

created) ?>

+ text)) ?> +
+
    + state != "unpublished" && $comment->state != "deleted"): ?> +
  • + + + + +
  • + + state != "published"): ?> +
  • + + + + + + + + +
  • + + state != "spam"): ?> +
  • + + + + +
  • + + + state != "deleted"): ?> +
  • + + + + +
  • + +
+
+ +
+ paginator() ?> +
+
-- cgit v1.2.3