danielebarchiesi@2: array( danielebarchiesi@2: 'render element' => 'quicktabs_tabstyle', danielebarchiesi@2: ), danielebarchiesi@2: ); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Implements hook_menu(). danielebarchiesi@2: */ danielebarchiesi@2: function quicktabs_tabstyles_menu() { danielebarchiesi@2: $items['admin/structure/quicktabs/styles'] = array( danielebarchiesi@2: 'title' => 'Styles', danielebarchiesi@2: 'page callback' => 'drupal_get_form', danielebarchiesi@2: 'page arguments' => array('quicktabs_tabstyles_styles'), danielebarchiesi@2: 'access arguments' => array('administer quicktabs'), danielebarchiesi@2: 'type' => MENU_LOCAL_TASK, danielebarchiesi@2: ); danielebarchiesi@2: return $items; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Callback function for admin/structure/quicktabs/styles. The style chooser form. danielebarchiesi@2: */ danielebarchiesi@2: function quicktabs_tabstyles_styles() { danielebarchiesi@2: $options = array(); danielebarchiesi@2: $styles = module_invoke_all('quicktabs_tabstyles'); danielebarchiesi@2: // The keys used for options must be valid html id-s. danielebarchiesi@2: // Removing the css file path, because that can't be used. danielebarchiesi@2: foreach ($styles as $style) { danielebarchiesi@2: $options[$style] = $style; danielebarchiesi@2: } danielebarchiesi@2: ksort($options); danielebarchiesi@2: danielebarchiesi@2: $form['quicktabs_tabstyle'] = array( danielebarchiesi@2: '#type' => 'radios', danielebarchiesi@2: '#title' => t('Quicktab styles'), danielebarchiesi@2: '#options' => array('nostyle' => t('No style')) + $options, danielebarchiesi@2: '#default_value' => variable_get('quicktabs_tabstyle', 'nostyle'), danielebarchiesi@2: '#description' => t('Select the default style for quicktabs.'), danielebarchiesi@2: '#attributes' => array('class' => array('quicktabs-tabstyles', 'clear-block')), danielebarchiesi@2: '#theme' => 'quicktabs_style_options', danielebarchiesi@2: ); danielebarchiesi@2: danielebarchiesi@2: $form['submit'] = array( danielebarchiesi@2: '#type' => 'submit', danielebarchiesi@2: '#value' => t('Save'), danielebarchiesi@2: ); danielebarchiesi@2: return $form; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Submit handler for QuickTabs styles. danielebarchiesi@2: */ danielebarchiesi@2: function quicktabs_tabstyles_styles_submit($form, &$form_state) { danielebarchiesi@2: variable_set('quicktabs_tabstyle', $form_state['values']['quicktabs_tabstyle']); danielebarchiesi@2: drupal_set_message(t('The default quicktab style has been saved.')); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Theme function for quicktabs style radio options. danielebarchiesi@2: * danielebarchiesi@2: * @ingroup themeable danielebarchiesi@2: */ danielebarchiesi@2: function theme_quicktabs_style_options($variables) { danielebarchiesi@2: $style_element = $variables['quicktabs_tabstyle']; danielebarchiesi@2: $markup = ''; danielebarchiesi@2: danielebarchiesi@2: $tabs = array( danielebarchiesi@2: array('title' => t('One'), 'contents' => array('#markup' => t('First tab')), 'weight' => 0), danielebarchiesi@2: array('title' => t('Two'), 'contents' => array('#markup' => t('Second tab')), 'weight' => 1), danielebarchiesi@2: array('title' => t('Three'), 'contents' => array('#markup' => t('Third tab')), 'weight' => 2) danielebarchiesi@2: ); danielebarchiesi@2: danielebarchiesi@2: $options = array('renderer' => 'quicktabs', 'hide_empty_tabs' => 0, 'ajax' => 0); danielebarchiesi@2: // Preview for each style. danielebarchiesi@2: foreach (element_children($style_element) as $style) { danielebarchiesi@2: $element = $style_element[$style]; danielebarchiesi@2: $options['style'] = $style; danielebarchiesi@2: $quicktabs = quicktabs_build_quicktabs(drupal_strtolower($style), $options, $tabs); danielebarchiesi@2: $preview = '
'. drupal_render($quicktabs['content']) .'
'; danielebarchiesi@2: $element['#description'] = t('%style preview', array('%style' => $element['#title'])) .':
'. $preview; danielebarchiesi@2: $markup .= drupal_render($element); danielebarchiesi@2: } danielebarchiesi@2: $build = array( danielebarchiesi@2: 'style' => array('#markup' => $markup), danielebarchiesi@2: '#attached' => array('css' => array(drupal_get_path('module', 'quicktabs_tabstyles') . '/css/quicktabs-tabstyles-admin.css')), danielebarchiesi@2: ); danielebarchiesi@2: return drupal_render($build); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Implements hook_quicktabs_tabstyles(). danielebarchiesi@2: */ danielebarchiesi@2: function quicktabs_tabstyles_quicktabs_tabstyles() { danielebarchiesi@2: $tabstyles_directory = drupal_get_path('module', 'quicktabs_tabstyles') . '/tabstyles'; danielebarchiesi@2: $files = file_scan_directory($tabstyles_directory, '/\.css$/'); danielebarchiesi@2: $tabstyles = array(); danielebarchiesi@2: foreach ($files as $file) { danielebarchiesi@2: // Skip RTL files. danielebarchiesi@2: if (!strpos($file->name, '-rtl')) { danielebarchiesi@2: $tabstyles[$file->uri] = drupal_ucfirst($file->name); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: return $tabstyles; danielebarchiesi@2: }