Wrapper Background
Text-Only Site

Men's Basketball

 
32 - John Dickson
John Dickson
Height: 6-6
Weight: 200
Year: Sr.
Hometown: San Francisco, Calif.
High School: Fairfield HS
Position: F
Experience: 3V
gp 29
pts/g 12.8
fg % 40.5
3pt % 30.3
ft % 75.8
reb/g 5.7
a/g 0.8

CAREER STATS

2012-13 Season
One of two players to start all 29 games…never missed a game during his four-year career, spanning 115 straight games played…started 90 of those contests…the 115 games also tied the program record for most games played during a career…an honorable mention all-Big Sky Conference selection, Dickson posted a team-best 12.8 points, while also averaging 5.7 rebounds, 0.8 steals, 0.9 blocked shots and 27.4 minutes per game…shot .405 (133-328) from the field and .758 (75-99) from the free throw line…led the Hornets in points, field goals made, field goals attempted and blocked shots…50 of his 165 rebounds came on the offensive glass…scored in double figures a team-best 21 times, and 73 times during his career…also led or tied for the team lead in scoring a team-high 13 times…drew a team-best nine charges…had three double-doubles over a nine-game span, including 19 points and 11 rebounds at Idaho State, 11 points and a career-high 12 rebounds at home against North Dakota, and 19 points and 10 rebounds at North Dakota…scored a career-high 29 points on 10-of-15 shooting from the field against Dominican…among league leaders, Dickson ranked 11th in blocked shots, 14th in scoring and rebounding, and 15th in free throw percentage…raised his scoring average every year of his career, from averaging 9.7 points as a freshman, to 10.9 points as a sophomore, 12.4 points as a junior, and 12.8 points as a senior…became one of just 10 players in school history to score 1,000 career points…among the program’s all-time career leaders, Dickson ranks first in starts (90), tied for first in games played (115), second in free throws made (329) and attempted (456), third in blocked shots (100), fifth in points (1,313) and field goals made (456), sixth in field goals attempted (1,077), and seventh in rebounds (508).

2011-12 Season
A team tri-captain, Dickson appeared in 28 games, including 18 starts…posted averages of 12.4 points, 4.2 rebounds, 1.1 assists, 0.5 steals, 1.0 blocked shots and 25.6 minutes per game…shot 43.1 percent (122-283) from the field and 73.2 percent (93-127) from the free throw line…led the Hornets in scoring, field goals made, field goals attempted, free throws made, free throws attempted and blocked shots (28)…scored at least 20 points on six occasions, including a season-high 26 points at home against Portland State…also had 21 at Washington State, 24 vs. Southeast Missouri, 20 at Eastern Washington, and 20 against Weber State on a pair of occasions…scored in double figures 16 times…among Big Sky leaders, he ranked sixth in blocked shots, eighth in free throws made and 11th in scoring…tied for the team lead with 11.3 points against conference competition.

2010-11 Season
An honorable mention all-Big Sky Conference selection, becoming the fourth Sacramento State underclassman to receive all-Big Sky accolades since the program joined the league in 1996-97...appeared in all 28 games, including 25 starts as a true sophomore…averaged 10.9 points, 4.2 rebounds, 0.8 steals and 0.6 blocked shots per game…shot 42.2 percent (97-230) from the field and 76.3 percent (106-139) from the free throw line…was the team’s second-leading scorer and fourth-leading rebounder…led the team both in free throws made and attempted…the 106 free throws made tied for the fourth best mark in the Big Sky Conference…in league play, he increased his numbers to a team-best 12.6 points per game to go along with 4.8 rebounds and 0.9 blocked shots per game…scored in double figures in 12 of the team’s 16 league games…at one point during the season (Dec. 29-Feb. 3), he scored in double figures in 11 straight games…overall, he tallied double figures in 19 of the team’s 28 games…converted 27 straight free throws, the best mark during the program’s Div. I era (1991-pres.)…in conference play, among Big Sky leaders, he ranked second in free throws made (70), third in free throws attempted (87), eighth in free throw shooting (.805), tied for ninth in blocked shots, 11th in offensive rebounding (2.0 per game), 14th in scoring and 20th in rebounding…took a team-best five charges during the season…scored at least 13 points on 13 occasions, including a season-best 18 points at home against Northern Colorado.

2009-10 Season
Had one of the more impressive freshman campaigns in Sacramento State’s Div. I history…appeared in all 30 games (18 starts) while ranking among the Hornets’ top three players in points (9.7 ppg), field goals made (104), field goals attempted (236), field goal percentage (.441), three-point field goal percentage (.406, 28-69), free throws made (55), free throws attempted (91) and blocked shots (29)…narrowly missed out on becoming the third Hornet true freshman to average at least 10.0 points during the program’s Div. I era…his average of 1.0 blocked shots per game was the fourth best mark in the Big Sky Conference…scored in double figures 17 times, including a season-best 22 points at Montana State…had 19 points in the team’s win over Idaho State…42 of his 108 rebounds came on the offensive glass…shot 52.0 percent (13-25) from the three-point line over his final 10 games of the season.

High School
A 2009 graduate of Fairfield High School in California…played four years of basketball and competed four years for the track and field team…in basketball, he was a three-year varsity starter where he played at shooting guard, small forward and power forward…a two-time first team all-league selection, Dickson was the Falcons’ leading scorer and rebounder his senior season (2008-09), averaging 20.3 points, 8.3 rebounds, 2.5 assists, 1.5 steals and 1.5 blocked shots per game for a Fairfield squad that reached the CIF NorCal Championship semifinals…in fact, he helped the team to three straight NorCal Championship appearances and three consecutive Monticello Empire League titles…in addition, he helped the team to the Div. II Sac-Joaquin Section finals three years in a row, and Fairfield combined for a 77-22 overall record and a 38-2 league mark over that three-year span…was the team captain as a senior and became the first men’s basketball player in Fairfield High School history to sign a Div. I scholarship following his senior season…as a junior, he averaged 13.2 points and 6.1 rebounds per game while helping lead the team to a 28-6 overall record and a 15-0 league mark.

Personal
Parents are John Dickson and Kelli Danner…a communication studies major who is on pace to graduate in the fall of 2013…played for the Drew Gooden Soldiers (Richmond, Calif.) in 2008-09.

Recent Games
Feb 16 at Northern Colorado L, 78-64
Feb 23 at UC Santa Barbara W, 51-50
Feb 28 Weber State L, 70-55
Mar 2 Idaho State W, 53-52
Mar 7 at Montana L, 63-52
Mar 9 at Montana State L, 71-55
Statistics category Overall Conf
Games 29 20
Games started 29 20
Minutes 795 547
Minutes per game 27.4 27.4
FG 133-328 83-225
FG Pct 40.5 36.9
3PT 30-99 16-64
3PT Pct 30.3 25.0
FT 75-99 45-53
FT Pct 75.8 84.9
Off rebounds 50 41
Def rebounds 115 72
Total rebounds 165 113
Rebounds per game 5.7 5.6
Personal fouls 72 50
Disqualifications 1 1
Assists 24 22
Turnovers 45 27
Assist to turnover ratio 0.5 0.8
Steals 24 16
Blocks 27 14
Points 371 227
Points per game 12.8 11.4
Points per 40 min 18.7 16.6
Date Opponent Score gs min fg pct 3pt pct ft pct pts
Nov 9 UC Merced W, 96-62 1 18 5-6 83.3 2-3 66.7 6-11 54.5 18
Nov 14 Bakersfield W, 85-67 1 28 6-10 60.0 1-3 33.3 2-2 100.0 15
Nov 16 at Utah W, 74-71 1 31 5-15 33.3 3-7 42.9 3-5 60.0 16
Nov 20 UC Davis L, 87-76 1 33 6-16 37.5 1-5 20.0 5-6 83.3 18
Nov 24 at Central Ark. W, 71-68 1 19 3-6 50.0 1-2 50.0 1-4 25.0 8
Nov 27 Dominican (Cal.) W, 77-68 1 33 10-15 66.7 2-4 50.0 7-7 100.0 29
Dec 1 at Arizona State L, 90-70 1 27 4-12 33.3 0-4 0.0 4-7 57.1 12
Dec 8 at San Jose State L, 62-57 1 25 7-14 50.0 1-3 33.3 1-2 50.0 16
Dec 19 Montana State W, 62-57 1 29 3-11 27.3 2-6 33.3 3-4 75.0 11
Dec 21 Montana L, 61-60 1 34 6-17 35.3 1-5 20.0 2-2 100.0 15
Jan 3 at Northern Arizona L, 57-50 1 27 4-12 33.3 1-4 25.0 3-4 75.0 12
Jan 7 Southern Utah W, 64-59 1 15 0-1 0.0 0-0 - 0-0 - 0
Jan 10 at Portland State L, 87-69 1 29 6-17 35.3 2-4 50.0 2-3 66.7 16
Jan 12 at Eastern Washington W, 60-53 1 30 4-10 40.0 0-2 0.0 0-0 - 8
Jan 17 at Idaho State L, 60-59 1 36 7-15 46.7 2-6 33.3 3-4 75.0 19
Jan 19 at Weber State L, 65-56 1 24 4-12 33.3 0-3 0.0 1-1 100.0 9
Jan 24 North Dakota W, 67-58 1 25 5-12 41.7 1-2 50.0 0-0 - 11
Jan 26 Northern Colorado W, 79-72 1 36 3-11 27.3 2-7 28.6 3-4 75.0 11
Jan 31 at Southern Utah L, 79-67 1 27 3-10 30.0 1-4 25.0 7-8 87.5 14
Feb 4 Northern Arizona L, 62-61 1 25 6-10 60.0 1-1 100.0 0-0 - 13
Feb 7 Eastern Washington W, 61-55 1 22 6-10 60.0 0-1 0.0 1-1 100.0 13
Feb 9 Portland State W, 77-71 1 28 3-9 33.3 0-2 0.0 3-3 100.0 9
Feb 14 at North Dakota L, 49-48 1 33 6-15 40.0 0-1 0.0 7-8 87.5 19
Feb 16 at Northern Colorado L, 78-64 1 21 3-11 27.3 0-3 0.0 0-1 0.0 6
Feb 23 at UC Santa Barbara W, 51-50 1 34 4-9 44.4 3-4 75.0 1-2 50.0 12
Feb 28 Weber State L, 70-55 1 26 3-13 23.1 1-5 20.0 0-0 - 7
Mar 2 Idaho State W, 53-52 1 19 2-6 33.3 0-1 0.0 2-2 100.0 6
Mar 7 at Montana L, 63-52 1 30 5-11 45.5 0-2 0.0 5-5 100.0 15
Mar 9 at Montana State L, 71-55 1 31 4-12 33.3 2-5 40.0 3-3 100.0 13
Date Opponent Score gs min off def reb ast to a/to stl blk pf dq
Nov 9 UC Merced W, 96-62 1 18 1 8 9 0 2 0.0 0 0 4 0
Nov 14 Bakersfield W, 85-67 1 28 0 6 6 0 1 0.0 1 2 2 0
Nov 16 at Utah W, 74-71 1 31 2 4 6 0 3 0.0 0 1 2 0
Nov 20 UC Davis L, 87-76 1 33 1 5 6 0 2 0.0 6 3 2 0
Nov 24 at Central Ark. W, 71-68 1 19 1 1 2 1 3 0.3 0 1 4 0
Nov 27 Dominican (Cal.) W, 77-68 1 33 1 5 6 0 1 0.0 1 3 0 0
Dec 1 at Arizona State L, 90-70 1 27 2 5 7 1 0 - 0 1 4 0
Dec 8 at San Jose State L, 62-57 1 25 1 2 3 0 3 0.0 0 1 4 0
Dec 19 Montana State W, 62-57 1 29 1 5 6 0 1 0.0 0 2 2 0
Dec 21 Montana L, 61-60 1 34 5 2 7 2 0 - 0 0 2 0
Jan 3 at Northern Arizona L, 57-50 1 27 0 3 3 1 0 - 0 1 1 0
Jan 7 Southern Utah W, 64-59 1 15 0 2 2 0 1 0.0 0 1 3 0
Jan 10 at Portland State L, 87-69 1 29 2 3 5 1 0 - 1 1 3 0
Jan 12 at Eastern Washington W, 60-53 1 30 4 6 10 2 2 1.0 1 2 2 0
Jan 17 at Idaho State L, 60-59 1 36 4 7 11 0 1 0.0 0 1 2 0
Jan 19 at Weber State L, 65-56 1 24 1 4 5 0 1 0.0 3 0 4 0
Jan 24 North Dakota W, 67-58 1 25 5 7 12 2 5 0.4 0 0 4 0
Jan 26 Northern Colorado W, 79-72 1 36 0 2 2 1 0 - 3 0 0 0
Jan 31 at Southern Utah L, 79-67 1 27 2 2 4 0 1 0.0 0 1 1 0
Feb 4 Northern Arizona L, 62-61 1 25 3 3 6 3 2 1.5 0 1 4 0
Feb 7 Eastern Washington W, 61-55 1 22 2 3 5 0 0 - 0 0 3 0
Feb 9 Portland State W, 77-71 1 28 1 2 3 3 0 - 4 0 2 0
Feb 14 at North Dakota L, 49-48 1 33 3 7 10 2 1 2.0 1 0 2 0
Feb 16 at Northern Colorado L, 78-64 1 21 2 2 4 1 3 0.3 0 0 2 0
Feb 23 at UC Santa Barbara W, 51-50 1 34 0 7 7 0 3 0.0 0 1 0 0
Feb 28 Weber State L, 70-55 1 26 0 6 6 2 4 0.5 0 3 5 1
Mar 2 Idaho State W, 53-52 1 19 2 0 2 0 0 - 0 1 3 0
Mar 7 at Montana L, 63-52 1 30 1 2 3 1 1 1.0 1 0 2 0
Mar 9 at Montana State L, 71-55 1 31 3 4 7 1 4 0.2 2 0 3 0
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
2012-13 29 29 27.4 4.6-11.3 40.5 1.0-3.4 30.3 2.6-3.4 75.8 12.8
Total 29 29 27.4 4.6-11.3 40.5 1.0-3.4 30.3 2.6-3.4 75.8 12.8
  gp gs min fg pct 3pt pct ft pct pts
2012-13 29 29 795 133-328 40.5 30-99 30.3 75-99 75.8 371
Total 29 29 795 133-328 40.5 30-99 30.3 75-99 75.8 371
  gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
2012-13 29 29 27.4 6.7-16.5 40.5 1.5-5.0 30.3 3.8-5.0 75.8 18.7
Total 29 29 27.4 6.7-16.5 40.5 1.5-5.0 30.3 3.8-5.0 75.8 18.7
  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 29 29 27.4 1.7 4.0 5.7 2.5 0.0 0.8 1.6 0.5 0.8 0.9
Total 29 29 27.4 1.7 4.0 5.7 2.5 0.0 0.8 1.6 0.5 0.8 0.9
  gp gs min off def reb pf dq ast to a/to stl blk
2012-13 29 29 795 50 115 165 72 1 24 45 0.5 24 27
Total 29 29 795 50 115 165 72 1 24 45 0.5 24 27
  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 29 29 27.4 2.5 5.8 8.3 3.6 0.1 1.2 2.3 0.5 1.2 1.4
Total 29 29 27.4 2.5 5.8 8.3 3.6 0.1 1.2 2.3 0.5 1.2 1.4
  gp gs min/g fg/g pct 3pt/g pct ft/g pct ppg
Total 29 29 27.4 4.6-11.3 40.5 1.0-3.4 30.3 2.6-3.4 75.8 12.8
Conference 20 20 27.4 4.2-11.2 36.9 0.8-3.2 25.0 2.2-2.6 84.9 11.4
Exhibition - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -

Home 14 14 26.5 4.6-10.5 43.5 1.0-3.2 31.1 2.4-3.0 81.0 12.6
Away 15 15 28.3 4.6-12.1 38.1 1.1-3.6 29.6 2.7-3.8 71.9 13.0
Neutral - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -

Wins 14 14 26.2 4.2-9.4 45.0 1.2-3.1 38.6 2.3-3.2 71.1 11.9
Losses 15 15 28.5 4.9-13.1 37.6 0.9-3.7 23.6 2.9-3.6 79.6 13.6

November 6 6 27.0 5.8-11.3 51.5 1.7-4.0 41.7 4.0-5.8 68.6 17.3
December 4 4 28.8 5.0-13.5 37.0 1.0-4.5 22.2 2.5-3.8 66.7 13.5
January 9 9 27.7 4.0-11.1 36.0 1.0-3.6 28.1 2.1-2.7 79.2 11.1
February 7 7 27.0 4.4-11.0 40.3 0.7-2.4 29.4 1.7-2.1 80.0 11.3
March 3 3 26.7 3.7-9.7 37.9 0.7-2.7 25.0 3.3-3.3 100.0 11.3
  gp gs min fg pct 3pt pct ft pct pts
Total 29 29 795 133-328 40.5 30-99 30.3 75-99 75.8 371
Conference 20 20 547 83-225 36.9 16-64 25.0 45-53 84.9 227
Exhibition - - - 0-0 - 0-0 - 0-0 - 0

Home 14 14 371 64-147 43.5 14-45 31.1 34-42 81.0 176
Away 15 15 424 69-181 38.1 16-54 29.6 41-57 71.9 195
Neutral - - - 0-0 - 0-0 - 0-0 - 0

Wins 14 14 367 59-131 45.0 17-44 38.6 32-45 71.1 167
Losses 15 15 428 74-197 37.6 13-55 23.6 43-54 79.6 204

November 6 6 162 35-68 51.5 10-24 41.7 24-35 68.6 104
December 4 4 115 20-54 37.0 4-18 22.2 10-15 66.7 54
January 9 9 249 36-100 36.0 9-32 28.1 19-24 79.2 100
February 7 7 189 31-77 40.3 5-17 29.4 12-15 80.0 79
March 3 3 80 11-29 37.9 2-8 25.0 10-10 100.0 34
  gp gs min/g fg/40 pct 3pt/40 pct ft/40 pct pts/40
Total 29 29 27.4 6.7-16.5 40.5 1.5-5.0 30.3 3.8-5.0 75.8 18.7
Conference 20 20 27.4 6.1-16.5 36.9 1.2-4.7 25.0 3.3-3.9 84.9 16.6
Exhibition - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -

Home 14 14 26.5 6.9-15.8 43.5 1.5-4.9 31.1 3.7-4.5 81.0 19.0
Away 15 15 28.3 6.5-17.1 38.1 1.5-5.1 29.6 3.9-5.4 71.9 18.4
Neutral - - - 0.0-0.0 - 0.0-0.0 - 0.0-0.0 - -

Wins 14 14 26.2 6.4-14.3 45.0 1.9-4.8 38.6 3.5-4.9 71.1 18.2
Losses 15 15 28.5 6.9-18.4 37.6 1.2-5.1 23.6 4.0-5.0 79.6 19.1

November 6 6 27.0 8.6-16.8 51.5 2.5-5.9 41.7 5.9-8.6 68.6 25.7
December 4 4 28.8 7.0-18.8 37.0 1.4-6.3 22.2 3.5-5.2 66.7 18.8
January 9 9 27.7 5.8-16.1 36.0 1.4-5.1 28.1 3.1-3.9 79.2 16.1
February 7 7 27.0 6.6-16.3 40.3 1.1-3.6 29.4 2.5-3.2 80.0 16.7
March 3 3 26.7 5.5-14.5 37.9 1.0-4.0 25.0 5.0-5.0 100.0 17.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 29 29 27.4 1.7 4.0 5.7 2.5 0.0 0.8 1.6 0.5 0.8 0.9
Conference 20 20 27.4 2.0 3.6 5.6 2.5 0.0 1.1 1.4 0.8 0.8 0.7
Exhibition - - - - - - - - - - - - -

Home 14 14 26.5 1.6 4.0 5.6 2.6 0.1 0.9 1.4 0.7 1.1 1.1
Away 15 15 28.3 1.9 3.9 5.8 2.4 0.0 0.7 1.7 0.4 0.6 0.7
There was a problem with a Velocity script
Pagebio-template
ErrorVM #split: too many arguments to macro. Wanted 3 got 4 at bio-template[line 246, column 1]
Page source:
1: #if ($browser.getIphone() || $browser.getMobile())
2: 	#set ($isMobile = true)
3: #else
4: 	#set ($isMobile = false)
5: #end
6: 
7: ## PICK UP OPTIONS
8: $website.include("options")
9: #set ($options = $request.getAttribute("options"))
10: #set ($locale = "en_us")
11: #set ($locale = $options.get("locale"))
12: 
13: ## STATS DATA
14: #if ($request.getParameter("stats"))
15: 
16: #set ($showCareer = $wiki.valid() && $seasons)
17: #if ("yes" == $options.get("stats_show_career") && $seasons)
18:   #set ($showCareer = "yes")
19: #end
20: 	
21: ## FETCH THE BIO URL FROM THE PARAMETER
22: #set ($bioURL = $request.getParameter("biourl"))
23: 
24: ## VIEW IS AVAILABLE PROVIDED WHEN REACHED HERE
25: #set ($view = $request.getParameter("view"))
26: 
27: #set ($pos = "")
28: #set ($pos = $attributes.get("position"))
29: #set ($posVec = $pos.split("/"))
30: #set ($pos = $posVec[0])
31: #set ($pos = $pos.toLowerCase())
32: #set ($statPos = $positions.get($pos))
33: 
34: #set ($playerId = $attributes.get("playerId"))
35: #set ($stats = $splits.overall)
36: 
37: #if ($locale == "en_us")
38: #set ($defLabel = 'Defense')
39: #elseif ($locale == "en_gb") 
40: #set ($defLabel = 'Defence')
41: #end
42:  
43: #macro (gamelogData $p)
44: 
45: #set ($p = $positions.get($p))
46: #set ($gamelogs = $gamelogs.get($p))
47: 
48: ## SECONDARY TAB CONTENT FOR ONLY FOOTBALL,  BASEBALL, SOFTBALL AND BASKETBALL
49: #if($gamelogsCategoriesLabels)
50:   #set ($class = "sub-tab-content")
51:   #if ($activePos == $p)
52:     #set ($class = "sub-tab-content active")
53:   #end
54:   #if ($isMobile)
55: 	<div class="mobile-bios-subtab-panel mobile-stats-panel-wrapper #if ($activePos == $p) active #end">
56:   #else
57: 	<div class="$class">
58:   #end
59: #end
60: 	
61: #if (! $isMobile)
62: 	<div class="stats-fullbox clearfix">
63: #else
64: 	<div class="mobile-stats-panel-container">
65: #end
66: <table>
67:   <tr>
68:     <th #if ($isMobile) width="10%" #end>Date</th>
69:     <th #if ($isMobile) class="mobile-stats-fixed-column" #*width="20%"*# #end>Opponent</th>
70:     <th>Score</th>
71:     #foreach ($gamelog in $gamelogs)
72:       <th>$gamelog</th>
73:     #end
74:   </tr>
75: 
76: #set ($counter = 0)
77: #foreach ($event in $events)
78:  #set ($counter = $counter + 1)
79:  #if ($counter % 2 == 0)
80:   #set ($row = "even")
81:  #else
82:   #set ($row = "odd")
83:  #end
84:   <tr class="${row}">
85:     <td>$formatter.formatDate($event.event.date, "MMM d")</td>
86:     <td #if ($isMobile) class="mobile-stats-fixed-column" #end>
87:     #if ($event.event.neutralSite.length() > 0) vs.
88:     #elseif (!$event.event.home) at
89:     #else ## nothing for a home game
90:     #end
91:     $event.event.opponent.name</td>
92:     <td class="align-center">
93:     #if ($event.event.statusCode >= 0)
94:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
95:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
96:       #else
97:       ${event.event.APResult}
98:       #end
99:     #else &nbsp; #end
100:     </td>
101:     #foreach ($gamelog in $gamelogs.keySet())
102:       #set ($value = "-")
103:       #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
104:       <td class="align-center">
105:       #if ($value.length() > 0)$value#else - #end
106:       </td>
107:     #end
108:   </tr>
109: #end
110: </table>
111: </div>
112: 
113: #if($gamelogsCategoriesLabels)
114:   </div>
115: #end
116: 
117: #end ## macro gamelogData
118: 
119: #macro (split $statPosBriefs $label $stats $class)
120:   <tr class="$!{class}">
121:     <td #if ($isMobile) class="mobile-stats-fixed-column" #end>${label}</td>
122:     #foreach ($brief in $statPosBriefs.keySet())
123:       #set ($value = "-")
124:       #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
125:       <td class="align-center">#if ($value.length() > 0) $value #else - #end</td>
126:     #end
127:   </tr>
128: #end
129: 
130: #set ($colspan = $statPosBriefs.size() + 1)
131: #macro (printSplitsHr)
132: 	#if ($isMobile)
133: 		<tr>
134: 			<td class="mobile-stats-fixed-column">&nbsp;</td>
135: 			<td colspan="$statPosBriefs.size()">&nbsp;</td>
136: 		</tr>
137: 	#else
138: 		<tr><td colspan="${colspan}"><hr /></td></tr>
139: 	#end
140: #end
141: 
142: 
143: #macro (careerData $p)
144: 
145: #set ($p = $positions.get($p))
146: #set ($statPosBriefs = $briefs.get($p))
147: 
148: ## SECONDARY TAB CONTENT.
149: #if($briefsCategoriesLabels)
150:   #set ($class = "sub-tab-content")
151:   #if ($activePos == $p)
152:     #set ($class = "sub-tab-content active")
153:   #end
154:   #if ($isMobile)
155: 	<div class="mobile-bios-subtab-panel mobile-stats-panel-wrapper #if ($activePos == $p) active #end">
156:   #else
157: 	<div class="$class">
158:   #end
159: #end
160: 
161: 
162: #if (! $isMobile) 
163: 	<div class="stats-fullbox clearfix">
164: #else
165: 	<div class="mobile-stats-panel-container">
166: #end
167: <table>
168:   <tr>
169:     <th #if ($isMobile) class="mobile-stats-fixed-column" #end>&nbsp;</th>
170:     #foreach ($brief in $statPosBriefs)
171:       <th>$brief</th>
172:     #end
173:   </tr>
174: 
175: #set ($careerTotals = $request.getAttribute("careerTotals"))
176: #set ($careerMap = $request.getAttribute("careerMap"))
177: 
178: #foreach ($season in $seasons)
179:   ## Check if we did not get stats for this season
180:   #if ($careerMap.get($season.seasonName))
181:     #split($statPosBriefs, $season.seasonName, $careerMap[$season.seasonName], '')
182:   #elseif ($wiki.valid())
183:     <tr><td class="${mobileNS}fixed-column">${season.seasonName}</td><td colspan="${briefs.size()}" align="center">We could not find the "players" page in the ${season.seasonName} section.</td></tr>
184:   #end
185: 
186: #end
187: 
188: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall, '')
189: 
190: 
191: </table>
192: 
193: </div> ## stats-fullbox
194: 
195: #if($briefsCategoriesLabels)
196: 	</div>
197: #end
198: #end ## macro splitsData
199: 
200: 
201: 
202: 
203: 
204: 
205: 
206: 
207: #macro (splitsData $p)
208: 
209: #set ($p = $positions.get($p))
210: #set ($statPosBriefs = $briefs.get($p))
211: 
212: ## SECONDARY TAB CONTENT.
213: #if($briefsCategoriesLabels)
214:   #set ($class = "sub-tab-content")
215:   #if ($activePos == $p)
216:     #set ($class = "sub-tab-content active")
217:   #end
218:   #if ($isMobile)
219: 	<div class="mobile-bios-subtab-panel mobile-stats-panel-wrapper #if ($activePos == $p) active #end">
220:   #else
221: 	<div class="$class">
222:   #end
223: #end	
224: 	
225: #if (! $isMobile) 
226: 	<div class="stats-fullbox clearfix">
227: #else
228: 	<div class="mobile-stats-panel-container">
229: #end
230: <table>
231:   <tr>
232:     <th #if ($isMobile) class="mobile-stats-fixed-column" #end>&nbsp;</th>
233:     #foreach ($brief in $statPosBriefs)
234:       <th>$brief</th>
235:     #end
236:   </tr>
237: 
238: #split($statPosBriefs, "Total", $splits.overall, "odd")
239: #split($statPosBriefs, "Conference", $splits.conference, "even")
240: #split($statPosBriefs, "Exhibition", $splits.exhibition, "odd")
241: 
242: #printSplitsHr()
243: 
244: #split($statPosBriefs, "Home", $splits.home, "odd")
245: #split($statPosBriefs, "Away", $splits.away, "even")
246: #split($statPosBriefs, "Neutral", $splits.neutral, "odd")
247: 
248: #printSplitsHr()
249: 
250: #set($isOddOrEven = 'odd')
251: 
252: #foreach($gameResult in $gamesResults.entrySet())
253: 	
254: 	#if($gameResult.key == "wins")
255: 		#set($splitGameResult = $splits.inWins)
256: 	#elseif($gameResult.key == "losses")
257: 		#set($splitGameResult = $splits.inLosses)
258: 	#elseif($gameResult.key == "ties")
259: 		#set($splitGameResult = $splits.inTies)
260: 	#end
261: 	
262: 	#split($statPosBriefs, $gameResult.value, $splitGameResult, $isOddOrEven)
263: 	
264: 	#if($isOddOrEven == 'even')
265: 		#set($isOddOrEven = 'odd')
266: 	#else
267: 		#set($isOddOrEven = 'even')
268: 	#end
269: #end
270: 
271: #printSplitsHr()
272: 
273: #if($monthsPlayed and $monthsPlayed.size() > 0)
274: 	
275: 	#set($isOddOrEven = 'odd')
276: 	
277: 	#foreach($month in $monthsPlayed)
278: 		#if($month == 'January')
279: 			#set($splitMonth =  $splits.january)
280: 		#elseif($month == 'February')
281: 			#set($splitMonth =  $splits.february)
282: 		#elseif($month == 'March')
283: 			#set($splitMonth =  $splits.march)
284: 		#elseif($month == 'April')
285: 			#set($splitMonth =  $splits.april)
286: 		#elseif($month == 'May')
287: 			#set($splitMonth =  $splits.may)
288: 		#elseif($month == 'June')
289: 			#set($splitMonth =  $splits.june)
290: 		#elseif($month == 'July')
291: 			#set($splitMonth =  $splits.july)
292: 		#elseif($month == 'August')
293: 			#set($splitMonth =  $splits.august)
294: 		#elseif($month == 'September')
295: 			#set($splitMonth =  $splits.september)
296: 		#elseif($month == 'October')
297: 			#set($splitMonth =  $splits.october)
298: 		#elseif($month == 'November')
299: 			#set($splitMonth =  $splits.november)
300: 		#elseif($month == 'December')
301: 			#set($splitMonth =  $splits.december)
302: 		#end
303: 		
304: 		#split($statPosBriefs, $month, $splitMonth, $isOddOrEven)
305: 		
306: 		#if($isOddOrEven == 'odd')
307: 			#set($isOddOrEven = 'even')
308: 		#else
309: 			#set($isOddOrEven = 'odd')
310: 		#end
311: 	#end	
312: #end	
313: 
314: </table>
315: 
316: </div> ## stats-fullbox
317: 
318: #if($briefsCategoriesLabels)
319: 	</div>
320: #end
321: 
322: #end ## macro splitsData
323: 
324: #macro (printRecentGames)
325: <table>
326: <tr><th colspan="3">Recent Games</th></tr>
327: #set ($eventEnd = -1)
328: #foreach ($event in $events)
329:   #if ($event.event.result.resolved)
330:     #set ($eventEnd = $velocityCount)
331:   #end
332: #end
333: #set ($eventStart = $eventEnd - 5)
334: #if ($eventStart < 0) #set ($eventStart = 0) #end
335: 
336: #set ($counter = 0)
337: #foreach ($event in $events)
338: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
339: 
340:  #set ($counter = $counter + 1)
341:  #if ($counter % 2 == 0)
342:   #set ($row = "even")
343:  #else
344:   #set ($row = "odd")
345:  #end
346: 
347:   <tr class="${row}">
348:     <td>$formatter.formatDate($event.event.date, "MMM d")</td>
349:     <td>
350:     #if ($event.event.neutralSite.length() > 0) vs.
351:     #elseif (!$event.event.home) at
352:     #else ## nothing for a home game
353:     #end
354:     $event.event.opponent.name</td>
355:     <td>
356:     #if ($event.event.statusCode >= 0)
357:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
358:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
359:       #else
360:       ${event.event.APResult}
361:       #end
362:     #end
363:   </tr>
364: #end ## if
365: #end
366: </table>
367: #end
368: 
369: #macro (printSubTab $pos $label $activePos $view)
370: 	<option #if ($activePos == $pos) selected="selected" #end value="${bioURL}?view=${view}&pos=${pos}">$!label</option>
371: #end
372: 
373: 	
374: #macro(printCategories $briefCategoryLabels $viewReport)
375: 	
376: 	#if ($isMobile)
377: 		<select class="mobile-bios-subtabs clearfix">
378: 	#else
379: 		<div class="stats-tabs-secondary clearfix">
380: 		  <ul class="clearfix">
381: 	#end
382: 			
383: 	#foreach($briefCat in $briefCategoryLabels.entrySet())
384: 		#set($briefCatLabel = $briefCat.value)
385: 		#set($briefCatKey = $briefCat.key)
386: 		
387: 		#if($locale == "en_gb" && $briefCatLabel == "Defense")
388: 			#set($briefCatLabel = "Defence")
389: 		#end	
390: 		
391: 		#if ($isMobile)
392: 			#printSubTab($briefCatKey, $briefCatLabel, $activePos, $viewReport)
393: 		#else
394: 			#if ($activePos == $briefCatKey)<li class="active">#else <li> #end<a href="${bioURL}?view=${viewReport}&pos=${briefCatKey}">$briefCatLabel</a></li>
395: 		#end
396: 	#end
397: 	
398: 	#if ($isMobile)
399: 		</select>
400: 	#else
401: 		   </ul>
402: 		</div> ## stats-tabs-secondary
403: 		<div class="sub-tab-panels">
404: 	#end	
405: 	
406: 	#foreach($briefCat in $briefCategoryLabels.entrySet())
407: 		#if($viewReport == "splits")
408: 			#splitsData($briefCat.key)
409: 		#elseif($viewReport == "career")
410: 			#careerData($briefCat.key)
411: 		#end	
412: 	#end
413: 	
414: 	#if (!$isMobile)
415: 		</div>
416: 	#end
417: 	
418: #end
419: 
420: 
421: 
422: #if ($isMobile)
423: 
424: #set ($activePos = $statPos)
425: #if ($request.getParameter("view") == "gamelog" && $positions.get($request.getParameter("pos")).length() > 0)
426: 	#set ($activePos = $positions.get($request.getParameter("pos")))
427: #end
428: 
429: <div id="tab-gamelog">
430: 
431: #if($gamelogsCategoriesLabels)
432: 
433: 	<select class="mobile-bios-subtabs clearfix">
434:     	#foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
435:     		#set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
436:     		
437:     		#if($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
438:     			#set($gamelogsCatLabelVal = "Defence")
439:     		#end
440:     
441:     		#printSubTab($gamelogsCatLabel.key, $gamelogsCatLabelVal, $activePos, 'gamelog')			
442:     	#end	
443:     </select> ## stats-tabs-secondary
444: 
445:     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
446:     	#gamelogData($gamelogsCatLabel.key)
447:     #end
448: 
449: #else
450: 	#gamelogData($pos)
451: #end 
452: 	
453: </div> ## tab-content
454: ## END GAMELOG
455: 
456: 
457: 
458: 
459: 
460: 
461: 
462: 
463: 
464: ## CAREER
465: #set ($activePos = $statPos)
466: #if ($request.getParameter("view") == "career" && $positions.get($request.getParameter("pos")).length() > 0)
467: 	#set ($activePos = $positions.get($request.getParameter("pos")))
468: #end
469: 
470: 
471: <div id="tab-career">
472: 	
473: #if($briefsCategoriesLabels)
474: 	#printCategories($briefsCategoriesLabels, "career")
475: #else
476: 	#careerData($statPos)
477: #end
478: 
479: </div> ## tab-content
480: ## CAREER
481: 
482: 
483: 
484: 
485: 
486: 
487: 
488: 
489: 
490: 
491: 
492: 
493: ## SPLITS
494: #set ($activePos = $statPos)
495: #if ($request.getParameter("view") == "splits" && $positions.get($request.getParameter("pos")).length() > 0)
496: 	#set ($activePos = $positions.get($request.getParameter("pos")))
497: #end
498: 
499: 
500: <div id="tab-splits">
501: 	
502: #if($briefsCategoriesLabels)
503: 	#printCategories($briefsCategoriesLabels, "splits")
504: #else
505: 	#splitsData($statPos)
506: #end
507: 
508: </div> ## tab-content
509: ## SPLITS
510: 
511: 
512: 
513: 
514: 
515: #else
516: 
517: 
518: 
519: ## PROFILE
520: #set ($class = "tab-content clearfix")
521: #if ($view == "profile")
522: 	#set ($class = "tab-content clearfix active")
523: #end
524: <div class="${class}">
525: <div class="stats-wrapper clearfix">
526: 
527: ## LAST SIX GAMES
528: <div class="stats-halfbox-left">
529: #printRecentGames()
530: </div>
531: 
532: ## RANKING
533: $website.include("../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
534: 
535: </div> ## stats-wrapper	
536: </div> ## tab-content
537: ## PROFILE
538: 
539: ## GAMELOG
540: #set ($class = "tab-content clearfix")
541: #if ($view == "gamelog")
542: 	#set ($class = "tab-content clearfix active")
543: #end
544: 
545: #set ($activePos = $statPos)
546: #if ($request.getParameter("view") == "gamelog" && $positions.get($request.getParameter("pos")).length() > 0)
547: 	#set ($activePos = $positions.get($request.getParameter("pos")))
548: #end
549: 
550: <div class="${class}">
551: <div class="stats-wrapper clearfix">
552: 
553: #if($gamelogsCategoriesLabels)
554: <div class="stats-tabs-secondary clearfix">
555: <ul class="clearfix">
556: 	#foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
557: 		#set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
558: 		
559: 		#if($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
560: 			#set($gamelogsCatLabelVal = "Defence")
561: 		#end
562: 
563: 		#if ($activePos == $$gamelogsCatLabel.key)<li class="active">#else <li> #end<a href="${bioURL}?view=gamelog&pos=${gamelogsCatLabel.key}">$gamelogsCatLabelVal</a></li>
564: 	#end
565: </ul>
566: </div> ## stats-tabs-secondary
567: #end
568: 
569: #if($gamelogsCategoriesLabels)
570: 	<div class="sub-tab-panels">
571: 	#foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
572: 		#gamelogData($gamelogsCatLabel.key)
573: 	#end
574: 	</div>	
575: #else
576: 	
577:   #gamelogData($pos)
578:   
579: #end
580: 	
581: </div> ## stats-wrapper
582: </div> ## tab-content
583: ## GAMELOG
584: 
585: 
586: 
587: 
588: 
589: 
590: 
591: 
592: ## CAREER
593: #if ($showCareer)
594: #set ($class = "tab-content clearfix")
595: #if ($view == "career")
596: 	#set ($class = "tab-content clearfix active")
597: #end
598: 
599: #set ($activePos = $statPos)
600: #if ($request.getParameter("view") == "career" && $positions.get($request.getParameter("pos")).length() > 0)
601: 	#set ($activePos = $positions.get($request.getParameter("pos")))
602: #end
603: 
604: <div class="${class}">
605: <div class="stats-wrapper clearfix">
606: 
607: #if($briefsCategoriesLabels)
608: 	#printCategories($briefsCategoriesLabels, "career")
609: #else
610: 	#careerData($statPos)
611: #end		
612: 
613: </div> ## stats-wrapper
614: </div> ## tab-content
615: #end ## show career
616: ## CAREER
617: 
618: 
619: 
620: 
621: 
622: 
623: 
624: 
625: 
626: ## SPLITS
627: #set ($class = "tab-content clearfix")
628: #if ($view == "splits")
629: 	#set ($class = "tab-content clearfix active")
630: #end
631: 
632: #set ($activePos = $statPos)
633: #if ($request.getParameter("view") == "splits" && $positions.get($request.getParameter("pos")).length() > 0)
634: 	#set ($activePos = $positions.get($request.getParameter("pos")))
635: #end
636: 
637: <div class="${class}">
638: <div class="stats-wrapper clearfix">
639: 
640: #if($briefsCategoriesLabels)
641: 	#printCategories($briefsCategoriesLabels, "splits")
642: #else
643: 	#splitsData($statPos)
644: #end		
645: 
646: </div> ## stats-wrapper
647: </div> ## tab-content
648: ## SPLITS
649: 
650: #end ## MOBILE / DESKTOP STATS
651: 
652: #else
653: ## BIO
654: 
655: ## CHANGES FOR STATS
656: 
657: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
658: #set ($bioObject = $page.getDataAsObject())
659: #set ($statsURL = $bioObject.statsURL)
660: ## END OF HACK
661: 
662: #if ($statsURL.length() > 0)
663:   $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
664:   ## various settings to get the variables set
665:   #set ($events = $request.getAttribute("bio_events"))
666:   #set ($seasons = $request.getAttribute("bio_seasons"))
667:   #set ($career = $request.getAttribute("bio_career"))
668:   #set ($labels = $request.getAttribute("bio_labels"))
669:   #set ($briefs = $request.getAttribute("bio_briefs"))
670:   #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
671:   #set ($splits = $request.getAttribute("bio_splits"))
672:   #set ($statPosition = $request.getAttribute("bio_position"))
673:   #set ($positions = $request.getAttribute("bio_positions"))
674:   #set ($playerId = $request.getAttribute("bio_player_id"))
675:   #set ($highlights = $request.getAttribute("bio_highlights"))
676:   #set ($formats = $request.getAttribute("bio_formats"))
677: #end
678: 
679: ## END CHANGES FOR STATS
680: 
681: #set ($pos = "")
682: #set ($pos = $attributes.get("position"))
683: #set ($pos = $statPosition)
684: #set ($pos = $pos.toLowerCase())
685: #set ($posVec = $pos.split("/"))
686: #set ($pos = $posVec[0])
687: #set ($pos = $positions.get($pos))
688: #set ($highlights = $highlights.get($pos))
689: 
690: #set ($showHighlights = true)
691: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
692: 	#set ($showHighlights = false)
693: #end
694: #set ($showCareer = $wiki.valid() && $seasons)
695: #if ("yes" == $options.get("stats_show_career") && $seasons)
696:   #set ($showCareer = "yes")
697: #end
698: 
699: #set ($labels = $labels.get($pos))
700: #set ($briefs = $briefs.get($pos))
701: #set ($gamelogs = $gamelogs.get($pos))
702: #set ($stats = $splits.overall)
703: #set ($hasEvents = $events.size() > 0)
704: #set ($hasSynopsis = $synopsis.length() > 1 && $synopsis.indexOf("<center>") == -1)
705: #set ($htmlStatsURL = "${page.url}-stats")
706: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
707: #set ($bioBriefURL = "${page.url}-brief")
708: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
709: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
710: #if ($options.get("bio_hide_roster") == true)
711: 	#set ($showRoster = false)
712: #end
713: 
714: ## Always default to the bio page if available
715: #set ($view = "bio")
716: 
717: #if ($hasSynopsis || $hasBioBrief)
718: 	#set ($view = "bio")
719: #elseif ($statsURL.length() > 0)
720: 	#set ($view = "profile")
721: #elseif ($hasHTMLStats)
722: 	#set ($view = "htmlstats")
723: #else
724: 	#set ($view = "")
725: #end
726: 
727: #if ($options.get("bio_default_view").length() > 0)
728: 	#set ($checkView = $options.get("bio_default_view"))
729: #end
730: 
731: #if ($request.getParameter("view"))
732: 	#set ($checkView = $request.getParameter("view"))
733: #end
734: 
735: #if ($checkView == "profile" && $statsURL.length() > 0)
736: 	#set ($view = "profile")
737: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
738: 	#set ($view = "bio")
739: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
740: 	#set ($view = "gamelog")
741: #elseif ($checkView == "career" && $showCareer)
742: 	#set ($view = "career")
743: #elseif ($checkView == "splits" && $statsURL.length() > 0)
744: 	#set ($view = "splits")
745: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
746: 	#set ($view = "htmlstats")
747: #end
748: 
749: #if ($attributes.get("full_name"))
750: 	#set ($fullName = $attributes.get("full_name"))
751: #else
752: 	#set ($firstName = $!attributes.get("first_name"))
753: 	#set ($lastName = $!attributes.get("last_name"))
754: 	#set ($fullName = "${firstName} ${lastName}")
755: #end
756: 
757: #macro (printHeadshot $width $height)
758: 	#if ($headshot.url)
759: 		<img src="$headshot.url?max_width=$!width&max_height=$!height" alt="$fullName" title="$fullName" class="bio-headshot" />
760: 	#else
761: 		#if ($website.exists("/images/setup/headshot_default.jpg"))
762: 			<img src="/images/setup/headshot_default.jpg?max_width=$!width&max_height=$!height" alt="$fullName" title="$fullName" class="bio-headshot" />
763: 		#else
764: 			<img src="/info/images/default_headshot.jpg?max_width=$!width&max_height=$!height" alt="$fullName" title="$fullName" class="bio-headshot" />
765: 		#end
766: 	#end
767: #end
768: 
769: #if ($isMobile)
770: 
771: #set ($hasBioTab = false)
772: #if ($hasSynopsis || $hasBioBrief)
773: 	#set ($hasBioTab = true)
774: #end
775: 
776: #set ($hasProfileTab = false)
777: #if (($highlights && $showHighlights) || $events.size() > 0 || $website.exists("$statsURL/../players"))
778: 	#set ($hasProfileTab = true)
779: #end
780: 
781: <script type="text/javascript">
782: 	window.mobileConf = {
783: 		page : 'bios',
784: 		pageParams : {
785: 			view : '$!view'
786: 		}
787: 	}
788: </script>
789: 
790: <div class="bios">
791: 	<div class="profile">
792: 		<div class="images">
793: 			<div class="photo">
794: 				#printHeadshot(81, 116)
795: 			</div>				
796: 			#if ($attributes.get("number"))	<div class="number"> $!attributes.get("number") </div> #end
797: 		</div>
798: 		<div class="texts">
799: 			<div class="name">$!attributes.get("first_name") $!attributes.get("last_name")</div>
800: 			<div class="data">
801: 				#foreach ($field in $fields)
802: 					#if (! $field.key.startsWith("custom"))
803: 						#if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
804: 
805: 							#if ($field.key == "phone1" || $field.key == "phone2")
806: 								Phone: $!attributes.get($field.key) <br />
807: 							#elseif ($field.key == "email_address")
808: 								#set ($emailAdd = $attributes.get($field.key))
809: 								Email: <a href="mailto:${emailAdd}">$emailAdd</a> <br />
810: 							#else
811: 								$field.value: $!attributes.get($field.key) <br />
812: 							#end
813: 
814: 							#set ($counter = $counter + 1)
815: 						#end
816: 					#end
817: 				#end
818: 					
819: 				#foreach ($i in [1..10])
820: 					#set ($customKey = "bio_custom${i}")
821: 					#if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
822: 						$options.get($customKey): </td><td class="val">$!attributes.get("custom${i}") <br />
823: 						#set ($counter = $counter + 1)
824: 					#end
825: 				#end
826: 				
827: 			</div>
828: 		</div>
829: 	</div>	
830: 
831: 	#if ($hasBioTab || $hasProfileTab)
832: 	<div class="details mobile-tabs mobile-stats" id="mobile-bios-tabs-container">
833: 		<ul class="mobile-bios-tabs">
834: 			#if ($hasBioTab)
835: 				<li><a data-view="bio" href="#tab-bios">Bio</a></li>
836: 			#end
837: 			#if ($hasProfileTab)
838: 				<li><a data-view="profile" href="#tab-profile">Profile</a></li>
839: 			#end
840: 			#if ($statsURL.length() > 0)
841: 				<li><a data-view="gamelog" href="#tab-gamelog">Game Log</a></li>
842: 				#if ($showCareer)
843: 				    <li><a data-view="career" href="#tab-career">Career</a></li>
844: 				#end
845: 				<li><a data-view="splits" href="#tab-splits">Splits</a></li>
846: 			#end
847: 		</ul>
848: 		
849: 		#if ($hasBioTab)
850: 		<div id="tab-bios">
851: 			#if ($hasSynopsis)
852: 				$synopsis
853: 			#elseif ($hasBioBrief)
854: 				<p>$website.include("$bioBriefURL")</p>
855: 			#end
856: 		</div>
857: 		#end
858: 		
859: 		#if ($hasProfileTab)
860: 		#set ($cellWidth = $tool.math.toInteger($tool.math.div(100, $highlights.size())))
861: 			
862: 		<div id="tab-profile">
863: 			## HIGHLIGHTS
864: 			#if ($highlights && $showHighlights)
865: 				<div class="bios-stat-wrapper">
866: 					<h4>Highlights</h4>
867: 					<table width="100%"><tr>
868: 					#foreach ($highlight in $highlights.keySet())
869: 						<th #if (! $isMobile) width="18%" #else width="${cellWidth}%" #end>$!highlights.get($highlight)</th>
870: 					#end
871: 					</tr><tr>
872: 					#foreach ($highlight in $highlights.keySet())
873: 						<td>
874: 						#set ($value = "-")
875: 						#set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
876: 						#if ($value.length() > 0)
877: 							<span class="value">$value</span>
878: 						#else
879: 							<span class="value">-</span>
880: 						#end	
881: 						</td>
882: 					#end
883: 					</tr></table>
884: 				</div>
885: 			#end
886: 			
887: 			## RECENT GAMES
888: 			#if ($events.size() > 0)
889: 			<div class="bios-stat-wrapper">
890: 				##<h4>Recent Games</h4>
891: 				#printRecentGames()
892: 			</div>
893: 			#end
894: 			
895: 			<div class="bios-stat-wrapper">
896: 				$website.include("$statsURL/../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${pos}")
897: 			</div>
898: 			
899: 		</div>
900: 		#end
901: 		
902: 		## STATS TABS
903: 		#if ($statsURL.length() > 0)
904: 			$website.includeAgain("${statsURL}?tmpl=bio-template&stats=1&biourl=${tool.esc.url($page.url)}&view=${view}&pos=${request.getParameter('pos')}")
905: 			
906: 			<div id="tab-splits"></div>
907: 			
908: 		#end
909: 		
910: 	</div>
911: 	#end
912: </div>   
913:    
914:    
915: #else
916: ## NOT MOBILE
917: 
918: <head>
919: 	<title>$fullName #if ($attributes.get("team")) | $attributes.get("team")#end</title>
920: 	<link rel="stylesheet" type="text/css" href="/info/bio-styles.css" />
921: </head>
922: 
923: ## FULL ROSTER
924: <div class="bio-wrap clearfix">
925: 
926: <div class="head clearfix">
927: 
928: <div class="bio-title">#if ($attributes.get("number"))<span class="number">$!attributes.get("number") - #end</span><span class="name">$fullName</span></div>
929: 
930: <div class="about">
931: 
932: <div class="clearfix">
933: 
934: #printHeadshot(150, 200)
935: 
936: #set ($counter = 0)
937: <table cellpadding="5" cellspacing="5" border="0">
938: 
939: #foreach ($i in [1..10])
940: 	#set ($stickyKey = "bio_custom${i}_sticky")
941: 	#if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
942: 		<tr><td class="lbl">$options.get($stickyKey): </td><td class="val">$!attributes.get("custom${i}")</td></tr>
943: 		#set ($counter = $counter + 1)
944: 	#end
945: #end
946: 
947: #foreach ($field in $fields)
948: 	#if (! $field.key.startsWith("custom"))
949: 		#if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
950: 
951: 			#if ($field.key == "phone1" || $field.key == "phone2")
952: 				<tr><td class="lbl">Phone: </td><td class="val">$!attributes.get($field.key)</td></tr>
953: 			#elseif ($field.key == "email_address")
954: 				#set ($emailAdd = $attributes.get($field.key))
955: 				<tr><td class="lbl">Email: </td><td class="val"><a href="mailto:${emailAdd}">$emailAdd</a></td></tr>
956: 			#else
957: 				<tr><td class="lbl">$field.value: </td><td class="val">$!attributes.get($field.key)</td></tr>
958: 			#end
959: 
960: 			#set ($counter = $counter + 1)
961: 		#end
962: 	#end
963: #end
964: 
965: #foreach ($i in [1..10])
966: 	#set ($customKey = "bio_custom${i}")
967: 	#if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
968: 		<tr><td class="lbl">$options.get($customKey): </td><td class="val">$!attributes.get("custom${i}")</td></tr>
969: 		#set ($counter = $counter + 1)
970: 	#end
971: #end
972: 
973: </table>
974: 
975: </div> ## clearfix
976: </div> ## ends about
977: 
978: #if ($highlights && $showHighlights)
979: <div class="headstats">
980: 	#foreach ($highlight in $highlights.keySet())
981: 		<div class="hst">
982: 		<span class="title" title="$!highlights.get($highlight)">$!highlights.get($highlight)</span>
983: 		#set ($value = "-")
984: 		#set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
985: 		#if ($value.length() > 0)
986: 			<span class="value">$value</span>
987: 		#else
988: 			<span class="value">-</span>
989: 		#end
990: 		</div>
991: 	#end
992: </div>
993: #end ## if-highlights
994: 
995: </div> ## ends head
996: 
997: #if ($hasSynopsis || $hasBioBrief || $statsURL.length() > 0 || $hasHTMLStats || $showRoster)
998: <div class="stats-tabs clearfix">
999: 	#if (($hasSynopsis || $hasBioBrief || $statsURL.length() > 0 || $hasHTMLStats) && $view.length() > 0)
1000: 	<ul class="clearfix">
1001: 		#if ($hasSynopsis || $hasBioBrief)
1002: 			#if ($view == "bio")<li class="active">#else<li>#end<a href="${page.url}?view=bio">Bio</a></li>
1003: 		#end
1004: 		
1005: 		#if ($statsURL.length() > 0)
1006: 			#if ($view == "profile")<li class="active">#else<li>#end<a href="${page.url}?view=profile">Player Profile</a></li>
1007: 			#if ($view == "gamelog")<li class="active">#else<li>#end<a href="${page.url}?view=gamelog">Game Log</a></li>
1008: 			#if ($showCareer)
1009:   			    #if ($view == "career")<li class="active">#else<li>#end<a href="${page.url}?view=career">Career Stats</a></li>
1010:   			#end
1011: 			#if ($view == "splits")<li class="active">#else<li>#end<a href="${page.url}?view=splits">Split Stats</a></li>
1012: 		#end
1013: 
1014: 		#if ($hasHTMLStats)
1015: 			#if ($view == "htmlstats")<li class="active">#else<li>#end<a href="${page.url}?view=htmlstats">HTML Stats</a></li>
1016: 		#end
1017: 	</ul>
1018: 	#end
1019: 	#if ($showRoster)
1020: 		#if ($page.contentType == "loki/bio")
1021: 			#set ($headlinesFeaturedSize = 0)
1022: 			#foreach ($featuredPage in $page.headlinesFeatured)
1023: 				#if ($featuredPage.contentType == "loki/headlines")
1024: 					#set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
1025: 				#end
1026: 			#end
1027: 			#if ($headlinesFeaturedSize > 0)
1028: 				<select class="roster-select-list">
1029: 					<option selected="selected" class="bold">Related Bios</option>
1030:     			#foreach ($featuredPage in $page.headlinesFeatured)
1031:     				#if ($featuredPage.contentType == "loki/headlines")
1032:     					$website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
1033:     				#end
1034: 				#end
1035: 				</select>
1036: 			#end
1037: 		#elseif ($page.contentType == "loki/bio-network")
1038: 			#set ($relatedPlayers = $page.sectionPage.children)
1039: 			#set ($teamNames = {})
1040: 			#foreach ($relatedPlayer in $relatedPlayers)
1041: 				#if ($relatedPlayer.contentType == "loki/bio-network")
1042: 					#set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
1043: 					## <span class="none relatedplayeratt">$relatedPlayerObj</span>
1044: 					#set ($teamName = $relatedPlayerObj.get("team"))
1045: 					#if ($teamName.length() > 0)
1046:     					#if (!$teamNames.containsValue($teamName))
1047:     						$!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
1048:     					#end
1049: 					#end
1050: 				#end
1051: 			#end
1052: 			##<span class="none teamnames">$teamNames</span>
1053: 			<select class="roster-select-list">
1054: 			#foreach ($i in [1..$teamNames.size()])
1055: 				#if ($teamNames.size() > 1)
1056: 					<optgroup label="$teamNames.get($i)">
1057: 				#end
1058: 				
1059: 				#foreach ($relatedPlayer in $relatedPlayers)
1060: 					#if ($relatedPlayer.contentType == "loki/bio-network")
1061: 						#set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
1062: 						#set ($teamName = $relatedPlayerObj.get("team"))
1063: 						#if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
1064: 							#set ($playerFirstName = $relatedPlayerObj.get("first_name"))
1065: 							#set ($playerLastName = $relatedPlayerObj.get("last_name"))
1066: 							#if ($page.url == $relatedPlayer.url)
1067: 								<option value="$relatedPlayer.url" selected="selected" class="bold">${playerFirstName} ${playerLastName}</option>
1068: 							#else
1069: 								<option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option>
1070: 							#end
1071: 						#end
1072: 					#end
1073: 				#end
1074: 				
1075: 				#if ($teamNames.size() > 1)
1076: 					</optgroup>
1077: 				#end
1078: 			#end
1079: 			</select>
1080: 		#end
1081: 	#end
1082: </div>
1083: #end
1084: 
1085: #if ($hasSynopsis || $hasBioBrief || $statsURL.length() > 0 || $hasHTMLStats)
1086: 	<div class="tab-content-panels">
1087: #end
1088: 
1089: ## BIO TAB
1090: #if ($hasSynopsis || $hasBioBrief)
1091: 
1092: #set ($class = "tab-content clearfix")
1093: #if ($view == "bio")
1094: 	#set ($class = "tab-content clearfix active")
1095: #end
1096: <div class="${class}">
1097: 
1098: <div class="synopsis clearfix">
1099: #if ($hasSynopsis)
1100: 	$synopsis
1101: #elseif ($hasBioBrief)
1102: 	$website.include("$bioBriefURL")
1103: #end
1104: </div>
1105: 
1106: </div> ## tab-content
1107: #end ## BIO TAB ENDS
1108: 
1109: ## STATS TABS
1110: #if ($statsURL.length() > 0)
1111:   $website.includeAgain("${statsURL}?tmpl=bio-template&stats=1&biourl=${tool.esc.url($page.url)}&view=${view}&pos=${request.getParameter('pos')}")
1112: #end
1113: 
1114: ## HTML TAB
1115: #if ($hasHTMLStats)
1116: 
1117: #set ($class = "tab-content clearfix")
1118: #if ($view == "htmlstats")
1119: 	#set ($class = "tab-content clearfix active")
1120: #end
1121: <div class="${class}">
1122: 	<a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
1123: </div>
1124: 
1125: #end
1126: 
1127: #if ($hasSynopsis || $hasBioBrief || $statsURL.length() > 0 || $hasHTMLStats)
1128: 	</div>
1129: #end
1130: 
1131: </div> ## ends bio-wrap
1132: 
1133: #if ($request.getAttribute("bioScriptCalled"))
1134:   #set ($scriptCalled = true)
1135: #else
1136:   #set ($scriptCalled = false)
1137: #end
1138: 
1139: #if (!$scriptCalled)
1140: 	
1141: $!request.setAttribute("bioScriptCalled", true)
1142: <script type="text/javascript" src="$website.cdn("/info/jquery.address-1.5.min.js")"></script>
1143: <script type="text/javascript">
1144: 
1145: jQuery.address.strict(false).state('${page.url}').init(function() {
1146: 	$('.bio-wrap .stats-tabs a').address();
1147: 	$('.bio-wrap .stats-tabs-secondary a').address();
1148: });
1149: 
1150: $(function() {
1151: 
1152: $('.bio-wrap .stats-tabs li').click(function(e) {
1153: 	e.preventDefault();
1154: 	if (!$(this).hasClass('active')) {
1155: 		$(this).addClass('active').siblings().removeClass('active');
1156: 		$(this).parent().parent('.stats-tabs').next('.tab-content-panels').children('.tab-content').removeClass('active').eq($(this).index()).addClass('active');
1157: 	}
1158: });
1159: 
1160: $('.bio-wrap .stats-tabs-secondary li').click(function(e) {
1161: 	e.preventDefault();
1162: 	if (!$(this).hasClass('active')) {
1163: 		$(this).addClass('active').siblings().removeClass('active');
1164: 		$(this).parent().parent('.stats-tabs-secondary').next('.sub-tab-panels').children('.sub-tab-content').removeClass('active').eq($(this).index()).addClass('active');
1165: 	}
1166: });
1167: 
1168: #if ($showRoster)
1169: 	$('.bio-wrap .roster-select-list').change(function() {
1170: 		window.location.href = $(this).val();
1171: 	});
1172: #end
1173: 
1174: #if ($hasHTMLStats)
1175: 	$('.bio-htmlstats-identifier').each(function() {
1176: 		var targetElement = $(this);
1177: 		jQuery.get($(this).attr('href'), function(data) {
1178: 			var htmlStats = $(data).find('center').first();
1179: 			htmlStats.add(htmlStats.siblings('center'));
1180: 			if (htmlStats.children().length > 0) {
1181: 				targetElement.replaceWith(htmlStats);
1182: 			}
1183: 		});
1184: 	});
1185: #end
1186: 
1187: });
1188: </script>
1189: #end
1190: 
1191: #end ## MOBILE CHECK
1192: #end ## STATS PARAMETER
1193: 
1194: $wiki

View: Mobile | Desktop