Imported Upstream version 6.x+1.2
[drupal-theme-rahunas+rootcandy] / rootcandy / theme-settings.php
1 <?php
2 // $Id: theme-settings.php,v 1.6.2.16 2009/06/20 16:53:25 sign Exp $
3
4 /**
5  * @file
6  * The theme settings
7  */
8
9 /**
10  * Implementation of THEMEHOOK_settings() function.
11  *
12  * @param $saved_settings
13  *   array An array of saved settings for this theme.
14  * @return
15  *   array A form array.
16  */
17 function rootcandy_settings($saved_settings, $subtheme_defaults = array()) {
18
19   // Get the default values from the .info file.
20   $themes = list_themes();
21   $defaults = $themes['rootcandy']->info['settings'];
22
23   // Allow a subtheme to override the default values.
24   $defaults = array_merge($defaults, $subtheme_defaults);
25
26   // Merge the saved variables and their default values.
27   $settings = array_merge($defaults, $saved_settings);
28
29   // Create the form widgets using Forms API
30   $form['header'] = array(
31     '#type' => 'fieldset',
32     '#title' => t('Header'),
33     '#weight' => 1,
34     '#collapsible' => TRUE,
35     '#collapsed' => TRUE,
36   );
37   $form['header']['rootcandy_header_display'] = array(
38     '#type' => 'checkbox',
39     '#title' => t('Disable header'),
40     '#default_value' => $settings['rootcandy_header_display'],
41   );
42   $form['header']['rootcandy_hide_panel'] = array(
43     '#type' => 'checkbox',
44     '#title' => t('Disable sliding panel'),
45     '#default_value' => $settings['rootcandy_hide_panel'],
46   );
47   $form['dashboard'] = array(
48     '#type' => 'fieldset',
49     '#title' => t('Dashboard'),
50     '#weight' => 1,
51     '#collapsible' => TRUE,
52     '#collapsed' => TRUE,
53   );
54   $form['dashboard']['rootcandy_dashboard_display'] = array(
55     '#type' => 'checkbox',
56     '#title' => t('Disable dashboard'),
57     '#default_value' => $settings['rootcandy_dashboard_display'],
58   );
59   $form['dashboard']['rootcandy_dashboard_help'] = array(
60     '#type' => 'select',
61     '#options' => array('left' => t('Left'), 'right' => t('Right'), 'content' => t('Content')),
62     '#title' => t('Help box position'),
63     '#default_value' => $settings['rootcandy_dashboard_help'],
64   );
65   $form['dashboard']['rootcandy_dashboard_messages'] = array(
66     '#type' => 'select',
67     '#options' => array('left' => t('Left'), 'right' => t('Right'), 'content' => t('Content')),
68     '#title' => t('Messages box position'),
69     '#default_value' => $settings['rootcandy_dashboard_messages'],
70   );
71   $form['dashboard']['rootcandy_dashboard_content_display'] = array(
72     '#type' => 'checkbox',
73     '#title' => t('Disable content on a dashboard'),
74     '#default_value' => $settings['rootcandy_dashboard_content_display'],
75   );
76
77   $form['navigation'] = array(
78     '#type' => 'fieldset',
79     '#title' => t('Navigation'),
80     '#weight' => 1,
81     '#collapsible' => TRUE,
82     '#collapsed' => TRUE,
83   );
84   // Create the form widgets using Forms API
85   $form['navigation']['rootcandy_navigation_icons'] = array(
86     '#type' => 'checkbox',
87     '#title' => t('Disable icons for main navigation'),
88     '#default_value' => $settings['rootcandy_navigation_icons'],
89   );
90
91
92   $form['navigation']['rootcandy_navigation_icons_size'] = array(
93     '#type' => 'select',
94     '#options' => array(16 => 16, 24 => 24, 32 => 32),
95     '#title' => t('Set icons size for main navigation'),
96     '#default_value' => $settings['rootcandy_navigation_icons_size'],
97   );
98
99   $form['navigation']['role-weights'] = array(
100     '#type' => 'fieldset',
101     '#title' => t('Menu by role and weights'),
102     '#weight' => 1,
103     '#collapsible' => TRUE,
104     '#collapsed' => TRUE,
105   );
106
107   $primary_options = array(
108     NULL => t('None'),
109     '_rootcandy_default_navigation' => t('default navigation'),
110   );
111
112   $primary_options = array_merge($primary_options, menu_get_menus());
113   $roles = user_roles(FALSE);
114   foreach ($roles as $rid => $role) {
115     if (empty($settings['rootcandy_navigation_source_'. $rid])) $settings['rootcandy_navigation_source_'. $rid] = '';
116
117     $form['navigation']['nav-by-role']['rootcandy_navigation_source_'. $rid] = array(
118       '#type' => 'select',
119       '#default_value' => $settings['rootcandy_navigation_source_'. $rid],
120       '#options' => $primary_options,
121       '#tree' => FALSE,
122     );
123   }
124
125   $form['navigation']['custom-icons'] = array(
126     '#type' => 'fieldset',
127     '#title' => t('Custom icons'),
128     '#weight' => 1,
129     '#collapsible' => TRUE,
130     '#collapsed' => TRUE,
131   );
132
133   $form['navigation']['custom-icons']['rootcandy_navigation_custom_icons'] = array(
134     '#type' => 'textarea',
135     '#title' => t('Custom icons'),
136     '#default_value' => $settings['rootcandy_navigation_custom_icons'],
137     '#description' => t('Format: menu href|icon path (relative to drupal root) - one item per row. eg. admin/build|files/myicons/admin-build.png'),
138     '#required' => FALSE
139   );
140
141   // Create the form widgets using Forms API
142   $form['Misc'] = array(
143     '#type' => 'fieldset',
144     '#title' => t('Misc'),
145     '#weight' => 1,
146     '#collapsible' => TRUE,
147     '#collapsed' => TRUE,
148   );
149   $form['Misc']['rootcandy_help_display'] = array(
150     '#type' => 'checkbox',
151     '#title' => t('Disable help'),
152     '#default_value' => $settings['rootcandy_help_display'],
153   );
154
155   $i = 100;
156   foreach ($roles as $rid => $role) {
157     if (empty($settings['role-weight-'. $rid])) $settings['role-weight-'. $rid] = '';
158     if (!$weight = $settings['role-weight-'. $rid]) {
159       $weight = $i++;
160     }
161     $data = array($role);
162     $form['rows'][$rid]['data'] = array('#type' => 'value', '#value' => $data);
163     $form['rows'][$rid]['role-weight-'. $rid] = array(
164       '#type' => 'textfield',
165       '#size' => 5,
166       '#default_value' => $weight,
167       '#attributes' => array('class' => 'weight'),
168     );
169   }
170
171   // Return the additional form widgets
172   return $form;
173 }