Molly Barcikowski

22 Molly Barcikowski
  • Year:
    So.
  • gp
    17
  • p
    59
  • g
    36
  • a
    23
Player statistics
  Overall Conference
Games 17 9
Points 59 30
Goals 36 15
Assists 23 15
Shots 79 42
Shooting percentage 45.6 35.7
Shots on goal 57 28
Shots on goal percentage 72.2 66.7
Free position goals-shots 1-6 1-4
Ground balls 23 15
Draw controls 9 4
Turnovers 30 16
Caused turnovers 7 5
Fouls 30 18
Yellow cards 1 1
Red cards 0 0
Green cards 0 0
Recent results
Recent Games
Date Opponent Result
Apr 9 George Mason L, 19-8
Apr 13 at Saint Joseph's L, 18-17
Apr 15 at George Washington W, 15-13
Apr 21 Davidson L, 13-10
Apr 23 St. Bonaventure W, 24-15
Apr 29 Richmond L, 18-7
Game Log - Statistics
Date Opponent Score g a pts fpg-fps sh sh% sog sog%
Feb 15 Old Dominion L, 10-7 2 1 3 0-1 6 33.3 4 66.7
Feb 18 UMBC L, 20-10 3 0 3 0-0 4 75.0 4 100.0
Feb 24 at Campbell W, 14-10 3 0 3 0-0 6 50.0 5 83.3
Feb 26 at Winthrop L, 19-7 2 0 2 0-1 5 40.0 2 40.0
Mar 3 at Gardner-Webb W, 19-7 4 2 6 0-0 4 100.0 4 100.0
Mar 5 Central Mich. W, 15-9 5 3 8 0-0 8 62.5 7 87.5
Mar 13 Lehigh L, 16-6 0 0 0 0-0 0 - 0 -
Mar 25 Liberty W, 21-12 2 2 4 0-0 4 50.0 3 75.0
Mar 30 at Massachusetts L, 19-8 1 2 3 0-0 7 14.3 4 57.1
Apr 2 Duquesne W, 13-10 1 2 3 0-0 3 33.3 2 66.7
Apr 7 at La Salle L, 15-11 1 1 2 0-1 5 20.0 3 60.0
Apr 9 George Mason L, 19-8 0 0 0 0-0 3 0.0 2 66.7
Apr 13 at Saint Joseph's L, 18-17 3 2 5 0-1 8 37.5 5 62.5
Apr 15 at George Washington W, 15-13 2 1 3 0-0 2 100.0 2 100.0
Apr 21 Davidson L, 13-10 4 3 7 1-1 5 80.0 4 80.0
Apr 23 St. Bonaventure W, 24-15 3 4 7 0-0 8 37.5 6 75.0
Apr 29 Richmond L, 18-7 0 0 0 0-1 1 0.0 0 0.0
May 28 Becker - - - - - - - -
Career Stats - Statistics
Statistic gp gs g a pts fpg-fps sh sh% sog sog%
2015-16 - Va. Commonwealth - - - - - - - - - -
2016-17 - Va. Commonwealth - - - - - - - - - -
2017-18 - VCU - - - - - - - - - -
2018-19 - VCU
There was a problem with a Velocity script
Pagesports/wlax/2016-17/bios/bio-template
ErrorInvocation of method 'get' in class org.json.JSONObject threw exception org.json.JSONException: JSONObject["gp"] not found. at u6mzubmug11xobjlsports/wlax/2016-17/bios/bio-template[line 460, column 64]
Page source:
1: <script src="${website.cdn("/info/klass.min.js")}"></script>
2: 
3: #set ($fromHeadlines = false)
4: #if ($request.getParameter("from_headlines") == true)
5:     #set ($fromHeadlines = true)
6: #end
7: 
8: ## PICK UP OPTIONS
9: $website.include("options")
10: #set ($options = $request.getAttribute("options"))
11: #set ($locale = "en_us")
12: #set ($locale = $options.get("locale"))
13: 
14: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
15: #set ($bioObject = $page.getDataAsObject())
16: #set ($statsURL = $bioObject.statsURL)
17: #if ($statsURL.length() > 0)
18:   $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
19:   ## various settings to get the variables set
20:   #set ($events = $request.getAttribute("bio_events"))
21:   #set ($seasons = $request.getAttribute("bio_seasons"))
22:   #set ($career = $request.getAttribute("bio_career"))
23:   #set ($labels = $request.getAttribute("bio_labels"))
24:   #set ($briefs = $request.getAttribute("bio_briefs"))
25:   #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
26:   #set ($splits = $request.getAttribute("bio_splits"))
27:   #set ($statPosition = $request.getAttribute("bio_position"))
28:   #set ($positions = $request.getAttribute("bio_positions"))
29:   #set ($playerId = $request.getAttribute("bio_player_id"))
30:   #set ($highlights = $request.getAttribute("bio_highlights"))
31:   #set ($formats = $request.getAttribute("bio_formats"))
32:   #set ($gamelogsCategoriesLabels = $request.getAttribute("bio_gamelogs_labels"))
33:   #set ($briefsCategoriesLabels = $request.getAttribute("bio_briefs_labels"))
34:   #set ($gamesResults = $request.getAttribute("bio_games_results"))
35:   #set ($monthsPlayed = $request.getAttribute("bio_months_played"))
36:   #set ($rosterTransactions = $request.getAttribute("roster_transactions"))
37: #end
38: 
39: #set ($pos = "")
40: #if($attributes.get("position_stat"))
41:     #set ($pos = $attributes.get("position_stat"))
42: #else
43:     #set ($pos = $attributes.get("position"))
44:     #set ($pos = $statPosition)
45:     #set ($posVec = $pos.split("/"))
46:     #set ($pos = $posVec[0])
47: #end
48: #set ($pos = $pos.toLowerCase())
49: #set ($statPos = $positions.get($pos))
50: #set ($paramPos = $request.getParameter("pos"))
51: 
52: #set ($playerId = $attributes.get("playerId"))
53: #set ($stats = $splits.overall)
54: #set ($highlights = $highlights.get($statPos))
55: 
56: #set ($showHighlights = true)
57: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
58: 	#set ($showHighlights = false)
59: #end
60: 
61: #set ($enhancedLayout = false)
62: #if ($options.get("bio_enhanced_layout") == "yes" || $request.getParameter("bio_enhanced_layout") == true || $request.getAttribute("enhanced") == "true")
63:     #set ($enhancedLayout = true)
64: #elseif($request.getParameter("bio_enhanced_layout") == false || $request.getAttribute("enhanced") == "false")
65:     #set ($enhancedLayout = false)
66: #end
67: 
68: #set ($showActionShots = true)
69: #if ($options.get("bio_show_action_shots") && $options.get("bio_show_action_shots") == false)
70: 	#set ($showActionShots = false)
71: #end
72: 
73: #set ($showDate = true)
74: #if ($options.get("news_layout_show_date") == "no")
75:     #set ($showDate = false)
76: #end
77: 
78: #set ($showLeadin = true)
79: #if ($options.get("news_layout_show_leadin") == "no")
80:     #set ($showLeadin = false)
81: #end
82: 
83: #set ($dateFormat = "MMMM dd, yyyy")
84: #if ($options.get("site_date_format").length() > 0) #set ($dateFormat = $options.get("site_date_format")) #end
85: 
86: #set ($thumbnail-orientation = "ratio ratio-16x9 ratio-adaptive")
87: #if ($options.get("news_thumbnail_orientation") == "portrait") ## default view from options
88:     #set ($thumbnail-orientation = "ratio ratio-3x4")
89: #elseif ($options.get("news_thumbnail_orientation") == "landscape")
90:     #set ($thumbnail-orientation = "ratio ratio-16x9")
91: #elseif ($options.get("news_thumbnail_orientation") == "adaptive")
92:     #set ($thumbnail-orientation = "embed-responsive-adaptive")
93: #elseif ($request.getParameter("thumbnail_orientation") == "portrait") ## default view from include parameter
94:     #set ($thumbnail-orientation = "ratio ratio-3x4")
95: #end
96: 
97: #set ($showThumb = true)
98: #if ($options.get("news_layout_show_thumb") == "no")
99:     #set ($showThumb = false)
100: #end
101: #set ($thumbWidth = 767)
102: 
103: #set ($actionShotsLimit = 5)
104: #set ($actionShotsLimit = $tool.math.toInteger($options.get("bio_action_shots_limit")))
105: 
106: #set ($showCareer = $wiki.valid() && $seasons)
107: #if ("yes" == $options.get("stats_show_career") && $seasons)
108:   #set ($showCareer = true)
109: #end
110: 
111: #set ($hasEvents = $events.size() > 0)
112: #set ($hasSynopsis = $synopsis.trim().length() > 0)
113: #set ($htmlStatsURL = "${page.url}-stats")
114: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
115: #set ($bioBriefURL = "${page.url}-brief")
116: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
117: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
118: #if ($options.get("bio_hide_roster") == true)
119:   #set ($showRoster = false)
120: #end
121: 
122: #if ($hasEvents)
123:     $request.setAttribute("icl-dataTables-script", true)
124: #end
125: 
126: #set ($view = "")
127: #if ($hasSynopsis || $hasBioBrief)
128:   #set ($view = "bio")
129: #elseif ($statsURL.length() > 0)
130:   #set ($view = "profile")
131: #elseif ($hasHTMLStats)
132:   #set ($view = "htmlstats")
133: #elseif ($releases.size() > 0)
134:   #set ($view = "news")
135: #elseif ($playerPhotos.size() > 0)
136:   #set ($view = "photos")
137: #elseif ($playerVideos.size() > 0)
138:   #set ($view = "videos")
139: #end
140: 
141: #if ($options.get("bio_default_view").length() > 0)
142:     #set ($checkView = $options.get("bio_default_view"))
143: #else
144:     ## THIS ESTABLISHES A DEFAULT TAB FOR NEW BOOTSTRAP THEMES
145:     #if ($hasSynopsis || $hasBioBrief)
146:         #set ($checkView = "bio")
147:     #elseif ($statsURL.length() > 0)
148:         #set ($checkView = "profile")
149:     #elseif ($releases.size() > 0)
150:         #set ($checkView = "news")
151:     #end
152: #end
153: 
154: #if ($request.getParameter("view"))
155:   #set ($checkView = $request.getParameter("view"))
156: #end
157: 
158: #if ($checkView == "profile" && $statsURL.length() > 0)
159:   #set ($view = "profile")
160: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
161:   #set ($view = "bio")
162: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
163:   #set ($view = "gamelog")
164: #elseif ($checkView == "career" && $showCareer)
165:   #set ($view = "career")
166: #elseif ($checkView == "splits" && $statsURL.length() > 0)
167:   #set ($view = "splits")
168: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
169:   #set ($view = "htmlstats")
170: #elseif ($checkView == "news" && $releases.size() > 0)
171:   #set ($view = "news")
172: #elseif ($checkView == "photos" && $playerPhotos.size() > 0)
173:   #set ($view = "photos")
174: #elseif ($checkView == "videos" && $playerVideos.size() > 0)
175:     #set ($view = "videos")
176: #elseif ($checkView == "weplayed")
177:     #set ($view = "weplayed")
178: #end
179: 
180: #***********************************************
181:  # MACROS
182:  # *********************************************#
183: #macro (capitalize $name)
184:     $name.substring(0,1).toUpperCase()$name.substring(1).toLowerCase()
185: #end
186: 
187: #macro (printTitle)
188:     #set ($pageTitle = "Bio")
189:     #if ($page.title.trim().length() > 0)
190:         #set ($pageTitle = $page.title.trim())
191:     #end
192: 
193:     #if ($fromHeadlines || !$website.isIncluded())
194:         #if($request.getAttribute("pageTitle").length() > 0)
195:             #set ($pageTitle = $request.getAttribute("pageTitle"))
196:         #else
197:             #set ($pageTitle = "")
198:         #end
199:         #if ($page.title.length() > 0)
200:             #set ($pageTitle = $!page.title)
201:             <h1 class="page-title d-none">$!pageTitle</h1>
202:         #end
203:         #if($pageTitle.trim().length() == 0)
204:             #set ($pageTitle = "#capitalize($page.name.trim())")
205:         #end
206:         $!request.setAttribute("pageTitle", "${pageTitle}")
207: 
208:         #if ($body.length() > 150)
209:             $!request.setAttribute("pageDescription", "$body.substring(1, 150) ...")
210:         #else
211:             $!request.setAttribute("pageDescription", "$body")
212:         #end
213:     #end
214: #end
215: 
216: #macro (printLeadIn)
217:     #if($page.leadIn.length() > 0 && ($fromHeadlines || !$website.isIncluded()))
218:     <h2 class="page-sub-title fs-5 d-none">$page.leadIn</h2>
219:     #end
220: #end
221: 
222: #macro (printThumbnail)
223:     #set ($thumbSrc = "$!{page.thumbnailURL}")
224:     #set ($thumbAlt = "$!page.title")
225:     #if ($page.thumbnailPage.altText.length() > 0)
226:         #set ($thumbAlt = "$page.thumbnailPage.altText")
227:     #end
228:     #if($thumbSrc.length() > 0 )
229:     <picture alt="$thumbAlt">
230:         <source media="(min-width:1200px)" srcset="${thumbSrc}?max_width=1920">
231:         <source media="(min-width:992px)" srcset="${thumbSrc}?max_width=1200">
232:         <source media="(min-width:576px)" srcset="${thumbSrc}?max_width=992">
233:         <source media="(min-width:0px)" srcset="${thumbSrc}?max_width=576">
234:         <img class="img-fluid  mx-auto" src="${thumbSrc}?max_width=1920" alt="${thumbAlt}"/>
235:     </picture>
236:     #end
237: #end
238: 
239: #macro (printResultAriaLabel $event)
240:     #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}")
241:     #if ($event.neutralSite.length() > 0 || $event.home)
242:     	#set ($ariaLabel = "${ariaLabel} vs.")
243:     #else
244:     	#set ($ariaLabel = "${ariaLabel} at")
245:     #end
246:     #set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:")
247:     #if ($event.neutralSite.length() > 0)
248:     	#set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:")
249:     #end
250:     #set ($ariaLabel = "${ariaLabel} Box Score")
251:     aria-label="$ariaLabel"
252: #end
253: 
254: #macro(playIcon $url)
255:     <a href="$url" class="play-btn video-btn-overlay" onclick="return(false);" onmouseup="return(false);">
256:         <span class="center-icon-pre">
257:             <span class="center-icon">
258:                 <span class="visually-hidden">Play Video</span>
259:                 <span class="fab fa-youtube"></span>
260:             </span>
261:         </span>
262:     </a>
263: #end
264: 
265: #macro (printVideo $article)
266:     #if ($article.contentType == "loki/youtube")
267:         #set ($videoID = $article.dataAsString)
268:         <img src="https://i3.ytimg.com/vi/${videoID}/sddefault.jpg" onerror="this.onerror=null; this.src='https://i3.ytimg.com/vi/${videoID}/mqdefault.jpg';" alt="video thumbnail for $article.thumbnailAlt" class="card-img-top img-fluid" />
269:         #playIcon($article.url)
270:     #end
271: 
272:     #if ($article.contentType == "loki/video")
273:     <video class="player" muted="true">
274:         <source src="${article.url}?dec=" type="video/mp4" />
275:     </video>
276:         #playIcon($article.url)
277:     #end
278: #end
279: 
280: ## ARTICLE MENTIONS MACRO
281: #macro (printReleases $items $type)
282:     <div class="news-releases news-layout grid bio-news-mentions">
283:         <div class="cards">
284:             #foreach ($article in $items)
285: 
286:                 ## CATEGORY / TITLE
287:                 #set ($title = $article.title)
288:                 #set ($category = "Article")
289: 
290:                 #if($article.contentType == "loki/bio")
291:                     #set ($category = "Bio")
292:                 #elseif ($article.contentType == "video/x-flv" || $article.contentType == "loki/video" || $article.contentType == "loki/youtube")
293:                     #set ($category = "Video")
294:                 #end
295: 
296:                 #if ($article.url.startsWith("/sports/"))
297:                     #set ($sportKey = $article.url.split("/").get(2))
298:                     #if ($sportLabels.containsKey($sportKey))
299:                         #set ($category = $sportLabels.get($sportKey))
300:                     #end
301:                 #else
302:                     #set ($articleSection = $article.sectionPage)
303:                     #foreach ($i in [1..5])
304:                         #if ($articleSection.url.length() == 0)
305:                             #break
306:                         #elseif ($articleSection.sectionPage.url.length() == 0) ## if parent is a root section
307:                             #if ($articleSection.title.length() > 0)
308:                                 #set ($category = $articleSection.title)
309:                             #else
310:                                 #set ($firstChar = $articleSection.name.substring(0, 1).toUpperCase())
311:                                 #set ($afterFirstChars = $articleSection.name.substring(1))
312:                                 #set ($category = "${firstChar}${afterFirstChars}")
313:                             #end
314:                             #break
315:                         #end
316:                         #set ($articleSection = $articleSection.sectionPage)
317:                     #end
318:                 #end
319:                 ## END CATEGORY / TITLE
320: 
321:                 #set ($altText = $article.title)
322:                 #if ($article.thumbnailURL)
323:                     #if ($article.thumbnailPage.altText.length() > 0)
324:                         #set ($altText = "$article.thumbnailPage.altText")
325:                     #end
326:                 #end
327: 
328:                 #if ($article.thumbnailURL.length() > 0)
329:                     #set ($src = $article.thumbnailURL)
330:                 #elseif ($website.exists("/images/setup/default-thumbnail.png"))
331:                     #set ($src = "/images/setup/default-thumbnail.png")
332:                 #elseif ($website.exists("/images/setup/thumbnail_default.jpg"))
333:                     #set ($src = "/images/setup/thumbnail_default.jpg")
334:                 #else
335:                     #set ($src = "/info/images/default-thumbnail.png")
336:                 #end
337:                 #set ($thumbnailURL = "${src}?max_width=${thumbWidth}")
338: 
339:                 #set ($cardClass = "card")
340:                 #if ($velocityCount > $showSize)
341:                     #set ($cardClass = "card hidden")
342:                 #end
343: 
344:                 <div class="${cardClass} border position-relative">
345:                     <div class="card-inner position-relative">
346:                         #if ($showThumb == true)
347:                             <div class="thumb overflow-hidden card-img-top ${thumbnail-orientation}" style="background-image:url('${thumbnailURL}'); background-size:cover; background-position:center;">
348:                                 <img src="${thumbnailURL}" alt="${altText}" class="img-fluid" />
349:                                 #printVideo($article)
350:                             </div>
351:                         #end
352:                         <div class="card-body border-top rounded-bottom bg-white">
353:                             <div class="entry-body-header">
354:                                 <ul class="entry-meta list-unstyled d-flex align-items-center justify-content-between mb-0 text-muted small">
355:                                     <li class="entry-category">$category</li>
356:                                     <li class="entry-header-date d-none d-lg-block hide-on-grid-view">
357:                                         <span class="d-flex align-items-center">
358:                                             <span class="fa-regular fa-calendar"></span>
359:                                             <span class="ms-2">$formatter.formatDate($article.date, $dateFormat)</span>
360:                                         </span>
361:                                     </li>
362:                                 </ul>
363:                                 <div class="card-title entry-title fw-bold mb-0">
364:                                     <a class="text-decoration-none stretched-link clamp-2" href="$article.url">$title</a>
365:                                 </div>
366:                                 #if ($showLeadin == true && $article.leadIn.length() > 0)
367:                                     <p class="card-text entry-summary clamp-3">$article.leadIn</p>
368:                                 #end
369:                             </div>
370:                         </div>
371:                         #if ($showDate == true && $article.date)
372:                             <div class="card-footer border-top rounded-bottom bg-white text-muted p-3">
373:                                 <ul class="list-unstyled d-flex align-items-center m-0">
374:                                     <li class="card-entry-date">
375:                                         <span class="small d-flex align-items-center">
376:                                             <span class="fa-regular fa-calendar"></span>
377:                                             <span class="ms-2 date">$formatter.formatDate($article.date, $dateFormat)</span>
378:                                         </span>
379:                                     </li>
380:                                 </ul>
381:                             </div>
382:                         #end
383:                     </div>
384:                 </div> ## card
385:             #end ## loop
386:         </div>
387:     </div>
388: #end ## printReleases
389: 
390: #macro (gamelogData $p $categoryLabel)
391: 
392: #set ($p = $positions.get($p))
393: #set ($gamelogs = $gamelogs.get($p))
394: #if (!$categoryLabel || $categoryLabel.length() == 0) #set ($categoryLabel = "Statistics") #end
395: 
396: #if ($hasEvents)
397: <div class="stats-box full clearfix">
398:     <div class="table-responsive-via-datatables">
399:         <table class="table table-hover nowrap w-100" data-searching="false" data-ordering="false" data-paging="false" data-info="false" data-filtering="false" data-scroll-y="50vh" data-module="theme-module/table-sort-bs">
400:             <caption class="visually-hidden">Game Log - ${categoryLabel}</caption>
401:             <thead class="thead-dark">
402:                 <tr>
403:                     <th scope="col">Date</th>
404:                     <th scope="col" class="text-start">Opponent</th>
405:                     <th scope="col" class="">Score</th>
406:                     #foreach ($gamelog in $gamelogs)
407:                       <th scope="col" class="text-uppercase text-center">$gamelog</th>
408:                     #end
409:                 </tr>
410:             </thead>
411:             <tbody>
412:                 #foreach ($event in $events)
413:                   <tr>
414:                     <td scope="row">$formatter.formatDate($event.event.date, "MMM d")</td>
415:                     <td class="text-start">
416:                       #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
417:                       $event.event.opponent.name
418:                     </td>
419:                     <td class="">
420:                     #if ($event.event.statusCode >= 0)
421:                       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
422:                           <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
423:                       #else
424:                       ${event.event.APResult}
425:                       #end
426:                     #end
427:                     </td>
428:                     #foreach ($gamelog in $gamelogs.keySet())
429:                       #set ($value = "-")
430:                       #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
431:                       <td class="text-center">$value</td>
432:                     #end
433:                   </tr>
434:                 #end
435:             </tbody>
436:         </table>
437:     </div> ## table-responsive
438: </div> ## stats-box
439: #end
440: 
441: #end ## macro gamelogData
442: 
443: #macro (splitWithLabels $statPosBriefs $label $stats)
444:     <tr>
445:         <th scope="row" class="text-end">${label}</th>
446: 
447:         #if ($rosterTransactions && $v == "career")
448:             #set($keys =  $stats.names())
449:             #set($array = $keys.toString().replace('"','').split(","))
450:             #foreach ($brief in $statPosBriefs.keySet())
451:                 #set ($value = "-")
452:                 #if($array.contains($brief))
453:                     #set ($value = $!formatter.formatNumber($tool.math.toDouble($stats.get($brief)), $formats.get($brief)))
454:                  #end
455:                 <td class="text-center">#if ($value.length() > 0) $value #else - #end</td>
456:             #end
457:         #else
458:             #foreach ($brief in $statPosBriefs.keySet())
459:                 #set ($value = "-")
460:                 #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
461:                 <td class="text-center">#if ($value.length() > 0) $value #else - #end</td>
462:             #end
463:         #end
464:     </tr>
465: #end
466: 
467: #macro (careerData $p $categoryLabel)
468: #set ($p = $positions.get($p))
469: #set ($statPosBriefs = $briefs.get($p))
470: #if (!$categoryLabel || $categoryLabel.length() == 0) #set ($categoryLabel = "Statistics") #end
471: 
472: <div class="stats-box full clearfix">
473:     <div class="table-responsive-via-datatables table-responsive-webkit-overflow-scroll-fix">
474:         <table class="table table-hover nowrap w-100" data-searching="false" data-ordering="false" data-paging="false" data-info="false" data-filtering="false" data-scroll-y="50vh" data-module="theme-module/table-sort-bs">
475:             <caption class="visually-hidden">Career Stats - ${categoryLabel}</caption>
476:             <thead class="thead-dark">
477:                 <tr>
478:                     <th scope="col"><span class="visually-hidden">Statistic</span></th>
479:                     #foreach ($brief in $statPosBriefs)
480:                         <th scope="col" class="text-center text-uppercase">$brief</th>
481:                     #end
482:                 </tr>
483:             </thead>
484:             <tbody>
485:                 #if ($rosterTransactions)
486:                     #set ($seasonLength = $career.seasons.length())
487:                     #foreach ($index in [0..$tool.math.sub($seasonLength, 1)])
488:                         #set($season = $career.seasons[$index])
489:                         #if($season.seasonStatsURL != "null")
490:                             #set ($label = "<a href='${season.seasonStatsURL}?view=profile'>$season.seasonName.replaceAll('^[^0-9-]*','') - $season.team.teamName</a>")
491:                         #else
492:                             #set ($label = "$season.seasonName.replaceAll('^[^0-9-]*','') - $season.team.teamName ")
493:                         #end
494:                         #splitWithLabels($statPosBriefs, $label, $season.player.stats)
495:                     #end
496:                     #splitWithLabels($statPosBriefs, "Total", $career.totals)
497:                 #else
498:                     #set ($careerTotals = $request.getAttribute("careerTotals"))
499:                     #set ($careerMap = $request.getAttribute("careerMap"))
500:                     #foreach ($season in $seasons)
501:                         ## Check if we did not get stats for this season
502:                         #if ($careerMap.get($season.seasonName))
503:                             #set ($label = "<a href='${season.path}?view=profile'>$season.seasonName</a>")
504:                             #splitWithLabels($statPosBriefs, $label, $careerMap[$season.seasonName])
505:                         #elseif ($wiki.valid())
506:                             <tr>
507:                                 <td scope="row" class="text-end">
508:                                     ${season.seasonName}
509:                                     <span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-placement="right" title="We could not find the 'players' page in the ${season.seasonName} section.">
510:                                         <span class="fa fa-light fa-circle-info"></span>
511:                                     </span>
512:                                 </td>
513:                                 #foreach ( $i in [0..$tool.math.sub($statPosBriefs.size(), 1)])
514:                                     <td class="text-center">&nbsp;</td>
515:                                 #end
516:                             </tr>
517:                         #end
518:                     #end
519:                     #splitWithLabels($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
520:                 #end
521:             </tbody>
522:         </table>
523:     </div> ## table-responsive
524: </div> ## stats-box
525: 
526: #end ## macro careerData
527: 
528: #macro (printGroupLabel $label $emptyColumnSize)
529:     <tr class="group table-active">
530:         <td><strong>$label</strong></td>
531:         #foreach ( $i in [1..$emptyColumnSize])
532:             <td></td>
533:         #end
534:     </tr>
535: #end
536: 
537: #macro (splitsData $p $categoryLabel)
538: 
539: #set ($p = $positions.get($p))
540: #set ($statPosBriefs = $briefs.get($p))
541: #if (!$categoryLabel || $categoryLabel.length() == 0) #set ($categoryLabel = "Statistics") #end
542: 
543: #if ($statPosBriefs.size() > 0)
544: <div class="stats-box full clearfix">
545:     <div class="table-responsive-via-datatables">
546:         <table class="table table-hover nowrap w-100" data-searching="false" data-ordering="false" data-paging="false" data-info="false" data-filtering="false" data-scroll-y="50vh" data-module="theme-module/table-sort-bs">
547:             <caption class="visually-hidden">Split Stats - ${categoryLabel}</caption>
548:             <thead class="thead-dark">
549:                 <tr>
550:                     <th scope="col"><span class="visually-hidden">Statistic</span></th>
551:                     #foreach ($brief in $statPosBriefs)
552:                         <th scope="col" class="text-center text-uppercase">$brief</th>
553:                     #end
554:                 </tr>
555:             </thead>
556: 
557:             <tbody>
558:                 #printGroupLabel("Event", $statPosBriefs.size())
559:                 #splitWithLabels($statPosBriefs, "Total", $splits.overall)
560:                 #splitWithLabels($statPosBriefs, "Conference", $splits.conference)
561:                 #splitWithLabels($statPosBriefs, "Exhibition", $splits.exhibition)
562: 
563:                 #printGroupLabel("Location", $statPosBriefs.size())
564:                 #splitWithLabels($statPosBriefs, "Home", $splits.home)
565:                 #splitWithLabels($statPosBriefs, "Away", $splits.away)
566:                 #splitWithLabels($statPosBriefs, "Neutral", $splits.neutral)
567: 
568:                 #printGroupLabel("Result", $statPosBriefs.size())
569:                 #foreach($gameResult in $gamesResults.entrySet())
570:                     #if ($gameResult.key == "wins")
571:                       #set ($splitGameResult = $splits.inWins)
572:                     #elseif ($gameResult.key == "losses")
573:                       #set ($splitGameResult = $splits.inLosses)
574:                     #elseif ($gameResult.key == "ties")
575:                       #set ($splitGameResult = $splits.inTies)
576:                     #end
577: 
578:                     #splitWithLabels($statPosBriefs, $gameResult.value, $splitGameResult)
579:                 #end
580: 
581: 
582:                 #if ($monthsPlayed and $monthsPlayed.size() > 0)
583: 
584:                     #printGroupLabel("Month", $statPosBriefs.size())
585: 
586:                     #foreach($month in $monthsPlayed)
587:                         #if ($month == 'January')
588:                           #set ($splitMonth = $splits.january)
589:                         #elseif ($month == 'February')
590:                           #set ($splitMonth = $splits.february)
591:                         #elseif ($month == 'March')
592:                           #set($splitMonth = $splits.march)
593:                         #elseif ($month == 'April')
594:                           #set($splitMonth = $splits.april)
595:                         #elseif ($month == 'May')
596:                           #set ($splitMonth = $splits.may)
597:                         #elseif ($month == 'June')
598:                           #set ($splitMonth = $splits.june)
599:                         #elseif ($month == 'July')
600:                           #set($splitMonth = $splits.july)
601:                         #elseif ($month == 'August')
602:                           #set ($splitMonth = $splits.august)
603:                         #elseif ($month == 'September')
604:                           #set($splitMonth = $splits.september)
605:                         #elseif ($month == 'October')
606:                           #set($splitMonth = $splits.october)
607:                         #elseif ($month == 'November')
608:                           #set ($splitMonth = $splits.november)
609:                         #elseif ($month == 'December')
610:                           #set($splitMonth = $splits.december)
611:                         #end
612: 
613:                         #splitWithLabels($statPosBriefs, $month, $splitMonth)
614:                     #end ## foreach
615:                 #end
616:             </tbody>
617:         </table>
618:     </div> ## table-responsive
619: </div> ## stats-box
620: #end
621: 
622: #end ## macro splitsData
623: 
624: #macro (printRecentGames)
625: #if ($hasEvents)
626:     <div class="table-responsive-via-datatables">
627:         <table class="table table-hover nowrap w-100" data-searching="false" data-ordering="false" data-paging="false" data-info="false" data-filtering="false" data-scroll-y="50vh" data-module="theme-module/table-sort-bs">
628:             <caption class="visually-hidden">Recent Games</caption>
629:             <thead class="thead-dark">
630:                 <tr>
631:                     <th scope="col" class="text-start">Date</th>
632:                     <th scope="col" class="text-start">Opponent</th>
633:                     <th scope="col">Result</th>
634:                 </tr>
635:             </thead>
636:             <tbody>
637:                 #set ($eventEnd = -1)
638:                 #foreach ($event in $events)
639:                   #if ($event.event.result.resolved)
640:                     #set ($eventEnd = $velocityCount)
641:                   #end
642:                 #end
643: 
644:                 #set ($eventStart = $eventEnd - 5)
645:                 #if ($eventStart < 0) #set ($eventStart = 0) #end
646: 
647:                 #foreach ($event in $events)
648:                     #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
649:                         <tr>
650:                             <td scope="row" class="text-start">$formatter.formatDate($event.event.date, "MMM d")</td>
651:                             <td class="text-start">
652:                                 #if ($event.event.neutralSite.length() > 0) vs.
653:                                 #elseif (!$event.event.home) at
654:                                 #else ## nothing for a home game
655:                                 #end
656:                                 $event.event.opponent.name
657:                             </td>
658:                             <td>
659:                                 #if ($event.event.statusCode >= 0)
660:                                     #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
661:                                         <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
662:                                     #else
663:                                         ${event.event.APResult}
664:                                     #end
665:                                 #end
666:                             </td>
667:                         </tr>
668:                     #end ## if
669:                 #end
670:             </tbody>
671:         </table>
672:     </div>
673: #end
674: #end ## macro printRecentGames
675: 
676: #macro (printCategories $briefCategoryLabels $v $ariaLabel)
677:     <div class="$classTabPaneContent has-child-tabs">
678:         <div class="d-flex flex-row text-nowrap align-items-center justify-content-center">
679:             <div class="secondary-tab-select-container flex-fill">
680:                 <select class="tab-nav-select-helper form-select" id="bio-tabs-${v}-select" aria-label="Choose a stat group">
681:                     #foreach($briefCat in $briefCategoryLabels.entrySet())
682:                         #set ($briefCatLabel = $briefCat.value)
683:                         #set ($briefCatKey = $briefCat.key)
684:                         #if ($locale == "en_gb" && $briefCatLabel == "Defense")
685:                             #set ($briefCatLabel = "Defence")
686:                         #end
687:                         <option value="#${v}-tab-pos-${briefCatKey}-content" #if ($pos == $briefCat.key || $foreach.first) selected #end>${briefCatLabel}</option>
688:                     #end
689:                 </select>
690:                 <script>
691:                     $('.tab-nav-select-helper').on('change', function(e) {
692:                         var id = $(this).val();
693:                         $('a[data-bs-target="' + id + '"]').tab('show');
694:                     });
695:                 </script>
696:             </div>
697:         </div>
698:         <div class="$classBioTabChildrenWrapper" data-momentum="false">
699:             <ul class="$classBioTabChildren" id="bio-tabs-${v}" role="tablist">
700:                 #foreach($briefCat in $briefCategoryLabels.entrySet())
701:                     #set ($briefCatLabel = $briefCat.value)
702:                     #set ($briefCatKey = $briefCat.key)
703:                     #if ($locale == "en_gb" && $briefCatLabel == "Defense")
704:                         #set ($briefCatLabel = "Defence")
705:                     #end
706:                     <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0" role="presentation">
707:                         <a data-bs-toggle="tab" id="${v}-tab-pos-${briefCatKey}" class="nav-link#if ($activePos == $briefCatKey) active#end" data-bs-target="#${v}-tab-pos-${briefCatKey}-content" href="${page.url}?view=${v}&pos=${briefCatKey}" role="tab" aria-label="${ariaLabel}: ${briefCatLabel}">${briefCatLabel}</a>
708:                     </li>
709:                 #end
710:             </ul>
711:         </div>
712:         <div class="tab-content py-3" id="${v}-tab-content">
713:             #foreach ($briefCat in $briefCategoryLabels.entrySet())
714:                 #set ($briefCatLabel = $briefCat.value)
715:                 #set ($briefCatKey = $briefCat.key)
716:                 #set ($class = "tab-panel")
717:                 #if ($briefCat.key == $activePos)
718:                    #set ($class = "tab-panel active show")
719:                 #end
720:                 <div class="tab-pane fade ${class}" id="${v}-tab-pos-${briefCatKey}-content" role="tabpanel" aria-labelledby="${v}-tab-pos-${briefCatKey}">
721:                     <div class="stats-wrap $classTabPaneContentChild">
722:                         #if ($v == "splits")
723:                             #splitsData($briefCat.key $briefCatLabel)
724:                         #elseif ($v == "career")
725:                             #careerData($briefCat.key $briefCatLabel)
726:                         #end
727:                     </div>
728:                 </div>
729:             #end
730:         </div>
731:     </div>
732: #end ## macro printCategories
733: 
734: #macro (printHeadshot $class)
735:     #if ($headshot.url)
736:         <img src="$headshot.url?max_width=510&max_height=600" class="$class" alt="$fullName" />
737:     #elseif ($options.get("roster_default_thumbnail").length() > 0)
738:         <span class="d-block" aria-hidden="true" style="background-image:url('$options.get("roster_default_thumbnail")'); background-position:center center; background-repeat:no-repeat; background-size:cover;"></span>
739:     #else
740:         <span class="d-flex align-items-center justify-content-center text-primary ps-img-placeholder-bg">
741:             <span class="fa-regular fa-image fa-xl opacity-1"></span>
742:         </span>
743:     #end
744: #end ## macro printHeadshot
745: 
746: #set ($socialBrands = ["facebook", "twitter", "instagram", "youtube", "twitch", "tiktok", "nil"])
747: 
748: #macro (buildSocialLink $brand $handle $icons $class)
749:     #if($brand == "facebook")
750:         #set($socialHost = "https://www.facebook.com")
751:     #elseif($brand == "twitter")
752:         #set($socialHost = "https://twitter.com")
753:     #elseif($brand == "instagram")
754:         #set($socialHost = "https://www.instagram.com")
755:     #elseif($brand == "tikTok")
756:         #set($socialHost = "https://www.tiktok.com")
757:     #elseif($brand == "tiktok")
758:         #set($socialHost = "https://www.tiktok.com")
759:     #elseif($brand == "twitch")
760:         #set($socialHost = "https://www.twitch.tv")
761:     #elseif($brand == "youtube")
762:         #set($socialHost = "https://www.youtube.com")
763:     #elseif($brand == "nil")
764:         #set($socialHost = "") ## We cannot define a host because the data entry can accept all NIL host services. Opendorse, Influencer, Fanatics, etc.
765:     #end
766: 
767:     #if($socialHost.length() > 0 )
768:         #set($url = "${socialHost}/${handle}")
769:     #elseif($brand == "nil")
770:         #set($url = "${handle}")
771:     #else
772:         #set($url = "")
773:     #end
774: 
775:     #set($icons = $Boolean.parseBoolean($icons))
776:     #if($icons == true)
777:         <a href="$url" class="$class" target="_blank" aria-label="$brand"><span aria-hidden="true" class="#if($brand == 'nil')fa-kit #else fa fa-brands #end #if($brand == 'twitter') fa-x-twitter #else fa-$brand.toLowerCase() #end"></span></a>
778:     #else
779:         <a href="$url" class="$class" target="_blank">$handle</a>
780:     #end
781: #end
782: 
783: #macro(playerHeading)
784:     <div class="player-heading animated h3 bg-primary d-flex align-content-stretch text-white position-relative z-index-1 rounded-top overflow-hidden mb-0">
785:         #if ($!attributes.get("number").length() > 0)<span class="number bg-secondary inline-block text-white fs-2 lh-1 p-3">$!attributes.get("number")</span>#end
786:         <span class="name inline-block w-100 flex-grow-1 p-3">$fullName</span>
787:         #set ($hasSocialLinks = false)
788:         #foreach ($field in $fields)
789:             #if ($socialBrands.contains($field.key.toLowerCase()) && $attributes.get($field.key).length() > 0)
790:                 #set ($hasSocialLinks = true)
791:             #end
792:         #end
793:         #if ($hasSocialLinks)
794:         <span class="social-handle-link inline-block p-3">
795:             <ul class="d-flex align-content-center h-100 gap-3 list-unstyled m-0">
796:                 #foreach ($field in $fields)
797:                     #if ($socialBrands.contains($field.key.toLowerCase()) && $attributes.get($field.key).length() > 0)
798:                         <li class="d-flex flex-column align-content-center justify-content-center">
799:                             #buildSocialLink($field.value.toLowerCase(), $!attributes.get($field.key), true, "btn btn-lg btn-link text-white p-0")
800:                         </li>
801:                     #end
802:                 #end
803:             </ul>
804:         </span>
805:         #end
806:     </div>
807:     <script>
808:         $(document).ready(function() {
809:             $('.player-heading.animated .name').addClass('visible');
810:             $('.player-heading.animated .number').addClass('visible');
811:         });
812:     </script>
813: 
814: #end
815: 
816: #macro (printBioInfo)
817:     #if ($enhancedLayout)
818:         #set ($classList = "d-flex flex-row flex-wrap justify-content-between row")
819:         #set ($classListItems = "col-12 col-lg-6 px-md-3")
820:         #set ($definitionListItems = "border-bottom m-0 p-2 p-lg-3 h-100")
821:     #else
822:         #set ($classList = "d-flex flex-column justify-content-start align-items-start")
823:         #set ($classListItems = "flex-grow-1 w-100 p-2 border-bottom")
824:         #set ($definitionListItems = " m-0 h-100 d-flex flex-column justify-content-start align-items-start")
825:     #end
826: 
827:     #if ($enhancedLayout)
828:         #playerHeading()
829:     #end
830:     <div class="container-fluid">
831:         <div class="roster-player-fields mt-3">
832:             <ul class="list-unstyled ${classList}">
833:                 #foreach ($i in [1..10])
834:                     #set ($stickyKey = "bio_custom${i}_sticky")
835:                     #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
836:                         <li class="$classListItems bio-field-custom-sticky">
837:                             <dl class="${definitionListItems}">
838:                                 <dt class="label p-0 me-2">$options.get($stickyKey): </dt>
839:                                 <dd class="value p-0 m-0 text-muted">$!attributes.get("custom${i}")</dd>
840:                             </dl>
841:                         </li>
842:                     #end
843:                 #end
844: 
845:                 #foreach ($field in $fields)
846:                     #if (!$field.key.startsWith("custom"))
847:                         #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
848:                             #if ($field.key == "phone1" || $field.key == "phone2")
849:                                 <li class="$classListItems bio-field-standard">
850:                                     <dl class="${definitionListItems}">
851:                                         <dt class="label p-0 me-2 d-inline">Phone: </dt>
852:                                         <dd class="value p-0 m-0 d-inline text-muted">$!attributes.get($field.key)</dd>
853:                                     </dl>
854:                                 </li>
855:                             #elseif ($field.key == "email_address")
856:                                 <li class="$classListItems bio-field-standard">
857:                                     <dl class="${definitionListItems}">
858:                                         #set ($emailAdd = $attributes.get($field.key))
859:                                         <dt class="label p-0 me-2 d-inline">Email: </dt>
860:                                         <dd class="value p-0 m-0 text-truncate d-inline text-muted"><a href="mailto:${emailAdd}">$emailAdd</a></dd>
861:                                     </dl>
862:                                 </li>
863:                             #elseif ($field.key == "weight_class")
864:                                 <li class="$classListItems bio-field-standard">
865:                                     <dl class="${definitionListItems}">
866:                                         <dt class="label p-0 me-2 d-inline">Class: </dt>
867:                                         <dd class="value p-0 m-0 d-inline text-muted">$!attributes.get($field.key)</dd>
868:                                     </dl>
869:                                 </li>
870:                             #elseif ($socialBrands.contains($field.value.toLowerCase()))
871:                                 <li class="$classListItems bio-field-standard">
872:                                     <dl class="${definitionListItems}">
873:                                         <dt class="label p-0 me-2 d-inline">$field.value: </dt>
874:                                         <dd class="value p-0 m-0  d-inline text-muted">#buildSocialLink($field.value.toLowerCase(), $!attributes.get($field.key), false, "")</dd>
875:                                     </dl>
876:                                 </li>
877:                             #elseif ($field.key != "position_abbr")
878:                                 <li class="$classListItems bio-field-standard">
879:                                     <dl class="${definitionListItems}">
880:                                         <dt class="label p-0 me-2 d-inline">$field.value: </dt>
881:                                         <dd class="value p-0 m-0  d-inline text-muted">$!attributes.get($field.key)</dd>
882:                                     </dl>
883:                                 </li>
884:                             #end
885:                         #end
886:                     #end
887:                 #end
888: 
889:                 #foreach ($i in [1..10])
890:                   #set ($customKey = "bio_custom${i}")
891:                   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
892:                     <li class="$classListItems bio-field-custom">
893:                         <dl class="${definitionListItems}">
894:                             <dt class="label p-0 me-2 d-inline">$options.get($customKey): </dt>
895:                             <dd class="value p-0 m-0 d-inline text-muted">$!attributes.get("custom${i}")</dd>
896:                         </dl>
897:                     </li>
898:                   #end
899:                 #end
900:             </ul>
901:         </div>
902:     </div>
903: #end ## macro printBioInfo
904: 
905: #macro (printActionShots)
906: #if ($showActionShots)
907:     ## FILTERS OUT THE NUMBER OF ACTION PHOTOS
908:     #set ($totalPhotoAvaiable = $playerPhotos.size())
909:     #set ($playerPhotosFiltered = $playerPhotos)
910:     #if ($actionShotsLimit < $totalPhotoAvaiable)
911:         #set ($playerPhotosFiltered = $playerPhotos.subList(0, $actionShotsLimit))
912:     #end
913:     #set ($playerPhotosFiltered = $tool.sorter.sort($playerPhotosFiltered, "lastUpdated:desc"))
914:     <div class="action-shots clearfix mb-md-n5 d-none d-sm-none d-md-block rounded">
915:         <div id="action-shots-carousel" class="carousel slide carousel-fade" data-bs-interval="12000" data-bs-ride="carousel">
916:             <ol class="carousel-indicators pb-sm-3 mb-sm-5">
917:                 #foreach($photo in $playerPhotosFiltered)
918:                     <li data-bs-target="#action-shots-carousel" data-bs-slide-to="$foreach.index" class="#if ($foreach.index == 0)active#end"></li>
919:                 #end
920:             </ol>
921:             <div class="carousel-inner ratio ratio-21x9">
922:                 #foreach($photo in $playerPhotosFiltered)
923:                     #set ($imgAlt = "Large featured action photo of $fullName - Image $foreach.count")
924:                     #if ($photo.altText.length() > 0)
925:                         #set ($imgAlt = $photo.altText)
926:                     #elseif( $photo.title.length() > 0 )
927:                         #set ($imgAlt = $photo.title)
928:                     #end
929:                     <div class="carousel-item#if ($foreach.index == 0) active#end">
930:                         <img src="${photo.url}?max_width=1200" alt="$imgAlt" class="d-block w-100" data-lastupdated="$photo.lastUpdated" />
931:                     </div>
932:                 #end
933:             </div>
934:         </div>
935:     </div>
936: #end
937: #end ## macro printActionShots
938: 
939: #macro (printHighlights)
940: #if ($highlights && $showHighlights)
941:     <div class="roster-bio-highlights bg-light bg-gradient text-dark bg-opacity-25 w-100 border rounded">
942:         <ul class="d-flex flex-row flex-wrap justify-content-between list-unstyled m-0">
943:             #foreach ($highlight in $highlights.keySet())
944:                 #set ($value = "-")
945:                 #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
946:                 <li class="flex-fill text-center border-end">
947:                     <dl class="stat d-block m-0 p-3">
948:                         <dt class="d-block label p-0 m-0 text-uppercase fw-normal small">$!highlights.get($highlight)</dt>
949:                         <dd class="d-block value p-0 m-0 fs-4 fw-bold lh-1">$value</dd>
950:                     </dl>
951:                 </li>
952:             #end
953:         </ul>
954:     </div>
955: #end
956: #end ## macro printHighlights
957: 
958: #macro (printRoster)
959: #if ($enhancedLayout)
960:     $website.includeAgain("${page.url}?tmpl=roster-switcher-template&id=roster-list")
961: #else
962:     #set ($id = "roster-switcher")
963:     #if ($request.getParameter("id").length() > 0)
964:         #set ($id = $request.getParameter("id"))
965:     #end
966: 
967:     #if ($page.contentType == "loki/bio")
968:         #set ($headlinesFeaturedSize = 0)
969:         #foreach ($featuredPage in $page.headlinesFeatured)
970:             #if ($featuredPage.contentType == "loki/headlines")
971:                 #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
972:             #end
973:         #end
974:         #if ($headlinesFeaturedSize > 0)
975:             <div id="$id" class="float-md-end roster-switcher-template">
976:                 <div class="input-group">
977:                     <span class="input-group-text" id="${id}-group-text">Related Bios</span>
978:                     <select class="form-select" id="${id}" aria-describedby="${id}-group-text" onchange="location=this.value;">
979:                         #set ($listItems = [])
980:                         #foreach ($featuredPage in $page.headlinesFeatured)
981:                             #if ($featuredPage.contentType == "loki/headlines")
982:                                 $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template")
983:                                 #set ($headlines = $request.getAttribute("headlines"))
984:                                 #foreach ($bio in $headlines)
985:                                     #set ($b = $bio.getDataAsObject().getAttributes())
986:                                     #set ($fullName = "")
987:                                     #if ($b.get("full_name"))
988:                                         #set ($fullName = $b.get("full_name"))
989:                                     #else
990:                                         #if ($b.get("first_name") && $b.get("last_name"))
991:                                             #set ($firstName = $b.get("first_name"))
992:                                             #set ($lastName = $b.get("last_name"))
993:                                             #set ($fullName = "${firstName} ${lastName}")
994:                                         #end
995:                                     #end
996:                                     #if ($fullName.length() > 0)
997:                                         #if (!$listItems.contains($bio.url))
998:                                             #set($dummy = $listItems.add($bio.url))
999:                                             <option value="${bio.url}" data-url="${bio.url}" data-title="${fullName}" #if ($page.url == $bio.url)selected#end>${fullName}</option>
1000:                                         #end
1001:                                     #end
1002:                                 #end
1003:                             #end
1004:                         #end
1005:                     </select>
1006:                 </div>
1007:             </div>
1008:         #end
1009:     #elseif ($page.contentType == "loki/bio-network")
1010:         #set ($relatedPlayers = $page.sectionPage.children)
1011:         #set ($teamNames = {})
1012:         #foreach ($relatedPlayer in $relatedPlayers)
1013:             #if ($relatedPlayer.contentType == "loki/bio-network")
1014:                 #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
1015:                 #set ($teamName = $relatedPlayerObj.get("team"))
1016:                 #if ($teamName.length() > 0)
1017:                     #if (!$teamNames.containsValue($teamName))
1018:                         $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
1019:                     #end
1020:                 #end
1021:             #end
1022:         #end
1023:         <div id="$id" class="float-md-end roster-switcher-template">
1024:             <div class="input-group">
1025:                 <span class="input-group-text" id="${id}-group-text">Related Bios</span>
1026:                 <select class="form-select" id="${id}" aria-describedby="${id}-group-text" onchange="location=this.value;">
1027:                     #foreach ($i in [1..$teamNames.size()])
1028:                         #if ($teamNames.size() > 1)
1029:                             <optgroup label="$teamNames.get($i)">
1030:                         #end
1031: 
1032:                         #foreach ($relatedPlayer in $relatedPlayers)
1033:                             #if ($relatedPlayer.contentType == "loki/bio-network")
1034:                                 #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
1035:                                 #set ($teamName = $relatedPlayerObj.get("team"))
1036:                                 #if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
1037:                                     #set ($playerFirstName = $relatedPlayerObj.get("first_name"))
1038:                                     #set ($playerLastName = $relatedPlayerObj.get("last_name"))
1039:                                     <option value="$relatedPlayer.url" #if ($page.url == $relatedPlayer.url)selected#end>${playerFirstName} ${playerLastName}</option>
1040:                                 #end
1041:                             #end
1042:                         #end
1043: 
1044:                         #if ($teamNames.size() > 1)
1045:                             </optgroup>
1046:                         #end
1047:                     #end
1048:                 </select>
1049:             </div>
1050:         </div>
1051:     #end
1052: #end ## enhancedLayout check
1053: #end ## macro printRoster
1054: 
1055: ################################################## END MACROS  #############################################################
1056: 
1057: #if ($attributes.get("full_name").length() > 0)
1058:   #set ($fullName = $attributes.get("full_name"))
1059: #else
1060:   #set ($firstName = $!attributes.get("first_name"))
1061:   #set ($lastName = $!attributes.get("last_name"))
1062:   #set ($fullName = "${firstName} ${lastName}")
1063: #end
1064: 
1065: #set ($actionShots = false)
1066: #if ($enhancedLayout && $playerPhotos.size() > 0)
1067:   #set ($actionShots = true)
1068: #end
1069: 
1070: #if ($enhancedLayout)
1071:     #set ($classRoot = "bio-enhanced")
1072:     #if ($actionShots && $showActionShots)
1073:           #set ($classRoot = "${classRoot} action")
1074:     #else
1075:           #set ($classRoot = "${classRoot} plain")
1076:     #end
1077:     #set ($flexClass = "d-flex flex-column align-items-stretch justify-content-start gap-4 w-100 gap-4")
1078:     #set ($bioCardClass = "col-auto")
1079:     #set ($classBody = "flex-grow-1")
1080:     #set ($classBioTabParentsWrapper = "nav-tabs-wrapper position-relative pt-3")
1081:     #set ($classBioTabParents = "nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-center gap-3")
1082:     #set ($classBioTabChildrenWrapper = "nav-tabs-wrapper position-relative py-3 border-bottom d-none")
1083:     #set ($classBioTabChildren = "nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-center gap-3")
1084:     #set ($classTabPaneContent = "tab-pane-contents p-3 border")
1085:     #set ($classTabPaneContentChild = "tab-pane-contents p-0")
1086: #else
1087:     #set ($classRoot = "bio-wrap ")
1088:     #set ($flexClass = "d-flex flex-column align-items-stretch justify-content-start flex-md-row gap-4")
1089:     #set ($bioContainerClass = "mt")
1090:     #set ($bioCardClass = "min-width-300px max-width-md-300px")
1091:     #set ($classBody = "flex-grow-1 overflow-hidden")
1092:     #set ($classBioTabParentsWrapper = "nav-tabs-wrapper position-relative tab-nav")
1093:     #set ($classBioTabParents = "nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-center gap-3")
1094:     #set ($classBioTabChildrenWrapper = "nav-tabs-wrapper position-relative tab-nav d-none")
1095:     #set ($classBioTabChildren = "nav nav-tabs nav-tabs-responsive d-flex with-arrow lined flex-row text-nowrap justify-content-center gap-3")
1096:     #set ($classTabPaneContent = "tab-pane-contents p-3 border")
1097:     #set ($classTabPaneContentChild = "tab-pane-contents p-0")
1098: 
1099: #end
1100: 
1101: ## FULL ROSTER
1102: <div class="bio-template ${classRoot} #if ($highlights) bio-wrap-has-highlights #end d-flex flex-column align-items-stretch justify-content-start gap-4">
1103: 
1104:     <div class="bio-template-heading d-flex flex-column w-100 justify-content-center align-items-stretch gap-2 mb-3 d-none">
1105:         #printTitle()
1106:         #printLeadIn()
1107:     </div>
1108: 
1109:     ## RELATED BIOS
1110:     #if ($showRoster)
1111:         <div class="container-fluid">
1112:             <div class="related-bios">#printRoster()</div>
1113:         </div>
1114:     #end
1115: 
1116:     #if ($actionShots)
1117:       #printActionShots()
1118:     #end
1119: 
1120:     #if ($enhancedLayout)
1121:     #else
1122:         #playerHeading()
1123:     #end
1124: 
1125: <div class="roster-bio-container">
1126:     <div class="${flexClass}">
1127:         <div class="bio-card ${bioCardClass}">
1128:             <div class="player-about clearfix">
1129:                 #if ($enhancedLayout)
1130:                     <div class="bio-card-enhanced d-flex flex-column flex-md-row align-items-stretch align-items-md-start justify-content-center justify-content-md-start  gap-3">
1131:                         <div class="bcs-image flex-shrink-1 flex-grow-1 min-width-300px max-width-md-300px">
1132:                             <div class="player-headshot text-center position-relative z-index-1 #if($actionShots)mt-md-n5 #end shadow rounded border overflow-hidden ratio ratio-3x4">
1133:                                 #printHeadshot("img-fluid img-thumbnail")
1134:                             </div>
1135:                         </div>
1136:                         <div class="flex-grow-1">
1137:                             <div class="player-info">#printBioInfo()</div>
1138:                             <div class="container-fluid">
1139:                                 <div class="mt-3 mx-3 mt-lg-4 ">
1140:                                     #printHighlights()
1141:                                 </div>
1142:                             </div>
1143:                         </div>
1144:                     </div>
1145:                 #else
1146:                     <div class="bio-card-standard d-flex flex-column align-items-stretch justify-content-start gap-3">
1147:                         <div class="bcs-image flex-shrink-1 min-width-300px max-width-md-300px">
1148:                             <div class="player-headshot text-center position-relative z-index-1 mb-3 shadow rounded border overflow-hidden ratio ratio-3x4">
1149:                                 #printHeadshot("img-fluid img-thumbnail")
1150:                             </div>
1151:                         </div>
1152:                         <div class="bcs-attributes">
1153:                             <div class="player-info">#printBioInfo()</div>
1154:                         </div>
1155:                     </div>
1156:                 #end
1157:             </div>
1158:         </div> ## bio-card
1159: 
1160:         #if ($view.length() > 0)
1161:             $request.setAttribute("icl-responsive-tabs-script", true)
1162: 
1163:             <div class="bio-body ${classBody}">
1164: 
1165:                 <div class="d-flex flex-column align-items-center justify-content-start gap-3">
1166:                     #if (!$enhancedLayout) #printHighlights #end
1167:                     <div class="tab-container w-100">
1168:                         #if ($statsURL.length() > 0 || $hasHTMLStats || $releases.size() > 0|| $playerPhotos.size() > 0 || $playerVideos.size() > 0)
1169:                             #set ($hasTabNav = true)
1170:                             <div class="$classBioTabParentsWrapper">
1171:                                 <ul class="$classBioTabParents" id="bio-tabs-parents" role="tablist">
1172:                                     #if ($hasSynopsis || $hasBioBrief)
1173:                                         <li class="nav-item" role="presentation">
1174:                                             <a data-bs-toggle="tab" id="bio-tab" class="nav-link #if ($view == "bio") active#end" data-bs-target="#bio" href="${page.url}?view=bio" role="tab">Bio</a>
1175:                                         </li>
1176:                                     #end
1177: 
1178:                                     #if ($statsURL.length() > 0)
1179:                                         <li class="nav-item" role="presentation">
1180:                                             <a data-bs-toggle="tab" id="profile-tab" class="nav-link#if ($view == "profile") active#end" data-bs-target="#profile" href="${page.url}?view=profile" role="tab">Player Profile</a>
1181:                                         </li>
1182:                                         <li class="nav-item" role="presentation">
1183:                                             <a data-bs-toggle="tab" id="gamelog-tab" class="nav-link#if ($view == "gamelog") active#end" data-bs-target="#gamelog" href="${page.url}?view=gamelog" role="tab">Game Log</a>
1184:                                         </li>
1185:                                         #if ($showCareer)
1186:                                             <li class="nav-item" role="presentation">
1187:                                                 <a data-bs-toggle="tab" id="career-tab" class="nav-link#if ($view == "career") active#end" data-bs-target="#career" href="${page.url}?view=career" role="tab">Career Stats</a>
1188:                                             </li>
1189:                                         #end
1190:                                         <li class="nav-item" role="presentation">
1191:                                             <a data-bs-toggle="tab" id="splits-tab" class="nav-link#if ($view == "splits") active#end" data-bs-target="#splits" href="${page.url}?view=splits" role="tab">Split Stats</a>
1192:                                         </li>
1193:                                     #end
1194: 
1195:                                     #if ($hasHTMLStats)
1196:                                         <li class="nav-item" role="presentation">
1197:                                             <a data-bs-toggle="tab" id="htmlstats-tab" class="nav-link#if ($view == "htmlstats") active#end" data-bs-target="#htmlstats" href="${page.url}?view=htmlstats" role="tab">HTML Stats</a>
1198:                                         </li>
1199:                                     #end
1200: 
1201:                                     #if ($releases.size() > 0)
1202:                                         <li class="nav-item" role="presentation">
1203:                                             <a data-bs-toggle="tab" id="news-tab" class="nav-link#if ($view == "news") active#end" data-bs-target="#news" href="${page.url}?view=news" role="tab">News</a>
1204:                                         </li>
1205:                                     #end
1206: 
1207:                                     #if ($playerPhotos.size() > 0)
1208:                                         <li class="nav-item" role="presentation">
1209:                                             <a data-bs-toggle="tab" id="photos-tab" class="nav-link#if ($view == "photos") active#end" data-bs-target="#photos" href="${page.url}?view=photos" role="tab">Photos</a>
1210:                                         </li>
1211:                                     #end
1212: 
1213:                                     #if ($playerVideos.size() > 0)
1214:                                         <li class="nav-item" role="presentation">
1215:                                             <a data-bs-toggle="tab" id="videos-tab" class="nav-link#if ($view == "videos") active#end" data-bs-target="#videos" href="${page.url}?view=videos" role="tab">Videos</a>
1216:                                         </li>
1217:                                     #end
1218: 
1219:                                     ## WEPLAYED MOMENTS - THIRD-PARTY SUPPORT PLUGIN
1220:                                     #if (!$page.url.contains("/coaches") && $options.get("weplayed_addon_code"))
1221:                                         <li class="nav-item weplayed-hide-no-data #if ($view == "weplayed") active#end" role="presentation">
1222:                                             <a data-toggle="tab" id="weplayed-tab" class="nav-link#if ($view == "weplayed") active#end" data-target="#weplayed" href="${page.url}?view=weplayed" role="tab">#Moments</a>
1223:                                         </li>
1224:                                     #end
1225:                                 </ul>
1226:                             </div>
1227:                         #end
1228:                         <div class="tab-content py-3" id="roster-tab-content">
1229:                             ## BIO
1230:                             #if ($hasSynopsis || $hasBioBrief)
1231:                                 #set ($class = "tab-panel")
1232:                                 #if ($view == "bio")
1233:                                    #set ($class = "tab-panel active show")
1234:                                 #end
1235: 
1236:                                 <div class="tab-pane fade ${class}" id="bio" role="tabpanel" #if ($hasTabNav)aria-labelledby="bio-tab"#end>
1237:                                     <div class="$classTabPaneContent synopsis">
1238:                                         <h5 class="bio-tabbed-content-heading">Bio</h5>
1239:                                         #if ($hasSynopsis)
1240:                                           $synopsis
1241:                                         #elseif ($hasBioBrief)
1242:                                           $website.include("$bioBriefURL")
1243:                                         #end
1244:                                     </div>
1245:                                 </div> ## tab-panel
1246:                             #end
1247: 
1248:                             ## STATS
1249:                             #if ($statsURL.length() > 0)
1250: 
1251:                                 ## PROFILE
1252:                                 #set ($class = "tab-panel")
1253:                                 #if ($view == "profile")
1254:                                    #set ($class = "tab-panel active show")
1255:                                 #end
1256: 
1257:                                 <div class="tab-pane fade ${class}" id="profile" role="tabpanel" aria-labelledby="profile-tab">
1258:                                     <div class="$classTabPaneContent stats-wrap">
1259:                                         <div class="d-flex flex-column flex-md-row align-items-top justify-content-center gap-3">
1260:                                             <div class="season-stats-overview flex-grow-1 flex-shrink-1 col-12 col-md-6">
1261:                                                 <div class="container-fluid p-0">
1262:                                                     <div class="bio-tabbed-content-heading h5">Player statistics</div>
1263:                                                     ## RANKING
1264:                                                     <div class="stats-box mb-3">
1265:                                                         #if ($statPos.length() > 0)
1266:                                                             $website.include("players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
1267:                                                         #end
1268:                                                     </div>
1269:                                                 </div>
1270:                                             </div>
1271: 
1272:                                             ## LAST SIX GAMES
1273:                                             <div class="recent-games-list flex-grow-1 flex-shrink-1 col-12 col-md-6">
1274:                                                 <div class="container-fluid p-0">
1275:                                                     <div class="bio-tabbed-content-heading h5">Recent results</div>
1276:                                                     <div class="stats-box mb-3">
1277:                                                         #printRecentGames()
1278:                                                     </div>
1279:                                                 </div>
1280:                                             </div>
1281: 
1282:                                         </div>
1283:                                     </div> ## stats-wrap
1284:                                 </div> ## tab-content
1285: 
1286:                                 ## GAMELOG
1287:                                 #set ($class = "tab-panel")
1288:                                 #if ($view == "gamelog")
1289:                                    #set ($class = "tab-panel active show")
1290:                                 #end
1291: 
1292:                                 #set ($activePos = $statPos)
1293:                                 #if ($view == "gamelog" && $paramPos.length() > 0)
1294:                                     #if ($positions.get($paramPos).length() > 0)
1295:                                         #set ($activePos = $positions.get($paramPos))
1296:                                     #end
1297:                                 #end
1298: 
1299:                                 <div class="tab-pane fade ${class}" id="gamelog" role="tabpanel" aria-labelledby="gamelog-tab">
1300:                                     #if ($gamelogsCategoriesLabels)
1301:                                         <div class="$classTabPaneContent has-child-tabs">
1302:                                             <div class="d-flex flex-row text-nowrap align-items-center justify-content-center">
1303:                                                 <div class="secondary-tab-select-container flex-fill">
1304:                                                     <select class="tab-nav-select-helper form-select" id="bio-tabs-gamelog-select" aria-label="Choose a stat group">
1305:                                                         #foreach($briefCat in $gamelogsCategoriesLabels.entrySet())
1306:                                                             #set ($briefCatLabel = $briefCat.value)
1307:                                                             #set ($briefCatKey = $briefCat.key)
1308:                                                             #if ($locale == "en_gb" && $briefCatLabel == "Defense")
1309:                                                                 #set ($briefCatLabel = "Defence")
1310:                                                             #end
1311:                                                             <option value="#gamelog-tab-pos-${briefCatKey}-content" #if ($pos == $briefCat.key || $foreach.first) selected #end>${briefCatLabel}</option>
1312:                                                         #end
1313:                                                     </select>
1314:                                                     <script>
1315:                                                         $('.tab-nav-select-helper').on('change', function(e) {
1316:                                                             var id = $(this).val();
1317:                                                             $('a[data-bs-target="' + id + '"]').tab('show');
1318:                                                         });
1319:                                                     </script>
1320:                                                 </div>
1321:                                             </div>
1322:                                             <div class="$classBioTabChildrenWrapper" data-momentum="false">
1323:                                                 <ul class="$classBioTabChildren" id="bio-tabs-gamelog" role="tablist">
1324:                                                     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
1325:                                                         #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
1326:                                                         #set ($gamelogsCatLabelKey = $gamelogsCatLabel.key)
1327:                                                         #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
1328:                                                             #set($gamelogsCatLabelVal = "Defence")
1329:                                                         #end
1330:                                                         <li class="nav-item flex-fill flex-md-grow-0 flex-md-shrink-0" role="presentation">
1331:                                                             <a data-bs-toggle="tab" id="gamelog-tab-pos-${gamelogsCatLabel.key}" class="nav-link#if ($activePos == $gamelogsCatLabel.key) active#end" data-bs-target="#gamelog-tab-pos-${gamelogsCatLabel.key}-content" href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}" role="tab" aria-label="Game Log: ${gamelogsCatLabelVal}">$gamelogsCatLabelVal</a>
1332:                                                         </li>
1333:                                                     #end
1334:                                                 </ul>
1335:                                             </div>
1336:                                             <div class="tab-content py-3" id="gamelog-tab-content">
1337:                                                 #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
1338:                                                     #set ($class = "tab-panel")
1339:                                                     #if ($gamelogsCatLabel.key == $activePos)
1340:                                                        #set ($class = "tab-panel active show")
1341:                                                     #end
1342:                                                     <div class="tab-pane fade ${class}" id="gamelog-tab-pos-${gamelogsCatLabel.key}-content" role="tabpanel" aria-labelledby="gamelog-tab-pos-${gamelogsCatLabel.key}">
1343:                                                         <div class="stats-wrap $classTabPaneContentChild">
1344:                                                              <h5 class="bio-tabbed-content-heading visually-hidden">Game Log - <small class="text-muted"> $gamelogsCatLabel.value</small></h5></h4>
1345:                                                             #gamelogData($gamelogsCatLabel.key $gamelogsCatLabelVal)
1346:                                                         </div>
1347:                                                     </div>
1348:                                                 #end
1349:                                             </div>
1350:                                         </div>
1351:                                     #else
1352:                                         <div class="stats-wrap $classTabPaneContent">#gamelogData($pos "")</div>
1353:                                     #end
1354: 
1355:                                 </div> ## tab-panel
1356: 
1357:                                 ## CAREER
1358:                                 #if ($showCareer)
1359: 
1360:                                     #set ($activePos = $statPos)
1361:                                     #if ($view == "career" && $paramPos.length() > 0)
1362:                                         #if ($positions.get($paramPos).length() > 0)
1363:                                             #set ($activePos = $positions.get($paramPos))
1364:                                         #end
1365:                                     #end
1366: 
1367:                                     #set ($class = "tab-panel")
1368:                                     #if ($view == "career")
1369:                                        #set ($class = "tab-panel active show")
1370:                                     #end
1371: 
1372:                                     <div class="tab-pane fade ${class}" id="career" role="tabpanel" aria-labelledby="career-tab">
1373:                                         #if ($briefsCategoriesLabels)
1374:                                             #printCategories($briefsCategoriesLabels "career" "Career Stats")
1375:                                         #else
1376:                                             <div class="stats-wrap $classTabPaneContent">#careerData($activePos "")</div>
1377:                                         #end
1378:                                     </div>
1379:                                 #end
1380: 
1381:                                 ## SPLITS
1382:                                 #set ($class = "tab-panel clearfix")
1383:                                 #if ($view == "splits")
1384:                                    #set ($class = "tab-panel active show")
1385:                                 #end
1386: 
1387:                                 #set ($activePos = $statPos)
1388:                                 #if ($view == "splits" && $paramPos.length() > 0)
1389:                                     #if ($positions.get($paramPos).length() > 0)
1390:                                         #set ($activePos = $positions.get($paramPos))
1391:                                     #end
1392:                                 #end
1393: 
1394:                                 <div class="tab-pane fade ${class}" id="splits" role="tabpanel" aria-labelledby="splits-tab">
1395:                                     #if ($briefsCategoriesLabels)
1396:                                         #printCategories($briefsCategoriesLabels "splits" "Splits Stats")
1397:                                     #else
1398:                                         <div class="stats-wrap $classTabPaneContent">#splitsData($pos "")</div>
1399:                                     #end
1400:                                 </div>
1401:                             #end
1402: 
1403:                             ## HTML STATS
1404:                             #if ($hasHTMLStats)
1405:                                 #set ($class = "tab-panel clearfix")
1406:                                 #if ($view == "htmlstats")
1407:                                    #set ($class = "tab-panel active show")
1408:                                 #end
1409:                                 <div class="tab-pane fade ${class}" id="htmlstats" role="tabpanel" aria-labelledby="htmlstats-tab">
1410:                                     <div class="$classTabPaneContent">
1411:                                         <h5 class="bio-tabbed-content-heading">Other Stats</h5>
1412:                                         <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
1413:                                     </div>
1414:                                 </div>
1415:                             #end
1416: 
1417:                             ## NEWS
1418:                             #if ($releases.size() > 0)
1419:                                 #set ($class = "tab-panel clearfix")
1420:                                 #if ($view == "news")
1421:                                    #set ($class = "tab-panel active show")
1422:                                 #end
1423:                                 <div class="tab-pane fade ${class}" id="news" role="tabpanel" aria-labelledby="news-tab">
1424:                                     <div class="$classTabPaneContent">
1425:                                         <h5 class="bio-tabbed-content-heading">News mentions</h5>
1426:                                         #printReleases($releases, "article")
1427:                                     </div>
1428:                                 </div>
1429:                             #end
1430: 
1431:                             ## PHOTOS
1432:                             #if ($playerPhotos.size() > 0)
1433:                                 #set ($class = "tab-panel clearfix")
1434:                                 #if ($view == "photos")
1435:                                     #set ($class = "tab-panel active show clearfix")
1436:                                 #end
1437:                                 <div class="tab-pane fade ${class}" id="photos" role="tabpanel" aria-labelledby="photos-tab">
1438:                                     <div class="$classTabPaneContent">
1439:                                         <h5 class="bio-tabbed-content-heading">Photos</h5>
1440:                                         $website.includeAgain("${page.url}?tmpl=bio-photos-template")
1441:                                     </div>
1442:                                 </div>
1443:                             #end
1444: 
1445:                             ## VIDEOS
1446:                             #if ($playerVideos.size() > 0)
1447:                                 #set ($class = "tab-panel clearfix")
1448:                                 #if ($view == "videos")
1449:                                     #set ($class = "tab-panel active show clearfix")
1450:                                 #end
1451:                                 <div class="tab-pane fade ${class}" id="videos" role="tabpanel" aria-labelledby="videos-tab">
1452:                                     <div class="$classTabPaneContent">
1453:                                         <h5 class="bio-tabbed-content-heading">Videos</h5>
1454:                                         #printReleases($playerVideos, "video")
1455:                                     </div>
1456:                                 </div>
1457:                             #end
1458: 
1459:                             ## WEPLAYED MOMENTS - THIRD-PARTY SUPPORT PLUGIN
1460:                             #if (!$page.url.contains("/coaches") && $options.get("weplayed_addon_code"))
1461:                                 #set ($class = "tab-panel clearfix")
1462:                                 #if ($view == "weplayed")
1463:                                     #set ($class = "tab-panel active show clearfix")
1464:                                 #end
1465:                                 <div class="tab-pane fade ${class} weplayed-hide-no-data" id="weplayed-tab" role="tabpanel" aria-labelledby="weplayed-tab">
1466:                                     <div class="$classTabPaneContent">
1467:                                         <div data-weplayed-widget></div>
1468:                                     </div>
1469:                                 </div>
1470:                             #end
1471: 
1472:                         </div> ## tab-panels
1473:                     </div> ## tab-container
1474:                 </div>
1475:             </div> ## body
1476:         #end
1477:     </div>
1478: </div>
1479: 
1480: $wiki
1481: </div> ## ends bio-wrap
1482: 
1483: ## GLOBAL ADS SERVER
1484: #if ($website.ads.isAdvertisingEnabled('BIOS'))
1485:     $website.includeAgain("global-adserver-slots?adSlot=bios")
1486: #end
1487: