Skip to content

Commit d6690b2

Browse files
Merge branch 'main' into NextEntityTypeConfig-config-dependencies
2 parents 317224a + 95e7d7a commit d6690b2

20 files changed

+180
-87
lines changed

modules/next/.gitlab-ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ include:
5353
# Docs at https://git.drupalcode.org/project/gitlab_templates/-/blob/1.0.x/includes/include.drupalci.variables.yml
5454
################
5555
variables:
56+
_CSPELL_WORDS: 'allowtransparency, banimation, btransform, cellipse, cstyle, csvg, dellipse, revalidator'
5657
# SKIP_ESLINT: '1'
5758
OPT_IN_TEST_PREVIOUS_MINOR: 1
5859
OPT_IN_TEST_NEXT_MINOR: 1

modules/next/composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
"drupal/subrequests": "^3.0"
1818
},
1919
"require-dev": {
20-
"phpunit/phpunit": "^9 || ^10"
20+
"phpunit/phpunit": "^9 || ^10 || ^11"
2121
}
2222
}

modules/next/config/schema/next.schema.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ next.next_entity_type_config.*:
3636
label: 'Site resolver'
3737
configuration:
3838
type: next.site_resolver.configuration.[%parent.site_resolver]
39+
draft_enabled:
40+
type: boolean
41+
label: 'Draft mode enabled'
3942
revalidator:
4043
type: string
4144
label: 'Revalidator'

modules/next/css/next.site_preview.iframe.css

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
.next-site-preview-toolbar {
2-
border: 1px solid #bfbfbf;
3-
border-radius: 3px;
4-
background-color: #fcfcfa;
5-
padding: 0.5em 1.5em;
62
display: flex;
73
align-items: center;
84
justify-content: space-between;
95
margin-bottom: 1em;
6+
padding: 0.5em 1.5em;
7+
border: 1px solid #bfbfbf;
8+
border-radius: 3px;
9+
background-color: #fcfcfa;
1010
}
1111

1212
.next-site-preview-toolbar .operations {
@@ -21,16 +21,16 @@
2121

2222
.next-site-preview-toolbar .operations .status span {
2323
padding: 4px 1.5em;
24-
border-radius: 20em;
24+
color: #a51b00;
2525
border: 1px solid #f9c9bf;
26+
border-radius: 20em;
2627
background-color: #fcf4f2;
27-
color: #a51b00;
2828
}
2929

3030
.next-site-preview-toolbar .operations .status span.published {
31+
color: #325e1c;
3132
border-color: #c9e1bd;
3233
background-color: #f3faef;
33-
color: #325e1c;
3434
}
3535

3636
.next-site-preview-toolbar .operations .live-link .button {
@@ -49,9 +49,9 @@
4949
}
5050

5151
.next-site-preview-iframe {
52+
height: 100%;
5253
margin: 0;
5354
padding: 0;
54-
height: 100%;
5555
border: 0;
5656
background: white no-repeat center;
5757
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10' height='40' width='80'%3E%3Cstyle type='text/css'%3E @keyframes s%7B0%25%7Btransform:rotate(0deg) translate(-50%25,-50%25)%7D50%25%7Btransform:rotate(-430deg) translate(-50%25,-50%25);stroke-dashoffset:20%7D100%25%7Btransform:rotate(-720deg) translate(-50%25,-50%25)%7D%7Dellipse%7Banimation:s 1s linear infinite%7D%3C/style%3E%3Cg transform='translate(5 5)'%3E%3Cellipse fill='none' ry='4' rx='4' cy='5' cx='5' stroke='%23004adc' stroke-width='1' stroke-dashoffset='6.125' stroke-dasharray='25' transform='translate(-5 -5)' /%3E%3C/g%3E%3C/svg%3E");

modules/next/modules/next_extras/next_extras.info.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: Next.js Extras (Experimental)
2-
description: Adds extra (mostly experiemental) functionality to Next.js module
2+
description: Adds extra (mostly experimental) functionality to Next.js module
33
type: module
44
core_version_requirement: ^10 || ^11
55
package: Web services

modules/next/modules/next_jsonapi/next_jsonapi.services.yml

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,6 @@ parameters:
44
services:
55
jsonapi.entity_resource:
66
class: Drupal\next_jsonapi\Controller\EntityResource
7+
autowire: true
78
arguments:
8-
- '@entity_type.manager'
9-
- '@entity_field.manager'
10-
- '@jsonapi.resource_type.repository'
11-
- '@renderer'
12-
- '@entity.repository'
13-
- '@jsonapi.include_resolver'
14-
- '@jsonapi.entity_access_checker'
15-
- '@jsonapi.field_resolver'
16-
- '@jsonapi.serializer'
17-
- '@datetime.time'
18-
- '@current_user'
199
- '%next_jsonapi.size_max%'

modules/next/modules/next_jsonapi/src/Controller/EntityResource.php

Lines changed: 12 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,10 @@
22

33
namespace Drupal\next_jsonapi\Controller;
44

5-
use Drupal\Component\Datetime\TimeInterface;
6-
use Drupal\Core\Entity\EntityFieldManagerInterface;
7-
use Drupal\Core\Entity\EntityRepositoryInterface;
8-
use Drupal\Core\Entity\EntityTypeManagerInterface;
9-
use Drupal\Core\Render\RendererInterface;
10-
use Drupal\Core\Session\AccountInterface;
11-
use Drupal\jsonapi\Access\EntityAccessChecker;
12-
use Drupal\jsonapi\Context\FieldResolver;
135
use Drupal\jsonapi\Controller\EntityResource as JsonApiEntityResource;
14-
use Drupal\jsonapi\IncludeResolver;
156
use Drupal\jsonapi\Query\OffsetPage;
167
use Drupal\jsonapi\ResourceType\ResourceType;
17-
use Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface;
188
use Symfony\Component\HttpFoundation\Request;
19-
use Symfony\Component\Serializer\SerializerInterface;
209

2110
/**
2211
* Process all entity requests.
@@ -28,39 +17,23 @@ class EntityResource extends JsonApiEntityResource {
2817
*
2918
* @var int
3019
*/
31-
protected $maxSize;
20+
protected int $maxSize;
3221

3322
/**
3423
* EntityResource constructor.
3524
*
36-
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
37-
* The entity type manager.
38-
* @param \Drupal\Core\Entity\EntityFieldManagerInterface $field_manager
39-
* The entity type field manager.
40-
* @param \Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface $resource_type_repository
41-
* The JSON:API resource type repository.
42-
* @param \Drupal\Core\Render\RendererInterface $renderer
43-
* The renderer.
44-
* @param \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository
45-
* The entity repository.
46-
* @param \Drupal\jsonapi\IncludeResolver $include_resolver
47-
* The include resolver.
48-
* @param \Drupal\jsonapi\Access\EntityAccessChecker $entity_access_checker
49-
* The JSON:API entity access checker.
50-
* @param \Drupal\jsonapi\Context\FieldResolver $field_resolver
51-
* The JSON:API field resolver.
52-
* @param \Symfony\Component\Serializer\SerializerInterface|\Symfony\Component\Serializer\Normalizer\DenormalizerInterface $serializer
53-
* The JSON:API serializer.
54-
* @param \Drupal\Component\Datetime\TimeInterface $time
55-
* The time service.
56-
* @param \Drupal\Core\Session\AccountInterface $user
57-
* The current user account.
58-
* @param int $max_size
59-
* The offset max size.
25+
* @param mixed ...$args
26+
* All constructor arguments.
6027
*/
61-
public function __construct(EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $field_manager, ResourceTypeRepositoryInterface $resource_type_repository, RendererInterface $renderer, EntityRepositoryInterface $entity_repository, IncludeResolver $include_resolver, EntityAccessChecker $entity_access_checker, FieldResolver $field_resolver, SerializerInterface $serializer, TimeInterface $time, AccountInterface $user, int $max_size) {
62-
parent::__construct($entity_type_manager, $field_manager, $resource_type_repository, $renderer, $entity_repository, $include_resolver, $entity_access_checker, $field_resolver, $serializer, $time, $user);
63-
$this->maxSize = $max_size;
28+
public function __construct(...$args) {
29+
// Pop the last argument as $maxSize.
30+
$this->maxSize = array_pop($args);
31+
32+
// Forward the remaining arguments to the parent constructor.
33+
// We handle it this way because the parent constructor arguments
34+
// differ between Drupal 10 and Drupal 11, so using ...$args
35+
// ensures compatibility across versions.
36+
parent::__construct(...$args);
6437
}
6538

6639
/**

modules/next/modules/next_jsonapi/tests/src/Kernel/Controller/EntityResourceTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public function register(ContainerBuilder $container) {
7272
if ($container->hasDefinition('jsonapi.entity_resource')) {
7373
$definition = $container->getDefinition('jsonapi.entity_resource');
7474
$definition->setClass('Drupal\next_jsonapi\Controller\EntityResource')
75+
->setAutowired(TRUE)
7576
->addArgument('%next_jsonapi.size_max%');
7677
}
7778
}

modules/next/next.install

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,26 @@ function next_update_9106() {
104104
$config->set('debug', FALSE)
105105
->save();
106106
}
107+
108+
/**
109+
* Add the draft_enabled property to the next_entity_type_config.
110+
*/
111+
function next_update_9107() {
112+
$entity_definition_update = \Drupal::entityDefinitionUpdateManager();
113+
114+
$storage_definition = BaseFieldDefinition::create('string')
115+
->setLabel(t('Draft mode enabled'));
116+
$entity_definition_update->installFieldStorageDefinition('draft_enabled', 'next_entity_type_config', 'next_entity_type_config', $storage_definition);
117+
}
118+
119+
/**
120+
* Enable draft mode on all Next.js entity types.
121+
*/
122+
function next_update_9108() {
123+
/** @var \Drupal\next\Entity\NextEntityTypeConfigInterface[] $next_entity_type_configs */
124+
$next_entity_type_configs = \Drupal::entityTypeManager()->getStorage('next_entity_type_config')->loadMultiple();
125+
foreach ($next_entity_type_configs as $next_entity_type_config) {
126+
$next_entity_type_config->set('draft_enabled', TRUE);
127+
$next_entity_type_config->save();
128+
}
129+
}

modules/next/src/Entity/NextEntityTypeConfig.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
* "id",
4545
* "site_resolver",
4646
* "configuration",
47+
* "draft_enabled",
4748
* "revalidator",
4849
* "revalidator_configuration"
4950
* },
@@ -78,6 +79,13 @@ class NextEntityTypeConfig extends ConfigEntityBase implements NextEntityTypeCon
7879
*/
7980
protected $configuration = [];
8081

82+
/**
83+
* Whether the draft mode is enabled.
84+
*
85+
* @var bool
86+
*/
87+
protected $draft_enabled = FALSE;
88+
8189
/**
8290
* The revalidator.
8391
*
@@ -129,6 +137,13 @@ public function setSiteResolver(string $plugin_id): NextEntityTypeConfigInterfac
129137
return $this;
130138
}
131139

140+
/**
141+
* {@inheritdoc}
142+
*/
143+
public function isDraftEnabled(): bool {
144+
return $this->draft_enabled;
145+
}
146+
132147
/**
133148
* {@inheritdoc}
134149
*/

0 commit comments

Comments
 (0)