Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 53 |
BookOutlineForm | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
182 | |
0.00% |
0 / 53 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
getBaseFormId | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
form | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 13 |
|||
actions | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 7 |
|||
save | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 23 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\book\Form\BookOutlineForm. | |
*/ | |
namespace Drupal\book\Form; | |
use Drupal\book\BookManagerInterface; | |
use Drupal\Core\Entity\ContentEntityForm; | |
use Drupal\Core\Entity\EntityManagerInterface; | |
use Drupal\Core\Form\FormStateInterface; | |
use Drupal\Core\Url; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
/** | |
* Displays the book outline form. | |
*/ | |
class BookOutlineForm extends ContentEntityForm { | |
/** | |
* The book being displayed. | |
* | |
* @var \Drupal\node\NodeInterface | |
*/ | |
protected $entity; | |
/** | |
* BookManager service. | |
* | |
* @var \Drupal\book\BookManagerInterface | |
*/ | |
protected $bookManager; | |
/** | |
* Constructs a BookOutlineForm object. | |
* | |
* @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager | |
* The entity manager. | |
* @param \Drupal\book\BookManagerInterface $book_manager | |
* The BookManager service. | |
*/ | |
public function __construct(EntityManagerInterface $entity_manager, BookManagerInterface $book_manager) { | |
parent::__construct($entity_manager); | |
$this->bookManager = $book_manager; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function create(ContainerInterface $container) { | |
return new static( | |
$container->get('entity.manager'), | |
$container->get('book.manager') | |
); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getBaseFormId() { | |
return NULL; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function form(array $form, FormStateInterface $form_state) { | |
$form['#title'] = $this->entity->label(); | |
if (!isset($this->entity->book)) { | |
// The node is not part of any book yet - set default options. | |
$this->entity->book = $this->bookManager->getLinkDefaults($this->entity->id()); | |
} | |
else { | |
$this->entity->book['original_bid'] = $this->entity->book['bid']; | |
} | |
// Find the depth limit for the parent select. | |
if (!isset($this->entity->book['parent_depth_limit'])) { | |
$this->entity->book['parent_depth_limit'] = $this->bookManager->getParentDepthLimit($this->entity->book); | |
} | |
$form = $this->bookManager->addFormElements($form, $form_state, $this->entity, $this->currentUser(), FALSE); | |
return $form; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
protected function actions(array $form, FormStateInterface $form_state) { | |
$actions = parent::actions($form, $form_state); | |
$actions['submit']['#value'] = $this->entity->book['original_bid'] ? $this->t('Update book outline') : $this->t('Add to book outline'); | |
$actions['delete']['#title'] = $this->t('Remove from book outline'); | |
$actions['delete']['#url'] = new Url('entity.node.book_remove_form', ['node' => $this->entity->book['nid']]); | |
$actions['delete']['#access'] = $this->bookManager->checkNodeIsRemovable($this->entity); | |
return $actions; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function save(array $form, FormStateInterface $form_state) { | |
$form_state->setRedirect( | |
'entity.node.canonical', | |
array('node' => $this->entity->id()) | |
); | |
$book_link = $form_state->getValue('book'); | |
if (!$book_link['bid']) { | |
drupal_set_message($this->t('No changes were made')); | |
return; | |
} | |
$this->entity->book = $book_link; | |
if ($this->bookManager->updateOutline($this->entity)) { | |
if (isset($this->entity->book['parent_mismatch']) && $this->entity->book['parent_mismatch']) { | |
// This will usually only happen when JS is disabled. | |
drupal_set_message($this->t('The post has been added to the selected book. You may now position it relative to other pages.')); | |
$form_state->setRedirectUrl($this->entity->urlInfo('book-outline-form')); | |
} | |
else { | |
drupal_set_message($this->t('The book outline has been updated.')); | |
} | |
} | |
else { | |
drupal_set_message($this->t('There was an error adding the post to the book.'), 'error'); | |
} | |
} | |
} |