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 } |