32 Victor Stewart
Victor Stewart
  • Height:
    6'2
  • Year:
    2020
  • Hometown:
    Boston, MA
  • High School:
    Leadership Academy
  • Position:
    Forward
  • gp
    24
  • pts/g
    3.5
  • fg %
    43.0
  • 3pt %
    20.0
  • ft %
    28.6
  • reb/g
    2.7
  • a/g
    0.5

Bio

2017-18- Appeared in 14 games last season for MCLA.  Averaged three points and three boards per game.

Played previously at Mesabi Range College in Minnesota where he was named most improved player

High School- Graduated from Boston Community Leadership Academy

Is the son of Victor Stewart and Simone Barker

Majoring in Sociology with a minor in Social Work at MCLA

Player Profile

Recent Games
Jan 26 Westfield St. W, 87-82
Jan 30 at Bridgewater St. L, 75-64
Feb 2 Worcester St. W, 80-72
Feb 6 at Fitchburg St. L, 94-73
Feb 13 Salem St. L, 87-79
Feb 16 at Framingham St. L, 82-74
  Overall Conf
Games 24 12
Games started 13 12
Minutes 323 207
Minutes per game 13.5 17.3
FG 40-93 29-65
FG Pct 43.0 44.6
3PT 3-15 3-15
3PT Pct 20.0 20.0
FT 2-7 2-4
FT Pct 28.6 50.0
Off rebounds 27 13
Def rebounds 37 20
Total rebounds 64 33
Rebounds per game 2.7 2.8
Personal fouls 51 34
Disqualifications 1 0
Assists 13 8
Turnovers 16 8
Assist to turnover ratio 0.8 1.0
Steals 8 7
Blocks 3 1
Points 85 63
Points per game 3.5 5.3
Points per 40 min 10.5 12.2

Game Log - Shooting

Date Opponent Score gs min fg pct 3pt pct ft pct pts
Nov 9 at John Jay L, 91-63 - 10 1-2 50.0 0-0 - 0-0 - 2
Nov 16 vs. Kean L, 75-73 - 12 2-2 100.0 0-0 - 0-1 0.0 4
Nov 17 vs. Framingham St. W, 90-81 - 10 1-1 100.0 0-0 - 0-0 - 2
Nov 20 at Williams L, 117-34 - 8 0-1 0.0 0-0 - 0-0 - 0
Nov 27 at Sage L, 102-88 - 3 0-1 0.0 0-0 - 0-0 - 0
Dec 1 at St. Joseph (Conn.) L, 108-63 - 10 1-1 100.0 0-0 - 0-0 - 2
Dec 4 Rensselaer L, 81-44 - 17 2-6 33.3 0-0 - 0-0 - 4
Dec 6 at Rivier W, 75-64 - 8 1-2 50.0 0-0 - 0-0 - 2
Dec 10 Union (N.Y.) W, 85-80 - 5 0-1 0.0 0-0 - 0-0 - 0
Dec 29 Norwich W, 78-69 - 5 0-1 0.0 0-0 - 0-0 - 0
Dec 31 SUNY Delhi L, 86-62 - 3 0-0 - 0-0 - 0-0 - 0
Jan 2 Southern Vt. L, 82-60 1 25 3-10 30.0 0-0 - 0-2 0.0 6
Jan 5 at Westfield St. L, 110-77 1 21 6-10 60.0 0-1 0.0 0-0 - 12
Jan 9 Bridgewater St. L, 94-63 1 16 1-3 33.3 0-0 - 0-0 - 2
Jan 12 at Worcester St. L, 86-68 1 32 4-10 40.0 1-4 25.0 0-0 - 9
Jan 16 Fitchburg St. L, 98-79 1 14 1-3 33.3 1-1 100.0 0-0 - 3
Jan 22 at Salem St. L, 103-77 1 14 3-5 60.0 0-0 - 0-0 - 6
Jan 24 Framingham St. L, 64-58 1 19 2-8 25.0 0-3 0.0 2-2 100.0 6
Jan 26 Westfield St. W, 87-82 1 14 2-3 66.7 0-0 - 0-0 - 4
Jan 30 at Bridgewater St. L, 75-64 1 13 2-4 50.0 0-0 - 0-2 0.0 4
Feb 2 Worcester St. W, 80-72 1 14 0-2 0.0 0-1 0.0 0-0 - 0
Feb 6 at Fitchburg St. L, 94-73 1 25 0-4 0.0 0-1 0.0 0-0 - 0
Feb 13 Salem St. L, 87-79 1 13 4-7 57.1 0-1 0.0 0-0 - 8
Feb 16 at Framingham St. L, 82-74 1 12 4-6 66.7 1-3 33.3 0-0 - 9

Game Log - Ball control

Date Opponent Score gs min off def reb ast to a/to stl blk pf dq
Nov 9 at John Jay L, 91-63 - 10 3 2 5 0 1 0.0 0 0 0 0
Nov 16 vs. Kean L, 75-73 - 12 0 2 2 0 0 - 0 0 5 1
Nov 17 vs. Framingham St. W, 90-81 - 10 2 2 4 2 1 2.0 0 0 1 0
Nov 20 at Williams L, 117-34 - 8 0 0 0 1 0 - 0 0 1 -
Nov 27 at Sage L, 102-88 - 3 1 1 2 0 0 - 0 0 1 0
Dec 1 at St. Joseph (Conn.) L, 108-63 - 10 0 0 0 0 1 0.0 0 0 1 -
Dec 4 Rensselaer L, 81-44 - 17 2 4 6 1 1 1.0 0 0 1 -
Dec 6 at Rivier W, 75-64 - 8 1 1 2 0 1 0.0 0 0 2 -
Dec 10 Union (N.Y.) W, 85-80 - 5 0 1 1 0 1 0.0 0 0 1 -
Dec 29 Norwich W, 78-69 - 5 0 2 2 0 0 - 0 1 1 -
Dec 31 SUNY Delhi L, 86-62 - 3 0 0 0 0 0 - 0 0 2 -
Jan 2 Southern Vt. L, 82-60 1 25 5 2 7 1 2 0.5 1 1 1 -
Jan 5 at Westfield St. L, 110-77 1 21 1 1 2 2 1 2.0 0 0 2 -
Jan 9 Bridgewater St. L, 94-63 1 16 2 2 4 0 2 0.0 0 0 4 -
Jan 12 at Worcester St. L, 86-68 1 32 0 5 5 0 0 - 0 0 2 -
Jan 16 Fitchburg St. L, 98-79 1 14 2 1 3 0 0 - 1 0 4 -
Jan 22 at Salem St. L, 103-77 1 14 0 1 1 0 1 0.0 0 1 4 -
Jan 24 Framingham St. L, 64-58 1 19 1 3 4 0 0 - 2 0 1 -
Jan 26 Westfield St. W, 87-82 1 14 0 1 1 1 1 1.0 1 0 3 -
Jan 30 at Bridgewater St. L, 75-64 1 13 1 2 3 0 0 - 0 0 0 0
Feb 2 Worcester St. W, 80-72 1 14 1 1 2 0 1 0.0 0 0 3 -
Feb 6 at Fitchburg St. L, 94-73 1 25 2 2 4 2 1 2.0 2 0 3 -
Feb 13 Salem St. L, 87-79 1 13 2 1 3 2 1 2.0 0 0 4 -
Feb 16 at Framingham St. L, 82-74 1 12 1 0 1 1 0 - 1 0 4 -

Career Stats - Shooting per game

  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
2017-18 14 - 9.1 1.2-2.7 44.7 0.0-0.1 0.0 0.1-0.2 33.3 2.5
2018-19 24 13 13.5 1.7-3.9 43.0 0.1-0.6 20.0 0.1-0.3 28.6 3.5
2019-20 7 1 3.6 0.6-1.9 30.8 0.0-0.4 0.0 0.3-0.3 100.0 1.4
Total 45 14 10.6 1.4-3.2 42.4 0.1-0.4 15.0 0.1-0.3 41.7 2.9

Career Stats - Shooting totals

  gp gs min fg pct 3pt pct ft pct pts
2017-18 14 - 128 17-38 44.7 0-2 0.0 1-3 33.3 35
2018-19 24 13 323 40-93 43.0 3-15 20.0 2-7 28.6 85
2019-20 7 1 25 4-13 30.8 0-3 0.0 2-2 100.0 10
Total 45 14 476 61-144 42.4 3-20 15.0 5-12 41.7 130

Career Stats - Shooting per 40 min

  gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
2017-18 14 - 9.1 5.3-11.9 44.7 0.0-0.6 0.0 0.3-0.9 33.3 10.9
2018-19 24 13 13.5 5.0-11.5 43.0 0.4-1.9 20.0 0.2-0.9 28.6 10.5
2019-20 7 1 3.6 6.4-20.8 30.8 0.0-4.8 0.0 3.2-3.2 100.0 16.0
Total 45 14 10.6 5.1-12.1 42.4 0.3-1.7 15.0 0.4-1.0 41.7 10.9

Career Stats - Ball control per game

  gp gs mpg off/g def/g reb/g pf/g dq/g ast/g to/g a/to stl/g blk/g
2017-18 14 - 9.1 1.4 1.6 2.9 1.7 0.0 0.4 0.6 0.7 0.1 0.3
2018-19 24 13 13.5 1.1 1.5 2.7 2.1 0.0 0.5 0.7 0.8 0.3 0.1
2019-20 7 1 3.6 0.7 0.1 0.9 0.6 0.0 0.0 0.1 0.0 0.0 0.0
Total 45 14 10.6 1.1 1.3 2.5 1.8 0.0 0.4 0.6 0.7 0.2 0.2

Career Stats - Ball control totals

  gp gs min off def reb pf dq ast to a/to stl blk
2017-18 14 - 128 19 22 41 24 0 6 9 0.7 2 4
2018-19 24 13 323 27 37 64 51 1 13 16 0.8 8 3
2019-20 7 1 25 5 1 6 4 0 0 1 0.0 0 0
Total 45 14 476 51 60 111 79 1 19 26 0.7 10 7

Career Stats - Ball control per 40 min

  gp gs mpg off/40 def/40 reb/40 pf/40 dq/40 ast/40 to/40 a/to stl/40 blk/40
2017-18 14 - 9.1 5.9 6.9 12.8 7.5 0.0 1.9 2.8 0.7 0.6 1.3
2018-19 24 13 13.5 3.3 4.6 7.9 6.3 0.1 1.6 2.0 0.8 1.0 0.4
2019-20 7 1 3.6 8.0 1.6 9.6 6.4 0.0 0.0 1.6 0.0 0.0 0.0
Total 45 14 10.6 4.3 5.0 9.3 6.6 0.1 1.6 2.2 0.7 0.8 0.6

Splits Stats - Shooting per game

    gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
Event Total 24 13 13.5 1.7-3.9 43.0 0.1-0.6 20.0 0.1-0.3 28.6 3.5
Conference 12 12 17.3 2.4-5.4 44.6 0.2-1.2 20.0 0.2-0.3 50.0 5.3
Exhibition - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -
Location Home 11 7 13.2 1.4-4.0 34.1 0.1-0.5 16.7 0.2-0.4 50.0 3.0
Away 11 6 14.2 2.0-4.2 47.8 0.2-0.8 22.2 0.0-0.2 0.0 4.2
Neutral 2 - 11.0 1.5-1.5 100.0 0.0-0.0 - 0.0-0.5 0.0 3.0
Result Wins 6 2 9.3 0.7-1.7 40.0 0.0-0.2 0.0 0.0-0.0 - 1.3
Losses 18 11 14.8 2.0-4.6 43.4 0.2-0.8 21.4 0.1-0.4 28.6 4.3
Month November 5 - 8.6 0.8-1.4 57.1 0.0-0.0 - 0.0-0.2 0.0 1.6
December 6 - 8.0 0.7-1.8 36.4 0.0-0.0 - 0.0-0.0 - 1.3
January 9 9 18.7 2.7-6.2 42.9 0.2-1.0 22.2 0.2-0.7 33.3 5.8
February 4 4 16.0 2.0-4.8 42.1 0.2-1.5 16.7 0.0-0.0 - 4.3

Splits Stats - Shooting totals

    gp gs min fg pct 3pt pct ft pct pts
Event Total 24 13 323 40-93 43.0 3-15 20.0 2-7 28.6 85
Conference 12 12 207 29-65 44.6 3-15 20.0 2-4 50.0 63
Exhibition - - - 0-0 - 0-0 - 0-0 - 0
Location Home 11 7 145 15-44 34.1 1-6 16.7 2-4 50.0 33
Away 11 6 156 22-46 47.8 2-9 22.2 0-2 0.0 46
Neutral 2 - 22 3-3 100.0 0-0 - 0-1 0.0 6
Result Wins 6 2 56 4-10 40.0 0-1 0.0 0-0 - 8
Losses 18 11 267 36-83 43.4 3-14 21.4 2-7 28.6 77
Month November 5 - 43 4-7 57.1 0-0 - 0-1 0.0 8
December 6 - 48 4-11 36.4 0-0 - 0-0 - 8
January 9 9 168 24-56 42.9 2-9 22.2 2-6 33.3 52
February 4 4 64 8-19 42.1 1-6 16.7 0-0 - 17

Splits Stats - Shooting per 40 min

    gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
Event Total 24 13 13.5 5.0-11.5 43.0 0.4-1.9 20.0 0.2-0.9 28.6 10.5
Conference 12 12 17.3 5.6-12.6 44.6 0.6-2.9 20.0 0.4-0.8 50.0 12.2
Exhibition - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -
Location Home 11 7 13.2 4.1-12.1 34.1 0.3-1.7 16.7 0.6-1.1 50.0 9.1
Away 11 6 14.2 5.6-11.8 47.8 0.5-2.3 22.2 0.0-0.5 0.0 11.8
Neutral 2 - 11.0 5.5-5.5 100.0 0.0-0.0 - 0.0-1.8 0.0 10.9
Result Wins 6 2 9.3 2.9-7.1 40.0 0.0-0.7 0.0 0.0-0.0 - 5.7
Losses 18 11 14.8 5.4-12.4 43.4 0.4-2.1 21.4 0.3-1.0 28.6 11.5
Month November 5 - 8.6 3.7-6.5 57.1 0.0-0.0 - 0.0-0.9 0.0 7.4
December 6 - 8.0 3.3-9.2 36.4 0.0-0.0 - 0.0-0.0 - 6.7
January 9 9 18.7 5.7-13.3 42.9 0.5-2.1 22.2 0.5-1.4 33.3 12.4
February 4 4 16.0 5.0-11.9 42.1 0.6-3.8 16.7 0.0-0.0 - 10.6

Splits Stats - Ball control per game

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