diff --git a/CHANGELOG.txt b/CHANGELOG.txt index a4f0da606deac3bad644178b61fcfde6692c3bdc..87a5fe855c8fb20006b6161e93f7488895c66dfd 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -35,6 +35,7 @@ Change plugins to no longer need magic function. Can now use $plugin = array(... #662242: Page Manager was not removing menu items when pages were deleted due to caching. #639548: export.inc cache was not properly respected when loading individual items, leading to multiple redundant queries. #544438: Extend user context to allow selection of user, including "logged in user". +#604976: Prevent Page Manager from throwing errors when no modules that provide variants are available. ctools 6.x-1.x-dev ================== diff --git a/page_manager/page_manager.admin.inc b/page_manager/page_manager.admin.inc index 82b4689e15788250e45e67259b70595c9770b4d5..c0b72367b678b68e9d7cd9fd958eaf4d94f40966 100644 --- a/page_manager/page_manager.admin.inc +++ b/page_manager/page_manager.admin.inc @@ -1306,6 +1306,12 @@ function page_manager_handler_add_cancel(&$form_state) { function page_manager_handler_add_form(&$form, $form_state, $features = array()) { $task = $form_state['task']; $task_handler_plugins = page_manager_get_task_handler_plugins($task); + if (empty($task_handler_plugins)) { + drupal_set_message(t('There are currently no variants available and a page may not be added. Perhaps you need to install the Panels module to get a variant?'), 'error'); + $form['buttons']['return']['#disabled'] = TRUE; + return; + } + foreach ($task_handler_plugins as $id => $plugin) { $options[$id] = $plugin['title']; if (isset($plugin['add features'])) { diff --git a/page_manager/plugins/tasks/page.admin.inc b/page_manager/plugins/tasks/page.admin.inc index 1aec3ba6c0c2505f9bfe09928d6448106e6e6d45..72269af1a01369c1f6583cfd57318491ab7505fe 100644 --- a/page_manager/plugins/tasks/page.admin.inc +++ b/page_manager/plugins/tasks/page.admin.inc @@ -189,6 +189,11 @@ function page_manager_page_menu_item($task, $menu, $access_arguments, $page_argu */ function page_manager_page_add_subtask($task_name = NULL, $step = NULL) { $task = page_manager_get_task('page'); + $task_handler_plugins = page_manager_get_task_handler_plugins($task); + if (empty($task_handler_plugins)) { + drupal_set_message(t('There are currently no variants available and a page may not be added. Perhaps you need to install the Panels module to get a variant?'), 'error'); + return ' '; + } $form_info = array( 'id' => 'page_manager_add_page',