Support from Acquia helps fund testing for Drupal Acquia logo

Comments

Greg Boggs’s picture

Pferlito,

From just reviewing the code, I noticed the panels code from the D7 branch is not in your zip, is that an open todo, or is it not needed in 8?

Anonymous’s picture

That's an open todo. I'm not a panels guy. Feel free to jump in.

Yaron Tal’s picture

Assigned: » Unassigned

Fixed some bugs in the module. Now works on the latest D8 git version.
Moved it into a sandbox: https://www.drupal.org/sandbox/yarontal/2345855
Panels integration is still a todo.

pivica’s picture

OK first patch based on @Yaron sandbox - there is no issue list there so I am posting it here.

Nothing special just hook_form_alter() rename to hook_form_FORM_ID_alter() format and better checking for blocks that comes over page_manager.

When #2358677: Add ThirdPartySettingsInterface to BlockInterface lands we can add support for ThirdPartySettingsInterface.

Status: Needs review » Needs work

The last submitted patch, 4: block_class_d8-2198023-4.patch, failed testing.

Berdir’s picture

Status: Needs work » Needs review

@Yaron Tal: Want to open the issue queue of your sandbox or give us (me and @pivica) commit access so we can push improvements to it?

About the panels code, that is going to be very different in 8.x I guess, we could already look into integrating with page_manager, but I'm not sure if it will in the end integrate with that or panels or something else. I would suggest to do a first commit without that and open a follow-up issue to discuss that.

That said, I think it would make sense to wait with that until we can use the third_party settings stuff, which I think would be great to have, as then the configuration is part of each block, so it is easier to provide defaults in features/modules and easier to deploy I think. Please +1 the core issue and if you know, post additional use cases.

Yaron Tal’s picture

Added both of you to the sandbox, you should have issue administration and VCS write access.
Will check back later if there is anything else I can contribute.

Berdir’s picture

Thanks, sorry for not getting back to you.

I posted the patch here and a new one for immutable configuration changes in the issue queue a few moments ago. Going to commit them in a few days unless you have any feedback.

Will also try to give #2358677: Add ThirdPartySettingsInterface to BlockInterface another push.

Berdir’s picture

Updated the patch there, if someone wants to review/test it.

Berdir’s picture

Quick update from the sandbox.

We added some basic tests, and I've just written a patch that refactors it to use the new block third party settings, which now landed in core: #2425675: Use block third party settings. Which I think is pretty awesome, because it allows to store (and deploy) class configurations together with the block, and they are automatically deleted when blocks are deleted.

Once that is in, I'd suggest to bring this module back to this repository as an 8.x-1.x branch. There is no page_manager/panels support there, but I think that's is a feature that we can always add back later, there are still many moving parts in that area.

We (MD Systems) are happy to help maintain the 8.x branch, we're doing that anyway now in the sandbox. Any of the maintainers still active that could give me and miro_dietiker co-maintainer rights?

DYdave’s picture

Title: Drupal 8 version » Port Block Class to Drupal 8

Hi guys,

Thank you so much for all the fantastic work on this ticket and for contributing this new version of the module.

I greatly apologize for the delay of my reply, but I thought it would be a good idea to leave some time to other users to test Block Class D8 in @Yaron Tal's sandbox.
Additionally, I also wanted to wait a little bit longer for D8 to be more stable and I know it's been for a couple of months, but I'm talking about when the ticket was initially posted (I kind of stalled, I know).

Alright, so I spent the necessary amount of time testing the module and reviewing the code.

It's really impressive how simple and small the code has become. I initally wanted to co-maintain this module because I thought the perimeter was very clear and the code base rather compact (I already managed cutting it by more than half with the 7.x-2.x branch), so that I could very well control the maintenance workload and maybe spend more time on SimpleTests (inexistant when I took over the module), support and documentation .... what can I say with this version :-) Things just keep getting better!!

In D8, the module file only contains two main functions (form_alter and preprocess_block) so far, since I guess more will perhaps follow, if there are any specific integration issues with Context, Panels, etc...
(Minor comment though: we might want to capture the submitted value for basic validation.... or not: validate what?! :-))

@Berdir I love what you've done with #2425675: Use block third party settings, in particular block.block.*.third_party.block_class: removing the need for a submit callback... cutting down the code even further.
Main difference with D7 is that it appears one more load is necessary for the block classes $block = Block::load($variables['elements']['#id']);, which was one of the most important points in the 7.x-2.x branch revamp.

No more install/uninstall fuctions and the long block_class.install file is gone (!!), since schema's in a metadata language now and in a specific file.
Same for permissions, moved to their own metadata file.

I see you've ported the initial SimpleTests, which is certainly understandable, since 7.x-2.x branch's Tests have a lot to do with Context and Features integration.
We'll see if more work is needed down the road, but that doesn't seem a problem at all initially to move forward with this version.

Overall the code is amazingly clean, clear, elegant (@Berdir it really demonstrates your deep understanding and involvement in the D8's development) and I would surely be delighted to have it committed to a new 8.0.x-1.x branch, if there isn't any particular objections.

Now, in terms of credits, I've seen plenty of you have given a stab to this D8 Port: @pferlito, @Yaron Tal, @pivica, @Berdir.... not sure how I could split the authorship of a single commit into several users, so perhaps I should have this committed in multiple parts.... So that each of you guys get credited with a commit? (but that's not really ideal in terms of code maintenance in the repo....)
Any suggestions about that?

Which pretty much wraps up my review/comment.

Please let me know if you would have any further comments, feedback, questions, issues, objections, suggestions or concerns on any aspects of Block Class D8's code, my comment or this ticket in general, I would be glad to provide more information or explain in more details.

Thanks again very much to everyone for your testing, reviews, and great work on this port of the Block Class module.
(code should be committed shortly)
Cheers!

Berdir’s picture

Thanks for the feedback.

Main difference with D7 is that it appears one more load is necessary for the block classes $block = Block::load($variables['elements']['#id']);, which was one of the most important points in the 7.x-2.x branch revamp.

Yes, I'm not too happy about that.

Note that the block has already been loaded, so the configuration is in the static cache. However, what's not is the block config entity. Unfortunately, that information is no longer in there, because we want to ensure that code also works with page manager and so on, which also displays blocks, but without block config entity...

If you want to open a core issue and argue for adding it again (because the id is also optional, so there really isn't a big difference..), or maybe just make the third party settings available

Also, block caching is much more effective in 8.x, so that code will not be called as often as in 7.x I think.

Now, in terms of credits, I've seen plenty of you have given a stab to this D8 Port: @pferlito, @Yaron Tal, @pivica, @Berdir.... not sure how I could split the authorship of a single commit into several users, so perhaps I should have this committed in multiple parts.... So that each of you guys get credited with a commit? (but that's not really ideal in terms of code maintenance in the repo....)
Any suggestions about that?

You could possibly just keep the commits and just merge it in from the sandbox?

Anonymous’s picture

Except I don't have any commits in the sandbox. I would appreciate
proper attribution on this. Thanks.

DYdave’s picture

Hi guys,

Happy to see this issue is moving along so well.

@Berdir
Thank you very much for your kind and detailed feedback.

Yes, I'm not too happy about that.
...
Also, block caching is much more effective in 8.x, so that code will not be called as often as in 7.x I think.

To be really honest, I'm actually still far from having the level of understanding of D8's internals that you might have.... so as much as wiseness goes, I'd like to rely on your opinion for this and do whatever you would think would be best, considering the implications this may also have on other Contributed or Core modules.
If you would think it would be worth it and best to work on getting back the block config entity or somehow making the third party settings available, I would definitely be glad to work on this Core issue (I would clearly appreciate a little guidance to get started though).

I've just been thinking this situation could surely happen in numerous other Contributed modules...
In any case, we are going to move forward with the code as it currently is. If changes to core functions were ever made in the future, we'd come back to the module and have a new issue opened.

However, before getting the code in the repository, I'd really like to settle on the credits for this issue (I know it matters).

@pferlito,

I would appreciate proper attribution on this. Thanks.

Bet you would! :-D and I'd also be in favor of giving credit to everyone who carried work on this issue.
I totally understand the feeling (more so if it was on your own time).

I'd really like to accomodate everyone's requests, so how about:

  1. We get the sandbox merged with the module, as @Berdir suggested.
  2. Then I'll make a minor formatting change in the README.txt file (Upper case the "Block Class" at the top of the file and remove the "=====") and get it credited to @pferlito, with a special comment, for example:
    Issue #2198023 by pferlito: Accounts for the work performed on porting Block Class to Drupal 8.

This way everybody would get credited: @pferlito, @Anushka-mp, @Berdir, @pivica, @Yaron Tal.

How does it sound? Would something like that work for everyone?

Feel free to let me know if you would have any other ideas or suggestions for crediting everyone for their work on this issue, I would be glad to hear potentially better alternatives.

Please let me know if you would have any further comments, feedback, questions, issues, objections, suggestions or concerns on any aspects of this comment or this feature request in general, I would be glad to provide more information or explain in more details.

Thanks again very much to everyone for your great feedback, help and comments.
Looking forward to having this code committed soon.
Cheers!

Berdir’s picture

On the core issue, what we could do is either in BlockViewBuilder::buildBlock(), remove the unset() there again. Or in viewMultiple(), additionally to #configuration, also add #third_party_settings as a key so that modules can access their third party settings again without having to load the block again.

About commit credits, no special requirements there from my side. What would be great is if you could list "MD Systems" as a supporting organization on the project page (there's a special field for that now) and give us credit there for the port. My own, Anushka-mp's and pivica's work has been sponsored by us.

As an alternative to your suggestion with the README, you could change the existing "Initial commit" commit message to give credit to @pferlito and Yaron Tal. See http://stackoverflow.com/questions/1186535/how-to-modify-a-specified-commit on how to change the commit message.

Also, one last note: The 8.0.x-1.x is actually incorrectly named. Contrib projects still use 8.x-1.x, you will have to rename it before pushing to the official repository.

Anonymous’s picture

I am ok with Berdir's suggestion of initial commit message credit. Thanks.

Devin Carlson’s picture

Status: Needs review » Reviewed & tested by the community

It would be great to get this merged in!

I've been using the sandbox without any problems and don't see any issues with the code.

samuel.mortenson’s picture

Edit: this was related to #2509142: Add support for page manager, sorry for the spam.

When using this patch and adding a block with Page Manager, the "page" argument is located at "$form_state->getBuildInfo()['args'][1]", not "$form_state->getBuildInfo()['args'][0]" (see block_class_page_manager_display_variant_block_form_submit() and block_class_form_alter()). Is anyone else seeing this, and if so is there a better way to pull in the current page? If it can be assumed that the page will always be at offset 1 then I can re-roll the patch.

shree.yesare’s picture

Hi,

I'm also interested in maintaining the block_class project.

Can we please have D8 version of Block_class project under the current project, so we don't change the project name to "block_class_d8" just for D8, because the functionality will remain same.

yannickoo’s picture

Hey guys, axe312 and I have created the Block Attributes which solves the "class on block" problem. Give it a try :)

kingfisher64’s picture

A reiteration of #19 - can we please have a current project release for drupal 8?

Kind regards

chegor’s picture

Priority: Normal » Major

Up this task, because there are only 2 weeks before stable 8.0.0

Archual’s picture

I wasn't able to apply patch: block_class_d8-2198023-4.patch
I fixed bug with interface and immutable config, create patch for this and I am posting it here.
With bootstrap theme module works now. Must be tested with other theme.

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 23: block_class-fix-2198023-23-d8.patch, failed testing.

Archual’s picture

I fixed header of the patch, and attaching new file.

Berdir’s picture

Issue summary: View changes

Do not use the patch. The latest code is in the sandbox referenced in the comments: https://www.drupal.org/sandbox/yarontal/2345855

Angerslave’s picture

Are there any plans from the module maintainers to organize D8 development in this module? Looks like things are getting split by several places. Berdir, may be you want to get the module maintainership so the code will be organized, attributed and deployed (for current 7.x users) properly?

Berdir’s picture

Status: Needs work » Reviewed & tested by the community

We're waiting for the maintainer to commit this. I'm not too eager to get more modules I have to maintain, I already have too many ;)

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 25: block_class-fix-2198023-25-d8.patch, failed testing.

andypost’s picture

Issue summary: View changes
andypost’s picture

Status: Needs work » Reviewed & tested by the community
emanuelrighetto’s picture

I've installed the sandbox module. I had no problem. IMHO the module is ready for a stable release.

axe312’s picture

Guys keep on working on/testing this small not yet working module.. or just use my port of block_attributes which is working smoothly on several projects https://github.com/axe312ger/block_attributes

Edit: I would love to merge, but looks like the block_attributes maintainer is not active -> https://www.drupal.org/node/2574899#comment-10679248

Greg Boggs’s picture

It might be helpful if you could explain the differences between your project and the current Block Class port? Maybe they could be merged into Block_class?

awasson’s picture

The sandbox linked in #26 seems to be working just fine. I haven't looked at the code for problems but it installed cleanly and works as expected with no detectable side-effects.

raj45’s picture

I can confirm that the sandbox module linked in #26 works just fine, and probably ready to be released here officially.

Rajab Natshah’s picture

I have tested the module on Drupal 8 .. and It's working well for Block configuration on the Block Layout for the theme.

matio89’s picture

Assigned: Unassigned » matio89
Issue tags: +2652942
FileSize
2.17 KB
8.7 KB

Hi guys ,
i made the version stable of block class compatible with Drupal 8.0.2 Core. :)
@raj45 @RajabNatshah, the sandbox module doesn't work.it's still have hook_permission and user_access and $form_state['values'] => not compatible with Drupal 8.0.2
Here is the patch and the module zipped or view this issue (https://www.drupal.org/node/2652942).
Thanks.

Berdir’s picture

I have no idea what you are looking at. The sandbox in https://www.drupal.org/sandbox/yarontal/2345855 works just fine with 8.0.2.

Status: Reviewed & tested by the community » Needs work
matio89’s picture

Hi Berdir ,
I downloaded the zip file, that's why i told that => i tested and it's worky perfectly :).

raj45’s picture

@matio89: Have you actually tried the sandbox module in https://www.drupal.org/sandbox/yarontal/2345855 with Drupal 8.0.2?
As I said earlier, it works perfectly for me...

matio89’s picture

@raj45 : Yes , it's works perfectly. :)

Berdir’s picture

Status: Needs work » Reviewed & tested by the community
Issue tags: -2652942

Then lets go back to RTBC.

raj45’s picture

Assigned: matio89 » Unassigned
chegor’s picture

So, can we push this to d.org?

yannickoo’s picture

lomasr’s picture

I have tested the module and its working for me.

raj45’s picture

The sandbox module still works fine for me, it would be great to get it officially released on drupal.org soon.

joshuautley’s picture

In block_class.info.yml

Why is the "package: Core"?

I recommend...

name: Block Class
description: Allows assigning CSS classes to blocks.
core: 8.x
type: module
package: Other
dependencies:
  - block
joshuautley’s picture

After Install while running Drupal 8.0.3

Notice: Undefined index: class in block_class_preprocess_block() (line 69 of modules/block_class/block_class.module).

block_class_preprocess_block(Array, 'block', Array)
Drupal\Core\Theme\ThemeManager->render('block', Array)
Drupal\Core\Render\Renderer->doRender(Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1)
__TwigTemplate_7aec483dc763850ec3244bdbd2a53e3ee66cc42bccbb7486fcf563e27881c60c->doDisplay(Array, Array)
Twig_Template->displayWithErrorHandling(Array, Array)
Twig_Template->display(Array)
Twig_Template->render(Array)
twig_render_template('core/themes/seven/templates/page.html.twig', Array)
Drupal\Core\Theme\ThemeManager->render('page', Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1)
__TwigTemplate_7ad8b6b9136b224eb85bcc3592462a8242d4db3e3a326fb1325830e8bb975d94->doDisplay(Array, Array)
Twig_Template->displayWithErrorHandling(Array, Array)
Twig_Template->display(Array)
Twig_Template->render(Array)
twig_render_template('core/themes/classy/templates/layout/html.html.twig', Array)
Drupal\Core\Theme\ThemeManager->render('html', Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}()
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1)
Drupal\ban\BanMiddleware->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1)
Stack\StackedHttpKernel->handle(Object, 1, 1)
Drupal\Core\DrupalKernel->handle(Object)

Notice: Undefined index: class in block_class_preprocess_block() (line 69 of modules/block_class/block_class.module).

block_class_preprocess_block(Array, 'block', Array)
Drupal\Core\Theme\ThemeManager->render('block', Array)
Drupal\Core\Render\Renderer->doRender(Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1)
__TwigTemplate_7aec483dc763850ec3244bdbd2a53e3ee66cc42bccbb7486fcf563e27881c60c->doDisplay(Array, Array)
Twig_Template->displayWithErrorHandling(Array, Array)
Twig_Template->display(Array)
Twig_Template->render(Array)
twig_render_template('core/themes/seven/templates/page.html.twig', Array)
Drupal\Core\Theme\ThemeManager->render('page', Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1)
__TwigTemplate_7ad8b6b9136b224eb85bcc3592462a8242d4db3e3a326fb1325830e8bb975d94->doDisplay(Array, Array)
Twig_Template->displayWithErrorHandling(Array, Array)
Twig_Template->display(Array)
Twig_Template->render(Array)
twig_render_template('core/themes/classy/templates/layout/html.html.twig', Array)
Drupal\Core\Theme\ThemeManager->render('html', Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}()
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1)
Drupal\ban\BanMiddleware->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1)
Stack\StackedHttpKernel->handle(Object, 1, 1)
Drupal\Core\DrupalKernel->handle(Object)

Notice: Undefined index: class in block_class_preprocess_block() (line 69 of modules/block_class/block_class.module).

block_class_preprocess_block(Array, 'block', Array)
Drupal\Core\Theme\ThemeManager->render('block', Array)
Drupal\Core\Render\Renderer->doRender(Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1)
__TwigTemplate_7aec483dc763850ec3244bdbd2a53e3ee66cc42bccbb7486fcf563e27881c60c->doDisplay(Array, Array)
Twig_Template->displayWithErrorHandling(Array, Array)
Twig_Template->display(Array)
Twig_Template->render(Array)
twig_render_template('core/themes/seven/templates/page.html.twig', Array)
Drupal\Core\Theme\ThemeManager->render('page', Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1)
__TwigTemplate_7ad8b6b9136b224eb85bcc3592462a8242d4db3e3a326fb1325830e8bb975d94->doDisplay(Array, Array)
Twig_Template->displayWithErrorHandling(Array, Array)
Twig_Template->display(Array)
Twig_Template->render(Array)
twig_render_template('core/themes/classy/templates/layout/html.html.twig', Array)
Drupal\Core\Theme\ThemeManager->render('html', Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}()
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1)
Drupal\ban\BanMiddleware->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1)
Stack\StackedHttpKernel->handle(Object, 1, 1)
Drupal\Core\DrupalKernel->handle(Object)

Notice: Undefined index: class in block_class_preprocess_block() (line 69 of modules/block_class/block_class.module).

block_class_preprocess_block(Array, 'block', Array)
Drupal\Core\Theme\ThemeManager->render('block', Array)
Drupal\Core\Render\Renderer->doRender(Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1)
__TwigTemplate_7aec483dc763850ec3244bdbd2a53e3ee66cc42bccbb7486fcf563e27881c60c->doDisplay(Array, Array)
Twig_Template->displayWithErrorHandling(Array, Array)
Twig_Template->display(Array)
Twig_Template->render(Array)
twig_render_template('core/themes/seven/templates/page.html.twig', Array)
Drupal\Core\Theme\ThemeManager->render('page', Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1)
__TwigTemplate_7ad8b6b9136b224eb85bcc3592462a8242d4db3e3a326fb1325830e8bb975d94->doDisplay(Array, Array)
Twig_Template->displayWithErrorHandling(Array, Array)
Twig_Template->display(Array)
Twig_Template->render(Array)
twig_render_template('core/themes/classy/templates/layout/html.html.twig', Array)
Drupal\Core\Theme\ThemeManager->render('html', Array)
Drupal\Core\Render\Renderer->doRender(Array, )
Drupal\Core\Render\Renderer->render(Array)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}()
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1)
Drupal\ban\BanMiddleware->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1)
Stack\StackedHttpKernel->handle(Object, 1, 1)
Drupal\Core\DrupalKernel->handle(Object)

Danny Englander’s picture

I just tested the Sandbox module with Drupal 8.0.5 and it works like a charm.

  • Berdir committed 2ce88c0 on 8.x-1.x authored by pivica
    Issue #2198023 by pivica: Prevent errors when page_manager is used.
    
  • DYdave committed 6557c51 on 8.x-1.x
    Issue #2198023 by pivica, pferlito, Berdir, Yaron Tal, DYdave: Ported...
  • DYdave committed 4d27a73 on 8.x-1.x
    Issue #2198023 by pferlito: Accounts for the work performed on porting...
Yaron Tal’s picture

I guess this can be closed and any new/remaining bugs should have separate issues? I'll also close my sandbox project.

Berdir’s picture

Status: Reviewed & tested by the community » Fixed

I didn't see that this was committed, nice.

Yes, we can close it then I think.

@YaronTal: Be careful with deleting the sandbox. Users might refer to it, e.g. as git submodules and deleting it will break that. I'd just add a description that says that this is now in the main repository again.

raj45’s picture

Is there an easy way to change from the sandbox version to the official version, or do I need to uninstall the sandbox version, install the official release and reconfigure my blocks?

Berdir’s picture

It's the same code, drupal doesn't care where it comes from. Just update the code, no other changes are necessary.

You want to update to a release, even if it's just a dev snapshot (an alpha release would be nice) as you will then get notifications when updates are available.

raj45’s picture

Thanks @Berdir! So, would this do it?

cd example.com
rm modules/block_class_d8 -rf
drush dl block_class
drush cr
Yaron Tal’s picture

I also noticed an issue was still open. I updated the frontpage and will create a new issue in this issue queue so I can close the issue in the sandbox project.
I'll leave the sandbox as is for now. If a 8.x version is released I'll close it, people still using it by then deserve to have their builds broken.

@raj45 the old and new module should have the same path, it is possible that a drush cr would fix this, but I'd advising testing it on a test-version before running this on production.

raj45’s picture

@Yaron Tal, I have tested and updated from sandbox to dev-release with the above commands, even with different paths.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.