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