-
Melissa Miller authoredMelissa Miller authored
ModuleConfigurationForm.php 4.62 KiB
<?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);
}
}