From 1de05feffb45b299653404d7cd89a4e2484561f0 Mon Sep 17 00:00:00 2001
From: AdrienClairembault
Date: Fri, 13 Nov 2026 10:27:39 +0100
Subject: [PATCH] Replace "echo ";
+ echo Html::scriptBlock("window.parent.location.reload();");
} elseif (isset($_POST['delete'])) {
$link->check($_POST['id'], DELETE);
$link->delete($_POST);
diff --git a/front/change_user.form.php b/front/change_user.form.php
index 8f3f3d765a7a..0d43097b9b66 100644
--- a/front/change_user.form.php
+++ b/front/change_user.form.php
@@ -53,9 +53,7 @@
$link->check($_POST["id"], UPDATE);
$link->update($_POST);
- echo "";
+ echo Html::scriptBlock("window.parent.location.reload();");
} elseif (isset($_POST['delete'])) {
$link->check($_POST['id'], DELETE);
$link->delete($_POST);
diff --git a/front/problem_supplier.form.php b/front/problem_supplier.form.php
index ba4034744839..a284eafad07f 100644
--- a/front/problem_supplier.form.php
+++ b/front/problem_supplier.form.php
@@ -50,9 +50,7 @@
$link->check($_POST["id"], UPDATE);
$link->update($_POST);
- echo "";
+ echo Html::scriptBlock("window.parent.location.reload();");
} elseif (isset($_POST['delete'])) {
$link->check($_POST['id'], DELETE);
$link->delete($_POST);
diff --git a/front/problem_user.form.php b/front/problem_user.form.php
index 7041d5188fe2..76684463a7f0 100644
--- a/front/problem_user.form.php
+++ b/front/problem_user.form.php
@@ -53,9 +53,7 @@
$link->check($_POST["id"], UPDATE);
if ($link->update($_POST)) {
- echo "";
+ echo Html::scriptBlock("window.parent.location.reload();");
} else {
Html::back();
}
diff --git a/front/supplier_ticket.form.php b/front/supplier_ticket.form.php
index 8149f0f299d9..030350009a0e 100644
--- a/front/supplier_ticket.form.php
+++ b/front/supplier_ticket.form.php
@@ -50,9 +50,7 @@
$link->check($_POST["id"], UPDATE);
$link->update($_POST);
- echo "";
+ echo Html::scriptBlock("window.parent.location.reload();");
} elseif (isset($_POST['delete'])) {
$link->check($_POST['id'], DELETE);
$link->delete($_POST);
diff --git a/front/ticket_user.form.php b/front/ticket_user.form.php
index 8ca5680728d6..0dfc9c08279e 100644
--- a/front/ticket_user.form.php
+++ b/front/ticket_user.form.php
@@ -49,9 +49,7 @@
$link->check($_POST["id"], UPDATE);
if ($link->update($_POST)) {
- echo "";
+ echo Html::scriptBlock("window.parent.location.reload();");
} else {
Html::back();
}
diff --git a/install/install.php b/install/install.php
index a51bf092251d..3fa53f4e7cad 100644
--- a/install/install.php
+++ b/install/install.php
@@ -35,6 +35,7 @@
require_once(__DIR__ . '/../front/_check_webserver_config.php');
+use Glpi\Application\View\ScriptType;
use Glpi\Application\View\TemplateRenderer;
use Glpi\Locale\LanguageRegistry;
use Glpi\System\Requirement\DbConfiguration;
@@ -356,12 +357,10 @@ public function __construct(mysqli $dbh)
echo '';
echo '';
- echo <<
- import { init_database } from '/js/modules/GlpiInstall.js';
- init_database();
-
- HTML;
+ echo Html::scriptBlock(<<" . __s('Impossible to write the database setup file') . "
";
$prev_form($host, $user, $password);
diff --git a/install/update.php b/install/update.php
index 56c5c527975f..16e99e70f5c5 100644
--- a/install/update.php
+++ b/install/update.php
@@ -35,6 +35,7 @@
require_once(__DIR__ . '/../front/_check_webserver_config.php');
+use Glpi\Application\View\ScriptType;
use Glpi\Application\View\TemplateRenderer;
use Glpi\Toolbox\VersionParser;
@@ -176,12 +177,10 @@ function showSecurityKeyCheckForm(): void
echo '';
echo '';
- echo <<
- import { update_database } from '/js/modules/GlpiInstall.js';
- update_database();
-
- HTML;
+ echo Html::scriptBlock(<<";
diff --git a/src/CommonITILValidation.php b/src/CommonITILValidation.php
index 8744c02b3dd0..deee07d05987 100644
--- a/src/CommonITILValidation.php
+++ b/src/CommonITILValidation.php
@@ -1233,7 +1233,7 @@ class="border-0 bg-transparent p-0"
}
}
- $script = "";
+ $html = "";
if ($canedit) {
$edit_title = __s('Edit');
$item_id = (int) $itil->fields['id'];
@@ -1247,27 +1247,28 @@ class="border-0 bg-transparent p-0"
$rand_id = htmlescape($item_id . $row_id . $rand);
- $script = << {
+ viewEditValidation{$rand_id}();
+ });
+ JAVASCRIPT);
+ $html = <<
-
+ $script
HTML;
}
$values[] = [
- 'edit' => $script,
+ 'edit' => $html,
'status' => $status,
'type_name' => $type_name,
'target_name' => $target_name,
diff --git a/src/Glpi/Api/HL/Controller/CoreController.php b/src/Glpi/Api/HL/Controller/CoreController.php
index b8d92651bff1..56b2a30c7d8c 100644
--- a/src/Glpi/Api/HL/Controller/CoreController.php
+++ b/src/Glpi/Api/HL/Controller/CoreController.php
@@ -360,36 +360,38 @@ public function showDocumentation(Request $request): Response
});
$doc_json_paths = json_encode($doc_json_paths, JSON_THROW_ON_ERROR);
+ $script = Html::scriptBlock(<< {
+ const method_order = ['get', 'post', 'put', 'patch', 'delete'];
+ if (a.get('path') === b.get('path')) {
+ return method_order.indexOf(a.get('method')) - method_order.indexOf(b.get('method'));
+ }
+ return a.get('path').localeCompare(b.get('path'));
+ },
+ tagsSorter: (a, b) => a.localeCompare(b),
+ });
+ JAVASCRIPT);
+
$swagger_content .= <<
-
+ $script
HTML;
@@ -735,11 +737,14 @@ public function token(Request $request): Response
#[RouteVersion(introduced: '2.0')]
public function swaggerOAuthRedirect(Request $request): Response
{
- $js_path = \htmlescape(Html::getPrefixedUrl('/lib/swagger-ui-dist/oauth2-redirect.js'));
+ $script = Html::script(
+ url: '/lib/swagger-ui-dist/oauth2-redirect.js',
+ minify: false
+ );
$content = <<
-
+$script
diff --git a/src/Glpi/Application/View/Extension/FrontEndAssetsExtension.php b/src/Glpi/Application/View/Extension/FrontEndAssetsExtension.php
index 3261d75b02f1..35b3bc8f7459 100644
--- a/src/Glpi/Application/View/Extension/FrontEndAssetsExtension.php
+++ b/src/Glpi/Application/View/Extension/FrontEndAssetsExtension.php
@@ -38,6 +38,7 @@
use DBmysql;
use Entity;
use Glpi\Application\ImportMapGenerator;
+use Glpi\Application\View\ScriptType;
use Glpi\Config\ConfigContainer;
use Glpi\Locale\LanguageRegistry;
use Glpi\Toolbox\FrontEnd;
@@ -354,9 +355,12 @@ public function importmap(): string
{
$import_map = ImportMapGenerator::getInstance()->generate();
- return '';
+ return Html::scriptBlock(
+ json_encode(
+ $import_map,
+ JSON_PRETTY_PRINT
+ ),
+ ScriptType::ImportMap,
+ );
}
}
diff --git a/src/Glpi/Marketplace/View.php b/src/Glpi/Marketplace/View.php
index 35ecd7de4704..2f07b928203b 100644
--- a/src/Glpi/Marketplace/View.php
+++ b/src/Glpi/Marketplace/View.php
@@ -462,6 +462,9 @@ public static function displayList(
$plugin = new Plugin();
$plugin_message = $plugin->getPluginsUpdatableAlert();
+ $script = Html::scriptBlock(<<
{$tags_list}
@@ -485,9 +488,7 @@ public static function displayList(
-
+ $script
HTML;
echo $marketplace;
} else {
diff --git a/src/Reservation.php b/src/Reservation.php
index 8749a71151b2..c9345af076f6 100644
--- a/src/Reservation.php
+++ b/src/Reservation.php
@@ -33,6 +33,7 @@
* ---------------------------------------------------------------------
*/
+use Glpi\Application\View\ScriptType;
use Glpi\Application\View\TemplateRenderer;
use Glpi\Event;
use Glpi\RichText\RichText;
@@ -592,16 +593,14 @@ public static function showCalendar(int $ID = 0)
$can_reserve_js = $can_reserve ? "true" : "false";
$now = jsescape(Session::getCurrentTime());
$default_date = jsescape($default_date);
- echo <<
- window.Vue.createApp(window.Vue.components['Reservations/ReservationScheduler'].component, {
- id: $ID,
- can_reserve: $can_reserve_js,
- now: '$now',
- default_date: '$default_date',
- }).mount('#reservations_planning_$rand');
-
-HTML;
+ echo Html::scriptBlock(<< 0
) ? "true" : "false";
$now = jsescape(Session::getCurrentTime());
- echo <<
- window.Vue.createApp(window.Vue.components['Reservations/ReservationScheduler'].component, {
- id: $ID,
- can_reserve: $can_reserve_js,
- now: '$now',
- default_date: '$default_date',
- current_view: 'listFull',
- }).mount('#reservations_planning_$rand');
-
-HTML;
+ echo Html::scriptBlock(<<";
}
diff --git a/src/RuleCollection.php b/src/RuleCollection.php
index bee78b59394b..6b14a3ce22f3 100644
--- a/src/RuleCollection.php
+++ b/src/RuleCollection.php
@@ -628,30 +628,28 @@ public function showListRules($target, $options = [])
],
]);
$collection_classname = jsescape(static::class);
- echo <<
- $(() => {
- sortable('#rulelist tbody', {
- handle: '.grip-rule',
- placeholder: '| |
'
- })[0].addEventListener('sortupdate', (e) => {
- const sort_detail = e.detail;
- const new_index = sort_detail.destination.index;
- const old_index = sort_detail.origin.index;
-
- $.post(CFG_GLPI['root_doc'] + '/ajax/rule.php', {
- 'action': 'move_rule',
- 'rule_id': sort_detail.item.dataset.id,
- 'collection_classname': "{$collection_classname}",
- 'sort_action': (old_index > new_index) ? 'before' : 'after',
- 'ref_id': sort_detail.destination.itemsBeforeUpdate[new_index].dataset.id,
- });
-
- displayAjaxMessageAfterRedirect();
+ echo Html::scriptBlock(<< {
+ sortable('#rulelist tbody', {
+ handle: '.grip-rule',
+ placeholder: '| |
'
+ })[0].addEventListener('sortupdate', (e) => {
+ const sort_detail = e.detail;
+ const new_index = sort_detail.destination.index;
+ const old_index = sort_detail.origin.index;
+
+ $.post(CFG_GLPI['root_doc'] + '/ajax/rule.php', {
+ 'action': 'move_rule',
+ 'rule_id': sort_detail.item.dataset.id,
+ 'collection_classname': "{$collection_classname}",
+ 'sort_action': (old_index > new_index) ? 'before' : 'after',
+ 'ref_id': sort_detail.destination.itemsBeforeUpdate[new_index].dataset.id,
});
+
+ displayAjaxMessageAfterRedirect();
});
-
-HTML;
+ });
+ JAVASCRIPT);
$url = $CFG_GLPI["root_doc"];
$url .= static::getRulesTestURL();