Favoris Où acheter ? Contact Mon compte
  • Actualités

Des solutions adaptées à votre secteur d'activité

Notre métier est de protéger les femmes et les hommes au travail. Pour cela, nous concevons et fabriquons des solutions complètes de protection individuelle et collective pour les professionnels du monde entier.

Voir tous les secteurs

Consultez notre book " Utilities"

Toute notre expertise à votre service

Nous vous aidons à monter en compétences à travers la formation, nos tutos, nos centres d'expertise. Trouver facilement toutes les informations produits et réglementaires relatives à nos gammes grâce à notre centre de téléchargement.

Formation

Notre mission

Depuis 1977, Delta Plus protège les femmes et les hommes au travail en concevant, fabriquant et commercialisant des solutions complètes de protection individuelle et collective pour les professionnels dans le monde entier.

Histoire familiale

Notre histoire

#
Other sectors
#
Filtres 29 résultats
Filtrer
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> renderRequest.getAttribute("ASSET_CATEGORY")  [in template "44676#44717#113551" at line 10, column 44]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign assetCategoryId = renderReque...  [in template "44676#44717#113551" at line 10, column 17]
----
1<#-- Get category from list and categoryId --> 
2    <#function getCategory categories categoryId> 
3        <#list categories as category> 
4            <#if category.getFilterValue()==categoryId?string> 
5                <#return category> 
6            </#if> 
7        </#list> 
8        <#return ""> 
9    </#function> 
10		<#assign assetCategoryId = renderRequest.getAttribute("ASSET_CATEGORY").categoryId> 
11    <#macro displayImages images> 
12        <#list 0 ..< images.length() as i> 
13            <#assign categoryImage=images.get(i) /> 
14 
15            <#list categoryImage?keys as imageKey> 
16                <img class="${imageKey?lower_case}" src="${categoryImage[imageKey]}"> 
17            </#list> 
18        </#list> 
19    </#macro> 
20    <#-- Display Category and SubCategory --> 
21        <#macro categoriesDisplay categories foundCategories results resultIds dpAssetCategoryHelper frequencyVisible level=1 
22            categoryName="" parentNamespace=""> 
23            <#assign displayPageCategory={"categoryId": -1 } /> 
24            <#list categories.iterator() as category> 
25                <#if assetCategoryId == category.categoryId> 
26                    <#assign displayPageCategory=category /> 
27                </#if> 
28                <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
29                    <#list category.children.iterator() as child> 
30                        <#if assetCategoryId == child.categoryId> 
31                            <#assign displayPageCategory=category /> 
32                        </#if> 
33                    </#list> 
34                </#if> 
35            </#list> 
36            <#if displayPageCategory.categoryId !=-1> 
37                <#assign displayedCategories=displayPageCategory /> 
38                <#assign onCategoryPage=true /> 
39                <#else /> 
40                <#assign displayedCategories=categories /> 
41                <#assign onCategoryPage=false /> 
42            </#if> 
43            <#if displayedCategories??> 
44                <#if level!=1> 
45                    <div class="filter-box__content__sublevel mobile-filters"> 
46 
47                </#if> 
48                <div class="d-none m:d-flex align-center justify-content-start mb-s bg-white mobile-filters__header"> 
49                    <label onClick="${namespace}toggleTreeItem('${parentNamespace}');" class="mr-xs go-back"></label> 
50                    <strong> 
51                        ${categoryName} 
52                    </strong> 
53                </div> 
54                <#if !onCategoryPage> 
55                    <#list 0 ..< displayedCategories.length() as i> 
56                        <#assign category=categories.get(i) /> 
57                        <#assign categoryId=category.id /> 
58                        <#assign categoryResult=getCategory(results,categoryId) /> 
59 
60                        <#if resultIds?seq_contains(categoryId) || dpAssetCategoryHelper.containChildrenIds(resultIds, 
61                            category.childrenIds)> 
62                            <div> 
63                                <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
64                                    <div> 
65                                        <#assign collapseStatus=(foundCategories?seq_contains(category.categoryId))?then("", "collapsed")/> 
66                                        <label data-target="#${namespace}treeItem${categoryId}" data-toggle="collapse" 
67                                            class="filter-box__link ${collapseStatus}" data-level="${level}" 
68                                            onClick="${namespace}toggleTreeItem('${namespace}treeItem${categoryId}');"> 
69 
70                                            <@displayImages images=category.images /> 
71 
72                                            ${category.name} 
73 
74                                            <span class="filter-box__link__count"> 
75                                                <#if frequencyVisible && categoryResult?has_content> 
76                                                    ${categoryResult.frequency} 
77                                                </#if> 
78                                            </span> 
79                                        </label> 
80 
81                                        <#if dpAssetCategoryHelper.containChildrenIds(resultIds, category.childrenIds)> 
82 
83                                            <@categoriesDisplay categories=category.children foundCategories=foundCategories results=results 
84                                                resultIds=resultIds dpAssetCategoryHelper=dpAssetCategoryHelper 
85                                                level=level+1 frequencyVisible=frequencyVisible 
86                                                categoryName=category.name 
87                                                parentNamespace='${namespace}treeItem${categoryId}' /> 
88                                        </#if> 
89 
90                                    </div> 
91                                    <#else> 
92 
93                                        <label class="collapsed filter-box__link filter-box__link--target"> 
94                                            <input autocomplete="off" ${categoryResult.selected?then("checked", "" )} 
95                                                class="custom-control-input facet-term" data-term-id=${categoryId} 
96                                                disabled onChange="Liferay.Search.FacetUtil.changeSelection(event);" 
97                                                type="checkbox" /> 
98                                            <@displayImages images=category.images /> 
99                                            <span> 
100                                                ${category.name} 
101                                            </span> 
102                                            <span class="filter-box__link__count"> 
103                                                <#if frequencyVisible && categoryResult?has_content> 
104                                                    ${categoryResult.frequency} 
105                                                </#if> 
106                                            </span> 
107                                        </label> 
108                                </#if> 
109                            </div> 
110                        </#if> 
111                    </#list> 
112                    <#else /> 
113                    <#assign category=displayedCategories /> 
114                    <#assign categoryId=category.id /> 
115                    <#assign categoryResult=getCategory(results,categoryId) /> 
116 
117                    <#if resultIds?seq_contains(categoryId) || dpAssetCategoryHelper.containChildrenIds(resultIds, 
118                        category.childrenIds)> 
119                        <div> 
120                            <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
121                                <#assign collapseStatus=(foundCategories?seq_contains(category.categoryId))?then("", "collapsed")/> 
122                                <div> 
123                                    <label data-target="#${namespace}treeItem${categoryId}" data-toggle="collapse" 
124                                        class="filter-box__link ${collapseStatus}" data-level="${level}" 
125                                        onClick="${namespace}toggleTreeItem('${namespace}treeItem${categoryId}');"> 
126 
127                                        <@displayImages images=category.images /> 
128 
129                                        ${category.name} 
130 
131                                        <span class="filter-box__link__count"> 
132                                            <#if frequencyVisible && categoryResult?has_content> 
133                                                ${categoryResult.frequency} 
134                                            </#if> 
135                                        </span> 
136                                    </label> 
137 
138                                    <#if dpAssetCategoryHelper.containChildrenIds(resultIds, category.childrenIds)> 
139 
140                                        <@categoriesDisplay categories=category.children foundCategories=foundCategories results=results 
141                                            resultIds=resultIds dpAssetCategoryHelper=dpAssetCategoryHelper 
142                                            level=level+1 frequencyVisible=frequencyVisible categoryName=category.name 
143                                            parentNamespace='${namespace}treeItem${categoryId}' /> 
144                                    </#if> 
145 
146                                </div> 
147                                <#else> 
148                                    <label class="collapsed filter-box__link filter-box__link--target"> 
149                                        <input autocomplete="off" ${categoryResult.selected?then("checked", "" )} 
150                                            class="custom-control-input facet-term" data-term-id=${categoryId} disabled 
151                                            onChange="Liferay.Search.FacetUtil.changeSelection(event);" 
152                                            type="checkbox" /> 
153                                        <@displayImages images=category.images /> 
154                                        <span> 
155                                            ${category.name} 
156                                        </span> 
157                                        <span class="filter-box__link__count"> 
158                                            <#if frequencyVisible && categoryResult?has_content> 
159                                                ${categoryResult.frequency} 
160                                            </#if> 
161                                        </span> 
162                                    </label> 
163                            </#if> 
164                        </div> 
165                    </#if> 
166                </#if> 
167                <#if level!=1> 
168                    </div> 
169                </#if> 
170            </#if> 
171        </#macro> 
172 
173        <#function getCategoryIds categories> 
174            <#assign categoryIds=[]> 
175                <#list categories as category> 
176                    <#assign categoryIds +=[category.getFilterValue()]> 
177                </#list> 
178                <#return categoryIds> 
179        </#function> 
180        <#assign categoryTree=categoryContext.getData() /> 
181        <#if assetCategoriesSearchFacetDisplayContext?? && assetCategoriesSearchFacetDisplayContext?has_content && 
182            assetCategoriesSearchFacetDisplayContext.getVocabularyNames()??> 
183            <#assign vocabularyNames=assetCategoriesSearchFacetDisplayContext.getVocabularyNames() /> 
184            <#if vocabularyNames?has_content> 
185                <#list vocabularyNames as vocabularyName> 
186                    <#if categoryTree?has_content && categoryTree[vocabularyName]??> 
187                        <#assign displayPageCategory={"categoryId": -1 } /> 
188                        <#assign categoryTreeItem=categoryTree[vocabularyName] /> 
189                        <#assign found=[]/> 
190                        <#list categoryTreeItem.children.iterator() as category> 
191                            <@populate category=category/> 
192                        </#list> 
193                        <#assign collapseStatus=(displayPageCategory.categoryId !=-1)?then("", "collapsed")/> 
194                        <div> 
195                            <label data-target="#${namespace}treeItem${vocabularyName?index}" data-toggle="collapse" 
196                                class="filter-box__heading ${collapseStatus}" 
197                                onClick="${namespace}toggleTreeItem('${namespace}treeItem${vocabularyName?index}');"> 
198                                <@liferay.language_format arguments="${vocabularyName}" key="dp-filter-by-x" /> 
199                            </label> 
200                            <div class="filter-box__content mobile-filters"> 
201                                <#assign 
202                                    categoryResult=assetCategoriesSearchFacetDisplayContext.getBucketDisplayContexts(vocabularyName) /> 
203                                <#assign categoryIds=getCategoryIds(categoryResult) /> 
204 
205                                <@categoriesDisplay categories=categoryTreeItem.children foundCategories=found results=categoryResult 
206                                    resultIds=categoryIds dpAssetCategoryHelper=dpAssetCategoryHelper 
207                                    frequencyVisible=true categoryName=vocabularyName 
208                                    parentNamespace='${namespace}treeItem${vocabularyName?index}' /> 
209                            </div> 
210 
211                        </div> 
212                    </#if> 
213                </#list> 
214            </#if> 
215        </#if> 
216 
217        <#macro populate category parentIds=[]> 
218            <#if assetCategoryId == category.categoryId> 
219                <#assign displayPageCategory=category /> 
220                <#assign found=found + [category.categoryId]/> 
221                <#list parentIds as parent> 
222                    <#assign found=found + [parent]/> 
223                </#list> 
224            </#if> 
225            <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
226                <#local newParentIds=parentIds+[category.categoryId]/> 
227                <#list category.children.iterator() as child> 
228                    <@populate category=child parentIds=newParentIds/> 
229                </#list> 
230            </#if> 
231        </#macro> 
232 
233        <@liferay_aui.script> 
234            function ${namespace}toggleTreeItem(dataTarget) { 
235            const dataTargetElements = document.querySelectorAll("[data-target=\"#" + dataTarget + "\"]"); 
236            dataTargetElements.forEach( 
237            element => { 
238            if (element.classList.contains('collapsed')) { 
239            element.classList.remove('collapsed'); 
240            element.setAttribute('aria-expanded', true); 
241
242            else { 
243            element.classList.add('collapsed'); 
244            element.setAttribute('aria-expanded', false); 
245
246
247            ); 
248 
249            const subtreeCategoryTreeElement = document.getElementById(dataTarget); 
250            if (subtreeCategoryTreeElement) { 
251            if (subtreeCategoryTreeElement.classList.contains('show')) { 
252            subtreeCategoryTreeElement.classList.remove('show'); 
253
254            else { 
255            subtreeCategoryTreeElement.classList.add('show'); 
256
257
258
259            </@> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> renderRequest.getAttribute("ASSET_CATEGORY")  [in template "44676#44717#113551" at line 10, column 44]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign assetCategoryId = renderReque...  [in template "44676#44717#113551" at line 10, column 17]
----
1<#-- Get category from list and categoryId --> 
2    <#function getCategory categories categoryId> 
3        <#list categories as category> 
4            <#if category.getFilterValue()==categoryId?string> 
5                <#return category> 
6            </#if> 
7        </#list> 
8        <#return ""> 
9    </#function> 
10		<#assign assetCategoryId = renderRequest.getAttribute("ASSET_CATEGORY").categoryId> 
11    <#macro displayImages images> 
12        <#list 0 ..< images.length() as i> 
13            <#assign categoryImage=images.get(i) /> 
14 
15            <#list categoryImage?keys as imageKey> 
16                <img class="${imageKey?lower_case}" src="${categoryImage[imageKey]}"> 
17            </#list> 
18        </#list> 
19    </#macro> 
20    <#-- Display Category and SubCategory --> 
21        <#macro categoriesDisplay categories foundCategories results resultIds dpAssetCategoryHelper frequencyVisible level=1 
22            categoryName="" parentNamespace=""> 
23            <#assign displayPageCategory={"categoryId": -1 } /> 
24            <#list categories.iterator() as category> 
25                <#if assetCategoryId == category.categoryId> 
26                    <#assign displayPageCategory=category /> 
27                </#if> 
28                <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
29                    <#list category.children.iterator() as child> 
30                        <#if assetCategoryId == child.categoryId> 
31                            <#assign displayPageCategory=category /> 
32                        </#if> 
33                    </#list> 
34                </#if> 
35            </#list> 
36            <#if displayPageCategory.categoryId !=-1> 
37                <#assign displayedCategories=displayPageCategory /> 
38                <#assign onCategoryPage=true /> 
39                <#else /> 
40                <#assign displayedCategories=categories /> 
41                <#assign onCategoryPage=false /> 
42            </#if> 
43            <#if displayedCategories??> 
44                <#if level!=1> 
45                    <div class="filter-box__content__sublevel mobile-filters"> 
46 
47                </#if> 
48                <div class="d-none m:d-flex align-center justify-content-start mb-s bg-white mobile-filters__header"> 
49                    <label onClick="${namespace}toggleTreeItem('${parentNamespace}');" class="mr-xs go-back"></label> 
50                    <strong> 
51                        ${categoryName} 
52                    </strong> 
53                </div> 
54                <#if !onCategoryPage> 
55                    <#list 0 ..< displayedCategories.length() as i> 
56                        <#assign category=categories.get(i) /> 
57                        <#assign categoryId=category.id /> 
58                        <#assign categoryResult=getCategory(results,categoryId) /> 
59 
60                        <#if resultIds?seq_contains(categoryId) || dpAssetCategoryHelper.containChildrenIds(resultIds, 
61                            category.childrenIds)> 
62                            <div> 
63                                <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
64                                    <div> 
65                                        <#assign collapseStatus=(foundCategories?seq_contains(category.categoryId))?then("", "collapsed")/> 
66                                        <label data-target="#${namespace}treeItem${categoryId}" data-toggle="collapse" 
67                                            class="filter-box__link ${collapseStatus}" data-level="${level}" 
68                                            onClick="${namespace}toggleTreeItem('${namespace}treeItem${categoryId}');"> 
69 
70                                            <@displayImages images=category.images /> 
71 
72                                            ${category.name} 
73 
74                                            <span class="filter-box__link__count"> 
75                                                <#if frequencyVisible && categoryResult?has_content> 
76                                                    ${categoryResult.frequency} 
77                                                </#if> 
78                                            </span> 
79                                        </label> 
80 
81                                        <#if dpAssetCategoryHelper.containChildrenIds(resultIds, category.childrenIds)> 
82 
83                                            <@categoriesDisplay categories=category.children foundCategories=foundCategories results=results 
84                                                resultIds=resultIds dpAssetCategoryHelper=dpAssetCategoryHelper 
85                                                level=level+1 frequencyVisible=frequencyVisible 
86                                                categoryName=category.name 
87                                                parentNamespace='${namespace}treeItem${categoryId}' /> 
88                                        </#if> 
89 
90                                    </div> 
91                                    <#else> 
92 
93                                        <label class="collapsed filter-box__link filter-box__link--target"> 
94                                            <input autocomplete="off" ${categoryResult.selected?then("checked", "" )} 
95                                                class="custom-control-input facet-term" data-term-id=${categoryId} 
96                                                disabled onChange="Liferay.Search.FacetUtil.changeSelection(event);" 
97                                                type="checkbox" /> 
98                                            <@displayImages images=category.images /> 
99                                            <span> 
100                                                ${category.name} 
101                                            </span> 
102                                            <span class="filter-box__link__count"> 
103                                                <#if frequencyVisible && categoryResult?has_content> 
104                                                    ${categoryResult.frequency} 
105                                                </#if> 
106                                            </span> 
107                                        </label> 
108                                </#if> 
109                            </div> 
110                        </#if> 
111                    </#list> 
112                    <#else /> 
113                    <#assign category=displayedCategories /> 
114                    <#assign categoryId=category.id /> 
115                    <#assign categoryResult=getCategory(results,categoryId) /> 
116 
117                    <#if resultIds?seq_contains(categoryId) || dpAssetCategoryHelper.containChildrenIds(resultIds, 
118                        category.childrenIds)> 
119                        <div> 
120                            <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
121                                <#assign collapseStatus=(foundCategories?seq_contains(category.categoryId))?then("", "collapsed")/> 
122                                <div> 
123                                    <label data-target="#${namespace}treeItem${categoryId}" data-toggle="collapse" 
124                                        class="filter-box__link ${collapseStatus}" data-level="${level}" 
125                                        onClick="${namespace}toggleTreeItem('${namespace}treeItem${categoryId}');"> 
126 
127                                        <@displayImages images=category.images /> 
128 
129                                        ${category.name} 
130 
131                                        <span class="filter-box__link__count"> 
132                                            <#if frequencyVisible && categoryResult?has_content> 
133                                                ${categoryResult.frequency} 
134                                            </#if> 
135                                        </span> 
136                                    </label> 
137 
138                                    <#if dpAssetCategoryHelper.containChildrenIds(resultIds, category.childrenIds)> 
139 
140                                        <@categoriesDisplay categories=category.children foundCategories=foundCategories results=results 
141                                            resultIds=resultIds dpAssetCategoryHelper=dpAssetCategoryHelper 
142                                            level=level+1 frequencyVisible=frequencyVisible categoryName=category.name 
143                                            parentNamespace='${namespace}treeItem${categoryId}' /> 
144                                    </#if> 
145 
146                                </div> 
147                                <#else> 
148                                    <label class="collapsed filter-box__link filter-box__link--target"> 
149                                        <input autocomplete="off" ${categoryResult.selected?then("checked", "" )} 
150                                            class="custom-control-input facet-term" data-term-id=${categoryId} disabled 
151                                            onChange="Liferay.Search.FacetUtil.changeSelection(event);" 
152                                            type="checkbox" /> 
153                                        <@displayImages images=category.images /> 
154                                        <span> 
155                                            ${category.name} 
156                                        </span> 
157                                        <span class="filter-box__link__count"> 
158                                            <#if frequencyVisible && categoryResult?has_content> 
159                                                ${categoryResult.frequency} 
160                                            </#if> 
161                                        </span> 
162                                    </label> 
163                            </#if> 
164                        </div> 
165                    </#if> 
166                </#if> 
167                <#if level!=1> 
168                    </div> 
169                </#if> 
170            </#if> 
171        </#macro> 
172 
173        <#function getCategoryIds categories> 
174            <#assign categoryIds=[]> 
175                <#list categories as category> 
176                    <#assign categoryIds +=[category.getFilterValue()]> 
177                </#list> 
178                <#return categoryIds> 
179        </#function> 
180        <#assign categoryTree=categoryContext.getData() /> 
181        <#if assetCategoriesSearchFacetDisplayContext?? && assetCategoriesSearchFacetDisplayContext?has_content && 
182            assetCategoriesSearchFacetDisplayContext.getVocabularyNames()??> 
183            <#assign vocabularyNames=assetCategoriesSearchFacetDisplayContext.getVocabularyNames() /> 
184            <#if vocabularyNames?has_content> 
185                <#list vocabularyNames as vocabularyName> 
186                    <#if categoryTree?has_content && categoryTree[vocabularyName]??> 
187                        <#assign displayPageCategory={"categoryId": -1 } /> 
188                        <#assign categoryTreeItem=categoryTree[vocabularyName] /> 
189                        <#assign found=[]/> 
190                        <#list categoryTreeItem.children.iterator() as category> 
191                            <@populate category=category/> 
192                        </#list> 
193                        <#assign collapseStatus=(displayPageCategory.categoryId !=-1)?then("", "collapsed")/> 
194                        <div> 
195                            <label data-target="#${namespace}treeItem${vocabularyName?index}" data-toggle="collapse" 
196                                class="filter-box__heading ${collapseStatus}" 
197                                onClick="${namespace}toggleTreeItem('${namespace}treeItem${vocabularyName?index}');"> 
198                                <@liferay.language_format arguments="${vocabularyName}" key="dp-filter-by-x" /> 
199                            </label> 
200                            <div class="filter-box__content mobile-filters"> 
201                                <#assign 
202                                    categoryResult=assetCategoriesSearchFacetDisplayContext.getBucketDisplayContexts(vocabularyName) /> 
203                                <#assign categoryIds=getCategoryIds(categoryResult) /> 
204 
205                                <@categoriesDisplay categories=categoryTreeItem.children foundCategories=found results=categoryResult 
206                                    resultIds=categoryIds dpAssetCategoryHelper=dpAssetCategoryHelper 
207                                    frequencyVisible=true categoryName=vocabularyName 
208                                    parentNamespace='${namespace}treeItem${vocabularyName?index}' /> 
209                            </div> 
210 
211                        </div> 
212                    </#if> 
213                </#list> 
214            </#if> 
215        </#if> 
216 
217        <#macro populate category parentIds=[]> 
218            <#if assetCategoryId == category.categoryId> 
219                <#assign displayPageCategory=category /> 
220                <#assign found=found + [category.categoryId]/> 
221                <#list parentIds as parent> 
222                    <#assign found=found + [parent]/> 
223                </#list> 
224            </#if> 
225            <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
226                <#local newParentIds=parentIds+[category.categoryId]/> 
227                <#list category.children.iterator() as child> 
228                    <@populate category=child parentIds=newParentIds/> 
229                </#list> 
230            </#if> 
231        </#macro> 
232 
233        <@liferay_aui.script> 
234            function ${namespace}toggleTreeItem(dataTarget) { 
235            const dataTargetElements = document.querySelectorAll("[data-target=\"#" + dataTarget + "\"]"); 
236            dataTargetElements.forEach( 
237            element => { 
238            if (element.classList.contains('collapsed')) { 
239            element.classList.remove('collapsed'); 
240            element.setAttribute('aria-expanded', true); 
241
242            else { 
243            element.classList.add('collapsed'); 
244            element.setAttribute('aria-expanded', false); 
245
246
247            ); 
248 
249            const subtreeCategoryTreeElement = document.getElementById(dataTarget); 
250            if (subtreeCategoryTreeElement) { 
251            if (subtreeCategoryTreeElement.classList.contains('show')) { 
252            subtreeCategoryTreeElement.classList.remove('show'); 
253
254            else { 
255            subtreeCategoryTreeElement.classList.add('show'); 
256
257
258
259            </@> 
Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing:
==> renderRequest.getAttribute("ASSET_CATEGORY")  [in template "44676#44717#113551" at line 10, column 44]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign assetCategoryId = renderReque...  [in template "44676#44717#113551" at line 10, column 17]
----
1<#-- Get category from list and categoryId --> 
2    <#function getCategory categories categoryId> 
3        <#list categories as category> 
4            <#if category.getFilterValue()==categoryId?string> 
5                <#return category> 
6            </#if> 
7        </#list> 
8        <#return ""> 
9    </#function> 
10		<#assign assetCategoryId = renderRequest.getAttribute("ASSET_CATEGORY").categoryId> 
11    <#macro displayImages images> 
12        <#list 0 ..< images.length() as i> 
13            <#assign categoryImage=images.get(i) /> 
14 
15            <#list categoryImage?keys as imageKey> 
16                <img class="${imageKey?lower_case}" src="${categoryImage[imageKey]}"> 
17            </#list> 
18        </#list> 
19    </#macro> 
20    <#-- Display Category and SubCategory --> 
21        <#macro categoriesDisplay categories foundCategories results resultIds dpAssetCategoryHelper frequencyVisible level=1 
22            categoryName="" parentNamespace=""> 
23            <#assign displayPageCategory={"categoryId": -1 } /> 
24            <#list categories.iterator() as category> 
25                <#if assetCategoryId == category.categoryId> 
26                    <#assign displayPageCategory=category /> 
27                </#if> 
28                <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
29                    <#list category.children.iterator() as child> 
30                        <#if assetCategoryId == child.categoryId> 
31                            <#assign displayPageCategory=category /> 
32                        </#if> 
33                    </#list> 
34                </#if> 
35            </#list> 
36            <#if displayPageCategory.categoryId !=-1> 
37                <#assign displayedCategories=displayPageCategory /> 
38                <#assign onCategoryPage=true /> 
39                <#else /> 
40                <#assign displayedCategories=categories /> 
41                <#assign onCategoryPage=false /> 
42            </#if> 
43            <#if displayedCategories??> 
44                <#if level!=1> 
45                    <div class="filter-box__content__sublevel mobile-filters"> 
46 
47                </#if> 
48                <div class="d-none m:d-flex align-center justify-content-start mb-s bg-white mobile-filters__header"> 
49                    <label onClick="${namespace}toggleTreeItem('${parentNamespace}');" class="mr-xs go-back"></label> 
50                    <strong> 
51                        ${categoryName} 
52                    </strong> 
53                </div> 
54                <#if !onCategoryPage> 
55                    <#list 0 ..< displayedCategories.length() as i> 
56                        <#assign category=categories.get(i) /> 
57                        <#assign categoryId=category.id /> 
58                        <#assign categoryResult=getCategory(results,categoryId) /> 
59 
60                        <#if resultIds?seq_contains(categoryId) || dpAssetCategoryHelper.containChildrenIds(resultIds, 
61                            category.childrenIds)> 
62                            <div> 
63                                <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
64                                    <div> 
65                                        <#assign collapseStatus=(foundCategories?seq_contains(category.categoryId))?then("", "collapsed")/> 
66                                        <label data-target="#${namespace}treeItem${categoryId}" data-toggle="collapse" 
67                                            class="filter-box__link ${collapseStatus}" data-level="${level}" 
68                                            onClick="${namespace}toggleTreeItem('${namespace}treeItem${categoryId}');"> 
69 
70                                            <@displayImages images=category.images /> 
71 
72                                            ${category.name} 
73 
74                                            <span class="filter-box__link__count"> 
75                                                <#if frequencyVisible && categoryResult?has_content> 
76                                                    ${categoryResult.frequency} 
77                                                </#if> 
78                                            </span> 
79                                        </label> 
80 
81                                        <#if dpAssetCategoryHelper.containChildrenIds(resultIds, category.childrenIds)> 
82 
83                                            <@categoriesDisplay categories=category.children foundCategories=foundCategories results=results 
84                                                resultIds=resultIds dpAssetCategoryHelper=dpAssetCategoryHelper 
85                                                level=level+1 frequencyVisible=frequencyVisible 
86                                                categoryName=category.name 
87                                                parentNamespace='${namespace}treeItem${categoryId}' /> 
88                                        </#if> 
89 
90                                    </div> 
91                                    <#else> 
92 
93                                        <label class="collapsed filter-box__link filter-box__link--target"> 
94                                            <input autocomplete="off" ${categoryResult.selected?then("checked", "" )} 
95                                                class="custom-control-input facet-term" data-term-id=${categoryId} 
96                                                disabled onChange="Liferay.Search.FacetUtil.changeSelection(event);" 
97                                                type="checkbox" /> 
98                                            <@displayImages images=category.images /> 
99                                            <span> 
100                                                ${category.name} 
101                                            </span> 
102                                            <span class="filter-box__link__count"> 
103                                                <#if frequencyVisible && categoryResult?has_content> 
104                                                    ${categoryResult.frequency} 
105                                                </#if> 
106                                            </span> 
107                                        </label> 
108                                </#if> 
109                            </div> 
110                        </#if> 
111                    </#list> 
112                    <#else /> 
113                    <#assign category=displayedCategories /> 
114                    <#assign categoryId=category.id /> 
115                    <#assign categoryResult=getCategory(results,categoryId) /> 
116 
117                    <#if resultIds?seq_contains(categoryId) || dpAssetCategoryHelper.containChildrenIds(resultIds, 
118                        category.childrenIds)> 
119                        <div> 
120                            <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
121                                <#assign collapseStatus=(foundCategories?seq_contains(category.categoryId))?then("", "collapsed")/> 
122                                <div> 
123                                    <label data-target="#${namespace}treeItem${categoryId}" data-toggle="collapse" 
124                                        class="filter-box__link ${collapseStatus}" data-level="${level}" 
125                                        onClick="${namespace}toggleTreeItem('${namespace}treeItem${categoryId}');"> 
126 
127                                        <@displayImages images=category.images /> 
128 
129                                        ${category.name} 
130 
131                                        <span class="filter-box__link__count"> 
132                                            <#if frequencyVisible && categoryResult?has_content> 
133                                                ${categoryResult.frequency} 
134                                            </#if> 
135                                        </span> 
136                                    </label> 
137 
138                                    <#if dpAssetCategoryHelper.containChildrenIds(resultIds, category.childrenIds)> 
139 
140                                        <@categoriesDisplay categories=category.children foundCategories=foundCategories results=results 
141                                            resultIds=resultIds dpAssetCategoryHelper=dpAssetCategoryHelper 
142                                            level=level+1 frequencyVisible=frequencyVisible categoryName=category.name 
143                                            parentNamespace='${namespace}treeItem${categoryId}' /> 
144                                    </#if> 
145 
146                                </div> 
147                                <#else> 
148                                    <label class="collapsed filter-box__link filter-box__link--target"> 
149                                        <input autocomplete="off" ${categoryResult.selected?then("checked", "" )} 
150                                            class="custom-control-input facet-term" data-term-id=${categoryId} disabled 
151                                            onChange="Liferay.Search.FacetUtil.changeSelection(event);" 
152                                            type="checkbox" /> 
153                                        <@displayImages images=category.images /> 
154                                        <span> 
155                                            ${category.name} 
156                                        </span> 
157                                        <span class="filter-box__link__count"> 
158                                            <#if frequencyVisible && categoryResult?has_content> 
159                                                ${categoryResult.frequency} 
160                                            </#if> 
161                                        </span> 
162                                    </label> 
163                            </#if> 
164                        </div> 
165                    </#if> 
166                </#if> 
167                <#if level!=1> 
168                    </div> 
169                </#if> 
170            </#if> 
171        </#macro> 
172 
173        <#function getCategoryIds categories> 
174            <#assign categoryIds=[]> 
175                <#list categories as category> 
176                    <#assign categoryIds +=[category.getFilterValue()]> 
177                </#list> 
178                <#return categoryIds> 
179        </#function> 
180        <#assign categoryTree=categoryContext.getData() /> 
181        <#if assetCategoriesSearchFacetDisplayContext?? && assetCategoriesSearchFacetDisplayContext?has_content && 
182            assetCategoriesSearchFacetDisplayContext.getVocabularyNames()??> 
183            <#assign vocabularyNames=assetCategoriesSearchFacetDisplayContext.getVocabularyNames() /> 
184            <#if vocabularyNames?has_content> 
185                <#list vocabularyNames as vocabularyName> 
186                    <#if categoryTree?has_content && categoryTree[vocabularyName]??> 
187                        <#assign displayPageCategory={"categoryId": -1 } /> 
188                        <#assign categoryTreeItem=categoryTree[vocabularyName] /> 
189                        <#assign found=[]/> 
190                        <#list categoryTreeItem.children.iterator() as category> 
191                            <@populate category=category/> 
192                        </#list> 
193                        <#assign collapseStatus=(displayPageCategory.categoryId !=-1)?then("", "collapsed")/> 
194                        <div> 
195                            <label data-target="#${namespace}treeItem${vocabularyName?index}" data-toggle="collapse" 
196                                class="filter-box__heading ${collapseStatus}" 
197                                onClick="${namespace}toggleTreeItem('${namespace}treeItem${vocabularyName?index}');"> 
198                                <@liferay.language_format arguments="${vocabularyName}" key="dp-filter-by-x" /> 
199                            </label> 
200                            <div class="filter-box__content mobile-filters"> 
201                                <#assign 
202                                    categoryResult=assetCategoriesSearchFacetDisplayContext.getBucketDisplayContexts(vocabularyName) /> 
203                                <#assign categoryIds=getCategoryIds(categoryResult) /> 
204 
205                                <@categoriesDisplay categories=categoryTreeItem.children foundCategories=found results=categoryResult 
206                                    resultIds=categoryIds dpAssetCategoryHelper=dpAssetCategoryHelper 
207                                    frequencyVisible=true categoryName=vocabularyName 
208                                    parentNamespace='${namespace}treeItem${vocabularyName?index}' /> 
209                            </div> 
210 
211                        </div> 
212                    </#if> 
213                </#list> 
214            </#if> 
215        </#if> 
216 
217        <#macro populate category parentIds=[]> 
218            <#if assetCategoryId == category.categoryId> 
219                <#assign displayPageCategory=category /> 
220                <#assign found=found + [category.categoryId]/> 
221                <#list parentIds as parent> 
222                    <#assign found=found + [parent]/> 
223                </#list> 
224            </#if> 
225            <#if dpAssetCategoryHelper.isNotEmpty(category.children)> 
226                <#local newParentIds=parentIds+[category.categoryId]/> 
227                <#list category.children.iterator() as child> 
228                    <@populate category=child parentIds=newParentIds/> 
229                </#list> 
230            </#if> 
231        </#macro> 
232 
233        <@liferay_aui.script> 
234            function ${namespace}toggleTreeItem(dataTarget) { 
235            const dataTargetElements = document.querySelectorAll("[data-target=\"#" + dataTarget + "\"]"); 
236            dataTargetElements.forEach( 
237            element => { 
238            if (element.classList.contains('collapsed')) { 
239            element.classList.remove('collapsed'); 
240            element.setAttribute('aria-expanded', true); 
241
242            else { 
243            element.classList.add('collapsed'); 
244            element.setAttribute('aria-expanded', false); 
245
246
247            ); 
248 
249            const subtreeCategoryTreeElement = document.getElementById(dataTarget); 
250            if (subtreeCategoryTreeElement) { 
251            if (subtreeCategoryTreeElement.classList.contains('show')) { 
252            subtreeCategoryTreeElement.classList.remove('show'); 
253
254            else { 
255            subtreeCategoryTreeElement.classList.add('show'); 
256
257
258
259            </@> 

Quels sont les différents types de protection du crâne ?

La protection de la tête est un aspect crucial de la sécurité au travail, car la tête est une zone vulnérable qui peut être exposée à divers risques tels que les chocs, les impacts, les coupures et les brûlures. Il existe plusieurs types de protections pour la tête, chacun offrant une sécurité différente en fonction du risque identifié.

Le premier type de protection de la tête est le casque de sécurité, qui est le plus couramment utilisé. Les casques sont conçus pour protéger contre les chocs et les impacts, et ils sont souvent utilisés dans les environnements de construction, les chantiers de génie civil et les zones industrielles. Tout comme les casquettes de sécurité.

Un autre type de protection de la tête est la cagoule de soudure, qui offre une protection contre les brûlures et les projections de matières dangereuses. Les cagoules sont souvent utilisées dans les industries pétrochimiques, les laboratoires et les usines de produits chimiques.

Les bonnets et les chapeaux sont également utilisés pour protéger la tête contre les rayons UV, le froid ou la chaleur. Ils sont couramment utilisés dans les environnements extérieurs tels que les chantiers de construction, les sites miniers, les usines métallurgiques et les sites de forage.

Les protège-oreilles et les bouchons d'oreilles sont utilisés pour protéger les oreilles contre de forts bruits prolongés qui peuvent entraîner des pertes auditives permanentes.

Il existe différents types de protection de la tête en fonction des risques identifiés. Les travailleurs doivent être équipés de la protection appropriée pour assurer leur sécurité sur leur lieu de travail.

Comment choisir sa protection auditive ?

La protection auditive est essentielle pour les travailleurs exposés à des niveaux sonores élevés. Cependant, choisir la bonne protection auditive peut être difficile. Voici quelques éléments à prendre en compte pour choisir la protection auditive qui convient le mieux à vos besoins :

  1. Le niveau de bruit : Le niveau de bruit auquel vous êtes exposé est un facteur important à prendre en compte lors du choix de votre protection auditive. Il existe des bouchons d'oreille et des casques antibruit conçus pour différents niveaux de bruit, de sorte qu'il est important de choisir une protection auditive qui correspond à votre environnement de travail.
  2. Le confort : Le confort est un autre élément important à considérer. Si votre protection auditive est inconfortable à porter, vous serez moins susceptible de la porter régulièrement, ce qui peut réduire son efficacité. Essayez différents types de protection auditive pour trouver celle qui convient le mieux à votre morphologie et qui est la plus confortable à porter.
  3. La durabilité : La durabilité est un autre facteur à prendre en compte. Si votre protection auditive est facilement endommagée, elle devra être remplacée plus souvent, ce qui peut augmenter les coûts à long terme. Choisissez une protection auditive de qualité supérieure qui peut résister à une utilisation intensive et à des conditions de travail difficiles.
  4. La réglementation : Il est important de se conformer à la réglementation locale et aux normes de sécurité en vigueur. Dans certains pays, la réglementation impose l'utilisation de protections auditives spécifiques pour les travailleurs exposés à des niveaux sonores élevés.

Pour choisir la bonne protection auditive, il est important de tenir compte du niveau de bruit, du confort, de la durabilité et de la réglementation en vigueur. En choisissant la protection auditive qui convient le mieux à vos besoins, vous pouvez protéger efficacement votre audition et éviter les problèmes de santé liés à l'exposition à des niveaux sonores élevés.

Pourquoi porter un masque respiratoire sur des chantiers ?

Les chantiers de construction peuvent exposer les travailleurs à des risques pour la santé liés à la qualité de l'air, tels que les poussières, les fumées, les gaz et les vapeurs toxiques. Les travailleurs peuvent inhaler ces substances dangereuses, ce qui peut entraîner des problèmes respiratoires graves, des maladies pulmonaires et d'autres problèmes de santé.

Porter un masque respiratoire sur les chantiers est donc essentiel pour protéger les travailleurs contre ces risques et réduire les risques de maladies respiratoires potentiellement graves. Les masques respiratoires peuvent filtrer les particules et les contaminants de l'air, empêchant les travailleurs de les inhaler.

Les masques respiratoires peuvent être conçus pour répondre à des besoins spécifiques, tels que la protection contre les particules fines, les gaz et les vapeurs. Les travailleurs qui manipulent des produits chimiques dangereux peuvent porter des masques respiratoires à cartouche pour protéger contre les vapeurs toxiques. Les travailleurs qui travaillent avec des matériaux en suspension dans l'air, tels que la poussière de bois, peuvent porter des masques respiratoires à particules pour protéger contre les particules fines.

Il est important de choisir le masque respiratoire approprié pour l'environnement de travail et les risques encourus. Les employeurs doivent fournir à leurs travailleurs des masques respiratoires conformes aux normes de sécurité en vigueur pour garantir leur sécurité sur le lieu de travail. Les travailleurs doivent être formés à l'utilisation et à l'entretien appropriés des masques respiratoires pour garantir leur efficacité et leur durabilité.

Porter un masque respiratoire sur les chantiers est essentiel pour protéger la santé des travailleurs et réduire les risques de maladies respiratoires potentiellement graves. Les travailleurs doivent être équipés des masques respiratoires appropriés pour l'environnement de travail et les risques encourus, et être formés à l'utilisation et à l'entretien appropriés des masques respiratoires.

Pourquoi porter des lunettes de protection pour chantier ?

Les chantiers de construction sont des environnements de travail dangereux, où les travailleurs peuvent être exposés à des risques et des dangers pour les yeux, tels que des projections de matériaux, des éclaboussures de liquides ou des radiations de soudure. Porter des lunettes de protection appropriées sur le chantier est donc essentiel pour protéger les yeux des travailleurs.

Les lunettes de protection pour chantier offrent une protection contre une grande variété de dangers pour les yeux, tels que les débris, les produits chimiques et les radiations. Elles peuvent être équipées de lentilles résistantes aux chocs pour protéger contre les projections de matériaux, et peuvent être dotées de verres filtrant les rayonnements UV pour protéger contre les radiations de soudure.

Il est important de choisir des lunettes de protection adaptées à l'environnement de travail et aux risques encourus sur le chantier. Les travailleurs doivent être formés à l'utilisation et à l'entretien appropriés des lunettes de protection pour garantir leur efficacité et leur durabilité.

Les employeurs doivent fournir à leurs travailleurs des lunettes de protection conformes aux normes de sécurité en vigueur pour garantir leur sécurité sur le chantier. Les travailleurs doivent porter les lunettes de protection fournies et les remplacer régulièrement si elles sont endommagées ou usées.

Porter des lunettes de protection appropriées pour chantier est essentiel pour garantir la sécurité des travailleurs et prévenir les blessures oculaires potentiellement graves qui peuvent se produire sur le lieu de travail.

Comment choisir les bonnes protections de la tête ?

Le choix des bonnes protections de la tête est crucial pour assurer la sécurité des travailleurs. Pour choisir les bonnes protections de la tête, il faut d'abord identifier les risques auxquels les travailleurs sont exposés sur leur lieu de travail.

Les risques peuvent inclure des chocs, des impacts, des coupures, des brûlures, des projections de matières dangereuses, des rayonnements UV ou encore des bruits forts. Une fois les risques identifiés, il est important de choisir la protection appropriée.

Les casques de sécurité sont souvent utilisés pour protéger la tête contre les chocs et les impacts, tandis que les cagoules sont conçues pour protéger contre les brûlures et les projections de matières dangereuses. Les bonnets peuvent protéger contre les rayonnements UV, le froid ou la chaleur, tandis que les casques antibruit et les bouchons d'oreilles peuvent protéger contre les bruits forts.

Il est également important de tenir compte de la qualité de la protection. Les équipements de protection individuelle doivent être conformes aux normes en vigueur pour garantir leur efficacité. Il est recommandé de se référer aux normes internationales telles que les normes EN (Europe) ou ANSI (Amérique du Nord).

Il est important de s'assurer que les équipements de protection individuelle sont confortables et bien ajustés. Les travailleurs sont plus susceptibles de porter des équipements de protection individuelle s'ils sont confortables et s'ils ne gênent pas leur travail.

Pour choisir les bonnes protections de la tête, il est important d'identifier les risques, de choisir la protection appropriée, de tenir compte de la qualité de la protection et de s'assurer du confort et de l'ajustement des équipements de protection individuelle.

Type