|
1
|
|
|
<?php
|
|
2
|
|
|
/**
|
|
3
|
|
|
* GeoDirectory GMap - Home page Widget
|
|
4
|
|
|
*
|
|
5
|
|
|
* This will display Google map on home page with use of Google Map Api V3.
|
|
6
|
|
|
*
|
|
7
|
|
|
* @since 1.0.0
|
|
8
|
|
|
*
|
|
9
|
|
|
* @package GeoDirectory
|
|
10
|
|
|
*/
|
|
11
|
|
|
|
|
12
|
|
|
/**
|
|
13
|
|
|
* GeoDirectory home page map widget class.
|
|
14
|
|
|
*
|
|
15
|
|
|
* @since 1.0.0
|
|
16
|
|
|
*/
|
|
17
|
|
|
class geodir_homepage_map extends WP_Widget
|
|
18
|
|
|
{
|
|
19
|
|
|
/**
|
|
20
|
|
|
* Register the home page map widget.
|
|
21
|
|
|
*
|
|
22
|
|
|
* @since 1.0.0
|
|
23
|
|
|
* @since 1.5.1 Changed from PHP4 style constructors to PHP5 __construct.
|
|
24
|
|
|
*/
|
|
25
|
|
|
public function __construct() {
|
|
26
|
|
|
$widget_ops = array('classname' => 'widget Google Map in Home page', 'description' => __('Google Map in Home page. It will show you google map V3 for Home page with category checkbox selection.', 'geodirectory'));
|
|
27
|
|
|
parent::__construct(
|
|
28
|
|
|
'geodir_map_v3_home_map', // Base ID
|
|
29
|
|
|
__('GD > GMap - Home page', 'geodirectory'), // Name
|
|
30
|
|
|
$widget_ops// Args
|
|
31
|
|
|
);
|
|
32
|
|
|
}
|
|
33
|
|
|
|
|
34
|
|
|
/**
|
|
35
|
|
|
* Front-end display content for home page map widget.
|
|
36
|
|
|
*
|
|
37
|
|
|
* @since 1.0.0
|
|
38
|
|
|
* @since 1.5.1 Declare function public.
|
|
39
|
|
|
*
|
|
40
|
|
|
* @param array $args Widget arguments.
|
|
41
|
|
|
* @param array $instance Saved values from database.
|
|
42
|
|
|
*/
|
|
43
|
|
|
public function widget($args, $instance)
|
|
44
|
|
|
{
|
|
45
|
|
|
extract($args, EXTR_SKIP);
|
|
46
|
|
|
/** This action is documented in geodirectory_shortcodes.php */
|
|
47
|
|
|
$width = empty($instance['width']) ? '100%' : apply_filters('widget_width', $instance['width']);
|
|
48
|
|
|
/** This action is documented in geodirectory_shortcodes.php */
|
|
49
|
|
|
$height = empty($instance['heigh']) ? '425' : apply_filters('widget_heigh', $instance['heigh']);
|
|
50
|
|
|
/** This action is documented in geodirectory_shortcodes.php */
|
|
51
|
|
|
$maptype = empty($instance['maptype']) ? 'ROADMAP' : apply_filters('widget_maptype', $instance['maptype']);
|
|
52
|
|
|
/** This action is documented in geodirectory_shortcodes.php */
|
|
53
|
|
|
$zoom = empty($instance['zoom']) ? '13' : apply_filters('widget_zoom', $instance['zoom']);
|
|
54
|
|
|
/** This action is documented in geodirectory_shortcodes.php */
|
|
55
|
|
|
$autozoom = empty($instance['autozoom']) ? '' : apply_filters('widget_autozoom', $instance['autozoom']);
|
|
56
|
|
|
/** This action is documented in geodirectory_shortcodes.php */
|
|
57
|
|
|
$child_collapse = empty($instance['child_collapse']) ? '0' : apply_filters('widget_child_collapse', $instance['child_collapse']);
|
|
58
|
|
|
/** This action is documented in geodirectory_shortcodes.php */
|
|
59
|
|
|
$scrollwheel = empty($instance['scrollwheel']) ? '0' : apply_filters('widget_scrollwheel', $instance['scrollwheel']);
|
|
60
|
|
|
|
|
61
|
|
|
$map_args = array();
|
|
62
|
|
|
$map_args['map_canvas_name'] = str_replace('-', '_', $args['widget_id']); //'home_map_canvas'.$str ;
|
|
63
|
|
|
$map_args['width'] = $width;
|
|
64
|
|
|
$map_args['height'] = $height;
|
|
65
|
|
|
$map_args['maptype'] = $maptype;
|
|
66
|
|
|
$map_args['scrollwheel'] = $scrollwheel;
|
|
67
|
|
|
$map_args['zoom'] = $zoom;
|
|
68
|
|
|
$map_args['autozoom'] = $autozoom;
|
|
69
|
|
|
$map_args['child_collapse'] = $child_collapse;
|
|
70
|
|
|
$map_args['enable_cat_filters'] = true;
|
|
71
|
|
|
$map_args['enable_text_search'] = true;
|
|
72
|
|
|
$map_args['enable_post_type_filters'] = true;
|
|
73
|
|
|
/** This action is documented in geodirectory_shortcodes.php */
|
|
74
|
|
|
$map_args['enable_location_filters'] = apply_filters('geodir_home_map_enable_location_filters', false);
|
|
75
|
|
|
$map_args['enable_jason_on_load'] = false;
|
|
76
|
|
|
$map_args['enable_marker_cluster'] = false;
|
|
77
|
|
|
$map_args['enable_map_resize_button'] = true;
|
|
78
|
|
|
$map_args['map_class_name'] = 'geodir-map-home-page';
|
|
79
|
|
|
|
|
80
|
|
|
$is_geodir_home_map_widget = true;
|
|
81
|
|
|
$map_args['is_geodir_home_map_widget'] = $is_geodir_home_map_widget;
|
|
82
|
|
|
|
|
83
|
|
|
geodir_draw_map($map_args);
|
|
84
|
|
|
|
|
85
|
|
|
/* home map post type slider */
|
|
86
|
|
|
if ($is_geodir_home_map_widget) {
|
|
87
|
|
|
add_action('wp_footer', array($this, 'geodir_home_map_add_script'), 100);
|
|
88
|
|
|
}
|
|
89
|
|
|
|
|
90
|
|
|
}
|
|
91
|
|
|
|
|
92
|
|
|
/**
|
|
93
|
|
|
* Sanitize home page map widget form values as they are saved.
|
|
94
|
|
|
*
|
|
95
|
|
|
* @since 1.0.0
|
|
96
|
|
|
* @since 1.5.1 Declare function public.
|
|
97
|
|
|
*
|
|
98
|
|
|
* @param array $new_instance Values just sent to be saved.
|
|
99
|
|
|
* @param array $old_instance Previously saved values from database.
|
|
100
|
|
|
*
|
|
101
|
|
|
* @return array Updated safe values to be saved.
|
|
102
|
|
|
*/
|
|
103
|
|
|
public function update($new_instance, $old_instance)
|
|
104
|
|
|
{
|
|
105
|
|
|
//save the widget
|
|
106
|
|
|
$instance = $old_instance;
|
|
107
|
|
|
$instance['width'] = strip_tags($new_instance['width']);
|
|
108
|
|
|
$instance['heigh'] = ($new_instance['heigh']);
|
|
109
|
|
|
$instance['maptype'] = ($new_instance['maptype']);
|
|
110
|
|
|
$instance['zoom'] = ($new_instance['zoom']);
|
|
111
|
|
|
$instance['autozoom'] = isset($new_instance['autozoom']) ? $new_instance['autozoom'] : '';
|
|
112
|
|
|
$instance['child_collapse'] = isset($new_instance['child_collapse']) ? ($new_instance['child_collapse']) : '';
|
|
113
|
|
|
$instance['scrollwheel'] = isset($new_instance['scrollwheel']) ? ($new_instance['scrollwheel']) : '';
|
|
114
|
|
|
|
|
115
|
|
|
return $instance;
|
|
116
|
|
|
}
|
|
117
|
|
|
|
|
118
|
|
|
/**
|
|
119
|
|
|
* Back-end home page map widget settings form.
|
|
120
|
|
|
*
|
|
121
|
|
|
* @since 1.0.0
|
|
122
|
|
|
* @since 1.5.1 Declare function public.
|
|
123
|
|
|
*
|
|
124
|
|
|
* @param array $instance Previously saved values from database.
|
|
125
|
|
|
*/
|
|
126
|
|
|
public function form($instance)
|
|
127
|
|
|
{
|
|
128
|
|
|
//widgetform in backend
|
|
129
|
|
|
|
|
130
|
|
|
$instance = wp_parse_args((array)$instance, array('width' => '', 'heigh' => '', 'maptype' => '', 'zoom' => '', 'autozoom' => '', 'child_collapse' => '0', 'scrollwheel' => '0'));
|
|
131
|
|
|
$width = strip_tags($instance['width']);
|
|
132
|
|
|
$heigh = strip_tags($instance['heigh']);
|
|
133
|
|
|
$maptype = strip_tags($instance['maptype']);
|
|
134
|
|
|
$zoom = strip_tags($instance['zoom']);
|
|
135
|
|
|
$autozoom = strip_tags($instance['autozoom']);
|
|
136
|
|
|
$child_collapse = strip_tags($instance['child_collapse']);
|
|
137
|
|
|
$scrollwheel = strip_tags($instance['scrollwheel']);
|
|
138
|
|
|
?>
|
|
139
|
|
|
|
|
140
|
|
|
<p>
|
|
141
|
|
|
<label
|
|
142
|
|
|
for="<?php echo $this->get_field_id('width'); ?>"><?php _e('Map Width <small>(Default is : 100%) you can use px or % here</small>', 'geodirectory'); ?>
|
|
143
|
|
|
:
|
|
144
|
|
|
<input class="widefat" id="<?php echo $this->get_field_id('width'); ?>"
|
|
145
|
|
|
name="<?php echo $this->get_field_name('width'); ?>" type="text"
|
|
146
|
|
|
value="<?php echo esc_attr($width); ?>"/>
|
|
147
|
|
|
</label>
|
|
148
|
|
|
</p>
|
|
149
|
|
|
<p>
|
|
150
|
|
|
<label
|
|
151
|
|
|
for="<?php echo $this->get_field_id('heigh'); ?>"><?php _e('Map Height <small>(Default is : 425px) you can use px or vh here</small>', 'geodirectory'); ?>
|
|
152
|
|
|
:
|
|
153
|
|
|
<input class="widefat" id="<?php echo $this->get_field_id('heigh'); ?>"
|
|
154
|
|
|
name="<?php echo $this->get_field_name('heigh'); ?>" type="text"
|
|
155
|
|
|
value="<?php echo esc_attr($heigh); ?>"/>
|
|
156
|
|
|
</label>
|
|
157
|
|
|
</p>
|
|
158
|
|
|
|
|
159
|
|
|
<p>
|
|
160
|
|
|
<label
|
|
161
|
|
|
for="<?php echo $this->get_field_id('maptype'); ?>"><?php _e(' Select Map View', 'geodirectory'); ?>
|
|
162
|
|
|
:
|
|
163
|
|
|
<select class="widefat" id="<?php echo $this->get_field_id('maptype'); ?>"
|
|
164
|
|
|
name="<?php echo $this->get_field_name('maptype'); ?>">
|
|
165
|
|
|
|
|
166
|
|
|
<option <?php if (isset($maptype) && $maptype == 'ROADMAP') {
|
|
167
|
|
|
echo 'selected="selected"';
|
|
168
|
|
|
} ?> value="ROADMAP"><?php _e('Road Map', 'geodirectory'); ?></option>
|
|
169
|
|
|
<option <?php if (isset($maptype) && $maptype == 'SATELLITE') {
|
|
170
|
|
|
echo 'selected="selected"';
|
|
171
|
|
|
} ?> value="SATELLITE"><?php _e('Satellite Map', 'geodirectory'); ?></option>
|
|
172
|
|
|
<option <?php if (isset($maptype) && $maptype == 'HYBRID') {
|
|
173
|
|
|
echo 'selected="selected"';
|
|
174
|
|
|
} ?> value="HYBRID"><?php _e('Hybrid Map', 'geodirectory'); ?></option>
|
|
175
|
|
|
<option <?php selected($maptype, 'TERRAIN');?>
|
|
176
|
|
|
value="TERRAIN"><?php _e('Terrain Map', 'geodirectory'); ?></option>
|
|
177
|
|
|
</select>
|
|
178
|
|
|
</label>
|
|
179
|
|
|
</p>
|
|
180
|
|
|
|
|
181
|
|
|
<?php
|
|
182
|
|
|
$map_zoom_level = geodir_map_zoom_level();
|
|
183
|
|
|
?>
|
|
184
|
|
|
|
|
185
|
|
|
<p>
|
|
186
|
|
|
<label
|
|
187
|
|
|
for="<?php echo $this->get_field_id('zoom'); ?>"><?php _e('Map Zoom level', 'geodirectory'); ?>
|
|
188
|
|
|
:
|
|
189
|
|
|
<select class="widefat" id="<?php echo $this->get_field_id('zoom'); ?>"
|
|
190
|
|
|
name="<?php echo $this->get_field_name('zoom'); ?>"> <?php
|
|
191
|
|
|
|
|
192
|
|
View Code Duplication |
foreach ($map_zoom_level as $level) {
|
|
|
|
|
|
|
193
|
|
|
$selected = '';
|
|
194
|
|
|
if ($level == $zoom)
|
|
195
|
|
|
$selected = 'selected="selected"';
|
|
196
|
|
|
|
|
197
|
|
|
echo '<option ' . $selected . ' value="' . $level . '">' . $level . '</option>';
|
|
198
|
|
|
|
|
199
|
|
|
} ?>
|
|
200
|
|
|
|
|
201
|
|
|
</select>
|
|
202
|
|
|
</label>
|
|
203
|
|
|
</p>
|
|
204
|
|
|
|
|
205
|
|
|
|
|
206
|
|
|
<p>
|
|
207
|
|
|
<label
|
|
208
|
|
|
for="<?php echo $this->get_field_id('autozoom'); ?>"><?php _e('Map Auto Zoom ?', 'geodirectory'); ?>
|
|
209
|
|
|
:
|
|
210
|
|
|
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('autozoom'); ?>"
|
|
211
|
|
|
name="<?php echo $this->get_field_name('autozoom'); ?>"<?php if ($autozoom) {
|
|
212
|
|
|
echo 'checked="checked"';
|
|
213
|
|
|
} ?> /></label>
|
|
214
|
|
|
</p>
|
|
215
|
|
|
|
|
216
|
|
|
<p>
|
|
217
|
|
|
<label
|
|
218
|
|
|
for="<?php echo $this->get_field_id('child_collapse'); ?>"><?php _e('Collapse child/sub categories ?', 'geodirectory'); ?>
|
|
219
|
|
|
:
|
|
220
|
|
|
<input id="<?php echo $this->get_field_id('child_collapse'); ?>"
|
|
221
|
|
|
name="<?php echo $this->get_field_name('child_collapse'); ?>" type="checkbox" value="1"
|
|
222
|
|
|
<?php if ($child_collapse){ ?>checked="checked" <?php } ?> />
|
|
223
|
|
|
</label>
|
|
224
|
|
|
</p>
|
|
225
|
|
|
|
|
226
|
|
|
<p>
|
|
227
|
|
|
<label
|
|
228
|
|
|
for="<?php echo $this->get_field_id('scrollwheel'); ?>"><?php _e('Enable mouse scroll zoom ?', 'geodirectory'); ?>
|
|
229
|
|
|
:
|
|
230
|
|
|
<input id="<?php echo $this->get_field_id('scrollwheel'); ?>"
|
|
231
|
|
|
name="<?php echo $this->get_field_name('scrollwheel'); ?>" type="checkbox" value="1"
|
|
232
|
|
|
<?php if ($scrollwheel){ ?>checked="checked" <?php } ?> />
|
|
233
|
|
|
</label>
|
|
234
|
|
|
</p>
|
|
235
|
|
|
|
|
236
|
|
|
<?php
|
|
237
|
|
|
}
|
|
238
|
|
|
|
|
239
|
|
|
/**
|
|
240
|
|
|
* Adds the javascript in the footer for home page map widget.
|
|
241
|
|
|
*
|
|
242
|
|
|
* @since 1.0.0
|
|
243
|
|
|
* @since 1.5.1 Declare function public.
|
|
244
|
|
|
*/
|
|
245
|
|
|
public function geodir_home_map_add_script()
|
|
246
|
|
|
{
|
|
247
|
|
|
?>
|
|
248
|
|
|
<script type="text/javascript">
|
|
249
|
|
|
jQuery(document).ready(function () {
|
|
250
|
|
|
geoDirMapSlide();
|
|
251
|
|
|
jQuery(window).resize(function () {
|
|
252
|
|
|
jQuery('.geodir_map_container.geodir-map-home-page').each(function () {
|
|
253
|
|
|
jQuery(this).find('.geodir-map-posttype-list').css({'width': 'auto'});
|
|
254
|
|
|
jQuery(this).find('.map-places-listing ul.place-list').css({'margin-left': '0px'});
|
|
255
|
|
|
geoDirMapPrepare(this);
|
|
256
|
|
|
});
|
|
257
|
|
|
});
|
|
258
|
|
|
});
|
|
259
|
|
|
function geoDirMapPrepare($thisMap) {
|
|
260
|
|
|
var $objMpList = jQuery($thisMap).find('.geodir-map-posttype-list');
|
|
261
|
|
|
var $objPlList = jQuery($thisMap).find('.map-places-listing ul.place-list');
|
|
262
|
|
|
var wArrL = parseFloat(jQuery($thisMap).find('.geodir-map-navigation .geodir-leftarrow').outerWidth(true));
|
|
263
|
|
|
var wArrR = parseFloat(jQuery($thisMap).find('.geodir-map-navigation .geodir-rightarrow').outerWidth(true));
|
|
264
|
|
|
var ptw1 = parseFloat($objMpList.outerWidth(true));
|
|
265
|
|
|
$objMpList.css({'margin-left': wArrL + 'px'});
|
|
266
|
|
|
$objMpList.attr('data-width', ptw1);
|
|
267
|
|
|
ptw1 = ptw1 - (wArrL + wArrR);
|
|
268
|
|
|
$objMpList.width(ptw1);
|
|
269
|
|
|
var ptw = $objPlList.width();
|
|
270
|
|
|
var ptw2 = 0;
|
|
271
|
|
|
$objPlList.find('li').each(function () {
|
|
272
|
|
|
var ptw21 = jQuery(this).outerWidth(true);
|
|
273
|
|
|
ptw2 += parseFloat(ptw21);
|
|
274
|
|
|
});
|
|
275
|
|
|
var doMov = parseFloat(ptw * 0.75);
|
|
276
|
|
|
ptw2 = ptw2 + ( ptw2 * 0.05 );
|
|
277
|
|
|
var maxMargin = ptw2 - ptw;
|
|
278
|
|
|
$objPlList.attr('data-domov', doMov);
|
|
279
|
|
|
$objPlList.attr('data-maxMargin', maxMargin);
|
|
280
|
|
|
}
|
|
281
|
|
|
function geoDirMapSlide() {
|
|
282
|
|
|
jQuery('.geodir_map_container.geodir-map-home-page').each(function () {
|
|
283
|
|
|
var $thisMap = this;
|
|
284
|
|
|
geoDirMapPrepare($thisMap);
|
|
285
|
|
|
var $objPlList = jQuery($thisMap).find('.map-places-listing ul.place-list');
|
|
286
|
|
|
jQuery($thisMap).find('.geodir-leftarrow a').click(function (e) {
|
|
287
|
|
|
e.preventDefault();
|
|
288
|
|
|
var cm = $objPlList.css('margin-left');
|
|
289
|
|
|
var doMov = parseFloat($objPlList.attr('data-domov'));
|
|
290
|
|
|
var maxMargin = parseFloat($objPlList.attr('data-maxMargin'));
|
|
291
|
|
|
cm = parseFloat(cm);
|
|
292
|
|
|
if (cm == 0 || maxMargin < 0) {
|
|
293
|
|
|
return;
|
|
294
|
|
|
}
|
|
295
|
|
|
domargin = cm + doMov;
|
|
296
|
|
|
if (domargin > 0) {
|
|
297
|
|
|
domargin = 0;
|
|
298
|
|
|
}
|
|
299
|
|
|
$objPlList.animate({'margin-left': domargin + 'px'}, 1000);
|
|
300
|
|
|
});
|
|
301
|
|
|
jQuery($thisMap).find('.geodir-rightarrow a').click(function (e) {
|
|
302
|
|
|
e.preventDefault();
|
|
303
|
|
|
var cm = $objPlList.css('margin-left');
|
|
304
|
|
|
var doMov = parseFloat($objPlList.attr('data-domov'));
|
|
305
|
|
|
var maxMargin = parseFloat($objPlList.attr('data-maxMargin'));
|
|
306
|
|
|
cm = parseFloat(cm);
|
|
307
|
|
|
domargin = cm - doMov;
|
|
308
|
|
|
if (cm == ( maxMargin * -1 ) || maxMargin < 0) {
|
|
309
|
|
|
return;
|
|
310
|
|
|
}
|
|
311
|
|
|
if (( domargin * -1 ) > maxMargin) {
|
|
312
|
|
|
domargin = maxMargin * -1;
|
|
313
|
|
|
}
|
|
314
|
|
|
$objPlList.animate({'margin-left': domargin + 'px'}, 1000);
|
|
315
|
|
|
});
|
|
316
|
|
|
});
|
|
317
|
|
|
}
|
|
318
|
|
|
</script>
|
|
319
|
|
|
<?php
|
|
320
|
|
|
}
|
|
321
|
|
|
} // class geodir_homepage_map
|
|
322
|
|
|
|
|
323
|
|
|
register_widget('geodir_homepage_map');
|
|
324
|
|
|
?> |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.