? 426646-hook-dashboard.patch ? dashboard.patch Index: dashboard.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/dashboard/dashboard.admin.inc,v retrieving revision 1.1 diff -u -p -r1.1 dashboard.admin.inc --- dashboard.admin.inc 10 Apr 2009 17:09:12 -0000 1.1 +++ dashboard.admin.inc 13 Apr 2009 15:52:09 -0000 @@ -1,8 +1,7 @@ array( - 'title callback' => 'dashboard_page_title', - 'page callback' => 'dashboard_page', - 'access arguments' => array('access user dashboard'), - 'type' => MENU_CALLBACK, - 'file' => 'dashboard.page.inc', - ), - 'dashboard/widgets' => array( - 'title callback' => 'dashboard_page_title', - 'page callback' => 'dashboard_gadgets_page', - 'access arguments' => array('access user dashboard'), - 'type' => MENU_CALLBACK, - 'file' => 'dashboard.page.inc', - ), - 'dashboard/%dashboard_user_page' => array( - 'title callback' => 'dashboard_page_title', - 'page callback' => 'dashboard_page', - 'page arguments' => array(1), - 'access arguments' => array('access user dashboard'), - 'type' => MENU_CALLBACK, - 'file' => 'dashboard.page.inc', - ), - 'dashboard/%dashboard_user_page/reorder-pages' => array( - 'page callback' => 'dashboard_page_reorder', - 'access callback' => 'dashboard_valid_token', - 'access arguments' => array(1), - 'type' => MENU_CALLBACK, - 'file' => 'dashboard.page.inc', - ), - 'dashboard/%dashboard_user_page/reorder-gadgets' => array( - 'page callback' => 'dashboard_gadget_reorder', - 'page arguments' => array(1), - 'access callback' => 'dashboard_valid_token', - 'access arguments' => array(1), - 'type' => MENU_CALLBACK, - 'file' => 'dashboard.page.inc', - ), - 'dashboard/%dashboard_user_page/remove-gadget' => array( - 'page callback' => 'dashboard_gadget_remove', - 'access callback' => 'dashboard_valid_token', - 'access arguments' => array(1), - 'type' => MENU_CALLBACK, - 'file' => 'dashboard.page.inc', - ), - 'dashboard/%dashboard_user_page/rename' => array( - 'page callback' => 'dashboard_page_rename', - 'page arguments' => array(1), - 'access arguments' => array('access user dashboard'), - 'type' => MENU_CALLBACK, - 'file' => 'dashboard.page.inc', - ), - + $items = array( 'admin/settings/dashboard' => array( - 'title' => t('Dashboard'), + 'title' => 'Dashboard', 'page callback' => 'drupal_get_form', 'page arguments' => array('dashboard_settings_form'), - 'access arguments' => array('administer dashboard'), - 'description' => t('Configure dashboard widgets.'), + 'access arguments' => array('administer dashboard defaults'), + 'description' => t('Administer default dashboard settings.'), 'file' => 'dashboard.admin.inc', ), + 'admin/settings/dashboard/default' => array( + 'title' => 'Defaults', + 'type' => MENU_DEFAULT_LOCAL_TASK, + ), + ); + + foreach (module_invoke_all('dashboard') as $type => $info) { + $items += array( + $info['path'] => array( + 'title callback' => 'dashboard_page_title', + 'page callback' => 'dashboard_page', + 'access arguments' => array('access '. $type .' dashboard'), + 'type' => MENU_CALLBACK, + 'file' => 'dashboard.page.inc', + ), + $info['path'] .'/%dashboard_'. $type .'_page' => array( + 'title callback' => 'dashboard_page_title', + 'page callback' => 'dashboard_page', + 'page arguments' => array(1), + 'access arguments' => array('access '. $type .' dashboard'), + 'type' => MENU_CALLBACK, + 'file' => 'dashboard.page.inc', + ), + $info['path'] .'/%dashboard_'. $type .'_page/gadgets' => array( + 'title callback' => 'dashboard_page_title', + 'page callback' => 'dashboard_gadgets_page', + 'access arguments' => array('update '. $type .' dashboard'), + 'type' => MENU_CALLBACK, + 'file' => 'dashboard.page.inc', + ), + $info['path'] .'/%dashboard_'. $type .'_page/reorder-pages' => array( + 'page callback' => 'dashboard_page_reorder', + 'access callback' => 'dashboard_valid_token', + 'access arguments' => array(1), + 'type' => MENU_CALLBACK, + 'file' => 'dashboard.page.inc', + ), + $info['path'] .'/%dashboard_'. $type .'_page/reorder-gadgets' => array( + 'page callback' => 'dashboard_gadget_reorder', + 'page arguments' => array(1), + 'access callback' => 'dashboard_valid_token', + 'access arguments' => array(1), + 'type' => MENU_CALLBACK, + 'file' => 'dashboard.page.inc', + ), + $info['path'] .'/%dashboard_'. $type .'_page/remove-gadget' => array( + 'page callback' => 'dashboard_gadget_remove', + 'access callback' => 'dashboard_valid_token', + 'access arguments' => array(1), + 'type' => MENU_CALLBACK, + 'file' => 'dashboard.page.inc', + ), + $info['path'] .'/%dashboard_'. $type .'_page/rename' => array( + 'page callback' => 'dashboard_page_rename', + 'page arguments' => array(1), + 'access arguments' => array('update '. $type .' dashboard'), + 'type' => MENU_CALLBACK, + 'file' => 'dashboard.page.inc', + ), + 'admin/settings/dashboard/'. $type => array( + 'title' => $info['name'], + 'page callback' => 'drupal_get_form', + 'page arguments' => array('dashboard_settings_form', 3), + 'access arguments' => array('administer '. $type .' dashboard'), + 'description' => t('Administer default dashboard settings.'), + 'type' => MENU_LOCAL_TASK, + 'weight' => $info['weight'], + 'file' => 'dashboard.admin.inc', + ), + ); + } + + return $items; +} + +function dashboard_dashboard() { + return array( + 'user' => array( + 'path' => 'dashboard', + 'name' => 'User dashboard', + 'weight' => 0, + ), + 'defaults' => array( + 'path' => 'dashboard-defaults', + 'name' => 'Default content', + 'weight' => 5, + ), ); } @@ -82,7 +117,14 @@ function dashboard_init() { } function dashboard_perm() { - return array('administer dashboard', 'access user dashboard'); + $perms = array('administer dashboard defaults'); + $dashboards = module_invoke_all('dashboard'); + foreach ($dashboards as $type => $dashboard) { + foreach(array('access', 'update', 'delete', 'administer') as $perm) { + $perms[] = $perm .' '. $type .' dashboard'; + } + } + return $perms; } function dashboard_valid_token($page) {