fix: escape data in multiple templates (backport #57742) (#57770)

Co-authored-by: diptanilsaha <diptanil@frappe.io>
This commit is contained in:
mergify[bot]
2026-08-04 06:52:25 +00:00
committed by GitHub
parent 4193a441e6
commit 824ae57e44
5 changed files with 22 additions and 19 deletions

View File

@@ -2,9 +2,9 @@
<div class="row" style="border-bottom:1px solid var(--border-color); padding:4px 5px; margin-top: 3px;margin-bottom: 3px;"> <div class="row" style="border-bottom:1px solid var(--border-color); padding:4px 5px; margin-top: 3px;margin-bottom: 3px;">
<div class="col-sm-1"> <div class="col-sm-1">
{% if(row.image) { %} {% if(row.image) { %}
<img style="width:50px;height:50px;" src="{{row.image}}"> <img style="width:50px;height:50px;" src="{{frappe.utils.escape_html(row.image)}}">
{% } else { %} {% } else { %}
<div style="width:50px;height:50px;background-color:var(--control-bg);text-align:center;padding-top:15px">{{frappe.get_abbr(row.item_code, 2)}}</div> <div style="width:50px;height:50px;background-color:var(--control-bg);text-align:center;padding-top:15px">{{frappe.get_abbr(frappe.utils.escape_html(row.item_code), 2)}}</div>
{% } %} {% } %}
</div> </div>
<div class="col-sm-3"> <div class="col-sm-3">
@@ -13,7 +13,7 @@
{% } else { %} {% } else { %}
{{row.item_link}} {{row.item_link}}
<p> <p>
{{row.item_name}} {{frappe.utils.escape_html(row.item_name)}}
</p> </p>
{% } %} {% } %}
@@ -52,10 +52,10 @@
</span> </span>
</div> </div>
<div class="col-sm-1"> <div class="col-sm-1">
<button style="margin-left: 7px;" class="btn btn-default btn-xs btn-add" data-item-code="{{ escape(row.item_code) }}">{{ __("Add") }}</button> <button style="margin-left: 7px;" class="btn btn-default btn-xs btn-add" data-item-code="{{ frappe.utils.escape_html(row.item_code) }}">{{ __("Add") }}</button>
</div> </div>
<div class="col-sm-1"> <div class="col-sm-1">
<button style="margin-left: 7px;" class="btn btn-default btn-xs btn-move" data-item-code="{{ escape(row.item_code) }}">{{ __("Move") }}</button> <button style="margin-left: 7px;" class="btn btn-default btn-xs btn-move" data-item-code="{{ frappe.utils.escape_html(row.item_code) }}">{{ __("Move") }}</button>
</div> </div>
</div> </div>
{% }); %} {% }); %}

View File

@@ -513,7 +513,7 @@ def get_workstations(**kwargs):
d.color = color_map.get(d.status, "red") d.color = color_map.get(d.status, "red")
d.workstation_link = get_url_to_form("Workstation", d.name) d.workstation_link = get_url_to_form("Workstation", d.name)
if d.status != "Production": if d.status != "Production":
d.status_image = d.off_status_image d.status_image = frappe.utils.escape_html(d.off_status_image)
d.workstation_off = "workstation-off" d.workstation_off = "workstation-off"
return data return data

View File

@@ -168,7 +168,7 @@ class VisualPlantFloor {
.find(".workstation-image-container") .find(".workstation-image-container")
.append( .append(
`<div class="workstation-image-cls workstation-abbr" style="margin:6px; height:82px">${frappe.get_abbr( `<div class="workstation-image-cls workstation-abbr" style="margin:6px; height:82px">${frappe.get_abbr(
data.name, frappe.utils.escape_html(data.name),
2 2
)}</div>` )}</div>`
); );

View File

@@ -1,17 +1,19 @@
<div class="app-listing item-list image-view-container item-selector"> <div class="app-listing item-list image-view-container item-selector">
{% for (var i=0; i < data.length; i++) { var item = data[i]; %} {% for (var i=0; i < data.length; i++) { var item = data[i]; %}
{% const item_name = frappe.utils.escape_html(item.name); %}
{% const item_title = frappe.utils.escape_html(item.item_name || item.name); %}
{% if (i % 4 === 0) { %}<div class="image-view-row">{% } %} {% if (i % 4 === 0) { %}<div class="image-view-row">{% } %}
<div class="image-view-item" data-name="{{ item.name }}"> <div class="image-view-item" data-name="{{ item_name }}">
<div class="image-view-header doclist-row"> <div class="image-view-header doclist-row">
<div class="list-value"> <div class="list-value">
<a class="grey list-id" data-name="{{item.name}}" <a class="grey list-id" data-name="{{ item_name }}"
title="{{ item.item_name || item.name}}"> title="{{ item_title }}">
{{item.item_name || item.name}}</a> {{ item_title }}</a>
</div> </div>
</div> </div>
<div class="image-view-body"> <div class="image-view-body">
<a data-item-code="{{ item.name }}" <a data-item-code="{{ item_name }}"
title="{{ item.item_name || item.name }}" title="{{ item_title }}"
> >
<div class="image-field" <div class="image-field"
style=" style="
@@ -22,11 +24,11 @@
> >
{% if (!item.image) { %} {% if (!item.image) { %}
<span class="placeholder-text"> <span class="placeholder-text">
{%= frappe.get_abbr(item.item_name || item.name) %} {%= frappe.get_abbr(item_title) %}
</span> </span>
{% } %} {% } %}
{% if (item.image) { %} {% if (item.image) { %}
<img src="{{ item.image }}" alt="{{item.item_name || item.name}}"> <img src="{{ frappe.utils.escape_html(item.image) }}" alt="{{ item_title }}">
{% } %} {% } %}
</div> </div>
</a> </a>

View File

@@ -1,5 +1,6 @@
{% $.each(workstations, (idx, row) => { %} {% $.each(workstations, (idx, row) => { %}
<div class="workstation-wrapper" data-workstation="{{row.name}}"> {% const row_workstation_name = frappe.utils.escape_html(row.name); %}
<div class="workstation-wrapper" data-workstation="{{row_workstation_name}}">
<div class="workstation-status text-left" style=""> <div class="workstation-status text-left" style="">
<span class="indicator-pill no-indicator-dot whitespace-nowrap {{row.color}}" style="margin: 8px 0px 0px 8px;"> <span class="indicator-pill no-indicator-dot whitespace-nowrap {{row.color}}" style="margin: 8px 0px 0px 8px;">
<span class="workstation-status-title" style="font-size:10px">{{row.status}}</span> <span class="workstation-status-title" style="font-size:10px">{{row.status}}</span>
@@ -10,12 +11,12 @@
{% if(row.status_image) { %} {% if(row.status_image) { %}
<img class="workstation-image-cls" src="{{row.status_image}}"> <img class="workstation-image-cls" src="{{row.status_image}}">
{% } else { %} {% } else { %}
<div class="workstation-image-cls workstation-abbr" style="margin:6px; height:82px">{{frappe.get_abbr(row.name, 2)}}</div> <div class="workstation-image-cls workstation-abbr" style="margin:6px; height:82px">{{frappe.get_abbr(row_workstation_name, 2)}}</div>
{% } %} {% } %}
</div> </div>
<span class="ellipsis" title="{{row.name}}"> <span class="ellipsis" title="{{row_workstation_name}}">
<div style="font-size:11px; text-align:center;padding-bottom:8px">{{row.workstation_name}}</div> <div style="font-size:11px; text-align:center;padding-bottom:8px">{{row.workstation_name}}</div>
</span> </span>
</div> </div>
</div> </div>
{% }); %} {% }); %}