diff --git a/page_manager/page_manager.admin.inc b/page_manager/page_manager.admin.inc index 0f164fe..9fd9f07 100644 --- a/page_manager/page_manager.admin.inc +++ b/page_manager/page_manager.admin.inc @@ -1671,6 +1671,12 @@ function page_manager_handler_clone_submit(&$form, &$form_state) { page_manager_handler_add_to_page($form_state['page'], $handler, $form_state['values']['title']); + // Variant is cloned and added to the Page. Ensure the uuids are re-generated. + panels_panel_context_get_display($handler); + if (isset($handler->conf['display']) && method_exists($handler->conf['display'], 'clone_display')) { + $handler->conf['display'] = $handler->conf['display']->clone_display(); + } + $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']); diff --git a/page_manager/plugins/tasks/page.admin.inc b/page_manager/plugins/tasks/page.admin.inc index 97bd37b..1ec21dd 100644 --- a/page_manager/plugins/tasks/page.admin.inc +++ b/page_manager/plugins/tasks/page.admin.inc @@ -1462,6 +1462,15 @@ function page_manager_page_form_clone_submit(&$form, &$form_state) { $original->path = $form_state['values']['path']; $handlers = !empty($form_state['values']['handlers']) ? $form_state['page']->handlers : FALSE; + // Ensure the handler uuids are re-generated. + if ($handlers) { + foreach ($handlers as &$handler) { + if (isset($handler->conf['display']) && method_exists($handler->conf['display'], 'clone_display')) { + $handler->conf['display'] = $handler->conf['display']->clone_display(); + } + } + } + // Export the handler, which is a fantastic way to clean database IDs out of it. $export = page_manager_page_export($original, $handlers); ob_start();