function page_manager_get_handler_operations

Collect all the operations related to task handlers (variants) and build a menu.

1 call to page_manager_get_handler_operations()
page_manager_get_operations in page_manager/page_manager.admin.inc
Take the operations array from a task and expand it.

File

page_manager/page_manager.admin.inc, line 663

Code

function page_manager_get_handler_operations(&$page) {
    ctools_include('export');
    $group = array(
        'type' => 'group',
        'class' => array(
            'operations-handlers',
        ),
        'title' => t('Variants'),
    );
    $operations = array();
    // If there is only one variant, let's not have it collapsible.
    $collapsible = count($page->handler_info) != 1;
    foreach ($page->handler_info as $id => $info) {
        if ($info['changed'] & PAGE_MANAGER_CHANGED_DELETED) {
            continue;
        }
        $handler = $page->handlers[$id];
        $plugin = page_manager_get_task_handler($handler->handler);
        $operations[$id] = array(
            'type' => 'group',
            'class' => array(
                'operations-handlers-' . $id,
            ),
            'title' => page_manager_get_handler_title($plugin, $handler, $page->task, $page->subtask_id),
            'collapsible' => $collapsible,
            'children' => array(),
        );
        $operations[$id]['children']['actions'] = array(
            'type' => 'group',
            'class' => array(
                'operations-handlers-actions-' . $id,
            ),
            'title' => t('Variant operations'),
            'children' => array(),
            'location' => $id,
        );
        // There needs to be a 'summary' item here for variants.
        $operations[$id]['children']['summary'] = array(
            'title' => t('Summary'),
            'description' => t('Get a summary of the information about this variant.'),
            'form info' => array(
                'no buttons' => TRUE,
            ),
            'form' => 'page_manager_handler_summary',
        );
        if ($plugin && isset($plugin['operations'])) {
            $operations[$id]['children'] += $plugin['operations'];
        }
        $actions =& $operations[$id]['children']['actions']['children'];
        $actions['clone'] = array(
            'title' => t('Clone'),
            'description' => t('Make an exact copy of this variant.'),
            'form' => 'page_manager_handler_clone',
        );
        $actions['export'] = array(
            'title' => t('Export'),
            'description' => t('Export this variant into code to import into another page.'),
            'form' => 'page_manager_handler_export',
        );
        if ($handler->export_type == (EXPORT_IN_CODE | EXPORT_IN_DATABASE)) {
            $actions['delete'] = array(
                'title' => t('Revert'),
                'description' => t('Remove all changes to this variant and revert to the version in code.'),
                'form' => 'page_manager_handler_delete',
                'no update and save' => TRUE,
                'form info' => array(
                    'finish text' => t('Revert'),
                ),
            );
        }
        elseif ($handler->export_type != EXPORT_IN_CODE) {
            $actions['delete'] = array(
                'title' => t('Delete'),
                'description' => t('Remove this variant from the page completely.'),
                'form' => 'page_manager_handler_delete',
                'form info' => array(
                    'finish text' => t('Delete'),
                    'save text' => t('Delete and save'),
                ),
            );
        }
        if (!empty($handler->disabled)) {
            $actions['enable'] = array(
                'title' => t('Enable'),
                'description' => t('Activate this variant so that it will be in use in your system.'),
                'form' => 'page_manager_handler_enable',
                'silent' => TRUE,
                'form info' => array(
                    'finish text' => t('Enable'),
                    'save text' => t('Enable and save'),
                ),
            );
        }
        else {
            $actions['disable'] = array(
                'title' => t('Disable'),
                'description' => t('De-activate this variant. The data will remain but the variant will not be in use on your system.'),
                'form' => 'page_manager_handler_disable',
                'silent' => TRUE,
                'form info' => array(
                    'finish text' => t('Disable'),
                    'save text' => t('Disable and save'),
                ),
            );
        }
        drupal_alter('page_manager_variant_operations', $operations[$id], $handler);
    }
    if (empty($operations)) {
        $operations['empty'] = array(
            'type' => 'text',
            'title' => t('No variants'),
        );
    }
    $group['children'] = $operations;
    return $group;
}