<?php namespace Drupal\wcm8_siteinfo\Form; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; /** * Defines a form that configures module settings. */ class ModuleConfigurationForm extends ConfigFormBase { /** * {@inheritdoc} */ public function getFormId() { return 'wcm8_siteinfo_admin_settings'; } /** * {@inheritdoc} */ protected function getEditableConfigNames() { return [ 'wcm8_siteinfo.settings', ]; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config('wcm8_siteinfo.settings'); $site_config = $this->config('system.site'); $site_name = $site_config->get('name'); $site_mail = $site_config->get('mail'); $form['siteinfo'] = array( '#type' => 'vertical_tabs', '#default_tab' => 'edit-basic', ); // Basic Information tab $form['basic'] = array( '#type' => 'details', '#title' => $this->t('Basic Information'), '#group' => 'siteinfo', ); $form['basic']['prefix'] = array( '#type' => 'textfield', '#title' => $this->t('Site Name Prefix'), '#description' => $this->t('The prefix for your site name - for example, <i>Department of</i> ... '), '#size' => '60', '#maxlength' => '60', '#default_value' => $config->get('prefix'), ); $form['basic']['site_name'] = array( '#type' => 'textfield', '#title' => $this->t('Site Name'), '#description' => $this->t('Main name for the site - it should be your college, department or organization name.'), '#size' => '60', '#maxlength' => '75', '#default_value' => $site_name, ); // Contact Information tab $form['contact'] = array( '#type' => 'details', '#title' => $this->t('Contact Information'), '#group' => 'siteinfo', ); $form['contact']['address_1'] = array( '#type' => 'textfield', '#title' => $this->t('Address Line 1'), '#description' => $this->t('First line of address. Room number and building if on campus.'), '#default_value' => $config->get('address_1'), ); $form['contact']['address_2'] = array( '#type' => 'textfield', '#title' => $this->t('Address Line 2'), '#description' => $this->t('Second line of address. Street address if on campus.'), '#default_value' => $config->get('address_2'), ); $form['contact']['city'] = array( '#type' => 'textfield', '#title' => $this->t('City'), '#default_value' => $config->get('city'), ); $form['contact']['state'] = array( '#type' => 'textfield', '#title' => $this->t('State'), '#default_value' => $config->get('state'), ); $form['contact']['zip'] = array( '#type' => 'textfield', '#title' => $this->t('Zip Code'), '#default_value' => $config->get('zip'), ); $form['contact']['phone'] = array( '#type' => 'tel', '#title' => $this->t('Phone'), '#description' => $this->t('Main contact phone number for your site.'), '#default_value' => $config->get('phone'), ); $form['contact']['fax'] = array( '#type' => 'tel', '#title' => $this->t('Fax'), '#description' => $this->t('Fax number, if applicable.'), '#default_value' => $config->get('fax'), ); $form['contact']['email'] = array( '#type' => 'email', '#title' => $this->t('Email'), '#description' => $this->t('Main contact email for your site.'), '#default_value' => $site_mail, ); // Social Networking tab $form['social'] = array( '#type' => 'details', '#title' => $this->t('Social Networking'), '#group' => 'siteinfo', ); $form['social']['twitter'] = array( '#type' => 'textfield', '#title' => $this->t('Twitter'), '#default_value' => $config->get('twitter'), ); return parent::buildForm($form, $form_state); } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $values = $form_state->getValues(); $this->config('wcm8_siteinfo.settings') ->set('prefix', $values['prefix']) ->set('address_1', $values['address_1']) ->set('address_2', $values['address_2']) ->set('city', $values['city']) ->set('state', $values['state']) ->set('zip', $values['zip']) ->set('phone', $values['phone']) ->set('fax', $values['fax']) ->set('email', $values['email']) ->set('twitter', $values['twitter']) ->save(); parent::submitForm($form, $form_state); } }