Problem/Motivation
Menu link content entities when normalized contain references to node serial IDs (nid) and not UUIDs, this means they cannot be deployed.
Snippet:
...
],
"link": [
{
"uri": "entity:node\/2",
"title": null,
"options": []
}
],
...
Proposed resolution
Add new normalizers to menu_link_content.module for when hal and serialization modules are enabled to handle normalizing MenuLinkContent entities.
The normalizer should include the entity UUID in the normalized output and then use that to lookup the entity when denormalizing, ensuring that the link references the right entity.
Note this works alongside #2353611: Make it possible to link to an entity by UUID - as allowing links to entities via UUIDs is useful in body text and other methods of linking, not just for menu links.
Also related is #2315773: Create a menu link field type/widget/formatter which seeks to make the relationship between an entity and it's menu link a first-class entity reference, however that may need to wait until D9 because of API breaks.
Remaining tasks
None
User interface changes
None
API changes
None
Data model changes
None
Comment | File | Size | Author |
---|---|---|---|
#154 | interdiff-2577923-152-154.txt | 1.63 KB | mohit_aghera |
#154 | 2577923-154.patch | 9.21 KB | mohit_aghera |
#152 | interdiff_150-152.txt | 5.09 KB | pradhumanjain2311 |
#152 | 2577923-152.patch | 8.97 KB | pradhumanjain2311 |
#150 | 2577923-150.patch | 5.09 KB | pradhumanjain2311 |
Comments
Comment #2
larowlanPersonally I think option 2 (UUID) is the 'best we can do now' and option 3 is the 'what's the quickest way to fix this'
Comment #3
timmillwoodPersonally I think getting this fixed before RC1 is going to be hard, so we should push the quickest way for now, and even if we do or don't get it in 8.0.0 we work on the "best" way for 8.1.0.
Comment #4
klausiOption 3 sounds like the most feasible approach right now. We should add a uuid property in the JSON that contains the node/entity UUID. I would not mess with the uri property since that would be an API change if it suddenly contains UUIDs. On denormailze() we can lookup the ID from the UUID and replace it.
Comment #5
Crell CreditAttribution: Crell as a volunteer commentedWell, we're past RC now. :-) My concern with option 3 is that only fixes the problem when going through the serializer. Is that the only place this problem manifests? Are you certain?
Comment #6
larowlanFYI Option 3 is implemented in EntityPilot in #2694909: Custom menu links have incorrect node ID and there is also another implementation for Default Content in #2670954: Add Better Normalizers as a dependency
Comment #8
larowlanAdds a new normalizer and tests a.k.a option 3.
We still need option 2 as well, for links in node-bodies etc (but not just for menu link content entities).
Mostly borrowed from Entity Pilot with the addition of embedding parent menu_link_content entities.
Comment #10
larowlanFixed namespace
Comment #11
benjy CreditAttribution: benjy at PreviousNext commentedFew minor points below
Do we want to use the now deprecated entity manager or inject entity_type and entity.repository.
Could we use $manager->hasHandler('storage') here? Might read a little clearer than try/catch
Comment #12
dawehnerI'm wondering why this is specific to hal serialization. The same problem should existing in JSON and XML etc. as well?
If this is the only case we could check with an if whether the entity type exists already. Do you prefer one style over the other?
Comment #13
timmillwoodAdded this issue as a use case in #2690747: [PLAN] Create an index of UUIDs.
Also, switching this to needs work, the main thing I noticed in the patch was the use of EntityManger which is not deprecated, as noted in #11.
Comment #14
larowlanI'd class this as a bug
Comment #15
larowlanI'm following the parent class signature. Deviating from that will add future refactoring work.
Agree, will fix
Sure, I don't think we do embedding in serialization module, just adding the target_uuid, so I'll do that there too.
Working on this.
Comment #16
larowlanFixes #11 and #12
Comment #17
jibranLooks good to me just minor issues.
We can use ::class here.
We should combine these calls. Store the return value in an array.
Can we please add a comment here explaining this?
Comment #18
larowlanFixes #17
Comment #19
jibranSeems ready to me.
Comment #20
dawehnerNice test coverage!
Don't we want both, you might want to support HAL and another format
Let's not add it
Comment #21
larowlanFixes #20
Comment #22
dawehnerNice work!
Comment #23
amateescu CreditAttribution: amateescu for Pfizer, Inc. commentedIsn't this a problem for every entity type that uses a link field? Why are fixing only menu_link_content here instead of fixing the link field directly?
Comment #24
dawehnerGood point!
Comment #25
larowlanYeah true, although I think anywhere else we're sensible enough to use an ER field :)
#1911080: Replace menu node form additions with entity reference field
Comment #26
larowlanRerolling against LinkItem
Comment #27
larowlanSomething like this.
Kept the tests as is, but moved the link elements into link module.
Added an EntityReferenceEmbeddingTrait to move the common bits into a trait shared with EntityReferenceItem, will help with #2698785: Cannot deploy book nodes - book metatdata not serialized too.
Not surprisingly, interdiff almost as big as patch :)
Comment #29
larowlanMissed a hunk.
Comment #31
larowlanRandom fail
Comment #32
jibran@larowlan do these changes affect DER?
Comment #33
larowlanWill check
Comment #34
jibranI completely agree with #23. This makes much more sense now.
Comment #36
larowlanRetesting, random Migrate fail
Comment #37
alexpottThe issue summary could do with an update as it is not clear what the changes are and also whether we should do this or #2353611: Make it possible to link to an entity by UUID - or do both.
Comment #38
larowlanUpdated issue summary, back to RTBC
Comment #39
alexpottSome tiny tiny nits but because i don't know what to change the test comment too setting to needs work. @larowlan please rtbc once fixed.
What event is this?
Some coding standards that need fixing.
Comment #40
larowlancopy/paste fail from Entity pilot module, where a lot of this code originated.
Fixed
Comment #41
alexpottDoes this need to be an alter? I think we're adding services here. I guess we're copying \Drupal\menu_link_content\MenuLinkContentServiceProvider but I'm not sure this is right. Do we need to do this for the container.modules param?
These services should be called 'link.SOMETHING' because they are provided by the link module.
Comment #42
larowlan1 - Fixed
2 - That's not consistent with other serializers registered by e.g. hal module - happy to change it - but wanted to make sure we had consensus on preferred approach - currently core prefixes all serializers service IDs with serializer
Comment #44
larowlanComment #45
larowlandiscussed on irc with @alexpott conclusion was
we need to have a pattern that all a module's services start with module.
Comment #46
larowlanFixes #45 I think this is ready to go back to RTBC
Comment #47
jibranIt is a bug so it can be committed to 8.1.x. RTBC as #45 and #41 are addressed.
Comment #48
alexpottThis is not a change allowed in a patch release. And the beta is closed by now so I honestly think this is only eligible for 8.3.x
PSEUDO no?
No point declaring $target_entity_id
This can be checked in the first if in the this method. Less indentation...
This can be checked earlier to do less in the foreach.
Comment #49
larowlan- can you elaborate more. I'm not disagreeing, just want to understand what about that change isn't allowed - if you could point me to some docs, that'd be great - I truly have no idea what is and isn't allowed and whether we backport or forward port.
2 - gah, I was wearing this t-shirt and I still got it wrong?
3-5 fixed.
Comment #50
larowlanDraft change notice is https://www.drupal.org/node/2781679
Comment #51
Wim LeersAs https://www.previousnext.com.au/blog/we-could-add-default-content-drupal… mentions, this also affects the REST experience.
Comment #52
Wim LeersAFAICT #49 addressed #48's feedback. I agree with #49.1 though, I also don't fully understand why that change is problematic. It's fully BC. However, I think that the mere introduction of a new trait is not acceptable. Although I'm not sure how that is a helpful rule in this case. Alex, can you confirm that?
I'd RTBC, but have further feedback myself:
target_uuid
can "override" it? Wouldn't it be better to just land #2353611: Make it possible to link to an entity by UUID, ensure that provides an upgrade path for all existing menu link content entities, and then this problem would also be solved?Nit: s/reference/referenced/
Nit: s/Rest/REST/
Nit: Why not use
[]
notation for this new trait?Hm this is kind of … painful. Can't this just live in
hal
module andlink
module, respectively? Without the conditionality?Same concerns here.
Nit: should be consistent, both
'json'
?Comment #53
larowlanComment #54
tedbowAddressing @Wim Leers' review in #52
2,3,4,7 Fixed nits
5,6 Won't the hal and serialization ServiceProviders modules get complicated if they have a to register every other modules' normalization services. Also won't those ServiceProviders classes have their own if clauses because they would need to check if Link module is enabled. For instance for this
$service_definition = new Definition(HalLinkItemNormalizer::class, [
1, @larowlan you would be better to answer the question about #2353611: Make it possible to link to an entity by UUID
Comment #55
larowlanIn regards to #52.1 yes that would solve the issue *if* the default was to use the UUID version of the link. However, it is not - the serial ID will remain the default link representation (canonical).
The two issue are complimentary, and there is no harm (in my opinion) in having the additional context of the target_uuid in the normalized representation.
Comment #56
Wim Leers#54.6: You're right, I'm not sure what I was thinking. What I meant to say: can't we unconditionally define those, which means we can just define them in
link.services.yml
and inmenu_link_content.services.yml
. The services won't be instantiated if no REST is used, and hence would also never cause errors. They're just available for discovery/use.#55: Can you then add that justification at least to the IS, and preferably also in some sensible location in the patch? So that our future selves won't get confused by this. The test coverage seems a prime location for this. i.e.
+ + other relevant information.Since no more 8.1.x releases are happening, this won't be backported to 8.1.x anymore. Removing issue tag.
Comment #57
tedbowRE #54.6:
Moved services out of ServiceProvider Classes and in to *.services.yml files.
Comment #59
larowlanrest.link_manager doesn't exist unless rest module is enabled, which is why this was in a service provider :)
Comment #60
Wim LeersSo there we go, that's what we want to document on this service provider then! :)
Comment #61
tedbowOk doing my interdiff against #54 because that is what started from.
1. So we need a service provider for 2 of the services. But for 1 of the services in each module we can use *.services.yml so I used those.
re
Added a comment in each ServiceProvider
2. also re @alexpott's comment in #41 about
LinkServiceProvider implements ServiceModifierInterface
LinkServiceProvider was changed to use ServiceProviderInterface but it is not clear why MenuLinkContentServiceProvider is using ServiceModifierInterface in the first placeand not ServiceProviderInterface. Since MenuLinkContentServiceProvider is new in this patch it seems it should also use ServiceProviderInterface.
So changed that. Maybe someone will point out something I missed.
Comment #63
larowlanLet's leave it at #54, there are parent classes that we extend from that don't exist without those modules.
Comment #64
jibranIt is ready imo.
Comment #65
Wim LeersAFAICT this was never addressed:
Please think about out future selves.
Comment #66
tedbowPausing to think of our future selves...
Ok here is a patch that adds comments about the the process and how ids are used for canonical links but recreated on denormalization based on UUID.
Comment #67
dawehnerubernitpick. I would have started with $modules['serialization'] and then use 'hal', giving that the serialization is the more generic module than the hal one.
Is there a reason the link/generic implementation doesn't support
denormalize()
? Maybe we should document this hereSame thing as above.
One more thing: I'd expected to see a test in link and hal module as well.
Comment #68
Wim Leers#65: Thanks! Nits for that interdiff:
Nit: s/id/ID/
#66: Thanks for the review, @dawehner! Glad that you're also taking a look at this :)
Comment #69
tedbow@dawehner and @Wim Leers thanks for reviews!
#67
1,3 fixed.
2.
@dawehner good question!
I think supporting denormalize() is a mistake it means that deploy denormalization benefit will only work for MenuLinkContent entities not other fieldable entities that have Link fields.
This patch adds a test for this which should fail currently. I will now work on patch that added denormalize().
Comment #71
tedbowOk here is patch that should the test introduced in #69 working. Hopefully it does break to many other ;)
I found the problem:
$entity = $this->entityManager->getStorage($entity_type_id)->create($data);
Some questions/thoughts
Comment #73
tedbowNot surprised there were bunch of test failures. Before I look into fixing them.
Anybody have feedback on whether this is useful change or should we revert back to approach of #66?
Comment #74
Wim LeersThis is from #2824548: Move token info cache to data cache bin. Should be removed from this patch.
Let's document why this needs priority 30.
Let's document the rationale behind these priorities.
What I don't understand yet is how this then used to work until now?
This is also from an unrelated issue.
entity:
URIs AFAIK? So even if by default it'll only be used inNodeForm
, that can change when contrib starts using it.Comment #75
tedbow@Wim Leers thanks for review
I create #2827218: Denormalization on field items is never called: add FieldNormalizer + FieldItemNormalizer with denormalize() methods to solve the FieldItem denormalization problem first
Postponing this 1 on that
Comment #76
Wim Leers#2827218: Denormalization on field items is never called: add FieldNormalizer + FieldItemNormalizer with denormalize() methods landed, this is now unblocked!
Comment #77
tedbowOk then is just a re-roll of #71 without the serialization module changes as they were committed as part of #2827218: Denormalization on field items is never called: add FieldNormalizer + FieldItemNormalizer with denormalize() methods. Yay!!!
I tested the 3 tests this patch provides locally and they passed but presumably other tests will fail. Let's see.
Some @Wim Leers' review #74 no longer applies. The comments about documenting the priorities probably do will need to see what they will be. Might have to change the current ones and re-read this issue for numbers used so far.
Comment #78
jibranComment #79
Wim Leers#2827218: Denormalization on field items is never called: add FieldNormalizer + FieldItemNormalizer with denormalize() methods was committed to 8.3.x only, which makes it pretty difficult to backport this. If we need to backport this, then we shouldn't have the tag, but we should just mark this against
8.2.x-dev
.EDIT: forgot to say, in #2827218-62: Denormalization on field items is never called: add FieldNormalizer + FieldItemNormalizer with denormalize() methods, I changed that issue from "Fixed" in 8.3.x to "RTBC" in 8.2.x. The patch applies cleanly. Fingers crossed.
Comment #80
damiankloip CreditAttribution: damiankloip at Acquia commentedThis looks really tidy in general. A couple of smalls:
This parameter should be called $serializer. This makes it a bit more confusing IMO. Yes, the serializer class is a hot mess of interfaces :)
Could also consider just assuming that the serializer and linkManager as available as properties on classes where this trait is used? So you just use $this->serializer->normalize() instead? It makes the function signature more manageable, but does hide those dependencies a little.
This doesn't seem like a generic normalizer, just for LinkItems?
nit: Can you move this to the top instead (below the trait usage). Makes it easier to scan.
Comment #81
Wim LeersNW for #80.
Comment #82
tedbowOk here is fix for 3 points in #80
Comment #85
tedbowOk #82 had a bunch of test failures for 8.2.x but since comment #84 this won't get committed to 8.2.x anyways.
All the failures from #82 on 8.3.x seem to be because we are using the deprecated REST link manager. #2758897: Move rest module's "link manager" services to serialization module
Since in \Drupal\link\LinkServiceProvider we only check if Hal is enabled not Rest(no longer a dependency) this causes a error.
Changing to use new serialization.link_manager service. This also lets us get rid of any use of "rest" in this module including tests!
Comment #86
Wim LeersHurray! :D
Looking back at the last dozen comments, it seems my review in #74 was never addressed. #77 said some of it no longer applies, and that's true. Only point 2 needs to be addressed still!
#74 also replied to the 3 questions at the end of #71.
serialization
module.None of these need extra work.
Finally, another re-review now that we have a green patch again:
We moved logic from HAL's
EntityReferenceItemNormalizer
here, to this trait, so it can be reused by HAL'sHalLinkItemNormalizer
.s/normalized data/a normalization/
s/array()/[]/
Why not just call this
LinkItemNormalizer
? The class it extends also does not have aHal
prefix.This ironically already does not have the prefix :)
Let's move the
parent::normalize()
call to the very top. Because it doesn't require any of the variables created before it's called.Also, I think
$normalization
would be a better name than$normalized
.This means we're skipping any URI that is not using the
entity:
scheme.It'd be much clearer if we then moved all of the logic that comes after this to a helper method.
Then the function body would be much clearer:
i.e. exactly like #2825812: ImageItem should have an "derivatives" computed property, to expose all image style URLs is doing.
We should also update the docs of
LinkItemNormalizer
, because just likeImageItmeNormalizer
in #2825812, this is just decorating an existing normalizer, to deal with the special extra capabilities of this field type!All of this logic is also hugely repetitive. Just like #2825812: ImageItem should have an "derivatives" computed property, to expose all image style URLs has
ImageItemNormalizerTrait
, used by bothserialization
andhal
modules, we need anLinkItemNormalizerTrait
here.This is the second (and third and fourth) time we have URI scheme parsing logic. This indicates we need a
protected static function uriUsesEntityScheme()
helper method, that we call everywhere.Comment #87
tedbow@Wim Leers thanks again for the review
#74.2 updated comment about priority
re #86
1. not sure if this needs action or just a comment. HalLinkItemNormalizer is currently using EntityReferenceEmbeddingTrait
2. fixed
3. fixed both array() usages in this file
4(and 5). This class is in the namespace "Drupal\link\Normalizer" which already has a LinkItemNormalizer. The normalizers provided directly by the Hal module don't use the 'Hal' prefix but when other modules provide normalizers they have to differentiate between the 2 normalizers they provide.
#2825812: ImageItem should have an "derivatives" computed property, to expose all image style URLs has the same pattern. But in that patch we chose ImageItemHalNormalizer with "Hal" not as a prefix but before "Normalizer". We should probably use the same pattern in both issues. Either ThingHalNormalizer or HalThingNormalizer
I think I prefer ThingHalNormalizer but not changing now to get feedback.
6. fixed
7. Add the method decorateWithTargetUuid and update the class comment on both normalizers.
8. wow, I actually did this before I got to this comment when fixing above :) I called it EntityLinkItemNormalizerTrait because it all the methods deal with links that are to entities.
9. I had added this to trait above. I used the name isEntityLink will change to uriUsesEntityScheme.
Also added getTargetEntity(), getEntityPathParts(), and updateEntityUri() to this trait.
Comment #88
Wim LeersWrote #2825812-64: ImageItem should have an "derivatives" computed property, to expose all image style URLs to fix that there too. Let's drop theAh but damn, I realized why this is not possible:Hal
mention from the classname altogether, all other HAL normalizers also don't have that!Interdiff review:
Hm, wouldn't
$link_normalization
andThe link normalization.
not make more sense?s/linked/linked entity/
s/available/any/
s/id/ID/
s/ids/IDs/
So much better! (Also the other places where the trait is used.) Reuse of methods and much easier to understand code. Wins all around :)
Full patch review:
Let's mark this
@internal
.s/array()/[]/
Why only for
hal
and not also forserialization
?This is getting very close now :)
Comment #89
tedbow#88
Interdiff review
1. fixed @param name and comment
2. fixed
3. fixed with 3 other occurrences
4. fixed with 2 other occurrences
5 Yes!
Full patch review
1. added
2. fixed
3. see #71 5,6
Basically in Hal we normalize parent in menu item.
Yay!
Comment #90
Wim LeersCan we add the explanation for why this normalizer exists only for
hal
and not fornormalization
(i.e. #71.5 and #71.6)?Otherwise somebody else will surely wonder about that in the future. (I know I will!)
Other than that, this is RTBC now :)
Comment #91
tedbowAdded comment for our future selves.
Also fix 1 misspelling in a comment.
Comment #92
Wim LeersComment #93
larowlanLooks great, a couple of defensive suggestions, feel free to ignore
we could use the second argument to parse_url here, nominating we just want the path
we should use the third argument to explode here, nominating we expect 2 parts
Comment #94
Wim LeersGreat suggestions, thanks :)
Comment #95
tedbow@larowlan thanks for the suggestions.
Added
Comment #96
Wim LeersComment #98
andypostCI flux
Comment #100
tedbowCI Flux again
Comment #102
tedbowSorry didn't look close enough. Needs re-roll for #2854830: Move rest/serialization module's "link manager" services to HAL module
Comment #103
tedbowChanged to use link manager in Hal module
Comment #105
tedbowWhoops missed another reference to the old link manager.
Comment #106
Wim LeersI wanted to re-RTBC this issue.
But then I realized that what these things are testing… is what should be tested in a
\Drupal\Tests\rest\Functional\EntityResource\EntityResourceTestBase
test, really.Maybe it makes sense to keep these tests. But we definitely should have functional test coverage.
In fact, we have that test coverage being added in #2832859: Write EntityResourceTestBase subclasses for: MenuLinkContent!
Once that lands, we can just modify
MenuLinkContentResourceTestBase::createEntity()
to point to a node instead, and to have a parent link. Then we can repeat exactly this there, and we'll have a far better idea what these normalizations actually look like.Comment #107
Wim Leers#2832859: Write EntityResourceTestBase subclasses for: MenuLinkContent landed. Let's retest #105. If it still passes, it's RTBC.
Comment #108
Wim LeersEh, #107 is wrong. Because, quoting myself from the bottom of #106:
NW for that.
Comment #109
AComben CreditAttribution: AComben commentedRerolling #105 against latest 8.3.x
Comment #110
tedbow@AComben thanks for re-rolling!
Setting to "Needs Review" so the test bot runs
Comment #111
DamienMcKennaComment #112
DamienMcKennaNever mind, sorry.
Comment #113
dawehnerI'm wondering whether this method would better just accept the URI. It'd be a bit more obvious what its actually doing.
Comment #115
tedbow#113 @dawehner that sounds better, fixed.
Comment #116
Wim LeersThis is adding something that exists only in the normalization. Which means it won't exist in OpenAPI documentation.
If #2871591: Allow ComplexData in TypedData to specify computed properties that should be exposed in normalization and other contexts would be in, then we would be able to just add this as a property on
LinkItem
and have it work automatically.Comment #117
tacituseu CreditAttribution: tacituseu commentedComment #118
Wim Leers#2871591: Allow ComplexData in TypedData to specify computed properties that should be exposed in normalization and other contexts is in, #2910211: Allow computed exposed properties in ComplexData to support cacheability. is the last remaining blocker (was split off from #2871591 to make its scope narrower and help it land sooner), and that too is now RTBC!
Comment #119
Wim Leers#2910211: Allow computed exposed properties in ComplexData to support cacheability.. also landed, this is now fully unblocked!
I've rerolled #115 entirely in the spirit of #2871591: Allow ComplexData in TypedData to specify computed properties that should be exposed in normalization and other contexts. This reuses only the logic bits from prior patches, it removes all the normalizers.
This will still need test coverage, I should be able to recycle some of the test coverage of prior patches. For now, please just review for the overall approach.
The result in the REST module:
And together with #2921257-10: On Drupal 8.5, JSON API should respect Typed Data's new ::isInternal(), and JSON API Extras should use ::setInternal(), it even works automatically in the contrib JSON API module:
Comment #121
larowlannice!
Comment #124
c_archer CreditAttribution: c_archer as a volunteer and commentedHas there been any update on progressing this forward so we can have menu links exported with a node?
Comment #127
johnwebdev CreditAttribution: johnwebdev commented👏 2 years later and patch still applies, and works with Default Content module, 🎉
While working on some basic test coverage I noticed that the computed property won't actually change when URI property is changed. Thus the test will fail.
Comment #129
pookmish CreditAttribution: pookmish commentedPatch in #127 was working well for the most part but it would fail if the user enters an external link in the UI. The attached patch just does a simple check for that.
Comment #130
johnzzonNitpick: Code style error here. Should be a space between parenthesis and opening curly brace.
Comment #131
narendra.rajwar27Comment #132
narendra.rajwar27Updated patch for comment #130 and also rerolled patch for 9.1.x
Comment #134
narendra.rajwar27Comment #135
ridhimaabrol24 CreditAttribution: ridhimaabrol24 at Srijan | A Material+ Company for Drupal India Association commentedFixing failed tests.
Comment #136
Hardik_Patel_12 CreditAttribution: Hardik_Patel_12 at QED42 for Drupal India Association commentedworking on this.
Comment #137
Hardik_Patel_12 CreditAttribution: Hardik_Patel_12 at QED42 for Drupal India Association commentedComment #139
larowlanIn retrospect, I think this is a feature request.
Comment #141
larowlanwe can use the second argument here PHP_URL_SCHEME
these need to be empty arrays to comply with the interface, not FALSE.
this should default to \Drupal\Core\Cache\CacheBackendInterface::CACHE_PERMANENT, not FALSE
Comment #142
mohit_aghera CreditAttribution: mohit_aghera as a volunteer and commentedComment #143
mohit_aghera CreditAttribution: mohit_aghera as a volunteer and at QED42 commentedFixing all the issues mentioned in #141
Updated default value of the computed field to NULL, instead of false. Few test cases are passing now. Let's see how it goes.
Comment #145
mohit_aghera CreditAttribution: mohit_aghera as a volunteer and at QED42 commentedFixing another test case failure.
Past test case failures have been addressed now.
Comment #149
nod_Issue summary was updated in #49 and #119.
The patch doesn't apply to 10.1
Comment #150
pradhumanjain2311 CreditAttribution: pradhumanjain2311 at OpenSense Labs for DrupalFit commentedTry to fix patch #145 for 10.1.x.
please review.
Comment #151
nod_Please make sure to run
./core/scripts/dev/commit-code-check.sh
before uploading a patch to make sure there are no issues with code formatting. see https://www.drupal.org/docs/develop/development-tools/running-core-devel...There is a whole file missing from your reroll.
Comment #152
pradhumanjain2311 CreditAttribution: pradhumanjain2311 at OpenSense Labs for DrupalFit commentedTry to fix patch #150.
Comment #154
mohit_aghera CreditAttribution: mohit_aghera as a volunteer and at PreviousNext commented- Fixing the test case failures.
I think one of the issue was a miss in the re-roll. Fixed that.
There was other issue which was throwing warning, included that fix as well.
All failing test cases are passing on local now.
Comment #155
mohit_aghera CreditAttribution: mohit_aghera as a volunteer and at PreviousNext commentedComment #156
gaurav-mathur CreditAttribution: gaurav-mathur at Dotsquares Ltd. commentedPatch has #154 applied successfully on drupal version 10.1.x and working fine.
Thank you
Comment #157
smustgrave CreditAttribution: smustgrave at Mobomo commentedThe new functions being added should be typehinted.
Can the issue summary please be updated. The proposed solution mentions hal which isn't in core anymore.
Change record was created in 2016 so probably needs an update as well.
Would be worth pointing out if this has any affect on core or if this allowing contrib modules to export menu links.