Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?php
// $Id$
/**
* @file
* GMap Macro Builder
*
* A dynamic interface to assist in the creation of gmap macro tags.
*/
/**
* Implemenation of hook_help().
*/
function gmap_macro_builder_help($section) {
switch ($section) {
case 'map/macro':
return t('You can use this interface to create a map macro suitable for pasting into a node or any other place that accepts a GMap macro.');
}
}
/**
* Implementation of hook_perm().
*/
function gmap_macro_builder_perm() {
return array('create macro');
}
/**
* Implementation of hook_menu().
*/
function gmap_macro_builder_menu($may_cache) {
if ($may_cache) {
$items = array();
$items[] = array(
'path' => 'map/macro',
'type' => MENU_NORMAL_ITEM,
'title' => t('Build a GMap macro'),
'access' => user_access('create macro'),
'callback' => 'drupal_get_form',
'callback arguments' => 'gmap_macro_builder_form',
);
return $items;
}
}
/**
* Macro builder form.
* @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($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();
foreach (module_implements('gmap') as $module) {
call_user_func_array($module .'_gmap', array('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: <em>50px</em>, <em>5em</em>, <em>2.5in</em>, <em>95%</em>'),
);
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: <em>50px</em>, <em>5em</em>, <em>2.5in</em>, <em>95%</em>'),
);
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'] = '<div style="display: none;">';
$form['macroform'][$field]['#suffix'] = '</div>';
}
}
}
return $form;
}