[TikiWiki-commits] [Git][tikiwiki/tiki][master] [FIX] Tracker item history: pre-render field values before template to avoid...
Benoit Grégoire (@benoitg) via TikiWiki-cvs <[email protected]>
| Newsgroups | gmane.comp.cms.tiki.cvs |
|---|---|
| Message-ID | <69f3a40042630_3810bc844443ac@gitlab-sidekiq-low-urgency-cpu-bound-v2-756fc6779-mxzz5.mail> |
Benoit Grégoire pushed to branch master at Tiki Wiki CMS Groupware / Tiki
Commits:
aafefe3b by Bruno Kambere at 2026-04-30T18:32:42+00:00
[FIX] Tracker item history: pre-render field values before template to avoid "Too late to modify headers"
---
* [FIX] Tracker item history: pre-render field values before template to avoid "Too late to modify headers"
See merge request tikiwiki/tiki!10052
- - - - -
2 changed files:
- lib/core/Services/Tracker/Controller.php
- templates/tracker/item_history.tpl
Changes:
=====================================
lib/core/Services/Tracker/Controller.php
=====================================
@@ -2408,30 +2408,51 @@ class Services_Tracker_Controller
];
}
}
- if (TIKI_API) {
- $field_value = $field_option[$hist['fieldId']];
+ // Pre-render field values here in the controller, before Smarty starts rendering the template.
+ $field_value = $field_option[$hist['fieldId']];
+ if (! empty($field_value['fieldId']) && $field_value['fieldId'] > 0) {
+ $emptyTemplate = TikiLib::lib('smarty')->getEmptyInternalTemplate();
if (empty($diff_style)) {
- if (! empty($field_value['fieldId'])) {
+ $field_value['value'] = $hist['value'];
+ $hist['rendered_value'] = smarty_function_trackeroutput([
+ 'field' => $field_value,
+ 'list_mode' => 'csv',
+ 'history' => 'y',
+ 'item' => $item_info,
+ 'process' => 'y',
+ ], $emptyTemplate);
+ $field_value['value'] = $hist['new'];
+ $hist['rendered_new'] = smarty_function_trackeroutput([
+ 'field' => $field_value,
+ 'list_mode' => 'csv',
+ 'history' => 'y',
+ 'item' => $item_info,
+ 'process' => 'y',
+ ], $emptyTemplate);
+
+ if (TIKI_API) {
+ $hist['value'] = $hist['rendered_value'];
+ $hist['new'] = $hist['rendered_new'];
$field_value['value'] = $hist['value'];
- $hist['value'] = smarty_function_trackeroutput([
+ $hist['rendered_value'] = smarty_function_trackeroutput([
'field' => $field_value,
- 'list_mode' => 'csv',
+ 'list_mode' => 'y',
'history' => 'y',
'item' => $item_info,
'process' => 'y',
- ], TikiLib::lib('smarty')->getEmptyInternalTemplate());
+ ], $emptyTemplate);
$field_value['value'] = $hist['new'];
- $hist['new'] = smarty_function_trackeroutput([
+ $hist['rendered_new'] = smarty_function_trackeroutput([
'field' => $field_value,
- 'list_mode' => 'csv',
+ 'list_mode' => 'y',
'history' => 'y',
'item' => $item_info,
'process' => 'y',
- ], TikiLib::lib('smarty')->getEmptyInternalTemplate());
+ ], $emptyTemplate);
}
} else {
$field_value['value'] = $hist['new'];
- $hist['diff'] = smarty_function_trackeroutput([
+ $hist['rendered_diff'] = smarty_function_trackeroutput([
'field' => $field_value,
'list_mode' => 'y',
'history' => 'y',
@@ -2439,25 +2460,11 @@ class Services_Tracker_Controller
'process' => 'y',
'oldValue' => $hist['value'],
'diff_style' => $diff_style,
- ], TikiLib::lib('smarty')->getEmptyInternalTemplate());
- }
- if (! empty($field_value['fieldId'])) {
- $field_value['value'] = $hist['value'];
- $hist['rendered_value'] = smarty_function_trackeroutput([
- 'field' => $field_value,
- 'list_mode' => 'y',
- 'history' => 'y',
- 'item' => $item_info,
- 'process' => 'y',
- ], TikiLib::lib('smarty')->getEmptyInternalTemplate());
- $field_value['value'] = $hist['new'];
- $hist['rendered_new'] = smarty_function_trackeroutput([
- 'field' => $field_value,
- 'list_mode' => 'y',
- 'history' => 'y',
- 'item' => $item_info,
- 'process' => 'y',
- ], TikiLib::lib('smarty')->getEmptyInternalTemplate());
+ ], $emptyTemplate);
+
+ if (TIKI_API) {
+ $hist['diff'] = $hist['rendered_diff'];
+ }
}
}
}
=====================================
templates/tracker/item_history.tpl
=====================================
@@ -90,8 +90,8 @@
</td>
{if empty($diff_style)}
{if !empty($field_value.fieldId) && $field_value.fieldId > 0}
- <td class="text">{$field_value.value=$hist.value}{trackeroutput field=$field_value list_mode=csv item=$item_info history=y process=y}</td>
- <td class="text">{$field_value.value=$hist.new}{trackeroutput field=$field_value list_mode=csv item=$item_info history=y process=y}</td>
+ <td class="text">{$hist.rendered_value}</td>
+ <td class="text">{$hist.rendered_new}</td>
{else}
<td class="text">{$hist.value|escape}</td>
<td class="text">{$hist.new|escape}</td>
@@ -99,8 +99,7 @@
{else}
<td colspan="2" class="tracker-diff {$diff_style}">
{if !empty($field_value.fieldId) && $field_value.fieldId > 0}
- {$field_value.value=$hist.new}
- {trackeroutput field=$field_value list_mode='y' history=y item=$item_info process=y oldValue=$hist.value diff_style=$diff_style}
+ {$hist.rendered_diff}
{else}
{wikidiff object_type=direct oldver=$hist.value newver=$hist.new diff_style=$diff_style}
{/if}
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/aafefe3b1766022718519c635cc33dadb5799cc5
--
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/aafefe3b1766022718519c635cc33dadb5799cc5
You're receiving this email because of your account on gitlab.com. Manage all notifications: https://gitlab.com/-/profile/notifications | Help: https://gitlab.com/help
_______________________________________________
TikiWiki-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs