From: <lph...@us...> - 2011-11-14 19:38:47
|
Revision: 38809 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=38809&view=rev Author: lphuberdeau Date: 2011-11-14 19:38:41 +0000 (Mon, 14 Nov 2011) Log Message: ----------- [ENH]?\194?\160Allow to select displayed controls from the map plugin Modified Paths: -------------- trunk/lib/jquery_tiki/tiki-maps.js trunk/lib/wiki-plugins/wikiplugin_map.php Modified: trunk/lib/jquery_tiki/tiki-maps.js =================================================================== --- trunk/lib/jquery_tiki/tiki-maps.js 2011-11-14 19:17:03 UTC (rev 38808) +++ trunk/lib/jquery_tiki/tiki-maps.js 2011-11-14 19:38:41 UTC (rev 38809) @@ -84,7 +84,14 @@ $.fn.createMap = function () { this.each(function () { - var id = $(this).attr('id'), container = this; + var id = $(this).attr('id'), container = this, desiredControls; + desiredControls = $(this).data('map-controls'); + if (desiredControls === undefined) { + desiredControls = 'controls,layers,search_location,current_location,streetview'; + } + + desiredControls = desiredControls.split(','); + var setupHeight = function () { var height = $(container).height(); if (0 === height) { @@ -120,7 +127,7 @@ map.addLayer(container.markers); map.zoomToMaxExtent(); - if (layers.length > 1) { + if (layers.length > 1 && -1 !== $.inArray('layers', desiredControls)) { map.addControl(new OpenLayers.Control.LayerSwitcher()); } @@ -167,7 +174,7 @@ container.markerIcons.loadMarker('selection', 'http://www.openlayers.org/dev/img/marker-gold.png'); if (navigator.geolocation && navigator.geolocation.getCurrentPosition) { - $(container).after($('<a/>') + container.toMyLocation = $('<a/>') .css('display', 'block') .attr('href', '') .click(function () { @@ -188,10 +195,14 @@ }); return false; }) - .text(tr('To My Location'))); + .text(tr('To My Location')); + + if (-1 !== $.inArray('current_location', desiredControls)) { + $(container).after(container.toMyLocation); + } } - $(container).after($('<a/>') + container.searchLocation = $('<a/>') .css('display', 'block') .attr('href', '') .click(function () { @@ -216,8 +227,12 @@ } return false; }) - .text(tr('Search Location'))); + .text(tr('Search Location')); + if (-1 !== $.inArray('search_location', desiredControls)) { + $(container).after(container.searchLocation); + } + var field = $(container).data('target-field'); var central = null; @@ -291,7 +306,8 @@ } if (jqueryTiki.googleStreetView) { - var streetViewHandler, streetViewLink = $('<a/>') + var streetViewHandler; + container.googleStreetView = $('<a/>') .attr('href', '') .text(tr('Google StreetView')); @@ -375,12 +391,14 @@ streetViewHandler = new StreetViewHandler(); map.addControl(streetViewHandler); - streetViewLink.click(function () { + container.googleStreetView.click(function () { streetViewHandler.activate(); return false; }); - $(container).after(streetViewLink); + if (-1 !== $.inArray('streetview', desiredControls)) { + $(container).after(container.googleStreetView); + } } $(container).closest('.tab, #appframe').find('form.search-box') Modified: trunk/lib/wiki-plugins/wikiplugin_map.php =================================================================== --- trunk/lib/wiki-plugins/wikiplugin_map.php 2011-11-14 19:17:03 UTC (rev 38808) +++ trunk/lib/wiki-plugins/wikiplugin_map.php 2011-11-14 19:38:41 UTC (rev 38809) @@ -22,6 +22,14 @@ 'filter' => 'striptags', 'default' => 'center', ), + 'controls' => array( + 'required' => false, + 'name' => tr('Controls'), + 'description' => tr('Allows to specify which map controls will be displayed on the map and around it.'), + 'filter' => 'word', + 'separator' => ',', + 'default' => wp_map_default_controls(), + ), 'width' => array( 'required' => false, 'name' => tra('Width'), @@ -66,7 +74,8 @@ return wp_map_mapserver($params); } - require_once 'lib/smarty_tiki/modifier.escape.php'; + $smarty = TikiLib::lib('smarty'); + $smarty->loadPlugin('smarty_modifier_escape'); $width = '100%'; if (isset($params['width'])) { @@ -78,9 +87,20 @@ $height = intval($params['height']) . 'px'; } + if (! isset($params['controls'])) { + $params['controls'] = wp_map_default_controls(); + } + + if (! is_array($params['controls'])) { + $params['controls'] = explode(',', $params['controls']); + } + + $controls = array_intersect($params['controls'], wp_map_available_controls()); + $controls = implode(',', $controls); + TikiLib::lib('header')->add_map(); $scope = smarty_modifier_escape(wp_map_getscope($params)); - return "<div class=\"map-container\" data-marker-filter=\"$scope\" style=\"width: {$width}; height: {$height};\"></div>"; + return "<div class=\"map-container\" data-marker-filter=\"$scope\" data-map-controls=\"{$controls}\" style=\"width: {$width}; height: {$height};\"></div>"; } function wp_map_getscope($params) @@ -146,3 +166,20 @@ } return $map; } + +function wp_map_default_controls() +{ + return 'controls,layers,search_location,current_location,streetview'; +} + +function wp_map_available_controls() +{ + return array( + 'controls', + 'layers', + 'search_location', + 'current_location', + 'streetview', + ); +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |