2 Jimmy Holman
2 - Jimmy Holman
Height: 6-0
Weight: 175
Year: Sr.
Hometown: Ann Arbor, Mich.
High School: Pioneer
Position: G
Major: Finance
gp 25
pts/g 12.7
fg % 40.3
3pt % 37.6
ft % 68.4
reb/g 1.6
a/g 3.8

Career & Season Highs:

Season

 

Career

21 (at Baldwin Wallace 11/17/15)

Points

24 (vs Baldwin Wallace 11/28/12

9 (at Allegheny 11/21/15)

Field Goals

10 (vs Baldwin Wallace 11/28/12)

5 (2x)

3-pt Field Goals

5 (3x)

5 (2x)

Rebounds

6 (at Brandeis 2/7/14)

10 (vs Chicago 1/17/16)

Assists

11 (vs NYU 2/2/14)

1 (3x)

Blocks

2 (vs Chicago 2/6/15)

2 (4x)

Steals

4 (at Baldwin Wallace 11/19/13)


2015-16: Named an honorable mention to the All-University Athletic Association Team… Finished his career as a Spartan as the program’s all-time assist leader with 446… Broke the record on January 22nd at the University of Rochester, collecting five assists in the game to surpass former Spartan Jim Fox’s (1993-97) record of 403 over his career… Was ranked third among active DIII players and 30th among all active NCAA players in Assist Turnover Ratio (2.07), seventh among active DIII players and 59th among all active NCAA players in assists, and 23rd among active DIII players and 106th among all active NCAA players in assist average (4.51) at the end of his career… Started all 25 games during the season, finishing the year with 12.7 points per game and a team-best 3.8 assists per game (fifth in the UAA)… Shot 40.3% from the field, including a mark of 37.6% from long range… Hit at least one three-point shot in 23 of the team’s 25 games and had 17 double-figure scoring efforts… Scored a season-high 21 points during the team’s 88-83 win over Baldwin Wallace on November 17th… Added a 20-point effort against Adrian on December 5th… Notched a double-double with 16 points and a season-high 10 assists against Chicago on January 17th… Was named to the Stephanie Tubbs Jones Memorial All-Tournament Team after averaging 15.5 points over the two tournament games… Was also named to Greg Richards All-Tournament Team after scoring 18.5 points per game during the two contests at the event… UAA All-Academic honoree.

2014-15: Played in all 25 games for the Spartans, including 24 in a starting role…led the team with 4.9 assists per game…fourth among CWRU scorers with 7.1 points per game…shot 87.1% (27-for-31) from the free throw line during the year…second among UAA players in assist to turnover ratio (2.51)…named the Most Valuable Player of the Sudeck Holiday Tournament after averaging 7.5 points, 4.5 rebounds and 7.5 assists during wins over Geneva and Trine…scored a season-high 18 points against Chicago on February 6, one of six double-digit scoring efforts during the year…Had five or more assists in 14 games, including a 10-assist game against Geneva on December 29…named to the NABC honors court for his athletic and academic achievements during the year.

2013-14: Started all 25 games at point guard…averaged 8.2 points and a UAA-best 5.7 assists per game…scored a season-high 19 points versus Rochester on February 14…dished out a career-high 11 assists – two shy of tying a school record – against NYU on February 2…pulled down a career-high six rebounds at Brandeis on February 7…shot 3-for-3 from beyond the arc in a 17-point, seven-rebound effort at Baldwin Wallace on November 19. 

2012-13: Played in 24-of-25 games and started six of the last seven at point guard as a freshman…averaged 6.5 points and ranked first on the team and fifth in the UAA at 3.6 assists per game…ranked seventh in the UAA with a 1.3 assist-to-turnover ratio…scored a career-high 24 points on 10-of-18 shooting from the field versus Baldwin Wallace on November 28…recorded a season-high seven assists versus Albion on December 29 and tallied five or more assists in a game seven times…grabbed five rebounds in a game twice…went 4-for-4 from the free throw line versus Albion. 

Personal: Earned three varsity letters at Ann Arbor Pioneer High School…three-time All-Michigan High School Athletic Association Southeastern Conference selection…son of Jim and Maggie Holman.

Recent Games
Feb 7 New York U. L, 80-79
Feb 12 at Washington (Mo.) L, 107-98
Feb 14 at Chicago L, 89-72
Feb 19 Rochester (N.Y.) L, 99-92
Feb 21 Emory W, 88-78
Feb 27 at Carnegie Mellon W, 93-87
Statistics category Overall Conf
Games 25 14
Games started 25 14
Minutes 762 424
Minutes per game 30.5 30.3
FG 123-305 58-173
FG Pct 40.3 33.5
3PT 59-157 26-86
3PT Pct 37.6 30.2
FT 13-19 11-13
FT Pct 68.4 84.6
Off rebounds 4 3
Def rebounds 35 25
Total rebounds 39 28
Rebounds per game 1.6 2.0
Personal fouls 37 18
Disqualifications 0 0
Assists 94 64
Turnovers 31 18
Assist to turnover ratio 3.0 3.6
Steals 17 11
Blocks 3 2
Points 318 153
Points per game 12.7 10.9
Points per 40 min 16.7 14.4
Date Opponent Score gs min fg pct 3pt pct ft pct pts
Nov 13 Goucher W, 79-58 1 26 5-11 45.5 2-6 33.3 0-0 - 12
Nov 14 Brooklyn L, 92-79 1 31 7-11 63.6 5-7 71.4 0-0 - 19
Nov 17 at Baldwin Wallace W, 88-83 1 37 8-12 66.7 5-7 71.4 0-1 0.0 21
Nov 20 vs. Fredonia W, 85-74 1 34 7-12 58.3 4-7 57.1 0-1 0.0 18
Nov 21 at Allegheny W, 96-79 1 34 9-20 45.0 1-9 11.1 0-0 - 19
Nov 24 Denison L, 80-79 1 30 3-9 33.3 2-5 40.0 0-0 - 8
Dec 5 Adrian L, 70-64 1 36 8-19 42.1 4-10 40.0 0-0 - 20
Dec 29 Kalamazoo W, 118-100 1 27 5-9 55.6 3-5 60.0 0-0 - 13
Dec 30 Otterbein W, 91-83 1 34 7-16 43.8 3-8 37.5 0-2 0.0 17
Jan 2 at Penn St.-Behrend L, 99-77 1 10 1-1 100.0 1-1 100.0 0-0 - 3
Jan 6 at Muskingum W, 106-101 1 39 5-12 41.7 3-6 50.0 2-2 100.0 15
Jan 9 Carnegie Mellon W, 94-81 1 30 3-10 30.0 0-3 0.0 2-2 100.0 8
Jan 15 Washington (Mo.) L, 96-80 1 34 8-19 42.1 2-7 28.6 0-0 - 18
Jan 17 Chicago L, 112-100 1 35 6-16 37.5 4-10 40.0 0-0 - 16
Jan 22 at Rochester (N.Y.) L, 108-79 1 26 4-10 40.0 2-6 33.3 3-4 75.0 13
Jan 24 at Emory L, 86-82 1 33 1-8 12.5 1-4 25.0 0-0 - 3
Jan 29 at Brandeis W, 84-80 1 29 2-10 20.0 0-5 0.0 0-0 - 4
Jan 31 at New York U. L, 100-82 1 26 5-12 41.7 2-7 28.6 0-0 - 12
Feb 5 Brandeis W, 74-72 1 33 3-14 21.4 1-5 20.0 0-0 - 7
Feb 7 New York U. L, 80-79 1 26 6-12 50.0 3-6 50.0 0-0 - 15
Feb 12 at Washington (Mo.) L, 107-98 1 30 2-10 20.0 2-4 50.0 0-0 - 6
Feb 14 at Chicago L, 89-72 1 29 6-13 46.2 4-8 50.0 2-3 66.7 18
Feb 19 Rochester (N.Y.) L, 99-92 1 29 3-13 23.1 1-9 11.1 0-0 - 7
Feb 21 Emory W, 88-78 1 34 5-15 33.3 2-5 40.0 4-4 100.0 16
Feb 27 at Carnegie Mellon W, 93-87 1 30 4-11 36.4 2-7 28.6 0-0 - 10
Date Opponent Score gs min off def reb ast to a/to stl blk pf dq
Nov 13 Goucher W, 79-58 1 26 0 1 1 1 1 1.0 0 0 0 -
Nov 14 Brooklyn L, 92-79 1 31 0 1 1 4 3 1.3 0 0 4 -
Nov 17 at Baldwin Wallace W, 88-83 1 37 0 1 1 4 1 4.0 0 0 1 -
Nov 20 vs. Fredonia W, 85-74 1 34 0 1 1 3 1 3.0 1 0 1 -
Nov 21 at Allegheny W, 96-79 1 34 0 0 0 2 2 1.0 1 0 1 -
Nov 24 Denison L, 80-79 1 30 0 1 1 1 0 - 0 0 4 -
Dec 5 Adrian L, 70-64 1 36 1 0 1 3 1 3.0 2 0 1 -
Dec 29 Kalamazoo W, 118-100 1 27 0 1 1 5 1 5.0 0 1 2 -
Dec 30 Otterbein W, 91-83 1 34 0 2 2 2 0 - 1 0 3 -
Jan 2 at Penn St.-Behrend L, 99-77 1 10 0 1 1 1 0 - 0 0 0 -
Jan 6 at Muskingum W, 106-101 1 39 0 1 1 4 3 1.3 1 0 2 -
Jan 9 Carnegie Mellon W, 94-81 1 30 1 0 1 4 1 4.0 0 0 4 -
Jan 15 Washington (Mo.) L, 96-80 1 34 1 0 1 5 1 5.0 0 0 1 -
Jan 17 Chicago L, 112-100 1 35 1 0 1 10 1 10.0 2 0 2 -
Jan 22 at Rochester (N.Y.) L, 108-79 1 26 0 1 1 5 1 5.0 1 0 0 -
Jan 24 at Emory L, 86-82 1 33 0 5 5 3 0 - 1 0 1 -
Jan 29 at Brandeis W, 84-80 1 29 0 3 3 4 4 1.0 0 0 1 -
Jan 31 at New York U. L, 100-82 1 26 0 1 1 1 1 1.0 1 0 1 0
Feb 5 Brandeis W, 74-72 1 33 0 2 2 2 1 2.0 0 0 0 -
Feb 7 New York U. L, 80-79 1 26 0 1 1 1 0 - 2 0 2 -
Feb 12 at Washington (Mo.) L, 107-98 1 30 0 2 2 7 0 - 0 0 3 -
Feb 14 at Chicago L, 89-72 1 29 0 3 3 4 3 1.3 1 1 1 0
Feb 19 Rochester (N.Y.) L, 99-92 1 29 0 1 1 8 2 4.0 2 1 0 -
Feb 21 Emory W, 88-78 1 34 0 5 5 6 1 6.0 1 0 2 -
Feb 27 at Carnegie Mellon W, 93-87 1 30 0 1 1 4 2 2.0 0 0 0 -
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
2012-13 24 6 20.5 2.5-7.0 35.7 0.7-2.2 29.6 0.8-1.0 79.2 6.5
2013-14 25 25 29.8 3.2-8.4 37.6 0.6-1.8 36.4 1.2-1.7 69.8 8.2
2014-15 25 24 28.4 2.5-7.1 35.6 1.0-2.7 37.3 1.1-1.2 87.1 7.1
2015-16 25 25 30.5 4.9-12.2 40.3 2.4-6.3 37.6 0.5-0.8 68.4 12.7
Total 99 80 27.4 3.3-8.7 37.8 1.2-3.3 36.0 0.9-1.2 76.1 8.6
  gp gs min fg pct 3pt pct ft pct pts
2012-13 24 6 492 60-168 35.7 16-54 29.6 19-24 79.2 155
2013-14 25 25 744 79-210 37.6 16-44 36.4 30-43 69.8 204
2014-15 25 24 710 63-177 35.6 25-67 37.3 27-31 87.1 178
2015-16 25 25 762 123-305 40.3 59-157 37.6 13-19 68.4 318
Total 99 80 2708 325-860 37.8 116-322 36.0 89-117 76.1 855
  gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
2012-13 24 6 20.5 4.9-13.7 35.7 1.3-4.4 29.6 1.5-2.0 79.2 12.6
2013-14 25 25 29.8 4.2-11.3 37.6 0.9-2.4 36.4 1.6-2.3 69.8 11.0
2014-15 25 24 28.4 3.5-10.0 35.6 1.4-3.8 37.3 1.5-1.7 87.1 10.0
2015-16 25 25 30.5 6.5-16.0 40.3 3.1-8.2 37.6 0.7-1.0 68.4 16.7
Total 99 80 27.4 4.8-12.7 37.8 1.7-4.8 36.0 1.3-1.7 76.1 12.6
  gp gs mpg off/g def/g reb/g pf/g dq/g ast/g to/g a/to stl/g blk/g
2012-13 24 6 20.5 0.6 1.3 1.9 1.4 0.0 3.6 2.7 1.3 0.3 0.0
2013-14 25 25 29.8 0.4 2.1 2.4 1.9 0.0 5.7 2.8 2.0 0.4 0.0
2014-15 25 24 28.4 0.3 2.1 2.4 1.5 0.0 4.9 2.0 2.5 0.9 0.2
2015-16 25 25 30.5 0.2 1.4 1.6 1.5 0.0 3.8 1.2 3.0 0.7 0.1
Total 99 80 27.4 0.4 1.7 2.1 1.6 0.0 4.5 2.2 2.1 0.6 0.1
  gp gs min off def reb pf dq ast to a/to stl blk
2012-13 24 6 492 15 30 45 34 0 87 65 1.3 8 1
2013-14 25 25 744 9 52 61 48 0 142 70 2.0 11 1
2014-15 25 24 710 7 52 59 37 0 123 49 2.5 23 4
2015-16 25 25 762 4 35 39 37 0 94 31 3.0 17 3
Total 99 80 2708 35 169 204 156 0 446 215 2.1 59 9
  gp gs mpg off/40 def/40 reb/40 pf/40 dq/40 ast/40 to/40 a/to stl/40 blk/40
2012-13 24 6 20.5 1.2 2.4 3.7 2.8 0.0 7.1 5.3 1.3 0.7 0.1
2013-14 25 25 29.8 0.5 2.8 3.3 2.6 0.0 7.6 3.8 2.0 0.6 0.1
2014-15 25 24 28.4 0.4 2.9 3.3 2.1 0.0 6.9 2.8 2.5 1.3 0.2
2015-16 25 25 30.5 0.2 1.8 2.0 1.9 0.0 4.9 1.6 3.0 0.9 0.2
Total 99 80 27.4 0.5 2.5 3.0 2.3 0.0 6.6 3.2 2.1 0.9 0.1
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
Total 25 25 30.5 4.9-12.2 40.3 2.4-6.3 37.6 0.5-0.8 68.4 12.7
Conference 14 14 30.3 4.1-12.4 33.5 1.9-6.1 30.2 0.8-0.9 84.6 10.9
Exhibition - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -
-
Home 13 13 31.2 5.3-13.4 39.7 2.5-6.6 37.2 0.5-0.6 75.0 13.5
Away 11 11 29.4 4.3-10.8 39.5 2.1-5.8 35.9 0.6-0.9 70.0 11.3
Neutral 1 1 34.0 7.0-12.0 58.3 4.0-7.0 57.1 0.0-1.0 0.0 18.0
-
Wins 12 12 32.3 5.2-12.7 41.4 2.2-6.1 35.6 0.7-1.0 66.7 13.3
Losses 13 13 28.8 4.6-11.8 39.2 2.5-6.5 39.3 0.4-0.5 71.4 12.2
-
November 6 6 32.0 6.5-12.5 52.0 3.2-6.8 46.3 0.0-0.3 0.0 16.2
December 3 3 32.3 6.7-14.7 45.5 3.3-7.7 43.5 0.0-0.7 0.0 16.7
January 9 9 29.1 3.9-10.9 35.7 1.7-5.4 30.6 0.8-0.9 87.5 10.2
February 7 7 30.1 4.1-12.6 33.0 2.1-6.3 34.1 0.9-1.0 85.7 11.3
  gp gs min fg pct 3pt pct ft pct pts
Total 25 25 762 123-305 40.3 59-157 37.6 13-19 68.4 318
Conference 14 14 424 58-173 33.5 26-86 30.2 11-13 84.6 153
Exhibition - - - 0-0 - 0-0 - 0-0 - 0
-
Home 13 13 405 69-174 39.7 32-86 37.2 6-8 75.0 176
Away 11 11 323 47-119 39.5 23-64 35.9 7-10 70.0 124
Neutral 1 1 34 7-12 58.3 4-7 57.1 0-1 0.0 18
-
Wins 12 12 387 63-152 41.4 26-73 35.6 8-12 66.7 160
Losses 13 13 375 60-153 39.2 33-84 39.3 5-7 71.4 158
-
November 6 6 192 39-75 52.0 19-41 46.3 0-2 0.0 97
December 3 3 97 20-44 45.5 10-23 43.5 0-2 0.0 50
January 9 9 262 35-98 35.7 15-49 30.6 7-8 87.5 92
February 7 7 211 29-88 33.0 15-44 34.1 6-7 85.7 79
  gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
Total 25 25 30.5 6.5-16.0 40.3 3.1-8.2 37.6 0.7-1.0 68.4 16.7
Conference 14 14 30.3 5.5-16.3 33.5 2.5-8.1 30.2 1.0-1.2 84.6 14.4
Exhibition - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -
-
Home 13 13 31.2 6.8-17.2 39.7 3.2-8.5 37.2 0.6-0.8 75.0 17.4
Away 11 11 29.4 5.8-14.7 39.5 2.8-7.9 35.9 0.9-1.2 70.0 15.4
Neutral 1 1 34.0 8.2-14.1 58.3 4.7-8.2 57.1 0.0-1.2 0.0 21.2
-
Wins 12 12 32.3 6.5-15.7 41.4 2.7-7.5 35.6 0.8-1.2 66.7 16.5
Losses 13 13 28.8 6.4-16.3 39.2 3.5-9.0 39.3 0.5-0.7 71.4 16.9
-
November 6 6 32.0 8.1-15.6 52.0 4.0-8.5 46.3 0.0-0.4 0.0 20.2
December 3 3 32.3 8.2-18.1 45.5 4.1-9.5 43.5 0.0-0.8 0.0 20.6
January 9 9 29.1 5.3-15.0 35.7 2.3-7.5 30.6 1.1-1.2 87.5 14.0
February 7 7 30.1 5.5-16.7 33.0 2.8-8.3 34.1 1.1-1.3 85.7 15.0
  gp gs mpg off/g def/g reb/g pf/g dq/g ast/g to/g a/to stl/g blk/g
Total 25 25 30.5 0.2 1.4 1.6 1.5 0.0 3.8 1.2 3.0 0.7 0.1
Conference 14 14 30.3 0.2 1.8 2.0 1.3 0.0 4.6 1.3 3.6 0.8 0.1
Exhibition - - - - - - - - - - - - -
-
Home 13 13 31.2 0.3 1.2 1.5 1.9 - 4.0 1.0 4.0 0.8 0.2
Away 11 11 29.4 0.0 1.7 1.7 1.0 0.0 3.5 1.5 2.3 0.5 0.1
Neutral 1 1 34.0 0.0 1.0 1.0 1.0 - 3.0 1.0 3.0 1.0 0.0
-
Wins 12 12 32.3 0.1 1.5 1.6 1.4 - 3.4 1.5 2.3 0.4 0.1
Losses 13 13 28.8 0.2 1.3 1.5 1.5 0.0 4.1 1.0 4.1 0.9 0.2
-
November 6 6 32.0 0.0 0.8 0.8 1.8 - 2.5 1.3 1.9 0.3 0.0
There was a problem with a Velocity script
Pagebio-template
ErrorVM #split: too few arguments to macro. Wanted 5 got 3 at bio-template[line 346, column 5]
Page source:
1: $website.addCss($website.cdn("/info/photo-gallery.css"))
2: <script src="${website.cdn("/info/klass.min.js")}"></script>
3: <script src="${website.cdn("/info/code.photoswipe.jquery-3.0.5.min.js")}"></script>
4: <script src="${website.cdn("/info/masonry.pkgd.min.js")}"></script>
5: <script src="${website.cdn("/info/imagesloaded.pkgd.min.js")}"></script>
6: <script src="${website.cdn("/info/photogallery/photogallery.js")}"></script>
7: 
8: ## PICK UP OPTIONS
9: $website.include("options")
10: #set ($options = $request.getAttribute("options"))
11: #set ($locale = "en_us")
12: #set ($locale = $options.get("locale"))
13: 
14: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
15: #set ($bioObject = $page.getDataAsObject())
16: #set ($statsURL = $bioObject.statsURL)
17: 
18: #if ($statsURL.length() > 0)
19:   $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
20:   ## various settings to get the variables set
21:   #set ($events = $request.getAttribute("bio_events"))
22:   #set ($seasons = $request.getAttribute("bio_seasons"))
23:   #set ($career = $request.getAttribute("bio_career"))
24:   #set ($labels = $request.getAttribute("bio_labels"))
25:   #set ($briefs = $request.getAttribute("bio_briefs"))
26:   #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
27:   #set ($splits = $request.getAttribute("bio_splits"))
28:   #set ($statPosition = $request.getAttribute("bio_position"))
29:   #set ($positions = $request.getAttribute("bio_positions"))
30:   #set ($playerId = $request.getAttribute("bio_player_id"))
31:   #set ($highlights = $request.getAttribute("bio_highlights"))
32:   #set ($formats = $request.getAttribute("bio_formats"))
33:   #set ($gamelogsCategoriesLabels = $request.getAttribute("bio_gamelogs_labels"))
34:   #set ($briefsCategoriesLabels = $request.getAttribute("bio_briefs_labels"))
35:   #set ($gamesResults = $request.getAttribute("bio_games_results"))
36:   #set ($monthsPlayed = $request.getAttribute("bio_months_played"))
37: #end
38: 
39: #set ($pos = "")
40: #set ($pos = $attributes.get("position"))
41: #set ($pos = $statPosition)
42: #set ($posVec = $pos.split("/"))
43: #set ($pos = $posVec[0])
44: #set ($pos = $pos.toLowerCase())
45: #set ($statPos = $positions.get($pos))
46: #set ($paramPos = $request.getParameter("pos"))
47: 
48: #set ($playerId = $attributes.get("playerId"))
49: #set ($stats = $splits.overall)
50: #set ($highlights = $highlights.get($statPos))
51: 
52: #set ($showHighlights = true)
53: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
54: 	#set ($showHighlights = false)
55: #end
56: 
57: #set ($enhancedLayout = false)
58: #if (($options.get("bio_enhanced_layout") == "yes") || ($request.getParameter("bio_enhanced_layout") == true))
59: 	#set ($enhancedLayout = true)
60: 	$website.addCss($website.cdn("/info/bio-styles-enhanced.css"))
61: #end
62: 
63: #set ($showActionShots = true)
64: #if ($options.get("bio_show_action_shots") && $options.get("bio_show_action_shots") == false)
65: 	#set ($showActionShots = false)
66: #end
67: 
68: #set ($actionShotsLimit = 5)
69: #set ($actionShotsLimit = $tool.math.toInteger($options.get("bio_action_shots_limit")))
70: 
71: #set ($showCareer = $wiki.valid() && $seasons)
72: #if ("yes" == $options.get("stats_show_career") && $seasons)
73:   #set ($showCareer = true)
74: #end
75: 
76: #set ($hasEvents = $events.size() > 0)
77: #set ($hasSynopsis = $synopsis.trim().length() > 0)
78: #set ($htmlStatsURL = "${page.url}-stats")
79: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
80: #set ($bioBriefURL = "${page.url}-brief")
81: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
82: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
83: #if ($options.get("bio_hide_roster") == true)
84:   #set ($showRoster = false)
85: #end
86: 
87: #set ($view = "")
88: #if ($hasSynopsis || $hasBioBrief)
89:   #set ($view = "bio")
90: #elseif ($statsURL.length() > 0)
91:   #set ($view = "profile")
92: #elseif ($hasHTMLStats)
93:   #set ($view = "htmlstats")
94: #elseif ($releases.size() > 0)
95:   #set ($view = "news")
96: #elseif ($playerPhotos.size() > 0)
97:   #set ($view = "photos")
98: #elseif ($playerVideos.size() > 0)
99:   #set ($view = "videos")
100: #end
101: 
102: #if ($options.get("bio_default_view").length() > 0)
103:   #set ($checkView = $options.get("bio_default_view"))
104: #end
105: 
106: #if ($request.getParameter("view"))
107:   #set ($checkView = $request.getParameter("view"))
108: #end
109: 
110: #if ($checkView == "profile" && $statsURL.length() > 0)
111:   #set ($view = "profile")
112: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
113:   #set ($view = "bio")
114: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
115:   #set ($view = "gamelog")
116: #elseif ($checkView == "career" && $showCareer)
117:   #set ($view = "career")
118: #elseif ($checkView == "splits" && $statsURL.length() > 0)
119:   #set ($view = "splits")
120: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
121:   #set ($view = "htmlstats")
122: #elseif ($checkView == "news" && $releases.size() > 0)
123:   #set ($view = "news")
124: #elseif ($checkView == "photos" && $playerPhotos.size() > 0)
125:   #set ($view = "photos")
126: #elseif ($checkView == "videos" && $playerVideos.size() > 0)
127:     #set ($view = "videos")
128: #end
129: 
130: #macro (printResultAriaLabel $event)
131:     #set ($ariaLabel = "${event.sport} event: ${formatter.formatDate($event.date, 'MMMM d hh:mm a:')}")
132:     #if ($event.neutralSite.length() > 0 || $event.home)
133:     	#set ($ariaLabel = "${ariaLabel} vs.")
134:     #else
135:     	#set ($ariaLabel = "${ariaLabel} at")
136:     #end
137:     #set ($ariaLabel = "${ariaLabel} ${event.opponent.name}:")
138:     #if ($event.neutralSite.length() > 0)
139:     	#set ($ariaLabel = "${ariaLabel} @ ${event.neutralSite}:")
140:     #end
141:     #set ($ariaLabel = "${ariaLabel} Box Score")
142:     aria-label="$ariaLabel"
143: #end
144: 
145: #macro (printGrid $items $type)
146: <div class="news-layout grid">
147:     <div class="stories">
148:         <ul>
149:         #foreach ($item in $items)
150:             #if ($item.title.length() > 0)
151: 
152:                 <li class="story ${type}">
153:                 	<div class="clearfix">
154:                 	<a href="$item.url" class="title-box">
155:                         <span class="thumb">
156:                         #if ($item.thumbnailURL)
157:                         	<img src="$website.cdn("/info/images/spacer.gif")" data-src="${item.thumbnailURL}?max_width=300" alt="" class="lazyload" />
158: 						#elseif ($item.contentType == "loki/youtube")
159: 							<img src="$website.cdn("/info/images/spacer.gif")" data-src="http://img.youtube.com/vi/${item.dataAsString}/0.jpg" alt="" class="lazyload" />
160:                         #else
161:                         	<img src="$website.cdn("/info/images/spacer.gif")" data-src="/images/setup/thumbnail_default.jpg?max_width=300" alt="" class="lazyload" />
162:                         #end
163:                         </span>
164:                 		<span class="title">$item.title</span>
165:                 	</a>
166:                 	</div>
167:                 </li>
168:             #end
169:         #end ## foreach
170:         </ul>
171:     </div>
172: </div>
173: #end ## ends macro
174: 
175: #macro (gamelogData $p)
176: 
177: #set ($p = $positions.get($p))
178: #set ($gamelogs = $gamelogs.get($p))
179: 
180: #if ($hasEvents)
181: <div class="stats-box full clearfix">
182: <div class="scrollable">
183: <div>
184: <table>
185:   <tr class="thead">
186:     <th class="text">Date</th>
187:     <th class="pinned-col text">Opponent</th>
188:     <th>Score</th>
189:     #foreach ($gamelog in $gamelogs)
190:       <th>$gamelog</th>
191:     #end
192:   </tr>
193: #foreach ($event in $events)
194:   <tr>
195:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
196:     <td class="pinned-col text">
197:       #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
198:       $event.event.opponent.name
199:     </td>
200:     <td>
201:     #if ($event.event.statusCode >= 0)
202:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
203:           <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
204:       #else
205:       ${event.event.APResult}
206:       #end
207:     #else &nbsp; #end
208:     </td>
209:     #foreach ($gamelog in $gamelogs.keySet())
210:       #set ($value = "-")
211:       #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
212:       <td>$value</td>
213:     #end
214:   </tr>
215: #end
216: </table>
217: </div>
218: </div> ## scrollable
219: </div> ## stats-box
220: #end
221: 
222: #end ## macro gamelogData
223: 
224: #macro (split $statPosBriefs $label $stats)
225:   <tr>
226:     <td class="pinned-col text">${label}</td>
227:     #foreach ($brief in $statPosBriefs.keySet())
228:       #set ($value = "-")
229:       #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
230:       <td>#if ($value.length() > 0) $value #else - #end</td>
231:     #end
232:   </tr>
233: #end
234: 
235: #macro (careerData $p)
236: #set ($p = $positions.get($p))
237: #set ($statPosBriefs = $briefs.get($p))
238: 
239: <div class="stats-box full clearfix">
240: <div class="scrollable">
241: <div>
242: <table>
243: <tr class="thead">
244:   <th class="pinned-col">&nbsp;</th>
245:   #foreach ($brief in $statPosBriefs)
246:     <th>$brief</th>
247:   #end
248: </tr>
249: 
250: #set ($careerTotals = $request.getAttribute("careerTotals"))
251: #set ($careerMap = $request.getAttribute("careerMap"))
252: 
253: #foreach ($season in $seasons)
254:   ## Check if we did not get stats for this season
255:   #if ($careerMap.get($season.seasonName))
256:     #split($statPosBriefs, $season.seasonName, $careerMap[$season.seasonName])
257:   #elseif ($wiki.valid())
258:     <tr>
259:       <td class="text">${season.seasonName}</td>
260:       <td colspan="${statPosBriefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
261:     </tr>
262:   #end
263: #end
264: 
265: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
266: 
267: </table>
268: </div>
269: </div> ## scrollable
270: </div> ## stats-box
271: 
272: #end ## macro careerData
273: 
274: #macro (splitsData $p)
275: 
276: #set ($p = $positions.get($p))
277: #set ($statPosBriefs = $briefs.get($p))
278: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1))
279: 
280: #if ($statPosBriefs.size() > 0)
281: <div class="stats-box full clearfix">
282: <div class="scrollable">
283: <div>
284: <table>
285:   <tr>
286:     <th class="pinned-col">&nbsp;</th>
287:     #foreach ($brief in $statPosBriefs)
288:       <th>$brief</th>
289:     #end
290:   </tr>
291: 
292: #split($statPosBriefs, "Total", $splits.overall)
293: #split($statPosBriefs, "Conference", $splits.conference)
294: #split($statPosBriefs, "Exhibition", $splits.exhibition)
295: 
296: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
297: 
298: #split($statPosBriefs, "Home", $splits.home)
299: #split($statPosBriefs, "Away", $splits.away)
300: #split($statPosBriefs, "Neutral", $splits.neutral)
301: 
302: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
303: 
304: #foreach($gameResult in $gamesResults.entrySet())
305:   #if ($gameResult.key == "wins")
306:     #set ($splitGameResult = $splits.inWins)
307:   #elseif ($gameResult.key == "losses")
308:     #set ($splitGameResult = $splits.inLosses)
309:   #elseif ($gameResult.key == "ties")
310:     #set ($splitGameResult = $splits.inTies)
311:   #end
312: 
313:   #split($statPosBriefs, $gameResult.value, $splitGameResult)
314: #end
315: 
316: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
317: 
318: #if ($monthsPlayed and $monthsPlayed.size() > 0)
319:   #foreach($month in $monthsPlayed)
320:     #if ($month == 'January')
321:       #set ($splitMonth = $splits.january)
322:     #elseif ($month == 'February')
323:       #set ($splitMonth = $splits.february)
324:     #elseif ($month == 'March')
325:       #set($splitMonth = $splits.march)
326:     #elseif ($month == 'April')
327:       #set($splitMonth = $splits.april)
328:     #elseif ($month == 'May')
329:       #set ($splitMonth = $splits.may)
330:     #elseif ($month == 'June')
331:       #set ($splitMonth = $splits.june)
332:     #elseif ($month == 'July')
333:       #set($splitMonth = $splits.july)
334:     #elseif ($month == 'August')
335:       #set ($splitMonth = $splits.august)
336:     #elseif ($month == 'September')
337:       #set($splitMonth = $splits.september)
338:     #elseif ($month == 'October')
339:       #set($splitMonth = $splits.october)
340:     #elseif ($month == 'November')
341:       #set ($splitMonth = $splits.november)
342:     #elseif ($month == 'December')
343:       #set($splitMonth = $splits.december)
344:     #end
345: 
346:     #split($statPosBriefs, $month, $splitMonth)
347:   #end ## foreach
348: #end
349: </table>
350: </div>
351: </div> ## scrollable
352: </div> ## srollable-table
353: #end
354: 
355: #end ## macro splitsData
356: 
357: #macro (printRecentGames)
358: #if ($hasEvents)
359: <table>
360:   <tr class="thead accent-bg"><th colspan="3">Recent Games</th></tr>
361: 
362: #set ($eventEnd = -1)
363: #foreach ($event in $events)
364:   #if ($event.event.result.resolved)
365:     #set ($eventEnd = $velocityCount)
366:   #end
367: #end
368: 
369: #set ($eventStart = $eventEnd - 5)
370: #if ($eventStart < 0) #set ($eventStart = 0) #end
371: 
372: #foreach ($event in $events)
373: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
374:   <tr>
375:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
376:     <td class="text">
377:       #if ($event.event.neutralSite.length() > 0) vs.
378:       #elseif (!$event.event.home) at
379:       #else ## nothing for a home game
380:       #end
381:       $event.event.opponent.name
382:     </td>
383:     <td class="text">
384:     #if ($event.event.statusCode >= 0)
385:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
386:           <a #printResultAriaLabel($event.event) href="../boxscores/${formatter.formatBoxScoreLink($event.event)}">${event.event.APResult}</a>
387:       #else
388:       ${event.event.APResult}
389:       #end
390: 	#end
391: 	</td>
392:   </tr>
393: #end ## if
394: #end
395: </table>
396: #end
397: #end ## macro printRecentGames
398: 
399: #macro (printCategories $briefCategoryLabels $v $ariaLabel)
400: 
401: <div class="tab-container secondary clearfix" data-module="stats/tabs" data-type="secondary">
402: <div class="tab-nav" data-module="jscroll" data-momentum="false">
403: <div>
404: <ul class="clearfix">
405: #foreach($briefCat in $briefCategoryLabels.entrySet())
406:   #set ($briefCatLabel = $briefCat.value)
407:   #set ($briefCatKey = $briefCat.key)
408: 
409:   #if ($locale == "en_gb" && $briefCatLabel == "Defense")
410:     #set ($briefCatLabel = "Defence")
411:   #end
412: 
413:   <li #if ($activePos == $briefCatKey) class="active" #end><a href="${page.url}?view=${v}&pos=${briefCatKey}" role="button" aria-label="${ariaLabel}: ${briefCatLabel}">$briefCatLabel</a></li>
414: #end
415: </ul>
416: </div>
417: </div>
418: <div class="tab-panels">
419: #foreach ($briefCat in $briefCategoryLabels.entrySet())
420:   #set ($class = "tab-panel clearfix")
421:   #if ($briefCat.key == $activePos)
422:     #set ($class = "tab-panel active clearfix")
423:   #end
424:   <div class="$class">
425:     <div class="stats-wrap clearfix">
426:     #if ($v == "splits")
427:       #splitsData($briefCat.key)
428:     #elseif ($v == "career")
429:       #careerData($briefCat.key)
430:     #end
431:     </div>
432:   </div>
433: #end
434: </div>
435: </div> ## tab-container
436: 
437: #end ## macro printCategories
438: 
439: #macro (printHeadshot)
440: #if ($enhancedLayout)
441: 
442:   #if ($headshot.url)
443:     <img src="$headshot.url?max_width=300&max_height=400" alt="$fullName" />
444:   #else
445:     #if ($website.exists("/images/setup/headshot_default.jpg"))
446:       <img src="/images/setup/headshot_default.jpg?max_width=300&max_height=400" alt="$fullName" />
447:     #else
448:       <img src="$website.cdn("/info/images/default_headshot.jpg?max_width=300&max_height=400")" alt="$fullName" />
449:     #end
450:   #end
451: 
452: #else
453: 
454:   #if ($!attributes.get("number").length() > 0)<span class="number">$!attributes.get("number")</span>#end
455: 
456:   #if ($headshot.url)
457:     <img src="$headshot.url?max_width=160&max_height=210" alt="$fullName" />
458:   #else
459:     #if ($website.exists("/images/setup/headshot_default.jpg"))
460:       <img src="/images/setup/headshot_default.jpg?max_width=160&max_height=210" alt="" />
461:     #else
462:       <img src="$website.cdn("/info/images/default_headshot.jpg?max_width=160&max_height=210")" alt="" />
463:     #end
464:   #end
465: 
466: #end ## ## enhancedLayout check
467: #end ## macro printHeadshot
468: 
469: #macro (printBioInfo)
470: #if ($enhancedLayout)
471: 
472: <h2 class="player-heading">
473:   #if ($!attributes.get("number").length() > 0)<span class="number accent-bg">$!attributes.get("number")</span>#end
474:   <span class="name">$fullName</span>
475: </h2>
476: 
477: <ul>
478: #foreach ($i in [1..10])
479:   #set ($stickyKey = "bio_custom${i}_sticky")
480:   #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
481:     <li>
482:       <dl>
483:         <dt class="label">$options.get($stickyKey): </dt>
484:         <dd class="value">$!attributes.get("custom${i}")</dd>
485:       </dl>
486:     </li>
487:   #end
488: #end
489: 
490: #foreach ($field in $fields)
491:   #if (!$field.key.startsWith("custom"))
492:     #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
493:       #if ($field.key == "phone1" || $field.key == "phone2")
494:         <li>
495:           <dl>
496:             <dt class="label">Phone: </dt>
497:             <dd class="value">$!attributes.get($field.key)</dd>
498:           </dl>
499:         </li>
500:       #elseif ($field.key == "email_address")
501:         #set ($emailAdd = $attributes.get($field.key))
502:         <li>
503:           <dl>
504:             <dt class="label">Email: </dt>
505:             <dd class="value"><a href="mailto:${emailAdd}">$emailAdd</a></dd>
506:           </dl>
507:         </li>
508:       #elseif ($field.key == "weight_class")
509:         <li>
510:           <dl>
511:             <dt class="label">Class: </dt>
512:             <dd class="value">$!attributes.get($field.key)</dd>
513:           </dl>
514:         </li>
515:       #elseif ($field.key != "position_abbr")
516:         <li>
517:           <dl>
518:             <dt class="label">$field.value: </dt>
519:             <dd class="value">$!attributes.get($field.key)</dd>
520:           </dl>
521:         </li>
522:       #end
523:     #end
524:   #end
525: #end
526: 
527: #foreach ($i in [1..10])
528:   #set ($customKey = "bio_custom${i}")
529:   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
530:     <li>
531:       <dl>
532:         <dt class="label">$options.get($customKey): </dt>
533:         <dd class="value">$!attributes.get("custom${i}")</dd>
534:       </dl>
535:     </li>
536:   #end
537: #end
538: </ul>
539: 
540: #else
541: ## default layout
542: 
543: <div class="player-name">
544:   #if ($!attributes.get("number").length() > 0)<span class="number">$!attributes.get("number")</span><span class="sep"> - </span>#end
545:   <span class="name">$fullName</span>
546: </div>
547: 
548: <table role="presentation">
549: #foreach ($i in [1..10])
550:   #set ($stickyKey = "bio_custom${i}_sticky")
551:   #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
552:     <tr>
553:       <td class="label">$options.get($stickyKey): </td>
554:       <td class="value">$!attributes.get("custom${i}")</td>
555:     </tr>
556:   #end
557: #end
558: 
559: #foreach ($field in $fields)
560:   #if (!$field.key.startsWith("custom"))
561:     #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
562:       #if ($field.key == "phone1" || $field.key == "phone2")
563:         <tr>
564:           <td class="label">Phone: </td>
565:           <td class="value">$!attributes.get($field.key)</td>
566:         </tr>
567:       #elseif ($field.key == "email_address")
568:         #set ($emailAdd = $attributes.get($field.key))
569:         <tr>
570:           <td class="label">Email: </td>
571:           <td class="value"><a href="mailto:${emailAdd}">$emailAdd</a></td>
572:         </tr>
573:       #elseif ($field.key == "weight_class")
574:         <tr>
575:           <td class="label">Class: </td>
576:           <td class="value">$!attributes.get($field.key)</td>
577:         </tr>
578:       #elseif ($field.key != "position_abbr")
579:         <tr>
580:           <td class="label">$field.value: </td>
581:           <td class="value">$!attributes.get($field.key)</td>
582:         </tr>
583:       #end
584:     #end
585:   #end
586: #end
587: 
588: #foreach ($i in [1..10])
589:   #set ($customKey = "bio_custom${i}")
590:   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
591:     <tr>
592:       <td class="label">$options.get($customKey): </td>
593:       <td class="value">$!attributes.get("custom${i}")</td>
594:     </tr>
595:   #end
596: #end
597: </table>
598: #end ## enhancedLayout check
599: #end ## macro printBioInfo
600: 
601: #macro (printActionShots)
602: #if ($showActionShots)
603: 	## BANNERS SLIDER
604:     #set ($slickSettings = {
605: 		"autoplay": true,
606:         "fade": true,
607:         "arrows": false,
608:         "slidesToShow": 1,
609:         "slidesToScroll": 1,
610:         "lazyLoad": "ondemand",
611:         "responsive": "none"
612:     })
613:     #set ($slickSettings = $slickSettings.toString().replace("=", ":"))
614:     <div class="action-shots clearfix">
615:         <div class="slider" data-module="slick-slider-init" data-slick-settings="$slickSettings">
616:             #foreach ($photo in $playerPhotos)
617: 				#if ($velocityCount <= $actionShotsLimit)
618:     				#set ($imgAlt = "")
619:     				#if (!$image.altText.equals($image.title))
620:     					#set ($imgAlt = $image.altText)
621:     				#elseif( $image.title.length() == 0 )
622:     					#set ($imgAlt = "Action shot for $page.title image $velocityCount")
623:     				#end
624:             		<div class="image">
625:             			<img data-lazy="$photo.url" alt="$imgAlt" />
626:             	    </div>
627: 				#end
628:     	    #end
629: 	    </div>
630:     </div>
631: #end
632: #end ## macro printActionShots
633: 
634: #macro (printHighlights)
635: #if ($highlights && $showHighlights)
636:   <div class="highlights #if ($enhancedLayout) highlights-bio-enhanced #else highlights-bio #end clearfix">
637:     #foreach ($highlight in $highlights.keySet())
638:       #set ($value = "-")
639:       #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
640:       <div class="stat clearfix">
641:         <span class="stat-title">$!highlights.get($highlight)</span>
642:         <span class="stat-value">$value</span>
643:       </div>
644:     #end
645:   </div>
646: #end
647: #end ## macro printHighlights
648: #macro (printRoster)
649: #if ($enhancedLayout)
650:   $website.includeAgain("${page.url}?tmpl=roster-switcher-template&id=roster-list")
651: #else
652: #if ($page.contentType == "loki/bio")
653:   #set ($headlinesFeaturedSize = 0)
654:   #foreach ($featuredPage in $page.headlinesFeatured)
655:     #if ($featuredPage.contentType == "loki/headlines")
656:       #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
657:     #end
658:   #end
659:   #if ($headlinesFeaturedSize > 0)
660:       <select class="roster-select-list" aria-label="Select a player to view its full bio from the list of options below.">
661:         <option selected="selected">Related Bios</option>
662:         #foreach ($featuredPage in $page.headlinesFeatured)
663:           #if ($featuredPage.contentType == "loki/headlines")
664:             $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
665: 		  #end
666: 	    #end
667:       </select>
668:   #end
669: #elseif ($page.contentType == "loki/bio-network")
670:   #set ($relatedPlayers = $page.sectionPage.children)
671:   #set ($teamNames = {})
672:   #foreach ($relatedPlayer in $relatedPlayers)
673:     #if ($relatedPlayer.contentType == "loki/bio-network")
674:       #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
675:       #set ($teamName = $relatedPlayerObj.get("team"))
676:       #if ($teamName.length() > 0)
677:         #if (!$teamNames.containsValue($teamName))
678:           $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
679:         #end
680:       #end
681:     #end
682:   #end
683: 
684:   <select class="roster-select-list" aria-label="Select a player to view its full bio from the list of options below.">
685:   #foreach ($i in [1..$teamNames.size()])
686:     #if ($teamNames.size() > 1)
687:       <optgroup label="$teamNames.get($i)">
688:     #end
689: 
690:     #foreach ($relatedPlayer in $relatedPlayers)
691:       #if ($relatedPlayer.contentType == "loki/bio-network")
692:         #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
693:         #set ($teamName = $relatedPlayerObj.get("team"))
694:         #if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
695:           #set ($playerFirstName = $relatedPlayerObj.get("first_name"))
696:           #set ($playerLastName = $relatedPlayerObj.get("last_name"))
697:           #if ($page.url == $relatedPlayer.url)
698:             <option value="$relatedPlayer.url" selected="selected">${playerFirstName} ${playerLastName}</option>
699:           #else
700:             <option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option>
701:           #end
702:         #end
703:       #end
704:     #end
705: 
706:     #if ($teamNames.size() > 1)
707:       </optgroup>
708:     #end
709:   #end
710:   </select>
711: #end
712: #end ## enhancedLayout check
713: #end ## macro printRoster
714: 
715: ################################################## END MACROS  #############################################################
716: 
717: #if ($attributes.get("full_name").length() > 0)
718:   #set ($fullName = $attributes.get("full_name"))
719: #else
720:   #set ($firstName = $!attributes.get("first_name"))
721:   #set ($lastName = $!attributes.get("last_name"))
722:   #set ($fullName = "${firstName} ${lastName}")
723: #end
724: 
725: #set ($actionShots = false)
726: #if ($enhancedLayout && $playerPhotos.size() > 0)
727:   #set ($actionShots = true)
728: #end
729: 
730: #if ($enhancedLayout)
731:   #set ($rootClass = "bio-enhanced")
732:   #if ($actionShots && $showActionShots)
733:   	#set ($rootClass = "${rootClass} action")
734:   #else
735:   	#set ($rootClass = "${rootClass} plain")
736:   #end
737: #else
738:   #set ($rootClass = "bio-wrap")
739: #end
740: 
741: ## FULL ROSTER
742: <div class="${rootClass} #if ($highlights) bio-wrap-has-highlights #end clearfix" data-module="stats/responsive-container">
743: 
744: ## RELATED BIOS
745: #if ($showRoster)
746:   <div class="related-bios clearfix">#printRoster</div>
747: #end
748: 
749: #if ($actionShots)
750:   #printActionShots
751: #end
752: 
753: <div class="head clearfix">
754: <div class="clearfix">
755: 
756: <div class="player-about clearfix">
757:   <div class="player-headshot">#printHeadshot</div>
758:   <div class="player-info">#printBioInfo</div>
759: </div>
760: 
761: #printHighlights
762: 
763: </div>
764: </div> ## head
765: 
766: #if ($view.length() > 0)
767: <div class="body clearfix">
768: 
769: <div class="tab-container primary clearfix" data-module="stats/tabs" data-type="primary">
770: <div class="tab-nav" data-module="jscroll" data-momentum="false">
771:   <div>
772:   <ul class="clearfix">
773:   #if ($hasSynopsis || $hasBioBrief)
774:     <li #if ($view == "bio") class="active" #end><a href="${page.url}?view=bio">Bio</a></li>
775:   #end
776: 
777:   #if ($statsURL.length() > 0)
778:     <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile">Player Profile</a></li>
779:     <li #if ($view == "gamelog") class="active" #end><a href="${page.url}?view=gamelog">Game Log</a></li>
780:     #if ($showCareer)
781:       <li #if ($view == "career") class="active" #end><a href="${page.url}?view=career">Career Stats</a></li>
782:     #end
783:     <li #if ($view == "splits") class="active" #end><a href="${page.url}?view=splits">Split Stats</a></li>
784:   #end
785: 
786:   #if ($hasHTMLStats)
787:     <li #if ($view == "htmlstats") class="active" #end><a href="${page.url}?view=htmlstats">HTML Stats</a></li>
788:   #end
789: 
790:   #if ($releases.size() > 0)
791: 	<li #if ($view == "news") class="active" #end><a href="${page.url}?view=news">News</a></li>
792:   #end
793: 
794:   #if ($playerPhotos.size() > 0)
795: 	<li #if ($view == "photos") class="active" #end><a href="${page.url}?view=photos">Photos</a></li>
796:   #end
797: 
798:   #if ($playerVideos.size() > 0)
799:     <li #if ($view == "videos") class="active" #end><a href="${page.url}?view=videos">Videos</a></li>
800:   #end
801:   </ul>
802:   </div>
803: </div> ## tab-nav
804: 
805: <div class="tab-panels clearfix">
806: 
807: ## BIO
808: #if ($hasSynopsis || $hasBioBrief)
809: 
810: #set ($class = "tab-panel clearfix")
811: #if ($view == "bio")
812:   #set ($class = "tab-panel active clearfix")
813: #end
814: <div class="${class}">
815: 
816: <div class="synopsis clearfix">
817: #if ($hasSynopsis)
818:   $synopsis
819: #elseif ($hasBioBrief)
820:   $website.include("$bioBriefURL")
821: #end
822: </div>
823: 
824: </div> ## tab-panel
825: #end
826: ## BIO
827: 
828: ## STATS
829: #if ($statsURL.length() > 0)
830: 
831: ## PROFILE
832: #set ($class = "tab-panel clearfix")
833: #if ($view == "profile")
834:   #set ($class = "tab-panel active clearfix")
835: #end
836: <div class="${class}">
837: <div class="stats-wrap clearfix">
838: 
839: ## LAST SIX GAMES
840: <div class="stats-box half">
841: #printRecentGames()
842: </div>
843: 
844: ## RANKING
845: <div class="stats-box half">
846: #if ($statPos.length() > 0)
847:   $website.include("players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
848: #end
849: </div>
850: 
851: </div> ## stats-wrap
852: </div> ## tab-content
853: ## PROFILE
854: 
855: ## GAMELOG
856: #set ($class = "tab-panel clearfix")
857: #if ($view == "gamelog")
858:   #set ($class = "tab-panel active clearfix")
859: #end
860: 
861: #set ($activePos = $statPos)
862: #if ($view == "gamelog" && $paramPos.length() > 0)
863:   #if ($positions.get($paramPos).length() > 0)
864:     #set ($activePos = $positions.get($paramPos))
865:   #end
866: #end
867: 
868: <div class="${class}">
869: 
870: #if ($gamelogsCategoriesLabels)
871: <div class="tab-container clearfix secondary" data-module="stats/tabs" data-type="secondary">
872:   <div class="tab-nav" data-module="jscroll" data-momentum="false">
873:     <div>
874:     <ul class="clearfix">
875:     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
876:       #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
877: 
878:       #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
879:         #set($gamelogsCatLabelVal = "Defence")
880:       #end
881: 
882:       <li #if ($activePos == $gamelogsCatLabel.key) class="active" #end><a href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}" role="button" aria-label="Game Log: ${gamelogsCatLabelVal}">$gamelogsCatLabelVal</a></li>
883:     #end
884:     </ul>
885: 	</div>
886:   </div>
887:   <div class="tab-panels">
888:   #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
889:     #set ($class = "tab-panel clearfix")
890:     #if ($gamelogsCatLabel.key == $activePos)
891:       #set ($class = "tab-panel active clearfix")
892:     #end
893:     <div class="${class}">
894:       <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div>
895: 	</div>
896:   #end
897:   </div>
898: </div>
899: #else
900:   <div class="stats-wrap clearfix">#gamelogData($pos)</div>
901: #end
902: 
903: </div> ## tab-panel
904: ## GAMELOG
905: 
906: 
907: ## CAREER
908: #if ($showCareer)
909: 
910: #set ($activePos = $statPos)
911: #if ($view == "career" && $paramPos.length() > 0)
912:   #if ($positions.get($paramPos).length() > 0)
913:     #set ($activePos = $positions.get($paramPos))
914:   #end
915: #end
916: 
917: #set ($class = "tab-panel clearfix")
918: #if ($view == "career")
919:   #set ($class = "tab-panel active clearfix")
920: #end
921: 
922: <div class="${class}">
923: 
924: #if ($briefsCategoriesLabels)
925:   #printCategories($briefsCategoriesLabels "career" "Career Stats")
926: #else
927:   <div class="stats-wrap clearfix">#careerData($activePos)</div>
928: #end
929: 
930: </div> ## tab-panel
931: #end
932: ## CAREER
933: 
934: ## SPLITS
935: #set ($class = "tab-panel clearfix")
936: #if ($view == "splits")
937: 	#set ($class = "tab-panel active clearfix")
938: #end
939: 
940: #set ($activePos = $statPos)
941: #if ($view == "splits" && $paramPos.length() > 0)
942:   #if ($positions.get($paramPos).length() > 0)
943:     #set ($activePos = $positions.get($paramPos))
944:   #end
945: #end
946: 
947: <div class="${class}">
948: 
949: #if ($briefsCategoriesLabels)
950:   #printCategories($briefsCategoriesLabels "splits" "Splits Stats")
951: #else
952:   <div class="stats-wrap clearfix">#splitsData($pos)</div>
953: #end
954: 
955: </div> ## tab-panel
956: ## SPLITS
957: 
958: #end
959: ## STATS
960: 
961: ## HTML STATS
962: #if ($hasHTMLStats)
963: 
964: #set ($class = "tab-panel clearfix")
965: #if ($view == "htmlstats")
966:   #set ($class = "tab-panel active clearfix")
967: #end
968: <div class="${class}">
969:   <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
970: </div>
971: 
972: #end
973: ## HTML STATS
974: 
975: ## NEWS
976: #if ($releases.size() > 0)
977: #set ($class = "tab-panel clearfix")
978: #if ($view == "news")
979:   #set ($class = "tab-panel active clearfix")
980: #end
981: <div class="${class}">
982: 	#printGrid($releases, "article")
983: </div> ## tab-content
984: #end
985: ## NEWS
986: 
987: ## PHOTOS
988: #if ($playerPhotos.size() > 0)
989: #set ($class = "tab-panel clearfix")
990: #if ($view == "photos")
991:   #set ($class = "tab-panel active clearfix")
992: #end
993: <div class="${class}">
994:     $website.includeAgain("${page.url}?tmpl=bio-photos-template")
995: </div> ## tab-content
996: #end
997: ## PHOTOS
998: 
999: ## VIDEOS
1000: #if ($playerVideos.size() > 0)
1001:   #set ($class = "tab-panel clearfix")
1002:   #if ($view == "videos")
1003:     #set ($class = "tab-panel active clearfix")
1004:   #end
1005: <div class="${class}">
1006: 	#printGrid($playerVideos, "video")
1007: </div> ## tab-content
1008: #end
1009: ## VIDEOS
1010: 
1011: </div> ## tab-panels
1012: </div> ## tab-container
1013: </div> ## body
1014: #end
1015: 
1016: $wiki
1017: </div> ## ends bio-wrap
1018: 
1019: ## GLOBAL ADS SERVER
1020: #if ($website.ads.isAdvertisingEnabled('BIOS'))
1021:         $website.includeAgain("global-adserver-slots?adSlot=bios")
1022: #end