From caf2be420092e4079663706c2ec610a83c5948c8 Mon Sep 17 00:00:00 2001 From: Atticus White Date: Fri, 7 Aug 2015 00:32:12 -0400 Subject: [PATCH 01/12] contact message post type --- lib/init.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/init.php b/lib/init.php index cee4722..bd926a7 100644 --- a/lib/init.php +++ b/lib/init.php @@ -68,3 +68,22 @@ function acf_json_load($paths) { return $paths; } add_filter('acf/settings/load_json', __NAMESPACE__ . '\\acf_json_load'); + +/** + * Custom post types + */ +function custom_post_types() { + $args = array ( + 'labels' => array( + 'name' => 'Messages', + 'singular_name' => 'Message' + ), + 'public' => false, + 'publicly_queryable' => false, + 'show_ui' => false, + 'show_in_menu' => false, + 'query_var' => false + ); + register_post_type('contact_message', $args); +} +add_action('init', __NAMESPACE__ . '\\custom_post_types'); From dae1a5002425adf6d157edb3d0cb54711833b730 Mon Sep 17 00:00:00 2001 From: Atticus White Date: Fri, 7 Aug 2015 00:42:21 -0400 Subject: [PATCH 02/12] admin page for messages --- functions.php | 2 ++ lib/admin/messages/init.php | 11 +++++++++++ lib/admin/messages/page.php | 9 +++++++++ lib/admin/messages/service.php | 9 +++++++++ 4 files changed, 31 insertions(+) create mode 100644 lib/admin/messages/init.php create mode 100644 lib/admin/messages/page.php create mode 100644 lib/admin/messages/service.php diff --git a/functions.php b/functions.php index 718443e..1633c73 100644 --- a/functions.php +++ b/functions.php @@ -6,6 +6,8 @@ $sanders_includes = array( 'lib/init.php', 'lib/assets.php', + 'lib/admin/messages/init.php', + 'lib/admin/messages/service.php', 'lib/services/news/remote_news_feed.php', 'lib/services/news/news_feed.php', 'lib/services/events/remote_events.php', diff --git a/lib/admin/messages/init.php b/lib/admin/messages/init.php new file mode 100644 index 0000000..9b5613a --- /dev/null +++ b/lib/admin/messages/init.php @@ -0,0 +1,11 @@ + + +

YO

+
+  getMessages(); ?>
+
diff --git a/lib/admin/messages/service.php b/lib/admin/messages/service.php new file mode 100644 index 0000000..ae3e0f7 --- /dev/null +++ b/lib/admin/messages/service.php @@ -0,0 +1,9 @@ + Date: Fri, 7 Aug 2015 01:03:29 -0400 Subject: [PATCH 03/12] extend WP_List_table --- lib/admin/messages/table.php | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 lib/admin/messages/table.php diff --git a/lib/admin/messages/table.php b/lib/admin/messages/table.php new file mode 100644 index 0000000..f812d87 --- /dev/null +++ b/lib/admin/messages/table.php @@ -0,0 +1,41 @@ + 'Message', + 'plural' => 'Messages', + 'ajax' => false + )); + $this->service = new MessageService(); + } + + public function get_columns() { + return array( + 'message_id' => 'ID', + 'message_title' => 'Title' + ); + } + + public function prepare_items() { + $this->items = $this->service->getMessages(); + } + + public function display_rows() { + foreach ($this->items as $message) { + echo ""; + echo "{$message['id']}"; + echo "{$message['title']}"; + echo ""; + } + } +} From 9047435a83d5b4970188579be703862e029b0f13 Mon Sep 17 00:00:00 2001 From: Atticus White Date: Fri, 7 Aug 2015 01:03:39 -0400 Subject: [PATCH 04/12] custom messages page --- functions.php | 1 + lib/admin/messages/page.php | 15 ++++++++++----- lib/admin/messages/service.php | 7 ++++++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/functions.php b/functions.php index 1633c73..97074ee 100644 --- a/functions.php +++ b/functions.php @@ -8,6 +8,7 @@ 'lib/assets.php', 'lib/admin/messages/init.php', 'lib/admin/messages/service.php', + 'lib/admin/messages/table.php', 'lib/services/news/remote_news_feed.php', 'lib/services/news/news_feed.php', 'lib/services/events/remote_events.php', diff --git a/lib/admin/messages/page.php b/lib/admin/messages/page.php index e5b3f60..049b344 100644 --- a/lib/admin/messages/page.php +++ b/lib/admin/messages/page.php @@ -1,9 +1,14 @@ prepare_items(); ?>

YO

-
-  getMessages(); ?>
-
+ + +display(); ?> diff --git a/lib/admin/messages/service.php b/lib/admin/messages/service.php index ae3e0f7..c7c8557 100644 --- a/lib/admin/messages/service.php +++ b/lib/admin/messages/service.php @@ -3,7 +3,12 @@ namespace SandersForPresident\Wordpress\Admin\Messages; class MessageService { + const POST_TYPE_SLUG = 'contact_message'; + public function getMessages() { - return 'foobar'; + return array ( + array('id' => 1, 'title' => 'A new message', 'body' => 'This is my message'), + array('id' => 2, 'title' => 'Another meessage', 'body' => 'This is just another one') + ); } } From 6bb58a6cb234ac70bdfee4c15ee607996b5e2b98 Mon Sep 17 00:00:00 2001 From: Atticus White Date: Fri, 7 Aug 2015 01:16:34 -0400 Subject: [PATCH 05/12] table adapter methods --- lib/admin/messages/page.php | 2 +- lib/admin/messages/table.php | 42 +++++++++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/lib/admin/messages/page.php b/lib/admin/messages/page.php index 049b344..af56526 100644 --- a/lib/admin/messages/page.php +++ b/lib/admin/messages/page.php @@ -4,7 +4,7 @@ $table->prepare_items(); ?> -

YO

+

Messages

-display(); ?> +
+ views(); ?> + display(); ?> +
diff --git a/lib/admin/messages/table.php b/lib/admin/messages/table.php index 1b8bc3a..f16d35f 100644 --- a/lib/admin/messages/table.php +++ b/lib/admin/messages/table.php @@ -22,22 +22,27 @@ public function __construct() { public function get_columns() { return array( 'cb' => '', - 'message_id' => 'ID', 'message_title' => 'Title', 'message_date' => 'Date' ); } - public function column_cb($item) { - return ''; + public function get_views() { + return array( + 'all' => 'All', + 'trash' => 'Trash' + ); } - public function column_message_id($item) { - return $item['id']; + public function column_cb($item) { + return ""; } public function column_message_title($item) { - return $item['title']; + $actions = array( + 'view' => "View" + ); + return $item['title'] . $this->row_actions($actions, true); } public function column_message_date() { @@ -59,5 +64,9 @@ public function get_bulk_actions() { public function prepare_items() { $this->_column_headers = array($this->get_columns(), array(), array()); $this->items = $this->service->getMessages(); + $this->set_pagination_args(array( + 'total_items' => count($this->items), + 'per_page' => 10 + )); } } From 7c299b03f138de9917b5c0b32b1c8340fcfb92e8 Mon Sep 17 00:00:00 2001 From: Atticus White Date: Fri, 7 Aug 2015 01:37:51 -0400 Subject: [PATCH 07/12] view link --- lib/admin/messages/table.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/admin/messages/table.php b/lib/admin/messages/table.php index f16d35f..345fbdb 100644 --- a/lib/admin/messages/table.php +++ b/lib/admin/messages/table.php @@ -40,9 +40,9 @@ public function column_cb($item) { public function column_message_title($item) { $actions = array( - 'view' => "View" + 'view' => "View" ); - return $item['title'] . $this->row_actions($actions, true); + return "{$item['title']}" . $this->row_actions($actions, false); } public function column_message_date() { From bec1d421f60ba9a16f8b2a0ba8388adf9dbc8cb6 Mon Sep 17 00:00:00 2001 From: Atticus White Date: Fri, 7 Aug 2015 02:01:41 -0400 Subject: [PATCH 08/12] view individual messages --- lib/admin/messages/init.php | 6 ++- lib/admin/messages/page.php | 17 -------- lib/admin/messages/service.php | 19 ++++++-- lib/admin/messages/views/message.php | 62 +++++++++++++++++++++++++++ lib/admin/messages/views/messages.php | 14 ++++++ 5 files changed, 96 insertions(+), 22 deletions(-) delete mode 100644 lib/admin/messages/page.php create mode 100644 lib/admin/messages/views/message.php create mode 100644 lib/admin/messages/views/messages.php diff --git a/lib/admin/messages/init.php b/lib/admin/messages/init.php index 9b5613a..f143a65 100644 --- a/lib/admin/messages/init.php +++ b/lib/admin/messages/init.php @@ -7,5 +7,9 @@ function register_menus() { add_action('admin_menu', __NAMESPACE__ . '\\register_menus'); function render_page() { - include_once(__DIR__ . '/page.php'); + if (isset($_REQUEST['post'])) { + include_once(__DIR__ . '/views/message.php'); + } else { + include_once(__DIR__ . '/views/messages.php'); + } } diff --git a/lib/admin/messages/page.php b/lib/admin/messages/page.php deleted file mode 100644 index 1026c82..0000000 --- a/lib/admin/messages/page.php +++ /dev/null @@ -1,17 +0,0 @@ -prepare_items(); -?> - -

Messages

- - -
- views(); ?> - display(); ?> -
diff --git a/lib/admin/messages/service.php b/lib/admin/messages/service.php index c7c8557..001f7c6 100644 --- a/lib/admin/messages/service.php +++ b/lib/admin/messages/service.php @@ -5,10 +5,21 @@ class MessageService { const POST_TYPE_SLUG = 'contact_message'; + private $mocks = array ( + array('id' => 1, 'title' => 'A new message', 'body' => 'This is my message'), + array('id' => 2, 'title' => 'Another meessage', 'body' => 'This is just another one') + ); + public function getMessages() { - return array ( - array('id' => 1, 'title' => 'A new message', 'body' => 'This is my message'), - array('id' => 2, 'title' => 'Another meessage', 'body' => 'This is just another one') - ); + return $this->mocks; + } + + public function getMessage($id) { + foreach ($this->mocks as $mock) { + if ($mock['id'] == $id) { + return $mock; + } + } + return null; } } diff --git a/lib/admin/messages/views/message.php b/lib/admin/messages/views/message.php new file mode 100644 index 0000000..be9f207 --- /dev/null +++ b/lib/admin/messages/views/message.php @@ -0,0 +1,62 @@ +getMessage($_REQUEST['post']); +?> +
+ +

View Message

+ +
+
+ +
+
+

+
+ +
+
+
+ +
+
+

Message Information

+
+
+ +
+
+ + Atticus White +
+
+ + contact@atticuswhite.com +
+
+ + August 04 2015, 11:00pm +
+
+ +
+
+ Trash +
+
+ +
+
+
+
+
+
+
+ + + +
+
+
diff --git a/lib/admin/messages/views/messages.php b/lib/admin/messages/views/messages.php new file mode 100644 index 0000000..520c112 --- /dev/null +++ b/lib/admin/messages/views/messages.php @@ -0,0 +1,14 @@ +prepare_items(); +?> + +
+

Messages

+ +
+ views(); ?> + display(); ?> +
+
From c5d237cd720221e603f1459461954f261fc3944e Mon Sep 17 00:00:00 2001 From: Atticus White Date: Fri, 7 Aug 2015 02:07:54 -0400 Subject: [PATCH 09/12] read/unread indication --- lib/admin/messages/service.php | 4 ++-- lib/admin/messages/table.php | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/admin/messages/service.php b/lib/admin/messages/service.php index 001f7c6..2615892 100644 --- a/lib/admin/messages/service.php +++ b/lib/admin/messages/service.php @@ -6,8 +6,8 @@ class MessageService { const POST_TYPE_SLUG = 'contact_message'; private $mocks = array ( - array('id' => 1, 'title' => 'A new message', 'body' => 'This is my message'), - array('id' => 2, 'title' => 'Another meessage', 'body' => 'This is just another one') + array('id' => 1, 'title' => 'A new message', 'body' => 'This is my message', 'read' => false), + array('id' => 2, 'title' => 'Another meessage', 'body' => 'This is just another one', 'read' => true) ); public function getMessages() { diff --git a/lib/admin/messages/table.php b/lib/admin/messages/table.php index 345fbdb..d777fbe 100644 --- a/lib/admin/messages/table.php +++ b/lib/admin/messages/table.php @@ -39,10 +39,16 @@ public function column_cb($item) { } public function column_message_title($item) { + if (!$item['read']) { + $title = "{$item['title']}"; + } else { + $title = $item['title']; + } + $actions = array( 'view' => "View" ); - return "{$item['title']}" . $this->row_actions($actions, false); + return $title . $this->row_actions($actions, false); } public function column_message_date() { From 1238105527208c261b1f45dee3cad025496132ba Mon Sep 17 00:00:00 2001 From: Atticus White Date: Fri, 7 Aug 2015 02:10:55 -0400 Subject: [PATCH 10/12] from column --- lib/admin/messages/table.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/admin/messages/table.php b/lib/admin/messages/table.php index d777fbe..10b578b 100644 --- a/lib/admin/messages/table.php +++ b/lib/admin/messages/table.php @@ -23,6 +23,7 @@ public function get_columns() { return array( 'cb' => '', 'message_title' => 'Title', + 'message_from' => 'From', 'message_date' => 'Date' ); } @@ -51,6 +52,12 @@ public function column_message_title($item) { return $title . $this->row_actions($actions, false); } + public function column_message_from($item) { + $name = 'Atticus White'; + $email = 'contact@atticuswhite'; + return $name . "
" . $email; + } + public function column_message_date() { return "August 04, 2015 11:00pm"; } From 7c08a20e8898b54dd05a91dfd5798bb7ed75a72a Mon Sep 17 00:00:00 2001 From: Atticus White Date: Fri, 7 Aug 2015 02:30:48 -0400 Subject: [PATCH 11/12] MessageModel --- functions.php | 1 + lib/admin/messages/model.php | 26 ++++++++++++++++++++++++++ lib/admin/messages/service.php | 12 +++++++----- lib/admin/messages/table.php | 18 +++++++++--------- lib/admin/messages/views/message.php | 10 +++++----- 5 files changed, 48 insertions(+), 19 deletions(-) create mode 100644 lib/admin/messages/model.php diff --git a/functions.php b/functions.php index 97074ee..f9558cc 100644 --- a/functions.php +++ b/functions.php @@ -9,6 +9,7 @@ 'lib/admin/messages/init.php', 'lib/admin/messages/service.php', 'lib/admin/messages/table.php', + 'lib/admin/messages/model.php', 'lib/services/news/remote_news_feed.php', 'lib/services/news/news_feed.php', 'lib/services/events/remote_events.php', diff --git a/lib/admin/messages/model.php b/lib/admin/messages/model.php new file mode 100644 index 0000000..0a15fed --- /dev/null +++ b/lib/admin/messages/model.php @@ -0,0 +1,26 @@ +$val) { + $this->$key = $val; + } + } + + public function getDate() { + return date('F d, Y h:ia', $this->date); + } + + public function getBody() { + return apply_filters('the_content', $this->body); + } +} diff --git a/lib/admin/messages/service.php b/lib/admin/messages/service.php index 2615892..2fa1c23 100644 --- a/lib/admin/messages/service.php +++ b/lib/admin/messages/service.php @@ -5,10 +5,12 @@ class MessageService { const POST_TYPE_SLUG = 'contact_message'; - private $mocks = array ( - array('id' => 1, 'title' => 'A new message', 'body' => 'This is my message', 'read' => false), - array('id' => 2, 'title' => 'Another meessage', 'body' => 'This is just another one', 'read' => true) - ); + private $mocks = array(); + + public function __construct() { + $this->mocks[0] = new MessageModel(array('id' => 1, 'title' => 'A new message', 'body' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum posuere iaculis consequat. Donec eget metus in urna egestas tempor. Maecenas suscipit ullamcorper ipsum sit amet egestas. Suspendisse malesuada magna sit amet lorem imperdiet accumsan. Pellentesque ornare iaculis interdum. Nam varius malesuada ipsum vitae convallis. Quisque luctus ligula dui, nec fermentum eros tincidunt ac. Fusce non imperdiet nisi, a venenatis turpis. Aenean a convallis lacus. Nam at turpis eget mi sodales imperdiet. Proin eleifend justo vel lectus fermentum volutpat. Maecenas ullamcorper posuere risus vel bibendum. Vestibulum sagittis hendrerit tincidunt.', 'read' => false, 'date' => time(), 'from' => array('name' => 'Atticus White', 'email' => 'contact@atticuswhite.com'))); + $this->mocks[1] = new MessageModel(array('id' => 2, 'title' => 'Another meessage', 'body' => 'This is just another one', 'read' => true, 'date' => time(), 'from' => array('name' => 'Atticus White', 'email' => 'contact@atticuswhite.com'))); + } public function getMessages() { return $this->mocks; @@ -16,7 +18,7 @@ public function getMessages() { public function getMessage($id) { foreach ($this->mocks as $mock) { - if ($mock['id'] == $id) { + if ($mock->id == $id) { return $mock; } } diff --git a/lib/admin/messages/table.php b/lib/admin/messages/table.php index 10b578b..a448d99 100644 --- a/lib/admin/messages/table.php +++ b/lib/admin/messages/table.php @@ -36,30 +36,30 @@ public function get_views() { } public function column_cb($item) { - return ""; + return "id}\" />"; } public function column_message_title($item) { - if (!$item['read']) { - $title = "{$item['title']}"; + if (!$item->read) { + $title = "{$item->title}"; } else { - $title = $item['title']; + $title = $item->title; } $actions = array( - 'view' => "View" + 'view' => "id}\">View" ); return $title . $this->row_actions($actions, false); } public function column_message_from($item) { - $name = 'Atticus White'; - $email = 'contact@atticuswhite'; + $name = $item->from['name']; + $email = "from['email']}\">{$item->from['email']}"; return $name . "
" . $email; } - public function column_message_date() { - return "August 04, 2015 11:00pm"; + public function column_message_date($item) { + return $item->getDate(); } public function get_sortable_columns() { diff --git a/lib/admin/messages/views/message.php b/lib/admin/messages/views/message.php index be9f207..23f81a6 100644 --- a/lib/admin/messages/views/message.php +++ b/lib/admin/messages/views/message.php @@ -13,9 +13,9 @@
-

+

title; ?>

- + getBody(); ?>
@@ -29,15 +29,15 @@
- Atticus White + from['name']; ?>
- contact@atticuswhite.com + from['email']; ?>
- August 04 2015, 11:00pm + getDate(); ?>
From 0c15f883b4d5c6795bebcce8629c9d1bb9083c51 Mon Sep 17 00:00:00 2001 From: Atticus White Date: Fri, 7 Aug 2015 02:32:58 -0400 Subject: [PATCH 12/12] :lipstick: --- lib/admin/messages/views/message.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/admin/messages/views/message.php b/lib/admin/messages/views/message.php index 23f81a6..744e7b5 100644 --- a/lib/admin/messages/views/message.php +++ b/lib/admin/messages/views/message.php @@ -1,9 +1,9 @@ getMessage($_REQUEST['post']); ?> +

View Message

@@ -54,9 +54,6 @@
- - -