diff --git a/gmap_plugin_style_gmap.inc b/gmap_plugin_style_gmap.inc index 498f1b44b6879078dc979b14b8eb17ad25927793..99894996d4c8430a292a5dafee955c7fd7613cda 100644 --- a/gmap_plugin_style_gmap.inc +++ b/gmap_plugin_style_gmap.inc @@ -33,6 +33,10 @@ class gmap_plugin_style_gmap extends views_plugin_style { $options['lonfield'] = array('default' => ''); $options['markerfield'] = array('default' => ''); + $options['enablermt'] = array('default' => FALSE); + $options['rmtfield'] = array('default' => ''); + $options['rmtcallback'] = array('default' => ''); + $options['center_on_nodearg'] = array('default' => 0); $options['center_on_nodearg_arg'] = array('default' => ''); @@ -107,6 +111,12 @@ class gmap_plugin_style_gmap extends views_plugin_style { $marker_field_obj = $this->view->display_handler->get_handler('field', $this->options['markerfield']); $marker_field = $marker_field_obj->field_alias; } + + // Determine rmt field. + if ($this->options['enablermt']) { + $rmt_field_obj = $this->view->display_handler->get_handler('field', $this->options['rmtfield']); + $rmt_field = $rmt_field_obj->field_alias; + } $markername = isset($this->options['markertype']) ? $this->options['markertype'] : 'drupal'; @@ -201,13 +211,19 @@ class gmap_plugin_style_gmap extends views_plugin_style { 'highlightcolor' => $this->options['highlight_nodearg_color'], ), ); - // Marker mode: popup. - if ($defaults['markermode'] == 1) { - $marker['text'] = $this->row_plugin->render($row); + // RMT mode. + if ($this->options['enablermt']) { + $marker['rmt'] = $row->{$rmt_field}; } - // Marker mode: link. - else if ($defaults['markermode'] == 2) { - $marker['link'] = url('node/' . $row_nid); + else { + // Marker mode: popup. + if ($defaults['markermode'] == 1) { + $marker['text'] = $this->row_plugin->render($row); + } + // Marker mode: link. + else if ($defaults['markermode'] == 2) { + $marker['link'] = url('node/' . $row_nid); + } } $markers[] = $marker; @@ -216,6 +232,9 @@ class gmap_plugin_style_gmap extends views_plugin_style { } if (!empty($markers)) { // Don't draw empty maps. $map = gmap_parse_macro($this->options['macro']); + if ($this->options['enablermt']) { + $map['rmtcallback'] = $this->options['rmtcallback']; + } // If center lon/lat are not empty they are used to center map if (!empty($center_lon) && !empty($center_lat)) { @@ -313,6 +332,30 @@ class gmap_plugin_style_gmap extends views_plugin_style { '#dependency' => array('edit-style-options-markers' => array('field')), ); + $form['enablermt'] = array( + '#type' => 'checkbox', + '#title' => t('Enable GMap RMT for markers'), + '#description' => t('You can pull the bodies of the markers from a callback instead of defining them inline. This is a performance feature for advanced users.'), + '#default_value' => $this->options['enablermt'], + ); + $form['rmtfield'] = array( + '#type' => 'select', + '#title' => t('RMT field'), + '#description' => t('You can use a views field to define the "tail" of the path called back.'), + '#options' => $field_options, + '#default_value' => $this->options['rmtfield'], + '#process' => array('views_process_dependency'), + '#dependency' => array('edit-style-options-enablermt' => array(TRUE)), + ); + $form['rmtcallback'] = array( + '#type' => 'textfield', + '#title' => t('RMT callback path'), + '#description' => t('Define the base path to the callback here. The value of the rmt field will be appended.'), + '#default_value' => $this->options['rmtcallback'], + '#process' => array('views_process_dependency'), + '#dependency' => array('edit-style-options-enablermt' => array(TRUE)), + ); + // Hide the taxonomy handling if gmap_taxonomy.module isn't installed. if (!module_exists('gmap_taxonomy')) { unset($form['markers']['#options']['taxonomy']);