View source
<?php
namespace Drupal\business_rules\Form;
use Drupal\Core\Datetime\DrupalDateTime;
use Drupal\Core\Entity\ContentEntityForm;
use Drupal\Core\Form\FormStateInterface;
class ScheduleForm extends ContentEntityForm {
public function buildForm(array $form, FormStateInterface $form_state) {
$form = parent::buildForm($form, $form_state);
if (!$this->entity
->isNew()) {
$form['new_revision'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Create new revision'),
'#default_value' => TRUE,
'#weight' => 10,
'#required' => TRUE,
];
}
$entity = $this->entity;
$form['name'] = [
'#type' => 'textfield',
'#title' => $this
->t('Name'),
'#default_value' => $entity
->getName(),
'#required' => TRUE,
];
$form['status'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Executed'),
'#default_value' => $entity
->isExecuted(),
];
$scheduled_time = $entity
->isNew() ? '' : DrupalDateTime::createFromTimestamp($entity
->getScheduled());
$form['scheduled'] = [
'#type' => 'datetime',
'#title' => $this
->t('Scheduled'),
'#default_value' => $scheduled_time,
'#required' => TRUE,
];
$form['triggered_by'] = [
'#type' => 'entity_autocomplete',
'#title' => $this
->t('Triggered by'),
'#description' => $this
->t('Action that has supposed triggered this schedule.'),
'#target_type' => 'business_rules_action',
'#selection_handler' => 'default:business_rules_item_by_field',
'#selection_settings' => [
'filter' => [
'type' => 'schedule_a_task',
],
],
'#default_value' => $entity
->getTriggeredBy(),
'#required' => TRUE,
];
return $form;
}
public function save(array $form, FormStateInterface $form_state) {
$entity = $this->entity;
if (!$form_state
->isValueEmpty('new_revision') && $form_state
->getValue('new_revision') != FALSE) {
$entity
->setNewRevision();
$entity
->setRevisionCreationTime(REQUEST_TIME);
$entity
->setRevisionUserId(\Drupal::currentUser()
->id());
}
else {
$entity
->setNewRevision(FALSE);
}
$entity
->setScheduled($form_state
->getValue('scheduled')
->getTimestamp());
$form_state
->unsetValue('scheduled');
$status = parent::save($form, $form_state);
switch ($status) {
case SAVED_NEW:
drupal_set_message($this
->t('Created the %label Schedule.', [
'%label' => $entity
->label(),
]));
break;
default:
drupal_set_message($this
->t('Saved the %label Schedule.', [
'%label' => $entity
->label(),
]));
}
$form_state
->setRedirect('entity.business_rules_schedule.collection');
}
}