From 6f931ba5668adffabd6cc6ef7e01ce85ee98edcc Mon Sep 17 00:00:00 2001
From: Daniel Karso <daniel@netbuffer.com>
Date: Thu, 4 Aug 2016 17:58:12 +0200
Subject: [PATCH] [TEST] #SPY-129 Added unit test for LanguageInterfaceContext.

---
 .../src/Unit/LanguageInterfaceContextTest.php      | 60 ++++++++++++++++++++++
 1 file changed, 60 insertions(+)
 create mode 100644 modules/contrib/page_manager/tests/src/Unit/LanguageInterfaceContextTest.php

diff --git a/modules/contrib/page_manager/tests/src/Unit/LanguageInterfaceContextTest.php b/modules/contrib/page_manager/tests/src/Unit/LanguageInterfaceContextTest.php
new file mode 100644
index 0000000..1f83da6
--- /dev/null
+++ b/modules/contrib/page_manager/tests/src/Unit/LanguageInterfaceContextTest.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Tests\page_manager\Unit\LanguageInterfaceContextTest.
+ */
+
+namespace Drupal\Tests\page_manager\Unit;
+
+use Drupal\Core\Language\LanguageInterface;
+use Drupal\Core\Plugin\Context\Context;
+use Drupal\Core\Plugin\Context\ContextDefinition;
+use Drupal\Core\Plugin\Context\ContextRepositoryInterface;
+use Drupal\page_manager\EventSubscriber\LanguageInterfaceContext;
+use Prophecy\Argument;
+
+/**
+ * Tests the current language interface context.
+ *
+ * @coversDefaultClass \Drupal\page_manager\EventSubscriber\LanguageInterfaceContext
+ *
+ * @group PageManager
+ */
+class LanguageInterfaceContextTest extends PageContextTestBase {
+
+  /**
+   * @var ContextRepositoryInterface
+   */
+  protected $context_repository;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setUp() {
+    parent::setUp();
+
+    $language_manager = $this->getMockBuilder('\Drupal\Core\Language\LanguageManagerInterface')
+      ->disableOriginalConstructor()
+      ->getMock();
+
+    $context = new Context(new ContextDefinition('language', 'current_language_context'), $language_manager->getCurrentLanguage(LanguageInterface::TYPE_INTERFACE));
+
+    $this->context_repository = $this->getMockBuilder('\Drupal\Core\Plugin\Context\ContextRepositoryInterface')
+      ->disableOriginalConstructor()
+      ->getMock();
+    $this->context_repository->expects($this->once())
+      ->method('getRunTimeContexts')
+      ->willReturn(array('@language.current_language_context:language_interface' => $context));
+  }
+
+  /**
+   * @covers ::onPageContext
+   */
+  public function testOnPageContext() {
+    $this->page->addContext('language_interface', Argument::type(Context::class))->shouldBeCalled();
+    $language_interface_context = new LanguageInterfaceContext($this->context_repository);
+    $language_interface_context->onPageContext($this->event);
+  }
+
+}
-- 
2.8.1

From 79bf8fc5a98d749bcb43dde2a8d61a60b7ffe8a3 Mon Sep 17 00:00:00 2001
From: Daniel Karso <daniel@netbuffer.com>
Date: Fri, 5 Aug 2016 10:22:00 +0200
Subject: [PATCH] [MODULE] #SPY-129 Clean patch commit.

---
 .../contrib/page_manager/page_manager.services.yml |  5 ++
 .../EventSubscriber/LanguageInterfaceContext.php   | 56 ++++++++++++++++++++++
 2 files changed, 61 insertions(+)
 create mode 100644 modules/contrib/page_manager/src/EventSubscriber/LanguageInterfaceContext.php

diff --git a/modules/contrib/page_manager/page_manager.services.yml b/modules/contrib/page_manager/page_manager.services.yml
index 43f99ab..200209c 100644
--- a/modules/contrib/page_manager/page_manager.services.yml
+++ b/modules/contrib/page_manager/page_manager.services.yml
@@ -9,6 +9,11 @@ services:
     arguments: ['@router.route_provider', '@request_stack']
     tags:
       - { name: 'event_subscriber' }
+  page_manager.language_interface_context:
+    class: Drupal\page_manager\EventSubscriber\LanguageInterfaceContext
+    arguments: ['@context.repository']
+    tags:
+      - { name: 'event_subscriber' }
   page_manager.context_mapper:
     class: Drupal\page_manager\ContextMapper
     arguments: ['@entity.repository']
diff --git a/modules/contrib/page_manager/src/EventSubscriber/LanguageInterfaceContext.php b/modules/contrib/page_manager/src/EventSubscriber/LanguageInterfaceContext.php
new file mode 100644
index 0000000..0d5fc8c
--- /dev/null
+++ b/modules/contrib/page_manager/src/EventSubscriber/LanguageInterfaceContext.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\page_manager\EventSubscriber\LanguageInterfaceContext.
+ */
+
+namespace Drupal\page_manager\EventSubscriber;
+
+use Drupal\Core\Plugin\Context\ContextRepositoryInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+use Drupal\page_manager\Event\PageManagerContextEvent;
+use Drupal\page_manager\Event\PageManagerEvents;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * Sets the current language_interface as a context.
+ */
+class LanguageInterfaceContext implements EventSubscriberInterface {
+
+  /**
+   * @var \Drupal\Core\Plugin\Context\ContextRepositoryInterface
+   */
+  protected $context_repository;
+
+  /**
+   * LanguageInterfaceContext constructor.
+   *
+   * @param \Drupal\Core\Plugin\Context\ContextRepositoryInterface $context_repository
+   */
+  public function __construct(ContextRepositoryInterface $context_repository) {
+    $this->context_repository = $context_repository;
+  }
+
+  /**
+   * Add the language_interface context onPageContext event.
+   *
+   * @param \Drupal\page_manager\Event\PageManagerContextEvent $event
+   *   The page entity context event.
+   */
+  public function onPageContext(PageManagerContextEvent $event) {
+    $contexts = $this->context_repository->getRuntimeContexts(array('@language.current_language_context:language_interface'));
+    $context = reset($contexts);
+    $event->getPage()->addContext('language_interface', $context);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getSubscribedEvents() {
+    $events[PageManagerEvents::PAGE_CONTEXT][] = 'onPageContext';
+
+    return $events;
+  }
+
+}
-- 
2.8.1

From 48d790611bff4dda7f1e4bc1c08ed5eee2b9ff5f Mon Sep 17 00:00:00 2001
From: Daniel Karso <daniel@netbuffer.com>
Date: Fri, 5 Aug 2016 10:30:56 +0200
Subject: [PATCH] [MODULE] #SPY-129 Removed unused import.

---
 .../page_manager/src/EventSubscriber/LanguageInterfaceContext.php        | 1 -
 1 file changed, 1 deletion(-)

diff --git a/modules/contrib/page_manager/src/EventSubscriber/LanguageInterfaceContext.php b/modules/contrib/page_manager/src/EventSubscriber/LanguageInterfaceContext.php
index 0d5fc8c..99af3c1 100644
--- a/modules/contrib/page_manager/src/EventSubscriber/LanguageInterfaceContext.php
+++ b/modules/contrib/page_manager/src/EventSubscriber/LanguageInterfaceContext.php
@@ -8,7 +8,6 @@
 namespace Drupal\page_manager\EventSubscriber;
 
 use Drupal\Core\Plugin\Context\ContextRepositoryInterface;
-use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\page_manager\Event\PageManagerContextEvent;
 use Drupal\page_manager\Event\PageManagerEvents;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-- 
2.8.1

