/[drupal]/contributions/modules/index/includes/index.form.inc
ViewVC logotype

Diff of /contributions/modules/index/includes/index.form.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1.2.12, Fri Apr 24 15:03:36 2009 UTC revision 1.1.2.13, Mon Oct 19 01:19:46 2009 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // $Id: index.form.inc,v 1.1.2.11 2009/04/23 21:30:29 xano Exp $  // $Id: index.form.inc,v 1.1.2.12 2009/04/24 15:03:36 xano Exp $
3    
4  /**  /**
5   * @file   * @file
# Line 19  function index_form_add($form_state, $ii Line 19  function index_form_add($form_state, $ii
19    index_load_include('classes');    index_load_include('classes');
20    index_load_include('view');    index_load_include('view');
21    
22    $index = new index((int)$iid);    $index = new index((int) $iid);
23      if (isset($form_state['values'])) {
24        index_form_add_populate_index($index, $form_state);
25      }
26    
27    $form = array(    $form = array(
28      '#redirect' => 'admin/build/index',      '#redirect' => 'admin/build/index',
# Line 51  function index_form_add($form_state, $ii Line 54  function index_form_add($form_state, $ii
54    $modes = index_modes_get();    $modes = index_modes_get();
55    $page_modes = $block_modes = array();    $page_modes = $block_modes = array();
56    foreach ($modes as $callback => $mode) {    foreach ($modes as $callback => $mode) {
57      if ($mode['page']) {      if ($mode['#page']) {
58        $page_modes[$callback] = $mode['title'];        $page_modes[$callback] = $mode['#title'];
59      }      }
60      if ($mode['block']) {      if ($mode['#block']) {
61        $block_modes[$callback] = $mode['title'];        $block_modes[$callback] = $mode['#title'];
62      }      }
63    }    }
64    $page_path = check_plain($index->page_path);    $page_path = check_plain($index->page_path);
# Line 67  function index_form_add($form_state, $ii Line 70  function index_form_add($form_state, $ii
70    $form['general']['create']['page_enabled'] = array(    $form['general']['create']['page_enabled'] = array(
71      '#type' => 'checkbox',      '#type' => 'checkbox',
72      '#title' => t('Page'),      '#title' => t('Page'),
73      '#default_value' => strlen($index->page_mode),      '#default_value' => $index->page_enabled,
74    );    );
75    $form['general']['create']['page_mode'] = array(    $form['general']['create']['page_mode'] = array(
76      '#type' => 'select',      '#type' => 'select',
# Line 80  function index_form_add($form_state, $ii Line 83  function index_form_add($form_state, $ii
83      '#type' => 'textfield',      '#type' => 'textfield',
84      '#title' => t('Path'),      '#title' => t('Path'),
85      '#description' => $page_path_description,      '#description' => $page_path_description,
86      '#default_value' => $page_path,      '#default_value' => $index->page_path,
87      '#maxlength' => '255',      '#maxlength' => '255',
88      '#element_validate' => array('index_path_validate'),      '#element_validate' => array('index_path_validate'),
89      '#suffix' => '</div>',      '#suffix' => '</div>',
# Line 88  function index_form_add($form_state, $ii Line 91  function index_form_add($form_state, $ii
91    $form['general']['create']['block_enabled'] = array(    $form['general']['create']['block_enabled'] = array(
92      '#type' => 'checkbox',      '#type' => 'checkbox',
93      '#title' => t('Block'),      '#title' => t('Block'),
94      '#default_value' => strlen($index->block_mode),      '#default_value' => $index->block_enabled,
95    );    );
96    $form['general']['create']['block_mode'] = array(    $form['general']['create']['block_mode'] = array(
97      '#type' => 'select',      '#type' => 'select',
# Line 100  function index_form_add($form_state, $ii Line 103  function index_form_add($form_state, $ii
103    );    );
104    
105    // Layers widget.    // Layers widget.
106    $form['layers'] = index_form_add_layers($form_state);    $form['layers'] = index_form_add_layers($index);
107      $form['layers']['update'] = array(
108        '#type' => 'submit',
109        '#value' => t('Update hierarchy'),
110        '#submit' => array('index_form_add_update'),
111      );
112    
   // Buttons.  
113    $form['buttons']['save'] = array(    $form['buttons']['save'] = array(
114      '#type' => 'submit',      '#type' => 'submit',
115      '#value' => t('Save')      '#value' => t('Save')
116    );    );
   $form['buttons']['update'] = array(  
     '#type' => 'submit',  
     '#value' => t('Update'),  
     '#submit' => array('index_form_add_update'),  
   );  
117    
118    return $form;    return $form;
119  }  }
# Line 119  function index_form_add($form_state, $ii Line 121  function index_form_add($form_state, $ii
121  /**  /**
122   * Validate handler for index_form_add().   * Validate handler for index_form_add().
123   */   */
124  function index_form_add_validate($form, &$form_state) {  function index_form_add_validate(array $form, array &$form_state) {
125    $values = $form_state['values'];    $values = $form_state['values'];
126      // Assure that this index is being created as at least a page or a block.
127    if (!$values['page_enabled'] && !$values['block_enabled']) {    if (!$values['page_enabled'] && !$values['block_enabled']) {
128      form_set_error('page_enabled', t('Please create this index as a page and/or a block.'));      form_set_error('page_enabled', t('Please create this index as a page and/or a block.'));
129      form_set_error('block_enabled');      form_set_error('block_enabled');
# Line 128  function index_form_add_validate($form, Line 131  function index_form_add_validate($form,
131    if ($values['page_enabled'] && !$values['page_path']) {    if ($values['page_enabled'] && !$values['page_path']) {
132      form_set_error('page_path', t('Please enter a path for the index page.'));      form_set_error('page_path', t('Please enter a path for the index page.'));
133    }    }
134      // Assure there are no empty levels in the hierarchy.
135      $set = FALSE;
136      for ($i = $values['layer_count'] - 1; $i >= 0; $i--) {
137        if ($values["layer_type_$i"] !== '0') {
138          $set = TRUE;
139        }
140        elseif ($set) {
141          form_set_error("layer_type_$i", t('Level !level in your hierarchy may not be empty if level !level_next is set.', array('!level' => $i + 1, '!level_next' => $i + 2)));
142        }
143      }
144  }  }
145    
146  /**  /**
147   * Submit handler for index_form_add().   * Submit handler for index_form_add().
148   */   */
149  function index_form_add_submit($form, &$form_state) {  function index_form_add_submit(array $form, array &$form_state) {
150    $values = $form_state['values'];    $values = $form_state['values'];
151    $page_mode = $values['page_enabled'] ? $values['page_mode'] : '';    index_load_include('classes');
152    $page_path = $values['page_enabled'] ? $values['page_path'] : '';    $index = new index($values['iid']);
153    $block_mode = $values['block_enabled'] ? $values['block_mode'] : '';    index_form_add_populate_index($index, $form_state);
   $index = new index(array(  
     'iid' => $values['iid'],  
     'title' => $values['title'],  
     'description' => $values['description'],  
     'page_mode' => $page_mode,  
     'page_path' => $page_path,  
     'block_mode' => $block_mode,  
   ));  
154    
155    if ($values['iid']) {    if ($values['iid']) {
156      $index->update();      $index->update();
# Line 158  function index_form_add_submit($form, &$ Line 163  function index_form_add_submit($form, &$
163  }  }
164    
165  /**  /**
166   * Update index_form_add() due to user submitted data.   * Update index_form_add() to process user submitted data.
167   */   */
168  function index_form_add_update($form, &$form_state) {  function index_form_add_update(array $form, array &$form_state) {
169    $form_state['rebuild'] = TRUE;    $form_state['rebuild'] = TRUE;
170  }  }
171    
172  /**  /**
173   * Theme index_form_add().   * Theme index_form_add().
174   */   */
175  function theme_index_form_add($form) {  function theme_index_form_add(array $form) {
176    $rows = array();    $rows = array();
177    for ($i = 0, $count = $form['layers']['#index_layer_count']; $i < $count; $i++) {    for ($i = 0; $i < $form['layers']['layer_count']['#value']; $i++) {
178      $layer = &$form['layers'][$i];      $layer = &$form['layers']['selectors'][$i];
179        $required = $layer["layer_type_$i"]['#required'] ? '<span class="form-required" title="' . t('This field is required.') . '">*</span>' : NULL;
180      $rows[] = array(      $rows[] = array(
181        drupal_render($layer['type']),        $i + 1 . $required,
182        drupal_render($layer['view']),        drupal_render($layer["layer_type_$i"]),
183        drupal_render($layer['count']),        drupal_render($layer["layer_count_$i"]),
184      );      );
185    }    }
186      $rows[] = array(
187        array(
188          'data' => drupal_render($form['layers']['update']),
189          'colspan' => 3,
190        ),
191      );
192    $header = array(    $header = array(
193      t('Data type'),      array(
194      t('Create as view'),        'data' => t('Data type'),
195          'colspan' => 2,
196        ),
197      t('Count only'),      t('Count only'),
198    );    );
199    $layers = theme('table', $header, $rows);    $layers = theme('table', $header, $rows, array(), t('Hierarchy'));
200    
201    return drupal_render($form['general']) . $layers . drupal_render($form);    return drupal_render($form['general']) . $layers . drupal_render($form);
202  }  }
203    
204  /**  /**
205     * Populate an index with form submitted data.
206     *
207     * @param $index index
208     *   The index object to populate.
209     * @param $form_state array
210     *   The $form_state of the form from which use get the data.
211     */
212    function index_form_add_populate_index(index $index, array $form_state) {
213      $values = $form_state['values'];
214      foreach ($values as $property => $value) {
215        if (isset($index->$property)) {
216          $index->$property = $values[$property];
217        }
218      }
219      $index->layers = array();
220      for ($i = 0; $i < $values['layer_count']; $i++) {
221        if ($values["layer_type_$i"] !== '0') {
222          $index->layers[$i] = array(
223            'type' => $values["layer_type_$i"],
224            'count' => $values["layer_count_$i"],
225          );
226        }
227      }
228    }
229    /**
230   * Create the layer building widget, by default a table.   * Create the layer building widget, by default a table.
231   */   */
232  function index_form_add_layers($form_state) {  function index_form_add_layers(index $index) {
233    // Fetch all data types and their relationships.    $data_types_info = index_data_types_get();
234    // NOTE: Replace dummy code. -Xano.    $default_option = array('<' . t('none') . '>');
235    $data_types = array('<none>', 'Terms', 'Vocabularies', 'Nodes', 'Users', 'Roles');    $parent_type = 0;
236      for ($i = 0; $i <= count($index->layers); $i++) {
237    $layers = array('#index_layer_count' => 1);      $current_options = array();
238    // Render existing layers.      if ($parent_type) {
239    // NOTE: To do. -Xano.        $current_data_types_info = array_intersect_key($data_types_info, $data_types_info[$parent_type]['#relations']);
240          foreach ($current_data_types_info as $data_type => $data_type_info) {
241    // Add a blank layer.          $current_options[$data_type] = $data_type_info['#title'];
242    $layers[] = array(        }
243      'type' => array(      }
244        '#type' => 'select',      else {
245        '#options' => $data_types,        foreach ($data_types_info as $data_type => $data_type_info) {
246      ),          $current_options[$data_type] = $data_type_info['#title'];
247      'view' => array(        }
248        '#type' => 'checkbox',      }
249        '#attributes' => array(  
250          // "Create as view" checkboxes don't affect the preview.      // Save this layer's type for the next one.
251          'class' => 'index-no-preview',      if (isset($index->layers[$i])) {
252          $parent_type = $index->layers[$i]['type'];
253          $count = $index->layers[$i]['count'];
254        }
255        else {
256          $parent_type = $count = 0;
257        }
258    
259        $layers['selectors'][] = array(
260          "layer_type_$i" => array(
261            '#type' => 'select',
262            '#options' => array_merge($default_option, $current_options),
263            '#default_value' => $parent_type,
264            '#required' => $i < count($index->layers),
265        ),        ),
266      ),        "layer_count_$i" => array(
267      'count' => array(          '#type' => 'checkbox',
268        '#type' => 'checkbox',          '#default_value' => $count,
269      ),        ),
270        );
271      }
272      $layers['layer_count'] = array(
273        '#type' => 'value',
274        '#value' => $i,
275    );    );
276    
277    return $layers;    return $layers;
# Line 229  function index_preview() { Line 286  function index_preview() {
286    $index = new index();    $index = new index();
287    $index->title = $_GET['title'];    $index->title = $_GET['title'];
288    $index->description = $_GET['description'];    $index->description = $_GET['description'];
289    $index->page_enabled = $_GET['page_enabled'];    $index->page_enabled = isset($_GET['page_enabled']) ? $_GET['page_enabled'] : FALSE;
290    $index->page_mode = $_GET['page_mode'];    $index->page_mode = $_GET['page_mode'];
291    $index->block_enabled = $_GET['block_enabled'];    $index->block_enabled = isset($_GET['block_enabled']) ? $_GET['block_enabled'] : FALSE;
292    $index->block_mode = $_GET['block_mode'];    $index->block_mode = $_GET['block_mode'];
293    
294    echo $index->preview();    echo $index->preview();

Legend:
Removed from v.1.1.2.12  
changed lines
  Added in v.1.1.2.13

  ViewVC Help
Powered by ViewVC 1.1.2