add user pref filters for periods

This commit is contained in:
Jean-Christian Denis 2021-10-23 00:03:15 +02:00
parent 58a72dcab2
commit 5951c2b7a6
Signed by: JcDenis
GPG key ID: 1B5B8C5B90B6C951
2 changed files with 42 additions and 134 deletions

View file

@ -25,6 +25,10 @@ $core->addBehavior(
'adminBeforeBlogSettingsUpdate',
['adminPeriodical', 'adminBeforeBlogSettingsUpdate']
);
$core->addBehavior(
'adminFiltersLists',
['adminPeriodical', 'adminFiltersLists']
);
if ($core->blog->settings->periodical->periodical_active) {
@ -79,6 +83,15 @@ class adminPeriodical
{
public static $combo_period = null;
public static function sortbyCombo()
{
return [
__('Next update') => 'periodical_curdt',
__('End date') => 'periodical_enddt',
__('Frequence') => 'periodical_pub_int'
];
}
/**
* Add settings to blog preference
*
@ -87,32 +100,20 @@ class adminPeriodical
*/
public static function adminBlogPreferencesForm(dcCore $core, dcSettings $blog_settings)
{
$sortby_combo = [
__('Create date') => 'post_creadt',
__('Date') => 'post_dt',
__('Id') => 'post_id'
];
$order_combo = [
__('Descending') => 'desc',
__('Ascending') => 'asc'
];
$s_active = (boolean) $blog_settings->periodical->periodical_active;
$s_upddate = (boolean) $blog_settings->periodical->periodical_upddate;
$s_updurl = (boolean) $blog_settings->periodical->periodical_updurl;
$e_order = (string) $blog_settings->periodical->periodical_pub_order;
$e_order = explode(' ', $e_order);
$s_sortby = in_array($e_order[0], $sortby_combo) ? $e_order[0] : 'post_dt';
$s_order = isset($e_order[1]) && strtolower($e_order[1]) == 'desc' ? 'desc' : 'asc';
echo
'<div class="fieldset"><h4 id="fac_params">' . __('Periodical') . '</h4>' .
'<div class="fieldset"><h4 id="periodical_params">' . __('Periodical') . '</h4>' .
'<div class="two-cols">' .
'<div class="col">' .
'<h5>' . __('Activation') . '</h5>' .
'<p><label class="classic" for="periodical_active">' .
form::checkbox('periodical_active', 1, $s_active) .
__('Enable plugin') . '</label></p>' .
'</div>' .
'<div class="col">' .
'<h5>' . __('Dates of published entries') . '</h5>' .
'<p><label for="periodical_upddate">' .
form::checkbox('periodical_upddate', 1, $s_upddate) .
@ -121,13 +122,6 @@ class adminPeriodical
form::checkbox('periodical_updurl', 1, $s_updurl) .
__('Update post url') . '</label></p>' .
'</div>' .
'<div class="col">' .
'<h5>' . __('Order of publication of entries') . '</h5>' .
'<p><label for="periodical_sortby">'.__('Order by:') . '</label>' .
form::combo('periodical_sortby', $sortby_combo, $s_sortby) . '</p>' .
'<p><label for="periodical_order">'.__('Sort:').'</label>' .
form::combo('periodical_order', $order_combo, $s_order) . '</p>' .
'</div>' .
'</div>' .
'<br class="clear" />' .
'</div>';
@ -143,7 +137,17 @@ class adminPeriodical
$blog_settings->periodical->put('periodical_active', !empty($_POST['periodical_active']));
$blog_settings->periodical->put('periodical_upddate', !empty($_POST['periodical_upddate']));
$blog_settings->periodical->put('periodical_updurl', !empty($_POST['periodical_updurl']));
$blog_settings->periodical->put('periodical_pub_order', $_POST['periodical_sortby'] . ' ' . $_POST['periodical_order']);
}
public static function adminFiltersLists(dcCore $core, $sorts)
{
$sorts['periodical'] = [
__('Periodical'),
self::sortbyCombo(),
'periodical_curdt',
'desc',
[__('periods per page'), 10]
];
}
/**

126
index.php
View file

@ -442,13 +442,11 @@ if ($part == 'period') {
<body>';
echo
dcPage::breadcrumb(
[
dcPage::breadcrumb([
html::escapeHTML($core->blog->name) => '',
__('Periodical') => $p_url . '&amp;part=periods',
(null === $period_id ? __('New period') : __('Edit period')) => ''
]
) .
]) .
dcPage::notices();
# Period form
@ -655,49 +653,16 @@ if ($part == 'period') {
}
}
# Combos
$sortby_combo = [
__('Next update') => 'periodical_curdt',
__('End date') => 'periodical_enddt',
__('Frequence') => 'periodical_pub_int'
$combo_action = [
__('empty periods') => 'emptyperiods',
__('delete periods') => 'deleteperiods'
];
$order_combo = [
__('Descending') => 'desc',
__('Ascending') => 'asc'
];
$combo_action = [];
$combo_action[__('empty periods')] = 'emptyperiods';
$combo_action[__('delete periods')] = 'deleteperiods';
# Filters
$sortby = !empty($_GET['sortby']) ? $_GET['sortby'] : 'periodical_curdt';
$order = !empty($_GET['order']) ? $_GET['order'] : 'desc';
$p_filter = new adminGenericFilter($core, 'periodical');
$p_filter->add('part', 'period');
$show_filters = false;
$page = !empty($_GET['page']) ? (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];
if ($sortby !== '' && in_array($sortby, $sortby_combo)) {
if ($order !== '' && in_array($order, $order_combo)) {
$params['order'] = $sortby . ' ' . $order;
}
if ($sortby != 'periodical_curdt' || $order != 'desc') {
$show_filters = true;
}
}
$params = $p_filter->params();
# Get periods
try {
@ -711,25 +676,8 @@ if ($part == 'period') {
# Display
echo
'<html><head><title>' . __('Periodical') . '</title>' .
dcPage::jsLoad(
'index.php?pf=periodical/js/periodsfilter.js'
) .
'<script type="text/javascript">' . "\n" .
"//<![CDATA[\n" .
dcPage::jsVar(
'dotclear.msg.show_filters',
$show_filters ? 'true':'false'
) . "\n" .
dcPage::jsVar(
'dotclear.msg.filter_posts_list',
__('Show filters and display options')
) . "\n" .
dcPage::jsVar(
'dotclear.msg.cancel_the_filter',
__('Cancel filters and display options')
) . "\n" .
"//]]>\n" .
"</script>\n" .
//dcPage::jsLoad('index.php?pf=periodical/js/periodsfilter.js') .
$p_filter->js($core->adminurl->get('admin.plugin.periodical', ['part' => 'periods'])) .
'</head>' .
'<body>' .
@ -745,44 +693,11 @@ if ($part == 'period') {
<a class="button add" href="' . $p_url . '&amp;part=period">' . __('New period') . '</a>
</p>';
# Filter
echo
'<form action="' . $p_url . '" method="get" id="filters-form">' .
'<h3 class="out-of-screen-if-js">' .
__('Show filters and display options') .
'</h3>' .
'<div class="table">' .
'<div class="cell">' .
'<p><label for="sortby">' . __('Order by:') . '</label>' .
form::combo('sortby', $sortby_combo, $sortby) . '</p>' .
'</div>' .
'<div class="cell">' .
'<p><label for="order">' . __('Sort:') . '</label>' .
form::combo('order', $order_combo, $order) . '</p>' .
'</div>' .
'<div class="cell">' .
'<p><label for="nb">' . __('Results per page :') . '</label>' .
form::field('nb', 3, 3, $nb_per_page) . '</p>' .
'</div>' .
'</div>' .
'<p>' .
'<input type="submit" value="' . __('Apply filters and display options') . '" />' .
form::hidden(['p'], 'periodical') .
form::hidden(['part'], 'periods') .
'<br class="clear" />' . //Opera sucks
'</p>' .
'</form>';
# Filters
$p_filter->display('admin.plugin.periodical', form::hidden('p', 'periodical') . form::hidden('part', 'periods'));
# Posts list
echo $period_list->periodDisplay($page, $nb_per_page,
echo $period_list->periodDisplay($p_filter->page, $p_filter->nb,
'<form action="' . $p_url . '" method="post" id="form-periods">' .
'%s' .
@ -793,12 +708,7 @@ if ($part == 'period') {
'<p class="col right">' . __('Selected periods action:') . ' ' .
form::combo('action', $combo_action) .
'<input type="submit" value="' . __('ok') . '" /></p>' .
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'], 'periods') .
$core->adminurl->getHiddenFormFields('admin.plugin.periodical', array_merge(['p' => 'periodical'], $p_filter->values(true))) .
$core->formNonce() .
'</div>' .
'</form>'
@ -808,10 +718,4 @@ if ($part == 'period') {
dcPage::helpBlock('periodical');
# Page footer
echo
'<hr class="clear"/><p class="right modules">
periodical - '. $core->plugins->moduleInfo('periodical', 'version') . '&nbsp;
<img alt="' . __('periodical') . '" src="index.php?pf=periodical/icon.png" />
</p>
</body></html>';
echo '</body></html>';