Seditio Source
Root |
./othercms/dotclear-2.22/plugins/pages/_admin.php
<?php
/**
 * @brief pages, a plugin for Dotclear 2
 *
 * @package Dotclear
 * @subpackage Plugins
 *
 * @copyright Olivier Meunier & Association Dotclear
 * @copyright GPL-2.0-only
 */
if (!defined('DC_CONTEXT_ADMIN')) {
    return;
}

$core->addBehavior('adminColumnsLists', function ($core, $cols) {
   
// Set optional columns in pages lists
   
$cols['pages'] = [__('Pages'), [
       
'date'       => [true, __('Date')],
       
'author'     => [true, __('Author')],
       
'comments'   => [true, __('Comments')],
       
'trackbacks' => [true, __('Trackbacks')],
    ]];
});

$core->addBehavior('adminFiltersLists', function ($core, $sorts) {
   
$sorts['pages'] = [
       
__('Pages'),
       
null,
       
null,
       
null,
        [
__('entries per page'), 30],
    ];
});

$core->addBehavior('adminDashboardFavorites', function ($core, $favs) {
   
$favs->register('pages', [
       
'title'        => __('Pages'),
       
'url'          => $core->adminurl->get('admin.plugin.pages'),
       
'small-icon'   => [dcPage::getPF('pages/icon.svg'), dcPage::getPF('pages/icon-dark.svg')],
       
'large-icon'   => [dcPage::getPF('pages/icon.svg'), dcPage::getPF('pages/icon-dark.svg')],
       
'permissions'  => 'contentadmin,pages',
       
'dashboard_cb' => ['pagesDashboard', 'pagesDashboardCB'],
       
'active_cb'    => ['pagesDashboard', 'pagesActiveCB'],
    ]);
   
$favs->register('newpage', [
       
'title'       => __('New page'),
       
'url'         => $core->adminurl->get('admin.plugin.pages', ['act' => 'page']),
       
'small-icon'  => [dcPage::getPF('pages/icon-np.svg'), dcPage::getPF('pages/icon-np-dark.svg')],
       
'large-icon'  => [dcPage::getPF('pages/icon-np.svg'), dcPage::getPF('pages/icon-np-dark.svg')],
       
'permissions' => 'contentadmin,pages',
       
'active_cb'   => ['pagesDashboard', 'newPageActiveCB'],
    ]);
});

$core->addBehavior(
   
'adminUsersActionsHeaders',
    fn () =>
dcPage::jsLoad('index.php?pf=pages/js/_users_actions.js')
);

class
pagesDashboard
{
    public static function
pagesDashboardCB($core, $v)
    {
       
$params              = new ArrayObject();
       
$params['post_type'] = 'page';
       
$page_count          = $core->blog->getPosts($params, true)->f(0);
        if (
$page_count > 0) {
           
$str_pages  = ($page_count > 1) ? __('%d pages') : __('%d page');
           
$v['title'] = sprintf($str_pages, $page_count);
        }
    }

    public static function
pagesActiveCB($request, $params)
    {
        return (
$request == 'plugin.php') && isset($params['p']) && $params['p'] == 'pages'
                                         
&& !(isset($params['act']) && $params['act'] == 'page');
    }

    public static function
newPageActiveCB($request, $params)
    {
        return (
$request == 'plugin.php') && isset($params['p']) && $params['p']     == 'pages'
                                         
&& isset($params['act']) && $params['act'] == 'page';
    }
}

$_menu['Blog']->addItem(
   
__('Pages'),
   
$core->adminurl->get('admin.plugin.pages'),
    [
dcPage::getPF('pages/icon.svg'), dcPage::getPF('pages/icon-dark.svg')],
   
preg_match('/plugin.php(.*)$/', $_SERVER['REQUEST_URI']) && !empty($_REQUEST['p']) && $_REQUEST['p'] == 'pages',
   
$core->auth->check('contentadmin,pages', $core->blog->id)
);

$core->auth->setPermissionType('pages', __('manage pages'));

require
__DIR__ . '/_widgets.php';