diff --git a/addons/grouping/legacy-includes.php b/addons/grouping/legacy-includes.php index d7ff1625..8e42b2ee 100644 --- a/addons/grouping/legacy-includes.php +++ b/addons/grouping/legacy-includes.php @@ -48,7 +48,7 @@ add_action('edited_'.ppseries_get_series_slug().'', 'wp_update_series_group', 1, 2); add_action('delete_'.ppseries_get_series_slug().'', 'wp_delete_series_group', 1, 2); -//render series group template +//render Series Category template add_filter('template_include','pp_series_group_template'); add_action('pp_series_advanced_tab_top', 'series_grouping_delete_output'); @@ -125,7 +125,7 @@ function upgrade_orgseries_grouping_from_one_five() { //if ( !taxonomy_exists('series_group') ) //orgseries_grouping_taxonomy(); - //let's get all the existing series groups in the old category system + //let's get all the existing Series Categories in the old category system $args = array( 'hide_empty' => false, 'fields' => 'ids', @@ -214,16 +214,16 @@ function orgseries_grouping_taxonomy() { 'assign_terms' => 'manage_series' ); $labels = array( - 'name' => _x('Manage Series Groups', 'taxonomy general name', 'organize-series'), - 'singular_name' => _x('Series Group', 'taxonomy singular name', 'organize-series'), - 'search_items' => __('Search Series Groups', 'organize-series'), - 'popular_items' => __('Popular Series Groups', 'organize-series'), - 'all_items' => __('All Series Groups', 'organize-series'), - 'edit_item' => __('Edit Series Group', 'organize-series'), - 'update_item' => __('Update Series Group', 'organize-series'), - 'add_new_item' => __('Add New Series Group', 'organize-series'), - 'new_item_name' => __('New Series Group', 'organize-series'), - 'menu_name' => __('Series Groups', 'organize-series') + 'name' => _x('Manage Series Categories', 'taxonomy general name', 'organize-series'), + 'singular_name' => _x('Series Category', 'taxonomy singular name', 'organize-series'), + 'search_items' => __('Search Series Categories', 'organize-series'), + 'popular_items' => __('Popular Series Categories', 'organize-series'), + 'all_items' => __('All Series Categories', 'organize-series'), + 'edit_item' => __('Edit Series Category', 'organize-series'), + 'update_item' => __('Update Series Category', 'organize-series'), + 'add_new_item' => __('Add New Series Category', 'organize-series'), + 'new_item_name' => __('New Series Category', 'organize-series'), + 'menu_name' => __('Series Categories', 'organize-series') ); $args = array( 'update_count_callback' => 'update_series_group_count', @@ -273,7 +273,7 @@ function orgseries_grouping_import_existing_series() { } function orgseries_groups_admin_menu() { - add_submenu_page( 'edit.php', 'Manage Series Groups', 'Series Groups', 'manage_series', 'edit-tags.php?taxonomy=series_group'); + add_submenu_page( 'edit.php', 'Manage Series Categories', 'Series Categories', 'manage_series', 'edit-tags.php?taxonomy=series_group'); } function orgseries_group_add_queryvars($qvs) { @@ -329,7 +329,7 @@ function orgseries_manage_grouping_columns() { } function orgseries_grouping_settings_setup() { - //add_settings_field('series_grouping_delete_settings','Series Grouping Addon Settings','series_grouping_delete_output', 'orgseries_options_page','series_uninstall_settings'); + //add_settings_field('series_grouping_delete_settings','Series Categories Addon Settings','series_grouping_delete_output', 'orgseries_options_page','series_uninstall_settings'); register_setting('orgseries_options', 'org_series_options'); add_filter('orgseries_options', 'series_grouping_options_validate', 10, 2); } @@ -347,13 +347,13 @@ function series_grouping_delete_output() { ?> diff --git a/addons/publisher/css/series_im_sort_articles.css b/addons/publisher/css/series_im_sort_articles.css index 199d390b..e790148e 100644 --- a/addons/publisher/css/series_im_sort_articles.css +++ b/addons/publisher/css/series_im_sort_articles.css @@ -1,7 +1,3 @@ -.pp-series-publisher-wrap .tablenav.top { - display: none; -} - .pp-series-publisher-wrap .inner-sidebar #side-sortables { width: 300px; } diff --git a/addons/publisher/series-publish-post-table.php b/addons/publisher/series-publish-post-table.php index 041f22e0..4e9fe73a 100644 --- a/addons/publisher/series-publish-post-table.php +++ b/addons/publisher/series-publish-post-table.php @@ -78,10 +78,13 @@ public function get_table_data(){ $series_posts = []; if ($series_id) { + $per_page = $this->get_items_per_page('pp_series_publisher_per_page', 20); + $current_page = $this->get_pagenum(); + $arg = array( 'post_status' => ['future', 'draft', 'pending'], - 'posts_per_page' => -1, - 'no_found_rows' => true, + 'paged' => $current_page, + 'posts_per_page' => $per_page, 'tax_query' => array( 'relation' => 'AND', array( @@ -91,13 +94,130 @@ public function get_table_data(){ ) ), ); + + /** + * Handle category filter + */ + if ((!empty($_REQUEST['cat'])) && $category = sanitize_text_field($_REQUEST['cat'])) { + $arg['tax_query'][] = [ + 'taxonomy' => 'category', + 'field' => 'slug', + 'terms' => array($category) + ]; + } + + /** + * Handle search + */ + if ((!empty($_REQUEST['s'])) && $search = sanitize_text_field($_REQUEST['s'])) { + $arg['s'] = $search; + } + $series_query = new WP_Query($arg); - $series_posts = $series_query->posts; + + return ['posts'=> $series_query->posts, 'counts'=> $series_query->found_posts]; } return $series_posts; } + /** + * Returns the count of records in the database. + * + * @return null|string + */ + public static function record_count() + { + return $this->get_table_data()['counts']; + } + + + /** + * Add custom filter to tablenav + * + * @param string $which + */ + protected function extra_tablenav( $which ) { + + if ( 'top' === $which ) { + + $taxonomies = get_all_taxopress_public_taxonomies(); + $selected_category = (!empty($_REQUEST['cat'])) ? sanitize_text_field($_REQUEST['cat']) : ''; + ?> +
+ __( 'All Categories', 'organize-series' ), + 'orderby' => 'name', + 'order' => 'ASC', + 'hide_empty' => false, + 'hide_if_empty' => true, + 'selected' => $selected_category, + 'hierarchical' => true, + 'name' => 'cat', + 'taxonomy' => 'category', + 'value_field' => 'slug', + ) + ); + + submit_button( __( 'Filter', 'organize-series' ), '', 'filter_action', false, array( 'id' => 'post-query-submit' ) ); + ?> +
+ has_items()) { + return; + } + + $input_id = $input_id . '-search-input'; + + if (!empty($_REQUEST['orderby'])) { + echo ''; + } + if (!empty($_REQUEST['order'])) { + echo ''; + } + if (!empty($_REQUEST['page'])) { + echo ''; + } + if (!empty($_REQUEST['action'])) { + echo ''; + } + if (!empty($_REQUEST['series_ID'])) { + echo ''; + } + if (!empty($_REQUEST['cat'])) { + echo ''; + } + + if (!empty($_REQUEST['s'])) { + echo ''; + } + + echo ''; + ?> + + get_items_per_page(str_replace('-', '_', $this->screen->id . '_per_page'), 999); - + $per_page = $this->get_items_per_page('pp_series_publisher_per_page', 20); /** * Fetch the data */ - $data = $this->get_table_data(); - - /** - * Pagination. - */ + $results = $this->get_table_data(); + $data = $results['posts']; + $total_items = $results['counts']; $current_page = $this->get_pagenum(); - $total_items = count($data); - - - /** - * The WP_List_Table class does not handle pagination for us, so we need - * to ensure that the data is trimmed to only the current page. We can use - * array_slice() to - */ - $data = array_slice($data, (($current_page - 1) * $per_page), $per_page); /** * Now we can add the data to the items property, where it can be used by the rest of the class. */ $this->items = $data; - /** * We also have to register our pagination options & calculations. */ $this->set_pagination_args([ 'total_items' => $total_items, //calculate the total number of items - 'per_page' => $per_page, //determine how many items to show on a page + 'per_page' => $per_page, //determine how many items to show on a page 'total_pages' => ceil($total_items / $per_page) //calculate the total number of pages ]); } diff --git a/addons/publisher/series_issue_manager.php b/addons/publisher/series_issue_manager.php index f3293edf..7f288bab 100644 --- a/addons/publisher/series_issue_manager.php +++ b/addons/publisher/series_issue_manager.php @@ -520,9 +520,15 @@ public function series_issue_manager_scripts() public function screen_option() { if(isset($_GET['action']) && $_GET['action'] === 'list'){ + $option = 'per_page'; + $args = [ + 'label' => esc_html__('Number of items per page', 'organize-series'), + 'default' => 20, + 'option' => 'pp_series_publisher_per_page' + ]; include_once 'series-publish-post-table.php'; $this->series_publish_table = new PPS_Publisher_Post_Publish_Table(); - + add_screen_option($option, $args); } if(isset($_GET['action']) && ($_GET['action'] === 'part' || $_GET['action'] === 'order')){ include_once 'series-part-post-table.php'; @@ -616,10 +622,26 @@ public function ppseries_publisher_publish_output($series_ID)

name); ?>

+ ' . esc_html__('Search results for “%s”', + 'organize-series') . '', esc_html($search)); + } + ?>
+
+ +
+
+ +
+