diff --git a/page_manager/page_manager.admin.inc b/page_manager/page_manager.admin.inc index eed47d07a83d322b88df6177c08e545d58adf754..e53992575260d9acb9b825d387e056de8e35903c 100644 --- a/page_manager/page_manager.admin.inc +++ b/page_manager/page_manager.admin.inc @@ -1490,13 +1490,17 @@ function page_manager_handler_clone(&$form, &$form_state) { * Clone an existing task handler into a new handler. */ function page_manager_handler_clone_submit($form, &$form_state) { - $handler = $form_state['handler']; + $export = page_manager_export_task_handler($form_state['handler']); + ob_start(); + eval($export); + ob_end_clean(); + page_manager_handler_add_to_page($form_state['page'], $handler, $form_state['values']['title']); $plugin = page_manager_get_task_handler($handler->handler); // It has no forms at all. Add the variant and go to its first operation. $keys = array_keys($plugin['operations']); - $form_state['new trail'] = array('handlers', $name, reset($keys)); + $form_state['new trail'] = array('handlers', $handler->name, reset($keys)); } /** diff --git a/page_manager/page_manager.module b/page_manager/page_manager.module index e0698761d32779bc4731ccf4ed089a868ede2168..97a9ac3b6564dfdf177aac1c4213ab6786fc6339 100644 --- a/page_manager/page_manager.module +++ b/page_manager/page_manager.module @@ -356,7 +356,7 @@ function page_manager_handler_get_name($task_name, $handlers, $handler) { * This is used by both import and clone, since clone just exports the * handler and immediately imports it. */ -function page_manager_handler_add_to_page(&$page, $handler, $title = NULL) { +function page_manager_handler_add_to_page(&$page, &$handler, $title = NULL) { $last = end($page->handler_info); $handler->weight = $last ? $last['weight'] + 1 : 0; $handler->task = $page->task_id;