@@ -63,6 +63,17 @@ <h1 class="mt-5">Benefactors</h1>
6363 < h4 > ATT&CK Benefactors</ h4 >
6464 < span > < strong > Thanks to the following companies who have supported ATT&CK!</ strong > </ span >
6565 < br > < br >
66+ < h4 > Advocates</ h4 >
67+ < div id ="sponsor-box-advocates " class ="support-box my-4 ">
68+ < div class ="row justify-content-center px-4 ">
69+ < div class ="col col-sm ">
70+ < div class ="row sponsor-list " id ="sponsor-table-body-advocates ">
71+ <!-- Sponsor logos will be dynamically added here -->
72+ </ div >
73+ </ div >
74+ </ div >
75+ </ div >
76+
6677 < h4 > Friends</ h4 >
6778 < div id ="sponsor-box-friends " class ="support-box my-4 ">
6879 < div class ="row justify-content-center px-4 ">
@@ -97,6 +108,18 @@ <h4>Supporters</h4>
97108
98109< script >
99110 // Sponsor data
111+ const advocates = [
112+ {
113+ sponsors : [
114+ {
115+ logo : "/theme/images/benefactors/lloyds.png" ,
116+ url : "https://www.lloydsbankinggroup.com/" ,
117+ title : "Lloyds Banking Group"
118+ }
119+ ]
120+ }
121+ ] ;
122+
100123 const friends = [
101124 {
102125 sponsors : [
@@ -140,19 +163,14 @@ <h4>Supporters</h4>
140163 title : "JPMorgan Chase Bank, N.A."
141164 } ,
142165 {
143- logo : "/theme/images/benefactors/lloyds .png" ,
144- url : "https://www.lloydsbankinggroup .com/" ,
145- title : "Lloyds Banking Group "
166+ logo : "/theme/images/benefactors//microsoft .png" ,
167+ url : "https://www.microsoft .com/en-us /" ,
168+ title : "Microsoft Corporation "
146169 } ,
147170 ] ,
148171 } ,
149172 {
150173 sponsors : [
151- {
152- logo : "/theme/images/benefactors//microsoft.png" ,
153- url : "https://www.microsoft.com/en-us/" ,
154- title : "Microsoft Corporation"
155- } ,
156174 {
157175 logo : "/theme/images/benefactors/verizon.png" ,
158176 url : "https://www.verizon.com/business/" ,
@@ -248,9 +266,54 @@ <h4>Supporters</h4>
248266
249267
250268 // Reference to the sponsor list container
269+ const advocatesTableBody = document . getElementById ( "sponsor-table-body-advocates" ) ;
251270 const friendsTableBody = document . getElementById ( "sponsor-table-body-friends" ) ;
252271 const supportersTableBody = document . getElementById ( "sponsor-table-body-supporters" ) ;
253- // Function to generate the sponsor logos
272+
273+ // Function to generate the sponsor advocate logos
274+ function generateAdvocateLogos ( ) {
275+ advocates . forEach ( group => {
276+ const sponsors = group . sponsors ;
277+
278+ // Create rows with up to 4 sponsors per row
279+ for ( let i = 0 ; i < sponsors . length ; i += 4 ) {
280+ const row = document . createElement ( "div" ) ;
281+ row . className = "row sponsor-list" ;
282+ const rowLength = Math . min ( sponsors . length , 4 )
283+
284+ // Add up to 4 sponsors in each row
285+ for ( let j = i ; j < i + rowLength ; j ++ ) {
286+ const col = document . createElement ( "div" ) ;
287+ col . className = "col-sm sponsor-square" ;
288+ if ( j < sponsors . length ) {
289+ col . setAttribute ( "data-toggle" , "tooltip" ) ;
290+ col . setAttribute ( "data-placement" , "top" ) ;
291+ col . setAttribute ( "data-animation" , "false" ) ;
292+ col . setAttribute ( "data-original-title" , sponsors [ j ] . title ) ;
293+
294+ const sponsor = sponsors [ j ] ;
295+ const link = document . createElement ( "a" ) ;
296+ link . href = sponsor . url ;
297+ link . target = "_blank" ;
298+
299+ const image = document . createElement ( "img" ) ;
300+ image . src = sponsor . logo ;
301+ image . alt = "Sponsor Logo" ;
302+ image . className = "w-100 sponsor-logo p-3" ;
303+
304+ link . appendChild ( image ) ;
305+ col . appendChild ( link ) ;
306+ }
307+
308+ row . appendChild ( col ) ;
309+ }
310+
311+ advocatesTableBody . appendChild ( row ) ;
312+ }
313+ } ) ;
314+ }
315+
316+ // Function to generate the sponsor friend logos
254317 function generateFriendLogos ( ) {
255318 friends . forEach ( group => {
256319 const sponsors = group . sponsors ;
@@ -292,6 +355,7 @@ <h4>Supporters</h4>
292355 } ) ;
293356 }
294357
358+ // Function to generate the sponsor supporter logos
295359 function generateSupporterLogos ( ) {
296360 supporters . forEach ( group => {
297361 const sponsors = group . sponsors ;
@@ -333,15 +397,23 @@ <h4>Supporters</h4>
333397 } ) ;
334398 }
335399
336- // Check if there are sponsors and generate the logos
400+ // Check if there are sponsor advocates and generate the logos
401+ if ( advocates . length > 0 ) {
402+ document . getElementById ( "sponsor-box-advocates" ) . style . display = "block" ; // Show the box
403+ generateAdvocateLogos ( ) ;
404+ } else {
405+ document . getElementById ( "sponsor-box-advocates" ) . style . display = "none" ; // Hide the box
406+ }
407+
408+ // Check if there are sponsor friends and generate the logos
337409 if ( friends . length > 0 ) {
338410 document . getElementById ( "sponsor-box-friends" ) . style . display = "block" ; // Show the box
339411 generateFriendLogos ( ) ;
340412 } else {
341413 document . getElementById ( "sponsor-box-friends" ) . style . display = "none" ; // Hide the box
342414 }
343415
344- // Check if there are sponsors and generate the logos
416+ // Check if there are sponsor supporters and generate the logos
345417 if ( supporters . length > 0 ) {
346418 document . getElementById ( "sponsor-box-supporters" ) . style . display = "block" ; // Show the box
347419 generateSupporterLogos ( ) ;
0 commit comments