You are here

function skinr_context_ui_admin_skin_list 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_skin_list()

Overrides skinr_ui_list().

See also

skinr_ui_list()

1 string reference to 'skinr_context_ui_admin_skin_list'
skinr_context_ui_menu_alter in skinr_context/skinr_context_ui.module
Implements hook_menu_alter().

File

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

Code

function skinr_context_ui_admin_skin_list($form, &$form_state) {
  module_load_include('inc', 'skinr_ui', 'skinr_ui.admin');
  if (isset($form_state['values']['operation']) && $form_state['values']['operation'] == 'delete') {
    return skinr_ui_multiple_delete_confirm($form, $form_state, array_filter($form_state['values']['skins']));
  }
  $form['filter'] = skinr_ui_filter_form('skinr_ui_filters', $form_state);
  $form['#submit'][] = 'skinr_ui_filter_form_submit';
  $header = array(
    'theme' => array(
      'data' => t('Theme'),
      'field' => 's.theme',
    ),
    'type' => array(
      'data' => t('Type'),
      'field' => 's.module',
    ),
    'element' => array(
      'data' => t('Element'),
      'field' => 's.element',
    ),
    'group' => array(
      'data' => t('Group'),
      'field' => 'gs.gid',
    ),
    'skin' => array(
      'data' => t('Skin'),
      'field' => 's.skin',
    ),
    'status' => array(
      'data' => t('Status'),
      'field' => 's.status',
      'sort' => 'desc',
    ),
    'storage' => array(
      'data' => t('Storage'),
    ),
    'operations' => array(
      'data' => t('Operations'),
    ),
  );
  $query = db_select('skinr_skins', 's')
    ->extend('PagerDefault')
    ->extend('TableSort');
  $query
    ->join('skinr_group_skins', 'gs', 's.sid = gs.sid');
  skinr_context_ui_build_skin_filter_query($query);
  $query
    ->fields('s', array(
    'sid',
  ))
    ->limit(50)
    ->orderByHeader($header);
  if (empty($_GET['order'])) {

    // Default sort.
    $query
      ->orderBy('s.status', 'desc')
      ->orderBy('s.theme')
      ->orderBy('s.module')
      ->orderBy('s.element')
      ->orderBy('gs.gid');
  }
  $sids = $query
    ->execute()
    ->fetchCol();
  $skins = entity_load_multiple('skin', $sids);
  $form['admin'] = skinr_ui_admin_skins($header, $skins);

  // Add in groups.
  $gids = array();
  foreach ($skins as $skin) {
    $gids[$skin->gid] = $skin->gid;
  }
  $groups = skinr_context_group_load_multiple($gids);
  foreach ($form['admin']['skins']['#options'] as $key => $option) {
    $gid = isset($option['#skin']->gid) ? $option['#skin']->gid : t('none');
    $form['admin']['skins']['#options'][$key]['group'] = $gid;
    if (isset($groups[$gid])) {
      $form['admin']['skins']['#options'][$key]['#group'] = $groups[$gid];
      $form['admin']['skins']['#options'][$key]['group'] = t('@group (!gid)', array(
        '@group' => $groups[$gid]->title,
        '!gid' => $gid,
      ));

      // Alter edit link.
      $form['admin']['skins']['#options'][$key]['operations']['data']['#links']['edit']['href'] = 'admin/structure/skinr/edit/' . $option['#skin']->module . '/' . $option['#skin']->element . '/' . $option['#skin']->gid;
    }
  }
  return $form;
}