From 7888922dce5e02a0f68509fbc2af0abd49373e5a Mon Sep 17 00:00:00 2001 From: Jean-Christian Denis Date: Sat, 23 Oct 2021 00:42:30 +0200 Subject: [PATCH] add generic filters for period --- index.php | 311 +++++--------------------------------------- js/checkbox.js | 3 + js/dates.js | 13 -- js/periodsfilter.js | 44 ------- js/postsfilter.js | 44 ------- 5 files changed, 32 insertions(+), 383 deletions(-) create mode 100644 js/checkbox.js delete mode 100644 js/periodsfilter.js delete mode 100644 js/postsfilter.js diff --git a/index.php b/index.php index cdc1751..d9e458f 100644 --- a/index.php +++ b/index.php @@ -208,197 +208,12 @@ if ($part == 'period') { # Prepare combos for posts list if ($period_id) { - try { - # Getting categories - $categories = $core->blog->getCategories(['post_type' => 'post']); + # Filters + $post_filter = new adminPostFilter($core); + $post_filter->add('part', 'period'); - # Getting authors - $users = $core->blog->getPostsUsers(); - - # Getting dates - $dates = $core->blog->getDates(['type' => 'month']); - - # Getting langs - $langs = $core->blog->getLangs(); - } catch (Exception $e) { - $core->error->add($e->getMessage()); - } - } - - # Creating filter combo boxes - if ($period_id && !$core->error->flag()) { - - # Users combo - $users_combo = array_merge( - ['-' => ''], - dcAdminCombos::getUsersCombo($users) - ); - - # Categories combo - $categories_combo = array_merge( - [ - new formSelectOption('-', ''), - new formSelectOption(__('(No cat)'), 'NULL') - ], - dcAdminCombos::getCategoriesCombo($categories, false) - ); - $categories_values = []; - foreach ($categories_combo as $cat) { - if (isset($cat->value)) { - $categories_values[$cat->value] = true; - } - } - - # Status combo - $status_combo = array_merge( - ['-' => ''], - dcAdminCombos::getPostStatusesCombo() - ); - - # Selection combo - $selected_combo = [ - '-' => '', - __('Selected') => '1', - __('Not selected') => '0' - ]; - - # Attachments combo - $attachment_combo = [ - '-' => '', - __('With attachments') => '1', - __('Without attachments') => '0' - ]; - - # Months combo - $dt_m_combo = array_merge( - ['-' => ''], - dcAdminCombos::getDatesCombo($dates) - ); - - # Langs combo - $lang_combo = array_merge( - ['-' => ''], - dcAdminCombos::getLangsCombo($langs, false) - ); - - # Sort_by combo - $sortby_combo = [ - __('Date') => 'post_dt', - __('Title') => 'post_title', - __('Category') => 'cat_title', - __('Author') => 'user_id', - __('Status') => 'post_status', - __('Selected') => 'post_selected', - __('Number of comments') => 'nb_comment', - __('Number of trackbacks') => 'nb_trackback' - ]; - - # order combo - $order_combo = [ - __('Descending') => 'desc', - __('Ascending') => 'asc' - ]; - - # parse filters - $user_id = !empty($_GET['user_id']) ? $_GET['user_id'] : ''; - $cat_id = !empty($_GET['cat_id']) ? $_GET['cat_id'] : ''; - $status = isset($_GET['status']) ? $_GET['status'] : ''; - $selected = isset($_GET['selected']) ? $_GET['selected'] : ''; - $attachment = isset($_GET['attachment']) ? $_GET['attachment'] : ''; - $month = !empty($_GET['month']) ? $_GET['month'] : ''; - $lang = !empty($_GET['lang']) ? $_GET['lang'] : ''; - $sortby = !empty($_GET['sortby']) ? $_GET['sortby'] : 'post_dt'; - $order = !empty($_GET['order']) ? $_GET['order'] : 'desc'; - - $show_filters = false; - - $page = !empty($_GET['page']) ? max(1, (integer) $_GET['page']) : 1; - $nb_per_page = 30; - - if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) { - if ($nb_per_page != $_GET['nb']) { - $show_filters = true; - } - $nb_per_page = (integer) $_GET['nb']; - } - - $params['limit'] = [(($page-1)*$nb_per_page), $nb_per_page]; + $params = $post_filter->params(); $params['no_content'] = true; - $params['periodical_id'] = $period_id; - - # - User filter - if ($user_id !== '' && in_array($user_id, $users_combo)) { - $params['user_id'] = $user_id; - $show_filters = true; - } else { - $user_id=''; - } - - # - Categories filter - if ($cat_id !== '' && isset($categories_values[$cat_id])) { - $params['cat_id'] = $cat_id; - $show_filters = true; - } else { - $cat_id=''; - } - - # - Status filter - if ($status !== '' && in_array($status, $status_combo)) { - $params['post_status'] = $status; - $show_filters = true; - } else { - $status=''; - } - - # - Selected filter - if ($selected !== '' && in_array($selected, $selected_combo)) { - $params['post_selected'] = $selected; - $show_filters = true; - } else { - $selected=''; - } - - # - Selected filter - if ($attachment !== '' && in_array($attachment, $attachment_combo)) { - $params['media'] = $attachment; - $params['link_type'] = 'attachment'; - $show_filters = true; - } else { - $attachment=''; - } - - # - Month filter - if ($month !== '' && in_array($month, $dt_m_combo)) { - $params['post_month'] = substr($month, 4, 2); - $params['post_year'] = substr($month, 0, 4); - $show_filters = true; - } else { - $month=''; - } - - # - Lang filter - if ($lang !== '' && in_array($lang, $lang_combo)) { - $params['post_lang'] = $lang; - $show_filters = true; - } else { - $lang=''; - } - - # - Sortby and order filter - if ($sortby !== '' && in_array($sortby, $sortby_combo)) { - if ($order !== '' && in_array($order, $order_combo)) { - $params['order'] = $sortby.' '.$order; - } else { - $order='desc'; - } - - if ($sortby != 'post_dt' || $order != 'desc') { - $show_filters = true; - } - } else { - $sortby='post_dt'; - $order='desc'; - } # Get posts try { @@ -410,25 +225,8 @@ if ($part == 'period') { } $starting_script = - dcPage::jsLoad( - 'index.php?pf=periodical/js/postsfilter.js' - ) . - '\n"; + dcPage::jsLoad('index.php?pf=periodical/js/checkbox.js') . + $post_filter->js($core->adminurl->get('admin.plugin.periodical', ['part' => 'period', 'period_id' => $period_id], '&').'#posts'); } # Display @@ -491,7 +289,7 @@ if ($part == 'period') { if ($period_id && !$core->error->flag()) { # Actions combo box - $combo_action = array(); + $combo_action = []; $combo_action[__('Entries')][__('Publish')] = 'publish'; $combo_action[__('Entries')][__('Unpublish')] = 'unpublish'; $combo_action[__('Periodical')][__('Remove from periodical')] = 'remove_post_periodical'; @@ -499,16 +297,16 @@ if ($part == 'period') { $base_url = $p_url . '&period_id=' .$period_id . '&part=period' . - '&user_id=' . $user_id . - '&cat_id=' . $cat_id . - '&status=' . $status . - '&selected=' . $selected . - '&attachment=' . $attachment . - '&month=' . $month . - '&lang=' . $lang . - '&sortby=' . $sortby . - '&order=' . $order . - '&nb=' . $nb_per_page . + '&user_id=' . $post_filter->user_id . + '&cat_id=' . $post_filter->cat_id . + '&status=' . $post_filter->status . + '&selected=' . $post_filter->selected . + '&attachment=' . $post_filter->attachment . + '&month=' . $post_filter->month . + '&lang=' . $post_filter->lang . + '&sortby=' . $post_filter->sortby . + '&order=' . $post_filter->order . + '&nb=' . $post_filter->nb . '&page=%s' . '#posts'; @@ -518,57 +316,17 @@ if ($part == 'period') { '" id="posts">'; # Filters - echo - '
' . - - '

' . - __('Cancel filters and display options') . - '

' . - - '
' . - '
' . - '

' . __('Filters') . '

' . - '

' . - form::combo('user_id', $users_combo, $user_id) . '

' . - '

' . - form::combo('cat_id', $categories_combo, $cat_id) . '

' . - '

' . - form::combo('status', $status_combo, $status) . '

' . - '
' . - - '
' . - '

' . - form::combo('selected', $selected_combo, $selected) .'

' . - '

' . - form::combo('attachment', $attachment_combo, $attachment) . '

' . - '

' . - form::combo('month', $dt_m_combo,$month) . '

' . - '

' . - form::combo('lang', $lang_combo, $lang) . '

' . - '
'. - - '
' . - '

' . __('Display options') . '

' . - '

' . - form::combo('sortby', $sortby_combo, $sortby) . '

' . - '

' . - form::combo('order', $order_combo, $order) . '

' . - '

' . __('Show') . '

' . - '
' . - '
' . - - '

' . - form::hidden(['p'], 'periodical') . - form::hidden(['part'], 'period') . - form::hidden(['period_id'], $period_id) . - '

' . //Opera sucks - '
'; + $post_filter->display(['admin.plugin.periodical','#posts'], + $core->adminurl->getHiddenFormFields('admin.plugin.zoneclearFeedServer', [ + 'p' => 'periodical', + 'part' => 'period', + 'period_id' => $period_id + ]) + ); # Posts list echo - $post_list->postDisplay($page, $nb_per_page, $base_url, + $post_list->postDisplay($post_filter->page, $post_filter->nb, $base_url, '
' . '%s' . @@ -579,21 +337,10 @@ if ($part == 'period') { '

' . __('Selected entries action:') . ' ' . form::combo('action', $combo_action) . '

' . + $core->adminurl->getHiddenFormFields('admin.plugin.periodical', $post_filter->values()) . form::hidden(['period_id'], $period_id) . - form::hidden(['user_id'], $user_id) . - form::hidden(['cat_id'], $cat_id) . - form::hidden(['status'], $status) . - form::hidden(['selected'], $selected) . - form::hidden(['attachment'], $attachment) . - form::hidden(['month'], $month) . - form::hidden(['lang'], $lang) . - form::hidden(['sortby'], $sortby) . - form::hidden(['order'], $order) . - form::hidden(['page'], $page) . - form::hidden(['nb'], $nb_per_page) . form::hidden(['p'], 'periodical') . - form::hidden(['part'], 'period') . - form::hidden(['redir'], sprintf($base_url, $page)) . + form::hidden(['redir'], sprintf($base_url, $post_filter->page)) . $core->formNonce() . '' . '
' @@ -660,7 +407,7 @@ if ($part == 'period') { # Filters $p_filter = new adminGenericFilter($core, 'periodical'); - $p_filter->add('part', 'period'); + $p_filter->add('part', 'periods'); $params = $p_filter->params(); @@ -676,7 +423,7 @@ if ($part == 'period') { # Display echo '' . __('Periodical') . '' . - //dcPage::jsLoad('index.php?pf=periodical/js/periodsfilter.js') . + dcPage::jsLoad('index.php?pf=periodical/js/checkbox.js') . $p_filter->js($core->adminurl->get('admin.plugin.periodical', ['part' => 'periods'])) . '' . '' . diff --git a/js/checkbox.js b/js/checkbox.js new file mode 100644 index 0000000..062e010 --- /dev/null +++ b/js/checkbox.js @@ -0,0 +1,3 @@ +$(function(){ + $('.checkboxes-helpers').each(function(){dotclear.checkboxesHelpers(this);}); +}); \ No newline at end of file diff --git a/js/dates.js b/js/dates.js index f1c2d71..f6fcd32 100644 --- a/js/dates.js +++ b/js/dates.js @@ -1,16 +1,3 @@ -/* -- BEGIN LICENSE BLOCK ---------------------------------- - * - * This file is part of periodical, a plugin for Dotclear 2. - * - * Copyright (c) 2009-2013 Jean-Christian Denis and contributors - * contact@jcdenis.fr http://jcd.lv - * - * Licensed under the GPL version 2.0 license. - * A copy of this license is available in LICENSE file or at - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * - * -- END LICENSE BLOCK ------------------------------------*/ - $(function(){ var periodicalstart=document.getElementById('period_curdt'); if(periodicalstart!=undefined){ diff --git a/js/periodsfilter.js b/js/periodsfilter.js deleted file mode 100644 index 3c608fb..0000000 --- a/js/periodsfilter.js +++ /dev/null @@ -1,44 +0,0 @@ -/* -- BEGIN LICENSE BLOCK ---------------------------------- - * - * This file is part of periodical, a plugin for Dotclear 2. - * - * Copyright (c) 2009-2013 Jean-Christian Denis and contributors - * contact@jcdenis.fr http://jcd.lv - * - * Licensed under the GPL version 2.0 license. - * A copy of this license is available in LICENSE file or at - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * - * -- END LICENSE BLOCK ------------------------------------*/ - -$(function(){ - $('.checkboxes-helpers').each(function(){dotclear.checkboxesHelpers(this);}); - - $filtersform = $('#filters-form'); - $filtersform.before('

'+dotclear.msg.filter_posts_list+'

') - - if( dotclear.msg.show_filters == 'false' ) { - $filtersform.hide(); - } else { - $('#filter-control') - .addClass('open') - .text(dotclear.msg.cancel_the_filter); - } - - $('#filter-control').click(function() { - if( $(this).hasClass('open') ) { - if( dotclear.msg.show_filters == 'true' ) { - return true; - } else { - $filtersform.hide(); - $(this).removeClass('open') - .text(dotclear.msg.filter_posts_list); - } - } else { - $filtersform.show(); - $(this).addClass('open') - .text(dotclear.msg.cancel_the_filter); - } - return false; - }); -}); \ No newline at end of file diff --git a/js/postsfilter.js b/js/postsfilter.js deleted file mode 100644 index 223e97a..0000000 --- a/js/postsfilter.js +++ /dev/null @@ -1,44 +0,0 @@ -/* -- BEGIN LICENSE BLOCK ---------------------------------- - * - * This file is part of periodical, a plugin for Dotclear 2. - * - * Copyright (c) 2009-2013 Jean-Christian Denis and contributors - * contact@jcdenis.fr http://jcd.lv - * - * Licensed under the GPL version 2.0 license. - * A copy of this license is available in LICENSE file or at - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * - * -- END LICENSE BLOCK ------------------------------------*/ - -$(function(){ - $('.checkboxes-helpers').each(function(){dotclear.checkboxesHelpers(this);}); - - $filtersform = $('#filters-form'); - $filtersform.before('

'+dotclear.msg.filter_posts_list+'

') - - if( dotclear.msg.show_filters == 'false' ) { - $filtersform.hide(); - } else { - $('#filter-control') - .addClass('open') - .text(dotclear.msg.cancel_the_filter); - } - - $('#filter-control').click(function() { - if( $(this).hasClass('open') ) { - if( dotclear.msg.show_filters == 'true' ) { - return true; - } else { - $filtersform.hide(); - $(this).removeClass('open') - .text(dotclear.msg.filter_posts_list); - } - } else { - $filtersform.show(); - $(this).addClass('open') - .text(dotclear.msg.cancel_the_filter); - } - return false; - }); -}); \ No newline at end of file