Code of Conduct
Disable plugins
Is there an existing issue for this?
Version
11.0.6
Bug description
When a ticket is in Closed status and viewed from the helpdesk (self-service) interface, the two-column layout collapses completely. The .itil-right-side panel ends up nested inside .itil-left-side instead of being a sibling element, breaking the layout.
This does NOT happen with other statuses (New, Processing, Pending, Resolved).
Expected layout (all other statuses):
.row.itil-object
├── .itil-left-side ← timeline/conversation
└── .itil-right-side ← fields panel
Actual layout (Closed status, expired survey):
.row.itil-object
└── .itil-left-side
└── .itil-right-side ← BUG: nested inside left side
Root cause identified:
In templates/components/itilobject/timeline/timeline.html.twig (lines 231–242), the survey block opens a <form> and <div> wrapper. Their closing tags (</div></form>) are delegated to buttons.html.twig inside itilsatisfaction.html.twig — but buttons.html.twig is only rendered when the survey is not expired. In all expired cases and for external survey type, those tags are never closed, leaving .itil-timeline unclosed and causing .itil-right-side to be nested inside .itil-left-side.
Affected code paths in itilsatisfaction.html.twig:
| Condition |
buttons.html.twig rendered? |
Layout broken? |
External survey (url is defined) |
No |
Yes |
expired=true AND no answer |
No |
Yes |
expired=true AND has answer |
No |
Yes |
expired=false |
Yes |
No |
Relevant log output
Page URL
No response
Steps To reproduce
- Configure an entity with satisfaction surveys enabled and a short duration (e.g., 5 days)
- Close a ticket older than the configured duration
- Log in as a self-service (helpdesk) user
- Open the closed ticket
- Observe the collapsed layout — fields panel disappears or renders incorrectly
Your GLPI setup information
No response
Anything else?
A fix has been identified and tested on 11.0.6. The solution is to add explicit </div></form> closing tags in itilsatisfaction.html.twig for the three code paths where buttons.html.twig is not rendered. A pull request with the fix will follow this issue.
Code of Conduct
Disable plugins
Is there an existing issue for this?
Version
11.0.6
Bug description
When a ticket is in Closed status and viewed from the helpdesk (self-service) interface, the two-column layout collapses completely. The
.itil-right-sidepanel ends up nested inside.itil-left-sideinstead of being a sibling element, breaking the layout.This does NOT happen with other statuses (New, Processing, Pending, Resolved).
Expected layout (all other statuses):
.row.itil-object
├── .itil-left-side ← timeline/conversation
└── .itil-right-side ← fields panel
Actual layout (Closed status, expired survey):
.row.itil-object
└── .itil-left-side
└── .itil-right-side ← BUG: nested inside left side
Root cause identified:
In
templates/components/itilobject/timeline/timeline.html.twig(lines 231–242), the survey block opens a<form>and<div>wrapper. Their closing tags (</div></form>) are delegated tobuttons.html.twiginsideitilsatisfaction.html.twig— butbuttons.html.twigis only rendered when the survey is not expired. In all expired cases and for external survey type, those tags are never closed, leaving.itil-timelineunclosed and causing.itil-right-sideto be nested inside.itil-left-side.Affected code paths in
itilsatisfaction.html.twig:buttons.html.twigrendered?url is defined)expired=trueAND no answerexpired=trueAND has answerexpired=falseRelevant log output
Page URL
No response
Steps To reproduce
Your GLPI setup information
No response
Anything else?
A fix has been identified and tested on 11.0.6. The solution is to add explicit
</div></form>closing tags initilsatisfaction.html.twigfor the three code paths wherebuttons.html.twigis not rendered. A pull request with the fix will follow this issue.