Virtual Science Symposium Reports
An error occurred while processing the template.
Java method "com.sun.proxy.$Proxy40.getUserByEmailAddress(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy40 object "gov.globe.liferay.portal.impl.service.user.GlobeUserLocalServiceWrapper2@4769303b"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: user = userLocalService.getUserByEmai... [in template "10132#10165#GLOBE-PROJECT-TEMPLATE" at line 64, column 25] ----
1<#assign
2 orgArray = []
3 userArray = []
4 badgeArray = []
5 languageArray = []
6 protocolArray = []
7 reportTypesArray = []
8 orgLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService")
9 userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")
10 groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")
11 userGroupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserGroupLocalService")
12 idLocalService = serviceLocator.findService("gov.globe.util.idlookup.service.IDLookupLocalService")
13 assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")
14 globeMemberId = idLocalService.getId("globe.usergroupid.globe_members")
15 candidateId = idLocalService.getId("globe.usergroupid.candidates")
16 studentsId = idLocalService.getId("globe.usergroupid.students")
17 projectDate = getterUtil.getString(project_date.getData())
18 reportType = ""
19 accountType = ""
20 videoLink = ""
21 presentationLink = ""
22/>
23
24<#if (project_authororganization.getSiblings()?has_content)>
25 <#list project_authororganization.getSiblings() as authOrg >
26 <#assign
27 accountTypeArr = stringUtil.split(authOrg.getData(), "@@@")
28 dataArray = stringUtil.split(accountTypeArr[0], "$$$")
29 />
30 <#if (accountTypeArr?size > 1)>
31 <#assign
32 accountType = accountTypeArr[1]
33 />
34 <#else>
35 <#assign
36 accountType = "regular"
37 />
38 </#if>
39
40 <#if (dataArray?has_content && dataArray?size > 0) >
41 <#assign orgValue = dataArray[0] />
42 <#if (orgValue?is_string && !orgValue?eval?is_number)>
43 <#assign org = orgLocalService.getOrganization(company.getCompanyId(), orgValue) />
44 <#else>
45 <#assign org = orgLocalService.getOrganization(orgValue?eval) />
46 </#if>
47 <#assign
48 orgName = org.getName()
49 group = org.getGroup()
50 orgURL = group.getFriendlyURL()
51 orgLink = "<a href='/web${orgURL}'>${orgName}</a>"
52 orgArray = orgArray + [orgLink]
53 />
54 <#if (dataArray?size > 1) >
55 <#assign
56 userData = dataArray[1]
57 />
58
59 <#-- check if name has an email -->
60 <#if (userData?contains("("))>
61 <#assign
62 emailAddress = stringUtil.extractLast(userData, "(")
63 emailAddress = stringUtil.extractFirst(emailAddress, ")")
64 user = userLocalService.getUserByEmailAddress(company.getCompanyId(), emailAddress)
65 />
66 <#if user.isActive() >
67 <#if (userGroupLocalService.hasUserUserGroup(user.getUserId(), globeMemberId)
68 || userGroupLocalService.hasUserUserGroup(user.getUserId(), candidateId)
69 || userGroupLocalService.hasUserUserGroup(user.getUserId(), studentsId)) >
70 <#assign
71 groupUser = groupLocalService.getGroup(user.getGroup().getGroupId())
72 userLink = "<a href='/web${groupUser.getFriendlyURL()}'>${user.getFullName()}</a>"
73 />
74 <#else>
75 <#assign
76 userLink = "${user.getFullName()}"
77 />
78 </#if>
79 <#else>
80 <#assign
81 userLink = "${user.getFullName()} (inactive)"
82 />
83 </#if>
84 <#assign
85 userArray = userArray + [userLink]
86 />
87
88 <#else>
89 <#-- no email - just show name -->
90 <#assign
91 userArray = userArray + [userData]
92 />
93 </#if>
94
95 </#if>
96 </#if>
97 </#list>
98</#if>
99<#if (project_badges.getChildren()?has_content)>
100 <#list project_badges.getChildren() as badge >
101 <#if (badge.getData()?has_content && badge.getData()?eval) >
102 <#assign badgeArray = badgeArray + [languageUtil.get(locale, badge.getName())] />
103 </#if>
104 </#list>
105</#if>
106<#if (project_report_type_2?has_content) >
107 <#-- this is the NEW way of specifying report types -->
108 <#list project_report_type_2.getChildren() as reportTypeObj >
109 <#if (reportTypeObj.getData()?has_content && (reportTypeObj.getName() == "ivss_report" || reportTypeObj.getName() == "mission_earth_report")) >
110 <#assign reportType = reportTypeObj.getName() />
111 </#if>
112 <#if (reportTypeObj.getData()?has_content && reportTypeObj.getData()?eval) >
113 <#switch reportTypeObj.getName() >
114 <#case "ivss_report">
115 <#assign reportTypesArray = reportTypesArray + ["International Virtual Science Symposium Report"] />
116 <#break >
117 <#case "standard_research_report">
118 <#assign reportTypesArray = reportTypesArray + ["Standard Research Report"] />
119 <#break >
120 <#case "mission_earth_report">
121 <#assign reportTypesArray = reportTypesArray + ["Mission Earth Report"] />
122 <#break >
123 <#case "mission_mosquito_report">
124 <#assign reportTypesArray = reportTypesArray + ["Mission Mosquito Report"] />
125 <#break >
126 <#case "student_research_symposia_report">
127 <#assign reportTypesArray = reportTypesArray + ["U.S. Student Research Symposia (SRS)"] />
128 <#break >
129 </#switch>
130 </#if>
131 </#list>
132<#elseif (type_student_report?has_content) >
133 <#-- this is the OLD way of specifying the report type -->
134 <#assign
135 project_report_type = type_student_report.getChild("project_report_type")
136 />
137 <#if (project_report_type.getData() == "science_fair_report") >
138 <#assign
139 reportType = "ivss_report"
140 reportTypesArray = reportTypesArray + ["International Virtual Science Symposium Report"]
141 />
142 <#elseif (project_report_type.getData() == "standard_report") >
143 <#assign
144 reportType = "standard_research_report"
145 reportTypesArray = reportTypesArray + ["Standard Research Report"]
146 />
147 <#elseif (project_report_type.getData() == "mission_earth_report") >
148 <#assign
149 reportType = "mission_earth_report"
150 reportTypesArray = reportTypesArray + ["Mission Earth Report"]
151 />
152 </#if>
153</#if>
154
155<#if report_language?has_content >
156 <#list report_language.getChildren() as language>
157 <#if (language.getData()?has_content && language.getData()?eval) >
158 <#if (language.getName() == "other") >
159 <#assign otherLanguage = language.getChild("other_string") />
160 <#if (otherLanguage.getData()?has_content) >
161 <#assign languageArray = languageArray +
162 [stringUtil.upperCaseFirstLetter(language.getName()) +
163 " (" + otherLanguage.getData() + ")"] />
164 </#if>
165 <#else>
166 <#assign languageArray = languageArray + [stringUtil.upperCaseFirstLetter(language.getName())] />
167 </#if>
168 </#if>
169 </#list>
170</#if>
171<#if protocol_checkboxes.getData()?has_content >
172 <#assign protocolIds = stringUtil.split(protocol_checkboxes.getData()) />
173 <#list protocolIds as protocolId >
174 <#if (protocolId?has_content) >
175 <#assign
176 category = assetCategoryLocalService.getCategory(protocolId?eval)
177 protocolArray = protocolArray + [category.getName()]
178 />
179 </#if>
180 </#list>
181</#if>
182
183<#if (proejct_video_url??) >
184 <#if (proejct_video_url.getData()?has_content) >
185 <#assign videoLink = proejct_video_url.getData() />
186 </#if>
187</#if>
188
189<#if (project_poster_presentation??) >
190 <#if (project_poster_presentation.getData()?has_content) >
191 <#assign presentationLink = project_poster_presentation.getData() />
192 </#if>
193</#if>
194
195<#if (project_presentation?has_content) >
196 <#if project_presentation.getChild("proejct_video_url")??>
197 <#assign
198 proejct_video_url = project_presentation.getChild("proejct_video_url")
199 videoLink = proejct_video_url.getData()
200 />
201 </#if>
202 <#if project_presentation.getChild("project_poster_presentation")??>
203 <#assign
204 project_poster_presentation = project_presentation.getChild("project_poster_presentation")
205 presentationLink = project_poster_presentation.getData()
206 />
207 </#if>
208</#if>
209
210<#assign
211 organizations = stringUtil.merge(orgArray, ", ")
212 users = stringUtil.merge(userArray, ", ")
213 badges = stringUtil.merge(badgeArray, ", ")
214 languages = stringUtil.merge(languageArray, ", ")
215 reportTypes = stringUtil.merge(reportTypesArray, ", ")
216 protocols = stringUtil.merge(protocolArray, ", ")
217 projectImageUrl = project_thumbnail_image.getData()
218/>
219<#if (validator.isNull(projectImageUrl) || projectImageUrl == "") >
220 <#assign
221 projectImageUrl = "/o/gov-globe-main-theme/images/GLOBElogo-2015.png"
222 />
223</#if>
224
225<style type="text/css" >
226 #report-container #report-details-container {
227 display: flex;
228 }
229 #report-container #report-details-container #report-details {
230 flex: 1;
231 }
232 #report-container #report-details-container .report-data-row {
233 padding-bottom: 7px;
234 }
235 #report-container #report-details-container .report-data-row .report-data-title {
236 font-weight: 700;
237 }
238 #report-container #report-details-container .report-data-row .report-data-value {
239 padding:0px 10px;
240 }
241 #report-container #report-image {
242 width: 225px;
243 vertical-align: top;
244 }
245 #report-container #report-url-description {
246 margin: 20px 0 0;
247 }
248 #report-container #report-url-description #report-description {
249 margin-top: 20px;
250 }
251</style>
252
253<div id="report-container">
254 <h2 style="padding-bottom:10px;">${project_title.getData()}</h2>
255 <div id="report-details-container">
256 <div id="report-details">
257 <div class="report-data-row" ><span class="report-data-title" >Organization(s):</span><span class="report-data-value" >${organizations}</span></div>
258 <div class="report-data-row" ><span class="report-data-title" >Student(s):</span><span class="report-data-value" >${project_authors.getData()}</span></div>
259 <div class="report-data-row" ><span class="report-data-title" >Grade Level:</span><span class="report-data-value" >${languageUtil.get(locale,project_grade.getData())}</span></div>
260
261 <div class="report-data-row" ><span class="report-data-title" >
262 <#if (accountType == 'obs_cs' || accountType == 'obs_school')>
263 Teacher:</span><span class="report-data-value">${users}</span></div>
264 <#else>
265 GLOBE Teacher:</span><span class="report-data-value">${users}</span></div>
266 </#if>
267
268 <div class="report-data-row" ><span class="report-data-title" >Contributors:</span><span class="report-data-value" >${project_additional_authors.getData()}</span></div>
269 <div class="report-data-row" ><span class="report-data-title" >Report Type(s):</span><span class="report-data-value" >${reportTypes}</span></div>
270 <div class="report-data-row" ><span class="report-data-title" >Protocols:</span><span class="report-data-value" >${protocols}</span></div>
271
272 <#if (reportType == "ivss_report" || reportType == "mission_earth_report") >
273 <#if (videoLink?has_content && videoLink?length > 0) >
274 <#if (!stringUtil.startsWith(videoLink, "http://") && !stringUtil.startsWith(videoLink, "https://")) >
275 <#assign videoLink = "http://" + videoLink />
276 </#if>
277 <div class="report-data-row">
278 <span class="report-data-title">Presentation Video:</span><span
279 class="report-data-value" >
280 <a href="${videoLink}" target="_blank">View Video</a>
281 </span>
282 </div>
283 </#if>
284
285
286
287 <#if (presentationLink?has_content && presentationLink?length > 0) >
288 <div class="report-data-row">
289 <span class="report-data-title">Presentation Poster:</span><span
290 class="report-data-value">
291 <a href="${presentationLink}" target="_blank">View Document</a>
292 </span>
293 </div>
294 </#if>
295 </#if>
296 <#if (reportType == "ivss_report") >
297 <div class="report-data-row">
298 <span class="report-data-title">Optional Badges:</span><span
299 class="report-data-value" >${badges}</span>
300 </div>
301 </#if>
302 <div class="report-data-row" >
303 <span class="report-data-title" >Language(s):</span><span
304 class="report-data-value" >${languages}</span>
305 </div>
306 <div class="report-data-row" >
307 <span class="report-data-title" >Date Submitted:</span><span
308 class="report-data-value" >${projectDate}</span>
309 </div>
310 </div>
311 <div id="report-image" >
312 <img src="${projectImageUrl}" alt="${project_thumbnail_alt_tag.getData()}">
313 </div>
314 </div>
315 <div id="report-url-description">
316 <#if (project_linkto_document.getData() != "")>
317 <div >
318 <a href="${project_linkto_document.getData()}" target="_blank"><b>View Research Report</b></a><br>
319 </div>
320 </#if>
321 <div id="report-description">
322 ${project_description.getData()}
323 </div>
324 </div>
325</div>