diff --git a/config/install/geocoder.settings.yml b/config/install/geocoder.settings.yml index 75634e4..15bd608 100644 --- a/config/install/geocoder.settings.yml +++ b/config/install/geocoder.settings.yml @@ -1,2 +1,41 @@ cache: 1 plugins_options: '{}' +providers: + arcgisonline: + api_key: '[KEY]' + bingmaps: + api_key: '[KEY]' + file: + api_key: '[KEY]' + freegeoip: + api_key: '[KEY]' + geoip: + api_key: '[KEY]' + geonames: + api_key: '[KEY]' + geoplugin: + api_key: '[KEY]' + googlemaps: + api_key: '[KEY]' + hostip: + api_key: '[KEY]' + ipinfodb: + api_key: '[KEY]' + mapquest: + api_key: '[KEY]' + maxmind: + api_key: '[KEY]' + nominatim: + api_key: '[KEY]' + opencage: + api_key: '[KEY]' + openstreetmap: + api_key: '[KEY]' + random: + api_key: '[KEY]' + tomtom: + api_key: '[KEY]' + yandex: + api_key: '[KEY]' diff --git a/geocoder.links.menu.yml b/geocoder.links.menu.yml index 6ec2db5..0a5f9a1 100644 --- a/geocoder.links.menu.yml +++ b/geocoder.links.menu.yml @@ -1,6 +1,6 @@ geocoder.settings: title: 'Geocoder configuration' description: 'Configure the Geocoder module.' + parent: system.admin_config_system route_name: geocoder.settings weight: 10 - parent: system.admin_config_system diff --git a/geocoder.links.task.yml b/geocoder.links.task.yml new file mode 100644 index 0000000..653628d --- /dev/null +++ b/geocoder.links.task.yml @@ -0,0 +1,10 @@ +geocoder.settings: + route_name: geocoder.settings + title: 'Settings' + base_route: geocoder.settings + weight: -1 + +geocoder.settings_api_keys: + route_name: geocoder.settings_api_keys + title: 'API keys' + base_route: geocoder.settings diff --git a/geocoder.routing.yml b/geocoder.routing.yml index c5f9489..b194aac 100644 --- a/geocoder.routing.yml +++ b/geocoder.routing.yml @@ -5,3 +5,11 @@ geocoder.settings: _title: 'Geocoder configuration' requirements: _permission: 'administer site configuration' + +geocoder.settings_api_keys: + path: '/admin/config/system/geocoder/api-keys' + defaults: + _form: 'Drupal\geocoder\Plugin\Geocoder\ProviderAPIKeysForm' + _title: 'API Keys' + requirements: + _permission: 'access administration pages' diff --git a/src/Plugin/Geocoder/Provider/GoogleMaps.php b/src/Plugin/Geocoder/Provider/GoogleMaps.php index 613331a..7711d44 100644 --- a/src/Plugin/Geocoder/Provider/GoogleMaps.php +++ b/src/Plugin/Geocoder/Provider/GoogleMaps.php @@ -19,4 +19,21 @@ use Drupal\geocoder\ProviderUsingHandlerWithAdapterBase; * } * ) */ -class GoogleMaps extends ProviderUsingHandlerWithAdapterBase {} +class GoogleMaps extends ProviderUsingHandlerWithAdapterBase { + /** + * {@inheritdoc} + */ + protected function getArguments() { + $arguments = parent::getArguments(); + $api_key = \Drupal::config('geocoder.google')->get('api_key'); + + // Add the API key to the provider arguments. + if (!empty($api_key)) { + // For proper API calls, we have to go through SSL. + $arguments[3] = true; + $arguments[4] = $api_key; + } + + return $arguments; + } +} diff --git a/src/Plugin/Geocoder/Provider/MapQuest.php b/src/Plugin/Geocoder/Provider/MapQuest.php index 4c41cca..03ba496 100644 --- a/src/Plugin/Geocoder/Provider/MapQuest.php +++ b/src/Plugin/Geocoder/Provider/MapQuest.php @@ -17,4 +17,21 @@ use Drupal\geocoder\ProviderUsingHandlerWithAdapterBase; * } * ) */ -class MapQuest extends ProviderUsingHandlerWithAdapterBase {} +class MapQuest extends ProviderUsingHandlerWithAdapterBase { + /** + * {@inheritdoc} + */ + protected function getArguments() { + $arguments = parent::getArguments(); + $api_key = \Drupal::config('geocoder.mapquest')->get('api_key'); + + // Add the API key to the provider arguments. + if (!empty($api_key)) { + // For proper API calls, we have to go through SSL. + $arguments[3] = true; + $arguments[4] = $api_key; + } + + return $arguments; + } +} diff --git a/src/Plugin/Geocoder/Provider/OpenStreetMap.php b/src/Plugin/Geocoder/Provider/OpenStreetMap.php index edfcfc6..186e055 100644 --- a/src/Plugin/Geocoder/Provider/OpenStreetMap.php +++ b/src/Plugin/Geocoder/Provider/OpenStreetMap.php @@ -13,4 +13,21 @@ use Drupal\geocoder\ProviderUsingHandlerWithAdapterBase; * handler = "\Geocoder\Provider\OpenStreetMap" * ) */ -class OpenStreetMap extends ProviderUsingHandlerWithAdapterBase {} +class OpenStreetMap extends ProviderUsingHandlerWithAdapterBase { + /** + * {@inheritdoc} + */ + protected function getArguments() { + $arguments = parent::getArguments(); + $api_key = \Drupal::config('geocoder.openstreetmap')->get('api_key'); + + // Add the API key to the provider arguments. + if (!empty($api_key)) { + // For proper API calls, we have to go through SSL. + $arguments[3] = true; + $arguments[4] = $api_key; + } + + return $arguments; + } +}