revealjs-8.x-1.0-alpha2/src/Form/RevealjsAdminSettingsForm.php
src/Form/RevealjsAdminSettingsForm.php
<?php namespace Drupal\revealjs\Form; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; use Drupal\Core\Link; use Mailchimp\MailchimpAPIException; /** * Configure Revealjs global settings. */ class RevealjsAdminSettingsForm extends ConfigFormBase { /** * {@inheritdoc} */ public function getFormID() { return 'revealjs_admin_settings'; } protected function getEditableConfigNames() { return ['revealjs.settings']; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $config = $this->config('revealjs.settings'); $form['markdown'] = [ '#type' => 'checkbox', '#title' => $this->t('Enable %name plugin', ['%name' => 'Markdown']), '#default_value' => $config->get('markdown') ? $config->get('markdown') : FALSE, '#description' => $this->t('Interpret Markdown in section elements'), ]; $form['highlight'] = [ '#type' => 'checkbox', '#title' => $this->t('Enable %name plugin', ['%name' => 'Highlight']), '#default_value' => $config->get('highlight') ? $config->get('highlight') : FALSE, '#description' => $this->t('Syntax highlight in code elements'), ]; $form['search'] = [ '#type' => 'checkbox', '#title' => $this->t('Enable %name plugin', ['%name' => 'Search']), '#default_value' => $config->get('search') ? $config->get('search') : FALSE, '#description' => $this->t('Handles finding a text string anywhere in the slides.'), ]; $form['zoom'] = [ '#type' => 'checkbox', '#title' => $this->t('Enable %name plugin', ['%name' => 'Zoom']), '#default_value' => $config->get('zoom') ? $config->get('zoom') : FALSE, '#description' => $this->t('Zoom in and out with Alt+click'), ]; $form['notes'] = [ '#type' => 'checkbox', '#title' => $this->t('Enable %name plugin', ['%name' => 'Notes']), '#default_value' => $config->get('notes') ? $config->get('notes') : FALSE, '#description' => $this->t('Speaker notes'), ]; $form['math'] = [ '#type' => 'checkbox', '#title' => $this->t('Enable %name plugin', ['%name' => 'Mathjax']), '#default_value' => $config->get('math') ? $config->get('math') : FALSE, '#description' => $this->t('Render a beautiful math, check samples to the website of <a href="https://www.mathjax.org/#samples">Mathjax</a>'), ]; $states = [ 'visible' => [ ':input[name="math"]' => ['checked' => TRUE], ], 'invisible' => [ ':input[name="math"]' => ['checked' => FALSE], ], ]; $form['math_config'] = [ '#type' => 'select', '#title' => $this->t('Mathjax configuration'), '#states' => $states, '#default_value' => $config->get('math_config') ? $config->get('math_config') : 'none', '#options' => [ 'none' => $this->t('None'), 'TeX-MML-AM_CHTML' => $this->t('TeX-MML-AM_CHTML'), 'TeX-MML-AM_HTMLorMML' => $this->t('TeX-MML-AM_HTMLorMML'), 'TeX-MML-AM_SVG' => $this->t('TeX-MML-AM_SVG'), 'TeX-AMS-MML_HTMLorMML' => $this->t('TeX-AMS-MML_HTMLorMML'), 'TeX-AMS_CHTML' => $this->t('TeX-AMS_CHTML'), 'TeX-AMS_SVG' => $this->t('TeX-AMS_SVG'), 'TeX-AMS_HTML' => $this->t('Tex-AMS_HTML'), 'TeX-AMS_HTML-full' => $this->t('Tex-AMS_HTML-full'), 'MML_CHTML' => $this->t('MML_CHTML'), 'MML_SVG' => $this->t('MML_SVG'), 'MML_HTMLorMML' => $this->t('MML_HTMLorMML'), 'AM_CHTML' => $this->t('AM_CHTML'), 'AM_SVG' => $this->t('AM_SVG'), 'AM_HTMLorMML' => $this->t('AM_HTMLorMML'), 'TeX-AMS-MML_SVG' => $this->t('TeX-AMS-MML_SVG'), ], ]; $form['math_path'] = [ '#type' => 'hidden', '#default_value' => $config->get('math_path') ? $config->get('math_path') : 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js', ]; return parent::buildForm($form, $form_state); } /** * {@inheritdoc} */ public function validateForm(array &$form, FormStateInterface $form_state) { parent::validateForm($form, $form_state); $element = $form_state->getValue('math'); $library_math = 'libraries/MathJax/MathJax.js'; if ($element == TRUE) { if (file_exists(DRUPAL_ROOT . '/' . $library_math)) { $form_state->setValue('math_path', $library_math); } else { $form_state->setValue('math_path', 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js'); } } } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $config = $this->config('revealjs.settings'); $config ->set('markdown', $form_state->getValue('markdown')) ->set('highlight', $form_state->getValue('highlight')) ->set('search', $form_state->getValue('search')) ->set('zoom', $form_state->getValue('zoom')) ->set('notes', $form_state->getValue('notes')) ->set('math', $form_state->getValue('math')) ->set('math_config', $form_state->getValue('math_config')) ->set('math_path', $form_state->getValue('math_path')) ->save(); parent::submitForm($form, $form_state); } }