? 432700-admin.patch ? dashboard-admin.patch Index: dashboard.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/dashboard/dashboard.admin.inc,v retrieving revision 1.5 diff -u -p -r1.5 dashboard.admin.inc --- dashboard.admin.inc 13 Apr 2009 19:45:56 -0000 1.5 +++ dashboard.admin.inc 13 Apr 2009 21:00:28 -0000 @@ -11,8 +11,58 @@ * FormsAPI for module settings page. */ function dashboard_settings_form(&$form_state, $dashboard = 'default') { - $form = array(); dashboard_add_tools(); + $form = array(); + // Get a list of all widgets. + $widgets = module_invoke_all('dashboard_widget_info'); + $options = array(); + foreach ($widgets as $key => $widget) { + $options[$key] = check_plain($widget['title']); + } + $form['widgets'] = array( + '#type' => 'fieldset', + '#title' => t('Active widgets'), + '#collapsible' => TRUE, + ); + $form['widgets']['dashboard_'. $dashboard .'_widgets'] = array( + '#type' => 'checkboxes', + '#title' => t('Available widgets'), + '#default_value' => variable_get('dashboard_'. $dashboard .'_widgets', array()), + '#options' => $options, + ); + $form['limits'] = array( + '#type' => 'fieldset', + '#title' => t('Dashboard limits'), + '#collapsible' => TRUE, + ); + $form['limits']['dashboard_'. $dashboard .'_max_pages'] = array( + '#type' => 'select', + '#title' => t('Maximum pages per dashboard'), + + '#options' => drupal_map_assoc(array(1, 2, 3, 5, 8, 10, 15, 20)), + '#default_value' => variable_get('dashboard_'. $dashboard .'_max_pages', 10), + '#description' => t('Sets the limit for the number of tabs that can be added to a Dashboard.'), + ); + $form['limits']['dashboard_'. $dashboard .'_max_widgets'] = array( + '#type' => 'select', + '#title' => t('Maximum widgets per page'), + + '#options' => drupal_map_assoc(array(5, 10, 15, 20, 25, 30, 35, 40, 45, 50)), + '#default_value' => variable_get('dashboard_'. $dashboard .'_max_widgets', 15), + '#description' => t('Sets the limit for the number of widgets that can be added to a Dashboard tab.'), + ); + return system_settings_form($form); +} + +/** + * FormsAPI for configuring a widget for a dashboard. + */ +function dashboard_widget_settings_form(&$form_state, $dashboard, $widget) { + dashboard_add_tools(); + $form = array(); + $form['header'] = array( + '#value' => '
'. t('Settings for %widget for %dashboard', array('%widget' => $widget, '%dashboard' => $dashboard)) .'
', + ); return system_settings_form($form); } Index: dashboard.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/dashboard/dashboard.module,v retrieving revision 1.27 diff -u -p -r1.27 dashboard.module --- dashboard.module 13 Apr 2009 19:52:40 -0000 1.27 +++ dashboard.module 13 Apr 2009 21:00:28 -0000 @@ -34,7 +34,26 @@ function dashboard_menu() { 'title' => 'Defaults', 'type' => MENU_DEFAULT_LOCAL_TASK, ), - ); + 'admin/settings/dashboard/default/settings' => array( + 'title' => 'Settings', + 'type' => MENU_DEFAULT_LOCAL_TASK, + 'weight' => -10, + ), + ); + $widgets = module_invoke_all('dashboard_widget_info'); + foreach ($widgets as $key => $widget) { + $items += array( + 'admin/settings/dashboard/default/'. $key => array( + 'title' => $widget['title'] .' settings', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('dashboard_widget_settings_form', 'default', 4), + 'access arguments' => array('administer dashboard defaults'), + 'description' => t('Administer widget settings for default dashboard.'), + 'type' => MENU_LOCAL_TASK, + 'file' => 'dashboard.admin.inc', + ), + ); + } // Create deffault menu items for all Dashboard implementations. foreach (module_invoke_all('dashboard') as $type => $info) { $items += array( @@ -94,12 +113,30 @@ function dashboard_menu() { 'page callback' => 'drupal_get_form', 'page arguments' => array('dashboard_settings_form', 3), 'access arguments' => array('administer '. $type .' dashboard'), - 'description' => t('Administer default dashboard settings.'), + 'description' => t('Administer '. $type .' dashboard settings.'), 'type' => MENU_LOCAL_TASK, 'weight' => $info['weight'], 'file' => 'dashboard.admin.inc', ), + 'admin/settings/dashboard/'. $type .'/settings' => array( + 'title' => 'Settings', + 'type' => MENU_DEFAULT_LOCAL_TASK, + 'weight' => -10, + ), ); + foreach ($widgets as $key => $widget) { + $items += array( + 'admin/settings/dashboard/'. $type .'/'. $key => array( + 'title' => $widget['title'] .' settings', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('dashboard_widget_settings_form', 3, 4), + 'access arguments' => array('administer '. $type .' dashboard'), + 'description' => t('Administer widget settings for '. $type .' dashboard.'), + 'type' => MENU_LOCAL_TASK, + 'file' => 'dashboard.admin.inc', + ), + ); + } } return $items; @@ -178,23 +215,25 @@ function dashboard_dashboard() { } /** - * Implement hook_dashboard_widget(). + * Implement hook_dashboard_widget_info(). */ -function dashboard_dashboard_widget() { +function dashboard_dashboard_widget_info() { return array( - /* - array( - 'path' => menu router path for add to dashboard link, - 'name' => machine-readable name, - 'title' => human-readable name, + 'example' => array( + 'path' => 'node/%', + 'name' => 'example', + 'title' => 'Example widget', + ), + 'block' => array( + 'path' => '', + 'name' => 'block', + 'title' => 'Block widget', ), - */ ); } /** - * Sample implementatin of hook_dashboard_widget(). - * DEPRACATED? + * Sample implementation of hook_dashboard_widget(). */ function dashboard_example_dashboard_widget($widget_id) { return array(