- <?php
- * @file
- * Provides an administrative dashboard.
- */
-
- * Implements hook_menu().
- */
- function dashboard_menu() {
- $items = array();
-
-
- $dashboard_layouts = layout_load_multiple_by_path('admin/dashboard');
- $dashboard_layout = array_pop($dashboard_layouts);
- if ($dashboard_layout->hasContexts(array('dashboard')) && !$dashboard_layout->disabled) {
- $items['admin/dashboard/overview'] = array(
- 'title' => 'Overview',
- 'type' => MENU_DEFAULT_LOCAL_TASK,
- 'weight' => -100,
- );
- $items['admin/dashboard/settings'] = array(
- 'title' => 'Settings',
- 'page callback' => 'backdrop_get_form',
- 'page arguments' => array('dashboard_admin_settings'),
- 'description' => 'Admin dashboard settings',
- 'access arguments' => array('administer dashboard'),
- 'type' => MENU_LOCAL_TASK,
- 'weight' => -10,
- );
- }
-
- return $items;
- }
-
- * Implements hook_menu().
- */
- function dashboard_menu_alter(&$items) {
- if (isset($items['admin/dashboard'])) {
-
- $items['admin/dashboard']['description'] = 'Get an overview of your site and manage administrative tasks.';
- }
- }
-
- * Implements hook_permission().
- */
- function dashboard_permission() {
- return array(
- 'access dashboard' => array(
- 'title' => t('Access Dashboard'),
- 'description' => t('Access the dashboard.'),
- ),
- 'administer dashboard' => array(
- 'title' => t('Administer Dashboard'),
- 'description' => t('Change the dashboard settings, such as redirecting behavior on login.'),
- ),
- );
- }
-
- * Implements hook_config_info().
- */
- function dashboard_config_info() {
- $prefixes['dashboard.settings'] = array(
- 'label' => t('Dashboard settings'),
- 'group' => t('Configuration'),
- );
- return $prefixes;
- }
-
- * Implements hook_block_info().
- */
- function dashboard_block_info() {
- $blocks = array();
-
-
- $blocks['welcome'] = array(
- 'info' => t('Dashboard - Welcome to Backdrop CMS!'),
- 'description' => t('Provides a welcome message, and links to get people started using Backdrop'),
- 'class' => 'DashboardWelcomeBlock',
- 'required contexts' => array('dashboard'),
- );
- $blocks['create'] = array(
- 'info' => t('Dashboard - Create content'),
- 'description' => t('Provides links to create new content'),
- 'class' => 'DashboardCreateBlock',
- 'required contexts' => array('dashboard'),
- );
- $blocks['menu'] = array(
- 'info' => t('Dashboard - Menus'),
- 'description' => t('Provides links to manage menus'),
- 'class' => 'DashboardMenuBlock',
- 'required contexts' => array('dashboard'),
- );
- $blocks['node_types'] = array(
- 'info' => t('Dashboard - Content types'),
- 'description' => t('Provides links to manage content types'),
- 'class' => 'DashboardContentTypesBlock',
- 'required contexts' => array('dashboard'),
- );
- $blocks['news'] = array(
- 'info' => t('Backdrop News'),
- 'description' => t('Displays a news feed from BackdropCMS.org.'),
- 'class' => 'DashboardNewsBlock',
- 'required contexts' => array('dashboard'),
- );
- $blocks['overview_content'] = array(
- 'info' => t('Dashboard - Content'),
- 'description' => t('Displays a summary of content statistics'),
- 'class' => 'DashboardOverviewContentBlock',
- 'required contexts' => array('dashboard'),
- );
- $blocks['overview_user'] = array(
- 'info' => t('Dashboard - User accounts'),
- 'description' => t('Displays a summary of user account statistics'),
- 'class' => 'DashboardOverviewUserBlock',
- 'required contexts' => array('dashboard'),
- );
- $blocks['updates'] = array(
- 'info' => t('Dashboard - Available updates'),
- 'description' => t('Displays a list of available updates for modules, themes, layouts, and Backdrop core.'),
- 'class' => 'DashboardUpdateBlock',
- 'required contexts' => array('dashboard'),
- );
-
- if (module_exists('taxonomy')) {
- $blocks['taxonomy'] = array(
- 'info' => t('Dashboard - Categories'),
- 'description' => t('Provides links to manage taxonomy'),
- 'class' => 'DashboardTaxonomyBlock',
- 'required contexts' => array('dashboard'),
- );
- }
-
- return $blocks;
- }
-
- * Implements hook_autoload_info().
- */
- function dashboard_autoload_info() {
- return array(
- 'DashboardWelcomeBlock' => 'includes/block.welcome.inc',
- 'DashboardCreateBlock' => 'includes/block.create.inc',
- 'DashboardMenuBlock' => 'includes/block.menus.inc',
- 'DashboardContentTypesBlock' => 'includes/block.node_types.inc',
- 'DashboardOverviewContentBlock' => 'includes/block.overview_content.inc',
- 'DashboardOverviewUserBlock' => 'includes/block.overview_user.inc',
- 'DashboardTaxonomyBlock' => 'includes/block.taxonomy.inc',
- 'DashboardUpdateBlock' => 'includes/block.update.inc',
- 'DashboardLayoutContext' => 'includes/dashboard_layout_context.inc',
- 'DashboardNewsBlock' => 'includes/block.news.inc',
- );
- }
-
- * Implements hook_layout_context_info().
- */
- function dashboard_layout_context_info() {
- $info['dashboard'] = array(
- 'title' => t('Dashboard'),
- 'class' => 'DashboardLayoutContext',
- 'menu paths' => array(
- 'admin/dashboard',
- ),
- );
- return $info;
- }
-
- * Implements hook_user_login().
- */
- function dashboard_user_login(&$edit, $account) {
-
- if (!empty($_GET['destination'])) {
- return;
- }
-
-
- if (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE === 'install') {
- return;
- }
-
-
- if (isset($_POST['form_id']) && $_POST['form_id'] == 'user_pass_reset') {
- return;
- }
-
-
- if (!user_access('access dashboard', $account)) {
- return;
- }
-
-
- if (config_get('dashboard.settings', 'dashboard_login_redirect') != 1) {
- return;
- }
-
-
- $router_item = menu_get_item('admin/dashboard');
- $dashboard_layouts = layout_load_multiple_by_router_item($router_item);
- foreach ($dashboard_layouts as $dashboard_layout) {
- if (!$dashboard_layout->disabled && $dashboard_layout->checkAccess()) {
- $_GET['destination'] = 'admin/dashboard';
- break;
- }
- }
- }
-
- * Implements hook_preprocess_layout().
- */
- function dashboard_preprocess_layout(&$variables) {
-
- $layout = $variables['layout'];
- if (is_a($layout, 'Layout') && $layout->hasContexts(array('dashboard'))) {
-
- $css_path = backdrop_get_path('module', 'dashboard') . '/css/dashboard.css';
- backdrop_add_css($css_path);
- $variables['classes'][] = 'dashboard';
- }
- }
-
- * Implements hook_preprocess_block().
- */
- function dashboard_preprocess_block(&$variables) {
-
- $layout = $variables['layout'];
- if (is_a($layout, 'Layout') && $layout->hasContexts(array('dashboard'))) {
- $block = $variables['block'];
- $region_name = $layout->getBlockPosition($block->uuid);
- if (!in_array($region_name, array('header', 'footer'))) {
-
-
- $variables['classes'][] = 'admin-panel';
- }
- }
- }
-
- * Implements hook_theme().
- */
- function dashboard_theme() {
- return array(
- 'dashboard_panel' => array(
- 'render element' => 'panel',
- 'template' => 'templates/dashboard-panel',
- ),
- );
- }
-
- * Implements hook_cron().
- */
- function dashboard_cron() {
- $last_news_fetch = state_get('dashboard_news_timestamp');
- $fetch_interval = 21600;
- if (REQUEST_TIME - $last_news_fetch > $fetch_interval) {
- DashboardNewsBlock::refreshNewsFeed();
- state_set('dashboard_news_timestamp', REQUEST_TIME);
- }
- }
-
- * Menu callback; Dashboard settings form.
- */
- function dashboard_admin_settings() {
- $config = config('dashboard.settings');
-
- $form['#config'] = 'dashboard.settings';
- $form['dashboard_login_redirect'] = array(
- '#type' => 'checkbox',
- '#title' => t('Redirect administrators to Dashboard after log in'),
- '#default_value' => $config->get('dashboard_login_redirect'),
- '#description' => t('User accounts with the !permission permission will be automatically redirected to the Dashboard when they log in.', array(
- '!permission' => l(t('Access dashboard'), 'admin/config/people/permissions', array('fragment' => 'module-dashboard')),
- )),
- );
- return system_settings_form($form);
- }