You are here

function fusion_apply_ui_admin_skin_info_settings in Fusion Accelerator 7

Same name and namespace in other branches
  1. 7.2 fusion_apply/fusion_apply_ui.admin.inc \fusion_apply_ui_admin_skin_info_settings()

Menu callback; displays a listing of all skins in a skinset, allowing you to enable or disable them individually for each theme.

See also

fusion_apply_ui_admin_skin_info_settings_validate()

fusion_apply_ui_admin_skin_info_settings_submit()

fusion_apply_ui_admin_skin_info_settings_reset()

1 string reference to 'fusion_apply_ui_admin_skin_info_settings'
fusion_apply_ui_menu in fusion_apply/fusion_apply_ui.module
Implements hook_menu().

File

fusion_apply/fusion_apply_ui.admin.inc, line 781
Admin page callbacks for the Fusion Apply module.

Code

function fusion_apply_ui_admin_skin_info_settings($form, &$form_state, $skin_info) {
  $themes = list_themes();
  if (isset($form_state['storage']['disable_sids'])) {
    foreach ($form_state['storage']['themes'] as $theme) {
      $items[] = $themes[$theme]->info['name'];
    }
    $message = t('Would you like to disable the skin configurations for the selected themes?') . theme('item_list', array(
      'items' => $items,
    ));

    // Insert a confirmation form.
    return confirm_form($form, t('Disable all skin configurations for selected themes?'), 'admin/appearance/fusion/skins', $message, t('Yes'), t('No'));
  }

  // Output skin details.
  $form['title'] = array(
    '#markup' => '<h2>' . $skin_info['title'] . '</h2>',
  );
  $form['description'] = array(
    '#markup' => '<div class="description">' . $skin_info['description'] . '</div>',
  );
  $theme_hooks = array();
  foreach ($skin_info['theme hooks'] as $theme_hook) {
    $theme_hooks[] = $theme_hook == '*' ? t('all hooks') : $theme_hook;
  }
  $modules = system_rebuild_module_data();
  $source = !empty($modules[$skin_info['source']['name']]->info['name']) ? $modules[$skin_info['source']['name']]->info['name'] : $skin_info['source']['name'];
  $groups = fusion_apply_get_group_info();
  $group = !empty($groups[$skin_info['group']]['title']) ? $groups[$skin_info['group']]['title'] : $skin_info['group'];
  $details = array(
    t('Source') => t('%source !type', array(
      '%source' => $source,
      '!type' => $skin_info['source']['type'] == 'module' ? t('module') : t('theme'),
    )),
    t('Theme hooks') => implode(', ', $theme_hooks),
    t('Group') => $group,
  );
  $form['details'] = array(
    '#markup' => theme('fusion_apply_ui_admin_dl', array(
      'definitions' => $details,
      'attributes' => array(
        'class' => 'details',
      ),
    )),
  );
  $form['status'] = array(
    '#type' => 'checkboxes',
    '#title' => t('Themes'),
    '#description' => t('This skin will be availble as an option for the selected themes.'),
  );
  $options = array();
  $default_value = array();
  $status = fusion_apply_skin_info_status_get($skin_info);
  ksort($status);
  foreach ($status as $theme => $enabled) {
    if (isset($themes[$theme]) && $themes[$theme]->status) {
      $options[$theme] = $themes[$theme]->info['name'];
    }
    else {

      // Hidden field to keep contents of themes that aren't enabled, or that
      // don't exist on this site but are set by the skin plugin.
      $form['status'][$theme] = array(
        '#type' => 'value',
        '#value' => $theme,
      );
    }
    if ($enabled) {
      $default_value[] = $theme;
    }
  }
  $form['status']['#options'] = $options;
  $form['status']['#default_value'] = $default_value;
  $form['skin'] = array(
    '#type' => 'hidden',
    '#value' => $skin_info['name'],
  );
  $form['actions'] = array(
    '#type' => 'actions',
  );
  $form['actions']['save'] = array(
    '#type' => 'submit',
    '#value' => t('Save configuration'),
  );
  $form['actions']['reset'] = array(
    '#type' => 'submit',
    '#value' => t('Reset to defaults'),
    '#submit' => array(
      'fusion_apply_ui_admin_skin_info_settings_reset',
    ),
  );

  // Store $skin_info for use in submit function.
  $form_state['#skin_info'] = $skin_info;
  return $form;
}