From d67fb1c79630959b522135d58c1a3b6d7fc09eeb Mon Sep 17 00:00:00 2001 From: Michael Stenta Date: Tue, 24 Sep 2019 11:49:47 -0400 Subject: [PATCH] Refactor MapKnitter module to use a farmOS-map behavior. --- .../farmOS.map.behaviors.mapknitter.js | 16 ++++++ ...m_mapknitter.default_openlayers_layers.inc | 55 ------------------- ...arm_mapknitter.default_openlayers_maps.inc | 37 ------------- ..._mapknitter.default_openlayers_sources.inc | 41 -------------- .../farm_mapknitter.farm_map.inc | 39 +++++++++++++ .../farm_mapknitter/farm_mapknitter.module | 23 -------- 6 files changed, 55 insertions(+), 156 deletions(-) create mode 100644 modules/farm/farm_mapknitter/farmOS.map.behaviors.mapknitter.js delete mode 100644 modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_layers.inc delete mode 100644 modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_maps.inc delete mode 100644 modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_sources.inc create mode 100644 modules/farm/farm_mapknitter/farm_mapknitter.farm_map.inc diff --git a/modules/farm/farm_mapknitter/farmOS.map.behaviors.mapknitter.js b/modules/farm/farm_mapknitter/farmOS.map.behaviors.mapknitter.js new file mode 100644 index 000000000..fbac91e43 --- /dev/null +++ b/modules/farm/farm_mapknitter/farmOS.map.behaviors.mapknitter.js @@ -0,0 +1,16 @@ +(function () { + farmOS.map.behaviors.mapknitter = { + attach: function (instance) { + var slug = Drupal.settings.farm_map.behaviors.mapknitter.slug; + var title = Drupal.settings.farm_map.behaviors.mapknitter.title; + var opts = { + title: title, + url: 'https://mapknitter.org/tms/' + slug + '/{z}/{x}/{-y}.png', + group: 'MapKnitter', + visible: true, + }; + instance.addLayer('xyz', opts); + }, + weight: -101, + }; +}()); diff --git a/modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_layers.inc b/modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_layers.inc deleted file mode 100644 index 9068e0af4..000000000 --- a/modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_layers.inc +++ /dev/null @@ -1,55 +0,0 @@ -disabled = FALSE; /* Edit this to true to make a default ol_layer disabled initially */ - $ol_layer->api_version = 1; - $ol_layer->machine_name = 'farm_mapknitter_layer'; - $ol_layer->name = check_plain($title); - $ol_layer->description = ''; - $ol_layer->factory_service = 'openlayers.Layer:Tile'; - $ol_layer->options = array( - 'source' => 'farm_mapknitter_source', - 'visible' => 1, - ); - $export['farm_mapknitter_layer'] = $ol_layer; - - // Add a layer group for MapKnitter layers. - $ol_layer = new stdClass(); - $ol_layer->disabled = FALSE; /* Edit this to true to make a default ol_layer disabled initially */ - $ol_layer->api_version = 1; - $ol_layer->machine_name = 'farm_mapknitter_layer_group'; - $ol_layer->name = 'Farm MapKnitter Layer Group'; - $ol_layer->description = ''; - $ol_layer->factory_service = 'openlayers.Layer:Group'; - $ol_layer->options = array( - 'source' => '', - 'visible' => 1, - 'grouptitle' => 'MapKnitter layers', - 'grouplayers' => array( - 'farm_mapknitter_layer', - ), - ); - $export['farm_mapknitter_layer_group'] = $ol_layer; - - return $export; -} diff --git a/modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_maps.inc b/modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_maps.inc deleted file mode 100644 index 586e0ce83..000000000 --- a/modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_maps.inc +++ /dev/null @@ -1,37 +0,0 @@ -options['layers'][] = 'farm_mapknitter_layer_group'; - } - } -} diff --git a/modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_sources.inc b/modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_sources.inc deleted file mode 100644 index 238d3e6fd..000000000 --- a/modules/farm/farm_mapknitter/farm_mapknitter.default_openlayers_sources.inc +++ /dev/null @@ -1,41 +0,0 @@ -disabled = FALSE; /* Edit this to true to make a default ol_source disabled initially */ - $ol_source->api_version = 1; - $ol_source->machine_name = 'farm_mapknitter_source'; - $ol_source->name = 'Farm MapKnitter Source'; - $ol_source->description = ''; - $ol_source->factory_service = 'openlayers.Source:XYZ'; - $ol_source->options = array( - 'url' => $url, - ); - $export['farm_mapknitter_source'] = $ol_source; - - return $export; -} diff --git a/modules/farm/farm_mapknitter/farm_mapknitter.farm_map.inc b/modules/farm/farm_mapknitter/farm_mapknitter.farm_map.inc new file mode 100644 index 000000000..5a04abb88 --- /dev/null +++ b/modules/farm/farm_mapknitter/farm_mapknitter.farm_map.inc @@ -0,0 +1,39 @@ + array( + 'js' => 'farmOS.map.behaviors.mapknitter.js', + ), + ); +} + +/** + * Implements hook_farm_map_behavior_settings(). + */ +function farm_mapknitter_farm_map_behavior_settings($behavior) { + $settings = array(); + if ($behavior == 'mapknitter') { + $settings['slug'] = variable_get('farm_mapknitter_slug', ''); + $settings['title'] = variable_get('farm_mapknitter_title', ''); + } + return $settings; +} + +/** + * Implements hook_farm_map_view(). + */ +function farm_mapknitter_farm_map_view($name, $element) { + + // If a MapKnitter slug and title are set, add the layer to all farmOS maps. + if (variable_get('farm_mapknitter_slug', FALSE) && variable_get('farm_mapknitter_title', FALSE)) { + farm_map_add_behavior('mapknitter'); + } +} diff --git a/modules/farm/farm_mapknitter/farm_mapknitter.module b/modules/farm/farm_mapknitter/farm_mapknitter.module index 6ccb8639d..adfee75e6 100644 --- a/modules/farm/farm_mapknitter/farm_mapknitter.module +++ b/modules/farm/farm_mapknitter/farm_mapknitter.module @@ -71,29 +71,6 @@ function farm_mapknitter_form($form, &$form_state) { '#default_value' => variable_get('farm_mapknitter_slug', ''), ); - $form['#submit'][] = 'farm_mapknitter_form_submit'; - return system_settings_form($form); } -/** - * Farm MapKnitter form submit function. - */ -function farm_mapknitter_form_submit($form, &$form_state) { - drupal_flush_all_caches(); -} - -/** - * Implements hook_ctools_plugin_api(). - */ -function farm_mapknitter_ctools_plugin_api($module = NULL, $api = NULL) { - if ($module == "openlayers" && $api == "default_openlayers_layers") { - return array("version" => "1"); - } - if ($module == "openlayers" && $api == "default_openlayers_maps") { - return array("version" => "1"); - } - if ($module == "openlayers" && $api == "default_openlayers_sources") { - return array("version" => "1"); - } -}