/[drupal]/contributions/modules/views/includes/admin.inc
ViewVC logotype

Diff of /contributions/modules/views/includes/admin.inc

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

revision 1.154.2.8, Mon Nov 2 20:09:17 2009 UTC revision 1.154.2.9, Tue Nov 10 23:20:05 2009 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // $Id: admin.inc,v 1.154.2.7 2009/09/15 16:47:09 merlinofchaos Exp $  // $Id: admin.inc,v 1.154.2.8 2009/11/02 20:09:17 merlinofchaos Exp $
3  /**  /**
4   * @file admin.inc   * @file admin.inc
5   * Provides the Views' administrative interface.   * Provides the Views' administrative interface.
# Line 1226  function template_preprocess_views_ui_ed Line 1226  function template_preprocess_views_ui_ed
1226      // Get relationship labels      // Get relationship labels
1227      $relationships = array();      $relationships = array();
1228      // @todo: get_handlers()      // @todo: get_handlers()
1229      foreach ($display->handler->get_option('relationships') as $id => $relationship) {      foreach ($display->handler->get_handlers('relationship') as $id => $handler) {
       $handler = views_get_handler($relationship['table'], $relationship['field'], 'relationship');  
       if (empty($handler)) {  
         continue;  
       }  
       $handler->init($view, $relationship);  
1230        $relationships[$id] = $handler->label();        $relationships[$id] = $handler->label();
1231      }      }
1232    }    }
1233    
   // @todo: get_handlers()  
1234    foreach ($display->handler->get_option($types[$type]['plural']) as $id => $field) {    foreach ($display->handler->get_option($types[$type]['plural']) as $id => $field) {
1235      $fields[$id] = array();      $fields[$id] = array();
1236    
1237      $handler = views_get_handler($field['table'], $field['field'], $type);      $handler = $display->handler->get_handler($type, $id);
1238      if (empty($handler)) {      if (empty($handler)) {
1239        $fields[$id]['class'] = 'broken';        $fields[$id]['class'] = 'broken';
1240        $fields[$id]['title'] = t("Error: handler for @table > @field doesn't exist!", array('@table' => $field['table'], '@field' => $field['field']));        $fields[$id]['title'] = t("Error: handler for @table > @field doesn't exist!", array('@table' => $field['table'], '@field' => $field['field']));
1241        $fields[$id]['info'] = '';        $fields[$id]['info'] = '';
1242        continue;        continue;
1243      }      }
     $handler->init($view, $field);  
1244    
1245      $field_name = $handler->ui_name(TRUE);      $field_name = $handler->ui_name(TRUE);
1246      if (!empty($field['relationship']) && !empty($relationships[$field['relationship']])) {      if (!empty($field['relationship']) && !empty($relationships[$field['relationship']])) {
# Line 1261  function template_preprocess_views_ui_ed Line 1254  function template_preprocess_views_ui_ed
1254      }      }
1255      $fields[$id]['info'] = $handler->admin_summary();      $fields[$id]['info'] = $handler->admin_summary();
1256    
1257        if ($display->handler->use_group_by()) {
1258          $fields[$id]['links'] = l('<span>' . t('Group settings') . '</span>', "admin/build/views/nojs/config-item-group/$view->name/$display->id/$type/$id", array('attributes' => array('class' => 'views-button-configure views-ajax-link', 'title' => t('Group settings')), 'html' => true));
1259        }
1260      if ($handler->has_extra_options()) {      if ($handler->has_extra_options()) {
1261        $fields[$id]['links'] = l('<span>' . t('Settings') . '</span>', "admin/build/views/nojs/config-item-extra/$view->name/$display->id/$type/$id", array('attributes' => array('class' => 'views-button-configure views-ajax-link', 'title' => t('Settings')), 'html' => true));        $fields[$id]['links'] = l('<span>' . t('Settings') . '</span>', "admin/build/views/nojs/config-item-extra/$view->name/$display->id/$type/$id", array('attributes' => array('class' => 'views-button-configure views-ajax-link', 'title' => t('Settings')), 'html' => true));
1262      }      }
# Line 1455  function views_ui_ajax_forms($key = NULL Line 1451  function views_ui_ajax_forms($key = NULL
1451        'form_id' => 'views_ui_config_item_form',        'form_id' => 'views_ui_config_item_form',
1452        'args' => array('type', 'id'),        'args' => array('type', 'id'),
1453      ),      ),
1454        'config-item-group' => array(
1455          'form_id' => 'views_ui_config_item_group_form',
1456          'args' => array('type', 'id'),
1457        ),
1458      'config-item-extra' => array(      'config-item-extra' => array(
1459        'form_id' => 'views_ui_config_item_extra_form',        'form_id' => 'views_ui_config_item_extra_form',
1460        'args' => array('type', 'id'),        'args' => array('type', 'id'),
# Line 2014  function views_ui_rearrange_form(&$form_ Line 2014  function views_ui_rearrange_form(&$form_
2014    
2015    // Get relationship labels    // Get relationship labels
2016    $relationships = array();    $relationships = array();
2017    // @todo: get_handlers()    foreach ($display->handler->get_handlers('relationship') as $id => $handler) {
   foreach ($display->handler->get_option('relationships') as $id => $relationship) {  
     $handler = views_get_handler($relationship['table'], $relationship['field'], 'relationship');  
     if (empty($handler)) {  
       continue;  
     }  
     $handler->init($view, $relationship);  
2018      $relationships[$id] = $handler->label();      $relationships[$id] = $handler->label();
2019    }    }
2020    
   // @todo: get_handlers()  
2021    foreach ($display->handler->get_option($types[$type]['plural']) as $id => $field) {    foreach ($display->handler->get_option($types[$type]['plural']) as $id => $field) {
2022      $form[$id] = array('#tree' => TRUE);      $form[$id] = array('#tree' => TRUE);
2023      $form[$id]['weight'] = array(      $form[$id]['weight'] = array(
# Line 2032  function views_ui_rearrange_form(&$form_ Line 2025  function views_ui_rearrange_form(&$form_
2025        '#delta' => 25,        '#delta' => 25,
2026        '#default_value' => ++$count,        '#default_value' => ++$count,
2027      );      );
2028      $handler = views_get_handler($field['table'], $field['field'], $type);      $handler = $display->handler->get_handler($type, $id);
2029      if ($handler) {      if ($handler) {
       $handler->init($view, $field);  
2030        $name = $handler->ui_name() . ' ' . $handler->admin_summary();        $name = $handler->ui_name() . ' ' . $handler->admin_summary();
2031        if (!empty($field['relationship']) && !empty($relationships[$field['relationship']])) {        if (!empty($field['relationship']) && !empty($relationships[$field['relationship']])) {
2032          $name = '(' . $relationships[$field['relationship']] . ') ' . $name;          $name = '(' . $relationships[$field['relationship']] . ') ' . $name;
# Line 2155  function views_ui_add_item_form(&$form_s Line 2147  function views_ui_add_item_form(&$form_s
2147    
2148    // Figure out all the base tables allowed based upon what the relationships provide.    // Figure out all the base tables allowed based upon what the relationships provide.
2149    $base_tables = $view->get_base_tables();    $base_tables = $view->get_base_tables();
2150    $options = views_fetch_fields(array_keys($base_tables), $type);    $options = views_fetch_fields(array_keys($base_tables), $type, $display->handler->use_group_by());
2151    
2152    if (!empty($options)) {    if (!empty($options)) {
2153      $groups = array('all' => t('<All>'));      $groups = array('all' => t('<All>'));
# Line 2220  function views_ui_add_item_form_submit($ Line 2212  function views_ui_add_item_form_submit($
2212        list($table, $field) = explode('.', $field, 2);        list($table, $field) = explode('.', $field, 2);
2213        $id = $form_state['view']->add_item($form_state['display_id'], $type, $table, $field);        $id = $form_state['view']->add_item($form_state['display_id'], $type, $table, $field);
2214    
2215          // check to see if we have group by settings
2216          if ($form_state['view']->display_handler->use_group_by()) {
2217            views_ui_add_form_to_stack('config-item-group', $form_state['view'], $form_state['display_id'], array($type, $id));
2218          }
2219    
2220        // check to see if this type has settings, if so add the settings form first        // check to see if this type has settings, if so add the settings form first
2221        $handler = views_get_handler($table, $field, $type);        $handler = views_get_handler($table, $field, $type);
2222        if ($handler && $handler->has_extra_options()) {        if ($handler && $handler->has_extra_options()) {
# Line 2251  function views_ui_config_item_form(&$for Line 2248  function views_ui_config_item_form(&$for
2248    $item = $view->get_item($display_id, $type, $id);    $item = $view->get_item($display_id, $type, $id);
2249    
2250    if ($item) {    if ($item) {
2251      $handler = views_get_handler($item['table'], $item['field'], $type);      $handler = $view->display_handler->get_handler($type, $id);
2252      if (empty($handler)) {      if (empty($handler)) {
2253        $form['markup'] = array('#value' => t("Error: handler for @table > @field doesn't exist!", array('@table' => $item['table'], '@field' => $item['field'])));        $form['markup'] = array('#value' => t("Error: handler for @table > @field doesn't exist!", array('@table' => $item['table'], '@field' => $item['field'])));
2254      }      }
2255      else {      else {
       $handler->init($view, $item);  
2256        $types = views_object_types();        $types = views_object_types();
2257    
2258        if ($view->display_handler->defaultable_sections($types[$type]['plural'])) {        if ($view->display_handler->defaultable_sections($types[$type]['plural'])) {
# Line 2284  function views_ui_config_item_form(&$for Line 2280  function views_ui_config_item_form(&$for
2280          // If this relationship is valid for this type, add it to the list.          // If this relationship is valid for this type, add it to the list.
2281          $data = views_fetch_data($relationship['table']);          $data = views_fetch_data($relationship['table']);
2282          $base = $data[$relationship['field']]['relationship']['base'];          $base = $data[$relationship['field']]['relationship']['base'];
2283          $base_fields = views_fetch_fields($base, $form_state['type']);          $base_fields = views_fetch_fields($base, $form_state['type'], $view->display_handler->use_group_by());
2284          if (isset($base_fields[$item['table'] . '.' . $item['field']])) {          if (isset($base_fields[$item['table'] . '.' . $item['field']])) {
2285            $relationship_handler->init($view, $relationship);            $relationship_handler->init($view, $relationship);
2286            $relationship_options[$relationship['id']] = $relationship_handler->label();            $relationship_options[$relationship['id']] = $relationship_handler->label();
# Line 2294  function views_ui_config_item_form(&$for Line 2290  function views_ui_config_item_form(&$for
2290        if (!empty($relationship_options)) {        if (!empty($relationship_options)) {
2291          // Make sure the existing relationship is even valid. If not, force          // Make sure the existing relationship is even valid. If not, force
2292          // it to none.          // it to none.
2293          $base_fields = views_fetch_fields($view->base_table, $form_state['type']);          $base_fields = views_fetch_fields($view->base_table, $form_state['type'], $view->display_handler->use_group_by());
2294          if (isset($base_fields[$item['table'] . '.' . $item['field']])) {          if (isset($base_fields[$item['table'] . '.' . $item['field']])) {
2295            $relationship_options = array_merge(array('none' => t('Do not use a relationship')), $relationship_options);            $relationship_options = array_merge(array('none' => t('Do not use a relationship')), $relationship_options);
2296          }          }
# Line 2369  function views_ui_config_item_form_submi Line 2365  function views_ui_config_item_form_submi
2365    // Store the item back on the view    // Store the item back on the view
2366    $form_state['view']->set_item($form_state['display_id'], $form_state['type'], $form_state['id'], $item);    $form_state['view']->set_item($form_state['display_id'], $form_state['type'], $form_state['id'], $item);
2367    
2368    $handler = views_get_handler($item['table'], $item['field'], $form_state['type']);    if ($form_state['handler'] && $form_state['handler']->needs_style_plugin()) {
   $handler->init($form_state['view'], $item);  
   if ($handler && $handler->needs_style_plugin()) {  
2369      views_ui_add_form_to_stack('change-style', $form_state['view'], $form_state['display_id'], array($form_state['type'], $form_state['id']), TRUE);      views_ui_add_form_to_stack('change-style', $form_state['view'], $form_state['display_id'], array($form_state['type'], $form_state['id']), TRUE);
2370    }    }
2371    
# Line 2380  function views_ui_config_item_form_submi Line 2374  function views_ui_config_item_form_submi
2374  }  }
2375    
2376  /**  /**
2377     * Form to config_item items in the views UI.
2378     */
2379    function views_ui_config_item_group_form(&$form_state) {
2380      $view = &$form_state['view'];
2381      $display_id = $form_state['display_id'];
2382      $type = $form_state['type'];
2383      $id = $form_state['id'];
2384    
2385      $view->init_query();
2386    
2387      $form = array('options' => array('#tree' => TRUE));
2388      if (!$view->set_display($display_id)) {
2389        views_ajax_render(t('Invalid display id @display', array('@display' => $display_id)));
2390      }
2391    
2392      $item = $view->get_item($display_id, $type, $id);
2393    
2394      if ($item) {
2395        $handler = $view->display_handler->get_handler($type, $id);
2396        if (empty($handler)) {
2397          $form['markup'] = array('#value' => t("Error: handler for @table > @field doesn't exist!", array('@table' => $item['table'], '@field' => $item['field'])));
2398        }
2399        else {
2400          $handler->init($view, $item);
2401          $types = views_object_types();
2402    
2403          $form['#title'] = check_plain($view->display[$display_id]->display_title) . ': ';
2404          $form['#title'] .= t('Configure group settings for @type %item', array('@type' => $types[$type]['lstitle'], '%item' => $handler->ui_name()));
2405    
2406          $form['#section'] = $display_id . '-' . $type . '-' . $id;
2407    
2408          $info = $view->query->get_aggregation_info();
2409          foreach ($info as $id => $aggregate) {
2410            $group_types[$id] = $aggregate['title'];
2411          }
2412    
2413          $form['group_type'] = array(
2414            '#type' => 'select',
2415            '#title' => t('Group type'),
2416            '#default_value' => $handler->options['group_type'],
2417            '#description' => t('Grouping is enabled for this display. You must select what function to use on this field.'),
2418            '#options' => $group_types,
2419          );
2420          $form_state['handler'] = &$handler;
2421        }
2422    
2423        views_ui_standard_form_buttons($form, $form_state, 'views_ui_config_item_group_form');
2424      }
2425      return $form;
2426    }
2427    
2428    /**
2429     * Submit handler for configing group settings on a view.
2430     */
2431    function views_ui_config_item_group_form_submit($form, &$form_state) {
2432      $item = $form_state['handler']->options;
2433    
2434      $item['group_type'] = $form_state['values']['group_type'];
2435    
2436      // Store the item back on the view
2437      $form_state['view']->set_item($form_state['display_id'], $form_state['type'], $form_state['id'], $item);
2438    
2439      // Write to cache
2440      views_ui_cache_set($form_state['view']);
2441    }
2442    
2443    /**
2444   * Submit handler for removing an item from a view   * Submit handler for removing an item from a view
2445   */   */
2446  function views_ui_config_item_form_remove($form, &$form_state) {  function views_ui_config_item_form_remove($form, &$form_state) {
# Line 2443  function views_ui_config_item_extra_form Line 2504  function views_ui_config_item_extra_form
2504    
2505        // Get form from the handler.        // Get form from the handler.
2506        $handler->extra_options_form($form['options'], $form_state);        $handler->extra_options_form($form['options'], $form_state);
2507          $form_state['handler'] = &$handler;        $form_state['handler'] = &$handler;
   
2508      }      }
2509    
2510      views_ui_standard_form_buttons($form, $form_state, 'views_ui_config_item_extra_form');      views_ui_standard_form_buttons($form, $form_state, 'views_ui_config_item_extra_form');
# Line 2885  function _views_sort_types($a, $b) { Line 2945  function _views_sort_types($a, $b) {
2945   * @return   * @return
2946   *   A keyed array of in the form of 'base_table' => 'Description'.   *   A keyed array of in the form of 'base_table' => 'Description'.
2947   */   */
2948  function views_fetch_fields($base, $type) {  function views_fetch_fields($base, $type, $grouping = FALSE) {
2949    static $fields = array();    static $fields = array();
2950    if (empty($fields)) {    if (empty($fields)) {
2951      $data = views_fetch_data();      $data = views_fetch_data();
# Line 2917  function views_fetch_fields($base, $type Line 2977  function views_fetch_fields($base, $type
2977          }          }
2978          foreach (array('field', 'sort', 'filter', 'argument', 'relationship') as $key) {          foreach (array('field', 'sort', 'filter', 'argument', 'relationship') as $key) {
2979            if (!empty($info[$key])) {            if (!empty($info[$key])) {
2980                if ($grouping && !empty($info[$key]['no group by'])) {
2981                  continue;
2982                }
2983              if (!empty($info[$key]['skip base'])) {              if (!empty($info[$key]['skip base'])) {
2984                foreach ((array) $info[$key]['skip base'] as $base_name) {                foreach ((array) $info[$key]['skip base'] as $base_name) {
2985                  $skip_bases[$field][$key][$base_name] = TRUE;                  $skip_bases[$field][$key][$base_name] = TRUE;

Legend:
Removed from v.1.154.2.8  
changed lines
  Added in v.1.154.2.9

  ViewVC Help
Powered by ViewVC 1.1.2