annotate sites/all/modules/quicktabs/quicktabs_tabstyles/quicktabs_tabstyles.module @ 2:b74b41bb73f0

-- Google analytics module
author danieleb <danielebarchiesi@me.com>
date Thu, 22 Aug 2013 17:22:54 +0100
parents
children
rev   line source
danielebarchiesi@2 1 <?php
danielebarchiesi@2 2
danielebarchiesi@2 3 /**
danielebarchiesi@2 4 * Implements hook_theme().
danielebarchiesi@2 5 */
danielebarchiesi@2 6 function quicktabs_tabstyles_theme() {
danielebarchiesi@2 7 return array(
danielebarchiesi@2 8 'quicktabs_style_options' => array(
danielebarchiesi@2 9 'render element' => 'quicktabs_tabstyle',
danielebarchiesi@2 10 ),
danielebarchiesi@2 11 );
danielebarchiesi@2 12 }
danielebarchiesi@2 13
danielebarchiesi@2 14 /**
danielebarchiesi@2 15 * Implements hook_menu().
danielebarchiesi@2 16 */
danielebarchiesi@2 17 function quicktabs_tabstyles_menu() {
danielebarchiesi@2 18 $items['admin/structure/quicktabs/styles'] = array(
danielebarchiesi@2 19 'title' => 'Styles',
danielebarchiesi@2 20 'page callback' => 'drupal_get_form',
danielebarchiesi@2 21 'page arguments' => array('quicktabs_tabstyles_styles'),
danielebarchiesi@2 22 'access arguments' => array('administer quicktabs'),
danielebarchiesi@2 23 'type' => MENU_LOCAL_TASK,
danielebarchiesi@2 24 );
danielebarchiesi@2 25 return $items;
danielebarchiesi@2 26 }
danielebarchiesi@2 27
danielebarchiesi@2 28 /**
danielebarchiesi@2 29 * Callback function for admin/structure/quicktabs/styles. The style chooser form.
danielebarchiesi@2 30 */
danielebarchiesi@2 31 function quicktabs_tabstyles_styles() {
danielebarchiesi@2 32 $options = array();
danielebarchiesi@2 33 $styles = module_invoke_all('quicktabs_tabstyles');
danielebarchiesi@2 34 // The keys used for options must be valid html id-s.
danielebarchiesi@2 35 // Removing the css file path, because that can't be used.
danielebarchiesi@2 36 foreach ($styles as $style) {
danielebarchiesi@2 37 $options[$style] = $style;
danielebarchiesi@2 38 }
danielebarchiesi@2 39 ksort($options);
danielebarchiesi@2 40
danielebarchiesi@2 41 $form['quicktabs_tabstyle'] = array(
danielebarchiesi@2 42 '#type' => 'radios',
danielebarchiesi@2 43 '#title' => t('Quicktab styles'),
danielebarchiesi@2 44 '#options' => array('nostyle' => t('No style')) + $options,
danielebarchiesi@2 45 '#default_value' => variable_get('quicktabs_tabstyle', 'nostyle'),
danielebarchiesi@2 46 '#description' => t('Select the default style for quicktabs.'),
danielebarchiesi@2 47 '#attributes' => array('class' => array('quicktabs-tabstyles', 'clear-block')),
danielebarchiesi@2 48 '#theme' => 'quicktabs_style_options',
danielebarchiesi@2 49 );
danielebarchiesi@2 50
danielebarchiesi@2 51 $form['submit'] = array(
danielebarchiesi@2 52 '#type' => 'submit',
danielebarchiesi@2 53 '#value' => t('Save'),
danielebarchiesi@2 54 );
danielebarchiesi@2 55 return $form;
danielebarchiesi@2 56 }
danielebarchiesi@2 57
danielebarchiesi@2 58 /**
danielebarchiesi@2 59 * Submit handler for QuickTabs styles.
danielebarchiesi@2 60 */
danielebarchiesi@2 61 function quicktabs_tabstyles_styles_submit($form, &$form_state) {
danielebarchiesi@2 62 variable_set('quicktabs_tabstyle', $form_state['values']['quicktabs_tabstyle']);
danielebarchiesi@2 63 drupal_set_message(t('The default quicktab style has been saved.'));
danielebarchiesi@2 64 }
danielebarchiesi@2 65
danielebarchiesi@2 66 /**
danielebarchiesi@2 67 * Theme function for quicktabs style radio options.
danielebarchiesi@2 68 *
danielebarchiesi@2 69 * @ingroup themeable
danielebarchiesi@2 70 */
danielebarchiesi@2 71 function theme_quicktabs_style_options($variables) {
danielebarchiesi@2 72 $style_element = $variables['quicktabs_tabstyle'];
danielebarchiesi@2 73 $markup = '';
danielebarchiesi@2 74
danielebarchiesi@2 75 $tabs = array(
danielebarchiesi@2 76 array('title' => t('One'), 'contents' => array('#markup' => t('First tab')), 'weight' => 0),
danielebarchiesi@2 77 array('title' => t('Two'), 'contents' => array('#markup' => t('Second tab')), 'weight' => 1),
danielebarchiesi@2 78 array('title' => t('Three'), 'contents' => array('#markup' => t('Third tab')), 'weight' => 2)
danielebarchiesi@2 79 );
danielebarchiesi@2 80
danielebarchiesi@2 81 $options = array('renderer' => 'quicktabs', 'hide_empty_tabs' => 0, 'ajax' => 0);
danielebarchiesi@2 82 // Preview for each style.
danielebarchiesi@2 83 foreach (element_children($style_element) as $style) {
danielebarchiesi@2 84 $element = $style_element[$style];
danielebarchiesi@2 85 $options['style'] = $style;
danielebarchiesi@2 86 $quicktabs = quicktabs_build_quicktabs(drupal_strtolower($style), $options, $tabs);
danielebarchiesi@2 87 $preview = '<div class="quicktabs-preview">'. drupal_render($quicktabs['content']) .'</div>';
danielebarchiesi@2 88 $element['#description'] = t('%style preview', array('%style' => $element['#title'])) .':<br />'. $preview;
danielebarchiesi@2 89 $markup .= drupal_render($element);
danielebarchiesi@2 90 }
danielebarchiesi@2 91 $build = array(
danielebarchiesi@2 92 'style' => array('#markup' => $markup),
danielebarchiesi@2 93 '#attached' => array('css' => array(drupal_get_path('module', 'quicktabs_tabstyles') . '/css/quicktabs-tabstyles-admin.css')),
danielebarchiesi@2 94 );
danielebarchiesi@2 95 return drupal_render($build);
danielebarchiesi@2 96 }
danielebarchiesi@2 97
danielebarchiesi@2 98
danielebarchiesi@2 99 /**
danielebarchiesi@2 100 * Implements hook_quicktabs_tabstyles().
danielebarchiesi@2 101 */
danielebarchiesi@2 102 function quicktabs_tabstyles_quicktabs_tabstyles() {
danielebarchiesi@2 103 $tabstyles_directory = drupal_get_path('module', 'quicktabs_tabstyles') . '/tabstyles';
danielebarchiesi@2 104 $files = file_scan_directory($tabstyles_directory, '/\.css$/');
danielebarchiesi@2 105 $tabstyles = array();
danielebarchiesi@2 106 foreach ($files as $file) {
danielebarchiesi@2 107 // Skip RTL files.
danielebarchiesi@2 108 if (!strpos($file->name, '-rtl')) {
danielebarchiesi@2 109 $tabstyles[$file->uri] = drupal_ucfirst($file->name);
danielebarchiesi@2 110 }
danielebarchiesi@2 111 }
danielebarchiesi@2 112 return $tabstyles;
danielebarchiesi@2 113 }