function page_manager_page_form_clone_submit in Chaos Tool Suite (ctools) 7
Same name and namespace in other branches
- 6 page_manager/plugins/tasks/page.admin.inc \page_manager_page_form_clone_submit()
Submit clone page form.
Load the page, change the name(s) to protect the innocent, and if requested, load all the task handlers so that they get saved properly too.
File
- page_manager/
plugins/ tasks/ page.admin.inc, line 1456 - Administrative functions for the page subtasks.
Code
function page_manager_page_form_clone_submit(&$form, &$form_state) {
$original = $form_state['page']->subtask['subtask'];
$original->name = $form_state['values']['name'];
$original->admin_title = $form_state['values']['admin_title'];
$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();
eval($export);
ob_end_clean();
$task_name = page_manager_make_task_name('page', $page->name);
$cache = new stdClass();
page_manager_page_new_page_cache($page, $cache);
page_manager_set_page_cache($cache);
$form_state['redirect'] = page_manager_edit_url($task_name);
}