-
Melissa Miller authoredMelissa Miller authored
ModuleConfigurationForm.php 8.09 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');
$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('READ ONLY for now until this app is done. Main name for the site - it should be your college, department or organization name.'),
'#size' => '60',
'#maxlength' => '75',
'#default_value' => $site_name,
'#attributes' => array('readonly' => 'readonly'),
);
$form['basic']['admin_link'] = array(
'#type' => 'checkbox',
'#title' => $this->t('Admin Link'),
'#description' => $this->t('Check this box if you would like to display an admin login link in your site footer. It will be displayed discretely below the Footer Block.'),
'#default_value' => $config->get('admin_link'),
);
$form['basic']['footer_block'] = array(
'#type' => 'text_format',
'#title' => $this->t('Footer Block'),
'#description' => $this->t('This content will be displayed in the footer below the contact info. It can contain links or other pertinent information. This is a good place for your ADA statement.'),
'#format' => 'basic_html',
'#default_value' => $config->get('footer_block.value'),
);
// Contact Information tab
$form['contact'] = array(
'#type' => 'details',
'#title' => $this->t('Contact Information'),
'#description' => $this->t('Contact information will be displayed below the Ohio State wordmark in the site footer. Leave blank any fields that you do not want to be displayed.'),
'#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']['contact_email'] = array(
'#type' => 'email',
'#title' => $this->t('Email'),
'#description' => $this->t('Main contact email for your site.'),
'#default_value' => $config->get('contact_email'),
);
// Social Networking tab
$form['social'] = array(
'#type' => 'details',
'#title' => $this->t('Social Networking'),
'#description' => $this->t('Linked icons will be displayed in the site footer for each account url that you provide. Leave blank any fields that you do not want to be displayed.'),
'#group' => 'siteinfo',
);
$form['social']['twitter'] = array(
'#type' => 'textfield',
'#title' => $this->t('Twitter'),
'#description' => t('Enter the URL to your Twitter account.'),
'#size' => '70',
'#maxlength' => '150',
'#default_value' => $config->get('twitter'),
);
$form['social']['facebook'] = array(
'#type' => 'textfield',
'#title' => $this->t('Facebook'),
'#description' => t('Enter the URL to your Facebook account.'),
'#size' => '70',
'#maxlength' => '150',
'#default_value' => $config->get('facebook'),
);
$form['social']['linkedin'] = array(
'#type' => 'textfield',
'#title' => $this->t('LinkedIn'),
'#description' => t('Enter the URL to your LinkedIn account.'),
'#size' => '70',
'#maxlength' => '150',
'#default_value' => $config->get('linkedin'),
);
$form['social']['googleplus'] = array(
'#type' => 'textfield',
'#title' => $this->t('Google+'),
'#description' => t('Enter the URL to your Google+ account.'),
'#size' => '70',
'#maxlength' => '150',
'#default_value' => $config->get('googleplus'),
);
$form['social']['youtube'] = array(
'#type' => 'textfield',
'#title' => $this->t('YouTube'),
'#description' => t('Enter the URL to your YouTube account.'),
'#size' => '70',
'#maxlength' => '150',
'#default_value' => $config->get('youtube'),
);
$form['social']['instagram'] = array(
'#type' => 'textfield',
'#title' => $this->t('Instagram'),
'#description' => t('Enter the URL to your Instagram account.'),
'#size' => '70',
'#maxlength' => '150',
'#default_value' => $config->get('instagram'),
);
$form['social']['photos'] = array(
'#type' => 'textfield',
'#title' => $this->t('Photos'),
'#description' => t('Enter the URL to your photo sharing account (ex. Flickr, SmugMug, Picasa, etc...).'),
'#size' => '70',
'#maxlength' => '150',
'#default_value' => $config->get('photos'),
);
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('admin_link', $values['admin_link'])
->set('footer_block', $values['footer_block'])
->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['contact_email'])
->set('twitter', $values['twitter'])
->set('facebook', $values['facebook'])
->set('linkedin', $values['linkedin'])
->set('googleplus', $values['googleplus'])
->set('youtube', $values['youtube'])
->set('instagram', $values['instagram'])
->set('photos', $values['photos'])
->save();
parent::submitForm($form, $form_state);
}
}