add user pref for posts list filters
This commit is contained in:
parent
b4224d4736
commit
27da00a377
5 changed files with 81 additions and 184 deletions
81
_admin.php
81
_admin.php
|
@ -12,7 +12,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('DC_CONTEXT_ADMIN')) {
|
if (!defined('DC_CONTEXT_ADMIN')) {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,73 +21,35 @@ require dirname(__FILE__).'/_widgets.php';
|
||||||
if ($core->blog->settings->postwidgettext->postwidgettext_active) {
|
if ($core->blog->settings->postwidgettext->postwidgettext_active) {
|
||||||
$_menu['Plugins']->addItem(
|
$_menu['Plugins']->addItem(
|
||||||
__('Post widget text'),
|
__('Post widget text'),
|
||||||
'plugin.php?p=postWidgetText',
|
$core->adminurl->get('admin.plugin.postWidgetText'),
|
||||||
'index.php?pf=postWidgetText/icon.png',
|
dcPage::getPF('postWidgetText/icon.png'),
|
||||||
preg_match(
|
preg_match('/' . preg_quote($core->adminurl->get('admin.plugin.postWidgetText')) . '(&.*)?$/', $_SERVER['REQUEST_URI']),
|
||||||
'/plugin.php\?p=postWidgetText(&.*)?$/',
|
|
||||||
$_SERVER['REQUEST_URI']),
|
|
||||||
$core->auth->check('contentadmin', $core->blog->id)
|
$core->auth->check('contentadmin', $core->blog->id)
|
||||||
);
|
);
|
||||||
|
|
||||||
$core->addBehavior(
|
$core->addBehavior('adminDashboardFavorites', ['postWidgetTextDashboard', 'favorites']);
|
||||||
'adminDashboardFavorites',
|
|
||||||
array('postWidgetTextDashboard', 'favorites')
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
# Pref
|
||||||
|
$core->addBehavior('adminFiltersLists', ['postWidgetTextAdmin', 'adminFiltersLists']);
|
||||||
# Post
|
# Post
|
||||||
$core->addBehavior(
|
$core->addBehavior('adminPostHeaders', ['postWidgetTextAdmin', 'headers']);
|
||||||
'adminPostHeaders',
|
$core->addBehavior('adminPostFormItems', ['postWidgetTextAdmin', 'form']);
|
||||||
array('postWidgetTextAdmin', 'headers'));
|
$core->addBehavior('adminAfterPostUpdate', ['postWidgetTextAdmin', 'save']);
|
||||||
$core->addBehavior(
|
$core->addBehavior('adminAfterPostCreate', ['postWidgetTextAdmin', 'save']);
|
||||||
'adminPostFormItems',
|
$core->addBehavior('adminBeforePostDelete', ['postWidgetTextAdmin', 'delete']);
|
||||||
array('postWidgetTextAdmin', 'form'));
|
|
||||||
$core->addBehavior(
|
|
||||||
'adminAfterPostUpdate',
|
|
||||||
array('postWidgetTextAdmin', 'save'));
|
|
||||||
$core->addBehavior(
|
|
||||||
'adminAfterPostCreate',
|
|
||||||
array('postWidgetTextAdmin', 'save'));
|
|
||||||
$core->addBehavior(
|
|
||||||
'adminBeforePostDelete',
|
|
||||||
array('postWidgetTextAdmin', 'delete'));
|
|
||||||
|
|
||||||
# Plugin "pages"
|
# Plugin "pages"
|
||||||
$core->addBehavior(
|
$core->addBehavior('adminPageHeaders', ['postWidgetTextAdmin', 'headers']);
|
||||||
'adminPageHeaders',
|
$core->addBehavior('adminPageFormItems', ['postWidgetTextAdmin', 'form']);
|
||||||
array('postWidgetTextAdmin', 'headers'));
|
$core->addBehavior('adminAfterPageUpdate', ['postWidgetTextAdmin', 'save']);
|
||||||
$core->addBehavior(
|
$core->addBehavior('adminAfterPageCreate', ['postWidgetTextAdmin', 'save']);
|
||||||
'adminPageFormItems',
|
$core->addBehavior('adminBeforePageDelete', ['postWidgetTextAdmin', 'delete']);
|
||||||
array('postWidgetTextAdmin', 'form'));
|
|
||||||
$core->addBehavior(
|
|
||||||
'adminAfterPageUpdate',
|
|
||||||
array('postWidgetTextAdmin', 'save'));
|
|
||||||
$core->addBehavior(
|
|
||||||
'adminAfterPageCreate',
|
|
||||||
array('postWidgetTextAdmin', 'save'));
|
|
||||||
$core->addBehavior(
|
|
||||||
'adminBeforePageDelete',
|
|
||||||
array('postWidgetTextAdmin', 'delete'));
|
|
||||||
|
|
||||||
# Plugin "importExport"
|
# Plugin "importExport"
|
||||||
if ($core->blog->settings->postwidgettext->postwidgettext_importexport_active) {
|
if ($core->blog->settings->postwidgettext->postwidgettext_importexport_active) {
|
||||||
$core->addBehavior(
|
$core->addBehavior('exportFull', ['postWidgetTextBackup', 'exportFull']);
|
||||||
'exportFull',
|
$core->addBehavior('exportSingle', ['postWidgetTextBackup', 'exportSingle']);
|
||||||
array('postWidgetTextBackup', 'exportFull')
|
$core->addBehavior('importInit', ['postWidgetTextBackup', 'importInit']);
|
||||||
);
|
$core->addBehavior('importSingle', ['postWidgetTextBackup', 'importSingle']);
|
||||||
$core->addBehavior(
|
$core->addBehavior('importFull', ['postWidgetTextBackup', 'importFull']);
|
||||||
'exportSingle',
|
|
||||||
array('postWidgetTextBackup', 'exportSingle')
|
|
||||||
);
|
|
||||||
$core->addBehavior(
|
|
||||||
'importInit',
|
|
||||||
array('postWidgetTextBackup', 'importInit')
|
|
||||||
);
|
|
||||||
$core->addBehavior(
|
|
||||||
'importSingle',
|
|
||||||
array('postWidgetTextBackup', 'importSingle')
|
|
||||||
);
|
|
||||||
$core->addBehavior(
|
|
||||||
'importFull',
|
|
||||||
array('postWidgetTextBackup', 'importFull')
|
|
||||||
);
|
|
||||||
}
|
}
|
|
@ -23,9 +23,30 @@ if (!defined('DC_CONTEXT_ADMIN')) {
|
||||||
*/
|
*/
|
||||||
class postWidgetTextAdmin
|
class postWidgetTextAdmin
|
||||||
{
|
{
|
||||||
|
public static function sortbyCombo()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
__('Post title') => 'post_title',
|
||||||
|
__('Post date') => 'post_dt',
|
||||||
|
__('Widget title') => 'option_title',
|
||||||
|
__('Widget date') => 'option_upddt',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function adminFiltersLists(dcCore $core, $sorts)
|
||||||
|
{
|
||||||
|
$sorts['pwt'] = [
|
||||||
|
__('Post widget text'),
|
||||||
|
self::sortbyCombo(),
|
||||||
|
'post_dt',
|
||||||
|
'desc',
|
||||||
|
[__('entries per page'), 20]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
public static function headers()
|
public static function headers()
|
||||||
{
|
{
|
||||||
return dcPage::jsLoad('index.php?pf=postWidgetText/js/post.js');
|
return dcPage::jsLoad(dcPage::getPF('postWidgetText/js/post.js'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function form($main, $sidebar, $post)
|
public static function form($main, $sidebar, $post)
|
||||||
|
|
|
@ -23,14 +23,14 @@ if (!defined('DC_CONTEXT_ADMIN')) {
|
||||||
*/
|
*/
|
||||||
class postWidgetTextList extends adminGenericList
|
class postWidgetTextList extends adminGenericList
|
||||||
{
|
{
|
||||||
public function display($page, $nb_per_page, $enclose='')
|
public function display($page, $nb_per_page, $enclose = '')
|
||||||
{
|
{
|
||||||
if ($this->rs->isEmpty()) {
|
if ($this->rs->isEmpty()) {
|
||||||
|
|
||||||
return '<p><strong>'.__('No widget').'</strong></p>';
|
return '<p><strong>'.__('No widget').'</strong></p>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$pager = new dcPager($page, $this->rs_count, $nb_per_page,10);
|
$pager = new dcPager($page, $this->rs_count, $nb_per_page, 10);
|
||||||
$pager->html_prev = $this->html_prev;
|
$pager->html_prev = $this->html_prev;
|
||||||
$pager->html_next = $this->html_next;
|
$pager->html_next = $this->html_next;
|
||||||
$pager->var_page = 'page';
|
$pager->var_page = 'page';
|
||||||
|
@ -92,7 +92,7 @@ class postWidgetTextList extends adminGenericList
|
||||||
$content .=
|
$content .=
|
||||||
'</tbody></table></div>';
|
'</tbody></table></div>';
|
||||||
|
|
||||||
return
|
echo
|
||||||
$pager->getLinks().
|
$pager->getLinks().
|
||||||
sprintf($enclose, $content).
|
sprintf($enclose, $content).
|
||||||
$pager->getLinks();
|
$pager->getLinks();
|
||||||
|
|
149
index.php
149
index.php
|
@ -12,7 +12,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('DC_CONTEXT_ADMIN')) {
|
if (!defined('DC_CONTEXT_ADMIN')) {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,62 +30,27 @@ if (!empty($_POST['save']) && !empty($_POST['widgets'])) {
|
||||||
dcPage::addSuccessNotice(
|
dcPage::addSuccessNotice(
|
||||||
__('Posts widgets successfully delete.')
|
__('Posts widgets successfully delete.')
|
||||||
);
|
);
|
||||||
http::redirect(
|
if (!empty($_POST['redir'])) {
|
||||||
$p_url
|
http::redirect($_POST['redir']);
|
||||||
);
|
} else {
|
||||||
|
$core->adminurl->redirect('admin.plugin.postWidgetText');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception $e) {
|
catch (Exception $e) {
|
||||||
$core->error->add($e->getMessage());
|
$core->error->add($e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Combos
|
# filters
|
||||||
$sortby_combo = array(
|
$filter = new adminGenericFilter($core, 'pwt');
|
||||||
__('Post title') => 'post_title',
|
$filter->add(dcAdminFilters::getPageFilter());
|
||||||
__('Post date') => 'post_dt',
|
$params = $filter->params();
|
||||||
__('Widget title') => 'option_title',
|
|
||||||
__('Widget date') => 'option_upddt',
|
|
||||||
);
|
|
||||||
|
|
||||||
$order_combo = array(
|
|
||||||
__('Descending') => 'desc',
|
|
||||||
__('Ascending') => 'asc'
|
|
||||||
);
|
|
||||||
|
|
||||||
# Filters
|
|
||||||
$show_filters = false;
|
|
||||||
$nb_per_page = 1;
|
|
||||||
|
|
||||||
$sortby = !empty($_GET['sortby']) ? $_GET['sortby'] : 'post_dt';
|
|
||||||
$order = !empty($_GET['order']) ? $_GET['order'] : 'desc';
|
|
||||||
$page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1;
|
|
||||||
|
|
||||||
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'] = array((($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 != 'post_dt' || $order != 'desc') {
|
|
||||||
$show_filters = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get posts with text widget
|
# Get posts with text widget
|
||||||
try {
|
try {
|
||||||
$posts = $pwt->getWidgets($params);
|
$posts = $pwt->getWidgets($params);
|
||||||
$counter = $pwt->getWidgets($params, true);
|
$counter = $pwt->getWidgets($params, true);
|
||||||
$posts_list = new postWidgetTextList(
|
$posts_list = new postWidgetTextList($core, $posts, $counter->f(0));
|
||||||
$core,
|
|
||||||
$posts,
|
|
||||||
$counter->f(0)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
catch (Exception $e) {
|
catch (Exception $e) {
|
||||||
$core->error->add($e->getMessage());
|
$core->error->add($e->getMessage());
|
||||||
|
@ -94,87 +58,34 @@ catch (Exception $e) {
|
||||||
|
|
||||||
# Display
|
# Display
|
||||||
echo '
|
echo '
|
||||||
<html><head><title>'.__('Post widget text').'</title>'.
|
<html><head><title>' . __('Post widget text') . '</title>' .
|
||||||
dcPage::jsLoad(
|
dcPage::jsLoad(dcPage::getPF('postWidgetText/js/index.js')) .
|
||||||
'js/filter-controls.js'
|
$filter->js($core->adminurl->get('admin.plugin.postWidgetText')) . '
|
||||||
).
|
|
||||||
'<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".'
|
|
||||||
</head>
|
</head>
|
||||||
<body>'.
|
<body>' .
|
||||||
|
|
||||||
dcPage::breadcrumb(
|
dcPage::breadcrumb([
|
||||||
array(
|
__('Plugins') => '',
|
||||||
html::escapeHTML($core->blog->name) => '',
|
|
||||||
__('Posts widgets') => ''
|
__('Posts widgets') => ''
|
||||||
)
|
]).
|
||||||
).
|
dcPage::notices();
|
||||||
dcPage::notices().'
|
|
||||||
|
|
||||||
<form action="'.$p_url.'" method="get" id="filters-form">
|
$filter->display('admin.plugin.postWidgetText', form::hidden('p', 'postWidgetText'));
|
||||||
<h3 class="out-of-screen-if-js">'.__('Show filters and display options').'</h3>
|
|
||||||
|
|
||||||
<div class="table">
|
$posts_list->display($filter->page, $filter->nb,
|
||||||
<div class="cell">
|
'<form action="' . $core->adminurl->get('admin.plugin.postWidgetText') . '" method="post" id="form-entries">' .
|
||||||
<p><label for="sortby" class="ib">'.__('Order by:').'</label> '.
|
'%s' .
|
||||||
form::combo('sortby', $sortby_combo, $sortby).'</p>
|
'<div class="two-cols">' .
|
||||||
</div>
|
'<p class="col checkboxes-helpers"></p>' .
|
||||||
<div class="cell">
|
'<p class="col right">' .
|
||||||
<p><label for="order" class="ib">'.__('Sort:').'</label> '.
|
'<input id="do-action" type="submit" name="save" value="' . __('Delete selected widgets') . '" /></p>' .
|
||||||
form::combo('order', $order_combo, $order).'</p>
|
$core->adminurl->getHiddenFormFields('admin.plugin.postWidgetText', array_merge(['p' => 'postWidgetText'], $filter->values(true))) .
|
||||||
</div>
|
$core->formNonce() .
|
||||||
<div class="cell">
|
'</div>' .
|
||||||
<p><span class="label ib">'.__('Show').'</span> <label for="nb" class="classic">'.
|
|
||||||
form::field('nb', 3, 3, $nb_per_page).' '.
|
|
||||||
__('entries per page').'</label></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p><input type="submit" value="'.__('Apply filters and display options').'" />'.
|
|
||||||
form::hidden(array('p'), 'postWidgetText').'
|
|
||||||
<br class="clear" /></p>
|
|
||||||
</form>'.
|
|
||||||
|
|
||||||
$posts_list->display($page, $nb_per_page,
|
|
||||||
'<form action="'.$p_url.'" method="post" id="form-periods">'.
|
|
||||||
'%s'.
|
|
||||||
'<div class="two-cols">'.
|
|
||||||
'<p class="col checkboxes-helpers"></p>'.
|
|
||||||
'<p class="col right">'.
|
|
||||||
'<input type="submit" name="save" value="'.__('Delete selected widgets').'" /></p>'.
|
|
||||||
form::hidden(array('sortby'), $sortby).
|
|
||||||
form::hidden(array('order'), $order).
|
|
||||||
form::hidden(array('page'), $page).
|
|
||||||
form::hidden(array('nb'), $nb_per_page).
|
|
||||||
form::hidden(array('p'), 'postWidgetText').
|
|
||||||
$core->formNonce().
|
|
||||||
'</div>'.
|
|
||||||
'</form>'
|
'</form>'
|
||||||
);
|
);
|
||||||
|
|
||||||
# Footer
|
# Footer
|
||||||
dcPage::helpBlock('postWidgetText');
|
dcPage::helpBlock('postWidgetText');
|
||||||
|
|
||||||
echo
|
echo '</body></html>';
|
||||||
'<hr class="clear"/><p class="right modules">
|
|
||||||
<a class="module-config" '.
|
|
||||||
'href="plugins.php?module=postWidgetText&conf=1&redir='.
|
|
||||||
urlencode('plugin.php?p=postWidgetText').'">'.__('Configuration').'</a> -
|
|
||||||
postWidgetText - '.$core->plugins->moduleInfo('postWidgetText', 'version').'
|
|
||||||
<img alt="'.__('postWidgetText').'" src="index.php?pf=postWidgetText/icon.png" />
|
|
||||||
</p>
|
|
||||||
</body></html>';
|
|
4
js/index.js
Normal file
4
js/index.js
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
$(function(){
|
||||||
|
$('.checkboxes-helpers').each(function(){dotclear.checkboxesHelpers(this);});
|
||||||
|
dotclear.condSubmit('#form-entries td input[type=checkbox]', '#form-entries #do-action');
|
||||||
|
});
|
Loading…
Reference in a new issue