Skip to content

Instantly share code, notes, and snippets.

@ryanschuhler
Created June 7, 2013 22:13
Show Gist options
  • Save ryanschuhler/5732780 to your computer and use it in GitHub Desktop.
Save ryanschuhler/5732780 to your computer and use it in GitHub Desktop.
Sortable Events Alloy
#set ($ns = $request.portlet-namespace)
#set ($companyId = $getterUtil.getLong($request.theme-display.company-id))
#set ($scopeGroupId = $getterUtil.getLong($request.theme-display.scope-group-id))
#set ($jsLogging = $getterUtil.getBoolean($javascript-logging-enabled.data))
#set ($defaultEventType = $getterUtil.getString($default-event-type.data, 'All'))
#set ($pathThemeImages = $request.theme-display.path-theme-images)
#set ($languageId = $request.theme-display.language-id)
#set ($defaultRegion = $getterUtil.getString($httpUtil.getParameter(${request.attributes.CURRENT_URL}, 'wcd-region', false), 'All'))
#if (!$arrayUtil.contains($stringUtil.split('All,amer,apac,emea'), $defaultRegion))
#set ($defaultRegion = 'All')
#end
#set ($defaultSubregion = $getterUtil.getString($httpUtil.getParameter(${request.attributes.CURRENT_URL}, 'wcd-subregion', false), 'All'))
#if ($validator.isNull($defaultSubregion))
#set ($defaultSubregion = 'All')
#end
#set ($defaultDelta = 5)
#if ($defaultEventType == 'Training')
#set ($defaultDelta = 10)
#end
#if ($request.lifecycle == 'RENDER_PHASE')
#set ($imageCommunity = '/documents/14/8440790/COMMUNITY.png')
#set ($imageDevCon = '/documents/14/8440790/DEVCON.png')
#set ($imageIndustry = '/documents/14/8440790/INDUSTRY.png')
#set ($imagePartner = '/documents/14/8440790/PARTNER.png')
#set ($imageRoadshows = '/documents/14/8440790/ROADSHOW.png')
#set ($imageSolutionsForum = '/documents/14/8440790/SOLUTIONSFORUM.png')
#set ($imageSymposiums = '/documents/14/8440790/SYMPOSIUM.png')
#set ($imageTraining = '/documents/14/8440790/TRAINING.png')
#set ($imageWebinar = '/documents/14/8440790/WEBINAR.png')
<style type="text/css">
@import url(/c/journal/get_template?groupId=${scopeGroupId}&templateId=EVENTS-CSS);
</style>
<script type="text/javascript">
/* https://bitbucket.org/pellepim/jstimezonedetect */
(function(e){var t=function(){"use strict";var e="s",n=function(e){var t=-e.getTimezoneOffset();return t!==null?t:0},r=function(e,t,n){var r=new Date;return e!==undefined&&r.setFullYear(e),r.setDate(n),r.setMonth(t),r},i=function(e){return n(r(e,0,2))},s=function(e){return n(r(e,5,2))},o=function(e){var t=e.getMonth()>7?s(e.getFullYear()):i(e.getFullYear()),r=n(e);return t-r!==0},u=function(){var t=i(),n=s(),r=i()-s();return r<0?t+",1":r>0?n+",1,"+e:t+",0"},a=function(){var e=u();return new t.TimeZone(t.olson.timezones[e])},f=function(e){var t=new Date(2010,6,15,1,0,0,0),n={"America/Denver":new Date(2011,2,13,3,0,0,0),"America/Mazatlan":new Date(2011,3,3,3,0,0,0),"America/Chicago":new Date(2011,2,13,3,0,0,0),"America/Mexico_City":new Date(2011,3,3,3,0,0,0),"America/Asuncion":new Date(2012,9,7,3,0,0,0),"America/Santiago":new Date(2012,9,3,3,0,0,0),"America/Campo_Grande":new Date(2012,9,21,5,0,0,0),"America/Montevideo":new Date(2011,9,2,3,0,0,0),"America/Sao_Paulo":new Date(2011,9,16,5,0,0,0),"America/Los_Angeles":new Date(2011,2,13,8,0,0,0),"America/Santa_Isabel":new Date(2011,3,5,8,0,0,0),"America/Havana":new Date(2012,2,10,2,0,0,0),"America/New_York":new Date(2012,2,10,7,0,0,0),"Asia/Beirut":new Date(2011,2,27,1,0,0,0),"Europe/Helsinki":new Date(2011,2,27,4,0,0,0),"Europe/Istanbul":new Date(2011,2,28,5,0,0,0),"Asia/Damascus":new Date(2011,3,1,2,0,0,0),"Asia/Jerusalem":new Date(2011,3,1,6,0,0,0),"Asia/Gaza":new Date(2009,2,28,0,30,0,0),"Africa/Cairo":new Date(2009,3,25,0,30,0,0),"Pacific/Auckland":new Date(2011,8,26,7,0,0,0),"Pacific/Fiji":new Date(2010,11,29,23,0,0,0),"America/Halifax":new Date(2011,2,13,6,0,0,0),"America/Goose_Bay":new Date(2011,2,13,2,1,0,0),"America/Miquelon":new Date(2011,2,13,5,0,0,0),"America/Godthab":new Date(2011,2,27,1,0,0,0),"Europe/Moscow":t,"Asia/Yekaterinburg":t,"Asia/Omsk":t,"Asia/Krasnoyarsk":t,"Asia/Irkutsk":t,"Asia/Yakutsk":t,"Asia/Vladivostok":t,"Asia/Kamchatka":t,"Europe/Minsk":t,"Australia/Perth":new Date(2008,10,1,1,0,0,0)};return n[e]};return{determine:a,date_is_dst:o,dst_start_for:f}}();t.TimeZone=function(e){"use strict";var n={"America/Denver":["America/Denver","America/Mazatlan"],"America/Chicago":["America/Chicago","America/Mexico_City"],"America/Santiago":["America/Santiago","America/Asuncion","America/Campo_Grande"],"America/Montevideo":["America/Montevideo","America/Sao_Paulo"],"Asia/Beirut":["Asia/Beirut","Europe/Helsinki","Europe/Istanbul","Asia/Damascus","Asia/Jerusalem","Asia/Gaza"],"Pacific/Auckland":["Pacific/Auckland","Pacific/Fiji"],"America/Los_Angeles":["America/Los_Angeles","America/Santa_Isabel"],"America/New_York":["America/Havana","America/New_York"],"America/Halifax":["America/Goose_Bay","America/Halifax"],"America/Godthab":["America/Miquelon","America/Godthab"],"Asia/Dubai":["Europe/Moscow"],"Asia/Dhaka":["Asia/Yekaterinburg"],"Asia/Jakarta":["Asia/Omsk"],"Asia/Shanghai":["Asia/Krasnoyarsk","Australia/Perth"],"Asia/Tokyo":["Asia/Irkutsk"],"Australia/Brisbane":["Asia/Yakutsk"],"Pacific/Noumea":["Asia/Vladivostok"],"Pacific/Tarawa":["Asia/Kamchatka"],"Africa/Johannesburg":["Asia/Gaza","Africa/Cairo"],"Asia/Baghdad":["Europe/Minsk"]},r=e,i=function(){var e=n[r],i=e.length,s=0,o=e[0];for(;s<i;s+=1){o=e[s];if(t.date_is_dst(t.dst_start_for(o))){r=o;return}}},s=function(){return typeof n[r]!="undefined"};return s()&&i(),{name:function(){return r}}},t.olson={},t.olson.timezones={"-720,0":"Etc/GMT+12","-660,0":"Pacific/Pago_Pago","-600,1":"America/Adak","-600,0":"Pacific/Honolulu","-570,0":"Pacific/Marquesas","-540,0":"Pacific/Gambier","-540,1":"America/Anchorage","-480,1":"America/Los_Angeles","-480,0":"Pacific/Pitcairn","-420,0":"America/Phoenix","-420,1":"America/Denver","-360,0":"America/Guatemala","-360,1":"America/Chicago","-360,1,s":"Pacific/Easter","-300,0":"America/Bogota","-300,1":"America/New_York","-270,0":"America/Caracas","-240,1":"America/Halifax","-240,0":"America/Santo_Domingo","-240,1,s":"America/Santiago","-210,1":"America/St_Johns","-180,1":"America/Godthab","-180,0":"America/Argentina/Buenos_Aires","-180,1,s":"America/Montevideo","-120,0":"Etc/GMT+2","-120,1":"Etc/GMT+2","-60,1":"Atlantic/Azores","-60,0":"Atlantic/Cape_Verde","0,0":"Etc/UTC","0,1":"Europe/London","60,1":"Europe/Berlin","60,0":"Africa/Lagos","60,1,s":"Africa/Windhoek","120,1":"Asia/Beirut","120,0":"Africa/Johannesburg","180,0":"Asia/Baghdad","180,1":"Europe/Moscow","210,1":"Asia/Tehran","240,0":"Asia/Dubai","240,1":"Asia/Baku","270,0":"Asia/Kabul","300,1":"Asia/Yekaterinburg","300,0":"Asia/Karachi","330,0":"Asia/Kolkata","345,0":"Asia/Kathmandu","360,0":"Asia/Dhaka","360,1":"Asia/Omsk","390,0":"Asia/Rangoon","420,1":"Asia/Krasnoyarsk","420,0":"Asia/Jakarta","480,0":"Asia/Shanghai","480,1":"Asia/Irkutsk","525,0":"Australia/Eucla","525,1,s":"Australia/Eucla","540,1":"Asia/Yakutsk","540,0":"Asia/Tokyo","570,0":"Australia/Darwin","570,1,s":"Australia/Adelaide","600,0":"Australia/Brisbane","600,1":"Asia/Vladivostok","600,1,s":"Australia/Sydney","630,1,s":"Australia/Lord_Howe","660,1":"Asia/Kamchatka","660,0":"Pacific/Noumea","690,0":"Pacific/Norfolk","720,1,s":"Pacific/Auckland","720,0":"Pacific/Tarawa","765,1,s":"Pacific/Chatham","780,0":"Pacific/Tongatapu","780,1,s":"Pacific/Apia","840,0":"Pacific/Kiritimati"},typeof exports!="undefined"?exports.jstz=t:e.jstz=t})(this);
</script>
<form name="${ns}fm" id="${ns}fm">
<input name="${ns}orderByType" type="hidden" value="false" />
<input name="${ns}orderByCol" type="hidden" value="startDate" />
#if ($defaultEventType != 'All')
<input name="${ns}eventType" type="hidden" value="$defaultEventType" />
#end
<!-- BEGIN: Event Sorting Controls -->
<div class="tab">
<div class="tab-content">
#if ($defaultEventType == 'All')
<div class="tab-unit f">
<span class="field-inline">
<label for="p1" class="field-label">Type:</label>
<select class="field-input field-input-menu field-input-select ${ns}function-bound" name="${ns}eventType" id="p1" style="width: 100px;">
<option selected="selected">All</option>
<option>Community</option>
<option>Conferences</option>
<option>Industry</option>
<option>Partner</option>
<option>Roadshow</option>
<option>Training</option>
<option>Webinar</option>
</select>
</span>
</div>
#end
<div class="tab-unit#if ($defaultEventType != 'All') f#end">
<span class="field-inline">
<label for="p2" class="field-label">Region:</label>
<select class="field-input field-input-menu field-input-select ${ns}function-bound" name="${ns}region" id="p2" style="width: 160px;">
<option selected="selected" value="${defaultRegion}">All</option>
</select>
</span>
</div>
<div class="tab-unit">
<span class="field-inline">
<label for="p3" class="field-label">Subregion:</label>
<select class="field-input field-input-menu field-input-select ${ns}function-bound" name="${ns}subregion" id="p3" style="width: 100px;">
<option selected="selected" value="${defaultSubregion}">All</option>
</select>
</span>
</div>
#if ($defaultEventType == 'Training')
<div class="tab-unit">
<span class="field-inline">
<label for="p4" class="field-label">Online:</label>
<input class="field-input field-input-choice field-input-checkbox ${ns}function-bound" name="${ns}onlineEvents" id="p4" type="checkbox" />
</span>
</div>
#end
<div class="tab-unit l">
<span class="field-inline">
<label for="p5" class="field-label">Past Events:</label>
<input class="field-input field-input-choice field-input-checkbox ${ns}function-bound" name="${ns}pastEvents" id="p5" type="checkbox" />
</span>
</div>
</div>
</div>
<!-- END: Event Sorting Controls -->
<!-- BEGIN: Event Sorting Table -->
<table class="${ns}report-chart table-report">
<col style="width: 55%;" />
<col style="width: 30%;" />
<col style="width: 15%;" />
<thead>
<tr class="first">
<th class="first">
<span class="${ns}order-by-name events-toggle-order-by-name">
<a href="#">Event</a>
</span>
</th>
<th>
<span class="${ns}order-by-date events-toggle-order-by-date false">
<a href="#">Date & Location</a>
</span>
</th>
#if ($defaultEventType == 'Training')
<th>
<span>Language</span>
</th>
#end
<th class="last">
Registration
</th>
</tr>
</thead>
<tbody class="${ns}results-container">
<!-- BEGIN LOOP: Event Description -->
<tr>
<td class="first event-description" colspan="3">
<div style="text-align: center;"><img src="$pathThemeImages/progress_bar/loading_animation.gif" /></div>
<!-- There are no events. -->
</td>
</tr>
<!-- END LOOP: Event Description -->
</tbody>
<!-- BEGIN: Pagination Section -->
<tfoot>
<tr>
<td colspan="3">
<div class="taglib-page-iterator aui-helper-hidden">
<div class="search-results fl">
Showing <span class="search-results-page-start-value">0</span> - <span class="search-results-page-end-value">0</span> of <span class="search-results-total-value">0</span> results.
</div>
<div class="search-pages fr aui-helper-hidden">
<div class="delta-selector">
Items: <select class="${ns}function-bound" name="${ns}delta" id="${ns}delta">
<option value="${defaultDelta}" selected="selected">${defaultDelta}</option>
<option value="20">20</option>
</select>
</div>
<div class="page-selector">
Page: <select class="${ns}function-bound" name="${ns}page" id="${ns}page">
<option value="1" selected="selected">1</option>
</select> of <span class="search-results-number-of-pages-value">1</span>
</div>
<div class="page-links">
<span class="first">
#language('first')
</span>
<span class="previous">
#language('previous')
</span>
<span class="next">
#language('next')
</span>
<span class="last">
#language('last')
</span>
</div>
</div>
</div>
</td>
</tr>
</tfoot>
<!-- END: Pagination Section -->
</table>
<!-- END: Event Sorting Table -->
#if ($defaultEventType == 'Training')
<div style="margin: 10px 0;">*Trainings will be held in the local language, but the slides for the class will be in English.</div>
#end
</form>
<script type="text/javascript">
var linkStyles = {color:'#009AD6', cursor: 'pointer', 'text-decoration': 'underline'};
var noLinkStyles = {color:'#444', cursor: 'auto', 'text-decoration': 'none'};
AUI().use(
'aui-base', 'aui-io-plugin', 'aui-io-request',
function(A) {
var paginator = A.one('.${ns}report-chart .taglib-page-iterator');
var setupPagination = function(total, currentResultSize) {
var delta = parseInt(A.one(document.${ns}fm.${ns}delta).val()) || ${defaultDelta};
var page = parseInt(A.one(document.${ns}fm.${ns}page).val()) || 1;
var numberOfPages = 1;
var start = 0;
var end = 0;
if (total > 0) {
start = ((page - 1) * delta) + 1;
if (total < delta) {
start = 1;
}
numberOfPages = Math.ceil(total / delta);
end = (start - 1 + delta);
if (end > total) {
end = total;
}
}
if (numberOfPages == 1) {
A.one('.${ns}report-chart .search-pages').hide();
}
else {
A.one('.${ns}report-chart .search-pages').show();
}
if (page > 1) {
A.one('.${ns}report-chart .page-links .first').setStyles(linkStyles).on('click', function() { pageTo(1); });
A.one('.${ns}report-chart .page-links .previous').setStyles(linkStyles).on('click', function() { pageTo(page - 1); });
}
else {
A.one('.${ns}report-chart .page-links .first').setStyles(noLinkStyles).on('click', function() {});
A.one('.${ns}report-chart .page-links .previous').setStyles(noLinkStyles).on('click', function() {});
}
if (page < numberOfPages) {
A.one('.${ns}report-chart .page-links .next').setStyles(linkStyles).on('click', function() { pageTo(page + 1); });
A.one('.${ns}report-chart .page-links .last').setStyles(linkStyles).on('click', function() { pageTo(numberOfPages); });
}
else {
A.one('.${ns}report-chart .page-links .next').setStyles(noLinkStyles).on('click', function() {});
A.one('.${ns}report-chart .page-links .last').setStyles(noLinkStyles).on('click', function() {});
}
A.one('.${ns}report-chart .search-results-total-value').empty().append('' + total);
A.one('.${ns}report-chart .search-results-page-start-value').empty().append('' + start);
A.one('.${ns}report-chart .search-results-page-end-value').empty().append('' + end);
A.one('.${ns}report-chart .search-results-number-of-pages-value').empty().append('' + numberOfPages);
A.one(document.${ns}fm.${ns}page).empty();
for (var i = 1; i <= numberOfPages; i++) {
var option = document.createElement("option");
option.text = '' + i;
document.${ns}fm.${ns}page.options.add(option);
if (page == i) {
option.selected = true;
}
}
paginator.show();
};
var pageTo = function(pageNumber) {
A.one(document.${ns}fm.${ns}page).val(pageNumber.toString());
search();
return false;
};
var setRegions = function(regions, region, subregion) {
A.one(document.${ns}fm.${ns}region).empty();
var regionKey = "";
var arr = sortKeys(regions.map);
for (var i in arr) {
if (arr.hasOwnProperty(i)) {
var data = arr[i].split("=");
if (region == data[1]) {
regionKey = arr[i];
break;
}
}
}
if (regionKey == "") {
setSubregions({"map":{"All=All":{"javaClass":"java.util.ArrayList","list":["All=All"]}},"javaClass":"java.util.HashMap"}, 'All');
}
else {
setSubregions(regions.map[regionKey], subregion);
}
for (var i in arr) {
if (arr.hasOwnProperty(i)) {
var data = arr[i].split("=");
var option = document.createElement("option");
option.text = data[0];
option.value = data[1];
document.${ns}fm.${ns}region.options.add(option);
if (region == data[1]) {
option.selected = true;
}
}
}
};
var setSubregions = function(subregions, subregion) {
A.one(document.${ns}fm.${ns}subregion).empty();
var arr = sortKeys(subregions.map);
for (var i in arr) {
if (arr.hasOwnProperty(i)) {
var data = arr[i].split("=");
var option = document.createElement("option");
option.text = data[0];
option.value = data[1];
document.${ns}fm.${ns}subregion.options.add(option);
if (subregion == data[1]) {
option.selected = true;
}
}
}
};
var getFieldValue = function(documentFields, key, defaultValue) {
if (documentFields[key]) {
return documentFields[key].value;
}
else {
return defaultValue;
}
};
var search = function() {
var eventType = A.one(document.${ns}fm.${ns}eventType).val() || 'All';
var orderByCol = A.one(document.${ns}fm.${ns}orderByCol).val() || 'startDate';
var orderByType = A.one(document.${ns}fm.${ns}orderByType).val() || 'false';
var pastEvents = document.${ns}fm.${ns}pastEvents.checked;
var delta = A.one(document.${ns}fm.${ns}delta).val() || ${defaultDelta};
var page = A.one(document.${ns}fm.${ns}page).val() || 1;
var region = A.one(document.${ns}fm.${ns}region).val() || 'All';
var subregion = A.one(document.${ns}fm.${ns}subregion).val() || 'All';
var onlineEvents = false;
if (document.${ns}fm.${ns}onlineEvents) {
var onlineEvents = document.${ns}fm.${ns}onlineEvents.checked;
}
A.io.request(
'${request.resource-url}',
{
data: {
${ns}eventType: eventType,
${ns}orderByCol: orderByCol,
${ns}orderByType: orderByType,
${ns}onlineEvents: onlineEvents,
${ns}pastEvents: pastEvents,
${ns}delta: delta,
${ns}page: page,
${ns}region: region,
${ns}subregion: subregion,
${ns}jsTimeZoneDetect: jstz.determine().name()
},
dataType: 'json',
on: {
success: function(event, id, obj) {
var result = this.get('responseData');
var hits = result.hits;
var resultsContainer = A.one('.${ns}results-container');
resultsContainer.empty().append('<tr><td class="event-description" colspan="3"><div style="text-align: center;"><img src="$pathThemeImages/progress_bar/loading_animation.gif" /></div></td></tr>');
var content = [];
if (!hits.serializable || !hits.serializable.docs || hits.serializable.docs.length == 0) {
setupPagination(0, 0);
setRegions(result.regions, region, subregion);
resultsContainer.append('<tr><td class="event-description" colspan="3">There are no events.</td></tr>');
}
else {
setupPagination(hits.serializable.length, hits.serializable.docs.length);
setRegions(result.regions, region, subregion);
for (var i = 0; i < hits.serializable.docs.length; i++) {
var doc = hits.serializable.docs[i].serializable;
try {
var documentFields = doc.fields.map;
var className = getFieldValue(documentFields, 'entryClassName', '');
var eventName = getFieldValue(documentFields, 'web_content/eventName_${languageId}', getFieldValue(documentFields, 'web_content/eventName', ''));
var curEventType = getFieldValue(documentFields, 'web_content/event-type', '');
var eventSummary = getFieldValue(documentFields, "web_content/event-summary_${languageId}", getFieldValue(documentFields, "web_content/event-summary", ''));
var eventDateTba = getFieldValue(documentFields, 'web_content/event-date-tba', '');
var startDate = getFieldValue(documentFields, 'web_content/startDate', '');
var endDate = getFieldValue(documentFields, 'web_content/endDate', '');
var eventTimeZone = getFieldValue(documentFields, 'web_content/event-time-zone', '');
var eventYearStartDate = getFieldValue(documentFields, 'web_content/event-year-start-date', '');
var eventMonthStartDate = getFieldValue(documentFields, 'web_content/event-month-start-date', '');
var eventDayStartDate = getFieldValue(documentFields, 'web_content/event-day-start-date', '');
var eventHourStartDate = getFieldValue(documentFields, 'web_content/event-hour-start-date', '');
var eventYearEndDate = getFieldValue(documentFields, 'web_content/event-year-end-date', '');
var eventMonthEndDate = getFieldValue(documentFields, 'web_content/event-month-end-date', '');
var eventDayEndDate = getFieldValue(documentFields, 'web_content/event-day-end-date', '');
var eventHourEndDate = getFieldValue(documentFields, 'web_content/event-hour-end-date', '');
var eventHostedBy = getFieldValue(documentFields, 'web_content/hosted-by', '');
var eventHostedByURL = getFieldValue(documentFields, 'web_content/hosted-by-url', '');
var eventLocationRegion = getFieldValue(documentFields, 'web_content/region', '');
var eventLocationSubregion = getFieldValue(documentFields, 'web_content/subregion', '');
var eventLocationSubregionName = getFieldValue(documentFields, 'web_content/subregion_name', '');
var eventLocationCity = getFieldValue(documentFields, 'web_content/city', '');
var eventLocationStreet1 = getFieldValue(documentFields, 'web_content/street1', '');
var eventLocationStreet2 = getFieldValue(documentFields, 'web_content/street2', '');
var eventLocationStreet3 = getFieldValue(documentFields, 'web_content/street3', '');
var eventLocationPostal = getFieldValue(documentFields, 'web_content/zip', '');
var eventPageLink = getFieldValue(documentFields, 'web_content/event-page-link', '');
if (curEventType == "Training") {
var eventPageLinkText = getFieldValue(documentFields, 'web_content/event-page-link-text', '#language("register")');
}
else {
var eventPageLinkText = getFieldValue(documentFields, 'web_content/event-page-link-text', '');
}
var trainingEventCourseURL = getFieldValue(documentFields, 'web_content/training-event-course-url', '');
var trainingEventLocation = getFieldValue(documentFields, 'web_content/training-event-location', '');
var trainingEventLanguage = getFieldValue(documentFields, 'web_content/training-event-language', '');
if (trainingEventLocation .substring(0, 9) === "Online - ") {
trainingEventLocation = "Online";
}
var linkFromAggregateList = documentFields['web_content/link-from-aggregate-list'] ? documentFields['web_content/link-from-aggregate-list'].value : '';
var webinarArchiveUrl = documentFields['archiveURL'] ? documentFields['archiveURL'].value : '';
var webinarSlidesUrl = documentFields['webinar-slides-url'] ? documentFields['webinar-slides-url'].value : '';
if (pastEvents) {
eventPageLinkText = '';
}
var href = '';
if (eventPageLink) {
href = eventPageLink;
}
if (curEventType == 'Training') {
if (trainingEventCourseURL && trainingEventCourseURL != '') {
href = trainingEventCourseURL;
}
else if (eventName == 'Advanced Developer Training') {
href = '/services/training/topics/advanced-developer';
}
else if (eventName == 'Building Themes in Liferay') {
href = '/services/training/topics/themes';
}
else if (eventName == 'Developer Training') {
href = '/services/training/topics/developer-training';
}
else if (eventName == 'Portal Administrator Training') {
href = '/services/training/topics/portal-administrator-training';
}
else if (eventName == 'System Administrator Training') {
href = '/services/training/topics/system-administrator-training';
}
else {
href = '/services/training/topics';
}
}
var position = ' row-' + i;
if (i == 0) {
position = position + ' first';
}
if (i == hits.serializable.docs.length - 1) {
position = position + ' last';
}
var row = [];
row.push('<tr class="', curEventType.toLowerCase(), position, '"><td class="first">', '<div class="fl x-6 x-4 responsive-hidden ', curEventType.toLowerCase(), '"><a href="');
if (curEventType == 'Community') {
row.push('/about-us/events/community-events"><img src="$imageCommunity');
}
else if (curEventType == 'Industry') {
row.push('/about-us/events/industry-events"><img src="$imageIndustry');
}
else if (curEventType == 'Partner') {
row.push('/events/partner-events"><img src="$imagePartner');
}
else if (curEventType == 'Roadshow') {
row.push('/liferay-roadshows"><img src="$imageRoadshows');
}
else if (curEventType == 'Symposium') {
row.push('/about-us/events/liferay-symposiums"><img src="$imageSymposiums');
}
else if (curEventType == 'Training') {
row.push('/services/training/schedule"><img src="$imageTraining');
}
else if (curEventType == 'Webinar') {
row.push('/web-events"><img src="$imageWebinar');
}
else if (curEventType == 'DevCon') {
row.push('/web-events"><img src="$imageDevCon');
}
else if (curEventType == 'SolutionsForum') {
row.push('/web-events"><img src="$imageSolutionsForum');
}
row.push('" alt="', curEventType, '" width="60" height="36" /></a></div><div class="i-80-12 i-80-9">');
if (href != '') {
row.push('<a class="highlight" href="', href, '">');
}
else {
row.push('<span>');
}
row.push(eventName);
if (href != '') {
row.push('</a>');
}
else {
row.push('</span>');
}
if (eventHostedBy) {
row.push('<br />Hosted By ')
if (eventHostedByURL) {
row.push('<a href="', eventHostedByURL, '">');
}
row.push(eventHostedBy);
if (eventHostedByURL) {
row.push('</a>');
}
}
#if ($defaultEventType != 'All')
if (eventSummary) {
row.push('<p>', eventSummary, '</p>');
}
#end
row.push('</div></td><td><div class="event-date">');
if (eventDateTba == 'true') {
row.push('Date: TBA');
}
else {
row.push(eventMonthStartDate, ' ', eventDayStartDate);
if (eventMonthEndDate) {
if (eventMonthEndDate != eventMonthStartDate) {
row.push(' - ', eventMonthEndDate, ' ', eventDayEndDate);
}
else if (eventDayEndDate != eventDayStartDate) {
row.push('-', eventDayEndDate);
}
}
row.push(', ', eventYearStartDate);
if (eventHourStartDate && (eventHourStartDate != '00:00')) {
row.push('<br/>', eventHourStartDate);
if (eventHourEndDate && (eventHourEndDate != '00:00') && (eventHourEndDate != eventHourStartDate)) {
row.push(' - ', eventHourEndDate);
}
if (eventTimeZone && eventTimeZone != '') {
if (curEventType == 'Training') {
row.push('<br />');
}
else {
row.push(' ');
}
row.push(eventTimeZone);
}
}
}
row.push('</div><div class="event-location">');
if (curEventType == 'Training') {
row.push(trainingEventLocation);
}
else {
#if ($defaultEventType != 'All')
if (eventLocationStreet1) {
row.push(eventLocationStreet1, '<br />');
}
if (eventLocationStreet2) {
row.push(eventLocationStreet2, '<br />');
}
if (eventLocationStreet3) {
row.push(eventLocationStreet3, '<br />');
}
#end
if (eventLocationCity && eventLocationCity != '' && eventLocationCity != 'TBA') {
row.push(eventLocationCity);
}
if (eventLocationSubregionName && eventLocationSubregionName != '') {
if (eventLocationCity && eventLocationCity != '' && eventLocationCity != 'TBA') {
row.push(', ');
}
row.push(eventLocationSubregionName);
}
#if ($defaultEventType != 'All')
if (eventLocationPostal && eventLocationPostal != '' && eventLocationPostal != 'TBA') {
if ((eventLocationCity && eventLocationCity != '' && eventLocationCity != 'TBA') ||
(eventLocationSubregion && eventLocationSubregion != '')) {
row.push(', ');
}
row.push(eventLocationPostal);
}
#end
}
row.push('</div></td>');
#if ($defaultEventType == 'Training')
row.push('<td>', trainingEventLanguage, '</td>');
#end
row.push('<td class="last">');
if (curEventType == 'Training') {
if (eventPageLink == '') {
#if ($defaultEventType != 'Training')
eventPageLink = 'services/training/';
#end
eventPageLink = eventPageLink + 'enroll';
}
}
if (pastEvents) {
if (curEventType == 'Webinar') {
if (webinarArchiveUrl != '') {
row.push('<a href="', webinarArchiveUrl, '" class="btn">Archive</a>');
}
if (webinarSlidesUrl != '') {
row.push('<a href="', webinarSlidesUrl, '" class="btn">Slides</a>');
}
}
}
/*
else if (linkFromAggregateList) {
row.push(linkFromAggregateList);
}
*/
else if (eventPageLink) {
row.push('<a href="', eventPageLink, '" class="btn">', eventPageLinkText, '</a>');
}
else if (eventPageLinkText) {
row.push('<b>', eventPageLinkText, '</b>');
}
row.push('</td></tr>');
content.push(row.join(''));
}
catch (e) {
//console.log(e);
}
}
}
// Ask about this
resultsContainer.hide();
resultsContainer.empty().append(content.join(''));
resultsContainer.show();
},
failure: function(event, id, obj) {
//console.log('error', event, id, obj);
}
}
}
);
};
var sortKeys = function(obj) {
var sortedKeys = new Array();
for (var i in obj){
sortedKeys.push(i);
}
return sortedKeys.sort();
};
var formChangeSearch = function(event) {
var target = event.currentTarget;
if (target.compareTo(document.${ns}fm.${ns}region)) {
A.one(document.${ns}fm.${ns}subregion).val('');
A.one(document.${ns}fm.${ns}subregion).val('All');
}
if (!target.compareTo(document.${ns}fm.${ns}page)) {
A.one(document.${ns}fm.${ns}page).val('1');
}
paginator.hide();
search();
};
var formEventNameSort = function() {
document.${ns}fm.${ns}orderByCol.value = 'eventName';
A.one('span.${ns}order-by-date').removeClass('true').removeClass('false');
if (document.${ns}fm.${ns}orderByType.value == 'false') {
document.${ns}fm.${ns}orderByType.value = 'true';
A.one('span.${ns}order-by-name').addClass('true').removeClass('false');
}
else {
document.${ns}fm.${ns}orderByType.value = 'false';
A.one('span.${ns}order-by-name').addClass('false').removeClass('true');
}
search();
};
var formStartDateSort = function() {
document.${ns}fm.${ns}orderByCol.value = 'startDate';
A.one('span.${ns}order-by-name').removeClass('true').removeClass('false');
if (document.${ns}fm.${ns}orderByType.value == 'false') {
document.${ns}fm.${ns}orderByType.value = 'true';
A.one('span.${ns}order-by-date').addClass('true').removeClass('false');
}
else {
document.${ns}fm.${ns}orderByType.value = 'false';
A.one('span.${ns}order-by-date').addClass('false').removeClass('true');
}
search();
};
A.one('#${ns}fm').all('select.${ns}function-bound').on('change', formChangeSearch);
A.one('#${ns}fm').all('select.${ns}function-bound').on('keypress', formChangeSearch);
A.one('#${ns}fm').all('input.${ns}function-bound').on(['click', 'change'], formChangeSearch);
A.one('span.${ns}order-by-name a').on('click', formEventNameSort);
A.one('span.${ns}order-by-name a').on('keypress', formEventNameSort);
A.one('span.${ns}order-by-date a').on('click', formStartDateSort);
A.one('span.${ns}order-by-date a').on('keypress', formStartDateSort);
search();
}
);
</script>
#elseif ($request.lifecycle == 'RESOURCE_PHASE')
#set ($logFactory = $portal.getClass().forName('com.liferay.portal.kernel.log.LogFactoryUtil'))
#set ($log = $logFactory.getLog('com.liferay.portal.kernel.search.SearchEngineUtil'))
#set ($collections = $portal.getClass().forName("java.util.Collections"))
#set ($portalBeanLocator = $portal.getClass().forName('com.liferay.portal.kernel.bean.PortalBeanLocatorUtil'))
#set ($calendar = $portal.getClass().forName('java.util.Calendar').getInstance())
#set ($searchContext = $portal.getClass().forName('com.liferay.portal.kernel.search.SearchContext').newInstance())
#set ($dateFormatFactory = $portalBeanLocator.locate('com.liferay.portal.kernel.util.DateFormatFactoryUtil'))
#set ($searchEngine = $portalBeanLocator.locate('com.liferay.portal.kernel.search.SearchEngineUtil'))
#set ($booleanQueryFactory = $portal.getClass().forName('com.liferay.portal.kernel.search.BooleanQueryFactoryUtil'))
#set ($termQueryFactory = $portal.getClass().forName('com.liferay.portal.kernel.search.TermQueryFactoryUtil'))
#set ($stringQueryFactory = $portalBeanLocator.locate('com.liferay.portal.kernel.search.StringQueryFactoryUtil'))
#set ($sortFactory = $portalBeanLocator.locate('com.liferay.portal.kernel.search.SortFactoryUtil'))
#set ($calendarFactory = $portalBeanLocator.locate('com.liferay.portal.kernel.util.CalendarFactoryUtil'))
#set ($jsonFactory = $portalBeanLocator.locate('com.liferay.portal.kernel.json.JSONFactoryUtil'))
##set ($jsonFactory = $portal.getClass().forName('org.jabsorb.JSONSerializer').newInstance())
#set ($portalBeanLocator = $portal.getClass().forName('com.liferay.portal.kernel.bean.PortalBeanLocatorUtil'))
#set ($countryService = $portalBeanLocator.locate("com.liferay.portal.service.CountryService.velocity"))
#set ($portletBeanLocator = $portal.getClass().forName('com.liferay.portal.kernel.bean.PortletBeanLocatorUtil'))
#set ($trainingEventLocalService = $portletBeanLocator.locate("osb-portlet", "com.liferay.osb.service.TrainingEventLocalService.velocity"))
#set ($trainingLocationLocalService = $portletBeanLocator.locate("osb-portlet", "com.liferay.osb.service.TrainingLocationLocalService.velocity"))
#set ($webinarEventLocalService = $portletBeanLocator.locate("osb-portlet", "com.liferay.osb.service.WebinarEventLocalService.velocity"))
##set ($V = $jsonFactory.registerDefaultSerializers())
##set ($V = $jsonFactory.setMarshallClassHints(false))
#set ($indexFormat = $dateFormatFactory.getSimpleDateFormat('yyyyMMddHHmmss'))
#set ($yearFormat = $dateFormatFactory.getSimpleDateFormat('yyyy'))
#set ($monthFormat = $dateFormatFactory.getSimpleDateFormat('MMM'))
#set ($dayFormat = $dateFormatFactory.getSimpleDateFormat('dd'))
#set ($hourFormat = $dateFormatFactory.getSimpleDateFormat('HH:mm'))
#set ($eventType = $getterUtil.getString($request.parameters.eventType, 'All'))
#set ($orderByCol = $getterUtil.getString($request.parameters.orderByCol, 'startDate'))
#set ($orderByType = $getterUtil.getBoolean($request.parameters.orderByType, false))
#set ($onlineEvents = $getterUtil.getBoolean($request.parameters.onlineEvents, false))
#set ($pastEvents = $getterUtil.getBoolean($request.parameters.pastEvents, false))
#set ($delta = $getterUtil.getInteger($request.parameters.delta, $defaultDelta))
#set ($page = $getterUtil.getInteger($request.parameters.page, 1))
#set ($regionParam = $getterUtil.getString($request.parameters.region, 'All'))
#set ($subregionParam = $getterUtil.getString($request.parameters.subregion, 'All'))
#set ($cityParam = 'All')
#set ($amerSubregions = $stringUtil.split('Argentina,Bolivia,Brazil,Canada,Chile,Colombia,Ecuador,Guyana,Mexico,Paraguay,Peru,Suriname,United States,Uruguay,Venezuela'))
#set ($apacSubregions = $stringUtil.split('Australia,China,Hong Kong,India,Indonesia,Japan,Malaysia,New Zealand,Philippines,Russia,Singapore,South Korea,Thailand'))
##set ($V = $log.error($eventType))
#set ($fullQuery = $booleanQueryFactory.create($searchContext))
#set ($searchQuery = $booleanQueryFactory.create($searchContext))
#if ($eventType == 'All' || $eventType == 'Community')
#set ($eventQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $eventQuery.addRequiredTerm('portletId', '15'))
#set ($V = $eventQuery.addRequiredTerm('groupId', $scopeGroupId))
#set ($V = $eventQuery.addRequiredTerm('structureId', 'EVENT-ENTRY'))
#set ($termQuery = $termQueryFactory.create($searchContext, 'web_content/event-type', 'Community'))
#set ($V = $eventQuery.add($termQuery, 'MUST'))
#set ($V = $searchQuery.add($eventQuery, 'SHOULD'))
#end
#if ($eventType == 'All' || $eventType == 'Conferences')
#set ($eventQuery1 = $booleanQueryFactory.create($searchContext))
#set ($V = $eventQuery1.addRequiredTerm('portletId', '15'))
#set ($V = $eventQuery1.addRequiredTerm('groupId', $scopeGroupId))
#set ($V = $eventQuery1.addRequiredTerm('structureId', 'EVENT-ENTRY'))
#set ($eventQuery2 = $booleanQueryFactory.create($searchContext))
#set ($V = $eventQuery2.addRequiredTerm('portletId', '15'))
#set ($V = $eventQuery2.addRequiredTerm('groupId', $scopeGroupId))
#set ($V = $eventQuery2.addRequiredTerm('structureId', 'EVENT-ENTRY'))
#set ($eventQuery3 = $booleanQueryFactory.create($searchContext))
#set ($V = $eventQuery3.addRequiredTerm('portletId', '15'))
#set ($V = $eventQuery3.addRequiredTerm('groupId', $scopeGroupId))
#set ($V = $eventQuery3.addRequiredTerm('structureId', 'EVENT-ENTRY'))
#set ($termQuery1 = $termQueryFactory.create($searchContext, 'web_content/event-type', 'DevCon'))
#set ($termQuery2 = $termQueryFactory.create($searchContext, 'web_content/event-type', 'SolutionsForum'))
#set ($termQuery3 = $termQueryFactory.create($searchContext, 'web_content/event-type', 'Symposium'))
#set ($V = $eventQuery1.add($termQuery1, 'MUST'))
#set ($V = $eventQuery2.add($termQuery2, 'MUST'))
#set ($V = $eventQuery3.add($termQuery3, 'MUST'))
#set ($V = $searchQuery.add($eventQuery1, 'SHOULD'))
#set ($V = $searchQuery.add($eventQuery2, 'SHOULD'))
#set ($V = $searchQuery.add($eventQuery3, 'SHOULD'))
#end
#if ($eventType == 'All' || $eventType == 'Industry')
#set ($eventQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $eventQuery.addRequiredTerm('portletId', '15'))
#set ($V = $eventQuery.addRequiredTerm('groupId', $scopeGroupId))
#set ($V = $eventQuery.addRequiredTerm('structureId', 'EVENT-ENTRY'))
#set ($termQuery = $termQueryFactory.create($searchContext, 'web_content/event-type', 'Industry'))
#set ($V = $eventQuery.add($termQuery, 'MUST'))
#set ($V = $searchQuery.add($eventQuery, 'SHOULD'))
#end
#if ($eventType == 'All' || $eventType == 'Partner')
#set ($eventQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $eventQuery.addRequiredTerm('portletId', '15'))
#set ($V = $eventQuery.addRequiredTerm('groupId', $scopeGroupId))
#set ($V = $eventQuery.addRequiredTerm('structureId', 'EVENT-ENTRY'))
#set ($termQuery = $termQueryFactory.create($searchContext, 'web_content/event-type', 'Partner'))
#set ($V = $eventQuery.add($termQuery, 'MUST'))
#set ($V = $searchQuery.add($eventQuery, 'SHOULD'))
#end
#if ($eventType == 'All' || $eventType == 'Roadshow')
#set ($eventQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $eventQuery.addRequiredTerm('portletId', '15'))
#set ($V = $eventQuery.addRequiredTerm('groupId', $scopeGroupId))
#set ($V = $eventQuery.addRequiredTerm('structureId', 'EVENT-ENTRY'))
#set ($termQuery = $termQueryFactory.create($searchContext, 'web_content/event-type', 'Roadshow'))
#set ($V = $eventQuery.add($termQuery, 'MUST'))
#set ($V = $searchQuery.add($eventQuery, 'SHOULD'))
#end
#if ($eventType == 'All' || $eventType == 'Training')
#set ($eventQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $eventQuery.addExactTerm('entryClassName', 'com.liferay.osb.model.TrainingEvent'))
#set ($termQuery = $termQueryFactory.create($searchContext, 'type', '1'))
#set ($V = $eventQuery.add($termQuery, 'MUST_NOT'))
#set ($V = $searchQuery.add($eventQuery, 'SHOULD'))
#end
#if ($eventType == 'All' || $eventType == 'Webinar')
#set ($eventQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $eventQuery.addExactTerm('entryClassName', 'com.liferay.osb.model.WebinarEvent'))
#set ($V = $searchQuery.add($eventQuery, 'SHOULD'))
#end
#set ($V = $fullQuery.add($searchQuery, 'MUST'))
#if ($defaultEventType == 'Training' && $onlineEvents)
#set ($onlineQuery = $booleanQueryFactory.create($searchContext))
#set ($trainingLocationQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $trainingLocationQuery.addExactTerm('entryClassName', 'com.liferay.osb.model.TrainingEvent'))
#set ($termQuery = $termQueryFactory.create($searchContext, 'trainingLocationId', 0))
#set ($V = $trainingLocationQuery.add($termQuery, 'MUST'))
#set ($V = $onlineQuery.add($trainingLocationQuery, 'SHOULD'))
#foreach ($trainingLocation in $trainingLocationLocalService.getTrainingLocations(-1, -1))
#if ($trainingLocation.getName().startsWith('Online - '))
#set ($trainingLocationQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $trainingLocationQuery.addExactTerm('entryClassName', 'com.liferay.osb.model.TrainingEvent'))
#set ($termQuery = $termQueryFactory.create($searchContext, 'trainingLocationId', $trainingLocation.getTrainingLocationId()))
#set ($V = $trainingLocationQuery.add($termQuery, 'MUST'))
#set ($V = $onlineQuery.add($trainingLocationQuery, 'SHOULD'))
#end
#end
#set ($V = $fullQuery.add($onlineQuery, 'MUST'))
#end
#set ($date = $dateUtil.newDate())
#set ($V = $calendar.setTime($date))
#set ($V = $calendar.set(14, 0)) ## MILLISECOND
#set ($V = $calendar.set(13, 0)) ## SECOND
#set ($V = $calendar.set(12, 0)) ## MINUTE
#set ($nowIndex = $indexFormat.format($calendar.time))
#if ($pastEvents)
#set ($V = $calendar.add(1, -2))
#set ($lastYearIndex = $indexFormat.format($calendar.time))
#set ($upcomingQuery = $stringQueryFactory.create("(web_content/endDate:[${lastYearIndex} TO ${nowIndex}] endDate:[${lastYearIndex} TO ${nowIndex}] airDate:[${lastYearIndex} TO ${nowIndex}])"))
#else
#set ($V = $calendar.add(1, 1))
#set ($nextYearIndex = $indexFormat.format($calendar.time))
#set ($upcomingQuery = $stringQueryFactory.create("(web_content/endDate:[${nowIndex} TO ${nextYearIndex}] endDate:[${nowIndex} TO ${nextYearIndex}] airDate:[${nowIndex} TO ${nextYearIndex}] web_content/event-date-tba:true)"))
#end
#if ($upcomingQuery)
#set ($V = $fullQuery.add($upcomingQuery, 'MUST'))
#end
#set ($hits = $searchEngine.search($company.companyId, $fullQuery, $sortFactory.getDefaultSorts(), -1, -1))
#set ($regions = {'All=All':{'All=All':['All=All']},'Americas=amer':{'All=All':['All=All']},'Asia Pacific=apac':{'All=All':['All=All']},'Europe, Middle East, Africa=emea':{'All=All':['All=All']}})
#foreach ($doc in $hits.docs)
#if ($doc.entryClassName == 'com.liferay.osb.model.WebinarEvent')
#set ($webinarEvent = $webinarEventLocalService.getWebinarEvent($getterUtil.getLong($doc.entryClassPK)))
#set ($V = $doc.addDate("web_content/startDate", $webinarEvent.getAirDate()))
#set ($V = $doc.addKeyword("web_content/eventName", $getterUtil.getString($doc.get('name'))))
#elseif ($doc.entryClassName == 'com.liferay.osb.model.TrainingEvent')
#set ($trainingEvent = $trainingEventLocalService.getTrainingEvent($getterUtil.getLong($doc.entryClassPK)))
#set ($V = $doc.addDate("web_content/endDate", $trainingEvent.getEndDate()))
#set ($V = $doc.addDate("web_content/startDate", $trainingEvent.getStartDate()))
#set ($V = $doc.addKeyword("web_content/city", $getterUtil.getString($doc.get('city'))))
#set ($V = $doc.addKeyword("web_content/country", $getterUtil.getString($doc.get('countryName'))))
#set ($V = $doc.addKeyword("web_content/eventName", $getterUtil.getString($doc.get('name'))))
#set ($V = $doc.addKeyword("web_content/region", $getterUtil.getString($doc.get('regionCode'))))
#set ($V = $doc.addKeyword("web_content/street1", $getterUtil.getString($doc.get('street1'))))
#set ($V = $doc.addKeyword("web_content/street2", $getterUtil.getString($doc.get('street2'))))
#set ($V = $doc.addKeyword("web_content/street3", $getterUtil.getString($doc.get('street3'))))
#set ($V = $doc.addKeyword("web_content/zip", $getterUtil.getString($doc.get('zip'))))
#end
#if ($doc.entryClassName == 'com.liferay.osb.model.WebinarEvent')
#set ($V = $doc.addText("web_content/region", 'Online'))
#elseif ($doc.entryClassName == 'com.liferay.osb.model.TrainingEvent')
#if ($arrayUtil.contains($amerSubregions, $doc.get('web_content/country')))
#set ($V = $doc.addText("web_content/region", 'amer'))
#elseif ($arrayUtil.contains($apacSubregions, $doc.get('web_content/country')))
#set ($V = $doc.addText("web_content/region", 'apac'))
#else
#set ($V = $doc.addText("web_content/region", 'emea'))
#end
#set ($country = $countryService.getCountryByName($getterUtil.getString($doc.get('web_content/country'))))
#set ($V = $doc.addText("web_content/subregion", $stringUtil.merge([$country.getCountryId()])))
#end
#if ($doc.get('web_content/region') && $doc.get('web_content/region') != '')
#if ($doc.get('web_content/region') == 'amer')
#set ($region = 'Americas=amer')
#elseif ($doc.get('web_content/region') == 'apac')
#set ($region = 'Asia Pacific=apac')
#elseif ($doc.get('web_content/region') == 'emea')
#set ($region = 'Europe, Middle East, Africa=emea')
#end
#else
#set ($region = 'All=All')
#end
#if ($doc.get('web_content/subregion') && $doc.get('web_content/subregion') != '')
#set ($country = $countryService.getCountry($getterUtil.getLong($doc.get('web_content/subregion'))))
#set ($subregion = $country.getName() + "=" + $country.getCountryId())
#else
#set ($subregion = 'All=All')
#end
#if ($doc.get('web_content/city') && $doc.get('web_content/city') != '')
#set ($city = $doc.get('web_content/city') + "=" + $doc.get('web_content/city'))
#else
#set ($city = 'All=All')
#end
#if ("$!region" != "" && !$regions.containsKey($region))
#set ($r = {'All=All':['All=All']})
#set ($V = $regions.put($region, $r))
#end
#set ($subregions = $regions.get($region))
#if (!$subregions.containsKey($subregion))
#set ($s = ['All=All'])
#set ($V = $subregions.put($subregion, $s))
#end
#set ($cities = $subregions.get($subregion))
#if (!$cities.contains($city))
#set ($V = $cities.add($city))
#end
#end
#set ($filterQuery = $booleanQueryFactory.create($searchContext))
#if ($cityParam != 'All')
#set ($cityQuery = $booleanQueryFactory.create($searchContext))
#set ($webContentCityQuery = $booleanQueryFactory.create($searchContext))
#set ($termQuery = $termQueryFactory.create($searchContext, 'web_content/city', $cityParam))
#set ($V = $webContentCityQuery.add($termQuery, 'MUST'))
#set ($V = $cityQuery.add($webContentCityQuery, 'SHOULD'))
#set ($entityCityQuery = $booleanQueryFactory.create($searchContext))
#set ($termQuery = $termQueryFactory.create($searchContext, 'city', $cityParam))
#set ($V = $entityCityQuery.add($termQuery, 'MUST'))
#set ($V = $cityQuery.add($entityCityQuery, 'SHOULD'))
#set ($V = $filterQuery.add($cityQuery, 'MUST'))
#elseif ($subregionParam != 'All')
#set ($subregionQuery = $booleanQueryFactory.create($searchContext))
#set ($webContentSubregionQuery = $booleanQueryFactory.create($searchContext))
#set ($termQuery = $termQueryFactory.create($searchContext, 'web_content/subregion', $subregionParam))
#set ($V = $webContentSubregionQuery.add($termQuery, 'MUST'))
#set ($V = $subregionQuery.add($webContentSubregionQuery, 'SHOULD'))
#if ($eventType == 'All' || $eventType == 'Training')
#set ($trainingEventSubregionQuery = $booleanQueryFactory.create($searchContext))
#set ($country = $countryService.getCountry($getterUtil.getLong($subregionParam)))
#set ($V = $trainingEventSubregionQuery.addExactTerm('entryClassName', 'com.liferay.osb.model.TrainingEvent'))
#set ($termQuery = $termQueryFactory.create($searchContext, 'countryName', $country.getName()))
#set ($V = $trainingEventSubregionQuery.add($termQuery, 'MUST'))
#set ($V = $subregionQuery.add($trainingEventSubregionQuery, 'SHOULD'))
#foreach ($trainingLocation in $trainingLocationLocalService.getTrainingLocations(-1, -1))
#set ($onlineTrainingLocationId = '')
#if (($regionParam == 'amer') && $trainingLocation.getName().equals('Online - Americas'))
#set ($onlineTrainingLocationId = $trainingLocation.getTrainingLocationId())
#elseif (($regionParam == 'apac') && $trainingLocation.getName().equals('Online - Asia Pacific'))
#set ($onlineTrainingLocationId = $trainingLocation.getTrainingLocationId())
#elseif (($regionParam == 'emea') && $trainingLocation.getName().equals('Online - EMEA'))
#set ($onlineTrainingLocationId = $trainingLocation.getTrainingLocationId())
#end
#if ($validator.isNotNull($onlineTrainingLocationId))
#set ($trainingLocationQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $trainingLocationQuery.addExactTerm('entryClassName', 'com.liferay.osb.model.TrainingEvent'))
#set ($termQuery = $termQueryFactory.create($searchContext, 'trainingLocationId', $onlineTrainingLocationId))
#set ($V = $trainingLocationQuery.add($termQuery, 'MUST'))
#set ($V = $subregionQuery.add($trainingLocationQuery, 'SHOULD'))
#end
#end
#end
#set ($V = $filterQuery.add($subregionQuery, 'MUST'))
#elseif ($regionParam != 'All')
#set ($regionQuery = $booleanQueryFactory.create($searchContext))
#set ($webContentRegionQuery = $booleanQueryFactory.create($searchContext))
#if ($regionParam == 'Online')
#set ($V = $webContentRegionQuery.addExactTerm('entryClassName', 'com.liferay.osb.model.WebinarEvent'))
#else
#set ($termQuery = $termQueryFactory.create($searchContext, 'web_content/region', $regionParam))
#set ($V = $webContentRegionQuery.add($termQuery, 'MUST'))
#end
#set ($V = $regionQuery.add($webContentRegionQuery, 'SHOULD'))
#if ($eventType == 'All' || $eventType == 'Training')
#if ($regionParam == 'amer')
#foreach ($curSubregion in $amerSubregions)
#set ($trainingEventRegionQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $trainingEventRegionQuery.addExactTerm('entryClassName', 'com.liferay.osb.model.TrainingEvent'))
#set ($termQuery = $termQueryFactory.create($searchContext, 'countryName', $curSubregion))
#set ($V = $trainingEventRegionQuery.add($termQuery, 'MUST'))
#set ($V = $regionQuery.add($trainingEventRegionQuery, 'SHOULD'))
#end
#elseif ($regionParam == 'apac')
#foreach ($curSubregion in $apacSubregions)
#set ($trainingEventRegionQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $trainingEventRegionQuery.addExactTerm('entryClassName', 'com.liferay.osb.model.TrainingEvent'))
#set ($termQuery = $termQueryFactory.create($searchContext, 'countryName', $curSubregion))
#set ($V = $trainingEventRegionQuery.add($termQuery, 'MUST'))
#set ($V = $regionQuery.add($trainingEventRegionQuery, 'SHOULD'))
#end
#elseif ($regionParam == 'emea')
#set ($trainingEventRegionQuery = $booleanQueryFactory.create($searchContext))
#set ($V = $trainingEventRegionQuery.addExactTerm('entryClassName', 'com.liferay.osb.model.TrainingEvent'))
#foreach ($curSubregion in $amerSubregions)
#set ($termQuery = $termQueryFactory.create($searchContext, 'countryName', $curSubregion))
#set ($V = $trainingEventRegionQuery.add($termQuery, 'MUST_NOT'))
#end
#foreach ($curSubregion in $apacSubregions)
#set ($termQuery = $termQueryFactory.create($searchContext, 'countryName', $curSubregion))
#set ($V = $trainingEventRegionQuery.add($termQuery, 'MUST_NOT'))
#end
#set ($V = $regionQuery.add($trainingEventRegionQuery, 'SHOULD'))
#end
#end
#set ($V = $filterQuery.add($regionQuery, 'MUST'))
#end
#if ($filterQuery.clauses().size() > 0)
#set ($V = $fullQuery.add($filterQuery, 'MUST'))
#end
#set ($hits = $searchEngine.search($company.companyId, $fullQuery, $sortFactory.getDefaultSorts(), -1, -1))
#foreach ($doc in $hits.docs)
#if ($doc.entryClassName == 'com.liferay.osb.model.WebinarEvent')
#set ($webinarEvent = $webinarEventLocalService.getWebinarEvent($getterUtil.getLong($doc.entryClassPK)))
#set ($V = $doc.addDate("web_content/startDate", $webinarEvent.getAirDate()))
#set ($V = $doc.addKeyword("web_content/eventName", $getterUtil.getString($doc.get('name'))))
#elseif ($doc.entryClassName == 'com.liferay.osb.model.TrainingEvent')
#set ($trainingEvent = $trainingEventLocalService.getTrainingEvent($getterUtil.getLong($doc.entryClassPK)))
#set ($V = $doc.addDate("web_content/endDate", $trainingEvent.getEndDate()))
#set ($V = $doc.addDate("web_content/startDate", $trainingEvent.getStartDate()))
#set ($V = $doc.addKeyword("web_content/city", $getterUtil.getString($doc.get('city'))))
#set ($V = $doc.addKeyword("web_content/country", $getterUtil.getString($doc.get('countryName'))))
#set ($V = $doc.addKeyword("web_content/eventName", $getterUtil.getString($doc.get('name'))))
#set ($V = $doc.addKeyword("web_content/region", $getterUtil.getString($doc.get('regionCode'))))
#set ($V = $doc.addKeyword("web_content/street1", $getterUtil.getString($doc.get('street1'))))
#set ($V = $doc.addKeyword("web_content/street2", $getterUtil.getString($doc.get('street2'))))
#set ($V = $doc.addKeyword("web_content/street3", $getterUtil.getString($doc.get('street3'))))
#set ($V = $doc.addKeyword("web_content/zip", $getterUtil.getString($doc.get('zip'))))
#end
#if ($doc.get('web_content/startDate') && $doc.get('web_content/startDate') != '')
#set ($startDate = $indexFormat.parse($doc.get('web_content/startDate')))
#end
#if ($doc.get('web_content/endDate') && $doc.get('web_content/endDate') != '')
#set ($endDate = $indexFormat.parse($doc.get('web_content/endDate')))
#end
#if ($doc.entryClassName == 'com.liferay.osb.model.WebinarEvent')
#set ($V = $calendar.setTime($startDate))
#set ($V = $calendar.setTimeZone($timeZoneUtil.getTimeZone($request.theme-display.time-zone)))
#set ($startDate = $calendar.time)
#set ($timeZone = $timeZoneUtil.getTimeZone($request.theme-display.time-zone))
#set ($locale = $localeUtil.fromLanguageId($request.theme-display.locale))
#set ($V = $doc.addText('web_content/event-time-zone', $timeZone.getDisplayName($timeZone.inDaylightTime($startDate), 0, $locale)))
#end
#if ($startDate)
#set ($V = $doc.addText("web_content/event-year-start-date", $yearFormat.format($startDate)))
#set ($V = $doc.addText("web_content/event-month-start-date", $monthFormat.format($startDate)))
#set ($V = $doc.addText("web_content/event-day-start-date", $dayFormat.format($startDate)))
#set ($V = $doc.addText("web_content/event-hour-start-date", $hourFormat.format($startDate)))
#end
#if ($endDate)
#set ($V = $doc.addText("web_content/event-year-end-date", $yearFormat.format($endDate)))
#set ($V = $doc.addText("web_content/event-month-end-date", $monthFormat.format($endDate)))
#set ($V = $doc.addText("web_content/event-day-end-date", $dayFormat.format($endDate)))
#set ($V = $doc.addText("web_content/event-hour-end-date", $hourFormat.format($endDate)))
#end
#if ($doc.entryClassName == 'com.liferay.osb.model.TrainingEvent')
#set ($trainingEvent = $trainingEventLocalService.getTrainingEvent($getterUtil.getLong($doc.entryClassPK)))
#set ($trainingLocation = $trainingEvent.getTrainingLocation())
#if ($trainingLocation.getName().startsWith('Online - '))
#set ($timeZoneId = $getterUtil.getString($request.parameters.jsTimeZoneDetect, $request.theme-display.time-zone))
#else
#set ($timeZoneId = $getterUtil.getString($trainingEvent.getTimeZoneId(), $request.theme-display.time-zone))
#end
#set ($timeZone = $timeZoneUtil.getTimeZone($timeZoneId))
#*
# Debug training time zones
#set ($V = $log.error($trainingEvent.getTimeZoneId()))
#set ($V = $log.error($request.theme-display.time-zone))
#set ($V = $log.error($request.parameters.jsTimeZoneDetect))
*#
#set ($trainingEventDayFormat = $dateFormatFactory.getSimpleDateFormat('dd', $timeZone))
#set ($trainingEventHourFormat = $dateFormatFactory.getSimpleDateFormat('hh:mm aa', $timeZone))
#set ($trainingEventMonthFormat = $dateFormatFactory.getSimpleDateFormat('MMM', $timeZone))
#set ($trainingEventYearFormat = $dateFormatFactory.getSimpleDateFormat('yyyy', $timeZone))
#if ($startDate)
#set ($startCalendar = $calendarFactory.getCalendar($timeZone, $locale))
#set ($V = $startCalendar.setTime($startDate))
#set ($startDate = $startCalendar.time)
#set ($V = $doc.addText("web_content/event-day-start-date", $trainingEventDayFormat.format($startDate)))
#set ($V = $doc.addText("web_content/event-hour-start-date", $trainingEventHourFormat.format($startDate)))
#set ($V = $doc.addText("web_content/event-month-start-date", $trainingEventMonthFormat.format($startDate)))
#set ($V = $doc.addText("web_content/event-year-start-date", $trainingEventYearFormat.format($startDate)))
#end
#if ($endDate)
#set ($endCalendar = $calendarFactory.getCalendar($timeZone, $locale))
#set ($V = $endCalendar.setTime($endDate))
#set ($endDate = $endCalendar.time)
#set ($V = $doc.addText("web_content/event-day-end-date", $trainingEventDayFormat.format($endDate)))
#set ($V = $doc.addText("web_content/event-hour-end-date", $trainingEventHourFormat.format($endDate)))
#set ($V = $doc.addText("web_content/event-month-end-date", $trainingEventMonthFormat.format($endDate)))
#set ($V = $doc.addText("web_content/event-year-end-date", $trainingEventYearFormat.format($endDate)))
#end
#set ($V = $doc.addText('web_content/event-time-zone', $timeZone.getDisplayName($timeZone.inDaylightTime($startDate), 1, $locale)))
#end
#if ($doc.entryClassName == 'com.liferay.osb.model.WebinarEvent')
#set ($V = $doc.addText("web_content/region", 'Online'))
#set ($V = $doc.addText('web_content/event-summary', $doc.description))
#end
#if ($doc.entryClassName == 'com.liferay.osb.model.TrainingEvent')
#set ($trainingEvent = $trainingEventLocalService.getTrainingEvent($getterUtil.getLong($doc.entryClassPK)))
#set ($trainingEventLocale = $localeUtil.fromLanguageId($trainingEvent.getLanguageId()))
#set ($trainingEventLanguage = $trainingEventLocale.getDisplayLanguage($locale))
#if ($trainingEventLocale.getLanguage() != "en" && $trainingEventLocale.getLanguage() != "fr" && $trainingEventLocale.getLanguage() != "ja" && $trainingEventLocale.getLanguage() != "zh")
#set ($trainingEventLanguage = "*" + $trainingEventLanguage)
#end
#set ($V = $doc.addText("web_content/event-type", 'Training'))
#set ($V = $doc.addText('web_content/event-page-link', $doc.enrollmentURL))
#set ($V = $doc.addText("web_content/training-event-course-url", $trainingEvent.getTrainingCourse().getCourseURL()))
#set ($V = $doc.addText("web_content/training-event-location", $trainingEvent.getTrainingLocation().getName()))
#set ($V = $doc.addText("web_content/training-event-language", $trainingEventLanguage))
#end
#if ($doc.entryClassName == 'com.liferay.osb.model.WebinarEvent')
#set ($V = $doc.addText("web_content/event-type", 'Webinar'))
#set ($V = $doc.addText('web_content/event-page-link', '/web-events'))
#if ($doc.slidesFileName && $doc.slidesFileName != '')
#set ($V = $doc.addKeyword("webinar-slides-url", "${request.theme-display.path-main}/document_library/get_file?p_l_id=${request.theme-display.plid}&groupId=${scopeGroupId}&folderId=${doc.slidesFolderId}&name=${doc.slidesFileName}"))
#end
#end
#if ($doc.entryClassName == 'com.liferay.osb.model.TrainingEvent')
#set ($V = $doc.addText("web_content/subregion_name", $getterUtil.getString($doc.get('web_content/country'))))
#elseif ($doc.entryClassName == 'com.liferay.portlet.journal.model.JournalArticle')
#set ($country = $countryService.getCountry($getterUtil.getLong($doc.get('web_content/subregion'))))
#set ($V = $doc.addText("web_content/subregion_name", $getterUtil.getString($country.getName())))
#end
#end
#if ($hits.getLength() > 0)
#set ($docKeys = [])
#set ($docMap = {})
#foreach ($doc in $hits.docs)
#set ($field = $getterUtil.getString($doc.get("web_content/startDate")))
#if ($orderByCol == 'eventName')
#set ($field = $getterUtil.getString($doc.get("web_content/eventName")))
#end
#set ($key = $field.concat("-"))
#if ($orderByCol != 'startDate')
#set ($startDate = $getterUtil.getString($doc.get("web_content/startDate")))
#set ($key = $key.concat($startDate))
#set ($key = $key.concat("-"))
#end
#set ($entryClassPK = $getterUtil.getString($doc.get("entryClassPK")))
#set ($key = $key.concat($entryClassPK))
#set ($V = $docKeys.add($key))
#set ($V = $docMap.put($key, $doc))
#end
#set ($V = $collections.sort($docKeys))
#if (($orderByCol == 'eventName' && $orderByType == false) || ($orderByCol == 'startDate' && $orderByType == true))
#set ($V = $collections.reverse($docKeys))
#end
#set ($docs = $hits.getDocs())
#set ($docsIndex = 0)
#foreach ($docKey in $docKeys)
#set ($V = $listTool.set($docs, $docsIndex, $docMap.get($docKey)))
#set ($docsIndex = $docsIndex + 1)
#end
#set ($start = ($page - 1) * $delta)
#set ($end = $start + $delta)
#set ($length = $arrayUtil.getLength($docs))
#if ($end > $length)
#set ($end = $length)
#end
#set ($V = $hits.setDocs($arrayUtil.subset($docs, $start, $end)))
#end
{
"hits":$jsonFactory.serialize($hits),
"queryString":"${hits.query}",
"regions":$jsonFactory.serialize($regions)
}
#end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment