You are here

function page_manager_page_form_clone_submit in Chaos Tool Suite (ctools) 7

Same name and namespace in other branches
  1. 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);
}