Page source: |
1: <script src="${website.cdn("/info/klass.min.js")}"></script>
2:
3: ## PICK UP OPTIONS
4: $website.include("options")
5: #set ($options = $request.getAttribute("options"))
6: #set ($locale = "en_us")
7: #set ($locale = $options.get("locale"))
8:
9: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
10: #set ($bioObject = $page.getDataAsObject())
11: #set ($statsURL = $bioObject.statsURL)
12: #if ($statsURL.length() > 0)
13: $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
14: ## various settings to get the variables set
15: #set ($events = $request.getAttribute("bio_events"))
16: #set ($seasons = $request.getAttribute("bio_seasons"))
17: #set ($career = $request.getAttribute("bio_career"))
18: #set ($labels = $request.getAttribute("bio_labels"))
19: #set ($briefs = $request.getAttribute("bio_briefs"))
20: #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
21: #set ($splits = $request.getAttribute("bio_splits"))
22: #set ($statPosition = $request.getAttribute("bio_position"))
23: #set ($positions = $request.getAttribute("bio_positions"))
24: #set ($playerId = $request.getAttribute("bio_player_id"))
25: #set ($highlights = $request.getAttribute("bio_highlights"))
26: #set ($formats = $request.getAttribute("bio_formats"))
27: #set ($gamelogsCategoriesLabels = $request.getAttribute("bio_gamelogs_labels"))
28: #set ($briefsCategoriesLabels = $request.getAttribute("bio_briefs_labels"))
29: #set ($gamesResults = $request.getAttribute("bio_games_results"))
30: #set ($monthsPlayed = $request.getAttribute("bio_months_played"))
31: #set ($rosterTransactions = $request.getAttribute("roster_transactions"))
32: #end
33: #set ($pos = "")
34: #if($attributes.get("position_stat"))
35: #set ($pos = $attributes.get("position_stat"))
36: #else
37: #set ($pos = $attributes.get("position"))
38: #set ($pos = $statPosition)
39: #set ($posVec = $pos.split("/"))
40: #set ($pos = $posVec[0])
41: #end
42: #set ($pos = $pos.toLowerCase())
43: #set ($statPos = $positions.get($pos))
44: #set ($paramPos = $request.getParameter("pos"))
45:
46: #set ($playerId = $attributes.get("playerId"))
47: #set ($stats = $splits.overall)
48: #set ($highlights = $highlights.get($statPos))
49:
50: #set ($showHighlights = true)
51: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
52: #set ($showHighlights = false)
53: #end
54:
55: #set ($enhancedLayout = false)
56: #if (($options.get("bio_enhanced_layout") == "yes") || ($request.getParameter("bio_enhanced_layout") == true))
57: #set ($enhancedLayout = true)
58: #end
59:
60: #set ($showActionShots = true)
61: #if ($options.get("bio_show_action_shots") && $options.get("bio_show_action_shots") == false)
62: #set ($showActionShots = false)
63: #end
64:
65: #set ($actionShotsLimit = 5)
66: #set ($actionShotsLimit = $tool.math.toInteger($options.get("bio_action_shots_limit")))
67:
68: #set ($showCareer = $wiki.valid() && $seasons)
69: #if ("yes" == $options.get("stats_show_career") && $seasons)
70: #set ($showCareer = true)
71: #end
72:
73: #set ($hasEvents = $events.size() > 0)
74: #set ($hasSynopsis = $synopsis.trim().length() > 0)
75: #set ($htmlStatsURL = "${page.url}-stats")
76: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
77: #set ($bioBriefURL = "${page.url}-brief")
78: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
79: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
80: #if ($options.get("bio_hide_roster") == true)
81: #set ($showRoster = false)
82: #end
83:
84: #set ($view = "")
85: #if ($hasSynopsis || $hasBioBrief)
86: #set ($view = "bio")
87: #elseif ($statsURL.length() > 0)
88: #set ($view = "profile")
89: #elseif ($hasHTMLStats)
90: #set ($view = "htmlstats")
91: #elseif ($releases.size() > 0)
92: #set ($view = "news")
93: #elseif ($playerPhotos.size() > 0)
94: #set ($view = "photos")
95: #elseif ($playerVideos.size() > 0)
96: #set ($view = "videos")
97: #end
98:
99: #if ($options.get("bio_default_view").length() > 0)
100: #set ($checkView = $options.get("bio_default_view"))
101: #else
102: ## THIS ESTABLISHES A DEFAULT TAB FOR NEW BOOTSTRAP THEMES
103: #if ($hasSynopsis || $hasBioBrief)
104: #set ($checkView = "bio")
105: #elseif ($statsURL.length() > 0)
106: #set ($checkView = "profile")
107: #elseif ($releases.size() > 0)
108: #set ($checkView = "news")
109: #end
110: #end
111:
112: #if ($request.getParameter("view"))
113: #set ($checkView = $request.getParameter("view"))
114: #end
115:
116: #if ($checkView == "profile" && $statsURL.length() > 0)
117: #set ($view = "profile")
118: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
119: #set ($view = "bio")
120: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
121: #set ($view = "gamelog")
122: #elseif ($checkView == "career" && $showCareer)
123: #set ($view = "career")
124: #elseif ($checkView == "splits" && $statsURL.length() > 0)
125: #set ($view = "splits")
126: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
127: #set ($view = "htmlstats")
128: #elseif ($checkView == "news" && $releases.size() > 0)
129: #set ($view = "news")
130: #elseif ($checkView == "photos" && $playerPhotos.size() > 0)
131: #set ($view = "photos")
132: #elseif ($checkView == "videos" && $playerVideos.size() > 0)
133: #set ($view = "videos")
134: #elseif ($checkView == "weplayed")
135: #set ($view = "weplayed")
136: #end
137:
138: #macro (printResultAriaLabel $event)
139: #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}")
140: #if ($event.neutralSite.length() > 0 || $event.home)
141: #set ($ariaLabel = "${ariaLabel} vs.")
142: #else
143: #set ($ariaLabel = "${ariaLabel} at")
144: #end
145: #set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:")
146: #if ($event.neutralSite.length() > 0)
147: #set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:")
148: #end
149: #set ($ariaLabel = "${ariaLabel} Box Score")
150: aria-label="$ariaLabel"
151: #end
152:
153: #macro (printGrid $items $type)
154: <div class="bio-news-mentions">
155: <div class="card-columns">
156: #foreach ($item in $items)
157: #if ($item.title.length() > 0)
158: <div class="card ${type}">
159: <a href="$item.url">
160: #if ($item.thumbnailURL)
161: <img src="${item.thumbnailURL}?max_width=510" alt="$item.thumbnailAlt" class="card-img-top img-fluid" />
162: #elseif ($item.contentType == "loki/youtube")
163: <img src="http://img.youtube.com/vi/${item.dataAsString}/mqdefault.jpg" alt="$item.thumbnailAlt" class="card-img-top img-fluid" />
164: #else
165: #if ($website.exists("/images/setup/default-article-thumbnail.png"))
166: <img src="/images/setup/default-article-thumbnail.png?max_width=510&max_height=287" class="card-img-top img-fluid" alt="$item.thumbnailAlt" />
167: #else
168: <img src="$website.cdn("/info/images/default-article-thumbnail.png?max_width=510&max_height=287")" class="card-img-top img-fluid" alt="$item.thumbnailAlt" />
169: #end
170: #end
171: </a>
172: <div class="card-body">
173: <h5 class="card-title"><a href="$item.url">$item.title</a></h5>
174: #if ($item.leadIn.length() > 0)
175: <p class="card-text">$formatter.limitLen(146, $item.leadIn)</p>
176: #end
177: #if ($item.date)
178: <p class="card-text"><small class="text-muted">$formatter.formatLongDate($item.date)</small></p>
179: #end
180: </div>
181: </div>
182: #end
183: #end ## foreach
184: </div>
185: </div>
186: #end ## ends macro
187:
188: #macro (gamelogData $p)
189:
190: #set ($p = $positions.get($p))
191: #set ($gamelogs = $gamelogs.get($p))
192:
193: #if ($hasEvents)
194: <div class="stats-box full clearfix">
195: <div class="table-responsive">
196: <table class="table table-hover table-sm">
197: <thead class="thead-dark">
198: <tr>
199: <th scope="col">Date</th>
200: <th scope="col" class="pinned-col">Opponent</th>
201: <th scope="col">Score</th>
202: #foreach ($gamelog in $gamelogs)
203: <th scope="col">$gamelog</th>
204: #end
205: </tr>
206: </thead>
207: <tbody>
208: #foreach ($event in $events)
209: <tr>
210: <td scope="row">$formatter.formatDate($event.event.date, "MMM d")</td>
211: <td class="pinned-col">
212: #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
213: $event.event.opponent.name
214: </td>
215: <td>
216: #if ($event.event.statusCode >= 0)
217: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
218: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
219: #else
220: ${event.event.APResult}
221: #end
222: #else #end
223: </td>
224: #foreach ($gamelog in $gamelogs.keySet())
225: #set ($value = "-")
226: #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
227: <td>$value</td>
228: #end
229: </tr>
230: #end
231: </tbody>
232: </table>
233: </div> ## table-responsive
234: </div> ## stats-box
235: #end
236:
237: #end ## macro gamelogData
238:
239: #macro (splitWithLabels $statPosBriefs $label $stats $rowSpan $rowSpanLabel)
240: <tr>
241: #if ($tool.math.toInteger($rowSpan) > 0)
242: <th rowspan="$rowSpan" scope="rowgroup">$rowSpanLabel</th>
243: #end
244:
245: <th scope="row" class="pinned-col">${label}</th>
246: #if($rosterTransactions && $v == "career")
247: #set($keys = $stats.names())
248: #set($array = $keys.toString().replace('"','').split(","))
249: #foreach ($brief in $statPosBriefs.keySet())
250: #set ($value = "-")
251: #if($array.contains($brief))
252: #set ($value = $!formatter.formatNumber($tool.math.toDouble($stats.get($brief)), $formats.get($brief)))
253: #end
254: <td>#if ($value.length() > 0) $value #else - #end</td>
255: #end
256: #else
257: #foreach ($brief in $statPosBriefs.keySet())
258: #set ($value = "-")
259: #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
260: <td>#if ($value.length() > 0) $value #else - #end</td>
261: #end
262: #end
263:
264: </tr>
265: #end
266:
267: #macro (careerData $p)
268: #set ($p = $positions.get($p))
269: #set ($statPosBriefs = $briefs.get($p))
270:
271: <div class="stats-box full clearfix">
272: <div class="table-responsive">
273: <table class="table table-hover table-sm">
274: <thead class="thead-dark">
275: <tr>
276: <th scope="col" class="pinned-col"> </th>
277: #foreach ($brief in $statPosBriefs)
278: <th scope="col">$brief</th>
279: #end
280: </tr>
281: </thead>
282: <tbody>
283: #if($rosterTransactions)
284: #set ($seasonLength = $career.seasons.length())
285: #foreach ($index in [0..$tool.math.sub($seasonLength, 1)])
286: #set($season = $career.seasons[$index])
287: #if($season.seasonStatsURL != "null")
288: #set ($label = "<a href='${season.seasonStatsURL}?view=profile'>$season.seasonName.replaceAll('^[^0-9-]*','') - $season.team.teamName</a>")
289: #else
290: #set ($label = "$season.seasonName.replaceAll('^[^0-9-]*','') - $season.team.teamName ")
291: #end
292: #splitWithLabels($statPosBriefs, $label, $season.player.stats, "", "")
293: #end
294: #splitWithLabels($statPosBriefs, "Total", $career.totals, "", "")
295: #else
296: #set ($careerTotals = $request.getAttribute("careerTotals"))
297: #set ($careerMap = $request.getAttribute("careerMap"))
298: #foreach ($season in $seasons)
299: ## Check if we did not get stats for this season
300: #if ($careerMap.get($season.seasonName))
301: #set ($label = "<a href='${season.path}?view=profile'>$season.seasonName</a>")
302: #splitWithLabels($statPosBriefs, $label, $careerMap[$season.seasonName], "", "")
303: #elseif ($wiki.valid())
304: <tr>
305: <td scope="row" class="text">${season.seasonName}</td>
306: <td colspan="${statPosBriefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
307: </tr>
308: #end
309: #end
310: #splitWithLabels($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall, "", "")
311: #end
312: </tbody>
313: </table>
314: </div> ## table-responsive
315: </div> ## stats-box
316:
317: #end ## macro careerData
318:
319: #macro (splitsData $p)
320:
321: #set ($p = $positions.get($p))
322: #set ($statPosBriefs = $briefs.get($p))
323: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1))
324:
325: #if ($statPosBriefs.size() > 0)
326: <div class="stats-box full clearfix">
327: <div class="table-responsive">
328: <table class="table table-hover table-sm">
329: <thead class="thead-dark">
330: <tr>
331: <th scope="col" class="pinned-col"> </th>
332: <th scope="col" class="pinned-col"> </th>
333: #foreach ($brief in $statPosBriefs)
334: <th scope="col">$brief</th>
335: #end
336: </tr>
337: </thead>
338:
339: <tbody>
340: #splitWithLabels($statPosBriefs, "Total", $splits.overall, "3", "Event")
341: #splitWithLabels($statPosBriefs, "Conference", $splits.conference, "", "")
342: #splitWithLabels($statPosBriefs, "Exhibition", $splits.exhibition, "", "")
343: </tbody>
344:
345: <tbody>
346: #splitWithLabels($statPosBriefs, "Home", $splits.home, "3", "Location")
347: #splitWithLabels($statPosBriefs, "Away", $splits.away, "", "")
348: #splitWithLabels($statPosBriefs, "Neutral", $splits.neutral, "", "")
349: </tbody>
350:
351: <tbody>
352: #set ($rowSpan = $gamesResults.entrySet().size())
353: #set ($rowSpanLabel = "Result")
354:
355: #foreach($gameResult in $gamesResults.entrySet())
356: #if ($gameResult.key == "wins")
357: #set ($splitGameResult = $splits.inWins)
358: #elseif ($gameResult.key == "losses")
359: #set ($splitGameResult = $splits.inLosses)
360: #elseif ($gameResult.key == "ties")
361: #set ($splitGameResult = $splits.inTies)
362: #end
363:
364: #splitWithLabels($statPosBriefs, $gameResult.value, $splitGameResult, $rowSpan, $rowSpanLabel)
365:
366: #set ($rowSpan = "")
367: #end
368: </tbody>
369:
370: #if ($monthsPlayed and $monthsPlayed.size() > 0)
371: <tbody>
372: #set ($rowSpan = $monthsPlayed.size())
373: #set ($rowSpanLabel = "Month")
374:
375: #foreach($month in $monthsPlayed)
376: #if ($month == 'January')
377: #set ($splitMonth = $splits.january)
378: #elseif ($month == 'February')
379: #set ($splitMonth = $splits.february)
380: #elseif ($month == 'March')
381: #set($splitMonth = $splits.march)
382: #elseif ($month == 'April')
383: #set($splitMonth = $splits.april)
384: #elseif ($month == 'May')
385: #set ($splitMonth = $splits.may)
386: #elseif ($month == 'June')
387: #set ($splitMonth = $splits.june)
388: #elseif ($month == 'July')
389: #set($splitMonth = $splits.july)
390: #elseif ($month == 'August')
391: #set ($splitMonth = $splits.august)
392: #elseif ($month == 'September')
393: #set($splitMonth = $splits.september)
394: #elseif ($month == 'October')
395: #set($splitMonth = $splits.october)
396: #elseif ($month == 'November')
397: #set ($splitMonth = $splits.november)
398: #elseif ($month == 'December')
399: #set($splitMonth = $splits.december)
400: #end
401:
402: #splitWithLabels($statPosBriefs, $month, $splitMonth, $rowSpan, $rowSpanLabel)
403:
404: #set ($rowSpan = "")
405:
406: #end ## foreach
407: </tbody>
408: #end
409: </table>
410: </div> ## table-responsive
411: </div> ## stats-box
412: #end
413:
414: #end ## macro splitsData
415:
416: #macro (printRecentGames)
417: #if ($hasEvents)
418: <div class="table-responsive">
419: <table class="table table-hover table-sm">
420: <thead class="thead-dark">
421: <tr><th colspan="3" scope="col">Recent Games</th></tr>
422: </thead>
423: <tbody>
424: #set ($eventEnd = -1)
425: #foreach ($event in $events)
426: #if ($event.event.result.resolved)
427: #set ($eventEnd = $velocityCount)
428: #end
429: #end
430:
431: #set ($eventStart = $eventEnd - 5)
432: #if ($eventStart < 0) #set ($eventStart = 0) #end
433:
434: #foreach ($event in $events)
435: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
436: <tr>
437: <td scope="row">$formatter.formatDate($event.event.date, "MMM d")</td>
438: <td>
439: #if ($event.event.neutralSite.length() > 0) vs.
440: #elseif (!$event.event.home) at
441: #else ## nothing for a home game
442: #end
443: $event.event.opponent.name
444: </td>
445: <td>
446: #if ($event.event.statusCode >= 0)
447: #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
448: <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
449: #else
450: ${event.event.APResult}
451: #end
452: #end
453: </td>
454: </tr>
455: #end ## if
456: #end
457: </tbody>
458: </table>
459: </div>
460: #end
461: #end ## macro printRecentGames
462:
463: #macro (printCategories $briefCategoryLabels $v $ariaLabel)
464: <div class="$classTabPaneContent has-child-tabs">
465: <div class="$classBioTabChildrenWrapper" data-momentum="false">
466: <div class="jscroll-inner">
467: <ul class="$classBioTabChildren" id="bio-tabs-$v" role="tablist">
468: #foreach($briefCat in $briefCategoryLabels.entrySet())
469: #set ($briefCatLabel = $briefCat.value)
470: #set ($briefCatKey = $briefCat.key)
471: #if ($locale == "en_gb" && $briefCatLabel == "Defense")
472: #set ($briefCatLabel = "Defence")
473: #end
474: <li class="nav-item">
475: <a data-toggle="tab" id="${v}-tab-pos-${briefCatKey}" class="nav-link#if ($activePos == $briefCatKey || $foreach.first) active#end" data-target="#${v}-tab-pos-${briefCatKey}-content" href="${page.url}?view=${v}&pos=${briefCatKey}" aria-label="${ariaLabel}: ${briefCatLabel}">${briefCatLabel}</a>
476: </li>
477: #end
478: </ul>
479: </div>
480: </div>
481: <div class="tab-content" id="${v}-tab-content">
482: #foreach ($briefCat in $briefCategoryLabels.entrySet())
483: #set ($briefCatLabel = $briefCat.value)
484: #set ($briefCatKey = $briefCat.key)
485: #set ($class = "tab-panel")
486: #if ($briefCat.key == $activePos || $foreach.first)
487: #set ($class = "tab-panel active show")
488: #end
489: <div class="tab-pane fade ${class}" id="${v}-tab-pos-${briefCatKey}-content" role="tabpanel" aria-labelledby="${v}-tab-pos-${briefCatKey}">
490: <div class="stats-wrap $classTabPaneContent">
491: <h4 class="bio-tabbed-content-heading">$ariaLabel - <small class="text-muted"> $briefCatLabel</small></h4>
492: #if ($v == "splits")
493: #splitsData($briefCat.key)
494: #elseif ($v == "career")
495: #careerData($briefCat.key)
496: #end
497: </div>
498: </div>
499: #end
500: </div>
501: </div>
502: #end ## macro printCategories
503:
504: #macro (printHeadshot)
505: #if ($enhancedLayout)
506: #set ($classPlayerPhoto = "img-fluid img-thumbnail")
507: #else
508: #set ($classPlayerPhoto = "img-fluid")
509: #end
510:
511: #if ($headshot.url)
512: #set ($src = $headshot.url)
513: #elseif ($website.exists("/images/setup/default-headshot.png"))
514: #set ($src = "/images/setup/default-headshot.png")
515: #elseif ($website.exists("/images/setup/headshot_default.jpg"))
516: #set ($src = "/images/setup/headshot_default.jpg")
517: #else
518: #set ($src = "/info/images/default-headshot.png")
519: #end
520:
521: #if ($src.trim().length() > 0)
522: <img src="$src?max_width=510&max_height=600" class="$classPlayerPhoto" alt="$fullName" />
523: #end
524: #end ## macro printHeadshot
525:
526: #set ($socialBrands = ["facebook", "twitter", "instagram", "youtube", "twitch", "tiktok"])
527: #macro (buildSocialLink $brand $handle $icons $class)
528: #if($brand == "facebook")
529: #set($socialHost = "https://www.facebook.com")
530: #elseif($brand == "twitter")
531: #set($socialHost = "https://twitter.com")
532: #elseif($brand == "instagram")
533: #set($socialHost = "https://www.instagram.com")
534: #elseif($brand == "tikTok")
535: #set($socialHost = "https://www.tiktok.com")
536: #elseif($brand == "twitch")
537: #set($socialHost = "https://www.twitch.tv")
538: #elseif($brand == "youtube")
539: #set($socialHost = "https://www.youtube.com")
540: #end
541:
542: #if($socialHost.length() > 0 )
543: #set($url = "${socialHost}/${handle}")
544: #elseif($brand == "nil")
545: #set($url = "${handle}")
546: #else
547: #set($url = "")
548: #end
549:
550: #set($icons = $Boolean.parseBoolean($icons))
551: #if($icons == true)
552: #set ($iconClass = $brand.toLowerCase())
553: #if ($iconClass == "twitter")
554: #set ($iconClass = "x-twitter")
555: #end
556: <a href="$url" class="$class" target="_blank"><span aria-label="$brand" class="fa fa-brands fa-${iconClass}"></span></a>
557: #else
558: <a href="$url" class="$class" target="_blank">$handle</a>
559: #end
560: #end
561:
562: #macro(playerHeading)
563: <div class="player-heading h3 bg-primary d-flex align-content-stretch text-white position-relative z-index-1">
564: #if ($!attributes.get("number").length() > 0)<span class="number bg-secondary inline-block text-white p-3">$!attributes.get("number")</span>#end
565: <span class="name inline-block w-100 flex-fill p-3">$fullName</span>
566: <span class="social-handle-link inline-block p-3">
567: <ul class="d-flex align-content-center h-100 gap-2 list-unstyled m-0">
568: #foreach ($field in $fields)
569: #if ($socialBrands.contains($field.key.toLowerCase()) && $attributes.get($field.key).length() > 0)
570: <li class="d-flex flex-column align-content-center justify-content-center">
571: #buildSocialLink($field.value.toLowerCase(), $!attributes.get($field.key), true, "btn btn-lg btn-link text-white p-0")
572: </li>
573: #end
574: #end
575: </ul>
576: </span>
577: </div>
578: #end
579:
580: #macro (printBioInfo)
581: #if ($enhancedLayout)
582: #set ($classListItems = "col-12 col-lg-6 px-2")
583: #set ($definitionListItems = "d-flex border-bottom m-0 p-2")
584: #else
585: #set ($classListItems = "col-12 px-2")
586: #set ($definitionListItems = "d-flex flex-row border-bottom m-0 p-2")
587: #end
588:
589: #if ($enhancedLayout)
590: #playerHeading
591: #end
592:
593: <div class="roster-player-fields">
594: <ul class="d-flex flex-row flex-wrap justify-content-between list-unstyled">
595: #foreach ($i in [1..10])
596: #set ($stickyKey = "bio_custom${i}_sticky")
597: #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
598: <li class="$classListItems bio-field-custom-sticky">
599: <dl class="${definitionListItems}">
600: <dt class="label p-0 mr-2 me-2 d-inline">$options.get($stickyKey): </dt>
601: <dd class="value p-0 m-0 d-inline text-muted">$!attributes.get("custom${i}")</dd>
602: </dl>
603: </li>
604: #end
605: #end
606:
607: #foreach ($field in $fields)
608: #if (!$field.key.startsWith("custom"))
609: #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
610: #if ($field.key == "phone1" || $field.key == "phone2")
611: <li class="$classListItems bio-field-standard">
612: <dl class="${definitionListItems}">
613: <dt class="label p-0 mr-2 me-2 d-inline">Phone: </dt>
614: <dd class="value p-0 m-0 d-inline text-muted">$!attributes.get($field.key)</dd>
615: </dl>
616: </li>
617: #elseif ($field.key == "email_address")
618: <li class="$classListItems bio-field-standard">
619: <dl class="${definitionListItems}">
620: #set ($emailAdd = $attributes.get($field.key))
621: <dt class="label p-0 mr-2 me-2 d-inline">Email: </dt>
622: <dd class="value p-0 m-0 text-truncate d-inline text-muted"><a href="mailto:${emailAdd}">$emailAdd</a></dd>
623: </dl>
624: </li>
625: #elseif ($field.key == "weight_class")
626: <li class="$classListItems bio-field-standard">
627: <dl class="${definitionListItems}">
628: <dt class="label p-0 mr-2 me-2 d-inline">Class: </dt>
629: <dd class="value p-0 m-0 d-inline text-muted">$!attributes.get($field.key)</dd>
630: </dl>
631: </li>
632: #elseif ($socialBrands.contains($field.value.toLowerCase()))
633: <li class="$classListItems bio-field-standard">
634: <dl class="${definitionListItems}">
635: <dt class="label p-0 mr-2 me-2 d-inline">$field.value: </dt>
636: <dd class="value p-0 m-0 d-inline text-muted">#buildSocialLink($field.value.toLowerCase(), $!attributes.get($field.key), false, "")</dd>
637: </dl>
638: </li>
639: #elseif ($field.key != "position_abbr")
640: <li class="$classListItems bio-field-standard">
641: <dl class="${definitionListItems}">
642: <dt class="label p-0 mr-2 me-2 d-inline">$field.value: </dt>
643: <dd class="value p-0 m-0 d-inline text-muted">$!attributes.get($field.key)</dd>
644: </dl>
645: </li>
646: #end
647: #end
648: #end
649: #end
650:
651: #foreach ($i in [1..10])
652: #set ($customKey = "bio_custom${i}")
653: #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
654: <li class="$classListItems bio-field-custom">
655: <dl class="${definitionListItems}">
656: <dt class="label p-0 mr-2 me-2">$options.get($customKey): </dt>
657: <dd class="value p-0 m-0 d-inline text-muted">$!attributes.get("custom${i}")</dd>
658: </dl>
659: </li>
660: #end
661: #end
662: </ul>
663: </div>
664: #end ## macro printBioInfo
665:
666: #macro (printActionShots)
667: #if ($showActionShots)
668: ## FILTERS OUT THE NUMBER OF ACTION PHOTOS
669: #set ($totalPhotoAvaiable = $playerPhotos.size())
670: #set ($playerPhotosFiltered = $playerPhotos)
671: #if ($actionShotsLimit < $totalPhotoAvaiable)
672: #set ($playerPhotosFiltered = $playerPhotos.subList(0, $actionShotsLimit))
673: #end
674: #set ($playerPhotosFiltered = $tool.sorter.sort($playerPhotosFiltered, "lastUpdated:desc"))
675: <div class="action-shots clearfix mb-md-n5 d-none d-sm-none d-md-block">
676: <div id="action-shots-carousel" class="carousel slide carousel-fade" data-interval="12000" data-ride="carousel">
677: <ol class="carousel-indicators pb-sm-3 mb-sm-5">
678: #foreach($photo in $playerPhotosFiltered)
679: <li data-target="#action-shots-carousel" data-slide-to="$foreach.index" class="#if ($foreach.index == 0)active#end"></li>
680: #end
681: </ol>
682: <div class="carousel-inner">
683: #foreach($photo in $playerPhotosFiltered)
684: #set ($imgAlt = "Large featured action photo of $fullName - Image $foreach.count")
685: #if ($photo.altText.length() > 0)
686: #set ($imgAlt = $photo.altText)
687: #elseif( $photo.title.length() > 0 )
688: #set ($imgAlt = $photo.title)
689: #end
690: <div class="carousel-item#if ($foreach.index == 0) active#end">
691: <img src="${photo.url}?max_width=1200" alt="$imgAlt" class="d-block w-100" data-lastupdated="$photo.lastUpdated" />
692: </div>
693: #end
694: </div>
695: </div>
696: </div>
697: #end
698: #end ## macro printActionShots
699:
700: #macro (printHighlights)
701: #if ($highlights && $showHighlights)
702: <div class="roster-bio-highlights mt-3 bg-white text-dark">
703: <ul class="d-flex flex-row flex-wrap justify-content-between list-unstyled m-0">
704: #foreach ($highlight in $highlights.keySet())
705: #set ($value = "-")
706: #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
707: <li class="flex-fill px-2 text-center border border-white bg-primary text-white">
708: <dl class="stat d-block m-0 p-2">
709: <dt class="d-block label p-0 m-0 text-uppercase">$!highlights.get($highlight)</dt>
710: <dd class="d-block value p-0 m-0">$value</dd>
711: </dl>
712: </li>
713: #end
714: </ul>
715: </div>
716: #end
717: #end ## macro printHighlights
718:
719: #macro (printRoster)
720: #if ($enhancedLayout)
721: $website.includeAgain("${page.url}?tmpl=roster-switcher-template&id=roster-list")
722: #else
723: #set ($id = "roster-switcher")
724: #if ($request.getParameter("id").length() > 0)
725: #set ($id = $request.getParameter("id"))
726: #end
727:
728: #if ($page.contentType == "loki/bio")
729: #set ($headlinesFeaturedSize = 0)
730: #foreach ($featuredPage in $page.headlinesFeatured)
731: #if ($featuredPage.contentType == "loki/headlines")
732: #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
733: #end
734: #end
735: #if ($headlinesFeaturedSize > 0)
736: <div id="$id" class="float-sm-right roster-switcher-template">
737: <div class="input-group mb-3">
738: <div class="input-group-prepend">
739: <label class="input-group-text" for="$id-options">Related Bios</label>
740: </div>
741: <select class="custom-select" id="$id-options" onchange="location=this.value;">
742: #foreach ($featuredPage in $page.headlinesFeatured)
743: #if ($featuredPage.contentType == "loki/headlines")
744: $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template¤t_url=${page.url}")
745: #end
746: #end
747: </select>
748: </div>
749: </div>
750: #end
751: #elseif ($page.contentType == "loki/bio-network")
752: #set ($relatedPlayers = $page.sectionPage.children)
753: #set ($teamNames = {})
754: #foreach ($relatedPlayer in $relatedPlayers)
755: #if ($relatedPlayer.contentType == "loki/bio-network")
756: #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
757: #set ($teamName = $relatedPlayerObj.get("team"))
758: #if ($teamName.length() > 0)
759: #if (!$teamNames.containsValue($teamName))
760: $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
761: #end
762: #end
763: #end
764: #end
765: <div id="$id" class="float-sm-right roster-switcher-template">
766: <div class="input-group mb-3">
767: <div class="input-group-prepend">
768: <label class="input-group-text" for="$id-options">Related Bios</label>
769: </div>
770: <select class="custom-select" id="$id-options" onchange="location=this.value;">
771: #foreach ($i in [1..$teamNames.size()])
772: #if ($teamNames.size() > 1)
773: <optgroup label="$teamNames.get($i)">
774: #end
775:
776: #foreach ($relatedPlayer in $relatedPlayers)
777: #if ($relatedPlayer.contentType == "loki/bio-network")
778: #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
779: #set ($teamName = $relatedPlayerObj.get("team"))
780: #if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
781: #set ($playerFirstName = $relatedPlayerObj.get("first_name"))
782: #set ($playerLastName = $relatedPlayerObj.get("last_name"))
783: <option value="$relatedPlayer.url" #if ($page.url == $relatedPlayer.url)selected#end>${playerFirstName} ${playerLastName}</option>
784: #end
785: #end
786: #end
787:
788: #if ($teamNames.size() > 1)
789: </optgroup>
790: #end
791: #end
792: </select>
793: </div>
794: </div>
795: #end
796: #end ## enhancedLayout check
797: #end ## macro printRoster
798:
799: ################################################## END MACROS #############################################################
800:
801: #if ($attributes.get("full_name").length() > 0)
802: #set ($fullName = $attributes.get("full_name"))
803: #else
804: #set ($firstName = $!attributes.get("first_name"))
805: #set ($lastName = $!attributes.get("last_name"))
806: #set ($fullName = "${firstName} ${lastName}")
807: #end
808:
809: #set ($pageTitle = "")
810: #if($request.getAttribute("pageTitle").length() > 0)
811: #set ($pageTitle = $request.getAttribute("pageTitle"))
812: #end
813: #if ($page.title.length() > 0)
814: #set ($pageTitle = $!page.title)
815: #end
816: $!request.setAttribute("pageTitle", "${pageTitle}")
817:
818: #set ($actionShots = false)
819: #if ($enhancedLayout && $playerPhotos.size() > 0)
820: #set ($actionShots = true)
821: #end
822:
823: #if ($enhancedLayout)
824: #set ($classRoot = "bio-enhanced")
825: #if ($actionShots && $showActionShots)
826: #set ($classRoot = "${classRoot} action")
827: #else
828: #set ($classRoot = "${classRoot} plain")
829: #end
830: #set ($classCard = "mb-5 bg-light p-3 col-sm-12 pt-md-0")
831: #set ($classBody = "col-sm-12")
832: #set ($classBioTabParentsWrapper = "nav-tabs-wrapper position-relative py-3 border-top border-bottom")
833: #set ($classBioTabParents = "nav nav-pills nav-tabs-responsive d-flex flex-row text-nowrap justify-content-center")
834: #set ($classBioTabChildrenWrapper = "nav-tabs-wrapper position-relative py-3 border-bottom")
835: #set ($classBioTabChildren = "nav nav-pills nav-tabs-responsive d-flex flex-row text-nowrap justify-content-center")
836: #set ($classTabPaneContent = "tab-pane-contents py-3")
837: #else
838: #set ($classRoot = "bio-wrap")
839: #set ($classCard = "mb-5 p-3 col-lg-4 col-xl-3 bg-light")
840: #set ($classBody = "col-lg-8 col-xl-9")
841: #set ($classBioTabParentsWrapper = "nav-tabs-wrapper position-relative")
842: #set ($classBioTabParents = "nav nav-tabs nav-tabs-responsive d-flex flex-row text-center justify-content-start")
843: #set ($classBioTabChildrenWrapper = "nav-tabs-wrapper position-relative")
844: #set ($classBioTabChildren = "nav nav-tabs nav-tabs-responsive d-flex flex-row text-center justify-content-start")
845: #set ($classTabPaneContent = "tab-pane-contents p-3")
846:
847: #end
848:
849: ## FULL ROSTER
850: <div class="${classRoot} #if ($highlights) bio-wrap-has-highlights #end clearfix">
851:
852: ## RELATED BIOS
853: #if ($showRoster)
854: <div class="related-bios clearfix">#printRoster</div>
855: #end
856:
857: #if ($actionShots)
858: #printActionShots
859: #end
860: #if ($enhancedLayout)
861: #else
862: #playerHeading
863: #end
864:
865: <div class="container">
866: <div class="row">
867: <div class="bio-card ${classCard}">
868: <div class="player-about clearfix">
869: #if ($enhancedLayout)
870: <div class="row no-gutters">
871: <div class="col-md-4 col-lg-3">
872: <div class="player-headshot text-center position-relative z-index-1 mt-md-n5">#printHeadshot</div>
873: </div>
874: <div class="col-md-8 col-lg-9">
875: <div class="player-info">#printBioInfo</div>
876: </div>
877: </div>
878: #else
879: <div class="row">
880: <div class="col-md-4 col-lg-12">
881: <div class="player-headshot text-center position-relative z-index-1 mb-3">#printHeadshot</div>
882: </div>
883: <div class="col-md-8 col-lg-12">
884: <div class="player-info mb-3">#printBioInfo</div>
885: </div>
886: </div>
887: #end
888: </div>
889: #printHighlights
890: </div> ## bio-card
891:
892: #if ($view.length() > 0)
893: $request.setAttribute("icl-responsive-tabs-script", true)
894:
895: <div class="bio-body ${classBody}">
896: <div class="tab-container">
897: #if ($statsURL.length() > 0 || $hasHTMLStats || $releases.size() > 0|| $playerPhotos.size() > 0 || $playerVideos.size() > 0)
898: <div class="$classBioTabParentsWrapper" data-momentum="false">
899: <div class="jscroll-inner">
900: <ul class="$classBioTabParents" id="bio-tabs-parents" role="tablist">
901: #if ($hasSynopsis || $hasBioBrief)
902: <li class="nav-item">
903: <a data-toggle="tab" id="bio-tab" class="nav-link #if ($view == "bio") active#end" data-target="#bio" href="${page.url}?view=bio">Bio</a>
904: </li>
905: #end
906:
907: #if ($statsURL.length() > 0)
908: <li class="nav-item">
909: <a data-toggle="tab" id="profile-tab" class="nav-link#if ($view == "profile") active#end" data-target="#profile" href="${page.url}?view=profile">Player Profile</a>
910: </li>
911: <li class="nav-item">
912: <a data-toggle="tab" id="gamelog-tab" class="nav-link#if ($view == "gamelog") active#end" data-target="#gamelog" href="${page.url}?view=gamelog">Game Log</a>
913: </li>
914: #if ($showCareer)
915: <li class="nav-item">
916: <a data-toggle="tab" id="career-tab" class="nav-link#if ($view == "career") active#end" data-target="#career" href="${page.url}?view=career">Career Stats</a>
917: </li>
918: #end
919: <li class="nav-item">
920: <a data-toggle="tab" id="splits-tab" class="nav-link#if ($view == "splits") active#end" data-target="#splits" href="${page.url}?view=splits">Split Stats</a>
921: </li>
922: #end
923:
924: #if ($hasHTMLStats)
925: <li class="nav-item">
926: <a data-toggle="tab" id="htmlstats-tab" class="nav-link#if ($view == "htmlstats") active#end" data-target="#htmlstats" href="${page.url}?view=htmlstats">HTML Stats</a>
927: </li>
928: #end
929:
930: #if ($releases.size() > 0)
931: <li class="nav-item">
932: <a data-toggle="tab" id="news-tab" class="nav-link#if ($view == "news") active#end" data-target="#news" href="${page.url}?view=news">News</a>
933: </li>
934: #end
935:
936: #if ($playerPhotos.size() > 0)
937: <li class="nav-item">
938: <a data-toggle="tab" id="photos-tab" class="nav-link#if ($view == "photos") active#end" data-target="#photos" href="${page.url}?view=photos">Photos</a>
939: </li>
940: #end
941:
942: #if ($playerVideos.size() > 0)
943: <li class="nav-item">
944: <a data-toggle="tab" id="videos-tab" class="nav-link#if ($view == "videos") active#end" data-target="#videos" href="${page.url}?view=videos">Videos</a>
945: </li>
946: #end
947:
948: ## WEPLAYED MOMENTS - THIRD-PARTY SUPPORT PLUGIN
949: #if (!$page.url.contains("/coaches") && $options.get("weplayed_addon_code"))
950: <li class="nav-item weplayed-hide-no-data #if ($view == "weplayed") active#end">
951: <a data-toggle="tab" id="weplayed-tab" class="nav-link#if ($view == "weplayed") active#end" data-target="#weplayed" href="${page.url}?view=weplayed">#Moments</a>
952: </li>
953: #end
954:
955: </ul>
956: </div>
957: </div>
958: #end
959: <div class="tab-content" id="roster-tab-content">
960: ## BIO
961: #if ($hasSynopsis || $hasBioBrief)
962: #set ($class = "tab-panel")
963: #if ($view == "bio")
964: #set ($class = "tab-panel active show")
965: #end
966:
967: <div class="tab-pane fade ${class}" id="bio" role="tabpanel" aria-labelledby="bio-tab">
968: <div class="$classTabPaneContent synopsis">
969: <h4 class="bio-tabbed-content-heading">Bio</h4>
970: #if ($hasSynopsis)
971: $synopsis
972: #elseif ($hasBioBrief)
973: $website.include("$bioBriefURL")
974: #end
975: </div>
976: </div> ## tab-panel
977: #end
978:
979: ## STATS
980: #if ($statsURL.length() > 0)
981:
982: ## PROFILE
983: #set ($class = "tab-panel")
984: #if ($view == "profile")
985: #set ($class = "tab-panel active show")
986: #end
987:
988: <div class="tab-pane fade ${class}" id="profile" role="tabpanel" aria-labelledby="profile-tab">
989: <div class="$classTabPaneContent stats-wrap">
990: <h4 class="bio-tabbed-content-heading">Player Profile</h4>
991: ## LAST SIX GAMES
992: <div class="row">
993: <div class="stats-box col-12">
994: #printRecentGames()
995: </div>
996:
997: ## RANKING
998: <div class="stats-box col-12">
999: #if ($statPos.length() > 0)
1000: $website.include("players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
1001: #end
1002: </div>
1003: </div>
1004: </div> ## stats-wrap
1005: </div> ## tab-content
1006:
1007: ## GAMELOG
1008: #set ($class = "tab-panel")
1009: #if ($view == "gamelog")
1010: #set ($class = "tab-panel active show")
1011: #end
1012:
1013: #set ($activePos = $statPos)
1014: #if ($view == "gamelog" && $paramPos.length() > 0)
1015: #if ($positions.get($paramPos).length() > 0)
1016: #set ($activePos = $positions.get($paramPos))
1017: #end
1018: #end
1019:
1020: <div class="tab-pane fade ${class}" id="gamelog" role="tabpanel" aria-labelledby="gamelog-tab">
1021: #if ($gamelogsCategoriesLabels)
1022: <div class="$classTabPaneContent has-child-tabs">
1023: <div class="$classBioTabChildrenWrapper" data-momentum="false">
1024: <div class="jscroll-inner">
1025: <ul class="$classBioTabChildren" id="bio-tabs-gamelog" role="tablist">
1026: #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
1027: #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
1028: #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
1029: #set($gamelogsCatLabelVal = "Defence")
1030: #end
1031: <li class="nav-item">
1032: <a data-toggle="tab" id="gamelog-tab-pos-${gamelogsCatLabel.key}" class="nav-link#if ($activePos == $gamelogsCatLabel.key) active#end" data-target="#gamelog-tab-pos-${gamelogsCatLabel.key}-content" href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}" aria-label="Game Log: ${gamelogsCatLabelVal}">$gamelogsCatLabelVal</a>
1033: </li>
1034: #end
1035: </ul>
1036: </div>
1037: </div>
1038: <div class="tab-content" id="gamelog-tab-content">
1039: #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
1040: #set ($class = "tab-panel")
1041: #if ($gamelogsCatLabel.key == $activePos)
1042: #set ($class = "tab-panel active show")
1043: #end
1044: <div class="tab-pane fade ${class}" id="gamelog-tab-pos-${gamelogsCatLabel.key}-content" role="tabpanel" aria-labelledby="gamelog-tab-pos-${gamelogsCatLabel.key}">
1045: <div class="stats-wrap $classTabPaneContent">
1046: <h4 class="bio-tabbed-content-heading">Game Log - <small class="text-muted"> $gamelogsCatLabel.value</small></h4></h4>
1047: #gamelogData($gamelogsCatLabel.key)
1048: </div>
1049: </div>
1050: #end
1051: </div>
1052: </div>
1053: #else
1054: <div class="stats-wrap $classTabPaneContent">#gamelogData($pos)</div>
1055: #end
1056:
1057: </div> ## tab-panel
1058:
1059: ## CAREER
1060: #if ($showCareer)
1061:
1062: #set ($activePos = $statPos)
1063: #if ($view == "career" && $paramPos.length() > 0)
1064: #if ($positions.get($paramPos).length() > 0)
1065: #set ($activePos = $positions.get($paramPos))
1066: #end
1067: #end
1068:
1069: #set ($class = "tab-panel")
1070: #if ($view == "career")
1071: #set ($class = "tab-panel active show")
1072: #end
1073:
1074: <div class="tab-pane fade ${class}" id="career" role="tabpanel" aria-labelledby="career-tab">
1075: #if ($briefsCategoriesLabels)
1076: #printCategories($briefsCategoriesLabels "career" "Career Stats")
1077: #else
1078: <div class="stats-wrap $classTabPaneContent">#careerData($activePos)</div>
1079: #end
1080: </div>
1081: #end
1082:
1083: ## SPLITS
1084: #set ($class = "tab-panel clearfix")
1085: #if ($view == "splits")
1086: #set ($class = "tab-panel active show")
1087: #end
1088:
1089: #set ($activePos = $statPos)
1090: #if ($view == "splits" && $paramPos.length() > 0)
1091: #if ($positions.get($paramPos).length() > 0)
1092: #set ($activePos = $positions.get($paramPos))
1093: #end
1094: #end
1095:
1096: <div class="tab-pane fade ${class}" id="splits" role="tabpanel" aria-labelledby="splits-tab">
1097: #if ($briefsCategoriesLabels)
1098: #printCategories($briefsCategoriesLabels "splits" "Splits Stats")
1099: #else
1100: <div class="stats-wrap $classTabPaneContent">#splitsData($pos)</div>
1101: #end
1102: </div>
1103: #end
1104:
1105: ## HTML STATS
1106: #if ($hasHTMLStats)
1107: #set ($class = "tab-panel clearfix")
1108: #if ($view == "htmlstats")
1109: #set ($class = "tab-panel active show")
1110: #end
1111: <div class="tab-pane fade ${class}" id="htmlstats" role="tabpanel" aria-labelledby="htmlstats-tab">
1112: <div class="$classTabPaneContent">
1113: <h4 class="bio-tabbed-content-heading">Other Stats</h4>
1114: <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
1115: </div>
1116: </div>
1117: #end
1118:
1119: ## NEWS
1120: #if ($releases.size() > 0)
1121: #set ($class = "tab-panel clearfix")
1122: #if ($view == "news")
1123: #set ($class = "tab-panel active show")
1124: #end
1125: <div class="tab-pane fade ${class}" id="news" role="tabpanel" aria-labelledby="news-tab">
1126: <div class="$classTabPaneContent">
1127: <h4 class="bio-tabbed-content-heading">News Mentions</h4>
1128: #printGrid($releases, "article")
1129: </div>
1130: </div>
1131: #end
1132:
1133: ## PHOTOS
1134: #if ($playerPhotos.size() > 0)
1135: #set ($class = "tab-panel clearfix")
1136: #if ($view == "photos")
1137: #set ($class = "tab-panel active clearfix")
1138: #end
1139: <div class="tab-pane fade ${class}" id="photos" role="tabpanel" aria-labelledby="photos-tab">
1140: <div class="$classTabPaneContent">
1141: <h4 class="bio-tabbed-content-heading">Photos</h4>
1142: $website.includeAgain("${page.url}?tmpl=bio-photos-template")
1143: </div>
1144: </div>
1145: #end
1146:
1147: ## VIDEOS
1148: #if ($playerVideos.size() > 0)
1149: #set ($class = "tab-panel clearfix")
1150: #if ($view == "videos")
1151: #set ($class = "tab-panel active clearfix")
1152: #end
1153: <div class="tab-pane fade ${class}" id="videos" role="tabpanel" aria-labelledby="videos-tab">
1154: <div class="$classTabPaneContent">
1155: <h4 class="bio-tabbed-content-heading">Videos</h4>
1156: #printGrid($playerVideos, "video")
1157: </div>
1158: </div>
1159: #end
1160:
1161: ## WEPLAYED MOMENTS - THIRD-PARTY SUPPORT PLUGIN
1162: #if (!$page.url.contains("/coaches") && $options.get("weplayed_addon_code"))
1163: #set ($class = "tab-panel clearfix")
1164: #if ($view == "weplayed")
1165: #set ($class = "tab-panel active clearfix")
1166: #end
1167: <div class="tab-pane fade ${class} weplayed-hide-no-data" id="weplayed-tab" role="tabpanel" aria-labelledby="weplayed-tab">
1168: <div class="$classTabPaneContent">
1169: <div data-weplayed-widget></div>
1170: </div>
1171: </div>
1172: #end
1173:
1174: </div> ## tab-panels
1175: </div> ## tab-container
1176: </div> ## body
1177: #end
1178: </div>
1179: </div>
1180:
1181: $wiki
1182: </div> ## ends bio-wrap
1183:
1184: ## GLOBAL ADS SERVER
1185: #if ($website.ads.isAdvertisingEnabled('BIOS'))
1186: $website.includeAgain("global-adserver-slots?adSlot=bios")
1187: #end
|