Hi there!
I have a RRSSB block located at my nodes with the type "Article" via Block Scheme.
I stumbled upon an unusial behaviour: when editors try to revert to an older revision of any article, they get an error (full log provided below) and are unable to use Revisions properly.
Admin, however, is totally capable to revert the same node.
Upon trying to locate the reason, I disabled RRSSB block, and immediately after that, the problem was fixed. Turning it back on once again brings the problem back.
Also, I only recently moved RRSSB to Block Scheme. Before that it was located on Article Layout via Layout Builder and everything worked fine.
Error:
Error: Call to a member function toUrl() on string in node_tokens() (line 171 of /home/httpd/vhosts/website/httpdocs/web/core/modules/node/node.tokens.inc)
#0 [internal function]: node_tokens('node', Array, Array, Array, Object(Drupal\Core\Render\BubbleableMetadata))
#1 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Extension/ModuleHandler.php(403): call_user_func_array('node_tokens', Array)
#2 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Utility/Token.php(304): Drupal\Core\Extension\ModuleHandler->invokeAll('tokens', Array)
#3 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Utility/Token.php(196): Drupal\Core\Utility\Token->generate('node', Array, Array, Array, Object(Drupal\Core\Render\BubbleableMetadata))
#4 /home/httpd/vhosts/website/httpdocs/web/modules/contrib/rrssb/rrssb.module(176): Drupal\Core\Utility\Token->replace('[node:url]', Array, Array, Object(Drupal\Core\Render\BubbleableMetadata))
#5 /home/httpd/vhosts/website/httpdocs/web/modules/contrib/rrssb/src/Plugin/Block/RRSSBBlock.php(24): rrssb_get_buttons('default', '4444', 'url.path')
#6 /home/httpd/vhosts/website/httpdocs/web/core/modules/block/src/BlockViewBuilder.php(171): Drupal\rrssb\Plugin\Block\RRSSBBlock->build()
#7 [internal function]: Drupal\block\BlockViewBuilder::preRender(Array)
#8 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php(101): call_user_func_array(Array, Array)
#9 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Render/Renderer.php(781): Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_ren...', 'exception', 'Drupal\\Core\\Ren...')
#10 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Render/Renderer.php(372): Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array)
#11 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Render/Renderer.php(444): Drupal\Core\Render\Renderer->doRender(Array)
#12 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Render/Renderer.php(200): Drupal\Core\Render\Renderer->doRender(Array, false)
#13 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Template/TwigExtension.php(450): Drupal\Core\Render\Renderer->render(Array)
#14 /home/httpd/vhosts/website/httpdocs/web/sites/default/files/php/twig/6025237756887_page.html.twig_BbezrDYDLQw1hheMeEmu6S_Q5/hu_kbE-mG2IY267aeZ1uvzs_lYJf4z4Vg3r3L3df1nI.php(190): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#15 /home/httpd/vhosts/website/httpdocs/vendor/twig/twig/src/Template.php(182): __TwigTemplate_1f5143bd6e67b5d38cb5c08c73f8f3637446f94c459b5c5be1c1055dc78ced88->block_content(Array, Array)
#16 /home/httpd/vhosts/website/httpdocs/web/sites/default/files/php/twig/6025237756887_page.html.twig_ej8JpttvDJL3OTIZY1sW28Ufp/r29VTaoJrC_Hf6IV40uM2M0PPmOnRpNTw3yacgxREWY.php(84): Twig\Template->displayBlock('content', Array, Array)
#17 /home/httpd/vhosts/website/httpdocs/vendor/twig/twig/src/Template.php(405): __TwigTemplate_320f7bf96253e75eff66bde099a18426abbe5516980edaa37865895db28c21d0->doDisplay(Array, Array)
#18 /home/httpd/vhosts/website/httpdocs/vendor/twig/twig/src/Template.php(378): Twig\Template->displayWithErrorHandling(Array, Array)
#19 /home/httpd/vhosts/website/httpdocs/web/sites/default/files/php/twig/6025237756887_page.html.twig_BbezrDYDLQw1hheMeEmu6S_Q5/hu_kbE-mG2IY267aeZ1uvzs_lYJf4z4Vg3r3L3df1nI.php(46): Twig\Template->display(Array, Array)
#20 /home/httpd/vhosts/website/httpdocs/vendor/twig/twig/src/Template.php(405): __TwigTemplate_1f5143bd6e67b5d38cb5c08c73f8f3637446f94c459b5c5be1c1055dc78ced88->doDisplay(Array, Array)
#21 /home/httpd/vhosts/website/httpdocs/vendor/twig/twig/src/Template.php(378): Twig\Template->displayWithErrorHandling(Array, Array)
#22 /home/httpd/vhosts/website/httpdocs/vendor/twig/twig/src/Template.php(390): Twig\Template->display(Array)
#23 /home/httpd/vhosts/website/httpdocs/web/core/themes/engines/twig/twig.engine(65): Twig\Template->render(Array)
#24 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('themes/custom/b...', Array)
#25 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Render/Renderer.php(431): Drupal\Core\Theme\ThemeManager->render('page', Array)
#26 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Render/Renderer.php(200): Drupal\Core\Render\Renderer->doRender(Array, false)
#27 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Template/TwigExtension.php(450): Drupal\Core\Render\Renderer->render(Array)
#28 /home/httpd/vhosts/website/httpdocs/web/sites/default/files/php/twig/6025237756887_html.html.twig_7tX52_B203EldIhXGRRb3360N/JGwemINpGqlc2sAy2-U41oFkZ-RHY6_U1cjTcpZpMsk.php(84): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#29 /home/httpd/vhosts/website/httpdocs/vendor/twig/twig/src/Template.php(405): __TwigTemplate_cb2ef46256b9f5d33ee2e814a8fa8d28676a62767704d2cb9cafcb67d45a2fde->doDisplay(Array, Array)
#30 /home/httpd/vhosts/website/httpdocs/vendor/twig/twig/src/Template.php(378): Twig\Template->displayWithErrorHandling(Array, Array)
#31 /home/httpd/vhosts/website/httpdocs/vendor/twig/twig/src/Template.php(390): Twig\Template->display(Array)
#32 /home/httpd/vhosts/website/httpdocs/web/core/themes/engines/twig/twig.engine(65): Twig\Template->render(Array)
#33 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('themes/custom/b...', Array)
#34 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Render/Renderer.php(431): Drupal\Core\Theme\ThemeManager->render('html', Array)
#35 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Render/Renderer.php(200): Drupal\Core\Render\Renderer->doRender(Array, false)
#36 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(162): Drupal\Core\Render\Renderer->render(Array)
#37 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Render/Renderer.php(573): Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}()
#38 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(163): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#39 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/EventSubscriber/MainContentViewSubscriber.php(90): Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\CurrentRouteMatch))
#40 [internal function]: Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher))
#41 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(142): call_user_func(Array, Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher))
#42 /home/httpd/vhosts/website/httpdocs/vendor/symfony/http-kernel/HttpKernel.php(163): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view')
#43 /home/httpd/vhosts/website/httpdocs/vendor/symfony/http-kernel/HttpKernel.php(80): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#44 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#45 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#46 /home/httpd/vhosts/website/httpdocs/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#47 /home/httpd/vhosts/website/httpdocs/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#48 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#49 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#50 /home/httpd/vhosts/website/httpdocs/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#51 /home/httpd/vhosts/website/httpdocs/web/core/lib/Drupal/Core/DrupalKernel.php(706): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#52 /home/httpd/vhosts/website/httpdocs/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#53 {main}
Comments
Comment #2
adamps commentedThanks, sounds like a bug.
It seems to be a very specific case so not really major - no one else has noticed for years:-)
Comment #3
toomanynights commented@AdamPS Alright then =) Did seem major to me, but maybe using RRSSB via Block Scheme is less common than it seems.
Anyway, it works great with Layout Builder, so yeah, it's not urgent I guess.
Comment #4
apower commentedI was experiencing the same issue when trying to view nodes with RRSSB added with the layout builder.
It was an issue where revisions would return the node ID instead of the node object like the rrssb_get_buttons() function expected.
Attached is a patch I wrote to fix the issue for me which works with the 8.x-2.4 version. Hopefully it helps someone else.
Comment #5
adamps commentedComment #6
adamps commentedI can't reproduce the bug, however I can see the idea. In
RRSSBBlock::build(), the call to\Drupal::routeMatch()->getParameter('node')might not return a node. We could be on any page from any module and it might just happen to have a parameter called node. OK, probably not great code, but it's possible.So I suggest the best fix is to check for
NodeInterface.Please can someone test?
Comment #8
adamps commented