diff --git a/app/code/Magento/CmsGraphQl/composer.json b/app/code/Magento/CmsGraphQl/composer.json
index eb515c91bbb3..6a2e3950f93d 100644
--- a/app/code/Magento/CmsGraphQl/composer.json
+++ b/app/code/Magento/CmsGraphQl/composer.json
@@ -8,6 +8,10 @@
"magento/module-cms": "*",
"magento/module-widget": "*"
},
+ "suggest": {
+ "magento/module-graph-ql": "*",
+ "magento/module-store-graph-ql": "*"
+ },
"license": [
"OSL-3.0",
"AFL-3.0"
diff --git a/app/code/Magento/CmsGraphQl/etc/graphql/di.xml b/app/code/Magento/CmsGraphQl/etc/graphql/di.xml
new file mode 100644
index 000000000000..78c1071d8e07
--- /dev/null
+++ b/app/code/Magento/CmsGraphQl/etc/graphql/di.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ - web/default/front
+ - web/default/cms_home_page
+ - web/default/no_route
+ - web/default/cms_no_route
+ - web/default/cms_no_cookies
+ - web/default/show_cms_breadcrumbs
+
+
+
+
diff --git a/app/code/Magento/CmsGraphQl/etc/schema.graphqls b/app/code/Magento/CmsGraphQl/etc/schema.graphqls
index 997bbf920a09..e8abd2201b88 100644
--- a/app/code/Magento/CmsGraphQl/etc/schema.graphqls
+++ b/app/code/Magento/CmsGraphQl/etc/schema.graphqls
@@ -1,5 +1,14 @@
# Copyright © Magento, Inc. All rights reserved.
# See COPYING.txt for license details.
+type StoreConfig @doc(description: "The type contains information about a store config") {
+ front : String @doc(description: "Default Web URL")
+ cms_home_page : String @doc(description: "CMS Home Page")
+ no_route : String @doc(description: "Default No-route URL")
+ cms_no_route : String @doc(description: "CMS No Route Page")
+ cms_no_cookies : String @doc(description: "CMS No Cookies Page")
+ show_cms_breadcrumbs : Int @doc(description: "Show Breadcrumbs for CMS Pages")
+}
+
type Query {
cmsPage (
diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php
index 92926c12e86d..8c2d6c36591d 100644
--- a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php
+++ b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php
@@ -7,10 +7,10 @@
namespace Magento\StoreGraphQl\Model\Resolver\Store;
-use Magento\Store\Api\Data\StoreConfigInterface;
+use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Store\Api\StoreConfigManagerInterface;
-use Magento\Store\Api\StoreRepositoryInterface;
-use Magento\Store\Api\StoreResolverInterface;
+use Magento\Store\Model\ScopeInterface;
+use Magento\Store\Model\StoreManagerInterface;
/**
* StoreConfig field data provider, used for GraphQL request processing.
@@ -23,39 +23,60 @@ class StoreConfigDataProvider
private $storeConfigManager;
/**
- * @var StoreResolverInterface
+ * @var StoreManagerInterface
*/
- private $storeResolver;
+ private $storeManager;
/**
- * @var StoreRepositoryInterface
+ * @var ScopeConfigInterface
*/
- private $storeRepository;
+ private $scopeConfig;
+
+ /**
+ * @var array
+ */
+ private $extendedConfigData;
/**
* @param StoreConfigManagerInterface $storeConfigManager
- * @param StoreResolverInterface $storeResolver
- * @param StoreRepositoryInterface $storeRepository
+ * @param StoreManagerInterface $storeManager
+ * @param ScopeConfigInterface $scopeConfig
+ * @param array $extendedConfigData
*/
public function __construct(
StoreConfigManagerInterface $storeConfigManager,
- StoreResolverInterface $storeResolver,
- StoreRepositoryInterface $storeRepository
+ StoreManagerInterface $storeManager,
+ ScopeConfigInterface $scopeConfig,
+ array $extendedConfigData = []
) {
$this->storeConfigManager = $storeConfigManager;
- $this->storeResolver = $storeResolver;
- $this->storeRepository = $storeRepository;
+ $this->storeManager = $storeManager;
+ $this->scopeConfig = $scopeConfig;
+ $this->extendedConfigData = $extendedConfigData;
+ }
+
+ /**
+ * Get store config data
+ *
+ * @return array
+ */
+ public function getStoreConfigData(): array
+ {
+ $storeConfigData = array_merge(
+ $this->getBaseConfigData(),
+ $this->getExtendedConfigData()
+ );
+ return $storeConfigData;
}
/**
- * Get store config for current store
+ * Get base config data
*
* @return array
*/
- public function getStoreConfig() : array
+ private function getBaseConfigData() : array
{
- $storeId = $this->storeResolver->getCurrentStoreId();
- $store = $this->storeRepository->getById($storeId);
+ $store = $this->storeManager->getStore();
$storeConfig = current($this->storeConfigManager->getStoreConfigs([$store->getCode()]));
$storeConfigData = [
@@ -78,4 +99,23 @@ public function getStoreConfig() : array
];
return $storeConfigData;
}
+
+ /**
+ * Get extended config data
+ *
+ * @return array
+ */
+ private function getExtendedConfigData()
+ {
+ $store = $this->storeManager->getStore();
+ $extendedConfigData = [];
+ foreach ($this->extendedConfigData as $key => $path) {
+ $extendedConfigData[$key] = $this->scopeConfig->getValue(
+ $path,
+ ScopeInterface::SCOPE_STORE,
+ $store->getId()
+ );
+ }
+ return $extendedConfigData;
+ }
}
diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php b/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php
index 39fcd1bf2792..9c426172de85 100644
--- a/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php
+++ b/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php
@@ -23,12 +23,12 @@ class StoreConfigResolver implements ResolverInterface
private $storeConfigDataProvider;
/**
- * @param StoreConfigDataProvider $storeConfigDataProvider
+ * @param StoreConfigDataProvider $storeConfigsDataProvider
*/
public function __construct(
- StoreConfigDataProvider $storeConfigDataProvider
+ StoreConfigDataProvider $storeConfigsDataProvider
) {
- $this->storeConfigDataProvider = $storeConfigDataProvider;
+ $this->storeConfigDataProvider = $storeConfigsDataProvider;
}
/**
@@ -41,8 +41,6 @@ public function resolve(
array $value = null,
array $args = null
) {
-
- $storeConfigData = $this->storeConfigDataProvider->getStoreConfig();
- return $storeConfigData;
+ return $this->storeConfigDataProvider->getStoreConfigData();
}
}
diff --git a/app/code/Magento/StoreGraphQl/composer.json b/app/code/Magento/StoreGraphQl/composer.json
index d03d759babd2..d53ba9fbb002 100644
--- a/app/code/Magento/StoreGraphQl/composer.json
+++ b/app/code/Magento/StoreGraphQl/composer.json
@@ -8,8 +8,7 @@
"magento/module-store": "*"
},
"suggest": {
- "magento/module-graph-ql": "*",
- "magento/module-catalog-graph-ql": "*"
+ "magento/module-graph-ql": "*"
},
"license": [
"OSL-3.0",
diff --git a/app/code/Magento/ThemeGraphQl/README.md b/app/code/Magento/ThemeGraphQl/README.md
new file mode 100644
index 000000000000..fed6b54fa5cf
--- /dev/null
+++ b/app/code/Magento/ThemeGraphQl/README.md
@@ -0,0 +1,4 @@
+# ThemeGraphQlhQl
+
+**ThemeGraphQlhQl** provides type information for the GraphQl module
+to generate theme fields information endpoints.
diff --git a/app/code/Magento/ThemeGraphQl/composer.json b/app/code/Magento/ThemeGraphQl/composer.json
new file mode 100644
index 000000000000..e3aac55aea37
--- /dev/null
+++ b/app/code/Magento/ThemeGraphQl/composer.json
@@ -0,0 +1,24 @@
+{
+ "name": "magento/module-theme-graph-ql",
+ "description": "N/A",
+ "type": "magento2-module",
+ "require": {
+ "php": "~7.1.3||~7.2.0",
+ "magento/framework": "*"
+ },
+ "suggest": {
+ "magento/module-store-graph-ql": "*"
+ },
+ "license": [
+ "OSL-3.0",
+ "AFL-3.0"
+ ],
+ "autoload": {
+ "files": [
+ "registration.php"
+ ],
+ "psr-4": {
+ "Magento\\ThemeGraphQl\\": ""
+ }
+ }
+}
diff --git a/app/code/Magento/ThemeGraphQl/etc/module.xml b/app/code/Magento/ThemeGraphQl/etc/module.xml
new file mode 100644
index 000000000000..0e10b776af9c
--- /dev/null
+++ b/app/code/Magento/ThemeGraphQl/etc/module.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
diff --git a/app/code/Magento/ThemeGraphQl/etc/schema.graphqls b/app/code/Magento/ThemeGraphQl/etc/schema.graphqls
new file mode 100644
index 000000000000..325fcc8bd983
--- /dev/null
+++ b/app/code/Magento/ThemeGraphQl/etc/schema.graphqls
@@ -0,0 +1,19 @@
+# Copyright © Magento, Inc. All rights reserved.
+# See COPYING.txt for license details.
+type StoreConfig @doc(description: "The type contains information about a store config") {
+ head_shortcut_icon : String @doc(description: "Favicon Icon")
+ default_title : String @doc(description: "Default Page Title")
+ title_prefix : String @doc(description: "Page Title Prefix")
+ title_suffix : String @doc(description: "Page Title Suffix")
+ default_description : String @doc(description: "Default Meta Description")
+ default_keywords : String @doc(description: "Default Meta Keywords")
+ head_includes : String @doc(description: "Scripts and Style Sheets")
+ demonotice : Int @doc(description: "Display Demo Store Notice")
+ header_logo_src : String @doc(description: "Logo Image")
+ logo_width : Int @doc(description: "Logo Attribute Width")
+ logo_height : Int @doc(description: "Logo Attribute Height")
+ welcome : String @doc(description: "Welcome Text")
+ logo_alt : String @doc(description: "Logo Image Alt")
+ absolute_footer : String @doc(description: "Footer Miscellaneous HTML")
+ copyright : String @doc(description: "Copyright")
+}
diff --git a/app/code/Magento/ThemeGraphQl/registration.php b/app/code/Magento/ThemeGraphQl/registration.php
new file mode 100644
index 000000000000..e320fbc9868e
--- /dev/null
+++ b/app/code/Magento/ThemeGraphQl/registration.php
@@ -0,0 +1,10 @@
+cleanCache();
$productSku = 'simple';
$query = <<markTestIncomplete('https://github.com/magento/graphql-ce/issues/167');
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
}