Skip to navigation Skip to content Skip to footer

2017-18 Tampa Spartans Women's Basketball Roster

There was a problem with a Velocity script
Page/roster-headline-template
ErrorInvocation of method 'sortedBy' in class com.prestosports.content.HeadlinesSorter threw exception Only one : should be in a sort rule (hometown:/:highschool) at ruuagqb1da96qmm2/roster-headline-template[line 551, column 51]
Page source:
1: ###################################################
2: ## LOCAL OVERRIDE REQUIRED TO SUPPORT NAMEENGINE ##
3: ###################################################
4: 
5: $website.include("options")
6: #set ($options = $request.getAttribute("options"))
7: 
8: #set ($rosterLayout = "list")
9: #set ($showHeadshotView = false)
10: 
11: #if ($options.get("roster_show_headshot_view") == true)
12: 	#set ($showHeadshotView = true)
13: 
14:         #foreach ($cookie in $request.cookies)
15:                 #if ($cookie.name == "roster_view")
16:                         #set ($rosterLayout = $cookie.value)
17:                 #end
18: 	#end
19: #end
20: 
21: #if ($options.get("roster_default_view"))
22:     #set ($rosterLayout = $options.get("roster_default_view"))
23: #end
24: 
25: #if ($request.getParameter("view"))
26:     #set ($view = $request.getParameter("view"))
27:     #if ($view == "list" || $view == "headshot")
28:         #set ($rosterLayout = $view)
29:     #end
30: #end
31: 
32: #set ($rosterFields = ["number","first_name: :last_name","position","year","height","weight","hometown:/:highschool"])
33: #set ($rosterLabels = ["No.","Name","Pos.","Cl.","Ht.","Wt.","Hometown/High School"])
34: #set ($rosterSortables = ["number","last_name","year","position"])
35: 
36: #if ($options.get("roster_fields") && $options.get("roster_labels"))
37:     #set ($rosterFieldsString = $options.get("roster_fields"))
38:     #set ($rosterLabelsString = $options.get("roster_labels"))
39: 
40: 	#set ($rosterFieldsString = $rosterFieldsString.split(","))
41:     #set ($rosterLabelsString = $rosterLabelsString.split(","))
42: 
43: 	#set ($rosterFieldsSize = $tool.list.size($rosterFieldsString))
44: 	#set ($rosterLabelsSize = $tool.list.size($rosterLabelsString))
45: 
46: 	#if ($rosterFieldsSize > 0 && $rosterLabelsSize > 0 && $rosterFieldsSize == $rosterLabelsSize)
47: 		#set ($rosterFields = $rosterFieldsString)
48: 		#set ($rosterLabels = $rosterLabelsString)
49: 	#end
50: #end
51: 
52: #if ($request.getParameter("sort").length() > 0) ## when sort param is available, force the list layout
53:   #set ($rosterLayout = "list")
54: #end
55: 
56: #macro (printFieldValue $field $defaultValue)
57: 	#set ($fieldValue = "")
58: 	#if ($field.contains(">"))
59: 		#set ($orderedFields = $field.split(">"))
60: 		#foreach ($orderedField in $orderedFields)
61: 			#set ($orderedField = $orderedField.trim())
62: 			#if ($bio.get($orderedField) && $fieldValue.length() == 0)
63: 				#set ($fieldValue = $bio.get($orderedField))
64: 			#end
65: 		#end
66: 	#else
67: 		#if ($bio.get($field))
68: 			#set ($fieldValue = $bio.get($field))
69: 		#end
70: 	#end
71: 	#if ($fieldValue.length() > 0)
72: 		$fieldValue
73: 	#else
74: 		$defaultValue
75: 	#end
76: #end
77: 
78: #macro (printField $field)
79: 	#set ($splitter = "")
80: 	#if ($field.contains(": :")) ## multipart fields separated by a space
81: 		#set ($splitter = ": :")
82: 	#elseif ($field.contains(":/:")) ## multipart fields separated by a /
83: 		#set ($splitter = ":/:")
84: 	#end
85: 
86: 	#if ($splitter.length() > 0)
87: 		#set ($multipartField = $field.split($splitter))
88: 		#foreach ($fieldPart in $multipartField)
89: 			#set ($fieldPart = $fieldPart.trim())
90: 			#if ($velocityCount > 1)
91: 				$splitter.charAt(1)
92: 			#end
93: 			#printFieldValue($fieldPart "-")
94: 		#end
95: 	#else
96: 		#printFieldValue($field " ")
97: 	#end
98: #end
99: 
100: #macro (printPlayerAriaLabel $bioinfo)
101:     #set ($jerseyNumber = "")
102:     #set ($bio = $bioinfo.getDataAsObject().getAttributes())
103:     #if ($bio.get("full_name").length() > 0)
104:         #set ($fullName = $bio.get("full_name"))
105:     #else
106:         #set ($firstName = $bio.get("first_name"))
107:         #set ($lastName = $bio.get("last_name"))
108:         #set ($fullName = "${firstName} ${lastName}")
109:     #end
110:     #if ($bio.get("number").length() > 0)
111:         #set ($jerseyNumber = "jersey number ${bio.get('number')}")
112:     #end
113:     aria-label="${fullName}: ${jerseyNumber}: full bio"
114: #end
115: 
116: #macro (printHeadshot $bioinfo)
117: 	#set ($bio = $bioinfo.getDataAsObject().getAttributes())
118: 	#set ($alt = "${bio.get('first_name')} ${bio.get('last_name')} bio photo")
119:         
120:         #if ($bioinfo.publishedHeadshots.size() > 0)
121:                 #set ($src = $bioinfo.publishedHeadshots.get(0).url)
122:         #elseif ($website.exists("/images/setup/default-headshot.png"))
123:                 #set ($src = "/images/setup/default-headshot.png")
124:         #elseif ($website.exists("/images/setup/headshot_default.jpg"))
125:                 #set ($src = "/images/setup/headshot_default.jpg")
126:         #else
127:                 #set ($src = "/info/images/default-headshot.png")
128:         #end
129: 	
130: 	#set ($src = "${src}?max_height=576&max_width=576&crop=1")
131: 	<img class="img-fluid w-100" src="${src}" alt="${alt}" tabindex="0" />
132: #end ## macro printHeadshot
133: 
134: #macro (printHeadshotBg $bioinfo)
135: 	#set ($bio = $bioinfo.getDataAsObject().getAttributes())
136:     #if ($bioinfo.publishedHeadshots.size() > 0)
137:         #set ($src = $bioinfo.publishedHeadshots.get(0).url)
138:     #elseif ($website.exists("/images/setup/default-headshot.png"))
139:         #set ($src = "/images/setup/default-headshot.png")
140:     #elseif ($website.exists("/images/setup/headshot_default.jpg"))
141:         #set ($src = "/images/setup/headshot_default.jpg")
142:     #else
143:         #set ($src = "/info/images/default-headshot.png")
144:     #end
145:     #set ($src = "${src}?max_height=576&max_width=576&crop=1")
146:     <div class="ratio ratio-1x1 d-block">
147: 	    <div style="background-image:url('${src}'); background-position:top center; background-size:cover;"></div>
148: 	</div>
149: #end ## macro printHeadshotBg
150: 
151: 
152: #macro (printBannerImage)
153:     #if ($page.thumbnailURL)
154: 		#set ($rosterThumbSize = 1920)
155:                 #if ($tool.math.toInteger($options.get("roster_thumb_size")))
156:                     #set ($rosterThumbSize = $tool.math.toInteger($options.get("roster_thumb_size")))
157:                 #end
158: 		<div class="roster-banner-img text-center">
159:                         <picture alt="${page.thumbnailPage.altText}">
160:                                 <source media="(min-width:1200px)" srcset="${page.thumbnailURL}?max_width=1920">
161:                                 <source media="(min-width:992px)" srcset="${page.thumbnailURL}?max_width=1199">
162:                                 <source media="(min-width:578px)" srcset="${page.thumbnailURL}?max_width=991">
163:                                 <source media="(min-width:0px)" srcset="${page.thumbnailURL}?max_width=576">
164:                                 <img class="img-fluid mx-auto" src="${page.thumbnailURL}?max_width=${rosterThumbSize}" alt="${page.thumbnailPage.altText}"/>
165:                         </picture>
166: 		</div>
167: 	#end
168: #end
169: 
170: #macro (printArchiveList)
171:     #if ($options.get("archive_roster"))
172:         #set ($id = "roster-archive-switcher")
173:         #if ($request.getParameter("id").length() > 0)
174:             #set ($id = $request.getParameter("id"))
175:         #end
176:     
177:     	#set ($archiveRosterString = $options.get("archive_roster"))
178:     	#set ($archiveRosterString = $archiveRosterString.split(","))
179:     	#set ($isArchivePage = false)
180:     	#if ($tool.list.size($archiveRosterString) > 0)
181: 
182:                 <div id="${id}" class="archive-roster-switcher-template float-right">
183:                         <div class="input-group mb-3">
184:                             <div class="input-group-prepend">
185:                                 <label class="input-group-text" for="$id-options">Archive Rosters</label>
186:                             </div>
187:                             <select class="custom-select" id="${id}-options" onchange="location=this.value;" aria-label="Change the season by selecting an option from the list below">
188:                                     #foreach ($string in $archiveRosterString)
189:                                         #set ($archiveRoster = $string.split(":"))
190:                                         #if ($tool.list.size($archiveRoster) == 2)
191:                                                 #set ($archiveUrl = $tool.list.get($archiveRoster, 0).trim())
192:                                                 #set ($archiveLabel = $tool.list.get($archiveRoster, 1).trim())
193:                                                 #if ($archiveUrl != $page.url)
194:                                                         <option value="$archiveUrl" data-url="$archiveUrl" data-title="$archiveLabel">$archiveLabel</option>
195:                                                 #else
196:                                                         <option value="$archiveUrl" data-url="$archiveUrl" data-title="$archiveLabel" selected>$archiveLabel</option>
197:                                                         #set ($isArchivePage = true)
198:                                                 #end
199:                                         #end
200:                                 #end
201:                             </select>
202:                         </div>
203:                 </div>
204:     	#end
205:     #end
206: #end ## macro printArchiveList
207: 
208: #macro (printViewButtons)
209:         <div class="btn-toolbar flex-fill justify-content-between d-print-none" role="toolbar" aria-label="Roster tool bar">
210:                 <div class="me-2" role="group" aria-label="Print freindly version">
211:                         <a href="${page.url}?dec=printer-decorator" class="btn btn-outline-secondary"><span class="fa fa-print"></span> Print</a>
212:                 </div>
213:                 #if ($showHeadshotView)
214:                         <div class="btn-group btn-group-toggle mb-3 ms-auto me-3" role="group" data-bs-toggle="buttons">
215:                                 <a class="roster-view btn btn-outline-secondary #if($rosterLayout == 'list') active #end" data-view="list" href="$page.url?view=list">
216:                                         <span class="fas fa-list" aria-hidden="true"></span>
217:                                         <span class="sr-only">List View</span>
218:                                 </a>
219:                                 <a class="roster-view btn btn-outline-secondary #if($rosterLayout == 'headshot') active #end" data-view="headshot" href="$page.url?view=headshot">
220:                                         <span class="fas fa-user" aria-hidden="true"></span>
221:                                         <span class="sr-only">Headshot View</span>
222:                                 </a>
223:                         </div>
224:                 #end
225:         </div>
226:         
227: #end ## macro printViewButtons
228: 
229: #set ($socialBrands = ["facebook", "twitter", "instagram", "youtube", "twitch", "tiktok"])
230: 
231: #macro (buildSocialLink $brand $handle $icons $class)
232: 	#if($brand == "facebook")
233: 		#set($socialHost = "https://www.facebook.com")
234: 	#elseif($brand == "twitter")
235: 		#set($socialHost = "https://twitter.com")
236: 	#elseif($brand == "instagram")
237: 		#set($socialHost = "https://www.instagram.com")
238: 	#elseif($brand == "tikTok")
239: 		#set($socialHost = "https://www.tiktok.com")
240: 	#elseif($brand == "twitch")
241: 		#set($socialHost = "https://www.twitch.tv")
242: 	#elseif($brand == "youtube")
243: 		#set($socialHost = "https://www.youtube.com")
244: 	#end
245: 
246: 	#if($socialHost.length() > 0 )
247: 		#set($url = "${socialHost}/${handle}")
248: 	#else
249: 		#set($url = "")
250: 	#end
251: 
252: 	#set($icons = $Boolean.parseBoolean($icons))
253: 	#if($icons == true)
254:     <a href="$url" class="$class" target="_blank"><span aria-label="$brand" class="fa fa-brands #if($brand == 'twitter') fa-x-twitter #else fa-$brand.toLowerCase() #end"></span></a>
255: 	#else
256:     <a href="$url" class="$class">$handle</a>
257: 	#end
258: #end
259: 
260: 
261: #macro (printListLayout)
262:         #set ($rosterFields = ["number","first_name: :last_name","position","year","height","weight","hometown:/:highschool"])
263: 	#set ($rosterLabels = ["No.","Name","Pos.","Cl.","Ht.","Wt.","Hometown/High School"])
264: 	#set ($rosterSortables = ["number","last_name","year","position"])
265: 
266: 	#if ($options.get("roster_fields") && $options.get("roster_labels"))
267:         #set ($rosterFieldsString = $options.get("roster_fields"))
268:         #set ($rosterLabelsString = $options.get("roster_labels"))
269: 
270: 		#set ($rosterFieldsString = $rosterFieldsString.split(","))
271:                 #set ($rosterLabelsString = $rosterLabelsString.split(","))
272: 
273: 		#set ($rosterFieldsSize = $tool.list.size($rosterFieldsString))
274: 		#set ($rosterLabelsSize = $tool.list.size($rosterLabelsString))
275: 
276: 		#if ($rosterFieldsSize > 0 && $rosterLabelsSize > 0 && $rosterFieldsSize == $rosterLabelsSize)
277: 			#set ($rosterFields = $rosterFieldsString)
278: 			#set ($rosterLabels = $rosterLabelsString)
279: 		#end
280: 	#end
281: 
282: 	#if ($options.get("roster_sortable"))
283: 		#set ($rosterSortablesString = $options.get("roster_sortable"))
284: 		#set ($rosterSortables = $rosterSortablesString.split(","))
285: 	#end
286: 
287:         #set ($sortBy = "")
288:         #set($sortBy = $formatter.escapeXml($request.getParameter("sort")))
289:         #if ($sortBy.length() > 0)
290:           #set ($headlines = $headlines.sortedBy($sortBy))
291:         #end
292:         
293:         <div class="table-responsive">
294:     	<table class="table table-hover">
295:     		<thead class="thead-dark">
296:     			<tr>
297:     				#foreach($field in $rosterFields)
298:     					#set ($fieldLabel = $tool.list.get($rosterLabels, $tool.math.sub($velocityCount, 1)))
299:     					#set ($isSortable = false)
300:     					#set ($sortableField = "")
301: 
302:     					#if ($tool.list.size($rosterSortables) > 0)
303:     						#foreach ($sortable in $rosterSortables)
304:     							#if ($field.contains($sortable))
305:     								#set ($isSortable = true)
306:     								#set ($sortableField = $sortable)
307:     							#end
308:     						#end
309:                                         #end
310: 
311:                                         #set ($ariaLabelColumn = $sortableField)
312:                                         #if ($sortableField.contains('custom'))
313:                                                 #set ($ariaLabelColumn = $fieldLabel)
314:                                         #end
315:                                         
316:                                         #set ($width = "")
317:                                         #if ($fieldLabel.contains('No'))
318:                                                 #set ($width = "w-1")
319:                                         #end     
320: 
321:     					<th scope="col" class="text-nowrap ${width} col${velocityCount} #if($isSortable)sortable #end #if($sortBy == $sortableField) sorted #end">
322:                                                 
323:                                                 #if ($isSortable)
324:     							<a href="$page.url?sort=${sortableField}" title="Sort using this column" class="sortable text-reset" role="button" >$fieldLabel
325:                                                                 #if($sortBy == $sortableField) 
326:                                                                         <span class="fa fa-sort-asc" aria-hidden="true"></span>
327:                                                                 #else
328:                                                                         <span class="fa fa-sort text-muted" aria-hidden="true"></span>
329:                                                                 #end
330:                                                         </a>
331:     						#else
332:     							$fieldLabel
333:     						#end
334:                                         </th>
335:     				#end
336:     			</tr>
337:     		</thead>
338:     		<tbody>
339:     			#foreach ($bioinfo in $headlines)
340:     				#set ($bio = $bioinfo.getDataAsObject().getAttributes())
341:     				<tr>
342:     					#foreach($field in $rosterFields)
343:                                 #set ($dataLabel = $tool.list.get($rosterLabels, $tool.math.sub($velocityCount, 1)))
344:                                 #if ($field.contains("first_name") || $field.contains("last_name") || $field.contains("full_name"))
345:                                         <th scope="row" class="text-inherit">
346: 											<a #printPlayerAriaLabel($bioinfo) href="$bioinfo.url">#printField($field)</a>
347: 											
348: 											<div class="earit_popup" id="earit_popup"></div><script src=https://earit2.thenameengine.com/names/earit/Tampa></script>
349: 											
350: 											<div class="social-links-inline d-inline-block ml-2 ms-2">
351: 												<ul class="d-flex d-flex justify-content-between align-items-center p-0 m-0 gap-0" tabindex="0">
352: 													#foreach ($brand in $socialBrands)
353: 														#if ($bio.get("$brand").length())
354: 															#set($link = $bio.get("$brand"))
355: 															<li class="d-flex justify-content-between align-items-center flex-column">
356: 																#buildSocialLink($brand.toLowerCase(), $link, true, "fs-sm small p-1")
357: 															</li>
358: 														#end
359: 													#end
360: 												</ul>
361: 											</div>
362:                                         </th>
363:                                 #else
364:                                         #if ($dataLabel.contains('No'))
365:                                                 <td class="text-nowrap jersey-number d-md-none">
366:                                                         <span class="badge badge-secondary">#printField($field)</span>
367:                                                 </td>                
368:                                         #end
369:                                         #if ($dataLabel.contains("Pos.") || $dataLabel.contains("Num.") || $dataLabel.contains("Wt.") || $dataLabel.contains("Ht.") || $dataLabel.contains("Cl.") || $dataLabel.contains("B/T"))
370:                                             #set ($textWrapClass = "text-nowrap")
371:                                         #else
372:                                             #set ($textWrapClass = "text-inherit")
373:                                         #end
374:                                         <td class="$textWrapClass #if ($dataLabel.contains('No')) jersey-number d-none d-md-table-cell #end">
375:                                                 <span class="label font-weight-bold fw-bold d-md-none">$dataLabel:</span>
376:                                                 #if ($field.contains("email_address"))
377:                                                         <a href="mailto:${bio.get("email_address")}">#printField($field)</a>
378:                                                 #else
379:                                                         #printField($field)
380:                                                 #end
381:                                         </td>
382:                                 #end
383:     					#end
384:     				</tr>
385:     			#end
386:     		</tbody>
387:     	</table>
388:     </div>
389: #end ## macro printListLayout
390: 
391: #macro (printHeadshotLayout)
392:         #set ($headshotSize = "medium")
393:         #if ($options.get("roster_headshot_size"))
394:                 #set ($headshotSize = $options.get("roster_headshot_size"))
395:         #end
396:         
397:         <div class="roster-headshot-container">
398:                 <div class="row player-cards g-3 headshot-size-${headshotSize}">
399:                         #foreach ($bioinfo in $headlines)
400:                             #if($headshotSize == "large")
401:                                     #set ($cardClass = "col-12 col-sm-6 col-md-4 col-lg-4")
402:                             #elseif($headshotSize == "medium")
403:                                     #set ($cardClass = "col-12 col-sm-6 col-md-4 col-lg-3")
404:                             #elseif($headshotSize == "small")
405:                                     #set ($cardClass = "col-12 col-sm-6 col-md-4 col-lg-2")
406:                             #end
407: 
408:                             #set ($bio = $bioinfo.getDataAsObject().getAttributes())
409:                             <div class="player-card-wrapper ${cardClass} d-flex align-items-stretch position-relative">
410:                                 <div class="player-card card shadow w-100">
411:                                     <div #printPlayerAriaLabel($bioinfo)  class="card-front card-data w-100 h-100 bg-white rounded d-flex flex-column align-items-center justify-content-between">
412:                                         <div class="player-image position-relative w-100 overflow-hidden">
413:                                            #printHeadshotBg($bioinfo)
414:                                         </div>
415:                                         <div class="player-card-footer p-3 d-flex justify-content-between align-items-center flex-grow w-100 position-relative">
416:                                             <div class="vm-btn btn btn-sm btn-secondary overflow-hidden position-absolute font-weight-bold fw-bold z-index-1 lh-base" style="line-height:initial;"><span class="fa fa-ellipsis-v"></span><span class="sr-only visually-hidden">View More</span></div>
417: 
418: 											#if ($bio.get("first_name") && $bio.get("last_name"))
419: 												<a href="$bioinfo.url" class="text-decoration-none flex-fill">
420: 													<span class="name">
421: 														<span class="firstname text-truncate d-block fs-6">$bio.get("first_name")</span>
422: 														<span class="lastname text-truncate d-block fs-5">$bio.get("last_name")#if($bio.get("year").length() > 0) - $bio.get("year")#end</span>
423: 													</span>
424: 												</a>
425:                                             #end
426: 											<ul class="d-flex d-flex justify-content-between align-items-center p-0 m-0 gap-2" tabindex="0">
427: 												#foreach ($brand in $socialBrands)
428: 													#if ($bio.get("$brand").length())
429: 														#set($link = $bio.get("$brand"))
430: 														<li class="d-flex justify-content-between align-items-center flex-column">
431: 															#buildSocialLink($brand.toLowerCase(), $link, true, "")
432: 														</li>
433: 													#end
434: 												#end
435: 											</ul>
436: 
437: 											#if ($bio.get("number") && $!bio.get("number").length() > 0)
438:                                                 <span class="number font-weight-bold fw-bold position-relative float-right text-center text-white" tabindex="0" aria-label="Jersey Number $bio.get('number')">$bio.get("number")</span>
439: 											#end
440:                                         </div>
441:                                     </div>
442:                                     <div class="player-short-bio card-back card-data w-100 h-100 overflow-hidden p-3 position-absolute" >
443:                                         <div class="bio-content d-flex flex-column gap-3 h-100">
444:                                             <div class="card-back-head pb-3">
445:                                                 #if ($bio.get("first_name") && $bio.get("last_name"))
446:                                                     <div class="name d-flex align-items-center justify-content-start gap-3 p-0">
447:                                                         <div class="pl-profile w-25 h-100">
448:                                                             #printHeadshot($bioinfo)
449:                                                         </div>
450:                                                         <div class="pl-name-wrap d-flex flex-column gap-2">
451:                                                             #if ($bio.get("number") && $!bio.get("number").length() > 0)
452:                                                                 <span class="number font-weight-bold fw-bold fs-5 nowrap">#$bio.get("number")</span>
453:                                                             #end
454:                                                             <div class="pl-name text-decoration-none mt-0">
455:                                                                 <span class="firstname text-truncate d-block fs-6">$bio.get("first_name")</span>
456:                                                                 <span class="lastname text-truncate d-block fs-5">$bio.get("last_name")</span>
457:                                                             </div>
458:                                                         </div>
459:                                                     </div>
460:                                                 #end
461:                                                 <span class="close position-absolute btn btn-sm btn-link">
462: 													<span class="fa fa-close fa-times" aria-hidden="true"></span>
463: 													<span class="visually-hidden">Close</span>
464: 												</span>
465:                                             </div>
466:                                             <div class="bio-data">
467:                                                 <ul class="list-unstyled small">
468:                                                     #if ($bio.get("year").length() > 0)
469:                                                         <li tabindex="0" class="p-0 m-0"><span class="font-weight-bold fw-bold">Class:</span> $bio.get("year")</li>
470:                                                     #end
471:                                                     #if ($bio.get("height").length() > 0)
472:                                                         <li tabindex="0" class="p-0 m-0"><span class="font-weight-bold fw-bold">Height:</span> $bio.get("height")</li>
473:                                                     #end
474:                                                     #if ($bio.get("bats_throws").length() > 0)
475:                                                         <li tabindex="0" class="p-0 m-0"><span class="font-weight-bold fw-bold">B/T:</span> $bio.get("bats_throws")</li>
476:                                                     #end
477:                                                     #if ($bio.get("position").length() > 0)
478:                                                         <li tabindex="0" class="p-0 m-0"><span class="font-weight-bold fw-bold">Position:</span> $bio.get("position")</li>
479:                                                     #end
480:                                                     #if ($bio.get("hometown").length() > 0)
481:                                                         <li tabindex="0" class="p-0 m-0"><span class="font-weight-bold fw-bold">Hometown:</span> $bio.get("hometown")</li>
482:                                                     #end
483:                                                     #if ($bio.get("highschool").length() > 0)
484:                                                         <li tabindex="0" class="p-0 m-0"><span class="font-weight-bold fw-bold">Highschool:</span> $bio.get("highschool")</li>
485:                                                     #end
486: 
487:                                                     <ul class="list-group list-group-horizontal p-0 mt-2" tabindex="0">
488: 														#foreach ($brand in $socialBrands)
489: 															#if ($bio.get("$brand").length())
490: 																#set($link = $bio.get("$brand"))
491: 																<li class="list-group-item">
492: 																	#buildSocialLink($brand.toLowerCase(), $link, true, "")
493: 																</li>
494: 															#end
495: 														#end
496: 													</ul>
497:                                                 </ul>
498:                                             </div>
499:                                             <a href="$bioinfo.url" class="btn btn-primary full-bio font-weight-bold fw-bold btn-block text-center overflow-hidden">Full Bio</a>
500:                                         </div>
501:                                     </div>
502:                                 </div>
503:                             </div>
504:                         #end
505:                 </div>
506:         </div>
507: #end ## macro printHeadshotLayout
508: 
509: #if ($request.getParameter("ajax").length() > 0)
510:     
511:     #if ($rosterLayout == "list")
512:         #printListLayout
513:     #elseif ($rosterLayout == "headshot")
514:         #printHeadshotLayout
515:     #end
516:     
517:     $website.decorate("")
518:     
519: #else
520:     <div class="page-content roster-content" data-module="bs-scripts/roster-layout" data-page-url="$page.url" data-page-title="$!page.title - ${website.profile.siteName}">
521:     
522:     	
523:     	#set ($pageTitle = "Roster")
524:         #if ($page.title.length() > 0)
525: 		#set ($pageTitle = $page.title)
526: 	#end
527:         #if ($page.title.length() > 0)
528:     	    <h1 class="page-heading">$pageTitle</h1>
529:         #end
530:         $!request.setAttribute("pageTitle", "${pageTitle}")
531:         
532:  $!request.setAttribute("pageDescription", "The official $pageDescription")
533: 
534:         #printBannerImage
535: 
536:     	<div class="d-flex justify-content-between flex-column-reverse flex-md-row pt-3 border-top border-bottom my-3">
537:     	    #printViewButtons
538:     	    #printArchiveList
539:     	</div>
540:     	
541:         #if ($rosterLayout == "list")
542:         
543:         	#if ($options.get("roster_sortable"))
544:         		#set ($rosterSortablesString = $options.get("roster_sortable"))
545:         		#set ($rosterSortables = $rosterSortablesString.split(","))
546:         	#end
547:         
548:                 #set ($sortBy = "")
549:                 #set($sortBy = $request.getParameter("sort"))
550:                 #if ($sortBy.length() > 0)
551:                     #set ($headlines = $headlines.sortedBy($sortBy))
552:                 #end
553: 
554:                 <div class="roster-data style-list">#printListLayout</div>
555:         
556:         #elseif ($rosterLayout == "headshot")
557:                 <div class="roster-data style-headshot">#printHeadshotLayout</div>
558:             
559:         #end ## roster-layout
560:         
561:         #set ($rosterFooter = "${page.url}-footer")
562:         #if ($website.exists($rosterFooter))
563:                 <div class="roster-footer" data-fetch="$rosterFooter">$website.include($rosterFooter)</div>
564:         #end
565:     </div> ## page-content
566:     
567:     ## GLOBAL ADS SERVER
568:     #if ($website.ads.isAdvertisingEnabled('ROSTER'))
569:     	$website.includeAgain("global-adserver-slots?adSlot=roster")
570:     #end
571:     
572: #end ## if ajax
573: 
574: <script type="text/javascript">
575: 	$(".vm-btn").click(function(e){
576: 		e.preventDefault();
577: 		$('.player-card.flipped').removeClass('flipped');
578: 		$(this).closest('.player-card').addClass('flipped');
579: 		e.stopPropagation();
580: 	});
581: 
582: 	$(document).on("click", function(e) {
583: 		if ($(e.target).is(".player-card") === false) {
584: 			$(".player-card").removeClass("flipped");
585: 		}
586: 	});
587: 
588: 	$(".card-back .close").click(function(){
589: 		$(".player-card").removeClass("flipped");
590: 	});
591: </script>