6 Kyle Attl
6 Kyle Attl
Birth Date: 08/16/1991
Height: 6-0
Weight: 180
Year: Senior
Hometown: San Diego, CA
Position: INF
Major: Communications
Bats/Throws: R/R
EXP: 3V
Previous School: Rancho Bernardo HS
gp 57
avg .269
hr 3
rbi 28
r 33
sb 6

2013

Kyle Attl turned in his best season for the Matadors as a senior in 2013. He raised his career batting average to .244 after hitting .269. Attl tallied 58 hits, his most in a single season, and had 10 doubles to go with three home runs. He hit a pair of home runs in the series at UC Davis to help the Matadors sweep the Aggies and win a series at UCD for the first time in school history. In the game at UCD on May 4th, Attl matched his career high with four runs batted in. His 28 RBIs and 20 walks this year were also career highs and Attl matched a CSUN single-season record with 11 sacrifice bunts. In addition, he stole six bases in eight attempts and had three hits in a game on three occasions.

2012

Attl had two hits in the series at Sacramento State to start the season. He followed that up with a single, a walk and one RBI in the home opener against #22 UCLA. In the series sweep over Northwestern, Attl had five hits, three runs scored and two RBI and went 1-for-4 with a run against Washington. Against Indiana (3/10), he went 2-for-5 at the plate and scored a team season-high four runs in the victory. Attl hit his first home run of the season on Mar. 14 against Rhode Island and went 2-for-3 with two runs scored. He then when 2-for-3 with two runs scored and an RBI at LMU (3/20). Attl had an RBI at #13 Cal State Fullerton (3/31) and had a bloop in the finale that drove in a run but was ruled as an error. He hit his second home run of the season, a three-run shot, at UCSB (4/6). Attl had four hits in the series victory over #27 Cal Poly (4/14-15), including a double in the opener and the game-winning two-run home run in the finale. He collected his fourth home run of the year in a win over CSU Bakersfield (4/24), going 2-for-3 with two RBIs. Attl went 1-for-4 with a double, RBI and run scored in the series-clinching win at UC Riverside (5/5). In the series against UC Irvine (5/11 - 5/13), Attl went 6-for-11 with two doubles and two RBIs.

2011

Kyle Attl was awarded the Mike Frick Memorial Scholarship for the 2010-11 year. In his second season for the Matadors, Attl assumed the role of starting shortstop before a finger injury at San Diego State (5/10) sidelined him for the final three series of the year. He started 39 of 42 games he appeared in and owned a .241 batting average with 28 hits in 116 at-bats, including four doubles, a triple, a home run and 15 RBI. Attl had six multiple hit games, including a four-hit performance against New Mexico State at the YMBL Cardinal Classic at Lamar University (3/3), and two multiple RBI games, including a four RBI day at UNLV (4/5). He went 1-for-2 on Opening Day against Seattle University (2/18), recording his first career hit and went 1-for-3 in Game 2 of a doubleheader with Seattle University (2/19) and plated his first career RBI. He went 1-for-2 with a double against Valparaiso (2/27 Gm. 1) and was a perfect 4-for-4 from the plate with an RBI against New Mexico State (3/3). He hit 2-for-3 with an RBI and run scored in the Game 1 win over Lafayette (3/12) and went 2-for-5 with two runs scored and an RBI in a win against Sacramento State (3/19). Attl also went 2-for-3 and scored the tying run vs. LMU (3/27), also threw out two runners at the plate against the Lions and had a bases-clearing double and four RBI at UNLV (4/5). He went 3-for-5 with three runs scored and two RBI vs. Pacific (4/21) and hit 2-for-4 with a run scored in the finale at UC Davis (5/1). Attl had a hit and a run scored before being replaced due to an injury at San Diego State (5/10).

2010

In his debut season at Cal State Northridge, Kyle Attl appeared in five games, scoring on one occasion and had one at-bat at UCLA (2/21), LMU (3/13), Sacramento State (3/27), and at UC Santa Barbara (5/8). He entered the game as a pinch-runner and scored a run vs. Cal Poly (4/16) and as a pinch-hitter vs. Cal State Fullerton (5/30).

RANCHO BERNARDO HIGH SCHOOL

Attl received several awards during his time with the Broncos, including All-League First Team honors, CIF Utility Player of the Year and team Most Valuable Player.

CAREER BATTING STATS

Year  GP-GS  AB  R  H 2B 3B HR RBI BB SO SF SH SB-ATT AVG
2010   12-0   5
 1
  0
 0
 0  0   0  0   1  0  0   0-0 .000
2011
  42-39
116 17
 28
 4
 1  1  15 11  32  1  5   0-3 .241
2012   53-53 187
24
 42
10
 0  4  22 15
 37
 1  8   1-4
.225
2013
  57-56
216
33
 58
10
 0
 3
 28 20
 53
 3
11
  6-8
.269
Total 164-148
524
75
128
24
 1  8  65 46
123
 5 24   7-15 .244
                             


Recent Games
May 17 at Cal Poly L, 5-1
May 18 at Cal Poly L, 6-2
May 19 at Cal Poly L, 7-2
May 23 Cal State Fullerton L, 5-2
May 24 Cal State Fullerton L, 6-4
May 25 Cal State Fullerton L, 9-6
Statistics category Overall Conf
Games 57 27
Plate appearances 256 129
At Bats 216 113
Runs 33 14
Hits 58 30
Doubles 10 6
Triples - -
Home Runs 3 3
Runs Batted In 28 18
Total bases 77 45
Walks 20 6
Hit by pitch 6 1
Strikeouts 53 30
Sacrifice Flies 3 1
Sacrifice Hits 11 8
Hit into double play 6 3
Stolen Bases 6 2
Caught Stealing 2 1
Batting Average .269 .265
On Base Percentage .343 .306
Slugging Percentage .356 .398
Appearances 0 0
Games started 0 0
Wins 0 0
Losses 0 0
Saves 0 0
Complete Games - -
Shutouts - -
Innings Pitched 0.0 0.0
Hits - -
Runs - -
Earned Runs - -
Walks - -
Strikeouts - -
Strikeouts per Game - -
Doubles Allowed - -
Triples Allowed - -
Home Runs Allows - -
At Bats Against - -
Batting Average Against - -
Earned Run Average 0.00 0.00
Wild pitches - -
Hit Batters - -
Balks - -
Sacrifice Flies Allowed - -
Sacrifice Hits Allowed - -
Total Chances 277 132
Put Outs 106 52
Assists 160 76
Errors 11 4
Fielding Percentage .960 .970
Double Plays 35 19
Stolen Bases Allowed - -
Runners Caught Stealing - -
Runners Caught Stealing Percentage - -
Passed Balls - -
Catcher's Interference - -
Date Opponent Score ab r h 2b 3b hr rbi bb k sb cs
Feb 9 CSUN Alumni T, 0-0 - - - - - - - - - - -
Feb 15 Saint Mary's (CA) W, 5-0 3 1 1 1 - - 0 - - - -
Feb 16 Saint Mary's (CA) W, 8-3 1 0 0 - - - 0 - 1 - -
Feb 16 Saint Mary's (CA) L, 8-6 1 1 1 - - - 0 - - - -
Feb 17 Saint Mary's (CA) W, 8-3 4 1 2 - - - 0 - - - -
Feb 19 at CSU Bakersfield   - - - - - - - - - - -
Feb 20 CSU Bakersfield   - - - - - - - - - - -
Feb 22 at Southern California W, 9-4 4 1 2 - - - 0 1 - - -
Feb 23 Southern California L, 6-5 3 0 2 - - - 0 2 1 1 -
Feb 24 at Southern California L, 4-2 3 1 1 - - - 0 - - - -
Feb 28 at Washington State L, 2-1 3 0 0 - - - 0 - - - -
Mar 1 at Washington State L, 8-2 3 0 1 - - - 0 1 1 - -
Mar 2 at Washington State L, 7-4 4 1 1 - - - 0 1 1 - -
Mar 3 at Washington State W, 5-3 3 1 1 - - - 1 1 - - -
Mar 4 at Oregon L, 12-4 5 0 2 - - - 1 - 2 - -
Mar 5 at Oregon L, 4-1 4 0 1 - - - 0 - 2 - -
Mar 8 at Sacramento State L, 4-3 4 1 1 1 - - 0 - - - -
Mar 9 at Sacramento State W, 5-3 4 0 1 - - - 1 - 1 - -
Mar 10 at Sacramento State L, 9-6 3 1 0 - - - 0 2 2 - -
Mar 12 UCLA L, 5-4 4 1 1 - - - 1 - - - -
Mar 19 CSU Bakersfield L, 5-3 3 1 1 - - - 0 - 1 - -
Mar 22 Utah Valley University W, 8-2 3 1 1 - - - 1 - - - -
Mar 23 Utah Valley University W, 4-3 3 1 1 - - - 0 - - - -
Mar 23 Utah Valley University W, 5-4 3 1 2 - - - 1 2 - - -
Mar 24 Utah Valley University W, 3-1 4 0 0 - - - 0 - 2 - -
Mar 26 San Diego W, 8-4 4 1 2 - - - 1 - - 1 1
Mar 28 at Long Beach State W, 10-5 3 0 1 1 - - 3 - - - -
Mar 29 at Long Beach State L, 14-2 5 0 1 - - - 0 - - - 1
Mar 30 at Long Beach State L, 7-5 5 1 3 1 - - 1 - 1 - -
Apr 1 CSU Bakersfield W, 2-1 3 0 0 - - - 0 1 1 1 -
Apr 2 Loyola Marymount L, 9-7 4 1 0 - - - 1 - 1 - -
Apr 5 UC Riverside W, 5-3 5 1 3 - - - 0 - 1 - -
Apr 6 UC Riverside W, 3-1 4 0 0 - - - 0 - 2 - -
Apr 7 UC Riverside W, 15-3 4 2 1 - - - 1 2 - - -
Apr 8 Washington W, 8-7 5 0 1 1 - - 2 - 2 - -
Apr 10 at CSU Bakersfield W, 8-5 5 1 1 1 - - 0 - 2 - -
Apr 12 at UC Irvine L, 4-3 4 0 1 1 - - 1 - 1 - -
Apr 13 at UC Irvine W, 2-1 3 0 1 - - - 1 1 1 - -
Apr 14 at UC Irvine L, 2-0 4 0 2 - - - 0 - 1 1 -
Apr 19 at Hawai'i W, 4-1 5 0 1 - - - 0 - 2 - -
Apr 20 at Hawai'i W, 9-4 4 1 1 1 - - 1 1 - - -
Apr 21 at Hawai'i W, 10-5 5 2 1 - - - 0 - 1 1 -
Apr 23 at Loyola Marymount L, 5-0 4 0 0 - - - 0 - 1 - -
Apr 26 Pacific W, 6-1 3 0 0 - - - 1 - 2 - -
Apr 27 Pacific W, 5-2 3 1 1 - - - 0 - 2 - -
Apr 28 Pacific W, 8-7 5 0 2 - - - 1 1 - - -
Apr 30 at San Diego W, 6-4 3 1 0 - - - 0 1 2 - -
May 3 at UC Davis W, 9-3 4 2 2 2 - - 0 - - - -
May 4 at UC Davis W, 8-5 5 1 3 - - 1 4 1 2 - -
May 5 at UC Davis W, 10-4 5 1 1 - - 1 1 - 1 - -
May 7 at UCLA W, 4-1 3 1 1 - - - 0 2 - 1 -
May 10 UC Santa Barbara L, 6-1 4 0 1 - - - 0 - 1 - -
May 11 UC Santa Barbara L, 6-2 4 0 1 - - - 1 - - - -
May 12 UC Santa Barbara W, 7-1 4 0 1 - - - 1 - 1 - -
May 17 at Cal Poly L, 5-1 4 0 0 - - - 0 - 2 - -
May 18 at Cal Poly L, 6-2 5 1 1 - - 1 1 - 2 - -
May 19 at Cal Poly L, 7-2 4 0 0 - - - 0 - 1 - -
May 23 Cal State Fullerton L, 5-2 4 0 0 - - - 0 - 2 - -
May 24 Cal State Fullerton L, 6-4 4 0 0 - - - 0 - 4 - -
May 25 Cal State Fullerton L, 9-6 4 1 1 - - - 0 - - - -
Date Opponent Score hbp sf sh tb xbh hdp go fo go/fo pa
Feb 9 CSUN Alumni T, 0-0 - - - - - - - - - -
Feb 15 Saint Mary's (CA) W, 5-0 1 - - 2 1 - - 2 - 4
Feb 16 Saint Mary's (CA) W, 8-3 1 - 1 0 0 - 1 - - 3
Feb 16 Saint Mary's (CA) L, 8-6 - - - 1 0 - - - - 1
Feb 17 Saint Mary's (CA) W, 8-3 - - - 2 0 - - 2 - 4
Feb 19 at CSU Bakersfield   - - - - - - - - - -
Feb 20 CSU Bakersfield   - - - - - - - - - -
Feb 22 at Southern California W, 9-4 - - - 2 0 - 1 1 1.00 5
Feb 23 Southern California L, 6-5 - - - 2 0 - - - - 5
Feb 24 at Southern California L, 4-2 - - - 1 0 - 1 1 1.00 3
Feb 28 at Washington State L, 2-1 - - - 0 0 1 2 1 2.00 3
Mar 1 at Washington State L, 8-2 - - - 1 0 - - 1 - 4
Mar 2 at Washington State L, 7-4 - - - 1 0 1 1 1 1.00 5
Mar 3 at Washington State W, 5-3 - - - 1 0 1 2 - - 4
Mar 4 at Oregon L, 12-4 - - - 2 0 - - 1 - 5
Mar 5 at Oregon L, 4-1 - - - 1 0 - 1 - - 4
Mar 8 at Sacramento State L, 4-3 - - - 2 1 - 1 2 0.50 4
Mar 9 at Sacramento State W, 5-3 - 1 - 1 0 - 1 2 0.50 5
Mar 10 at Sacramento State L, 9-6 - - - 0 0 - 1 - - 5
Mar 12 UCLA L, 5-4 - - - 1 0 - 1 2 0.50 4
Mar 19 CSU Bakersfield L, 5-3 - - 1 1 0 - 2 - - 4
Mar 22 Utah Valley University W, 8-2 1 - 1 1 0 - 2 1 2.00 5
Mar 23 Utah Valley University W, 4-3 - - - 1 0 - 1 1 1.00 3
Mar 23 Utah Valley University W, 5-4 - - - 2 0 - - 1 - 5
Mar 24 Utah Valley University W, 3-1 - - - 0 0 - 2 - - 4
Mar 26 San Diego W, 8-4 - 1 - 2 0 - 1 2 0.50 5
Mar 28 at Long Beach State W, 10-5 - - 2 2 1 - 2 1 2.00 5
Mar 29 at Long Beach State L, 14-2 - - - 1 0 - 2 2 1.00 5
Mar 30 at Long Beach State L, 7-5 - - - 4 1 - - 1 - 5
Apr 1 CSU Bakersfield W, 2-1 - - - 0 0 - 1 1 1.00 4
Apr 2 Loyola Marymount L, 9-7 2 - - 0 0 - 2 1 2.00 6
Apr 5 UC Riverside W, 5-3 - - - 3 0 - 1 - - 5
Apr 6 UC Riverside W, 3-1 - - - 0 0 1 2 - - 4
Apr 7 UC Riverside W, 15-3 - - - 1 0 1 2 1 2.00 6
Apr 8 Washington W, 8-7 - - - 2 1 - 1 1 1.00 5
Apr 10 at CSU Bakersfield W, 8-5 - - - 2 1 - 1 1 1.00 5
Apr 12 at UC Irvine L, 4-3 - - 1 2 1 - 3 - - 5
Apr 13 at UC Irvine W, 2-1 - - 1 1 0 - 1 1 1.00 5
Apr 14 at UC Irvine L, 2-0 - - - 2 0 - 1 - - 4
Apr 19 at Hawai'i W, 4-1 - - - 1 0 - - 2 - 5
Apr 20 at Hawai'i W, 9-4 - - - 2 1 - 2 1 2.00 5
Apr 21 at Hawai'i W, 10-5 - - - 1 0 - 3 - - 5
Apr 23 at Loyola Marymount L, 5-0 - - - 0 0 - 2 1 2.00 4
Apr 26 Pacific W, 6-1 - 1 - 0 0 1 1 1 1.00 4
Apr 27 Pacific W, 5-2 1 - - 1 0 - - - - 4
Apr 28 Pacific W, 8-7 - - - 2 0 - 1 2 0.50 6
Apr 30 at San Diego W, 6-4 - - - 0 0 - - 1 - 4
May 3 at UC Davis W, 9-3 - - 1 4 2 - 1 2 0.50 5
May 4 at UC Davis W, 8-5 - - - 6 1 - - - - 6
May 5 at UC Davis W, 10-4 - - - 4 1 - - 3 - 5
May 7 at UCLA W, 4-1 - - - 1 0 - 1 1 1.00 5
May 10 UC Santa Barbara L, 6-1 - - - 1 0 - 2 - - 4
May 11 UC Santa Barbara L, 6-2 - - 1 1 0 - 3 1 3.00 5
May 12 UC Santa Barbara W, 7-1 - - 1 1 0 - 1 2 0.50 5
May 17 at Cal Poly L, 5-1 - - 1 0 0 - 1 2 0.50 5
May 18 at Cal Poly L, 6-2 - - - 4 1 - 1 1 1.00 5
May 19 at Cal Poly L, 7-2 - - - 0 0 - - 3 - 4
May 23 Cal State Fullerton L, 5-2 - - - 0 0 - 1 - - 4
May 24 Cal State Fullerton L, 6-4 - - - 0 0 - - - - 4
May 25 Cal State Fullerton L, 9-6 - - - 1 0 - 1 2 0.50 4
Date Opponent Score w l sv ip h r er era bb k hr
Feb 9 CSUN Alumni T, 0-0 - - - - - - - - - - -
Feb 15 Saint Mary's (CA) W, 5-0 0 0 0 0.0 - - - 0.00 - - -
Feb 16 Saint Mary's (CA) W, 8-3 0 0 0 0.0 - - - 0.00 - - -
Feb 16 Saint Mary's (CA) L, 8-6 0 0 0 0.0 - - - 0.00 - - -
Feb 17 Saint Mary's (CA) W, 8-3 0 0 0 0.0 - - - 0.00 - - -
Feb 19 at CSU Bakersfield   - - - - - - - - - - -
Feb 20 CSU Bakersfield   - - - - - - - - - - -
Feb 22 at Southern California W, 9-4 0 0 0 0.0 - - - 0.00 - - -
Feb 23 Southern California L, 6-5 0 0 0 0.0 - - - 0.00 - - -
Feb 24 at Southern California L, 4-2 0 0 0 0.0 - - - 0.00 - - -
Feb 28 at Washington State L, 2-1 0 0 0 0.0 - - - 0.00 - - -
Mar 1 at Washington State L, 8-2 0 0 0 0.0 - - - 0.00 - - -
Mar 2 at Washington State L, 7-4 0 0 0 0.0 - - - 0.00 - - -
Mar 3 at Washington State W, 5-3 0 0 0 0.0 - - - 0.00 - - -
Mar 4 at Oregon L, 12-4 0 0 0 0.0 - - - 0.00 - - -
Mar 5 at Oregon L, 4-1 0 0 0 0.0 - - - 0.00 - - -
Mar 8 at Sacramento State L, 4-3 0 0 0 0.0 - - - 0.00 - - -
Mar 9 at Sacramento State W, 5-3 0 0 0 0.0 - - - 0.00 - - -
Mar 10 at Sacramento State L, 9-6 0 0 0 0.0 - - - 0.00 - - -
Mar 12 UCLA L, 5-4 0 0 0 0.0 - - - 0.00 - - -
Mar 19 CSU Bakersfield L, 5-3 0 0 0 0.0 - - - 0.00 - - -
Mar 22 Utah Valley University W, 8-2 0 0 0 0.0 - - - 0.00 - - -
Mar 23 Utah Valley University W, 4-3 0 0 0 0.0 - - - 0.00 - - -
Mar 23 Utah Valley University W, 5-4 0 0 0 0.0 - - - 0.00 - - -
Mar 24 Utah Valley University W, 3-1 0 0 0 0.0 - - - 0.00 - - -
Mar 26 San Diego W, 8-4 0 0 0 0.0 - - - 0.00 - - -
Mar 28 at Long Beach State W, 10-5 0 0 0 0.0 - - - 0.00 - - -
Mar 29 at Long Beach State L, 14-2 0 0 0 0.0 - - - 0.00 - - -
Mar 30 at Long Beach State L, 7-5 0 0 0 0.0 - - - 0.00 - - -
Apr 1 CSU Bakersfield W, 2-1 0 0 0 0.0 - - - 0.00 - - -
Apr 2 Loyola Marymount L, 9-7 0 0 0 0.0 - - - 0.00 - - -
Apr 5 UC Riverside W, 5-3 0 0 0 0.0 - - - 0.00 - - -
Apr 6 UC Riverside W, 3-1 0 0 0 0.0 - - - 0.00 - - -
Apr 7 UC Riverside W, 15-3 0 0 0 0.0 - - - 0.00 - - -
Apr 8 Washington W, 8-7 0 0 0 0.0 - - - 0.00 - - -
Apr 10 at CSU Bakersfield W, 8-5 0 0 0 0.0 - - - 0.00 - - -
Apr 12 at UC Irvine L, 4-3 0 0 0 0.0 - - - 0.00 - - -
Apr 13 at UC Irvine W, 2-1 0 0 0 0.0 - - - 0.00 - - -
Apr 14 at UC Irvine L, 2-0 0 0 0 0.0 - - - 0.00 - - -
Apr 19 at Hawai'i W, 4-1 0 0 0 0.0 - - - 0.00 - - -
Apr 20 at Hawai'i W, 9-4 0 0 0 0.0 - - - 0.00 - - -
Apr 21 at Hawai'i W, 10-5 0 0 0 0.0 - - - 0.00 - - -
Apr 23 at Loyola Marymount L, 5-0 0 0 0 0.0 - - - 0.00 - - -
Apr 26 Pacific W, 6-1 0 0 0 0.0 - - - 0.00 - - -
Apr 27 Pacific W, 5-2 0 0 0 0.0 - - - 0.00 - - -
Apr 28 Pacific W, 8-7 0 0 0 0.0 - - - 0.00 - - -
Apr 30 at San Diego W, 6-4 0 0 0 0.0 - - - 0.00 - - -
May 3 at UC Davis W, 9-3 0 0 0 0.0 - - - 0.00 - - -
May 4 at UC Davis W, 8-5 0 0 0 0.0 - - - 0.00 - - -
May 5 at UC Davis W, 10-4 0 0 0 0.0 - - - 0.00 - - -
May 7 at UCLA W, 4-1 0 0 0 0.0 - - - 0.00 - - -
May 10 UC Santa Barbara L, 6-1 0 0 0 0.0 - - - 0.00 - - -
May 11 UC Santa Barbara L, 6-2 0 0 0 0.0 - - - 0.00 - - -
May 12 UC Santa Barbara W, 7-1 0 0 0 0.0 - - - 0.00 - - -
May 17 at Cal Poly L, 5-1 0 0 0 0.0 - - - 0.00 - - -
May 18 at Cal Poly L, 6-2 0 0 0 0.0 - - - 0.00 - - -
May 19 at Cal Poly L, 7-2 0 0 0 0.0 - - - 0.00 - - -
May 23 Cal State Fullerton L, 5-2 0 0 0 0.0 - - - 0.00 - - -
May 24 Cal State Fullerton L, 6-4 0 0 0 0.0 - - - 0.00 - - -
May 25 Cal State Fullerton L, 9-6 0 0 0 0.0 - - - 0.00 - - -
Date Opponent Score tc po a e fpct dp sba rcs rcs% pb ci
Feb 9 CSUN Alumni T, 0-0 - - - - - - - - - - -
Feb 15 Saint Mary's (CA) W, 5-0 3 0 3 0 1.000 - - - - - -
Feb 16 Saint Mary's (CA) W, 8-3 4 1 2 1 .750 1 - - - - -
Feb 16 Saint Mary's (CA) L, 8-6 0 0 0 0 - - - - - - -
Feb 17 Saint Mary's (CA) W, 8-3 2 0 2 0 1.000 - - - - - -
Feb 19 at CSU Bakersfield   - - - - - - - - - - -
Feb 20 CSU Bakersfield   - - - - - - - - - - -
Feb 22 at Southern California W, 9-4 13 5 8 0 1.000 2 - - - - -
Feb 23 Southern California L, 6-5 5 2 3 0 1.000 1 - - - - -
Feb 24 at Southern California L, 4-2 8 2 6 0 1.000 1 - - - - -
Feb 28 at Washington State L, 2-1 5 2 3 0 1.000 1 - - - - -
Mar 1 at Washington State L, 8-2 2 1 1 0 1.000 - - - - - -
Mar 2 at Washington State L, 7-4 2 1 1 0 1.000 - - - - - -
Mar 3 at Washington State W, 5-3 2 1 1 0 1.000 - - - - - -
Mar 4 at Oregon L, 12-4 5 2 1 2 .600 - - - - - -
Mar 5 at Oregon L, 4-1 3 0 3 0 1.000 - - - - - -
Mar 8 at Sacramento State L, 4-3 4 2 1 1 .750 - - - - - -
Mar 9 at Sacramento State W, 5-3 5 3 2 0 1.000 1 - - - - -
Mar 10 at Sacramento State L, 9-6 4 1 3 0 1.000 1 - - - - -
Mar 12 UCLA L, 5-4 8 5 3 0 1.000 - - - - - -
Mar 19 CSU Bakersfield L, 5-3 7 2 5 0 1.000 2 - - - - -
Mar 22 Utah Valley University W, 8-2 3 1 2 0 1.000 - - - - - -
Mar 23 Utah Valley University W, 4-3 8 1 7 0 1.000 - - - - - -
Mar 23 Utah Valley University W, 5-4 3 2 1 0 1.000 1 - - - - -
Mar 24 Utah Valley University W, 3-1 6 2 4 0 1.000 2 - - - - -
Mar 26 San Diego W, 8-4 5 1 3 1 .800 - - - - - -
Mar 28 at Long Beach State W, 10-5 5 3 1 1 .800 - - - - - -
Mar 29 at Long Beach State L, 14-2 5 2 3 0 1.000 - - - - - -
Mar 30 at Long Beach State L, 7-5 4 2 2 0 1.000 2 - - - - -
Apr 1 CSU Bakersfield W, 2-1 4 2 2 0 1.000 - - - - - -
Apr 2 Loyola Marymount L, 9-7 9 3 5 1 .889 1 - - - - -
Apr 5 UC Riverside W, 5-3 3 1 2 0 1.000 1 - - - - -
Apr 6 UC Riverside W, 3-1 6 1 5 0 1.000 - - - - - -
Apr 7 UC Riverside W, 15-3 1 0 1 0 1.000 - - - - - -
Apr 8 Washington W, 8-7 6 1 5 0 1.000 1 - - - - -
Apr 10 at CSU Bakersfield W, 8-5 5 3 2 0 1.000 - - - - - -
Apr 12 at UC Irvine L, 4-3 9 2 7 0 1.000 - - - - - -
Apr 13 at UC Irvine W, 2-1 8 2 6 0 1.000 - - - - - -
Apr 14 at UC Irvine L, 2-0 3 1 2 0 1.000 - - - - - -
Apr 19 at Hawai'i W, 4-1 7 4 3 0 1.000 2 - - - - -
Apr 20 at Hawai'i W, 9-4 5 0 5 0 1.000 - - - - - -
Apr 21 at Hawai'i W, 10-5 7 3 3 1 .857 1 - - - - -
Apr 23 at Loyola Marymount L, 5-0 5 3 1 1 .800 1 - - - - -
Apr 26 Pacific W, 6-1 8 4 4 0 1.000 2 - - - - -
Apr 27 Pacific W, 5-2 5 2 3 0 1.000 1 - - - - -
Apr 28 Pacific W, 8-7 2 1 1 0 1.000 1 - - - - -
Apr 30 at San Diego W, 6-4 7 4 3 0 1.000 - - - - - -
May 3 at UC Davis W, 9-3 8 1 5 2 .750 2 - - - - -
May 4 at UC Davis W, 8-5 7 5 2 0 1.000 2 - - - - -
May 5 at UC Davis W, 10-4 2 0 2 0 1.000 - - - - - -
May 7 at UCLA W, 4-1 2 1 1 0 1.000 - - - - - -
May 10 UC Santa Barbara L, 6-1 3 2 1 0 1.000 - - - - - -
May 11 UC Santa Barbara L, 6-2 6 3 3 0 1.000 1 - - - - -
May 12 UC Santa Barbara W, 7-1 4 2 2 0 1.000 1 - - - - -
May 17 at Cal Poly L, 5-1 3 1 2 0 1.000 - - - - - -
May 18 at Cal Poly L, 6-2 6 2 4 0 1.000 - - - - - -
May 19 at Cal Poly L, 7-2 3 2 1 0 1.000 1 - - - - -
May 23 Cal State Fullerton L, 5-2 4 2 2 0 1.000 1 - - - - -
May 24 Cal State Fullerton L, 6-4 6 2 4 0 1.000 1 - - - - -
May 25 Cal State Fullerton L, 9-6 2 2 0 0 1.000 - - - - - -
  g ab r h 2b 3b hr rbi bb k sb cs avg obp slg
2012-13 57 216 33 58 10 - 3 28 20 53 6 2 .269 .343 .356
Total 57 216 33 58 10 - 3 28 20 53 6 2 .269 .343 .356
  g hbp sf sh tb xbh hdp go fo go/fo pa
2012-13 57 6 3 11 77 13 6 61 56 1.09 256
Total 57 6 3 11 77 13 6 61 56 1.09 256
  g gs w l sv cg ip h r er bb k k/g hr era
2012-13 0 0 0 0 0 - 0.0 - - - - - - - 0.00
Total 0 0 0 0 0 - 0.0 - - - - - - - 0.00
  g tc po a e fpct dp sba rcs rcs% pb ci
2012-13 57 277 106 160 11 .960 35 - - - - -
Total 57 277 106 160 11 .960 35 - - - - -
  g ab r h 2b 3b hr rbi bb k sb cs avg obp slg
Total 57 216 33 58 10 - 3 28 20 53 6 2 .269 .343 .356
Conference 27 113 14 30 6 - 3 18 6 30 2 1 .265 .306 .398
Exhibition - - - - - - - - - - - - - - -
-
Home 27 96 15 26 2 - - 12 8 24 3 1 .271 .357 .292
Away 30 120 18 32 8 - 3 16 12 29 3 1 .267 .331 .408
Neutral - - - - - - - - - - - - - - -
-
Wins 31 117 22 35 7 - 2 21 14 26 4 1 .299 .384 .410
Losses 26 99 11 23 3 - 1 7 6 27 2 1 .232 .290 .293
-
February 8 22 5 9 1 - - 0 3 2 1 - .409 .519 .455
March 18 67 11 21 3 - - 11 7 13 1 2 .313 .377 .358
April 18 73 10 16 4 - - 9 7 22 3 - .219 .310 .274
May 13 54 7 12 2 - 3 8 3 16 1 - .222 .263 .426
  g hbp sf sh tb xbh hdp go fo go/fo pa
Total 57 6 3 11 77 13 6 61 56 1.09 256
Conference 27 1 1 8 45 9 3 32 28 1.14 129
There was a problem with a Velocity script
Pagebio-template
ErrorVM #split: too few arguments to macro. Wanted 4 got 3 at bio-template[line 216, column 1]
Page source:
1: ## PICK UP OPTIONS
2: $website.include("options")
3: #set ($options = $request.getAttribute("options"))
4: #set ($locale = "en_us")
5: #set ($locale = $options.get("locale"))
6: 
7: ## HACK TO GET STATS URL FROM RENDERER... NEEDS SERVER CHANGE
8: #set ($bioObject = $page.getDataAsObject())
9: #set ($statsURL = $bioObject.statsURL)
10: 
11: #if ($statsURL.length() > 0)
12:   $website.includeAgain("${statsURL}?tmpl=bio-stats-template")
13:   ## various settings to get the variables set
14:   #set ($events = $request.getAttribute("bio_events"))
15:   #set ($seasons = $request.getAttribute("bio_seasons"))
16:   #set ($career = $request.getAttribute("bio_career"))
17:   #set ($labels = $request.getAttribute("bio_labels"))
18:   #set ($briefs = $request.getAttribute("bio_briefs"))
19:   #set ($gamelogs = $request.getAttribute("bio_gamelogs"))
20:   #set ($splits = $request.getAttribute("bio_splits"))
21:   #set ($statPosition = $request.getAttribute("bio_position"))
22:   #set ($positions = $request.getAttribute("bio_positions"))
23:   #set ($playerId = $request.getAttribute("bio_player_id"))
24:   #set ($highlights = $request.getAttribute("bio_highlights"))
25:   #set ($formats = $request.getAttribute("bio_formats"))
26:   #set ($gamelogsCategoriesLabels = $request.getAttribute("bio_gamelogs_labels"))
27:   #set ($briefsCategoriesLabels = $request.getAttribute("bio_briefs_labels"))
28:   #set ($gamesResults = $request.getAttribute("bio_games_results"))
29:   #set ($monthsPlayed = $request.getAttribute("bio_months_played"))
30: #end
31: 
32: #set ($pos = "")
33: #set ($pos = $attributes.get("position"))
34: #set ($pos = $statPosition)
35: #set ($posVec = $pos.split("/"))
36: #set ($pos = $posVec[0])
37: #set ($pos = $pos.toLowerCase())
38: #set ($statPos = $positions.get($pos))
39: #set ($paramPos = $request.getParameter("pos"))
40: 
41: #set ($playerId = $attributes.get("playerId"))
42: #set ($stats = $splits.overall)
43: #set ($highlights = $highlights.get($statPos))
44: 
45: #set ($showHighlights = true)
46: #if ($options.get("bio_show_highlights") && $options.get("bio_show_highlights") == false)
47: 	#set ($showHighlights = false)
48: #end
49: 
50: #set ($showCareer = $wiki.valid() && $seasons)
51: #if ("yes" == $options.get("stats_show_career") && $seasons)
52:   #set ($showCareer = true)
53: #end
54: 
55: #set ($hasEvents = $events.size() > 0)
56: #set ($hasSynopsis = $synopsis.length() > 1 && $synopsis.indexOf("<center>") == -1)
57: #set ($htmlStatsURL = "${page.url}-stats")
58: #set ($hasHTMLStats = $website.exists($htmlStatsURL))
59: #set ($bioBriefURL = "${page.url}-brief")
60: #set ($hasBioBrief = $website.exists("$bioBriefURL"))
61: #set ($showRoster = ($page.contentType == "loki/bio" && $page.headlinesFeatured.size() > 0) || ($page.contentType == "loki/bio-network" && $page.sectionPage.children.size() > 1))
62: #if ($options.get("bio_hide_roster") == true)
63:   #set ($showRoster = false)
64: #end
65: 
66: #set ($view = "")
67: #if ($hasSynopsis || $hasBioBrief)
68:   #set ($view = "bio")
69: #elseif ($statsURL.length() > 0)
70:   #set ($view = "profile")
71: #elseif ($hasHTMLStats)
72:   #set ($view = "htmlstats")
73: #end
74: 
75: #if ($options.get("bio_default_view").length() > 0)
76:   #set ($checkView = $options.get("bio_default_view"))
77: #end
78: 
79: #if ($request.getParameter("view"))
80:   #set ($checkView = $request.getParameter("view"))
81: #end
82: 
83: #if ($checkView == "profile" && $statsURL.length() > 0)
84:   #set ($view = "profile")
85: #elseif ($checkView == "bio" && ($hasSynopsis || $hasBioBrief))
86:   #set ($view = "bio")
87: #elseif ($checkView == "gamelog" && $statsURL.length() > 0)
88:   #set ($view = "gamelog")
89: #elseif ($checkView == "career" && $showCareer)
90:   #set ($view = "career")
91: #elseif ($checkView == "splits" && $statsURL.length() > 0)
92:   #set ($view = "splits")
93: #elseif ($checkView == "htmlstats" && $hasHTMLStats)
94:   #set ($view = "htmlstats")
95: #end
96: 
97: #macro (gamelogData $p)
98: 
99: #set ($p = $positions.get($p))
100: #set ($gamelogs = $gamelogs.get($p))
101: 	
102: #if ($hasEvents)
103: <div class="stats-box full clearfix">
104: <div class="scrollable">
105: <div>
106: <table>
107:   <tr class="thead">
108:     <th class="text">Date</th>
109:     <th class="pinned-col text">Opponent</th>
110:     <th>Score</th>
111:     #foreach ($gamelog in $gamelogs)
112:       <th>$gamelog</th>
113:     #end
114:   </tr>
115: #foreach ($event in $events)
116:   <tr>
117:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
118:     <td class="pinned-col text">
119:       #if ($event.event.neutralSite.length() > 0) vs. #elseif (!$event.event.home) at #end
120:       $event.event.opponent.name
121:     </td>
122:     <td>
123:     #if ($event.event.statusCode >= 0)
124:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
125:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
126:       #else
127:       ${event.event.APResult}
128:       #end
129:     #else &nbsp; #end
130:     </td>
131:     #foreach ($gamelog in $gamelogs.keySet())
132:       #set ($value = "-")
133:       #set ($value = $formatter.formatNumber($event.stats.get($gamelog), $formats.get($gamelog)))
134:       <td>$value</td>
135:     #end
136:   </tr>
137: #end
138: </table>
139: </div>
140: </div> ## scrollable
141: </div> ## stats-box
142: #end
143: 
144: #end ## macro gamelogData
145: 
146: #macro (split $statPosBriefs $label $stats)
147:   <tr>
148:     <td class="pinned-col text">${label}</td>
149:     #foreach ($brief in $statPosBriefs.keySet())
150:       #set ($value = "-")
151:       #set ($value = $!formatter.formatNumber($stats.get($brief), $formats.get($brief)))
152:       <td>#if ($value.length() > 0) $value #else - #end</td>
153:     #end
154:   </tr>
155: #end
156: 
157: #macro (careerData $p)
158: #set ($p = $positions.get($p))
159: #set ($statPosBriefs = $briefs.get($p))
160: 
161: <div class="stats-box full clearfix">
162: <div class="scrollable">
163: <div>
164: <table>
165: <tr class="thead">
166:   <th class="pinned-col">&nbsp;</th>
167:   #foreach ($brief in $statPosBriefs)
168:     <th>$brief</th>
169:   #end
170: </tr>
171: 
172: #set ($careerTotals = $request.getAttribute("careerTotals"))
173: #set ($careerMap = $request.getAttribute("careerMap"))
174: 
175: #foreach ($season in $seasons)
176:   ## Check if we did not get stats for this season
177:   #if ($careerMap.get($season.seasonName))
178:     #split($statPosBriefs, $season.seasonName, $careerMap[$season.seasonName])
179:   #elseif ($wiki.valid())
180:     <tr>
181:       <td class="text">${season.seasonName}</td>
182:       <td colspan="${briefs.size()}">We could not find the "players" page in the ${season.seasonName} section.</td>
183:     </tr>
184:   #end
185: #end
186: 
187: #split($statPosBriefs, "Total", $request.getAttribute("careerTotals").overall)
188: 
189: </table>
190: </div>
191: </div> ## scrollable
192: </div> ## stats-box
193: 
194: #end ## macro careerData
195: 
196: #macro (splitsData $p)
197: 
198: #set ($p = $positions.get($p))
199: #set ($statPosBriefs = $briefs.get($p))
200: #set ($colspan = $tool.math.add($statPosBriefs.size(), 1))	
201: 	
202: #if ($statPosBriefs.size() > 0)
203: <div class="stats-box full clearfix">
204: <div class="scrollable">
205: <div>
206: <table>
207:   <tr>
208:     <th class="pinned-col">&nbsp;</th>
209:     #foreach ($brief in $statPosBriefs)
210:       <th>$brief</th>
211:     #end
212:   </tr>
213: 
214: #split($statPosBriefs, "Total", $splits.overall)
215: #split($statPosBriefs, "Conference", $splits.conference)
216: #split($statPosBriefs, "Exhibition", $splits.exhibition)
217: 
218: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
219: 
220: #split($statPosBriefs, "Home", $splits.home)
221: #split($statPosBriefs, "Away", $splits.away)
222: #split($statPosBriefs, "Neutral", $splits.neutral)
223: 
224: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
225: 
226: #foreach($gameResult in $gamesResults.entrySet())
227:   #if ($gameResult.key == "wins")
228:     #set ($splitGameResult = $splits.inWins)
229:   #elseif ($gameResult.key == "losses")
230:     #set ($splitGameResult = $splits.inLosses)
231:   #elseif ($gameResult.key == "ties")
232:     #set ($splitGameResult = $splits.inTies)
233:   #end
234: 	
235:   #split($statPosBriefs, $gameResult.value, $splitGameResult)
236: #end
237: 
238: <tr class="empty-row"><td colspan="$colspan"><div class="empty-cell">-</div></td></tr>
239: 
240: #if ($monthsPlayed and $monthsPlayed.size() > 0)
241:   #foreach($month in $monthsPlayed)
242:     #if ($month == 'January')
243:       #set ($splitMonth = $splits.january)
244:     #elseif ($month == 'February')
245:       #set ($splitMonth = $splits.february)
246:     #elseif ($month == 'March')
247:       #set($splitMonth = $splits.march)
248:     #elseif ($month == 'April')
249:       #set($splitMonth = $splits.april)
250:     #elseif ($month == 'May')
251:       #set ($splitMonth = $splits.may)
252:     #elseif ($month == 'June')
253:       #set ($splitMonth = $splits.june)
254:     #elseif ($month == 'July')
255:       #set($splitMonth = $splits.july)
256:     #elseif ($month == 'August')
257:       #set ($splitMonth = $splits.august)
258:     #elseif ($month == 'September')
259:       #set($splitMonth = $splits.september)
260:     #elseif ($month == 'October')
261:       #set($splitMonth = $splits.october)
262:     #elseif ($month == 'November')
263:       #set ($splitMonth = $splits.november)
264:     #elseif ($month == 'December')
265:       #set($splitMonth = $splits.december)
266:     #end
267: 		
268:     #split($statPosBriefs, $month, $splitMonth)
269:   #end ## foreach
270: #end
271: </table>
272: </div>
273: </div> ## scrollable
274: </div> ## srollable-table
275: #end
276: 
277: #end ## macro splitsData
278: 
279: #macro (printRecentGames)
280: #if ($hasEvents)
281: <table>
282:   <tr class="thead"><th colspan="3">Recent Games</th></tr>
283:   
284: #set ($eventEnd = -1)
285: #foreach ($event in $events)
286:   #if ($event.event.result.resolved)
287:     #set ($eventEnd = $velocityCount)
288:   #end
289: #end
290: 
291: #set ($eventStart = $eventEnd - 5)
292: #if ($eventStart < 0) #set ($eventStart = 0) #end
293: 
294: #foreach ($event in $events)
295: #if ($velocityCount >= $eventStart and $velocityCount <= $eventEnd)
296:   <tr>
297:     <td class="text">$formatter.formatDate($event.event.date, "MMM d")</td>
298:     <td class="text">
299:       #if ($event.event.neutralSite.length() > 0) vs.
300:       #elseif (!$event.event.home) at
301:       #else ## nothing for a home game
302:       #end
303:       $event.event.opponent.name
304:     </td>
305:     <td class="text">
306:     #if ($event.event.statusCode >= 0)
307:       #if ($event.event.eventId.length() > 0 && $event.stats.size() > 0)
308:       <a href="../boxscores/${formatter.formatDate($event.event.date, "yyyyMMdd")}_${event.event.eventId.substring(0, 4)}.xml">${event.event.APResult}</a>
309:       #else
310:       ${event.event.APResult}
311:       #end
312: 	#end
313: 	</td>
314:   </tr>
315: #end ## if
316: #end
317: </table>
318: #end
319: #end ## macro printRecentGames
320: 
321: #macro (printCategories $briefCategoryLabels $v)
322: 	
323: <div class="tab-container secondary clearfix">
324: <div class="tab-nav" data-jscroll="true" data-momentum="false">
325: <div>
326: <ul class="clearfix">
327: #foreach($briefCat in $briefCategoryLabels.entrySet())
328:   #set ($briefCatLabel = $briefCat.value)
329:   #set ($briefCatKey = $briefCat.key)
330: 		
331:   #if ($locale == "en_gb" && $briefCatLabel == "Defense")
332:     #set ($briefCatLabel = "Defence")
333:   #end	
334: 	
335:   <li #if ($activePos == $briefCatKey) class="active" #end><a href="${page.url}?view=${v}&pos=${briefCatKey}">$briefCatLabel</a></li>
336: #end
337: </ul>
338: </div>
339: </div>
340: <div class="tab-panels">
341: #foreach ($briefCat in $briefCategoryLabels.entrySet())
342:   #set ($class = "tab-panel clearfix")
343:   #if ($briefCat.key == $activePos)
344:     #set ($class = "tab-panel active clearfix")
345:   #end
346:   <div class="$class">
347:     <div class="stats-wrap clearfix">
348:     #if ($v == "splits")
349:       #splitsData($briefCat.key)
350:     #elseif ($v == "career")
351:       #careerData($briefCat.key)
352:     #end
353:     </div>
354:   </div>
355: #end	
356: </div>
357: </div> ## tab-container
358: 
359: #end ## macro printCategories
360: 	
361: #macro (printHeadshot)
362: 
363: #if ($attributes.get("number"))<span class="number">$!attributes.get("number")</span>#end
364: 
365: #if ($headshot.url)
366:   <img src="$headshot.url?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
367: #else
368:   #if ($website.exists("/images/setup/headshot_default.jpg"))
369:     <img src="/images/setup/headshot_default.jpg?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
370:   #else
371:     <img src="/info/images/default_headshot.jpg?max_width=160&max_height=210" alt="$fullName" title="$fullName" />
372:   #end
373: #end
374: #end ## macro printHeadshot
375: 	
376: #macro (printBioInfo)
377: <div class="player-name">
378:   #if ($attributes.get("number"))<span class="number">$!attributes.get("number")</span>#end
379:   <span class="name">$fullName</span>
380: </div>	
381: 	
382: <table>
383: #foreach ($i in [1..10])
384:   #set ($stickyKey = "bio_custom${i}_sticky")
385:   #if ($options.get($stickyKey).length() > 0 && $attributes.get("custom${i}").length() > 0)
386:     <tr>
387:       <td class="label">$options.get($stickyKey): </td>
388:       <td class="value">$!attributes.get("custom${i}")</td>
389:     </tr>
390:   #end
391: #end
392: 
393: #foreach ($field in $fields)
394:   #if (!$field.key.startsWith("custom"))
395:     #if ($attributes.get($field.key).length() > 0 && ($field.key != "first_name" && $field.key != "last_name" && $field.key != "number" && $field.key != "full_name"))
396:       #if ($field.key == "phone1" || $field.key == "phone2")
397:         <tr>
398:           <td class="label">Phone: </td>
399:           <td class="value">$!attributes.get($field.key)</td>
400:         </tr>
401:       #elseif ($field.key == "email_address")
402:         #set ($emailAdd = $attributes.get($field.key))
403:         <tr>
404:           <td class="label">Email: </td>
405:           <td class="value"><a href="mailto:${emailAdd}">$emailAdd</a></td>
406:         </tr>
407:       #else
408:         <tr>
409:           <td class="label">$field.value: </td>
410:           <td class="value">$!attributes.get($field.key)</td>
411:         </tr>
412:       #end
413:     #end
414:   #end
415: #end
416: 
417: #foreach ($i in [1..10])
418:   #set ($customKey = "bio_custom${i}")
419:   #if ($options.get($customKey).length() > 0 && $attributes.get("custom${i}"))
420:     <tr>
421:       <td class="label">$options.get($customKey): </td>
422:       <td class="value">$!attributes.get("custom${i}")</td>
423:     </tr>
424:   #end
425: #end
426: </table>
427: #end ## macro printBioInfo
428: 	
429: #macro (printHighlights)
430: #foreach ($highlight in $highlights.keySet())
431:   #set ($value = "-")
432:   #set ($value = $formatter.formatNumber($stats.get($highlight), $formats.get($highlight)))
433:   <div class="stat clearfix">
434:     <span class="stat-title">$!highlights.get($highlight)</span>
435:     <span class="stat-value">$value</span>
436:   </div>
437: #end
438: #end ## macro printHighlights
439: 	
440: #macro (printRoster)
441: #if ($page.contentType == "loki/bio")
442:   #set ($headlinesFeaturedSize = 0)
443:   #foreach ($featuredPage in $page.headlinesFeatured)
444:     #if ($featuredPage.contentType == "loki/headlines")
445:       #set ($headlinesFeaturedSize = $headlinesFeaturedSize + 1)
446:     #end
447:   #end
448:   #if ($headlinesFeaturedSize > 0)
449:     <select class="roster-select-list">
450:       <option selected="selected">Related Bios</option>
451:       #foreach ($featuredPage in $page.headlinesFeatured)
452:         #if ($featuredPage.contentType == "loki/headlines")
453:           $website.includeAgain("${featuredPage.url}?tmpl=roster-list-template&current_url=${page.url}")
454: 		#end
455: 	  #end
456:     </select>
457:   #end
458: #elseif ($page.contentType == "loki/bio-network")
459:   #set ($relatedPlayers = $page.sectionPage.children)
460:   #set ($teamNames = {})
461:   #foreach ($relatedPlayer in $relatedPlayers)
462:     #if ($relatedPlayer.contentType == "loki/bio-network")
463:       #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
464:       #set ($teamName = $relatedPlayerObj.get("team"))
465:       #if ($teamName.length() > 0)
466:         #if (!$teamNames.containsValue($teamName))
467:           $!teamNames.put($tool.math.add($teamNames.size(), 1), $teamName)
468:         #end
469:       #end
470:     #end
471:   #end
472: 
473:   <select class="roster-select-list">
474:   #foreach ($i in [1..$teamNames.size()])
475:     #if ($teamNames.size() > 1)
476:       <optgroup label="$teamNames.get($i)">
477:     #end
478: 				
479:     #foreach ($relatedPlayer in $relatedPlayers)
480:       #if ($relatedPlayer.contentType == "loki/bio-network")
481:         #set ($relatedPlayerObj = $relatedPlayer.getDataAsObject().getAttributes())
482:         #set ($teamName = $relatedPlayerObj.get("team"))
483:         #if ($teamName.length() > 0 && $teamName == $teamNames.get($i))
484:           #set ($playerFirstName = $relatedPlayerObj.get("first_name"))
485:           #set ($playerLastName = $relatedPlayerObj.get("last_name"))
486:           #if ($page.url == $relatedPlayer.url)
487:             <option value="$relatedPlayer.url" selected="selected">${playerFirstName} ${playerLastName}</option>
488:           #else
489:             <option value="$relatedPlayer.url">${playerFirstName} ${playerLastName}</option>
490:           #end
491:         #end
492:       #end
493:     #end
494: 				
495:     #if ($teamNames.size() > 1)
496:       </optgroup>
497:     #end
498:   #end
499:   </select>
500: #end
501: #end ## macro printRoster
502: 	
503: ################################################## END MACROS  #############################################################
504: 
505: #if ($attributes.get("full_name").length() > 0)
506:   #set ($fullName = $attributes.get("full_name"))
507: #else
508:   #set ($firstName = $!attributes.get("first_name"))
509:   #set ($lastName = $!attributes.get("last_name"))
510:   #set ($fullName = "${firstName} ${lastName}")
511: #end
512: 
513: ## FULL ROSTER
514: <div class="bio-wrap clearfix">
515: 	
516: ## RELATED BIOS
517: #if ($showRoster)
518:   <div class="related-bios clearfix">#printRoster</div>
519: #end
520:   
521: <div class="head clearfix">
522: <div class="clearfix">
523:     
524: <div class="player-about clearfix">
525:   <div class="player-headshot">#printHeadshot</div>
526:   <div class="player-info">#printBioInfo</div>
527: </div>
528: 
529: #if ($highlights && $showHighlights)
530:   <div class="player-highlights clearfix">#printHighlights</div>
531: #end
532: 
533: </div>
534: </div> ## head
535: 
536: #if ($view.length() > 0)
537: <div class="body clearfix">
538:   
539: <div class="tab-container primary clearfix">
540:   
541: <div class="tab-nav" data-jscroll="true" data-momentum="false">
542:   <div>
543:   <ul class="clearfix">
544:   #if ($hasSynopsis || $hasBioBrief)
545:     <li #if ($view == "bio") class="active" #end><a href="${page.url}?view=bio">Bio</a></li>
546:   #end
547: 		
548:   #if ($statsURL.length() > 0)
549:     <li #if ($view == "profile") class="active" #end><a href="${page.url}?view=profile">Player Profile</a></li>
550:     <li #if ($view == "gamelog") class="active" #end><a href="${page.url}?view=gamelog">Game Log</a></li>
551:     #if ($showCareer)
552:       <li #if ($view == "career") class="active" #end><a href="${page.url}?view=career">Career Stats</a></li>
553:     #end
554:     <li #if ($view == "splits") class="active" #end><a href="${page.url}?view=splits">Split Stats</a></li>
555:   #end
556: 
557:   #if ($hasHTMLStats)
558:     <li #if ($view == "htmlstats") class="active" #end><a href="${page.url}?view=htmlstats">HTML Stats</a></li>
559:   #end
560:   </ul>
561:   </div>
562: </div> ## tab-nav
563: 
564: <div class="tab-panels clearfix">
565: 	
566: ## BIO
567: #if ($hasSynopsis || $hasBioBrief)
568: 
569: #set ($class = "tab-panel clearfix")
570: #if ($view == "bio")
571:   #set ($class = "tab-panel active clearfix")
572: #end
573: <div class="${class}">
574: 
575: <div class="synopsis clearfix">
576: #if ($hasSynopsis)
577:   $synopsis
578: #elseif ($hasBioBrief)
579:   $website.include("$bioBriefURL")
580: #end
581: </div>
582: 
583: </div> ## tab-panel
584: #end 
585: ## BIO
586: 
587: ## STATS
588: #if ($statsURL.length() > 0)
589: 
590: ## PROFILE
591: #set ($class = "tab-panel clearfix")
592: #if ($view == "profile")
593:   #set ($class = "tab-panel active clearfix")
594: #end
595: <div class="${class}">
596: <div class="stats-wrap clearfix">
597: 
598: ## LAST SIX GAMES
599: <div class="stats-box half">
600: #printRecentGames()
601: </div>
602: 
603: ## RANKING
604: <div class="stats-box half">
605: #if ($statPos.length() > 0)
606:   $website.include("../players?tmpl=stats-bios-rank-template&rank=${playerId}&pos=${statPos}")
607: #end
608: </div>
609: 
610: </div> ## stats-wrap	
611: </div> ## tab-content
612: ## PROFILE
613: 
614: ## GAMELOG
615: #set ($class = "tab-panel clearfix")
616: #if ($view == "gamelog")
617:   #set ($class = "tab-panel active clearfix")
618: #end
619: 
620: #set ($activePos = $statPos)
621: #if ($view == "gamelog" && $paramPos.length() > 0)
622:   #if ($positions.get($paramPos).length() > 0)
623:     #set ($activePos = $positions.get($paramPos))
624:   #end
625: #end
626: 
627: <div class="${class}">
628: 
629: #if ($gamelogsCategoriesLabels)
630: <div class="tab-container secondary clearfix">
631:   <div class="tab-nav" data-jscroll="true" data-momentum="false">
632:     <div>
633:     <ul class="clearfix">
634:     #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
635:       #set($gamelogsCatLabelVal = $gamelogsCatLabel.value)
636: 		
637:       #if ($locale == "en_gb" && $gamelogsCatLabelVal == "Defense")
638:         #set($gamelogsCatLabelVal = "Defence")
639:       #end
640: 
641:       <li #if ($activePos == $gamelogsCatLabel.key) class="active" #end><a href="${page.url}?view=gamelog&pos=${gamelogsCatLabel.key}">$gamelogsCatLabelVal</a></li>
642:     #end
643:     </ul>
644: 	</div>
645:   </div>
646:   <div class="tab-panels">
647:   #foreach($gamelogsCatLabel in $gamelogsCategoriesLabels.entrySet())
648:     #set ($class = "tab-panel clearfix")
649:     #if ($gamelogsCatLabel.key == $activePos)
650:       #set ($class = "tab-panel active clearfix")
651:     #end
652:     <div class="${class}">
653:       <div class="stats-wrap clearfix">#gamelogData($gamelogsCatLabel.key)</div>
654: 	</div>
655:   #end   
656:   </div>
657: </div>	
658: #else
659:   <div class="stats-wrap clearfix">#gamelogData($pos)</div>
660: #end
661: 	
662: </div> ## tab-panel
663: ## GAMELOG
664: 
665: 
666: ## CAREER
667: #if ($showCareer)
668: 
669: #set ($activePos = $statPos)
670: #if ($view == "career" && $paramPos.length() > 0)
671:   #if ($positions.get($paramPos).length() > 0)
672:     #set ($activePos = $positions.get($paramPos))
673:   #end
674: #end
675: 
676: #set ($class = "tab-panel clearfix")
677: #if ($view == "career")
678:   #set ($class = "tab-panel active clearfix")
679: #end
680: 
681: <div class="${class}">
682: 
683: #if ($briefsCategoriesLabels)
684:   #printCategories($briefsCategoriesLabels "career")
685: #else
686:   <div class="stats-wrap clearfix">#careerData($activePos)</div>
687: #end		
688: 
689: </div> ## tab-panel
690: #end
691: ## CAREER
692: 
693: ## SPLITS
694: #set ($class = "tab-panel clearfix")
695: #if ($view == "splits")
696: 	#set ($class = "tab-panel active clearfix")
697: #end
698: 
699: #set ($activePos = $statPos)
700: #if ($view == "splits" && $paramPos.length() > 0)
701:   #if ($positions.get($paramPos).length() > 0)
702:     #set ($activePos = $positions.get($paramPos))
703:   #end
704: #end
705: 
706: <div class="${class}">
707: 
708: #if ($briefsCategoriesLabels)
709:   #printCategories($briefsCategoriesLabels "splits")
710: #else
711:   <div class="stats-wrap clearfix">#splitsData($pos)</div>
712: #end		
713: 
714: </div> ## tab-panel
715: ## SPLITS
716: 
717: #end 
718: ## STATS
719: 
720: ## HTML STATS
721: #if ($hasHTMLStats)
722: 
723: #set ($class = "tab-panel clearfix")
724: #if ($view == "htmlstats")
725:   #set ($class = "tab-panel active clearfix")
726: #end
727: <div class="${class}">
728:   <a href="${htmlStatsURL}" class="bio-htmlstats-identifier">Click to view HTML Stats</a>
729: </div>
730: 
731: #end
732: ## HTML STATS
733: 	
734: </div> ## tab-panels
735: </div> ## tab-container
736: </div> ## body
737: #end
738: 
739: $wiki
740: </div> ## ends bio-wrap