Open Data Catalog v2.0.0
DkanDataSettingsForm.php
Go to the documentation of this file.
1 <?php
2 
4 
5 use Drupal\Core\Form\ConfigFormBase;
6 use Drupal\Core\Form\FormStateInterface;
7 
14 class DkanDataSettingsForm extends ConfigFormBase {
15 
21  protected function getEditableConfigNames() {
22  return [
23  'dkan_data.settings',
24  ];
25  }
26 
32  public function getFormId() {
33  return 'dkan_data_settings_form';
34  }
35 
41  public function buildForm(array $form, FormStateInterface $form_state) {
42  $config = $this->config('dkan_data.settings');
43  $options = $this->retrieveSchemaProperties();
44  $default_values = $config->get('property_list');
45  $form['property_list'] = [
46  '#type' => 'checkboxes',
47  '#title' => $this->t('List of dataset properties with referencing and API endpoint'),
48  '#options' => $options,
49  '#default_value' => $default_values,
50  ];
51  return parent::buildForm($form, $form_state);
52  }
53 
60  public function retrieveSchemaProperties() : array {
61  // Create a json object from our schema.
62  $schemaRetriever = \Drupal::service('dkan_schema.schema_retriever');
63  $schema = $schemaRetriever->retrieve('dataset');
64  $schema_object = json_decode($schema);
65 
66  // Build a list of the schema properties' title and description.
67  $property_list = [];
68  foreach ($schema_object->properties as $property_id => $property_object) {
69  if (isset($property_object->title)) {
70  $property_list[$property_id] = "{$property_object->title} ({$property_id})";
71  }
72  else {
73  $property_list[$property_id] = ucfirst($property_id);
74  }
75  }
76 
77  return $property_list;
78  }
79 
85  public function submitForm(array &$form, FormStateInterface $form_state) {
86  parent::submitForm($form, $form_state);
87 
88  $this->config('dkan_data.settings')
89  ->set('property_list', $form_state->getValue('property_list'))
90  ->save();
91 
92  // Rebuild routes, without clearing all caches.
93  \Drupal::service("router.builder")->rebuild();
94  }
95 
96 }
Drupal\dkan_data\Form\DkanDataSettingsForm
Definition: DkanDataSettingsForm.php:14
Drupal\dkan_data\Form\DkanDataSettingsForm\getEditableConfigNames
getEditableConfigNames()
Definition: DkanDataSettingsForm.php:21
Drupal\dkan_data\Form\DkanDataSettingsForm\retrieveSchemaProperties
retrieveSchemaProperties()
Definition: DkanDataSettingsForm.php:60
Drupal\dkan_data\Form\DkanDataSettingsForm\getFormId
getFormId()
Definition: DkanDataSettingsForm.php:32
Drupal\dkan_data\Form\DkanDataSettingsForm\buildForm
buildForm(array $form, FormStateInterface $form_state)
Definition: DkanDataSettingsForm.php:41
Drupal\dkan_data\Form
Definition: DkanDataSettingsForm.php:3
Drupal\dkan_data\Form\DkanDataSettingsForm\submitForm
submitForm(array &$form, FormStateInterface $form_state)
Definition: DkanDataSettingsForm.php:85