diff --git a/module_builder.module b/module_builder.module index b400664d76c2b7369b4d29083621ff30bae7c6ae..0cfd2bdd0d13a5d1dc8bb4a146c5b2a4f894d192 100644 --- a/module_builder.module +++ b/module_builder.module @@ -82,7 +82,7 @@ function module_builder_entity_type_build(array &$entity_types) { $entity_type->setFormClass('misc', ModuleMiscForm::class); } - $canonical_template = $entity_type->getLinkTemplate('canonical'); + $canonical_template = $entity_type->getLinkTemplate('edit-form'); foreach ($form_operations as $form_op) { // Allow the entity type to specify a form class. if (empty($entity_type->getFormClass($form_op))) { diff --git a/src/Entity/ModuleBuilderModule.php b/src/Entity/ModuleBuilderModule.php index 6527249c2641b4459adbd028d6bbc1d7fbc48626..d26ea71b12e967a54f9a8adaa9de616d338d1be9 100644 --- a/src/Entity/ModuleBuilderModule.php +++ b/src/Entity/ModuleBuilderModule.php @@ -40,7 +40,6 @@ use Drupal\Core\Config\Entity\ConfigEntityBase; * "data", * }, * links = { - * "canonical" = "/admin/config/development/module_builder/manage/{module_builder_module}", * "collection" = "/admin/config/development/module_builder", * "add-form" = "/admin/config/development/module_builder/add", * "edit-form" = "/admin/config/development/module_builder/manage/{module_builder_module}", diff --git a/src/Form/ComponentSectionForm.php b/src/Form/ComponentSectionForm.php index 21c8dbde46a026b9f5497c9fa166675c8939cc71..4005784df792076e4782fae870f8fbef7b301003 100644 --- a/src/Form/ComponentSectionForm.php +++ b/src/Form/ComponentSectionForm.php @@ -114,7 +114,7 @@ class ComponentSectionForm extends ComponentFormBase { $form[$component_type]['#tree'] = TRUE; foreach ($component_properties_to_use as $property_name) { - $this->buildFormElement($form[$component_type], $form_state, $component_data->{$property_name}); + $this->buildDataItemFormElement($form[$component_type], $form_state, $component_data->{$property_name}); } // Put the data back into the form state, as the building of the form @@ -163,7 +163,7 @@ class ComponentSectionForm extends ComponentFormBase { * @param \MutableTypedData\Data\DataItem $data * The data item. */ - protected function buildFormElement(&$form, FormStateInterface $form_state, DataItem $data) { + protected function buildDataItemFormElement(&$form, FormStateInterface $form_state, DataItem $data): void { $element = []; // Determine whether to handle multiple data as a single element or a set @@ -184,15 +184,15 @@ class ComponentSectionForm extends ComponentFormBase { // Case 1: multiple deltas each handled as a separate form element, within // a details wrapper. if ($use_multiple_deltas) { - $element = $this->buildMultipleDeltaFormElement($form, $form_state, $data); + $element = $this->buildMultipleDeltaFormElement($form_state, $data); } // Case 2: complex form element. elseif ($data->getDefinition()->isComplex()) { - $element = $this->buildComplexFormElement($form, $form_state, $data); + $element = $this->buildComplexFormElement($form_state, $data); } // Case 3: single form element. else { - $element = $this->buildSingleFormElement($form, $form_state, $data); + $element = $this->buildSingleFormElement($form_state, $data); } // Special case for hooks in a test module, as otherwise they're totally @@ -228,12 +228,12 @@ class ComponentSectionForm extends ComponentFormBase { /** * Builds a form element for data that uses a single element. * - * Helper for buildFormElement(). + * Helper for buildDataItemFormElement(). * - * Note that buildFormElement() is responsible for some attributes of the + * Note that buildDataItemFormElement() is responsible for some attributes of the * element. */ - protected function buildSingleFormElement(&$form, FormStateInterface $form_state, DataItem $data) { + protected function buildSingleFormElement(FormStateInterface $form_state, DataItem $data): array { $element = []; // Case 3A: element with options. @@ -356,7 +356,7 @@ class ComponentSectionForm extends ComponentFormBase { $element += [ '#type' => 'textarea', '#title' => $data->getLabel(), - '#description' => $data->getDescription(), + '#description' => $data->getDescription() . ' ' . t("Enter one item per line."), '#default_value' => implode("\n", $data->export()), ]; } @@ -378,6 +378,10 @@ class ComponentSectionForm extends ComponentFormBase { $element['#required'] = TRUE; } + if ($data->getDefault()) { + $element['#description'] .= ' ' . t("Leave blank for a default value."); + } + $element['#attributes']['data-typed-data-address'] = $data->getAddress(); // dsm($data->getDefault()); @@ -418,12 +422,12 @@ class ComponentSectionForm extends ComponentFormBase { /** * Builds a multi-valued form element. * - * Helper for buildFormElement(). + * Helper for buildDataItemFormElement(). * - * Note that buildFormElement() is responsible for some attributes of the + * Note that buildDataItemFormElement() is responsible for some attributes of the * element. */ - protected function buildMultipleDeltaFormElement(&$form, FormStateInterface $form_state, DataItem $data) { + protected function buildMultipleDeltaFormElement(FormStateInterface $form_state, DataItem $data): array { // Set up a wrapper for AJAX. $wrapper_id = Html::getId($data->getAddress() . '-add-more-wrapper'); @@ -439,7 +443,7 @@ class ComponentSectionForm extends ComponentFormBase { ]; foreach ($data as $delta => $delta_item) { - $this->buildFormElement($element, $form_state, $delta_item); + $this->buildDataItemFormElement($element, $form_state, $delta_item); // Set the label on each delta item to differentiate it from the overall // element label. @@ -522,12 +526,12 @@ class ComponentSectionForm extends ComponentFormBase { /** * Builds a form element with multiple child elements. * - * Helper for buildFormElement(). + * Helper for buildDataItemFormElement(). * - * Note that buildFormElement() is responsible for some attributes of the + * Note that buildDataItemFormElement() is responsible for some attributes of the * element. */ - protected function buildComplexFormElement(&$form, FormStateInterface $form_state, DataItem $data) { + protected function buildComplexFormElement(FormStateInterface $form_state, DataItem $data): array { // Set up a wrapper for AJAX. $wrapper_id = Html::getId($data->getAddress() . '-complex-wrapper'); @@ -572,7 +576,7 @@ class ComponentSectionForm extends ComponentFormBase { } foreach ($data as $data_item) { - $this->buildFormElement($element, $form_state, $data_item); + $this->buildDataItemFormElement($element, $form_state, $data_item); } if (!$data->isRequired() && !$data->isEmpty() && !$data->isDelta()) { diff --git a/src/Form/ModuleHooksForm.php b/src/Form/ModuleHooksForm.php index 9022991cb961dcdd5b5c468c36078c781fc46b63..801d94ca342139258495e13c991eebc406a7662c 100644 --- a/src/Form/ModuleHooksForm.php +++ b/src/Form/ModuleHooksForm.php @@ -36,7 +36,7 @@ class ModuleHooksForm extends ComponentSectionForm { $entity_component_data = $this->getComponentDataObject(); if ($entity_component_data->hasProperty('hook_implementation_type')) { - $this->buildFormElement($form, $form_state, $entity_component_data->hook_implementation_type); + $this->buildDataItemFormElement($form, $form_state, $entity_component_data->hook_implementation_type); } $form['filter'] = [