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