MENU_NORMAL_ITEM, 'title' => 'Build a GMap macro', 'access arguments' => array('create gmap macro'), 'page callback' => 'drupal_get_form', 'page arguments' => array('gmap_macro_builder_form'), ); return $items; } /** * Macro builder form. * @param &$form_state * The $form_state array. * @param $settings * Additional settings to apply to the macro map. * @param $hide * Fields to hide from the map. (See code for details.) * Suggestions for better ways of doing this welcome! */ function gmap_macro_builder_form(&$form_state, $settings = array(), $hide = array()) { $form['macroform'] = array( '#type' => 'fieldset', '#title' => t('Gmap macro creation'), '#theme' => 'gmap_macro', ); $form['macroform']['mapdiv'] = array( '#type' => 'gmap', '#map' => 'macro_map', '#settings' => array_merge(array( 'points' => array(), 'pointsOverlays' => array(), 'behavior' => array( 'dynmarkers' => TRUE, ), ), $settings), ); $defaults = array_merge(gmap_defaults(), $settings); $form['macroform']['overlayedit'] = array( '#type' => 'gmap_overlay_edit', '#map' => 'macro_map', ); $form['macroform']['mapid'] = array( '#type' => 'textfield', '#title' => t('Map id attribute'), '#description' => t('If you need to access this map from a script, you can assign a map ID here.'), '#default_value' => '', ); gmap_widget_setup($form['macroform']['mapid'], 'mapid', 'macro_map'); // @@@ TODO: Roll this next section into an element, it's duplicated from the settings ui. $baselayers = array(); gmap_module_invoke('baselayers', $baselayers); $options = array(); foreach ($baselayers as $name => $layers) { $options[$name] = array(); foreach ($layers as $k => $v) { // @@@TODO: Only show the enabled ones? $options[$name][$k] = $v['title']; } } $form['macroform']['maptype'] = array( '#type' => 'select', '#title' => t('Map type'), '#default_value' => $defaults['maptype'], '#options' => $options, ); gmap_widget_setup($form['macroform']['maptype'], 'maptype', 'macro_map'); // @@@TODO: We need to allow choosing an alternate set of baselayers... $form['macroform']['controltype'] = array( '#type' => 'select', '#title' => t('Controls'), '#options' => drupal_map_assoc(array('None', 'Small', 'Large')), '#required' => FALSE, '#default_value' => $defaults['controltype'], ); gmap_widget_setup($form['macroform']['controltype'], 'controltype', 'macro_map'); $form['macroform']['address'] = array( '#type' => 'gmap_address', '#map' => 'macro_map', '#title' => t('Address'), '#default_value' => '', ); $form['macroform']['latlong'] = array( '#type' => 'gmap_latlon', '#map' => 'macro_map', '#title' => t('The Latitude and Longitude of the centre of the map'), '#default_value' => $defaults['latlong'], '#size' => 50, ); $form['macroform']['width'] = array( '#type' => 'textfield', '#title' => t('Map width'), '#default_value' => $defaults['width'], '#size' => 25, '#maxlength' => 25, '#description' => t('The map width, as a CSS length or percentage. Examples: 50px, 5em, 2.5in, 95%'), ); gmap_widget_setup($form['macroform']['width'], 'width', 'macro_map'); $form['macroform']['height'] = array( '#type' => 'textfield', '#title' => t('Map height'), '#default_value' => $defaults['height'], '#size' => 25, '#maxlength' => 25, '#description' => t('The map height, as a CSS length or percentage. Examples: 50px, 5em, 2.5in, 95%'), ); gmap_widget_setup($form['macroform']['height'], 'height', 'macro_map'); $form['macroform']['alignment'] = array( '#type' => 'gmap_align', '#map' => 'macro_map', '#title' => t('Alignment'), ); $form['macroform']['zoom'] = array( '#type' => 'select', '#title' => t('The current magnification of the map'), '#default_value' => $defaults['zoom'], '#options' => drupal_map_assoc(range(0, 17)), ); gmap_widget_setup($form['macroform']['zoom'], 'zoom', 'macro_map'); $form['macroform']['macro'] = array( '#type' => 'gmap_macrotext', '#map' => 'macro_map', '#default_value' => '', '#title' => t('Macro text'), ); foreach ($hide as $field => $mode) { if (isset($form['macroform'][$field])) { if ($mode == 1) { $form['macroform'][$field]['#type'] = 'hidden'; $form['macroform'][$field]['#value'] = $form['macroform'][$field]['#default_value']; } else if ($mode == 2) { $form['macroform'][$field]['#prefix'] = '
'; } } } return $form; }