Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\system\Theme;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Batch\BatchStorageInterface;
|
Chris@0
|
6 use Drupal\Core\Routing\RouteMatchInterface;
|
Chris@0
|
7 use Drupal\Core\Theme\ThemeNegotiatorInterface;
|
Chris@0
|
8 use Symfony\Component\HttpFoundation\RequestStack;
|
Chris@0
|
9
|
Chris@0
|
10 /**
|
Chris@0
|
11 * Sets the active theme for the batch page.
|
Chris@0
|
12 */
|
Chris@0
|
13 class BatchNegotiator implements ThemeNegotiatorInterface {
|
Chris@0
|
14
|
Chris@0
|
15 /**
|
Chris@0
|
16 * The batch storage.
|
Chris@0
|
17 *
|
Chris@0
|
18 * @var \Drupal\Core\Batch\BatchStorageInterface
|
Chris@0
|
19 */
|
Chris@0
|
20 protected $batchStorage;
|
Chris@0
|
21
|
Chris@0
|
22 /**
|
Chris@0
|
23 * The request stack.
|
Chris@0
|
24 *
|
Chris@0
|
25 * @var \Symfony\Component\HttpFoundation\RequestStack
|
Chris@0
|
26 */
|
Chris@0
|
27 protected $requestStack;
|
Chris@0
|
28
|
Chris@0
|
29 /**
|
Chris@0
|
30 * Constructs a BatchNegotiator.
|
Chris@0
|
31 *
|
Chris@0
|
32 * @param \Drupal\Core\Batch\BatchStorageInterface $batch_storage
|
Chris@0
|
33 * The batch storage.
|
Chris@0
|
34 * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
|
Chris@0
|
35 * The request stack used to retrieve the current request.
|
Chris@0
|
36 */
|
Chris@0
|
37 public function __construct(BatchStorageInterface $batch_storage, RequestStack $request_stack) {
|
Chris@0
|
38 $this->batchStorage = $batch_storage;
|
Chris@0
|
39 $this->requestStack = $request_stack;
|
Chris@0
|
40 }
|
Chris@0
|
41
|
Chris@0
|
42 /**
|
Chris@0
|
43 * {@inheritdoc}
|
Chris@0
|
44 */
|
Chris@0
|
45 public function applies(RouteMatchInterface $route_match) {
|
Chris@0
|
46 return $route_match->getRouteName() == 'system.batch_page';
|
Chris@0
|
47 }
|
Chris@0
|
48
|
Chris@0
|
49 /**
|
Chris@0
|
50 * {@inheritdoc}
|
Chris@0
|
51 */
|
Chris@0
|
52 public function determineActiveTheme(RouteMatchInterface $route_match) {
|
Chris@0
|
53 // Retrieve the current state of the batch.
|
Chris@0
|
54 $request = $this->requestStack->getCurrentRequest();
|
Chris@0
|
55 $batch = &batch_get();
|
Chris@0
|
56 if (!$batch && $request->request->has('id')) {
|
Chris@0
|
57 $batch = $this->batchStorage->load($request->request->get('id'));
|
Chris@0
|
58 }
|
Chris@0
|
59 // Use the same theme as the page that started the batch.
|
Chris@0
|
60 if (!empty($batch['theme'])) {
|
Chris@0
|
61 return $batch['theme'];
|
Chris@0
|
62 }
|
Chris@0
|
63 }
|
Chris@0
|
64
|
Chris@0
|
65 }
|