11 - Matt Consiglio
Matt Consiglio
Height: 6-1
Weight: 185
Year: Sr.
Hometown: Southbury, Conn.
High School: Pomperaug
Position: INF
B/T: R/R
gp 39
avg .277
hr 1
rbi 23
r 23
sb 10

2013 Named co-captain in his senior season … One of the Beacons most versatile players earning the start at multiple positions throughout the season … Ended his career at UMass Boston fifth all-time in career at-bats with 528, seventh in career runs scored with 96, eighth in career hits with 151, t-10th in runs batted in in a season with 35 (2012), sixth in runs batted in in a career with 97, ninth in career doubles with 27, eighth in career total bases with 198, third in career walks with 76 and second in walks in a season with 29 (2012), eighth in career stolen bases with 41, second in career hit by pitch with 36, seventh in career putouts with 507 and 11th in putouts in a season with 249 (2012) … Finished the season with a .277 average … Started all 39 games, only player on the roster to do so, and finished with 41 hits, 23 RBI, 23 runs scored, seven doubles, one triple, one home run, 13 walks, and 10 stolen bases … Totaled 139 putouts and 69 assists in the field … Recorded multi-hit games eight times … Went 3-for-4 with three RBI and two runs scored in game two of the Little East Conference doubleheader against Western Connecticut State University on May 3 … Was a perfect 4-for-4 with two RBI, a double, one stole base, and two runs scored in the non-conference win over Worcester State University on March 28 … Recorded a pair of stolen bases against Springfield College on March 19 … Went 2-for-3 with three RBI and two runs scored in the come-from-behind win over regionally ranked St. Joseph’s College (Maine) on April 7 … Recorded his only home run of the year on April 18 against Framingham State University … Posted a season-high 15 putouts in the April 27 win over Plymouth State University.

2012 Enjoyed a career season as he made the transition from shortstop to first base … Named to the Little East Conference Second Team … Started and played in a team-high 41 games … Drove in a team-high 35 runs to finish 11th in program history for a single-season … Worked 29 walks to lead UMB and finish second in program history for a single-season … Led the Beacons a .506 on-base percentage … Combined for 48 hits, 25 runs and 11 extra-base hits … Swiped 14 stolen bases in 18 attempts … Finished the year second on the team with a .364 batting average and a .477 slugging percentage ... Tallied a team-high two sacrifice flies and added three sacrifices … Recorded 249 putouts, 49 assists and 15 errors for a .952 fielding percentage … Had a career-best 14 game hitting streak … Finished with 15 multi-hit games … Recorded six three-hit games … Went 2-for-4 with two run and a season-best four RBI March 11 against Franklin & Marshall … Finished a doubleheader against Western Connecticut State 5-for-9 with three runs, five RBI and three doubles April 7 … Belted two extra-base hits and finished 6-for-11 with four runs and three RBI April 14 in a doubleheader at UMass Dartmouth … Led the Beacons with a 2-for-3 day and a run scored May 10 against Southern Maine in the Little East Conference Tournament.

2011 One of only three players to start in all 40 games for the Beacons ... Finished third on the team in RBI (26), home runs (3), and stolen bases (14) ... Ranked fourth on the team in total bases with 57 ... Led the Beacons in assists with 111 and also had 64 putouts ... Totaled 22 runs scored and 40 hits, eight of which were for doubles ... Led the team in sacrifice flies with three and was tied for third in sacrifice hits with two ... Had 11 multi-hit games as a sophomore ... Had his best outing of the season against Little East Conference opponent Western Connecticut State University when he went 5-for-9 with six RBI and one run scored ... Also recorded his third home run of the season, a three-run shot in game-one of the conference twinbill ... Went 4-for-8 with two RBI and one run scored in the doubleheader with Eastern Connecticut State University ... Recorded two hits, both of which were doubles as well as one RBI and two runs scored on May 2 at Framingham State University.

2010 Appeared in 40 games on the year, earning the job as the starting shortstop for the final 32 games of the season ... Batted .214 (22-103) while providing a solid defensive option up the middle, collecting 101 assists to rank ninth all-time in UMB annals ... On April 10, enjoyed a productive afternoon in a doubleheader sweep vs. Western Connecticut State, going a combined 4-for-8 at the plate, including a season-high three hit outing in the first win, scoring four runs and knocking in an RBI on the day ... From April 8-24, hit safely in eight of 10 games while batting .294 (10-34) over the span ... Very disciplined at the plate, drawing 23 walks to rank third on the team and first among freshman ... Scored 26 runs on the season including a season-high of three during wins over Western CT State (4/10) and Fitchburg State (4/28) ... Boasted an impressive .372 OBP from the number nine spot in the lineup ... On May 29, collected a run, hit, RBI and walk vs. University of Wisconsin-Stevens Point at the NCAA Division III College Baseball World Series.

PERSONAL/HIGH SCHOOL Three-year letterwinner for Pomperaug High School ... Named to the All-Southwest Conference team as a senior for the Panthers ... Helped PHS to a 17-5 record and a division title ... Played baseball for Oakville Post 195 American Legion and helped the squad to an undefeated campaign ... Born January 28, 1991 ... Son of Ray and Lori ... Majoring in exerice health sciences ... Enjoys sports and jet skiing.

Career Stats

Year avg gp-gs ab r h 2b 3b hr rbi tb slg% bb hbp so gdp ob% sf sh sb-att po a e fld%
2010.... .214 40-32 103 26 22 3 0 0 13 25 .243 23 6 18 2 .372 5 4 3-4 55 101 13 .923
2011.... .276 40-40 145 22 40 8 0 3 26 57 .393 11 10 32 5 .361 3 2 14-16 64 111 27 .866
2012.... .364 41-41 132 25 48 9 0 2 35 63 .477 29 11 17 3 .506 2 3 14-18 249 49 15 .952
2013.... .277 39-39 148 23 41 7 1 1 23 53 .358 13 9 20 3 .364 3 4 10-12 139 69 20 .912
TOTAL... .286 160-152 528 96 151 27 1 6 97 198 .375 76 36 87 13 .403 13 13 41-50 507 330 75 .918

 

Recent Games
Apr 30 at Wheaton College (Mass.) L, 2-1
May 3 Western Connecticut State University L, 12-9
May 3 Western Connecticut State University L, 13-7
May 8 vs. Keene State College W, 12-9
May 9 vs. Eastern Connecticut State University L, 9-1
May 10 vs. UMass Dartmouth L, 21-5
Statistics category Overall Conf
Games 39 14
Plate appearances 177 66
At Bats 148 58
Runs 23 9
Hits 41 13
Doubles 7 3
Triples 1 1
Home Runs 1 -
Runs Batted In 23 9
Total bases 53 18
Walks 13 3
Hit by pitch 9 3
Strikeouts 20 12
Sacrifice Flies 3 1
Sacrifice Hits 4 1
Hit into double play 4 1
Stolen Bases 10 1
Caught Stealing 2 1
Batting Average .277 .224
On Base Percentage .364 .292
Slugging Percentage .358 .310
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 228 99
Put Outs 139 61
Assists 69 30
Errors 20 8
Fielding Percentage .912 .919
Double Plays 16 12
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
Mar 14 vs. Greenville College (Ill.) L, 7-3 4 0 2 - - - 0 - 1 - 1
Mar 15 vs. Saint Joseph's College (Me.) L, 5-0 3 0 0 - - - 0 - 1 - -
Mar 15 vs. Saint Joseph's College (Me.) W, 4-2 3 0 0 - - - 0 - 1 - -
Mar 16 vs. The College of New Jersey (TCNJ) L, 6-4 4 0 0 - - - 0 - - - -
Mar 17 vs. Rowan University (N.J.) L, 9-3 4 1 1 - - - 1 - - 2 -
Mar 19 vs. Springfield College L, 4-3 3 1 2 - - - 0 - - 1 -
Mar 20 vs. Concordia University (Wis.) W, 5-4 4 2 1 - - - 0 1 - 1 -
Mar 20 vs. McDaniel College W, 7-6 3 1 2 - - - 2 1 - - -
Mar 21 vs. William Paterson University of N.J. L, 11-2 5 0 3 - - - 0 - - - -
Mar 28 Worcester State University W, 9-1 4 2 4 1 - - 2 - - 1 -
Mar 30 at UMass Dartmouth W, 8-7 4 0 1 - - - 0 - 1 - -
Mar 30 at UMass Dartmouth W, 6-5 5 0 1 1 - - 0 - 1 - -
Apr 1 Westfield State University L, 8-6 5 0 1 1 - - 0 - - - -
Apr 3 at Western New England University L, 9-3 4 1 1 1 - - 0 - - - -
Apr 6 at Rhode Island College W, 6-2 3 1 0 - - - 1 - 2 - -
Apr 6 at Rhode Island College W, 8-2 4 0 2 - - - 2 1 - 1 1
Apr 7 Saint Joseph's College (Me.) W, 11-5 3 2 2 1 - - 3 - - 1 -
Apr 8 at Framingham State University L, 8-4 3 0 1 - - - 1 - - 1 -
Apr 9 at Bridgewater State University (Mass.) L, 7-5 1 0 0 - - - 1 3 - 1 -
Apr 10 Endicott College L, 7-2 4 0 1 - - - 0 - - - -
Apr 11 at Babson College W, 4-1 5 0 1 - - - 0 - - - -
Apr 13 Eastern Connecticut State University L, 2-0 4 0 0 - - - 0 - 2 - -
Apr 13 Eastern Connecticut State University L, 4-0 4 0 0 - - - 0 - - - -
Apr 16 University of Southern Maine L, 12-6 4 1 1 - - - 0 - 2 - -
Apr 17 at Salem State University W, 5-1 2 2 0 - - - 0 2 1 - -
Apr 18 Framingham State University W, 6-3 3 1 1 - - 1 2 2 1 - -
Apr 21 at Keene State College L, 4-3 6 1 0 - - - 0 - 2 - -
Apr 21 at Keene State College L, 13-4 4 0 0 - - - 0 - - - -
Apr 23 at University of Southern Maine W, 4-0 4 1 2 1 - - 0 - 1 - -
Apr 25 at MIT L, 4-3 4 0 1 - - - 0 - 1 1 -
Apr 27 Plymouth State University W, 12-0 4 2 1 - - - 2 1 - - -
Apr 27 Plymouth State University W, 1-0 3 0 1 1 - - 1 - - - -
Apr 28 at Endicott College L, 3-0 4 0 1 - - - 0 - 1 - -
Apr 30 at Wheaton College (Mass.) L, 2-1 4 0 1 - - - 0 - - - -
May 3 Western Connecticut State University L, 12-9 5 1 1 - - - 0 1 1 - -
May 3 Western Connecticut State University L, 13-7 4 2 3 - 1 - 3 - - - -
May 8 vs. Keene State College W, 12-9 4 0 0 - - - 2 - 1 - -
May 9 vs. Eastern Connecticut State University L, 9-1 4 0 1 - - - 0 - - - -
May 10 vs. UMass Dartmouth L, 21-5 3 1 1 - - - 0 1 - - -
Date Opponent Score hbp sf sh tb xbh hdp go fo go/fo pa
Mar 14 vs. Greenville College (Ill.) L, 7-3 - - - 2 0 - - 1 - 4
Mar 15 vs. Saint Joseph's College (Me.) L, 5-0 - - - 0 0 - 1 - - 3
Mar 15 vs. Saint Joseph's College (Me.) W, 4-2 - - - 0 0 - 1 1 1.00 3
Mar 16 vs. The College of New Jersey (TCNJ) L, 6-4 - - - 0 0 - 3 1 3.00 4
Mar 17 vs. Rowan University (N.J.) L, 9-3 - - - 1 0 - 2 1 2.00 4
Mar 19 vs. Springfield College L, 4-3 1 - - 2 0 - 1 - - 4
Mar 20 vs. Concordia University (Wis.) W, 5-4 - - - 1 0 - 1 2 0.50 5
Mar 20 vs. McDaniel College W, 7-6 - - 1 2 0 - 2 - - 5
Mar 21 vs. William Paterson University of N.J. L, 11-2 - - - 3 0 - - 2 - 5
Mar 28 Worcester State University W, 9-1 - - 1 5 1 - 1 - - 5
Mar 30 at UMass Dartmouth W, 8-7 - - 1 1 0 - 3 - - 5
Mar 30 at UMass Dartmouth W, 6-5 - - - 2 1 - 1 2 0.50 5
Apr 1 Westfield State University L, 8-6 - - - 2 1 - 3 1 3.00 5
Apr 3 at Western New England University L, 9-3 - - - 2 1 1 1 2 0.50 4
Apr 6 at Rhode Island College W, 6-2 1 1 - 0 0 - 1 1 1.00 5
Apr 6 at Rhode Island College W, 8-2 - - - 2 0 - - 2 - 5
Apr 7 Saint Joseph's College (Me.) W, 11-5 2 - - 3 1 1 - 1 - 5
Apr 8 at Framingham State University L, 8-4 1 - - 1 0 - 1 1 1.00 4
Apr 9 at Bridgewater State University (Mass.) L, 7-5 - 1 - 0 0 - 1 1 1.00 5
Apr 10 Endicott College L, 7-2 - - - 1 0 - - 3 - 4
Apr 11 at Babson College W, 4-1 - - - 1 0 - 1 3 0.33 5
Apr 13 Eastern Connecticut State University L, 2-0 - - - 0 0 1 2 - - 4
Apr 13 Eastern Connecticut State University L, 4-0 - - - 0 0 - 2 2 1.00 4
Apr 16 University of Southern Maine L, 12-6 1 - - 1 0 - - 1 - 5
Apr 17 at Salem State University W, 5-1 1 - - 0 0 - - 1 - 5
Apr 18 Framingham State University W, 6-3 - - - 4 1 - 1 - - 5
Apr 21 at Keene State College L, 4-3 - - - 0 0 - 1 2 0.50 6
Apr 21 at Keene State College L, 13-4 - - - 0 0 - 1 2 0.50 4
Apr 23 at University of Southern Maine W, 4-0 - - - 3 1 - - 1 - 4
Apr 25 at MIT L, 4-3 1 - - 1 0 - 1 1 1.00 5
Apr 27 Plymouth State University W, 12-0 - - - 1 0 - - 3 - 5
Apr 27 Plymouth State University W, 1-0 1 - - 2 1 - 1 1 1.00 4
Apr 28 at Endicott College L, 3-0 - - - 1 0 - 1 1 1.00 4
Apr 30 at Wheaton College (Mass.) L, 2-1 - - - 1 0 - 1 2 0.50 4
May 3 Western Connecticut State University L, 12-9 - - - 1 0 - - 3 - 6
May 3 Western Connecticut State University L, 13-7 - - - 5 1 - - 1 - 4
May 8 vs. Keene State College W, 12-9 - 1 1 0 0 - 1 4 0.25 6
May 9 vs. Eastern Connecticut State University L, 9-1 - - - 1 0 - 1 1 1.00 4
May 10 vs. UMass Dartmouth L, 21-5 - - - 1 0 1 2 - - 4
Date Opponent Score w l sv ip h r er era bb k hr
Mar 14 vs. Greenville College (Ill.) L, 7-3 0 0 0 0.0 - - - 0.00 - - -
Mar 15 vs. Saint Joseph's College (Me.) L, 5-0 0 0 0 0.0 - - - 0.00 - - -
Mar 15 vs. Saint Joseph's College (Me.) W, 4-2 0 0 0 0.0 - - - 0.00 - - -
Mar 16 vs. The College of New Jersey (TCNJ) L, 6-4 0 0 0 0.0 - - - 0.00 - - -
Mar 17 vs. Rowan University (N.J.) L, 9-3 0 0 0 0.0 - - - 0.00 - - -
Mar 19 vs. Springfield College L, 4-3 0 0 0 0.0 - - - 0.00 - - -
Mar 20 vs. Concordia University (Wis.) W, 5-4 0 0 0 0.0 - - - 0.00 - - -
Mar 20 vs. McDaniel College W, 7-6 0 0 0 0.0 - - - 0.00 - - -
Mar 21 vs. William Paterson University of N.J. L, 11-2 0 0 0 0.0 - - - 0.00 - - -
Mar 28 Worcester State University W, 9-1 0 0 0 0.0 - - - 0.00 - - -
Mar 30 at UMass Dartmouth W, 8-7 0 0 0 0.0 - - - 0.00 - - -
Mar 30 at UMass Dartmouth W, 6-5 0 0 0 0.0 - - - 0.00 - - -
Apr 1 Westfield State University L, 8-6 0 0 0 0.0 - - - 0.00 - - -
Apr 3 at Western New England University L, 9-3 0 0 0 0.0 - - - 0.00 - - -
Apr 6 at Rhode Island College W, 6-2 0 0 0 0.0 - - - 0.00 - - -
Apr 6 at Rhode Island College W, 8-2 0 0 0 0.0 - - - 0.00 - - -
Apr 7 Saint Joseph's College (Me.) W, 11-5 0 0 0 0.0 - - - 0.00 - - -
Apr 8 at Framingham State University L, 8-4 0 0 0 0.0 - - - 0.00 - - -
Apr 9 at Bridgewater State University (Mass.) L, 7-5 0 0 0 0.0 - - - 0.00 - - -
Apr 10 Endicott College L, 7-2 0 0 0 0.0 - - - 0.00 - - -
Apr 11 at Babson College W, 4-1 0 0 0 0.0 - - - 0.00 - - -
Apr 13 Eastern Connecticut State University L, 2-0 0 0 0 0.0 - - - 0.00 - - -
Apr 13 Eastern Connecticut State University L, 4-0 0 0 0 0.0 - - - 0.00 - - -
Apr 16 University of Southern Maine L, 12-6 0 0 0 0.0 - - - 0.00 - - -
Apr 17 at Salem State University W, 5-1 0 0 0 0.0 - - - 0.00 - - -
Apr 18 Framingham State University W, 6-3 0 0 0 0.0 - - - 0.00 - - -
Apr 21 at Keene State College L, 4-3 0 0 0 0.0 - - - 0.00 - - -
Apr 21 at Keene State College L, 13-4 0 0 0 0.0 - - - 0.00 - - -
Apr 23 at University of Southern Maine W, 4-0 0 0 0 0.0 - - - 0.00 - - -
Apr 25 at MIT L, 4-3 0 0 0 0.0 - - - 0.00 - - -
Apr 27 Plymouth State University W, 12-0 0 0 0 0.0 - - - 0.00 - - -
Apr 27 Plymouth State University W, 1-0 0 0 0 0.0 - - - 0.00 - - -
Apr 28 at Endicott College L, 3-0 0 0 0 0.0 - - - 0.00 - - -
Apr 30 at Wheaton College (Mass.) L, 2-1 0 0 0 0.0 - - - 0.00 - - -
May 3 Western Connecticut State University L, 12-9 0 0 0 0.0 - - - 0.00 - - -
May 3 Western Connecticut State University L, 13-7 0 0 0 0.0 - - - 0.00 - - -
May 8 vs. Keene State College W, 12-9 0 0 0 0.0 - - - 0.00 - - -
May 9 vs. Eastern Connecticut State University L, 9-1 0 0 0 0.0 - - - 0.00 - - -
May 10 vs. UMass Dartmouth L, 21-5 0 0 0 0.0 - - - 0.00 - - -
Date Opponent Score tc po a e fpct dp sba rcs rcs% pb ci
Mar 14 vs. Greenville College (Ill.) L, 7-3 3 0 2 1 .667 - - - - - -
Mar 15 vs. Saint Joseph's College (Me.) L, 5-0 3 2 1 0 1.000 1 - - - - -
Mar 15 vs. Saint Joseph's College (Me.) W, 4-2 4 4 0 0 1.000 - - - - - -
Mar 16 vs. The College of New Jersey (TCNJ) L, 6-4 1 0 1 0 1.000 - - - - - -
Mar 17 vs. Rowan University (N.J.) L, 9-3 10 8 2 0 1.000 - - - - - -
Mar 19 vs. Springfield College L, 4-3 5 1 4 0 1.000 - - - - - -
Mar 20 vs. Concordia University (Wis.) W, 5-4 3 0 3 0 1.000 - - - - - -
Mar 20 vs. McDaniel College W, 7-6 7 1 4 2 .714 - - - - - -
Mar 21 vs. William Paterson University of N.J. L, 11-2 3 0 3 0 1.000 - - - - - -
Mar 28 Worcester State University W, 9-1 1 0 1 0 1.000 - - - - - -
Mar 30 at UMass Dartmouth W, 8-7 6 3 3 0 1.000 3 - - - - -
Mar 30 at UMass Dartmouth W, 6-5 2 0 1 1 .500 - - - - - -
Apr 1 Westfield State University L, 8-6 4 2 1 1 .750 - - - - - -
Apr 3 at Western New England University L, 9-3 2 0 1 1 .500 - - - - - -
Apr 6 at Rhode Island College W, 6-2 4 1 3 0 1.000 2 - - - - -
Apr 6 at Rhode Island College W, 8-2 3 0 3 0 1.000 - - - - - -
Apr 7 Saint Joseph's College (Me.) W, 11-5 3 3 0 0 1.000 - - - - - -
Apr 8 at Framingham State University L, 8-4 2 1 1 0 1.000 - - - - - -
Apr 9 at Bridgewater State University (Mass.) L, 7-5 5 1 3 1 .800 - - - - - -
Apr 10 Endicott College L, 7-2 2 0 1 1 .500 - - - - - -
Apr 11 at Babson College W, 4-1 4 2 2 0 1.000 - - - - - -
Apr 13 Eastern Connecticut State University L, 2-0 3 1 0 2 .333 - - - - - -
Apr 13 Eastern Connecticut State University L, 4-0 10 6 2 2 .800 1 - - - - -
Apr 16 University of Southern Maine L, 12-6 8 1 6 1 .875 - - - - - -
Apr 17 at Salem State University W, 5-1 7 6 1 0 1.000 - - - - - -
Apr 18 Framingham State University W, 6-3 10 10 0 0 1.000 - - - - - -
Apr 21 at Keene State College L, 4-3 11 10 1 0 1.000 - - - - - -
Apr 21 at Keene State College L, 13-4 7 3 3 1 .857 2 - - - - -
Apr 23 at University of Southern Maine W, 4-0 8 6 2 0 1.000 - - - - - -
Apr 25 at MIT L, 4-3 12 11 1 0 1.000 - - - - - -
Apr 27 Plymouth State University W, 12-0 5 4 0 1 .800 2 - - - - -
Apr 27 Plymouth State University W, 1-0 16 15 1 0 1.000 1 - - - - -
Apr 28 at Endicott College L, 3-0 7 7 0 0 1.000 1 - - - - -
Apr 30 at Wheaton College (Mass.) L, 2-1 10 9 1 0 1.000 2 - - - - -
May 3 Western Connecticut State University L, 12-9 11 11 0 0 1.000 1 - - - - -
May 3 Western Connecticut State University L, 13-7 5 0 5 0 1.000 - - - - - -
May 8 vs. Keene State College W, 12-9 12 7 1 4 .667 - - - - - -
May 9 vs. Eastern Connecticut State University L, 9-1 3 1 2 0 1.000 - - - - - -
May 10 vs. UMass Dartmouth L, 21-5 6 2 3 1 .833 - - - - - -
  g ab r h 2b 3b hr rbi bb k sb cs avg obp slg
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 181, column 5]
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