public function AjaxResponseSubscriber::onResponse in Geolocation Field 8
Same name and namespace in other branches
- 8.3 src/EventSubscriber/AjaxResponseSubscriber.php \Drupal\geolocation\EventSubscriber\AjaxResponseSubscriber::onResponse()
- 8.2 src/EventSubscriber/AjaxResponseSubscriber.php \Drupal\geolocation\EventSubscriber\AjaxResponseSubscriber::onResponse()
Renders the ajax commands right before preparing the result.
Parameters
\Symfony\Component\HttpKernel\Event\FilterResponseEvent $event: The response event, which contains the possible AjaxResponse object.
File
- src/
EventSubscriber/ AjaxResponseSubscriber.php, line 43
Class
- AjaxResponseSubscriber
- Response subscriber to handle AJAX responses.
Namespace
Drupal\geolocation\EventSubscriberCode
public function onResponse(FilterResponseEvent $event) {
$response = $event
->getResponse();
// Only alter views ajax responses.
if (!$response instanceof ViewAjaxResponse) {
return;
}
$view = $response
->getView();
if ($view
->getStyle()
->getPluginId() !== 'maps_common') {
// This view is not of maps_common style, but maybe an attachment is.
$common_map_attachment = FALSE;
$attached_display_ids = $view->display_handler
->getAttachedDisplays();
foreach ($attached_display_ids as $display_id) {
$current_display = $view->displayHandlers
->get($display_id);
if (!empty($current_display)) {
if (!empty($current_display
->getOption('style')['type']) && $current_display
->getOption('style')['type'] == 'maps_common') {
$common_map_attachment = TRUE;
}
}
}
if (!$common_map_attachment) {
return;
}
}
$page_change = $event
->getRequest()->query
->get('page', FALSE);
$commands =& $response
->getCommands();
foreach ($commands as $delta => &$command) {
// Substitute the 'replace' method without our custom jQuery method which
// will allow views content to be injected one after the other.
if (isset($command['method']) && $command['method'] === 'replaceWith' && isset($command['selector']) && substr($command['selector'], 0, 16) === '.js-view-dom-id-') {
$command['command'] = 'geolocationCommonMapsUpdate';
unset($command['method']);
}
// Stop the view from scrolling to the top of the page.
if ($page_change === FALSE && $command['command'] === 'viewsScrollTop') {
unset($commands[$delta]);
}
}
}