Projects - Honda Research Institute USA

Projects

An error occurred while processing the template.
The following has evaluated to null or missing:
==> projectImage.uuid  [in template "20116#20152#53952" at line 152, column 121]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
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: #assign projectImageURL = themeDispla...  [in template "20116#20152#53952" at line 152, column 25]
----
1<!-- START: Project Filter Template --> 
2<!-- start css styles --> 
3<style type="text/css"> 
4    .hri-filter.mainContainer{ 
5        margin:0 40px 0 0; 
6
7    .hri-filter .leftContainer { 
8        margin-right: 40px; 
9
10 
11    .hri-filter .panel { 
12        margin: 0 0 20px 0 !important; 
13
14    /* Project Styles*/ 
15    .mainContainer .leftContainer .panel-default>div  { 
16        padding-right: 0; 
17        padding-left: 0; 
18
19 
20    .mainContainer .leftContainer .panel-default>div:nth-child(3n+1) { 
21        clear: left; 
22
23 
24    .b-generic-cards__link:hover { 
25        text-decoration: none; 
26
27 
28    @media (max-width: 768px){ 
29        .hri-filter.mainContainer{ 
30            margin:20px; 
31
32        .hri-filter .leftContainer{ 
33            margin:0px 
34
35        .mainContainer .leftContainer .panel-default>div:nth-child(odd){ 
36            padding-right:10px; 
37
38        .mainContainer .leftContainer .panel-default>div:nth-child(even){ 
39            padding-left:10px; 
40
41        .mainContainer .leftContainer .panel-default>div:nth-child(3n+1) { 
42            clear: revert; 
43
44        .mainContainer .leftContainer .panel-default>div:nth-child(2n+1) { 
45            clear: both; 
46
47        .b-project .b-card__image { 
48            display:block; 
49            height: 125px; 
50
51        .b-project.b-card { 
52            border:none; 
53            margin-bottom: 10px; 
54
55        .b-project .b-card__title { 
56            padding: 0px 0px; 
57            font-size: 12px; 
58            line-height: 16px; 
59            margin-top:10px; 
60
61 
62        .b-project .b-card__image { 
63            display:block; 
64            height: 125px; 
65
66 
67
68 
69</style> 
70 
71 
72<!-- end css styles --> 
73<#import "liferay-hri-theme_SERVLET_CONTEXT_/templates/base22/freemarker-utils.ftl" as utils> 
74 
75<#assign assetEntryQueryService = objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')> 
76<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')> 
77<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") /> 
78<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
79<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
80<#assign currentURL=themeDisplay.getURLCurrent() /> 
81 
82<#assign splittedURL = themeDisplay.getURLCurrent()?split("/") /> 
83<#assign httpServletRequest = serviceContext.getRequest()> 
84<#assign OrderByComparatorFactoryUtil = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"] /> 
85<#assign categoriesOrderBy = OrderByComparatorFactoryUtil.create("AssetCategory", ["title", false]) /> 
86<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"] /> 
87 
88<#assign urlCategoryList="${(httpServletRequest.getParameter('categoryList')?html)!''}" /> 
89 
90<#assign allCategories = [] /> 
91<#assign urlCategoryListArray = urlCategoryList?split(",")/> 
92<#list urlCategoryListArray as param> 
93    <#assign allCategories = allCategories + [getterUtil.getLong(param)] /> 
94</#list> 
95 
96 
97<#assign entries = [] /> 
98 
99<#assign search = assetEntryQuery.setAnyCategoryIds(allCategories)> 
100<#assign projectStructureId = utils.getStructureIdByName("Project") /> 
101<#assign search = assetEntryQuery.setClassTypeIds([projectStructureId])> 
102<#assign entriesCategories = assetEntryQueryService.getEntries(assetEntryQuery)> 
103 
104<#assign entries = entriesCategories /> 
105 
106 
107<#--assign assetPublisherHelperService = objectUtil('com.liferay.asset.publisher.web.util.AssetPublisherHelper') /> 
108<#assign renderRequest = objectUtil('com.liferay.portlet.RenderRequestImpl') /> 
109<#assign renderResponse = objectUtil('com.liferay.portlet.RenderResponseImpl') /--> 
110 
111<#assign sortType = "DESC" /> 
112<#assign sortFieldName = "PublicationDate" /> 
113 
114<#assign portletUniqueId = themeDisplay.getPortletDisplay().getId() /> 
115 
116 
117<@liferay_portlet["runtime"] 
118defaultPreferences="" 
119instanceId="projects"+portletUniqueId 
120portletName="com_liferay_journal_content_web_portlet_JournalContentPortlet" 
121/> 
122<div class="mainContainer hri-filter" id="navigate"> 
123    <#if entries?has_content> 
124        <#assign sortedEntries = utils.sortEntries(sortFieldName, sortType, entries) /> 
125        <div class="leftContainer"> 
126            <!-- start header html --> 
127            <div class="row panel panel-default"> 
128 
129                <!-- end header html --> 
130 
131                <!-- start item loop --> 
132                <#assign pageCounter = 1 /> 
133                <#assign currentPageCounter = 1 /> 
134                <#assign lastPageNumber = 0 /> 
135                <#list sortedEntries as entry> 
136                    <#assign className = entry.className /> 
137 
138                    <#assign classPK = entry.classPK /> 
139                    <#assign renderer = entry.renderer /> 
140                    <#if className == "com.liferay.journal.model.JournalArticle" > 
141 
142                        <#assign document = entry.document /> 
143                        <#assign entryID = entry?counter /> 
144 
145 
146                        <!-- start item data --> 
147                        <#assign projectTitle = document.valueOf("//dynamic-element[@name='DisplayTitle']") /> 
148                        <#assign projectImage = document.valueOf("//dynamic-element[@name='SmallImage']")/> 
149                        <#if projectImage?? && projectImage?trim != ""> 
150                            <#assign projectImage = (projectImage)?replace("\\", "")?eval /> 
151                        </#if> 
152                        <#assign projectImageURL = themeDisplay.getPortalURL() + "/c/document_library/get_file?uuid=" + projectImage.uuid + "&groupId=" + themeDisplay.getScopeGroupId() /> 
153                        <#assign journalArticle = renderer.getArticle() > 
154                        <#assign group = groupLocalService.getGroup(journalArticle.getGroupId()) /> 
155                        <#assign baseURL = group.getFriendlyURL()/> 
156                        <#assign entryURLTitle = renderer.getUrlTitle()> 
157 
158 
159                        <#assign url = "/-/" + entryURLTitle /> 
160                        <#if currentURL?matches('.*' + baseURL + '.*') > 
161                            <#assign url = "/web" + baseURL + "/-/" + entryURLTitle /> 
162                        </#if> 
163 
164 
165                        <!-- end item  data --> 
166 
167 
168                        <!-- start item html--> 
169                        <div class="col-xs-6 col-md-4"> 
170                            <a class="b-generic-cards__link" href="${url}"> 
171                                <#if (pageCounter < 2) > 
172                                <div class="b-card b-project  page_${pageCounter}"> 
173                                    <#else> 
174                                    <div class="b-card b-project  page_${pageCounter} hiddenElement"> 
175                                        </#if> 
176                                        <div class="b-card__image" style="background-image: url('${projectImageURL}');"> 
177                                            <div class="b-card__image--hover"></div> 
178                                        </div> 
179 
180                                        <div class="b-card__title"> 
181                                            <span>${projectTitle}</span> 
182                                        </div> 
183                                    </div> 
184                            </a> 
185                        </div> 
186 
187                        <#assign currentPageCounter = currentPageCounter + 1 /> 
188                        <#assign lastPageNumber = pageCounter /> 
189                        <#if (currentPageCounter > 12) > 
190                            <#assign pageCounter = pageCounter + 1 /> 
191                            <#assign currentPageCounter = 1 /> 
192                        </#if> 
193                        <!-- end item html --> 
194 
195                        <!-- start macros --> 
196 
197                        <#macro getYearsCategoryByVocabularyId vocabularyId parentCategoryMatch > 
198                            <#assign OrderByComparatorFactoryUtil = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"] /> 
199                            <#assign categoriesOrderBy = OrderByComparatorFactoryUtil.create("AssetCategory", ["title", false]) /> 
200                            <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"] /> 
201 
202                            <#assign vocabularyCategoryList=assetCategoryLocalServiceUtil.getVocabularyCategories(getterUtil.getLong(vocabularyId), 0, 999, categoriesOrderBy)/> 
203                            <#assign categoryList=assetCategoryLocalServiceUtil.getCategories(className, classPK)/> 
204 
205                            <#list vocabularyCategoryList as vocabularyCategoryEntry> 
206                                <#if parentCategoryMatch == vocabularyCategoryEntry.getParentCategoryId() || parentCategoryMatch == vocabularyCategoryEntry.getCategoryId() && parentCategoryMatch != vocabularyCategoryEntry.getCategoryId()> 
207 
208                                    <#assign categoryArray = [vocabularyCategoryEntry.getCategoryId()] /> 
209 
210                                    <#assign search = assetEntryQuery.setAnyCategoryIds(categoryArray)> 
211                                    <#assign search = assetEntryQuery.setClassTypeIds([projectStructureId])> 
212                                    <#assign entriesResults = assetEntryQueryService.getEntries(assetEntryQuery)> 
213 
214                                    <#if entriesResults?size gte 1> 
215                                        <div class="checkbox"> 
216                                            <#if minimumCategoriesYears?seq_contains(categoryID) || categoriesYears?seq_contains(categoryID)> 
217                                                <input type="checkbox" checked name="filterCategories" id="category_${vocabularyCategoryEntry.getCategoryId()}" value="category_${vocabularyCategoryEntry.getCategoryId()}"> 
218                                            <#else> 
219                                                <input type="checkbox"  name="filterCategories" id="category_${vocabularyCategoryEntry.getCategoryId()}" value="category_${vocabularyCategoryEntry.getCategoryId()}"> 
220 
221                                            </#if> 
222                                            <label>${vocabularyCategoryEntry.getName()}</label> 
223                                        </div> 
224                                    </#if> 
225 
226 
227                                </#if> 
228                            </#list> 
229                        </#macro> 
230 
231                        <#macro getCategoryByVocabularyId vocabularyId parentCategoryMatch> 
232                            <#assign OrderByComparatorFactoryUtil = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"] /> 
233                            <#assign categoriesOrderBy = OrderByComparatorFactoryUtil.create("AssetCategory", ["title", true]) /> 
234                            <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"] /> 
235 
236                            <#assign vocabularyCategoryList=assetCategoryLocalServiceUtil.getVocabularyCategories(getterUtil.getLong(vocabularyId), 0, 999, categoriesOrderBy)/> 
237                            <#assign categoryList=assetCategoryLocalServiceUtil.getCategories(className, classPK)/> 
238                            <#list vocabularyCategoryList as vocabularyCategoryEntry> 
239                                <#if parentCategoryMatch == vocabularyCategoryEntry.getParentCategoryId() || parentCategoryMatch == vocabularyCategoryEntry.getCategoryId() && parentCategoryMatch != vocabularyCategoryEntry.getCategoryId()> 
240                                    <#assign categoryArray = [vocabularyCategoryEntry.getCategoryId()] /> 
241 
242                                    <#assign search = assetEntryQuery.setAnyCategoryIds(categoryArray)> 
243                                    <#assign search = assetEntryQuery.setClassTypeIds([projectStructureId])> 
244                                    <#assign entriesResults = assetEntryQueryService.getEntries(assetEntryQuery)> 
245 
246                                    <#if entriesResults?size gte 1> 
247                                        <div class="checkbox"> 
248                                            <input type="checkbox" name="filterCategories" id="category_${vocabularyCategoryEntry.getCategoryId()}" value="category_${vocabularyCategoryEntry.getCategoryId()}"> 
249                                            <label>${vocabularyCategoryEntry.getName()}</label> 
250                                        </div> 
251                                    </#if> 
252                                </#if> 
253                            </#list> 
254                        </#macro> 
255 
256 
257                        <#macro getCategoryNameByVocabularyId vocabularyId isUpperCase> 
258                            <#assign OrderByComparatorFactoryUtil = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"] /> 
259                            <#assign categoriesOrderBy = OrderByComparatorFactoryUtil.create("AssetCategory", ["modifiedDate", false]) /> 
260                            <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"] /> 
261                            <#assign vocabularyCategoryList=assetCategoryLocalServiceUtil.getVocabularyCategories(getterUtil.getLong(vocabularyId), 0, 999, categoriesOrderBy)/> 
262                            <#assign categoryList=assetCategoryLocalServiceUtil.getCategories(className, classPK)/> 
263                            <#list vocabularyCategoryList as vocabularyCategoryEntry> 
264                                <#list categoryList as categoryEntry> 
265                                    <#if categoryEntry.getName() == vocabularyCategoryEntry.getName() > 
266                                        <#assign categoryName = categoryEntry.getName() /> 
267                                        <#if isUpperCase> 
268                                            <span>${categoryName?upper_case}</span> 
269                                        <#else> 
270                                            <span>${categoryName}</span> 
271                                        </#if> 
272                                    </#if> 
273                                </#list> 
274                            </#list> 
275                        </#macro> 
276                        <!-- end macros --> 
277 
278                        <!-- start functions --> 
279 
280                        <!-- end functions --> 
281                    </#if> 
282                </#list> 
283                <!-- end item loop --> 
284 
285                <!-- start footer --> 
286            </div> 
287            <!-- end footer --> 
288 
289            <#if (pageCounter > 1) > 
290                <div id="paginationContainer" class="col-sm-12 clearfix" > 
291                    <nav> 
292                        <ul class="pagination"> 
293 
294                            <li id="paginationPrevious" class="disabled"> 
295                                <a aria-label="Previous"> 
296                                    <span aria-hidden="true"><</span> 
297                                </a> 
298                            </li> 
299                            <#list entries as entry> 
300                                <#if (entry?counter <= lastPageNumber) > 
301                                    <#if (entry?counter == 1)> 
302                                        <li class="addedPage active" data-page="${entry?counter}"> 
303                                            <a class="" id="pageIndex_${entry?counter}">${entry?counter}</a> 
304                                        </li> 
305                                    <#else> 
306                                        <#if (entry?counter > 10) > 
307                                        <li class="addedPage hidden" data-page="${entry?counter}"> 
308                                        <#else> 
309                                            <li class="addedPage" data-page="${entry?counter}"> 
310                                        </#if> 
311                                        <a class="" id="pageIndex_${entry?counter}">${entry?counter}</a> 
312                                        </li> 
313                                    </#if> 
314                                <#else> 
315                                    <#break> 
316                                </#if> 
317                            </#list> 
318                            <li id="paginationNext" class=""> 
319                                <a aria-label="Next"> 
320                                    <span aria-hidden="true">></span> 
321                                </a> 
322                            </li> 
323                        </ul> 
324                    </nav> 
325                </div> 
326            </#if> 
327        </div> 
328    <#else> 
329        <div class="leftContainer"> 
330            <div class="panel panel-no-results"> 
331                <h6><@liferay.language key="label.no-projects-results-title"/></h6> 
332                <p class="hri-metadata"><@liferay.language key="label.no-publications-results-subtitle"/></p> 
333            </div> 
334        </div> 
335 
336    </#if> 
337    <div class="rightContainer"> 
338        <div class="filtersContainer"> 
339            <div class="b-widget__title"> 
340                <h4><@liferay.language key="label.filter-projects" /></h4> 
341            </div> 
342            <div id="visibiblityFilter"> 
343                <button type="button" class="b-button show-results active"><@liferay.language key="label.show-results" /> </button> 
344                <button type="button" class="b-button show-all-results"><@liferay.language key="label.show-all-results" /> </button> 
345 
346            </div> 
347            <div id="yearsFilter" class="filter"> 
348 
349                <#assign allPublicationsYearsVocabularyId = utils.getVocabularyId('All Publication Years') /> 
350                <#assign allPublicationsYearsCategoryId = utils.getCategoryIdByName(allPublicationsYearsVocabularyId,'All Publication Years') /> 
351 
352                <div class="filter-title "> 
353                    <a class="collapsed" data-toggle="collapse" href="#years-options-container">Year </a> 
354                </div> 
355 
356                <div class="collapse multi-collapse clearfix" id="years-options-container"> 
357                    <div class="collapsable-filter"> 
358                        <@getYearsCategoryByVocabularyId allPublicationsYearsVocabularyId allPublicationsYearsCategoryId/> 
359                    </div> 
360                </div> 
361            </div> 
362 
363            <div id="scientificDomainsFilter" class="filter"> 
364 
365                <#assign scientificDomainsVocabularyId = utils.getVocabularyId('All Scientific Domains') /> 
366                <#assign allScientificDomainsCategoryId = utils.getCategoryIdByName(scientificDomainsVocabularyId,'All Scientific Domains') /> 
367                <div class="filter-title "> 
368                    <a class="collapsed" data-toggle="collapse" href="#scientificDomains-options-container">Scientific Domains</a> 
369                </div> 
370                <div class="collapse multi-collapse clearfix" id="scientificDomains-options-container"> 
371                    <div class="collapsable-filter"> 
372 
373                        <div class="checkbox"> 
374                            <input type="checkbox" name="filterCategories" id="category_${allScientificDomainsCategoryId}" value="category_${allScientificDomainsCategoryId}"> 
375                            <label>All Scientific Domains</label> 
376                        </div> 
377                        <@getCategoryByVocabularyId scientificDomainsVocabularyId allScientificDomainsCategoryId /> 
378                    </div> 
379                </div> 
380            </div> 
381 
382            <div id="researchAreasFilter" class="filter"> 
383 
384                <#assign allContentTypesVocabularyId = utils.getVocabularyId('All Research Areas') /> 
385                <#assign allResearchAreasVocabularyId = utils.getCategoryIdByName(allContentTypesVocabularyId,'All Research Areas') /> 
386                <div class="filter-title "> 
387                    <a class="collapsed" data-toggle="collapse" href="#researchAreas-options-container">Research Areas </a> 
388                </div> 
389 
390                <div class="collapse multi-collapse clearfix" id="researchAreas-options-container"> 
391                    <div class="collapsable-filter"> 
392                        <div class="checkbox"> 
393 
394                            <input type="checkbox" name="filterCategories" id="category_${allResearchAreasVocabularyId}" value="category_${allResearchAreasVocabularyId}"> 
395                            <label>All Research Areas</label> 
396                        </div> 
397                        <@getCategoryByVocabularyId allContentTypesVocabularyId allResearchAreasVocabularyId /> 
398                    </div> 
399                </div> 
400            </div> 
401 
402 
403 
404            <div id="projectFilterControls"> 
405                <div class="applyFilters"> 
406                    <button type="button" id="applyFilters" class="b-button"><@liferay.language key="label.apply-filters" /></button> 
407                </div> 
408 
409                <div class="clearFilters"> 
410                    <button type="button" id="clearFilters" class="b-button"><@liferay.language key="label.clear-filters" /></button> 
411                </div> 
412            </div> 
413        </div> 
414    </div> 
415</div> 
416 
417 
418<script type="text/javascript"> 
419 
420    var globalPaginationCount = 0; 
421    var lowerLimitPagination = 1 
422    var middleLimitPagination = 5; 
423    var upperLimitPagination = 10; 
424    var lowerModifier = 4; 
425    var upperModifier = 5; 
426    (function($){ 
427        /*if(!window.endNavigation) 
428
429            window.endNavigation = Liferay.on('endNavigate', function(event) { 
430                if(!!window.startFilters) 
431
432                    startFilters(); 
433
434            }); 
435        } */ 
436        AUI().ready("aui-module", function() { 
437            startFilters(); 
438            startPagination(); 
439            //startDateFilter(); 
440            if (globalPaginationCount <= 1) 
441
442                $("#paginationNext").attr("class", "disabled"); 
443
444        }); 
445    })(jQuery); 
446 
447 
448 
449 
450    function startPagination(){ 
451        // When clicking on a pagination number 
452        globalPaginationCount = $(".addedPage").length; 
453 
454 
455        //Clicking any page number 
456        $(".addedPage").on("click", function(){ 
457            // Get what will be previous page 
458            var previousPage = $(".pagination > li.active").data("page"); 
459 
460            // Update pagination class active 
461            $(".pagination > li.active").removeClass("active"); 
462            $(this).addClass("active"); 
463 
464            // Get current page 
465            var currentPage = $(this).data("page"); 
466 
467            // Hide previous page elements 
468            $(".page_" + previousPage).addClass("hiddenElement"); 
469 
470            // Show current page elements 
471            $(".page_" + currentPage).removeClass("hiddenElement"); 
472 
473            // Enable or disable arrows and last/first buttons 
474            if (currentPage != 1) 
475
476                $("#paginationPrevious").attr("class", ""); 
477                $("#paginationFirst").attr("class", ""); 
478
479            else 
480
481                $("#paginationPrevious").attr("class", "disabled"); 
482                $("#paginationFirst").attr("class", "disabled"); 
483
484 
485            if (currentPage != globalPaginationCount) 
486
487                $("#paginationNext").attr("class", ""); 
488                $("#paginationLast").attr("class", ""); 
489
490            else 
491
492                $("#paginationNext").attr("class", "disabled"); 
493                $("#paginationLast").attr("class", "disabled"); 
494
495 
496            // Updating list pagination numbers 
497            if (currentPage > middleLimitPagination) // Cambiar a >= cuando la cuenta sea de 10 
498
499                if (currentPage + upperModifier > globalPaginationCount) 
500
501                    upperLimitPagination = globalPaginationCount; 
502                    lowerLimitPagination = globalPaginationCount - lowerModifier - upperModifier; 
503                    middleLimitPagination = lowerLimitPagination + lowerModifier; 
504
505                else 
506
507                    middleLimitPagination = currentPage; 
508                    upperLimitPagination = middleLimitPagination + upperModifier; 
509                    lowerLimitPagination = middleLimitPagination - lowerModifier; 
510
511 
512                // Update pagination display 
513                $(".addedPage").each(function(){ 
514                    currentPage = $(this).data("page"); 
515                    if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination) 
516
517                        // Show current page number 
518                        $(this).removeClass("hidden"); 
519
520                    else 
521
522                        // Hide current page number 
523                        $(this).addClass("hidden"); 
524
525                }); 
526
527            else 
528
529                if (currentPage - lowerModifier < 1) 
530
531                    lowerLimitPagination = 1; 
532                    upperLimitPagination = lowerLimitPagination + lowerModifier + upperModifier; 
533                    middleLimitPagination = lowerLimitPagination + upperModifier; 
534
535                else 
536
537                    middleLimitPagination = currentPage; 
538                    upperLimitPagination = middleLimitPagination + upperModifier; 
539                    lowerLimitPagination = middleLimitPagination - lowerModifier; 
540
541 
542                // Update pagination display 
543                $(".addedPage").each(function(){ 
544                    currentPage = $(this).data("page"); 
545                    if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination) 
546
547                        // Show current page number 
548                        $(this).removeClass("hidden"); 
549
550                    else 
551
552                        // Hide current page number 
553                        $(this).addClass("hidden"); 
554
555                }); 
556
557 
558        }); 
559 
560        // When clicking on the first button 
561        $("#pageIndex_First").on("click", function(){ 
562            // Get what will be previous page 
563            var previousPage = $(".pagination > li.active").data("page"); 
564 
565            // Update pagination class active 
566            $(".pagination > li.active").removeClass("active"); 
567            $("#pageIndex_1").parent().addClass("active"); 
568 
569            // Get current page 
570            var currentPage = 1; 
571 
572            // Hide previous page elements 
573            $(".page_" + previousPage).addClass("hiddenElement"); 
574 
575            // Show current page elements 
576            $(".page_" + currentPage).removeClass("hiddenElement"); 
577 
578            // Enable or disable arrows 
579            if (currentPage != 1) 
580
581                $("#paginationPrevious").attr("class", ""); 
582
583            else 
584
585                $("#paginationPrevious").attr("class", "disabled"); 
586
587 
588            if (currentPage != globalPaginationCount) 
589
590                $("#paginationNext").attr("class", ""); 
591
592            else 
593
594                $("#paginationNext").attr("class", "disabled"); 
595
596 
597            // Updating list pagination numbers 
598            if (currentPage > middleLimitPagination) // Cambiar a >= cuando la cuenta sea de 10 
599
600                if (currentPage + upperModifier > globalPaginationCount) 
601
602                    upperLimitPagination = globalPaginationCount; 
603                    lowerLimitPagination = globalPaginationCount - lowerModifier - upperModifier; 
604                    middleLimitPagination = lowerLimitPagination + lowerModifier; 
605
606                else 
607
608                    middleLimitPagination = currentPage; 
609                    upperLimitPagination = middleLimitPagination + upperModifier; 
610                    lowerLimitPagination = middleLimitPagination - lowerModifier; 
611
612 
613                // Update pagination display 
614                $(".addedPage").each(function(){ 
615                    currentPage = $(this).data("page"); 
616                    if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination) 
617
618                        // Show current page number 
619                        $(this).removeClass("hidden"); 
620
621                    else 
622
623                        // Hide current page number 
624                        $(this).addClass("hidden"); 
625
626                }); 
627
628            else 
629
630                if (currentPage - lowerModifier < 1) 
631
632                    //console.log("Entered here: " + (currentPage - lowerModifier < 1) ); 
633                    lowerLimitPagination = 1; 
634                    upperLimitPagination = lowerLimitPagination + lowerModifier + upperModifier; 
635                    middleLimitPagination = lowerLimitPagination + upperModifier; 
636
637                else 
638
639                    middleLimitPagination = currentPage; 
640                    upperLimitPagination = middleLimitPagination + upperModifier; 
641                    lowerLimitPagination = middleLimitPagination - lowerModifier; 
642
643 
644                // Update pagination display 
645                $(".addedPage").each(function(){ 
646 
647                    currentPage = $(this).data("page"); 
648                    if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination) 
649
650                        // Show current page number 
651                        $(this).removeClass("hidden"); 
652
653                    else 
654
655                        // Hide current page number 
656                        $(this).addClass("hidden"); 
657
658                }); 
659
660 
661            $("#paginationFirst").addClass("disabled"); 
662 
663            if($("#paginationLast").hasClass("disabled") && (globalPaginationCount > 1)){ 
664                $("#paginationLast").removeClass("disabled"); 
665
666 
667 
668        }); 
669 
670        // When clicking on the last button 
671        $("#pageIndex_Last").on("click", function(){ 
672            // Get what will be previous page 
673            var lastPageIndexId = "#pageIndex_" + globalPaginationCount; 
674            var previousPage = $(".pagination > li.active").data("page"); 
675 
676            // Update pagination class active 
677            $(".pagination > li.active").removeClass("active"); 
678            $(lastPageIndexId).parent().addClass("active"); 
679 
680            // Get current page 
681            var currentPage = globalPaginationCount 
682 
683            // Hide previous page elements 
684            $(".page_" + previousPage).addClass("hiddenElement"); 
685 
686            // Show current page elements 
687            $(".page_" + currentPage).removeClass("hiddenElement"); 
688 
689            // Enable or disable arrows 
690            if (currentPage != 1) 
691
692                $("#paginationPrevious").attr("class", ""); 
693
694            else 
695
696                $("#paginationPrevious").attr("class", "disabled"); 
697
698 
699            if (currentPage != globalPaginationCount) 
700
701                $("#paginationNext").attr("class", ""); 
702
703            else 
704
705                $("#paginationNext").attr("class", "disabled"); 
706
707 
708            // Updating list pagination numbers 
709            if (currentPage > middleLimitPagination) // Cambiar a >= cuando la cuenta sea de 10 
710
711                if (currentPage + upperModifier > globalPaginationCount) 
712
713                    upperLimitPagination = globalPaginationCount; 
714                    lowerLimitPagination = globalPaginationCount - lowerModifier - upperModifier; 
715                    middleLimitPagination = lowerLimitPagination + lowerModifier; 
716
717                else 
718
719                    middleLimitPagination = currentPage; 
720                    upperLimitPagination = middleLimitPagination + upperModifier; 
721                    lowerLimitPagination = middleLimitPagination - lowerModifier; 
722
723 
724                // Update pagination display 
725                $(".addedPage").each(function(){ 
726                    currentPage = $(this).data("page"); 
727                    if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination) 
728
729                        // Show current page number 
730                        $(this).removeClass("hidden"); 
731
732                    else 
733
734                        // Hide current page number 
735                        $(this).addClass("hidden"); 
736
737                }); 
738
739            else 
740
741                if (currentPage - lowerModifier < 1) 
742
743                    lowerLimitPagination = 1; 
744                    upperLimitPagination = lowerLimitPagination + lowerModifier + upperModifier; 
745                    middleLimitPagination = lowerLimitPagination + upperModifier; 
746
747                else 
748
749                    middleLimitPagination = currentPage; 
750                    upperLimitPagination = middleLimitPagination + upperModifier; 
751                    lowerLimitPagination = middleLimitPagination - lowerModifier; 
752
753 
754                // Update pagination display 
755                $(".addedPage").each(function(){ 
756                    currentPage = $(this).data("page"); 
757                    if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination) 
758
759                        // Show current page number 
760                        $(this).removeClass("hidden"); 
761
762                    else 
763
764                        // Hide current page number 
765                        $(this).addClass("hidden"); 
766
767                }); 
768
769 
770            $("#paginationLast").addClass("disabled"); 
771 
772            if($("#paginationFirst").hasClass("disabled") && (globalPaginationCount > 1)){ 
773                $("#paginationFirst").removeClass("disabled"); 
774
775 
776        }); 
777 
778 
779        // When clicking on the previous icon 
780        $("#paginationPrevious").on("click", function(){ 
781            if ($(this).attr("class") == "") 
782
783                // Get previous page 
784                var previousPage = $(".pagination > li.active").data("page"); 
785                var currentPage = previousPage - 1; 
786 
787                if (currentPage <= 0) 
788
789                    currentPage = 1; 
790
791 
792                // Update pagination class active 
793                $(".pagination > li.active").removeClass("active"); 
794                $(".addedPage").each(function(){ 
795                    if ($(this).data("page") == currentPage) 
796
797                        // Hide previous page elements 
798                        $(".page_" + previousPage).addClass("hiddenElement"); 
799 
800                        // Show current page elements 
801                        $(".page_" + currentPage).removeClass("hiddenElement"); 
802 
803                        $(this).addClass("active"); 
804
805                }); 
806 
807                // Enable or disable previous arrow 
808                if (currentPage != 1) 
809
810                    $("#paginationPrevious").attr("class", ""); 
811                    $("#paginationFirst").attr("class", ""); 
812
813                else 
814
815                    $("#paginationPrevious").attr("class", "disabled"); 
816                    $("#paginationFirst").attr("class", "disabled"); 
817
818 
819                // Enable or disable next arrow 
820                if (currentPage != globalPaginationCount) 
821
822                    $("#paginationNext").attr("class", ""); 
823                    $("#paginationLast").attr("class", ""); 
824
825                else 
826
827                    $("#paginationNext").attr("class", "disabled"); 
828                    $("#paginationLast").attr("class", "disabled"); 
829
830 
831                if (currentPage - lowerModifier < 1) 
832
833                    lowerLimitPagination = 1; 
834                    upperLimitPagination = lowerLimitPagination + lowerModifier + upperModifier; 
835                    middleLimitPagination = lowerLimitPagination + upperModifier; 
836
837                else 
838
839                    middleLimitPagination = currentPage; 
840                    upperLimitPagination = middleLimitPagination + upperModifier; 
841                    lowerLimitPagination = middleLimitPagination - lowerModifier; 
842
843 
844                // Update pagination display 
845                $(".addedPage").each(function(){ 
846                    currentPage = $(this).data("page"); 
847                    if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination) 
848
849                        // Show current page number 
850                        $(this).removeClass("hidden"); 
851
852                    else 
853
854                        // Hide current page number 
855                        $(this).addClass("hidden"); 
856
857                }); 
858
859        }); 
860 
861        // When clicking on the next icon 
862        $("#paginationNext").on("click", function(){ 
863            if ($(this).attr("class") == "") 
864
865                // Get previous page 
866                var previousPage = $(".pagination > li.active").data("page"); 
867                var currentPage = previousPage + 1; 
868 
869                if (currentPage > globalPaginationCount) 
870
871                    currentPage = globalPaginationCount; 
872
873 
874 
875 
876                // Update pagination class active 
877                $(".pagination > li.active").removeClass("active"); 
878                $(".addedPage").each(function(){ 
879                    if ($(this).data("page") == currentPage) 
880
881                        // Hide previous page elements 
882                        $(".page_" + previousPage).addClass("hiddenElement"); 
883 
884                        // Show current page elements 
885                        $(".page_" + currentPage).removeClass("hiddenElement"); 
886 
887                        $(this).addClass("active"); 
888
889                }); 
890 
891                // Enable or disable next arrow 
892                if (currentPage != globalPaginationCount) 
893
894                    $("#paginationNext").attr("class", ""); 
895                    $("#paginationLast").attr("class", ""); 
896
897                else 
898
899                    $("#paginationNext").attr("class", "disabled"); 
900                    $("#paginationLast").attr("class", "disabled"); 
901
902 
903                // Enable or disable previous arrow 
904                if (currentPage != 1) 
905
906                    $("#paginationPrevious").attr("class", ""); 
907                    $("#paginationFirst").attr("class", ""); 
908
909                else 
910
911                    $("#paginationPrevious").attr("class", "disabled"); 
912                    $("#paginationFirst").attr("class", "disabled"); 
913
914 
915                // Updating list pagination numbers 
916                if (currentPage > middleLimitPagination) // Cambiar a >= cuando la cuenta sea de 10 
917
918                    if (currentPage + upperModifier > globalPaginationCount) 
919
920                        upperLimitPagination = globalPaginationCount; 
921                        lowerLimitPagination = globalPaginationCount - lowerModifier - upperModifier; 
922                        middleLimitPagination = lowerLimitPagination + lowerModifier; 
923
924                    else 
925
926                        middleLimitPagination = currentPage; 
927                        upperLimitPagination = middleLimitPagination + upperModifier; 
928                        lowerLimitPagination = middleLimitPagination - lowerModifier; 
929
930 
931                    // Update pagination display 
932                    $(".addedPage").each(function(){ 
933                        currentPage = $(this).data("page"); 
934                        if (currentPage >= lowerLimitPagination && currentPage <= upperLimitPagination) 
935
936                            // Show current page number 
937                            $(this).removeClass("hidden"); 
938
939                        else 
940
941                            // Hide current page number 
942                            $(this).addClass("hidden"); 
943
944                    }); 
945
946
947        }); 
948
949 
950    function startFilters(){ 
951        // Action when clicking submit filters 
952        $(".applyFilters").on("click", function(){ 
953            var allCategories = []; 
954            var categoryString = ""; 
955            $("input:checkbox[name=filterCategories]:checked").each(function () { 
956                var splitCategory = $(this).val().split("_"); 
957                allCategories.push(splitCategory[1]); 
958            }); 
959 
960            for (var i = 0; i < allCategories.length; i ++) 
961
962                categoryString += allCategories[i]; 
963 
964                if (i != allCategories.length - 1) 
965
966                    categoryString += ","; 
967
968
969            var url = window.location.href; 
970            url = url.split('?')[0]; 
971            url=queryStringUrlReplacement(url, "categoryList", allCategories) 
972            window.location.href = url+"#navigate"; 
973        }); 
974 
975        // Action when clicking clear filters 
976        $(".clearFilters").on("click", function(){ 
977            $("input:checkbox[name=filterCategories]:checked").each(function () { 
978                $(this).prop('checked', false); 
979            }); 
980            var firstYear = 1998; 
981            var currentYear = (new Date()).getFullYear(); 
982            var url = window.location.href; 
983            url = url.split('?')[0]; 
984            url=queryStringUrlReplacement(url, "categoryList", "") 
985            window.location.href = url+"#navigate"; 
986        }); 
987 
988        var categoryList = getUrlParameter("categoryList"); 
989 
990        if (categoryList != null && categoryList != ""){ 
991            listOfCategories = categoryList.split(","); 
992 
993            for (var i = 0; i < listOfCategories.length; i ++) 
994
995                $("#category_" + listOfCategories[i]).prop('checked', true); 
996
997
998 
999        $(".filtersContainer .filter:not(#yearsFilter) .checkbox:first-child").on("click", function(){ 
1000            var parentCheckbox = $(this).find("input").is(":checked"); 
1001 
1002            var listOfCheckboxes = $(this).parent().find("input"); 
1003 
1004            for (var i = 0; i < listOfCheckboxes.length; i ++) 
1005
1006                if (parentCheckbox) 
1007
1008                    listOfCheckboxes[i].checked = true; 
1009
1010                else 
1011
1012                    listOfCheckboxes[i].checked = false; 
1013
1014
1015        }); 
1016 
1017        $(".filtersContainer .filter:not(#yearsFilter) .checkbox:not(:first-child)").on("click", function(){ 
1018 
1019            var parentCheckbox = $(this).parent().find(".checkbox:first-child input"); 
1020            var currentChecbox = $(this).find("input").is(":checked"); 
1021 
1022            if (!currentChecbox) 
1023
1024                parentCheckbox.prop("checked", false); 
1025
1026 
1027        }); 
1028 
1029        $("#visibiblityFilter .show-all-results").on("click", function(){ 
1030            $(".hiddenElement").removeClass("hiddenElement") 
1031            $(this).addClass("active"); 
1032            $("#visibiblityFilter .show-results").removeClass("active"); 
1033            $("#paginationContainer").addClass("hiddenElement"); 
1034        }); 
1035        $("#visibiblityFilter .show-results").on("click", function(){ 
1036            if($(".addedPage").length>0){ 
1037                $(".addedPage")[0].click(); 
1038
1039            $(".b-project:not(.page_1)").addClass("hiddenElement"); 
1040            $(this).addClass("active"); 
1041            $("#visibiblityFilter .show-all-results").removeClass("active"); 
1042            $("#paginationContainer").removeClass("hiddenElement"); 
1043        }); 
1044 
1045        $(".filter").each(function(){ 
1046            var container=$(this); 
1047            var containerListItems=container.find(".checkbox"); 
1048            if(containerListItems.length<=1){ 
1049                container.hide() 
1050
1051        }) 
1052 
1053        /*$(".filter").each(function(){ 
1054            var optionsCount=$(this).find(".checkbox").length; 
1055            if(optionsCount<=1){ 
1056                $(this).addClass("hidden") 
1057
1058 
1059        })*/ 
1060 
1061
1062 
1063    function queryStringUrlReplacement(url, param, value) { 
1064        var re = new RegExp("[\\?&]" + param + "=([^&#]*)"), match = re.exec(url), delimiter, newString; 
1065 
1066        if (match === null) { 
1067            // append new param 
1068            var hasQuestionMark = /\?/.test(url); 
1069            delimiter = hasQuestionMark ? "&" : "?"; 
1070            newString = url + delimiter + param + "=" + value; 
1071        } else { 
1072            delimiter = match[0].charAt(0); 
1073            newString = url.replace(re, delimiter + param + "=" + value); 
1074
1075 
1076        return newString; 
1077
1078 
1079    function getUrlParameter(paramName){ 
1080        var results = new RegExp('[\?&]' + paramName + '=([^&#]*)').exec(window.location.href); 
1081        if (results == null) 
1082
1083            return null; 
1084
1085        return results[1] || 0; 
1086
1087</script> 
1088<!-- END: Project Filter Template -->