You are here

function colorized_gmap_form_alter in Colorized google maps block 7

Implements hook_form_alter().

File

./colorized_gmap.module, line 308
Colorized gmap module.

Code

function colorized_gmap_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'colorized_gmap_page_form' || $form_id == 'block_admin_configure' && $form['module']['#value'] == 'colorized_gmap') {
    module_load_include('inc', 'colorized_gmap', 'colorized_gmap.admin');
    $map_entity = NULL;
    if (!empty($form['delta']['#value'])) {
      $map_entity = entity_load_single('colorized_gmap', $form['delta']['#value']);
      $form['settings']['title']['#default_value'] = $map_entity->block_settings['title'];
    }

    // Machine name.
    $form['settings']['machine-name'] = array(
      '#type' => 'machine_name',
      '#title' => t("Machine Name"),
      '#required' => TRUE,
      '#description' => t("Machine-friendly name."),
      '#size' => 15,
      // @todo: I set default value here to not to break ajax.
      '#default_value' => isset($map_entity) ? $map_entity->name : 'colorized_gmap_' . time(),
      '#disabled' => isset($map_entity->name) ? TRUE : FALSE,
      '#machine_name' => array(
        'exists' => '_colorized_gmap_block_name_exists',
      ),
    );

    // Options for map controls positions (comes from GMAP api v3 reference).
    $position = array(
      '1' => 'Top Left',
      '2' => 'Top Center',
      '3' => 'Top Right',
      '4' => 'Left Center',
      '5' => 'Left Top',
      '6' => 'Left Bottom',
      '7' => 'Right Top',
      '8' => 'Right Center',
      '9' => 'Right Bottom',
      '10' => 'Bottom Left',
      '11' => 'Bottom Center',
      '12' => 'Bottom Right',
    );

    // Some helper function to create form elements.
    // Just to make code more user friendly.
    _colorized_gmap_form_map_stylers($form, $form_state, $map_entity);
    _colorized_gmap_form_map_coordinates($form, $form_state, $map_entity);
    _colorized_gmap_form_map_controls($form, $form_state, $map_entity);
    _colorized_gmap_form_map_controls_position($form, $form_state, $position, $map_entity);
    _colorized_gmap_form_map_marker($form, $form_state, $map_entity);
    _colorized_gmap_form_zoom_settings($form, $form_state, $position, $map_entity);

    // Update map styles js setting on AJAX.
    if ($form_state['rebuild'] && isset($form_state['values']['settings'])) {
      foreach ($form_state['styles_removed'] as $item) {
        $form_state['values']['settings'][$item] = array();
      }
      if ($form_state['values']['delta']) {
        $marker = _colorized_gmap_marker_info($form_state['values']['colorized_map_addtional_settings']['marker_settings']['marker'], $form_state['values']['delta']);
        $form_state['values']['colorized_map_addtional_settings']['marker_settings']['marker'] = $marker;
      }
      colorized_gmap_admin_js_settings_export($form_state['values']);
    }

    // Pre-populate default map style values.
    if ($map_entity && !$form_state['rebuild']) {

      // If marker was uploaded - update its info.
      $marker = $map_entity->additional_settings['marker_settings']['marker'];
      if (!is_array($marker) && !empty($marker)) {
        $marker = _colorized_gmap_marker_info($marker, $map_entity->id);
        $map_entity->additional_settings['marker_settings']['marker'] = $marker;
      }
      $settings = array(
        'settings' => $map_entity->style,
        'colorized_map_addtional_settings' => $map_entity->additional_settings,
        'latitude' => $map_entity->latitude,
        'longitude' => $map_entity->longitude,
      );
      colorized_gmap_admin_js_settings_export($settings);
    }
    $form['#validate'][] = 'colorized_gmap_page_form_validate';
  }
}