diff --git a/core/modules/book/book.admin.inc b/core/modules/book/book.admin.inc index 9da0e99..3ffaf55 100644 --- a/core/modules/book/book.admin.inc +++ b/core/modules/book/book.admin.inc @@ -43,63 +43,6 @@ function book_admin_overview() { } /** - * Form constructor for the book settings form. - * - * @see book_menu() - * @see book_admin_settings_submit() - * @see book_admin_settings_validate() - * @ingroup forms - */ -function book_admin_settings($form, &$form_state) { - $types = node_type_get_names(); - $config = config('book.settings'); - $form['book_allowed_types'] = array( - '#type' => 'checkboxes', - '#title' => t('Content types allowed in book outlines'), - '#default_value' => $config->get('allowed_types'), - '#options' => $types, - '#description' => t('Users with the %outline-perm permission can add all content types.', array('%outline-perm' => t('Administer book outlines'))), - '#required' => TRUE, - ); - $form['book_child_type'] = array( - '#type' => 'radios', - '#title' => t('Content type for child pages'), - '#default_value' => $config->get('child_type'), - '#options' => $types, - '#required' => TRUE, - ); - $form['array_filter'] = array('#type' => 'value', '#value' => TRUE); - $form['#validate'][] = 'book_admin_settings_validate'; - - return system_config_form($form, $form_state); -} - -/** - * Form validation handler for book_admin_settings(). - * - * @see book_admin_settings_submit() - */ -function book_admin_settings_validate($form, &$form_state) { - $child_type = $form_state['values']['book_child_type']; - if (empty($form_state['values']['book_allowed_types'][$child_type])) { - form_set_error('book_child_type', t('The content type for the %add-child link must be one of those selected as an allowed book outline type.', array('%add-child' => t('Add child page')))); - } -} - -/** - * Form submission handler for book_admin_settings(). - * - * @see book_admin_settings_validate() - */ -function book_admin_settings_submit($form, &$form_state) { - config('book.settings') - // Remove unchecked types. - ->set('allowed_types', array_filter($form_state['values']['book_allowed_types'])) - ->set('child_type', $form_state['values']['book_child_type']) - ->save(); - } - -/** * Form constructor for administering a single book's hierarchy. * * @param Drupal\node\Node $node diff --git a/core/modules/book/book.module b/core/modules/book/book.module index c316278..5294280 100644 --- a/core/modules/book/book.module +++ b/core/modules/book/book.module @@ -145,12 +145,10 @@ function book_menu() { ); $items['admin/content/book/settings'] = array( 'title' => 'Settings', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('book_admin_settings'), + 'page callback' => 'NOT_USED', 'access arguments' => array('administer site configuration'), 'type' => MENU_LOCAL_TASK, 'weight' => 100, - 'file' => 'book.admin.inc', ); $items['admin/content/book/%node'] = array( 'title' => 'Re-order book pages and change titles', diff --git a/core/modules/book/book.routing.yml b/core/modules/book/book.routing.yml new file mode 100644 index 0000000..3af7c08 --- /dev/null +++ b/core/modules/book/book.routing.yml @@ -0,0 +1,6 @@ +book_settings: + pattern: '/admin/content/book/settings' + defaults: + _form: 'Drupal\book\BookSettingsForm' + requirements: + _permission: 'administer site configuration' diff --git a/core/modules/book/lib/Drupal/book/BookSettingsForm.php b/core/modules/book/lib/Drupal/book/BookSettingsForm.php new file mode 100644 index 0000000..2171a88 --- /dev/null +++ b/core/modules/book/lib/Drupal/book/BookSettingsForm.php @@ -0,0 +1,101 @@ +configFactory = $config_factory; + } + + /** + * Returns an instance of this form. + */ + public function getForm() { + return drupal_get_form($this); + } + + /** + * Implements \Drupal\Core\Form\FormInterface::getFormID(). + */ + public function getFormID() { + return 'book_admin_settings'; + } + + /** + * Implements \Drupal\Core\Form\FormInterface::buildForm(). + */ + public function buildForm(array $form, array &$form_state) { + $types = node_type_get_names(); + $config = $this->configFactory->get('book.settings'); + $form['book_allowed_types'] = array( + '#type' => 'checkboxes', + '#title' => t('Content types allowed in book outlines'), + '#default_value' => $config->get('allowed_types'), + '#options' => $types, + '#description' => t('Users with the %outline-perm permission can add all content types.', array('%outline-perm' => t('Administer book outlines'))), + '#required' => TRUE, + ); + $form['book_child_type'] = array( + '#type' => 'radios', + '#title' => t('Content type for child pages'), + '#default_value' => $config->get('child_type'), + '#options' => $types, + '#required' => TRUE, + ); + $form['array_filter'] = array('#type' => 'value', '#value' => TRUE); + + return parent::buildForm($form, $form_state); + } + + /** + * Implements \Drupal\Core\Form\FormInterface::validateForm(). + */ + public function validateForm(array &$form, array &$form_state) { + $child_type = $form_state['values']['book_child_type']; + if (empty($form_state['values']['book_allowed_types'][$child_type])) { + form_set_error('book_child_type', t('The content type for the %add-child link must be one of those selected as an allowed book outline type.', array('%add-child' => t('Add child page')))); + } + + parent::validateForm($form, $form_state); + } + + /** + * Implements \Drupal\Core\Form\FormInterface::submitForm(). + */ + public function submitForm(array &$form, array &$form_state) { + $this->configFactory->get('book.settings') + // Remove unchecked types. + ->set('allowed_types', array_filter($form_state['values']['book_allowed_types'])) + ->set('child_type', $form_state['values']['book_child_type']) + ->save(); + + parent::submitForm($form, $form_state); + } + +} +