Projet

Général

Profil

Paste
Télécharger (42,9 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / themes / mayo / theme-settings.php @ 4b706e38

1 85ad3d82 Assos Assos
<?php
2
/**
3 d7f58da2 Florent Torregrosa
 * @file
4 85ad3d82 Assos Assos
 * Implements hook_form_system_theme_settings_alter().
5
 *
6
 * Custom theme settings
7
 */
8
function mayo_form_system_theme_settings_alter(&$form, &$form_state) {
9 bfb52287 Assos Assos
    global $base_url;
10 85ad3d82 Assos Assos
  drupal_add_js(drupal_get_path('theme', 'mayo') . '/js/mayo.js');
11 d7f58da2 Florent Torregrosa
    // Get our plugin system functions.
12
  require_once(drupal_get_path('theme', 'mayo') . '/inc/plugins.inc');
13
14
  // We need some getters.
15
  require_once(drupal_get_path('theme', 'mayo') . '/inc/get.inc');
16
17
  // General "alters" use a form id. Settings should not be set here. The only
18
  // thing useful about this is if you need to alter the form for the running
19
  // theme and *not* the theme setting.
20
  // @see http://drupal.org/node/943212
21
  if (isset($form_id)) {
22
    return;
23
  }
24
25
  // Get an array of device groups with option values
26
  $device_group_options = page_layouts_device_group_options('mayo');
27
28
  // Unit options
29
  $unit_options = array('%' => '%', 'px' => 'px', 'em' => 'em');
30
31
  // Assign $options for each device group
32
  foreach ($device_group_options as $device_group => $options) {
33
34
    // About here we need to call a custom sort function, this is what we got for now
35
    sort($options, SORT_STRING);
36 85ad3d82 Assos Assos
37 d7f58da2 Florent Torregrosa
    foreach ($options as $option) {
38
      if ($device_group === 'bigscreen') {
39
        $bigscreen_options[$option] = drupal_ucfirst(str_replace('_', ' ', $option)); // human readable option names for accessibility
40
      }
41
      if ($device_group === 'tablet_landscape') {
42
        $tablet_landscape_options[$option] = drupal_ucfirst(str_replace('_', ' ', $option));
43
      }
44
      if ($device_group === 'tablet_portrait') {
45
        $tablet_portrait_options[$option] = drupal_ucfirst(str_replace('_', ' ', $option));
46
      }
47
      if ($device_group === 'smalltouch_landscape') {
48
        $smalltouch_landscape_options[$option] = drupal_ucfirst(str_replace('_', ' ', $option));
49
      }
50
    }
51
  }
52
53
  /* --------------- Font settings -------------- */
54 85ad3d82 Assos Assos
  $form['font'] = array(
55
    '#type' => 'fieldset',
56
    '#title' => t('Font settings'),
57
    '#collapsed' => TRUE,
58
    '#collapsible' => TRUE,
59
  );
60
  $form['font']['base_font_size'] = array(
61
    '#type' => 'select',
62
    '#title' => t('Base font size'),
63
    '#default_value' => theme_get_setting('base_font_size'),
64
    '#options' => array(
65
      '75%'    => '75% (=12px)',
66
      '81.25%' => '81.25% (=13px)',
67
      '87.5%'  => '87.5% (=14px)',
68
      '93.75%' => '93.75% (=15px)',
69
      '100%'   => '100% (=16px)',
70
      '112.5%' => '112.5% (=18px)'
71
    ),
72
    '#description' => t('To support text size enlargement/reduction, percent ratio based on the browser\'s regular font size (which is mostly 16px) is used.'),
73
  );
74
  $form['font']['base_font_family'] = array(
75
    '#type' => 'select',
76
    '#title' => t('Base font family'),
77
    '#default_value' => theme_get_setting('base_font_family'),
78
    '#options' => array(
79
      0 => t('Serif: Georgia, Palatino Linotype, Book Antiqua, URW Palladio L, Baskerville, serif'),
80
      1 => t('Sans-Serif: Verdana, Geneva, Arial, Bitstream Vera Sans, DejaVu Sans, sans-serif'),
81
      2 => t('Custom'),
82
    ),
83
    '#description' => t('Font used for most part of the contents.'),
84
  );
85
  $form['font']['base_custom_font_family'] = array(
86
    '#type' => 'textfield',
87
    '#title' => t('Custom base font family'),
88
    '#default_value' => theme_get_setting('base_custom_font_family'),
89
    '#size' => 80,
90
    '#description' => t('Enter the base font-family you want to use. No need to start with <b>font-family:</b> and end with <b>;</b>. Just enter comma separated font names.'),
91
    '#prefix' => '<div id="base-custom-font-family-wrapper">',
92
    '#suffix' => '</div>',
93
  );
94
  $form['font']['heading_font_family'] = array(
95
    '#type' => 'select',
96
    '#title' => t('Heading font family (except for the site name and slogan)'),
97
    '#default_value' => theme_get_setting('heading_font_family'),
98
    '#options' => array(
99
      0 => t('Serif: Georgia, Palatino Linotype, Book Antiqua, URW Palladio L, Baskerville, serif'),
100
      1 => t('Sans-Serif: Verdana, Geneva, Arial, Bitstream Vera Sans, DejaVu Sans, sans-serif'),
101
      2 => t('Custom'),
102
    ),
103
    '#description' => t('Font used for the headings (h1, h2, h3, h4, h5). Font used for the site name and slogan can not be changed here. If you want to change it, please manually edit style.css in the theme\'s css subdirectory.'),
104
  );
105
  $form['font']['heading_custom_font_family'] = array(
106
    '#type' => 'textfield',
107
    '#title' => t('Custom heading font family'),
108
    '#default_value' => theme_get_setting('heading_custom_font_family'),
109
    '#size' => 80,
110
    '#description' => t('Enter the font-family you want to use for the headings. No need to start with <b>font-family:</b> and end with <b>;</b>. Just enter comma separated font names.'),
111
    '#prefix' => '<div id="heading-custom-font-family-wrapper">',
112
    '#suffix' => '</div>',
113
  );
114
115 d7f58da2 Florent Torregrosa
  /* --------------- Layout settings -------------- */
116 85ad3d82 Assos Assos
  $form['layout'] = array(
117
    '#type' => 'fieldset',
118
    '#title' => t('Layout settings'),
119
    '#collapsed' => TRUE,
120
    '#collapsible' => TRUE,
121
  );
122
  $form['layout']['base_vmargin'] = array(
123
    '#type' => 'textfield',
124
    '#title' => t('Base vertical (top/bottom) margin'),
125
    '#default_value' => theme_get_setting('base_vmargin'),
126
    '#size' => 12,
127
    '#maxlength' => 8,
128
    '#description' => t('Specify the base vertical (top/bottom) margin which is vertical spaces between page edge and browser screen in px.'),
129 70a4c29b Assos Assos
    '#prefix' => '<img src="' . file_create_url(drupal_get_path('theme', 'mayo') . '/images/base-layout.png') . '" /><br />',
130 85ad3d82 Assos Assos
  );
131
  $form['layout']['page_margin'] = array(
132
    '#type' => 'textfield',
133
    '#title' => t('Page margin'),
134
    '#default_value' => theme_get_setting('page_margin'),
135
    '#size' => 12,
136
    '#maxlength' => 8,
137
    '#description' => t('Specify the page margin which is spaces between page edge and contents in px.'),
138
  );
139
  $form['layout']['layout_style'] = array(
140
    '#type' => 'radios',
141
    '#title' => t('Layout style'),
142
    '#default_value' => theme_get_setting('layout_style'),
143
    '#options' => array(
144
      1 => t('1. Apply page margin to all (header, footer and main contents).'),
145
      2 => t('2. Apply page margin to main contents only.'),
146
    ),
147 70a4c29b Assos Assos
    '#description' => '<img src="' . file_create_url(drupal_get_path('theme', 'mayo') . '/images/page-layout.png') . '" /><br />' . t('When the layout 2 is selected, or header background image is selected, header borders are not drawn to make it look better.'),
148 85ad3d82 Assos Assos
  );
149
150 d7f58da2 Florent Torregrosa
  /* --------------- Responsive sidebar layout settings -------------- */
151
  /* -----------Big screen as in desktop pc monitor------------- */
152
  $form['layout']['bigscreen'] = array(
153 85ad3d82 Assos Assos
    '#type' => 'fieldset',
154 d7f58da2 Florent Torregrosa
    '#title' => t('Big Screen Sidebar layout'),
155 85ad3d82 Assos Assos
    '#collapsible' => TRUE,
156
    '#collapsed' => TRUE,
157 d7f58da2 Florent Torregrosa
    '#attributes' => array(
158
      'class' => array('mayo-layout-form'),
159
    ),
160
  );
161
162
    // Big screen Layout
163
  $form['layout']['bigscreen']['bigscreen-layout-wrapper'] = array(
164
    '#type' => 'fieldset',
165
    '#title' => t('Choose sidebar layout'),
166 85ad3d82 Assos Assos
  );
167 d7f58da2 Florent Torregrosa
    // Options
168
169
  $form['layout']['bigscreen']['bigscreen-layout-wrapper']['bigscreen_layout'] = array(
170
     '#type' => 'radios',
171
     '#title' => t('<strong>Choose sidebar positions</strong>'),
172
     '#default_value' => str_replace('-', '_', theme_get_setting('bigscreen_layout')),
173
     '#options' => $bigscreen_options,
174
  );
175
176
  // Sidebars
177
  $form['layout']['bigscreen']['bigscreen-sidebar-wrapper'] = array(
178
    '#type' => 'fieldset',
179
    '#title' => t('Set sidebar widths'),
180
    '#description' => t('<strong>Set the width of each sidebar</strong>'),
181
    '#collapsible' => FALSE,
182
  );
183
184
  // Units
185
  $form['layout']['bigscreen']['bigscreen-sidebar-wrapper']['bigscreen_sidebar_unit'] = array(
186
    '#type' => 'select',
187
    '#title' => t('Unit'),
188
    '#default_value' => theme_get_setting('bigscreen_sidebar_unit'),
189
    '#options' => $unit_options,
190
  );
191
192
  // Sidebar first
193
  $form['layout']['bigscreen']['bigscreen-sidebar-wrapper']['bigscreen_sidebar_first'] = array(
194
    '#type' => 'textfield',
195
    '#title' => t('First sidebar'),
196
    '#default_value' => check_plain(theme_get_setting('bigscreen_sidebar_first')),
197
    '#size' => 4,
198
    '#maxlenght' => 4,
199
    '#states' => array(
200
      'required' => array(
201
        array('input[name="bigscreen_layout"]' => array('value' => 'three_col_grail')),
202
        array('input[name="bigscreen_layout"]' => array('value' => 'two_sidebars_left')),
203
        array('input[name="bigscreen_layout"]' => array('value' => 'two_sidebars_right')),
204
      ),
205
    ),
206
  );
207
208
  // Sidebar second
209
  $form['layout']['bigscreen']['bigscreen-sidebar-wrapper']['bigscreen_sidebar_second'] = array(
210
    '#type' => 'textfield',
211
    '#title' => t('Second sidebar'),
212
    '#default_value' => check_plain(theme_get_setting('bigscreen_sidebar_second')),
213
    '#size' => 4,
214
    '#maxlenght' => 4,
215
    '#states' => array(
216
      'required' => array(
217
        array('input[name="bigscreen_layout"]' => array('value' => 'three_col_grail')),
218
        array('input[name="bigscreen_layout"]' => array('value' => 'two_sidebars_left')),
219
        array('input[name="bigscreen_layout"]' => array('value' => 'two_sidebars_right')),
220
      ),
221
    ),
222
  );
223
224
  // Page width
225
  $form['layout']['bigscreen']['bigscreen-width-wrapper'] = array(
226
    '#type' => 'fieldset',
227
    '#title' => t('Set the page width'),
228
    '#description' => t('<strong>Set the page width</strong>'),
229
  );
230
231
  // Unit
232
  $form['layout']['bigscreen']['bigscreen-width-wrapper']['bigscreen_page_unit'] = array(
233
    '#type' => 'select',
234
    '#title' => t('Unit'),
235
    '#default_value' => theme_get_setting('bigscreen_page_unit'),
236
    '#options' => $unit_options,
237
  );
238
239
  // Width
240
  $form['layout']['bigscreen']['bigscreen-width-wrapper']['bigscreen_page_width'] = array(
241
    '#type'  => 'textfield',
242
    '#title' => t('Page width'),
243
    '#default_value' => check_plain(theme_get_setting('bigscreen_page_width')),
244
    '#size' => 4,
245
    '#maxlenght' => 4,
246
    '#required' => TRUE,
247
  );
248
249
  // Media queries
250
  $form['layout']['bigscreen']['media-queries-wrapper'] = array(
251
    '#type' => 'fieldset',
252
    '#title' => t('Standard Screen Media Queries'),
253
    '#weight' => 1,
254
    '#attributes' => array(
255
      'class' => array('at-media-queries'),
256
    ),
257
  );
258
259
  // Media query
260
  $form['layout']['bigscreen']['media-queries-wrapper']['bigscreen_media_query'] = array(
261
    '#type' => 'textfield',
262
    '#title' => t('Media query for this layout'),
263
    '#default_value' => check_plain(theme_get_setting('bigscreen_media_query')),
264
    '#description' => t('Do not include @media, it\'s included automatically.'),
265
    '#size' => 100,
266
    '#required' => TRUE,
267
  );
268
269
  /* ****************************************************************************
270
   *
271
   * Tablet
272
   *
273
   * ************************************************************************** */
274
275
  $form['layout']['tablet'] = array(
276
    '#type' => 'fieldset',
277
    '#title' => t('Tablet Sidebar Layout'),
278
    '#description' => t('<h3>Tablet Layout</h3><p>Tablet devices such as iPad, Android and Windows tablets have two orientations - landscape and portrait, which can also be thought of as wide and narrow tablets. You can configure a different layout for each orientation.</p>'),
279
    '#attributes' => array(
280
      'class' => array('mayo-layout-form'),
281
    ),
282
    '#collapsible' => TRUE,
283
    '#collapsed' => TRUE,
284
  );
285
286
  /* ******************
287
   * Tablet landscape
288
   * **************** */
289
290
  $form['layout']['tablet']['landscape'] = array(
291
    '#type' => 'fieldset',
292
    '#title' => t('Landscape'),
293
    '#description' => t('<h4>Landscape tablet <span class="field-description-info">(wide)</span></h4>'),
294
    '#collapsible' => TRUE,
295
    '#collapsed' => TRUE,
296
  );
297
298
  // Tablet landscape Layout options
299
  $form['layout']['tablet']['landscape']['tablet-landscape-layout-wrapper'] = array(
300
    '#type' => 'fieldset',
301
    '#title' => t('Choose sidebar layout'),
302
  );
303
304
  // Options
305
  $form['layout']['tablet']['landscape']['tablet-landscape-layout-wrapper']['tablet_landscape_layout'] = array(
306 85ad3d82 Assos Assos
    '#type' => 'radios',
307 d7f58da2 Florent Torregrosa
    '#title' => t('<strong>Choose sidebar positions</strong>'),
308
    '#default_value' => str_replace('-', '_', theme_get_setting('tablet_landscape_layout')),
309
    '#options' => $tablet_landscape_options,
310
  );
311
312
  // Sidebars
313
  $form['layout']['tablet']['landscape']['tablet-landscape-sidebar-width-wrapper'] = array(
314
    '#type' => 'fieldset',
315
    '#title' => t('Set sidebar widths'),
316
    '#description' => t('<strong>Set the width of each sidebar</strong>'),
317
  );
318
319
  // Units
320
  $form['layout']['tablet']['landscape']['tablet-landscape-sidebar-width-wrapper']['tablet_landscape_sidebar_unit'] = array(
321
    '#type' => 'select',
322
    '#title' => t('Unit'),
323
    '#default_value' => theme_get_setting('tablet_landscape_sidebar_unit'),
324
    '#options' => $unit_options,
325
  );
326
327
  // Sidebar first
328
  $form['layout']['tablet']['landscape']['tablet-landscape-sidebar-width-wrapper']['tablet_landscape_sidebar_first'] = array(
329
    '#type' => 'textfield',
330
    '#title' => t('First sidebar'),
331
    '#default_value' => check_plain(theme_get_setting('tablet_landscape_sidebar_first')),
332
    '#size' => 4,
333
    '#maxlenght' => 4,
334
    '#states' => array(
335
      'required' => array(
336
        array('input[name="tablet_landscape_layout"]' => array('value' => 'three_col_grail')),
337
        array('input[name="tablet_landscape_layout"]' => array('value' => 'two_sidebars_left')),
338
        array('input[name="tablet_landscape_layout"]' => array('value' => 'two_sidebars_left_stack')),
339
        array('input[name="tablet_landscape_layout"]' => array('value' => 'two_sidebars_right')),
340
        array('input[name="tablet_landscape_layout"]' => array('value' => 'two_sidebars_right_stack')),
341
      ),
342 85ad3d82 Assos Assos
    ),
343
  );
344 d7f58da2 Florent Torregrosa
345
  // Sidebar second
346
  $form['layout']['tablet']['landscape']['tablet-landscape-sidebar-width-wrapper']['tablet_landscape_sidebar_second'] = array(
347 85ad3d82 Assos Assos
    '#type' => 'textfield',
348 d7f58da2 Florent Torregrosa
    '#title' => t('Second sidebar'),
349
    '#default_value' => check_plain(theme_get_setting('tablet_landscape_sidebar_second')),
350
    '#size' => 4,
351
    '#maxlenght' => 4,
352
    '#states' => array(
353
      'invisible' => array(
354
        array('input[name="tablet_landscape_layout"]' => array('value' => 'two_sidebars_left_stack')),
355
        array('input[name="tablet_landscape_layout"]' => array('value' => 'two_sidebars_right_stack')),
356
      ),
357
      'required' => array(
358
        array('input[name="tablet_landscape_layout"]' => array('value' => 'three_col_grail')),
359
        array('input[name="tablet_landscape_layout"]' => array('value' => 'two_sidebars_left')),
360
        array('input[name="tablet_landscape_layout"]' => array('value' => 'two_sidebars_right')),
361
      ),
362
    ),
363
  );
364
365
  // Conditional messages for sidebar layouts
366
  $form['layout']['tablet']['landscape']['tablet-landscape-sidebar-width-wrapper']['tablet-landscape-sidebar-message-wrapper'] = array(
367
    '#type' => 'fieldset',
368
    '#states' => array(
369
      'invisible' => array(
370
        array('input[name="tablet_landscape_layout"]' => array('value' => 'three_col_grail')),
371
        array('input[name="tablet_landscape_layout"]' => array('value' => 'two_sidebars_left')),
372
        array('input[name="tablet_landscape_layout"]' => array('value' => 'two_sidebars_right')),
373
      ),
374
    ),
375 85ad3d82 Assos Assos
  );
376 d7f58da2 Florent Torregrosa
  $form['layout']['tablet']['landscape']['tablet-landscape-sidebar-width-wrapper']['tablet-landscape-sidebar-message-wrapper']['message'] = array(
377
    '#markup' => t('<div class="description">In this layout <em>Second sidebar</em> wraps below.</div>'),
378
  );
379
380
  // Page width
381
  $form['layout']['tablet']['landscape']['tablet-landscape-page-width-wrapper'] = array(
382
    '#type' => 'fieldset',
383
    '#title' => t('Set the page width'),
384
    '#description' => t('<strong>Set the page width</strong>'),
385
  );
386
387
  // Unit
388
  $form['layout']['tablet']['landscape']['tablet-landscape-page-width-wrapper']['tablet_landscape_page_unit'] = array(
389
    '#type' => 'select',
390
    '#title' => t('Unit'),
391
    '#default_value' => theme_get_setting('tablet_landscape_page_unit'),
392
    '#options' => $unit_options,
393
  );
394
395
  // Width
396
  $form['layout']['tablet']['landscape']['tablet-landscape-page-width-wrapper']['tablet_landscape_page_width'] = array(
397
    '#type'  => 'textfield',
398
    '#title' => t('Page width'),
399
    '#default_value' => check_plain(theme_get_setting('tablet_landscape_page_width')),
400
    '#size' => 4,
401
    '#maxlenght' => 4,
402
    '#required' => TRUE,
403
  );
404
405
  // Media Queries
406
  $form['layout']['tablet']['landscape']['tablet-landscape-media-queries-wrapper'] = array(
407
    '#type' => 'fieldset',
408
    '#title' => t('Tablet Landscape Media Queries'),
409
    '#weight' => 1,
410
    '#attributes' => array(
411
      'class' => array(
412
        'at-media-queries',
413
      ),
414
    ),
415
  );
416
417
  // Media query
418
  $form['layout']['tablet']['landscape']['tablet-landscape-media-queries-wrapper']['tablet_landscape_media_query'] = array(
419 85ad3d82 Assos Assos
    '#type' => 'textfield',
420 d7f58da2 Florent Torregrosa
    '#title' => t('Media query for this layout'),
421
    '#default_value' => check_plain(theme_get_setting('tablet_landscape_media_query')),
422
    '#description' => t('Do not include @media, it\'s included automatically.'),
423
    '#size' => 100,
424
    '#required' => TRUE,
425 85ad3d82 Assos Assos
  );
426 d7f58da2 Florent Torregrosa
427
428
  /* *****************
429
   * Tablet portrait
430
   * *************** */
431
432
  $form['layout']['tablet']['portrait'] = array(
433
    '#type' => 'fieldset',
434
    '#title' => t('Portrait'),
435
    '#description' => t('<h4>Portrait tablet <span class="field-description-info">(narrow)</span></h4>'),
436
    '#collapsible' => TRUE,
437
    '#collapsed' => TRUE,
438
  );
439
440
  // Tablet portrait Layout options
441
  $form['layout']['tablet']['portrait']['tablet-portrait-layout-wrapper'] = array(
442
    '#type' => 'fieldset',
443
    '#title' => t('Choose sidebar layout'),
444
  );
445
446
  // Options
447
  $form['layout']['tablet']['portrait']['tablet-portrait-layout-wrapper']['tablet_portrait_layout'] = array(
448
    '#type' => 'radios',
449
    '#title' => t('<strong>Choose sidebar positions</strong>'),
450
    '#default_value' => str_replace('-', '_', theme_get_setting('tablet_portrait_layout')),
451
    '#options' => $tablet_portrait_options,
452
  );
453
454
  // Tablet portrait Sidebars
455
  $form['layout']['tablet']['portrait']['tablet-portrait-sidebar-width-wrapper'] = array(
456
    '#type' => 'fieldset',
457
    '#title' => t('Set sidebar widths'),
458
    '#description' => t('<strong>Set the width of each sidebar</strong>'),
459
    '#states' => array(
460
      'invisible' => array('input[name="tablet_portrait_layout"]' => array('value' => 'one_col_stack')),
461
    ),
462
  );
463
464
  // Units
465
  $form['layout']['tablet']['portrait']['tablet-portrait-sidebar-width-wrapper']['tablet_portrait_sidebar_unit'] = array(
466
    '#type' => 'select',
467
    '#title' => t('Unit'),
468
    '#default_value' => theme_get_setting('tablet_portrait_sidebar_unit'),
469
    '#options' => $unit_options,
470
  );
471
472
  // Sidebar first
473
  $form['layout']['tablet']['portrait']['tablet-portrait-sidebar-width-wrapper']['tablet_portrait_sidebar_first'] = array(
474
    '#type' => 'textfield',
475
    '#title' => t('First sidebar'),
476
    '#default_value' => check_plain(theme_get_setting('tablet_portrait_sidebar_first')),
477
    '#size' => 4,
478
    '#maxlenght' => 4,
479
    '#states' => array(
480
      'invisible' => array(
481
        array('input[name="tablet_portrait_layout"]' => array('value' => 'one_col_stack')),
482
      ),
483
      'required' => array(
484
        array('input[name="tablet_portrait_layout"]' => array('value' => 'one_col_vert')),
485
        array('input[name="tablet_portrait_layout"]' => array('value' => 'two_sidebars_left_stack')),
486
        array('input[name="tablet_portrait_layout"]' => array('value' => 'two_sidebars_right_stack')),
487
      ),
488
    ),
489
  );
490
491
  // Sidebar second
492
  $form['layout']['tablet']['portrait']['tablet-portrait-sidebar-width-wrapper']['tablet_portrait_sidebar_second'] = array(
493
    '#type' => 'textfield',
494
    '#title' => t('Second sidebar'),
495
    '#default_value' => check_plain(theme_get_setting('tablet_portrait_sidebar_second')),
496
    '#size' => 4,
497
    '#maxlenght' => 4,
498
    '#states' => array(
499
      'invisible' => array(
500
        array('input[name="tablet_portrait_layout"]' => array('value' => 'one_col_stack')),
501
        array('input[name="tablet_portrait_layout"]' => array('value' => 'two_sidebars_left_stack')),
502
        array('input[name="tablet_portrait_layout"]' => array('value' => 'two_sidebars_right_stack')),
503
      ),
504
      'required' => array(
505
        array('input[name="tablet_portrait_layout"]' => array('value' => 'one_col_vert')),
506
      ),
507
    ),
508 85ad3d82 Assos Assos
  );
509
510 d7f58da2 Florent Torregrosa
  // Conditional messages for sidebar layouts
511
  $form['layout']['tablet']['portrait']['tablet-portrait-sidebar-width-wrapper']['tablet-portrait-sidebar-message-wrapper'] = array(
512
    '#type' => 'fieldset',
513
    '#states' => array(
514
      'invisible' => array(
515
        array('input[name="tablet_portrait_layout"]' => array('value' => 'one_col_vert')),
516
        array('input[name="tablet_portrait_layout"]' => array('value' => 'one_col_stack')),
517
      ),
518
    ),
519
  );
520
  $form['layout']['tablet']['portrait']['tablet-portrait-sidebar-width-wrapper']['tablet-portrait-sidebar-message-wrapper']['message'] = array(
521
    '#markup' => t('<div class="description">In this layout <em>Second sidebar</em> wraps below.</div>'),
522
  );
523
524
  // Tablet portrait Page width
525
  $form['layout']['tablet']['portrait']['tablet-portrait-page-width-wrapper'] = array(
526
    '#type' => 'fieldset',
527
    '#title' => t('Set the page width'),
528
    '#description' => t('<strong>Set the page width</strong>'),
529
  );
530
531
  // Unit
532
  $form['layout']['tablet']['portrait']['tablet-portrait-page-width-wrapper']['tablet_portrait_page_unit'] = array(
533
    '#type' => 'select',
534
    '#title' => t('Unit'),
535
    '#default_value' => theme_get_setting('tablet_portrait_page_unit'),
536
    '#options' => $unit_options,
537
  );
538
539
  // Width
540
  $form['layout']['tablet']['portrait']['tablet-portrait-page-width-wrapper']['tablet_portrait_page_width'] = array(
541
    '#type'  => 'textfield',
542
    '#title' => t('Page width'),
543
    '#default_value' => check_plain(theme_get_setting('tablet_portrait_page_width')),
544
    '#size' => 4,
545
    '#maxlenght' => 4,
546
    '#required' => TRUE,
547
  );
548
549
  // Tablet portrait Media queries
550
  $form['layout']['tablet']['portrait']['tablet-portrait-media-queries-wrapper'] = array(
551
    '#type' => 'fieldset',
552
    '#title' => t('Tablet Portrait Media Queries'),
553
    '#weight' => 1,
554
    '#attributes' => array(
555
      'class' => array('at-media-queries'),
556
    ),
557
  );
558
559
  // Media query
560
  $form['layout']['tablet']['portrait']['tablet-portrait-media-queries-wrapper']['tablet_portrait_media_query'] = array(
561
    '#type' => 'textfield',
562
    '#title' => t('Media query for this layout'),
563
    '#default_value' => check_plain(theme_get_setting('tablet_portrait_media_query')),
564
    '#description' => t('Do not include @media, it\'s included automatically.'),
565
    '#size' => 100,
566
    '#required' => TRUE,
567
  );
568
  /* ****************************************************************************
569
   *
570
   * Smalltouch
571
   *
572
   * ************************************************************************** */
573
574
  $form['layout']['smalltouch'] = array(
575
    '#type' => 'fieldset',
576
    '#title' => t('Smalltouch Sidebar Layout'),
577
    '#description' => t('<h3>Smalltouch Layout</h3><p>Smalltouch devices such as iPhone, Android and Windows phones have two orientations - landscape and portrait, which can also be thought of as wide and arrow smalltouch devices. You can configure a layout for landscape orientation only - portrait orientation (narrow) will always display in one column (all regions full width and stacked) with sidebars below the main content.</p>'),
578
    '#attributes' => array(
579
      'class' => array('mayo-layout-form'),
580
    ),
581
    '#collapsible' => TRUE,
582
    '#collapsed' => TRUE,
583
  );
584
585
  /* **********************
586
   * Smalltouch landscape
587
   * ******************** */
588
589
  $form['layout']['smalltouch']['landscape'] = array(
590
    '#type' => 'fieldset',
591
    '#title' => t('Landscape'),
592
    '#description' => t('<h4>Landscape smalltouch <span class="field-description-info">(wide)</span></h4>'),
593
    '#collapsible' => TRUE,
594
    '#collapsed' => TRUE,
595
  );
596
597
  $form['layout']['smalltouch']['landscape']['smalltouch-landscape-layout-wrapper'] = array(
598
    '#type' => 'fieldset',
599
    '#title' => t('Choose sidebar layout'),
600
  );
601
602
  $form['layout']['smalltouch']['landscape']['smalltouch-landscape-layout-wrapper']['smalltouch_landscape_layout'] = array(
603
    '#type' => 'radios',
604
    '#title' => t('<strong>Choose sidebar positions</strong>'),
605
    '#default_value' => theme_get_setting('smalltouch_landscape_layout') ? str_replace('-', '_', theme_get_setting('smalltouch_landscape_layout')) : str_replace('-', '_', theme_get_setting('smartphone_landscape_layout')),
606
    '#options' => $smalltouch_landscape_options,
607
  );
608
609
  $form['layout']['smalltouch']['landscape']['smalltouch-landscape-sidebar-width-wrapper'] = array(
610
    '#type' => 'fieldset',
611
    '#title' => t('Set sidebar widths'),
612
    '#description' => t('<strong>Set the width of each sidebar</strong>'),
613
    '#states' => array(
614
      '!visible' => array('input[name="smalltouch_landscape_layout"]' => array('value' => 'one_col_stack')),
615
    ),
616
  );
617
618
  $form['layout']['smalltouch']['landscape']['smalltouch-landscape-sidebar-width-wrapper']['smalltouch_landscape_sidebar_unit'] = array(
619
    '#type' => 'select',
620
    '#title' => t('Unit'),
621
    '#default_value' => theme_get_setting('smalltouch_landscape_sidebar_unit') ? theme_get_setting('smalltouch_landscape_sidebar_unit') : theme_get_setting('smartphone_landscape_sidebar_unit'),
622
    '#options' => $unit_options,
623
  );
624 85ad3d82 Assos Assos
625 d7f58da2 Florent Torregrosa
  $form['layout']['smalltouch']['landscape']['smalltouch-landscape-sidebar-width-wrapper']['smalltouch_landscape_sidebar_first'] = array(
626
    '#type' => 'textfield',
627
    '#title' => t('First sidebar'),
628
    '#default_value' => theme_get_setting('smalltouch_landscape_sidebar_first') ? check_plain(theme_get_setting('smalltouch_landscape_sidebar_first')) : check_plain(theme_get_setting('smartphone_landscape_sidebar_first')),
629
    '#size' => 4,
630
    '#maxlenght' => 4,
631
    '#states' => array(
632
      'required' => array('input[name="smalltouch_landscape_layout"]' => array('value' => 'one_col_vert')),
633
    ),
634
  );
635
636
  $form['layout']['smalltouch']['landscape']['smalltouch-landscape-sidebar-width-wrapper']['smalltouch_landscape_sidebar_second'] = array(
637
    '#type' => 'textfield',
638
    '#title' => t('Second sidebar'),
639
    '#default_value' => theme_get_setting('smalltouch_landscape_sidebar_second') ? check_plain(theme_get_setting('smalltouch_landscape_sidebar_second')) : check_plain(theme_get_setting('smartphone_landscape_sidebar_second')),
640
    '#size' => 4,
641
    '#maxlenght' => 4,
642
    '#states' => array(
643
      'required' => array('input[name="smalltouch_landscape_layout"]' => array('value' => 'one_col_vert')),
644
    ),
645
  );
646
647
  $form['layout']['smalltouch']['landscape']['smalltouch-landscape-media-queries-wrapper'] = array(
648
    '#type' => 'fieldset',
649
    '#title' => t('Smalltouch Landscape Media Queries'),
650
    '#weight' => 1,
651
    '#attributes' => array(
652
      'class' => array('at-media-queries'),
653
    ),
654
  );
655
656
  $form['layout']['smalltouch']['landscape']['smalltouch-landscape-media-queries-wrapper']['smalltouch_landscape_media_query'] = array(
657
    '#type' => 'textfield',
658
    '#title' => t('Media query for this layout'),
659
    '#default_value' => theme_get_setting('smalltouch_landscape_media_query') ? check_plain(theme_get_setting('smalltouch_landscape_media_query')) : check_plain(theme_get_setting('smartphone_landscape_media_query')),
660
    '#description' => t('Do not include @media, it\'s included automatically.'),
661
    '#size' => 100,
662
    //'#required' => TRUE,
663
  );
664
665
  // Pass hidden values to the sumbit function, these values are required but the user can't change them via the UI
666
  $form['layout']['smalltouch']['landscape']['hidden']['smalltouch_landscape_page_width'] = array(
667
    '#type' => 'hidden',
668
    '#default_value' => theme_get_setting('smalltouch_landscape_page_width') ? check_plain(theme_get_setting('smalltouch_landscape_page_width')) : check_plain(theme_get_setting('smartphone_landscape_page_width')),
669
  );
670
  $form['layout']['smalltouch']['landscape']['hidden']['smalltouch_landscape_page_unit'] = array(
671
    '#type' => 'hidden',
672
    '#default_value' => theme_get_setting('smalltouch_landscape_page_unit') ? theme_get_setting('smalltouch_landscape_page_unit') : theme_get_setting('smartphone_landscape_page_unit'),
673
  );
674
675
  /* *********************
676
   * Smalltouch portrait
677
   * ******************* */
678
679
  $form['layout']['smalltouch']['portrait'] = array(
680
    '#type' => 'fieldset',
681
    '#title' => t('Portrait'),
682
    '#description' => t('<h4>Portrait smalltouch <span class="field-description-info">(narrow)</span></h4><div class="smalltouch-portrait-layout">One column</div><p>The smalltouch portrait layout always displays in one column with sidebars stacked horizontally below the main content. All widths are always 100%.</p>'),
683
    '#collapsible' => TRUE,
684
    '#collapsed' => TRUE,
685
  );
686
687
  $form['layout']['smalltouch']['portrait']['smalltouch-portrait-media-queries-wrapper'] = array(
688
    '#type' => 'fieldset',
689
    '#title' => t('Smalltouch Portrait Media Queries'),
690
    '#weight' => 1,
691
    '#attributes' => array(
692
      'class' => array('at-media-queries'),
693
    ),
694
  );
695
696
  $form['layout']['smalltouch']['portrait']['smalltouch-portrait-media-queries-wrapper']['smalltouch_portrait_media_query'] = array(
697
    '#type' => 'textfield',
698
    '#title' => t('Media query for this layout'),
699
    '#default_value' => theme_get_setting('smalltouch_portrait_media_query') ? check_plain(theme_get_setting('smalltouch_portrait_media_query')) : check_plain(theme_get_setting('smartphone_portrait_media_query')),
700
    '#description' => t('Do not include @media, it\'s included automatically.'),
701
    '#size' => 100,
702
  );
703
704
  // Pass hidden values to the sumbit function, these values are required but the user can't change them via the UI
705
  $form['layout']['smalltouch']['portrait']['hidden']['smalltouch_portrait_page_width'] = array(
706
    '#type' => 'hidden',
707
    '#default_value' => theme_get_setting('smalltouch_portrait_page_width') ? check_plain(theme_get_setting('smalltouch_portrait_page_width')) : check_plain(theme_get_setting('smartphone_portrait_page_width')),
708
  );
709
710
  $form['layout']['smalltouch']['portrait']['hidden']['smalltouch_portrait_page_unit'] = array(
711
    '#type' => 'hidden',
712
    '#default_value' => theme_get_setting('smalltouch_portrait_page_unit') ? theme_get_setting('smalltouch_portrait_page_unit') : theme_get_setting('smartphone_portrait_page_unit'),
713
  );
714
715
  $form['layout']['smalltouch']['portrait']['hidden']['smalltouch_portrait_sidebar_first'] = array(
716
    '#type' => 'hidden',
717
    '#default_value' => theme_get_setting('smalltouch_portrait_sidebar_first') ? check_plain(theme_get_setting('smalltouch_portrait_sidebar_first')) : check_plain(theme_get_setting('smartphone_portrait_sidebar_first')),
718
  );
719
720
  $form['layout']['smalltouch']['portrait']['hidden']['smalltouch_portrait_sidebar_second'] = array(
721
    '#type' => 'hidden',
722
    '#default_value' => theme_get_setting('smalltouch_portrait_sidebar_second') ? check_plain(theme_get_setting('smalltouch_portrait_sidebar_second')) : check_plain(theme_get_setting('smartphone_portrait_sidebar_second')),
723
  );
724
725
  $form['layout']['smalltouch']['portrait']['hidden']['smalltouch_portrait_sidebar_unit'] = array(
726
    '#type' => 'hidden',
727
    '#default_value' => theme_get_setting('smalltouch_portrait_sidebar_unit') ? check_plain(theme_get_setting('smalltouch_portrait_sidebar_unit')) : check_plain(theme_get_setting('smartphone_portrait_sidebar_unit')),
728
  );
729
730
  $form['layout']['smalltouch']['portrait']['hidden']['smalltouch_portrait_layout'] = array(
731
    '#type' => 'hidden',
732
    '#default_value' => theme_get_setting('smalltouch_portrait_layout') ? str_replace('-', '_', theme_get_setting('smalltouch_portrait_layout')) : str_replace('-', '_', theme_get_setting('smartphone_portrait_layout')),
733
  );
734
735
   /* --------------- Style settings -------------- */
736 85ad3d82 Assos Assos
  $form['style'] = array(
737
    '#type' => 'fieldset',
738
    '#title' => t('Style settings'),
739
    '#collapsible' => TRUE,
740
    '#collapsed' => TRUE,
741
  );
742 d7f58da2 Florent Torregrosa
  $form['style']['legacy_superfish_styles'] = array(
743
    '#type' => 'checkbox',
744
    '#title' => t('Use old legacy MAYO styles for Superfish.'),
745
    '#default_value' => theme_get_setting('legacy_superfish_styles'),
746
    '#description' => t('Check here if you want to add mayo-superfish.css.'),
747
  );
748
  $form['style']['superfish_note'] = array(
749
    '#type' => 'item',
750
    '#title' => t('Note:'),
751
    '#markup' => t('Use this only when coming from the older non-responsive versions of MAYO
752
     and your Superfish menu is broken without it. If you haven\'t been using Superfish or are
753
     installing MAYO for the first time you shouldn\'t need it and can leave it unchecked.'),
754
  );
755 85ad3d82 Assos Assos
  $form['style']['round_corners'] = array(
756
    '#type' => 'select',
757
    '#title' => t('Content box round corners'),
758
    '#default_value' => theme_get_setting('round_corners'),
759 d7f58da2 Florent Torregrosa
    '#description' => t('Make the corner of sidebar block and/or node rounded.'),
760 85ad3d82 Assos Assos
    '#options' => array(
761 d7f58da2 Florent Torregrosa
      'rc-0' => t('No round corners'),
762
      'rc-1' => t('Sidebar block only'),
763
      'rc-2' => t('Node only'),
764
      'rc-3' => t('Both sidebar block and node'),
765 85ad3d82 Assos Assos
    ),
766 70a4c29b Assos Assos
    '#suffix' => '<img src="' . file_create_url(drupal_get_path('theme', 'mayo') . '/images/round-corners.png') . '" /><br />',
767 85ad3d82 Assos Assos
  );
768
769
  $form['style']['menubar_style'] = array(
770
    '#type' => 'radios',
771
    '#title' => t('Menubar style'),
772
    '#default_value' => theme_get_setting('menubar_style'),
773
    '#options' => array(
774
      1 => t('1. Normal (based on the colors specified by the color set)'),
775
      2 => t('2. Gloss black image background.'),
776
    ),
777 70a4c29b Assos Assos
    '#suffix' => '<img src="' . file_create_url(drupal_get_path('theme', 'mayo') . '/images/menubar-type.png') . '" />',
778 85ad3d82 Assos Assos
  );
779
  $form['style']['note'] = array(
780
    '#type' => 'item',
781
    '#title' => t('Note:'),
782
    '#markup' => t('When the menubar type 2 is selected, the menu text color, menu highlight color, menu divier color from the color set are ignored and the fixed colors that match to the menubar are used instead.  Besides, highlight color and menu divider color from the color set are still used for other places such as tabs and sub-menubar for superfish and nice_menus menu.'),
783
  );
784
785 d7f58da2 Florent Torregrosa
  $form['style']['menubar_background'] = array(
786
    '#type' => 'checkbox',
787
    '#title' => t('Allow Menubar background color.'),
788
    '#default_value' => theme_get_setting('menubar_background'),
789
    '#description' => t('Add your own hex background color below.'),
790
  );
791
792
  $form['style']['menubar_bg_value'] = array(
793
    '#type' => 'textfield',
794
    '#title' => t('Meubar background color'),
795
    '#default_value' => theme_get_setting('menubar_bg_value'),
796
    '#size' => 7,
797
    '#maxlength' => 7,
798
    '#description' => t('Specify the background color for the menubar. This setting is used only when the <em>Allow Meubar background</em> option is checked above.'),
799
  );
800
801
  /* --------------- Advanced header settings -------------- */
802 85ad3d82 Assos Assos
  $form['adv_header'] = array(
803
    '#type' => 'fieldset',
804
    '#title' => t('Advanced header settings'),
805
    '#collapsible' => TRUE,
806
    '#collapsed' => TRUE,
807
  );
808
  $form['adv_header']['header_searchbox'] = array(
809
    '#type' => 'checkbox',
810
    '#title' => t('Add search form to the header'),
811
    '#default_value' => theme_get_setting('header_searchbox'),
812
    '#description' => t('Check here if you want to add search form block to the right side of the header.'),
813
  );
814
  $form['adv_header']['header_fontsizer'] = array(
815
    '#type' => 'checkbox',
816
    '#title' => t('Add font resizing controls'),
817
    '#default_value' => theme_get_setting('header_fontsizer'),
818
    '#description' => t('Check here if you want to add font resizing controls at side of the header.'),
819
  );
820
  $form['adv_header']['header_border_width'] = array(
821
    '#type' => 'textfield',
822
    '#title' => t('Header border width'),
823
    '#default_value' => theme_get_setting('header_border_width'),
824
    '#size' => 12,
825
    '#maxlength' => 8,
826
    '#description' => t('Specify the header border width in px. Note that header border is not drawn when you use header background image or when you use layout style 2.'),
827
  );
828
  $form['adv_header']['searchbox_size'] = array(
829
    '#type' => 'textfield',
830
    '#title' => t('Search form textfield width'),
831
    '#default_value' => theme_get_setting('searchbox_size'),
832
    '#size' => 10,
833
    '#maxlength' => 6,
834
    '#description' => t('Specify the width of the text field of the search forms in characters. This size is also applied for the search form in a block. NOTE: do not add px since this is not px size.'),
835
  );
836
  $form['adv_header']['header_bg_file'] = array(
837
    '#type' => 'textfield',
838
    '#title' => t('URL of the header background image'),
839
    '#default_value' => theme_get_setting('header_bg_file'),
840
    '#description' => t('If the background image is bigger than the header area, it is clipped. If it\'s smaller than the header area, it is tiled to fill the header area. To remove the background image, blank this field and save the settings.'),
841
    '#size' => 40,
842
    '#maxlength' => 120,
843
  );
844
  $form['adv_header']['header_bg'] = array(
845
    '#type' => 'file',
846
    '#title' => t('Upload header background image'),
847
    '#size' => 40,
848
    '#attributes' => array('enctype' => 'multipart/form-data'),
849
    '#description' => t('If you don\'t jave direct access to the server, use this field to upload your header background image'),
850
    '#element_validate' => array('mayo_header_bg_validate'),
851
  );
852
  $form['adv_header']['header_bg_alignment'] = array(
853
    '#type' => 'select',
854
    '#title' => t('Header backgeround image alignment'),
855
    '#default_value' => theme_get_setting('header_bg_alignment'),
856
    '#description' => t('Select the alignment of the header background image.'),
857
    '#options' => array(
858
      'top left' => t('Top left'),
859
      'top center' => t('Top center'),
860
      'top right' => t('Top right'),
861
      'center left' => t('Center left'),
862
      'center center' => t('Center center'),
863
      'center right' => t('Center right'),
864
      'bottom left' => t('Bottom left'),
865
      'bottom center' => t('Bottom center'),
866
      'bottom right' => t('Bottom right'),
867
    ),
868
  );
869
  $form['adv_header']['header_watermark'] = array(
870
    '#type' => 'select',
871
    '#title' => t('Header watermark'),
872
    '#default_value' => theme_get_setting('header_watermark'),
873
    '#description' => t('Select the watermark you want from the list below. The sample below is scaled down and the actual size of the watermark is bigger.'),
874
    '#options' => array(
875
      0 => t('-None-'),
876
      1 => t('Pixture'),
877
      2 => t('Wave'),
878
      3 => t('Bubble'),
879
      4 => t('Flower'),
880
      5 => t('Star'),
881
      6 => t('Metal'),
882
    ),
883 70a4c29b Assos Assos
    '#suffix' => '<img src="' . file_create_url(drupal_get_path('theme', 'mayo') . '/images/watermark-sample.png') . '" /><br />',
884 85ad3d82 Assos Assos
  );
885
886 d7f58da2 Florent Torregrosa
  /* --------------- Misellanenous settings -------------- */
887 85ad3d82 Assos Assos
  $form['misc'] = array(
888
    '#type' => 'fieldset',
889
    '#title' => t('Miscellaneous settings'),
890
    '#collapsible' => TRUE,
891
    '#collapsed' => TRUE,
892
  );
893
  $form['misc']['display_breadcrumb'] = array(
894
    '#type' => 'checkbox',
895
    '#title' => t('Display breadcrumb'),
896
    '#default_value' => theme_get_setting('display_breadcrumb'),
897
    '#description' => t('Check here if you want to display breadcrumb.'),
898 caf16a48 Assos Assos
  );
899
    $form['misc']['homeless_breadcrumb'] = array(
900
    '#type' => 'checkbox',
901
    '#title' => t('Display Mayo style breadcrumb'),
902
    '#default_value' => theme_get_setting('homeless_breadcrumb'),
903
    '#description' => t('Check here if you want to display breadcrumb with \'Home\' link removed and \'>\' seperator at end.'),
904 85ad3d82 Assos Assos
  );
905
  $form['misc']['dark_messages'] = array(
906
    '#type' => 'checkbox',
907
    '#title' => t('Use dark message colors'),
908
    '#default_value' => theme_get_setting('dark_messages'),
909 578c6d8f Assos Assos
    '#return_value' => 'dark-messages',
910 85ad3d82 Assos Assos
    '#description' => t('Check here if you use the dark color set. Colors for the status/warning/error messages are adjusted.'),
911
  );
912
913 d7f58da2 Florent Torregrosa
  /*
914
   * Originally posted by dvessel (http://drupal.org/user/56782).
915
   * The following will be processed even if the theme is inactive.
916
   * If you are on a theme specific settings page but it is not an active
917
   * theme (example.com/admin/apearance/settings/THEME_NAME), it will
918
   * still be processed.
919
   *
920
   * Build a list of themes related to the theme specific form. If the form
921
   * is specific to a sub-theme, all parent themes leading to it will have
922
   * hook_form_theme_settings invoked. For example, if a theme named
923
   * 'grandchild' has its settings form in focus, the following will be invoked.
924
   * - parent_form_theme_settings()
925
   * - child_form_theme_settings()
926
   * - grandchild_form_theme_settings()
927
   *
928
   * If 'child' was in focus it will invoke:
929
   * - parent_form_theme_settings()
930
   * - child_form_theme_settings()
931
   *
932
   *  @see http://drupal.org/node/943212
933
   */
934
  $form_themes = array();
935
  $themes = list_themes();
936
  $_theme = $GLOBALS['theme_key'];
937
  while (isset($_theme)) {
938
    $form_themes[$_theme] = $_theme;
939
    $_theme = isset($themes[$_theme]->base_theme) ? $themes[$_theme]->base_theme : NULL;
940
  }
941
  $form_themes = array_reverse($form_themes);
942
943
  foreach ($form_themes as $theme_key) {
944
    if (function_exists($form_settings = "{$theme_key}_form_theme_settings")) {
945
      $form_settings($form, $form_state);
946
    }
947
  }
948
949
  // Include custom form validation and submit functions
950
  require_once(drupal_get_path('theme', 'mayo') . '/inc/forms/mayo.validate.inc');
951
  require_once(drupal_get_path('theme', 'mayo') . '/inc/forms/mayo.submit.inc');
952
953
  // Custom validate and submit functions
954
  $form['#validate'][] = 'mayo_settings_validate';
955
  $form['#submit'][] = 'mayo_settings_submit';
956 85ad3d82 Assos Assos
}
957
958
/**
959
 * Check and save the uploaded header background image
960
 */
961
function mayo_header_bg_validate($element, &$form_state) {
962
  global $base_url;
963
964
  $validators = array('file_validate_is_image' => array());
965
  $file = file_save_upload('header_bg', $validators, "public://", FILE_EXISTS_REPLACE);
966
967
  if ($file) {
968
    // change file's status from temporary to permanent and update file database
969
    $file->status = FILE_STATUS_PERMANENT;
970
    file_save($file);
971
972
    $file_url = file_create_url($file->uri);
973
    $file_url = str_ireplace($base_url, '', $file_url);
974
975
    // set to form
976
    $form_state['values']['header_bg_file'] = $file_url;
977
  }
978
}
979
980
/**
981
 * Validate page width
982
 */
983
function mayo_page_width_validate($element, &$form_state) {
984
  if (!empty($element['#value'])) {
985
    $width = $element['#value'];
986
987
    // check if it is liquid (%) or fixed width (px)
988 d7f58da2 Florent Torregrosa
    if (preg_match("/(\d+)\s*%/", $width, $match)) {
989 85ad3d82 Assos Assos
      $num = intval($match[0]);
990 d7f58da2 Florent Torregrosa
      if (50 <= $num && $num <= 100) {
991 85ad3d82 Assos Assos
        return;
992
      }
993
      else {
994
        form_error($element, t('The width for the liquid layout must be a value between 50% and 100%.'));
995
      }
996
    }
997 d7f58da2 Florent Torregrosa
    elseif (preg_match("/(\d+)\s*px/", $width, $match)) {
998 85ad3d82 Assos Assos
      $num = intval($match[0]);
999 d7f58da2 Florent Torregrosa
      if (700 <= $num && $num < 1600) {
1000 85ad3d82 Assos Assos
        return;
1001
      }
1002
      else {
1003
        form_error($element, t('The width for the fixed layout must be a value between 700px and 1600px.'));
1004
      }
1005
    }
1006
  }
1007
}
1008
1009
/**
1010
 * Validate sidebar width
1011
 */
1012
function mayo_sidebar_width_validate($element, &$form_state) {
1013
  if (!empty($element['#value'])) {
1014
    $width = $element['#value'];
1015
1016
    // check if it is liquid (%) or fixed width (px)
1017 d7f58da2 Florent Torregrosa
    if (preg_match("/(\d+)\s*%/", $width, $match)) {
1018 85ad3d82 Assos Assos
      $num = intval($match[0]);
1019 d7f58da2 Florent Torregrosa
      if (15 <= $num && $num <= 40) {
1020 85ad3d82 Assos Assos
        return;
1021
      }
1022
      else {
1023
        form_error($element, t('The width of the sidebar must be a value between 15% and 40%.'));
1024
      }
1025
    }
1026 d7f58da2 Florent Torregrosa
    elseif (preg_match("/(\d+)\s*px/", $width, $match)) {
1027 85ad3d82 Assos Assos
      form_error($element, t('The width of the sidebar must be a value between 15% and 40%. Do not forget to add % character.'));
1028
    }
1029
  }
1030
}