Issue #1961870 by Cottser, foopang, kgoel, shanethehat, tlattimore, c4rl, joelpittet, thedavidmeister: Convert page.tpl.php to Twig.

(as of #76)

Task

Use Twig instead of PHPTemplate

Remaining

  • Replace all templates with .html.twig equivalent templates

Theme function name/template path Conversion status
core/modules/system/templates/page.tpl.php converted
core/themes/bartik/templates/page.tpl.php converted here due to theme() calls in page.tpl.php
core/themes/seven/templates/page.tpl.php converted here so that breadcrumb can be converted to a render array
core/modules/block/tests/themes/block_test_theme/page.tpl.php converted

Related

#1885560: [meta] Convert everything in theme.inc to Twig
#1987510: [meta] Convert all core *.tpl.php templates to Twig as singular patch

CommentFileSizeAuthor
#69 interdiff.txt3.35 KBshanethehat
#69 twig-page-1961870-69.patch47.75 KBshanethehat
#65 1961870-65-twig-page.patch45.05 KBjoelpittet
#59 1961870-59.patch45.04 KBstar-szr
#59 interdiff.txt942 bytesstar-szr
#57 1961870-57.patch45.05 KBstar-szr
#57 interdiff.txt3.68 KBstar-szr
#48 drupal-1961870-48.patch41.36 KBc4rl
#48 drupal-1961870-48.patch-interdiff.txt11.76 KBc4rl
#47 1961870-47.patch39.21 KBstar-szr
#47 interdiff.txt561 bytesstar-szr
#45 interdiff.txt1.65 KBshanethehat
#45 twig-theme-page-1961870-45.patch39.3 KBshanethehat
#42 interdiff.txt3.8 KBshanethehat
#42 twig-theme-page-1961870-42.patch39.3 KBshanethehat
#40 1961870-page-html-twig-39.patch37.87 KBtlattimore
#40 interdiff.txt1.44 KBtlattimore
#37 1961870-page-html-twig-37.patch37.87 KBtlattimore
#37 interdiff.txt2.86 KBtlattimore
#30 1961870-30.patch40.73 KBstar-szr
#30 interdiff.txt7.36 KBstar-szr
#28 1961870-28.patch41.63 KBstar-szr
#28 interdiff.txt698 bytesstar-szr
#27 1961870-27.patch41.66 KBstar-szr
#27 interdiff.txt27.61 KBstar-szr
#24 bartik-page.html_.twig-1961870-24.patch16.44 KBkgoel
#21 bartik-page.html_.twig-1961870-20.patch9.55 KBkgoel
#19 bartik-page.html_.twig-1961870-19.patch9.58 KBkgoel
#15 19618670-15.patch32.28 KBstar-szr
#15 interdiff.txt14.88 KBstar-szr
#11 convert-page.tpl_.php-twig-1961870-11.patch21.29 KBfoopang
#7 convert-page.tpl_.php-twig-1961870-7.patch20.16 KBfoopang
#4 convert-page.tpl_.php-twig-1961870-4.patch13.25 KBfoopang
#1 convert-page.tpl_.php-twig-1961870.patch14.38 KBfoopang
Support from Acquia helps fund testing for Drupal Acquia logo

Comments

foopang’s picture

Status: Active » Needs review
FileSize
14.38 KB

Status: Needs review » Needs work
Issue tags: -Twig

The last submitted patch, convert-page.tpl_.php-twig-1961870.patch, failed testing.

foopang’s picture

Status: Needs work » Needs review
Issue tags: +Twig
foopang’s picture

Re-rolling the patch.

Status: Needs review » Needs work

The last submitted patch, convert-page.tpl_.php-twig-1961870-4.patch, failed testing.

star-szr’s picture

This patch should probably include this conversion as well if possible:
core/modules/block/tests/themes/block_test_theme/page.tpl.php

foopang’s picture

Status: Needs work » Needs review
FileSize
20.16 KB

OK, let's try this again.

Status: Needs review » Needs work

The last submitted patch, convert-page.tpl_.php-twig-1961870-7.patch, failed testing.

star-szr’s picture

Thanks @foopang!

I would look at bringing over any changes made to template_preprocess_page() and template_process_page() in the sandbox to move this along further.

star-szr’s picture

Issue tags: +Needs manual testing

Tagging.

foopang’s picture

Status: Needs work » Needs review
FileSize
21.29 KB

Hi @Cottser, why it failed the SimpleTest?

star-szr’s picture

I would run the failing tests locally and look at the verbose results to debug this further.

  1. Click the 'View details' beside any patch, e.g. http://qa.drupal.org/pifr/test/484218
  2. Enable the 'Testing' module.
  3. Navigate to admin/config/development/testing.
  4. Find the failing tests and run only the failing tests locally, checking the verbose output.

Please come to #drupal-twig on IRC for more discussion :)

Status: Needs review » Needs work

The last submitted patch, convert-page.tpl_.php-twig-1961870-11.patch, failed testing.

star-szr’s picture

Assigned: Unassigned » star-szr

This one's next on my list.

star-szr’s picture

Status: Needs work » Needs review
FileSize
14.88 KB
32.28 KB

We'll need to convert Bartik's page.tpl.php in this issue because of the theme() calls in the template.

This patch is mostly for testbot:

  • Temporarily removes Bartik's page.tpl.php entirely so the base page.html.twig is used.
  • Converts the theme calls added to preprocess to render arrays per http://drupal.org/node/1920746#render.

I haven't gone through the docs yet, just reformatted the @todos in the Twig templates.

star-szr’s picture

Status: Needs review » Needs work
star-szr’s picture

Assigned: star-szr » Unassigned
Issue tags: +Novice

I think the test failures may just be from the missing Bartik conversion, either way I suggest the next step here is adding a Bartik version of page.html.twig here and uploading for testbot.

Tagging as novice, the process here would be comparing core/modules/system/templates/page.tpl.php with core/themes/bartik/templates/page.tpl.php, and creating core/themes/bartik/templates/page.html.twig to match up with the Bartik overrides (add wrapper divs, etc). Start by copying over core/modules/system/templates/page.html.twig from this patch and modify from there.

If you'd like to work on this, please assign the issue to yourself. If you get stuck, drop by #drupal-twig on IRC or post your questions here. Thanks!

kgoel’s picture

Assigned: Unassigned » kgoel

I am going to work on this task.

kgoel’s picture

Status: Needs work » Needs review
FileSize
9.58 KB

As per Cotter's #17 comment, I have created bartik - page.html.twig.

Status: Needs review » Needs work

The last submitted patch, bartik-page.html_.twig-1961870-19.patch, failed testing.

kgoel’s picture

Status: Needs work » Needs review
FileSize
9.55 KB

Fixed white spaces issue.

Status: Needs review » Needs work

The last submitted patch, bartik-page.html_.twig-1961870-20.patch, failed testing.

star-szr’s picture

@kgoel - thank you, at a glance that looks like a great start! It looks like your patch only contains the bartik template - can you please upload a patch that has the bartik page.html.twig you created combined with the patch from #15? If you're having trouble the folks in #drupal-twig can probably help out :)

+++ b/core/themes/bartik/templates/page.html.twigundefined
@@ -0,0 +1,228 @@
+ * can be found in the html.tpl.php template normally located in the ¶

Also a bit more trailing whitespace on this line.

kgoel’s picture

Status: Needs work » Needs review
FileSize
16.44 KB

Cottser - thanks! I have combined patch from #15 with bartik page.html.twig

Status: Needs review » Needs work

The last submitted patch, bartik-page.html_.twig-1961870-24.patch, failed testing.

star-szr’s picture

Assigned: kgoel » star-szr

Thanks for pushing this along @kgoel - the patch in #24 doesn't have all the files but not to worry, I was able to apply your patch from #21 and will post a combined and updated patch. I found some syntax errors in the template so I am fixing those and otherwise making sure Stark and Bartik markup match up. I was able to debug the syntax errors by just viewing the homepage, the errors told me where the unexpected syntax was and on what line of the Twig file it was found.

This was the most common thing I noticed:

<div id="name-and-slogan"{% if hide_site_name is defined and hide_site_slogan is defined %}{{ class="element-invisible }}>

Inside the {% if %} tags you can just put any text, you don't need the double curly braces/brackets unless you are printing out a variable. And you always need an {% endif %} after an {% if %}. So it should look more like this (also removes 'is defined' per http://drupal.org/node/1823416#expressions):

<div id="name-and-slogan"{% if hide_site_name and hide_site_slogan %} class="element-invisible {% endif %}>
star-szr’s picture

Assigned: star-szr » Unassigned
Status: Needs work » Needs review
Issue tags: -Novice
FileSize
27.61 KB
41.66 KB

The interdiff (from #15 + #21) is pretty huge, so here's a summary:

Twig coding standards:

Other changes:

  • Added a Bartik preprocess override for classes/IDs on the menus.
  • Removed unneeded render_var() calls from Twig templates.
  • Removed extra wrapping divs around the menus in the base page.html.twig.
star-szr’s picture

FileSize
698 bytes
41.63 KB

Two small tweaks to the Bartik template after I went through everything again:

  • Fixed one of the closing <!-- /#sidebar-first --> tags to be #content.
  • Removed extra closing div at the end.
jenlampton’s picture

Status: Needs review » Needs work

system's page.html.twig
Minor docs cleanup:
1) always?

 * - base_path: The base URL path of the Drupal installation. At the very
 *   least, this will always default to /.

"At the very least" followed by "always"? what does that even mean? How about:

 * - base_path: The base URL path of the Drupal installation. Will usually 
 *    be / unless you have installed drupal in a sub-directory.

2) extra comma

 * - front_page: The URL of the front page. Use this instead of base_path,
 *   when linking to the front page. This includes the language domain or
 *   prefix.

should be

 * - front_page: The URL of the front page. Use this instead of base_path
 *   when linking to the front page. This includes the language domain or
 *   prefix.

3) theme settings

 * - logo: The path to the logo image, as defined in theme configuration.
 * - site_name: The name of the site, empty when display has been disabled
 *   in theme settings.
 * - site_slogan: The slogan of the site, empty when display has been disabled
 *   in theme settings.

twice we refer to 'theme settings' and once 'theme configuration' how about settings everywhere?

 * - logo: The path to the logo image, as defined in theme settings.
 * - site_name: The name of the site, empty when display has been disabled
 *   in theme settings.
 * - site_slogan: The slogan of the site, empty when display has been disabled
 *   in theme settings.

4) all the things we output are HTML!

 * - messages: HTML for status and error messages. Should be displayed
 *   prominently.

how about just

 * - messages: Status and error messages. Should be displayed prominently.

5) entity?!?

 * - node: The node entity, if there is an automatically-loaded node
 *   associated with the page, and the node ID is the second argument
 *   in the page's path (e.g. node/12345 and node/12345/revisions, but not
 *   comment/reply/12345).

how about (note the comma removed after 'page')

 * - node: fully loaded node, if there is an automatically-loaded node
 *   associated with the page and the node ID is the second argument
 *   in the page's path (e.g. node/12345 and node/12345/revisions, but not
 *   comment/reply/12345).

6) we can remove all these

{#
  @todo This is rendered in template_preprocess_page, but we should
    call the final menu Twig template here.
#}

this problem has been solved by renderable everhtings.

Bartik's page.html.twig
7) we need to make the same docs changes as above in this template. It looks like the only significant difference here is the regions?

8) we can remove this twig comment from this template as well

{#
  @todo This is rendered in template_preprocess_page, but we should
  call the final menu Twig template here.
#}

9) two line breaks

  </div></header> <!-- /.section, /#header-->


  {% if messages %}

we probably only need one

  </div></header> <!-- /.section, /#header-->

  {% if messages %}

that's all I can find...

star-szr’s picture

Status: Needs work » Needs review
Issue tags: -Needs manual testing
FileSize
7.36 KB
40.73 KB

Thanks for that @jenlampton :)

Here's a patch that incorporates all your suggestions. I'm removing the manual testing tag as well. I went through quite a bit of testing to make sure the markup matched up and I also tried placing blocks in different regions etc. and everything worked as expected.

thedavidmeister’s picture

star-szr’s picture

Bartik's page.tpl is converted here, yes. Unless you're asking something else :)

thedavidmeister’s picture

#32 - I was asking if we should cut and paste it into the other issue?

thedavidmeister’s picture

nm - just saw #15

thedavidmeister’s picture

Issue summary: View changes

Add conversion summary table

tlattimore’s picture

This looks good to me! I love the fact the the render arrays for menu's have been moved to theme.inc. This makes our page template so much cleaner.

Anything left here before RTBC?

thedavidmeister’s picture

Status: Needs review » Needs work
+ * Custom theme implementation to display a single Drupal page without
+ * sidebars. The sidebars are hidden by regions_hidden for this theme, so
+ * the default page.html.twig will not work without throwing exceptions.

This actually doesn't appear to be true any more. All my tests for the block module are passing locally after I deleted core/modules/block/tests/themes/block_test_theme/page.html.twig

Could we try a patch with that file deleted? see if the d.o. testbots agree with my local test runs.

tlattimore’s picture

I can confirm what @thedavidmeister says regarding the block tests passing without core/modules/block/tests/themes/block_test_theme/page.html.twig in place. Here is a re-roll #30 with without this template. We'll see if the testbot has the same results as it does locally.

tlattimore’s picture

Status: Needs work » Needs review

tagging.

thedavidmeister’s picture

Status: Needs review » Needs work
Issue tags: +Novice

+ * - logo: The path to the logo image, as defined in theme settings.

Path or URL? it's being used in a src attribute so it's probably a URL.

I'm happy other than this.

tlattimore’s picture

@thedavidmeister is correct. The logo variable is the fully qualified url of the logo image. For instance: http://yourdrupal.site/core/themes/bartik/logo.png in a default install. Here is a patch that corrects this doc comment.

RTBC?

tlattimore’s picture

Status: Needs work » Needs review

eh, keep forgetting to tag for review.

shanethehat’s picture

A few minor documentation tweaks

thedavidmeister’s picture

Status: Needs review » Needs work

+ * Preprocess variables for the page template.

Shouldn't this be "Prepares variables for page templates."?

+ * - site_name: The name of the site, empty when displing the site name has been
+ *   disabled in theme settings.

"displing" is not a word.

star-szr’s picture

Good catches @thedavidmeister, and thanks for keeping this going @tlattimore and @shanethehat :)

One more thing…

+++ b/core/includes/theme.incundefined
@@ -2894,13 +2895,12 @@ function template_preprocess_page(&$variables) {
- * Process variables for page.tpl.php
+ * Process variables for page.html.twig.

We might as well change this to 'Processes' while we're here per http://drupal.org/node/1354#functions.

shanethehat’s picture

Fixes #43 and #44

shanethehat’s picture

Status: Needs work » Needs review
star-szr’s picture

Issue tags: -Novice
FileSize
561 bytes
39.21 KB

Removing some unnecessary if statements (and the Novice tag since this needs another review):

+++ b/core/modules/system/templates/page.html.twigundefined
@@ -0,0 +1,156 @@
+      {% if main_menu %}
+        {{ main_menu }}
+      {% endif %}
+
+      {% if secondary_menu %}
+        {{ secondary_menu }}
+      {% endif %}
c4rl’s picture

#47 looks good overall, attached some nits, mostly:

* Documentation clean-up and consistency between bartik and core
* Removal of theme()
* Some whitespace and HTML comment fixes

Assuming these seem good, this is RTBC in my view.

c4rl’s picture

Also, I should mention I elected to remove the note about "directory" in the page.html.twig docblock, as it doesn't seem really that useful. I can't think of a compelling reason to leave it in the docblock, and there are other variables present (db_is_active, user, language) that don't necessitate a mention in the docblock.

star-szr’s picture

Changes look good to me. Thanks @c4rl!

Status: Needs review » Needs work

The last submitted patch, drupal-1961870-48.patch, failed testing.

c4rl’s picture

Having breadcrumbs as a render array apparently makes that test fail. We can investigate rewriting the test, but if it seems daunting maybe we leave in theme() and provide a follow-up we can tackle later.

thedavidmeister’s picture

+    $variables['breadcrumb'] = array(
+      '#theme' => 'breadcrumb',
+      '#breadcrumb' => drupal_get_breadcrumb()
+    );

Also, if you get that render array working, it needs a trailing comma on the last line.

joelpittet’s picture

Hmm, passes locally when applied with #1938848: seven.theme - Convert PHPTemplate templates to Twig re-testing. If it fails again, I would say maybe consider rolling those changes into this issue.

joelpittet’s picture

Status: Needs work » Needs review
Issue tags: -Twig

#48: drupal-1961870-48.patch queued for re-testing.

Status: Needs review » Needs work
Issue tags: +Twig

The last submitted patch, drupal-1961870-48.patch, failed testing.

star-szr’s picture

Status: Needs work » Needs review
FileSize
3.68 KB
45.05 KB

That makes perfect sense @joelpittet, thank you! I didn't realize Drupal\system\Tests\Menu\BreadcrumbTest used the standard profile and the seven theme.

So it doesn't like a render array here:
print $breadcrumb;

Moving seven's page.html.twig over here.

thedavidmeister’s picture

Status: Needs review » Needs work

Still missing trailing comma:

+    $variables['breadcrumb'] = array(
+      '#theme' => 'breadcrumb',
+      '#breadcrumb' => drupal_get_breadcrumb()
+    );
thedavidmeister’s picture

Issue summary: View changes

Update conversion status - Bartik's page.tpl.php has been converted

star-szr’s picture

Status: Needs work » Needs review
FileSize
942 bytes
45.04 KB

Added trailing comma and removed excessive whitespacery from seven's page.html.twig noticed over in #1938848: seven.theme - Convert PHPTemplate templates to Twig.

star-szr’s picture

Issue summary: View changes

Updating conversion table

thedavidmeister’s picture

Status: Needs review » Needs work

We're missing documentation for every variable used in the Seven Twig template.

star-szr’s picture

Issue tags: +Novice

Thanks @thedavidmeister.

Novice task: copy and paste the variable documentation from the default page.html.twig and add to Seven's page.html.twig.

no_angel’s picture

Assigned: Unassigned » no_angel
star-szr’s picture

Issue tags: +needs profiling

Tagging for profiling.

star-szr’s picture

Issue tags: +Needs reroll

This needs a reroll first.

@no_angel, can you take care of that?

joelpittet’s picture

Status: Needs work » Needs review
Issue tags: -Needs reroll
FileSize
45.05 KB

Still needs vars @no_angel but here's the re-roll.

star-szr’s picture

Status: Needs review » Needs work
Issue tags: -needs profiling

Thanks @joelpittet! Setting to needs work for the doc tweaks in #60.


Profiling

Tested with Stark theme on a node page. APC class loader enabled.

=== 8.x..8.x compared (51904f8640386..519050b464828):

ct  : 28,477|28,477|0|0.0%
wt  : 186,533|186,625|92|0.0%
cpu : 166,339|165,848|-491|-0.3%
mu  : 14,140,280|14,140,280|0|0.0%
pmu : 14,269,592|14,269,592|0|0.0%

http://www.lionsad.de/xhprof-kit/xhprof/xhprof_html/?run1=51904f8640386&...

=== 8.x..page-1961870-65 compared (51904f8640386..519050cbdc201):

ct  : 28,477|28,635|158|0.6%
wt  : 186,533|187,653|1,120|0.6%
cpu : 166,339|167,909|1,570|0.9%
mu  : 14,140,280|14,232,048|91,768|0.6%
pmu : 14,269,592|14,359,920|90,328|0.6%

http://www.lionsad.de/xhprof-kit/xhprof/xhprof_html/?run1=51904f8640386&...

no_angel’s picture

Assigned: no_angel » Unassigned

sorry all... I will change to unassigned for now.

star-szr’s picture

@no_angel - No need to apologize :) we're just on a tight timeline with these .tpl.php conversions and this particular one was blocking progress on a couple fronts because the patch no longer applied.

shanethehat’s picture

Status: Needs work » Needs review
FileSize
47.75 KB
3.35 KB

Now with added documentation

thedavidmeister’s picture

Status: Needs review » Reviewed & tested by the community
Issue tags: -Novice

I'm happy with that then :)

alexpott’s picture

Issue tags: +Novice
+++ b/core/includes/theme.incundefined
@@ -2894,6 +2895,36 @@ function template_preprocess_page(&$variables) {
+  // Pass the main menu and secondary menu to the template as render arrays.
+  if (!empty($variables['main_menu'])) {
+    $variables['main_menu'] = array(
+      '#theme' =>'links__system_main_menu',
+      '#links' => $variables['main_menu'],
+      '#attributes' => array(
+        'id' => 'main-menu',
+        'class' => array('links', 'inline', 'clearfix'),
+      ),
+      '#heading' => array(
+        'text' => t('Main menu'),
+        'class' => array('element-invisible'),
+      )
+    );
+  }
+  if (!empty($variables['secondary_menu'])) {
+    $variables['secondary_menu'] = array(
+      '#theme' =>'links__system_secondary_menu',
+      '#links' => $variables['secondary_menu'],
+      '#attributes' => array(
+        'id' => 'secondary-menu',
+        'class' => array('links', 'inline', 'clearfix'),
+      ),
+      '#heading' => array(
+        'text' => t('Secondary menu'),
+        'class' => array('element-invisible'),
+      )
+    );

@@ -2919,7 +2949,10 @@ function template_process_page(&$variables) {
-    $variables['breadcrumb'] = theme('breadcrumb', array('breadcrumb' => drupal_get_breadcrumb()));
+    $variables['breadcrumb'] = array(
+      '#theme' => 'breadcrumb',
+      '#breadcrumb' => drupal_get_breadcrumb(),
+    );

@@ -2928,7 +2961,7 @@ function template_process_page(&$variables) {
-    $variables['messages'] = $variables['show_messages'] ? theme('status_messages') : '';
+    $variables['messages'] = $variables['show_messages'] ? array('#theme' => 'status_messages') : '';

Do we have to do this on this issue? The increase in cpu time of 1.5ms is quite large compared to other twig conversions... plus there are plans to convert main_menu and secondary_menu to blocks... see #1869476: Convert global menus (primary links, secondary links) into blocks

alexpott’s picture

Issue tags: -Novice

Did not mean for the novice tag to come back...

Fabianx’s picture

Issue tags: +needs profiling

#71: Two things: CPU time is not really relevant, wt is.

1.1 ms is still slower.

In general I would agree that we do not need to do this here. However, the benchmark shows that the preprocess overhead is roughly the same, process_page is better (200 ms) and in rough template overhead the overhead of the twig template is minimally higher (239 ms) than the page.tpl.php.

-200 + 239 == 39 ms slower => within measuring range

Therefore I cannot recognize where the slowdown of 1.1 ms could come from.

Perhaps we need to re-profile?

star-szr’s picture

Assigned: Unassigned » star-szr

I'll run profiling on this again.

star-szr’s picture

Assigned: star-szr » Unassigned
Issue tags: -needs profiling

I ran these by @Fabianx and he said these numbers and profile runs look reasonable - I think this was just a measuring fluctuation.

=== 8.x..8.x compared (5192e6f7bc551..5192e86ee04ad):

ct  : 29,898|29,898|0|0.0%
wt  : 220,949|221,182|233|0.1%
cpu : 196,415|197,845|1,430|0.7%
mu  : 17,298,824|17,298,824|0|0.0%
pmu : 17,371,472|17,371,472|0|0.0%

http://www.lionsad.de/xhprof-kit/xhprof/xhprof_html/?run1=5192e6f7bc551&...

=== 8.x..page-1961870-69 compared (5192e6f7bc551..5192e84845baf):

ct  : 29,898|30,058|160|0.5%
wt  : 220,949|221,459|510|0.2%
cpu : 196,415|197,445|1,030|0.5%
mu  : 17,298,824|17,396,032|97,208|0.6%
pmu : 17,371,472|17,470,704|99,232|0.6%

http://www.lionsad.de/xhprof-kit/xhprof/xhprof_html/?run1=5192e6f7bc551&...

Ran ab as well.

PHPTemplate:

              min  mean[+/-sd] median   max
Total:        169  178  11.2    175     248

Twig:

              min  mean[+/-sd] median   max
Total:        142  147   4.7    146     170

So in XHProf Twig seems slightly slower, but slightly quicker in ab. So I think the performance could definitely be classified as 'comparable' here.

alexpott’s picture

Title: Convert page.tpl.php to Twig » [READY] Convert page.tpl.php to Twig
Status: Reviewed & tested by the community » Closed (duplicate)

Seems comparable to me too... especially when you see that the fluctuation in the cpu time in the 8.x...8.x baseline as well.

+1. Ready for #1987510: [meta] Convert all core *.tpl.php templates to Twig as singular patch

alexpott’s picture

Issue summary: View changes

Updated issue summary.

alexpott’s picture

Title: [READY] Convert page.tpl.php to Twig » Convert page.tpl.php to Twig
Status: Closed (duplicate) » Fixed

Committed 684aaa5 and pushed to 8.x. Thanks!

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

Anonymous’s picture

Issue summary: View changes

Updated issue summary.