GLOBE Projects

GLOBE Side Navigation

An error occurred while processing the template.
The following has evaluated to null or missing:
==> project_badges  [in template "10132#10165#GLOBE-PROJECT-TEMPLATE" at line 99, column 7]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if (project_badges.getChildren()?has...  [in template "10132#10165#GLOBE-PROJECT-TEMPLATE" at line 99, column 1]
----
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-image img { 
246        height: 200px; 
247        object-fit: cover; 
248
249    #report-container #report-url-description { 
250        margin: 20px 0 0; 
251
252    #report-container #report-url-description #report-description { 
253        margin-top: 20px; 
254
255</style> 
256 
257<div id="report-container"> 
258    <h2 style="padding-bottom:10px;">${project_title.getData()}</h2> 
259    <div id="report-details-container"> 
260        <div id="report-details"> 
261            <div class="report-data-row" ><span class="report-data-title" >Organization(s):</span><span class="report-data-value" >${organizations}</span></div> 
262            <div class="report-data-row" ><span class="report-data-title" >Student(s):</span><span class="report-data-value" >${project_authors.getData()}</span></div> 
263            <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> 
264             
265            <div class="report-data-row" ><span class="report-data-title" > 
266            <#if (accountType == 'obs_cs' || accountType == 'obs_school')> 
267                Teacher:</span><span class="report-data-value">${users}</span></div> 
268            <#else> 
269                GLOBE Teacher:</span><span class="report-data-value">${users}</span></div> 
270            </#if> 
271 
272            <div class="report-data-row" ><span class="report-data-title" >Contributors:</span><span class="report-data-value" >${project_additional_authors.getData()}</span></div> 
273            <div class="report-data-row" ><span class="report-data-title" >Report Type(s):</span><span class="report-data-value" >${reportTypes}</span></div> 
274            <div class="report-data-row" ><span class="report-data-title" >Protocols:</span><span class="report-data-value" >${protocols}</span></div> 
275 
276            <#if (reportType == "ivss_report" || reportType == "mission_earth_report") > 
277                <#if (videoLink?has_content && videoLink?length > 0) > 
278                    <#if (!stringUtil.startsWith(videoLink, "http://") && !stringUtil.startsWith(videoLink, "https://")) > 
279                        <#assign videoLink = "http://" + videoLink /> 
280                    </#if> 
281                    <div class="report-data-row"> 
282                        <span class="report-data-title">Presentation Video:</span><span  
283                                class="report-data-value" > 
284                            <a href="${videoLink}" target="_blank">View Video</a> 
285                        </span> 
286                    </div> 
287                </#if> 
288 
289 
290 
291                <#if (presentationLink?has_content && presentationLink?length > 0) > 
292                    <div class="report-data-row"> 
293                        <span class="report-data-title">Presentation Poster:</span><span  
294                                class="report-data-value"> 
295                            <a href="${presentationLink}" target="_blank">View Document</a> 
296                        </span> 
297                    </div> 
298                </#if> 
299            </#if> 
300            <#if (reportType == "ivss_report") > 
301                <div class="report-data-row"> 
302                    <span class="report-data-title">Optional Badges:</span><span  
303                            class="report-data-value" >${badges}</span> 
304                </div> 
305            </#if> 
306            <div class="report-data-row" > 
307                <span class="report-data-title" >Language(s):</span><span  
308                        class="report-data-value" >${languages}</span> 
309            </div> 
310            <div class="report-data-row" > 
311                <span class="report-data-title" >Date Submitted:</span><span  
312                        class="report-data-value" >${projectDate}</span> 
313            </div> 
314        </div> 
315        <div id="report-image" > 
316            <img src="${projectImageUrl}" alt="${project_thumbnail_alt_tag.getData()}"> 
317        </div> 
318    </div> 
319    <div id="report-url-description"> 
320        <#if (project_linkto_document.getData() != "")> 
321            <div > 
322                <a href="${project_linkto_document.getData()}" target="_blank"><b>View Research Report</b></a><br> 
323            </div> 
324        </#if> 
325        <div id="report-description"> 
326            ${project_description.getData()} 
327        </div> 
328    </div> 
329</div> 



Comments

Hi , you did a great job on the video .
However do you think that the pond could slowly be a sink hole ? I mean the landscape was completely tore to bits in it and all ended up in the storm so what of the water is sinking? Any thoughts . ?
Thanks for your interest Michele. Our Soil Study group were definitely thinking about sink holes. Part of their investigation was to look at the lowering of the water table in our area. If the soil was less supported by water then there would be higher infiltration rates and, yes we might see sink hole formation. Unfortunately this was probably our most difficult hypothesis to work on and the one we probably did the poorest job on. The group did observe no signs of change in ground level elevation. There is more to do in this area. You sound like you would be a great member of our squad.
Interesting project! I'm impressed with the high level of collaboration! Did any of your results surprise you? Would you do any of the studies differently if you were to do this again? What did you learn from this experience?
Thanks, Meg. Believe me, collaboration wasn't always smooth. That's the miracle of video editing. Our weakest study, and possibly the most important was the investigation of ground infiltration rates and the lowering of the water table in our area. If our suspicions are correct, runoff is not recharging the pond. To me that was surprising. I am learning why there are very few real natural bodies of fresh water in areas like ours in spite of lots of precip. Climate change is not helping the situation. Thanks for taking a look.
What a great team effort! And such a relevant project for your school! Great job! I really appreciated the thoroughness of this project, the explanation of the process of discovery by the students, and how teams of students took on studying the various factors that may have been influential.
I was wondering a couple things, however:
1) How did you estimate the depth for the past estimate of the pond volume?
2) Why do you expect that climate changes that have occurred over the past 30 years are related to changes that occurred in the 5-year period of your pond's history?
North Shore students - I am so impressed with what you have done! You really did a great job trying to figure out why your pond is disappearing. I hope you continue this research so you can figure out what is happening!

I noticed you used several outside data sources and tools (Google Earth, NCDC data, etc). What other resources do you think you could use to continue this project? Have you talked to scientists in your area? Also, now that you have investigated these different possible causes for your disappearing pond, what is your best guess now as to what is happening?

I look forward to seeing your responses!