Projet

Général

Profil

Paste
Télécharger (4,7 ko) Statistiques
| Branche: | Révision:

root / htmltest / sites / all / modules / sweaver / plugins / sweaver_plugin_palettes / sweaver_plugin_palettes.inc @ dc45a079

1
<?php
2

    
3
/**
4
 * @file
5
 * Palettes plugin.
6
 */
7
class sweaver_plugin_palettes extends sweaver_plugin {
8

    
9
  /**
10
   * Frontend css and js.
11
   */
12
  public function sweaver_form_css_js(&$inline_settings) {
13
    drupal_add_js(drupal_get_path('module', 'sweaver') .'/plugins/sweaver_plugin_palettes/sweaver_plugin_palettes.js');
14
  }
15

    
16
  /**
17
   * Preprocess page function.
18
   */
19
  function sweaver_preprocess_page(&$vars) {
20
    // Get active palette.
21
    $current_style = Sweaver::get_instance()->get_current_style();
22
    $active_palette = isset($current_style->palette) ? $current_style->palette : '';
23

    
24
    // Add the correct stylesheet if an active palette is found.
25
    if (!empty($active_palette)) {
26
      $theme_key = Sweaver::get_instance()->get_theme_key();
27
      $info = db_query("SELECT info FROM {system} WHERE name = :theme AND type ='theme'", array(':theme' => $theme_key))->fetchField();
28
      $theme_info = unserialize($info);
29

    
30
      if (isset($theme_info['sweaver']['palettes'][$active_palette])) {
31
        $css = drupal_get_path('theme', $theme_key) . '/' . $theme_info['sweaver']['palettes'][$active_palette]['file'];
32
        $settings = array(
33
          'weight' => 1001,
34
          'preprocess' => TRUE,
35
          'group' => CSS_THEME,
36
        );
37
        drupal_add_css($css, $settings);
38
      }
39
    }
40
  }
41

    
42
  /**
43
   * Frontend form.
44
   */
45
  public function sweaver_form() {
46

    
47
    $current_style = Sweaver::get_instance()->get_current_style();
48
    $active_palette = isset($current_style->palette) ? $current_style->palette : '';
49

    
50
    global $base_path;
51
    $form = array();
52
    $containers = '';
53
    $theme_key = Sweaver::get_instance()->get_theme_key();
54
    $theme_info = sweaver_get_theme_info($theme_key);
55

    
56
    if (isset($theme_info['sweaver']['palettes'])) {
57

    
58
      // Combine all properties in containers.
59
      $i = 0;
60
      $container_count = 1;
61
      $container_total = ceil(count($theme_info['sweaver']['palettes'])/5);
62

    
63
      $containers .= '<div class="container-wrapper">';
64

    
65
      foreach ($theme_info['sweaver']['palettes'] as $key => $palette) {
66
        if ($i == 0) {
67
          // Add first/last classes to the containers.
68
          $container_class = '';
69
          if ($container_count == 1) {
70
            $container_class .= ' container-first';
71
          }
72
          if ($container_total == $container_count) {
73
            $container_class .= ' container-last';
74
          }
75
          $containers .= '<div class="container '. $container_class .'"><div class="container-inner">';
76
        }
77
        // Add the actual content.
78
        $extra_class = ($active_palette == $key ? ' active' : '');
79
        $containers .= '<div id="palette-' . $key .'" class="colors clearfix'. $extra_class .'">';
80

    
81
        foreach ($palette['colors'] as $color) {
82
          $containers .= '<div class="color" style="background-color:'. $color .' !important">'. $color .'</div>';
83
        }
84
        $containers .= '<div class="name">'. $palette['name'] .'</div>';
85

    
86
        // Add a hidden field with the path to the css file.
87
        $containers .= '<div class="file" style="display: none;">'. $base_path . drupal_get_path('theme', $theme_key) .'/'. $palette['file'] .'</div>';
88

    
89
        // Add a hidden field with the key.
90
        $containers .= '<div class="key" style="display: none;">'. $key .'</div>';
91
        $containers .= '</div>';
92
        $i++;
93
        // close the container div if necessary.
94
        if ($i == 5) {
95
          $containers .= '</div></div>';
96
          $container_count++;
97
          $i = 0;
98
        }
99
      }
100
      if ($i != 0) {
101
        $containers .= '</div></div>';
102
      }
103
      $containers .= '</div>';
104

    
105
      // Add a hidden field that stores the active key to be saved.
106
      $form['sweaver_plugin_palette'] = array(
107
        '#type' => 'hidden',
108
        '#default_value' => $active_palette ? $active_palette : '',
109
      );
110

    
111
      $form['markup'] = array(
112
        '#markup' => $containers,
113
      );
114
    }
115

    
116
    return $form;
117
  }
118

    
119
  /**
120
   * Frontend form submit handler.
121
   */
122
  function sweaver_form_submit($form, &$form_state) {
123
    $clicked_button = $form_state['clicked_button']['#value'];
124

    
125
    if (($clicked_button == t('Save and continue') || $clicked_button == t('Save and publish') || $clicked_button == t('Publish style')) && isset($form_state['style_id']) && isset($form_state['values']['sweaver_plugin_palette'])) {
126
      db_query("UPDATE {sweaver_style_draft} set palette = :palette WHERE style_id = :style_id", array(':palette' => $form_state['values']['sweaver_plugin_palette'], ':style_id' => $form_state['style_id']));
127
      if ($form_state['publish']) {
128
        db_query("UPDATE {sweaver_style} set palette = :palette WHERE style_id = :style_id", array(':palette' => $form_state['values']['sweaver_plugin_palette'], ':style_id' => $form_state['style_id']));
129
      }
130
    }
131
  }
132
}