diff --git a/admin_status.services.yml b/admin_status.services.yml index 8a260e2..f65ecd4 100644 --- a/admin_status.services.yml +++ b/admin_status.services.yml @@ -1,9 +1,7 @@ # This declares the plugin manager to the service container. For background -# information on the service container, see -# http://symfony.com/doc/current/book/service_container.html. -# Services declaration files such as this one are compiled to PHP code in -# sites/default/files/php/service_container, so changes here require that folder -# to be deleted in order to have Drupal notice them. +# information on the service container, see https://www.drupal.org/node/2133171. +# Changes here require that the cache be cleared in order to have Drupal notice +# them. services: # The machine name of the service. This is the string that must be passed to # Drupal::service() to get the instantiated plugin manager. @@ -18,7 +16,7 @@ services: arguments: ['@container.namespaces', '@cache.default', '@module_handler'] admin_status.admin_status_form: class: Drupal\admin_status\Form\AdminStatusForm - arguments: ["@plugin.manager.admin_status"] + arguments: ["@config.factory", "@plugin.manager.admin_status"] admin_status.eventsubscriber: class: Drupal\admin_status\EventSubscriber\AdminStatusEventSubscriber arguments: ["@plugin.manager.admin_status"] diff --git a/src/Form/AdminStatusForm.php b/src/Form/AdminStatusForm.php index d45672b..441276e 100644 --- a/src/Form/AdminStatusForm.php +++ b/src/Form/AdminStatusForm.php @@ -3,10 +3,14 @@ namespace Drupal\admin_status\Form; use Drupal\Component\Plugin\PluginManagerInterface; +use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; use Symfony\Component\DependencyInjection\ContainerInterface; +/** + * The Admin Status configuration form. + */ class AdminStatusForm extends ConfigFormBase { /** @@ -17,23 +21,32 @@ class AdminStatusForm extends ConfigFormBase { protected $adminStatusManager; /** - * AdminStatusForm constructor. + * Constructs an AdminStatusForm object. * + * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory + * The factory for configuration objects. * @param \Drupal\Component\Plugin\PluginManagerInterface $pluginManager - * The Admin Status PluginManager service. + * The Admin Status PluginManager service. */ - public function __construct(PluginManagerInterface $pluginManager) { + public function __construct(ConfigFactoryInterface $config_factory, PluginManagerInterface $pluginManager) { + parent::__construct($config_factory); $this->adminStatusManager = $pluginManager; } /** - * Create the AdminStatus form. + * Creates the AdminStatus form. * * @param \Symfony\Component\DependencyInjection\ContainerInterface $container + * The Symfony container. + * * @return static + * The Admin Status plugin manager. */ public static function create(ContainerInterface $container) { - return new static($container->get('plugin.manager.admin_status')); + return new static( + $container->get('config.factory'), + $container->get('plugin.manager.admin_status') + ); } /** @@ -44,7 +57,7 @@ class AdminStatusForm extends ConfigFormBase { * conjunction with the trait's config() method. */ protected function getEditableConfigNames() { - return array('admin_status.settings'); + return ['admin_status.settings']; } /** @@ -61,8 +74,12 @@ class AdminStatusForm extends ConfigFormBase { * Builds the admin form. * * @param array $form + * A form array. * @param \Drupal\Core\Form\FormStateInterface $form_state + * A form state array. + * * @return array + * A form array. */ public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config('admin_status.settings'); @@ -76,9 +93,7 @@ class AdminStatusForm extends ConfigFormBase { // Make all the form data come back in a tree, so we can give each plugin // its own data. - $form['plugins'] = array( - '#tree' => TRUE, - ); + $form['plugins'] = ['#tree' => TRUE]; // The array of plugin definitions is keyed by plugin id, so we can just use // that to load our plugins. @@ -88,12 +103,12 @@ class AdminStatusForm extends ConfigFormBase { // object (have its properties examined, methods called, etc). $plugin = $this->adminStatusManager->createInstance( $plugin_id, - array('of' => 'configuration values') + ['of' => 'configuration values'] ); // If there is no config data for the plugin, create a default. if (empty($plugin_status[$plugin_id])) { - $plugin_status[$plugin_id] = array('enabled' => FALSE); + $plugin_status[$plugin_id] = ['enabled' => FALSE]; } // Build the display name for the plugin. @@ -101,11 +116,11 @@ class AdminStatusForm extends ConfigFormBase { $admin_status_plugin_definition['name'] : $plugin_id; // All info for a given plugin occurs in its own fieldset. - $form['plugins'][$plugin_id] = array( + $form['plugins'][$plugin_id] = [ '#type' => 'details', '#open' => TRUE, '#title' => $name, - ); + ]; $form['plugins'][$plugin_id]['description'] = [ '#type' => 'markup', @@ -113,21 +128,21 @@ class AdminStatusForm extends ConfigFormBase { ]; // Build the enable checkbox. - $form['plugins'][$plugin_id]['enabled'] = array( + $form['plugins'][$plugin_id]['enabled'] = [ '#type' => 'checkbox', '#title' => $this->t('Enable'), '#default_value' => $plugin_status[$plugin_id]['enabled'], - ); + ]; // Get the existing config data or set a default. $savedConfig = $plugin_status[$plugin_id]['config']; if (empty($savedConfig)) { - $savedConfig = array(); + $savedConfig = []; } // Call the plugin to provide its config form, if any, and if there is // some form, put it in its own fieldset. - $subform = $plugin->configForm(array(), $form_state, $savedConfig); + $subform = $plugin->configForm([], $form_state, $savedConfig); if (!empty($subform)) { $form['plugins'][$plugin_id]['config'] = [ '#type' => 'fieldset', @@ -152,18 +167,20 @@ class AdminStatusForm extends ConfigFormBase { * Validates form data. * * @param array $form + * A form array. * @param \Drupal\Core\Form\FormStateInterface $form_state + * A form state array. */ public function validateForm(array &$form, FormStateInterface $form_state) { // Get all of the form data. $values = $form_state->getValues(); // Run through each plugin's validate function. - foreach($values['plugins'] as $k => $v) { - // Get the plugin + foreach ($values['plugins'] as $k => $v) { + // Get the plugin. $plugin = $this->adminStatusManager->createInstance( $k, - array('of' => 'configuration values') + ['of' => 'configuration values'] ); // Pass in the form, form_state, and the form values for this plugin. @@ -177,18 +194,20 @@ class AdminStatusForm extends ConfigFormBase { * Handles submission of form data. * * @param array $form + * A form array. * @param \Drupal\Core\Form\FormStateInterface $form_state + * A form state array. */ public function submitForm(array &$form, FormStateInterface $form_state) { // Get all of the form data. $values = $form_state->getValues(); // Initialize array to hold config data. - $plugin_status = array(); - foreach($values['plugins'] as $k => $v) { + $plugin_status = []; + foreach ($values['plugins'] as $k => $v) { $plugin_status[$k]['enabled'] = !empty($v['enabled']); $plugin = $this->adminStatusManager->createInstance( $k, - array('of' => 'configuration values') + ['of' => 'configuration values'] ); // Let the plugin build its own config data to save. $configValues = $plugin->configSubmitForm($form, $form_state, $v['config']); @@ -197,8 +216,8 @@ class AdminStatusForm extends ConfigFormBase { // Save all config data. $this->config('admin_status.settings') - ->set('plugin_status', $plugin_status) - ->save(); + ->set('plugin_status', $plugin_status) + ->save(); } }