You are here

function skinr_context_ui_admin_list_subform in Skinr 8.2

Same name and namespace in other branches
  1. 7.2 skinr_context/skinr_context_ui.admin.inc \skinr_context_ui_admin_list_subform()

Overrides skinr_ui_admin_skins().

See also

skinr_ui_admin_skins()

1 call to skinr_context_ui_admin_list_subform()
skinr_context_ui_admin_list in skinr_context/skinr_context_ui.admin.inc
Menu callback: skin configuration groups administration.

File

skinr_context/skinr_context_ui.admin.inc, line 227
Admin page callbacks for the Skinr Context UI module.

Code

function skinr_context_ui_admin_list_subform() {

  // Build the 'Update options' form.
  $form['options'] = array(
    '#type' => 'fieldset',
    '#title' => t('Update options'),
    '#attributes' => array(
      'class' => array(
        'container-inline',
      ),
    ),
  );
  $options = array();
  foreach (module_invoke_all('skinr_context_ui_operations') as $operation => $array) {
    $options[$operation] = $array['label'];
  }
  $form['options']['operation'] = array(
    '#type' => 'select',
    '#title' => t('Operation'),
    '#title_display' => 'invisible',
    '#options' => $options,
    '#default_value' => 'enable',
  );
  $form['options']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Update'),
    '#validate' => array(
      'skinr_context_ui_admin_groups_validate',
    ),
    '#submit' => array(
      'skinr_context_ui_admin_groups_submit',
    ),
  );
  $header = array(
    'type' => array(
      'data' => t('Type'),
      'field' => 'g.module',
    ),
    'element' => array(
      'data' => t('Element'),
      'field' => 'g.element',
    ),
    'title' => array(
      'data' => t('Title'),
      'field' => 'g.title',
    ),
    'description' => array(
      'data' => t('Description'),
      'field' => 'g.description',
    ),
    'status' => array(
      'data' => t('Status'),
      'field' => 'g.status',
      'sort' => 'desc',
    ),
    'storage' => array(
      'data' => t('Storage'),
    ),
    'operations' => array(
      'data' => t('Operations'),
    ),
  );
  $query = db_select('skinr_groups', 'g')
    ->extend('PagerDefault')
    ->extend('TableSort');
  skinr_context_ui_build_filter_query($query);
  $gids = $query
    ->fields('g', array(
    'gid',
  ))
    ->limit(50)
    ->orderByHeader($header)
    ->orderBy('module', 'asc')
    ->execute()
    ->fetchCol();
  $groups = skinr_context_group_load_multiple($gids);
  $current_theme = skinr_current_theme();
  $destination = \Drupal::service('redirect.destination')
    ->getAsArray();
  $options = array();
  foreach ($groups as $group) {
    $operations = array();
    $operations['edit'] = array(
      'title' => t('edit'),
      'href' => 'admin/structure/skinr/edit/' . $group->module . '/' . $group->element . '/' . $group->gid,
      'query' => $destination,
    );
    $operations['status'] = array(
      'title' => $group->status ? t('disable') : t('enable'),
      'href' => 'admin/structure/skinr/group/' . $group->gid . '/' . ($group->status ? 'disable' : 'enable'),
      'query' => $destination + array(
        'token' => drupal_get_token('admin/structure/skinr/group/' . $group->gid . '/' . ($group->status ? 'disable' : 'enable')),
      ),
    );
    $storage = skinr_context_ui_admin_group_storage($group);
    if ($storage == t('Overridden')) {
      $operations['revert'] = array(
        'title' => t('revert'),
        'href' => 'admin/structure/skinr/group/' . $group->gid . '/revert',
        'query' => $destination,
      );
    }
    if ($storage == t('Normal')) {
      $operations['delete'] = array(
        'title' => t('delete'),
        'href' => 'admin/structure/skinr/edit/' . $group->module . '/' . $group->element . '/' . $group->gid . '/delete',
        'query' => $destination,
      );
    }
    $theme = skinr_current_theme(TRUE);
    $skin = entity_create('skin', array(
      'element_type' => $group->module,
      'element' => $group->element,
      'theme' => $theme,
    ));
    $element = $skin
      ->elementLabel();
    $options[$group->gid] = array(
      'type' => $group->module,
      'element' => $skin
        ->elementLabel(),
      'title' => t('@group (!gid)', array(
        '@group' => $group->title,
        '!gid' => $group->gid,
      )),
      'description' => $group->description,
      'status' => $group->status ? t('enabled') : t('disabled'),
      'storage' => array(
        'data' => $storage,
        'class' => array(
          'skinr-ui-storage',
        ),
      ),
      'operations' => array(
        'data' => array(
          '#theme' => 'links__skinr_ui_operations',
          '#links' => $operations,
          '#attributes' => array(
            'class' => array(
              'links',
              'inline',
            ),
          ),
        ),
      ),
    );
    if (!$group->status) {
      $options[$group->gid]['#attributes'] = array(
        'class' => array(
          'skinr-ui-disabled',
        ),
      );
    }
  }

  // Hide status row. Only used for sorting.
  unset($header['status']);
  drupal_add_css(drupal_get_path('module', 'skinr_ui') . '/css/skinr-ui-admin.css');
  $form['groups'] = array(
    '#type' => 'tableselect',
    '#header' => $header,
    '#options' => $options,
    '#empty' => t('No content available.'),
  );
  $form['pager'] = array(
    '#markup' => theme('pager'),
  );
  return $form;
}