public function FontSettingsForm::buildForm in @font-your-face 8.3
Defines the settings form for Font entities.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array Form definition array.
Overrides ConfigFormBase::buildForm
File
- src/
Form/ FontSettingsForm.php, line 47
Class
- FontSettingsForm
- Form to define the fonts.
Namespace
Drupal\fontyourface\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this
->config('fontyourface.settings');
$form['Font_settings']['#markup'] = 'Settings form for @font-your-face. Support modules can use this form for settings or to import fonts.';
$form['load_all_enabled_fonts'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Load all enabled fonts'),
'#default_value' => (int) $config
->get('load_all_enabled_fonts'),
'#description' => $this
->t('This will load all fonts that have been enabled regardless of theme. Warning: this may add considerable download weight to your pages depending on the number of enabled fonts'),
];
$themes = [];
foreach (\Drupal::service('theme_handler')
->listInfo() as $name => $theme) {
if ($theme->status === 1) {
$themes[$name] = $theme->info['name'];
}
}
$form['load_on_themes'] = [
'#type' => 'select',
'#title' => $this
->t('Load fonts only on selected themes'),
'#options' => $themes,
'#default_value' => $config
->get('load_on_themes'),
'#description' => $this
->t('Select only the themes on which you need to enable all fonts. Leave blank to load it on all themes.'),
'#states' => [
'visible' => [
':input[name="load_all_enabled_fonts"]' => [
'checked' => TRUE,
],
],
],
'#multiple' => TRUE,
];
$form['imports'] = [
'#type' => 'fieldset',
'#title' => 'Import',
'#collapsible' => FALSE,
];
// Set the module weight. There is some general Drupal funk around module
// weights.
module_set_weight('fontyourface', 1);
foreach (\Drupal::moduleHandler()
->getImplementations('fontyourface_api') as $module_name) {
module_set_weight($module_name, 10);
}
foreach (\Drupal::moduleHandler()
->getImplementations('fontyourface_import') as $module_name) {
$form['imports']['import_' . $module_name] = [
'#type' => 'submit',
'#value' => $this
->t('Import from @module', [
'@module' => $module_name,
]),
'#attributes' => [
'style' => 'margin: 10px;',
],
'#prefix' => '<div>',
'#suffix' => '</div>',
];
}
$form['imports']['import'] = [
'#type' => 'submit',
'#value' => $this
->t('Import all fonts'),
'#weight' => 10,
];
return parent::buildForm($form, $form_state);
}