View source
<?php
namespace Drupal\heartbeat\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Url;
use Drupal\heartbeat\Controller\HeartbeatAjaxException;
use Drupal\heartbeat\Ajax\UpdateFeedCommand;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\Config\ConfigManager;
use Drupal\Core\Render\Element\RenderElement;
use Drupal\Core\Render\Element;
class HeartbeatUpdateFeedForm extends FormBase {
private $triggered;
protected $configManager;
public function __construct(ConfigManager $config_manager) {
$this->configManager = $config_manager;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('config.manager'));
}
public function getFormId() {
return 'heartbeat_update_feed_form';
}
public function buildForm(array $form, FormStateInterface $form_state) {
$form['#attached']['libraries'][] = 'heartbeat/heartbeat';
$form['timestamp'] = [
'#type' => 'textfield',
'#value' => t('Update Feeds'),
'#ajax' => [
'url' => Url::fromUri('internal:/heartbeat/form/heartbeat_update_feed'),
'callback' => '::updateFeedCommand',
'options' => array(
'query' => array(
'callback' => 'updateFeedCommand',
),
),
'progress' => array(
'type' => 'none,',
),
],
];
$form['submit'] = [
'#type' => 'submit',
'#value' => $this
->t('Submit'),
'#ajax' => [
'callback' => '::updateFeedCommand',
'url' => Url::fromUri('internal:/heartbeat/form/heartbeat_update_feed'),
'progress' => array(
'type' => 'none,',
),
'options' => array(
'query' => array(
'callback' => 'updateFeedCommand',
),
),
],
];
return $form;
}
public function validateForm(array &$form, FormStateInterface $form_state) {
parent::validateForm($form, $form_state);
}
public function submitForm(array &$form, FormStateInterface $form_state) {
foreach ($form_state
->getValues() as $key => $value) {
drupal_set_message($key . ': ' . $value);
}
$form['#attached']['drupalSettings']['feedUpdate'] = 'timestamp';
$this->triggered = true;
$this
->buildForm($form, $form_state);
}
public function updateFeed(array &$form, FormStateInterface $form_state) {
\Drupal::logger('HeartbeatUpdateFeedForm::updateFeed')
->debug('update Feed is getting called');
$feedUpdateConfig = new \stdClass();
$feedUpdateConfig->feed = 'Node Activity';
$feedUpdateConfig->update = true;
$feedUpdateConfig->timestamp = 123456789;
$ajaxResponse = new AjaxResponse();
$updateCommand = new UpdateFeedCommand($feedUpdateConfig);
$ajaxResponse
->addCommand($updateCommand);
return $ajaxResponse;
}
public function updateFeedCommand() {
$feedUpdateConfig = new \stdClass();
$feedUpdateConfig->feed = 'Node Activity';
$feedUpdateConfig->update = true;
$feedUpdateConfig->timestamp = 123456789;
$updateCommand = new UpdateFeedCommand($feedUpdateConfig);
return $updateCommand;
}
public function prepareAjaxForm(&$form) {
if (!isset($form['#value'])) {
$form['#value'] = isset($form['#default_value']) ? $form['#default_value'] : '';
}
if (isset($form['#type'])) {
if ($form['#type'] == 'submit') {
$form = RenderElement::preRenderAjaxForm($form);
}
}
foreach (Element::children($form) as $key) {
$element =& $form[$key];
$this
->prepareAjaxForm($element);
}
}
}