Skip to content

Instantly share code, notes, and snippets.

@evaldeslacasa
Created October 17, 2016 21:21
Show Gist options
  • Save evaldeslacasa/55f5ddf8658e83505aebf23a3f73f15b to your computer and use it in GitHub Desktop.
Save evaldeslacasa/55f5ddf8658e83505aebf23a3f73f15b to your computer and use it in GitHub Desktop.
AUI Script in edit_calendar_booking.jsp
<aui:script>
function <portlet:namespace />filterCalendarBookings(calendarBooking) {
return <%= calendarBookingId %> !== calendarBooking.calendarBookingId;
}
function <portlet:namespace />getSuggestionsContent() {
return document.<portlet:namespace />fm.<portlet:namespace />title.value + ' ' + window.<portlet:namespace />description.getHTML();
}
function <portlet:namespace />resolver(data) {
var A = AUI();
var answers = data.answers;
if (!answers.cancel) {
A.one('#<portlet:namespace />allFollowing').val(!!answers.allFollowing);
A.one('#<portlet:namespace />updateCalendarBookingInstance').val(!!answers.updateInstance);
submitForm(document.<portlet:namespace />fm);
}
}
Liferay.provide(
window,
'<portlet:namespace />updateCalendarBooking',
function() {
var A = AUI();
<c:if test="<%= invitable %>">
var calendarId = A.one('#<portlet:namespace />calendarId').val();
var childCalendarIds = A.Object.keys(Liferay.CalendarUtil.availableCalendars);
A.Array.remove(childCalendarIds, A.Array.indexOf(childCalendarIds, calendarId));
A.one('#<portlet:namespace />childCalendarIds').val(childCalendarIds.join(','));
</c:if>
Liferay.CalendarMessageUtil.promptSchedulerEventUpdate(
{
calendarName: '<%= HtmlUtil.escapeJS(calendar.getName(locale)) %>',
hasChild: <%= hasChildCalendarBookings %>,
masterBooking: <%= masterBooking %>,
recurring: <%= recurring %>,
resolver: <portlet:namespace />resolver
}
);
},
['liferay-calendar-message-util', 'json']
);
Liferay.Util.focusFormField(document.<portlet:namespace />fm.<portlet:namespace />title);
<%
String titleCurrentValue = ParamUtil.getString(request, "titleCurrentValue");
%>
<c:if test="<%= Validator.isNotNull(titleCurrentValue) && (calendarBooking == null || !Validator.equals(titleCurrentValue, calendarBooking.getTitle(locale))) %>">
document.<portlet:namespace />fm.<portlet:namespace />title.value = '<%= HtmlUtil.escapeJS(titleCurrentValue) %>';
document.<portlet:namespace />fm.<portlet:namespace />title_<%= themeDisplay.getLanguageId() %>.value = '<%= HtmlUtil.escapeJS(titleCurrentValue) %>';
</c:if>
</aui:script>
<aui:script use="liferay-calendar-interval-selector">
new Liferay.IntervalSelector(
{
containerId: 'meetingEventDate',
endDatePickerName: 'endTime',
endTimePickerName: 'endTimeTime',
namespace: '<portlet:namespace/>',
startDatePickerName: 'startTime',
startTimePickerName: 'startTimeTime',
submitButtonId: 'submit'
}
);
</aui:script>
<aui:script use="json,liferay-calendar-date-picker-util,liferay-calendar-list,liferay-calendar-recurrence-util,liferay-calendar-reminders,liferay-calendar-simple-menu">
var defaultCalendarId = <%= calendarId %>;
var scheduler = window.<portlet:namespace />scheduler;
var removeCalendarResource = function(calendarList, calendar, menu) {
calendarList.remove(calendar);
if (menu) {
menu.hide();
}
}
var syncCalendarsMap = function() {
Liferay.CalendarUtil.syncCalendarsMap(
[
window.<portlet:namespace />calendarListAccepted,
<c:if test="<%= calendarBooking != null %>">
window.<portlet:namespace />calendarListDeclined,
window.<portlet:namespace />calendarListMaybe,
</c:if>
window.<portlet:namespace />calendarListPending
]
);
A.each(
Liferay.CalendarUtil.availableCalendars,
function(item, index) {
item.set('disabled', true);
}
);
}
window.<portlet:namespace />toggler = new A.Toggler(
{
after: {
expandedChange: function(event) {
if (event.newVal) {
var activeView = scheduler.get('activeView');
activeView._fillHeight();
}
}
},
animated: true,
content: '#<portlet:namespace />schedulerContainer',
expanded: false,
header: '#<portlet:namespace />checkAvailability'
}
);
var calendarsMenu = {
items: [
{
caption: '<%= UnicodeLanguageUtil.get(pageContext, "check-availability") %>',
fn: function(event) {
var instance = this;
A.each(
Liferay.CalendarUtil.availableCalendars,
function(item, index) {
item.set('visible', false);
}
);
var calendarList = instance.get('host');
calendarList.activeItem.set('visible', true);
<portlet:namespace />toggler.expand();
instance.hide();
return false;
},
id: 'check-availability'
}
<c:if test="<%= invitable %>">
,{
caption: '<%= UnicodeLanguageUtil.get(pageContext, "remove") %>',
fn: function(event) {
var instance = this;
var calendarList = instance.get('host');
removeCalendarResource(calendarList, calendarList.activeItem, instance);
},
id: 'remove'
}
</c:if>
],
<c:if test="<%= invitable %>">
on: {
visibleChange: function(event) {
var instance = this;
if (event.newVal) {
var calendarList = instance.get('host');
var calendar = calendarList.activeItem;
var hiddenItems = [];
if (calendar.get('calendarId') === defaultCalendarId) {
hiddenItems.push('remove');
}
instance.set('hiddenItems', hiddenItems);
}
}
}
</c:if>
}
window.<portlet:namespace />calendarListPending = new Liferay.CalendarList(
{
after: {
calendarsChange: function(event) {
var instance = this;
A.one('#<portlet:namespace />pendingCounter').html(event.newVal.length);
syncCalendarsMap();
scheduler.load();
},
'scheduler-calendar:visibleChange': syncCalendarsMap
},
boundingBox: '#<portlet:namespace />calendarListPending',
calendars: <%= pendingCalendarsJSONArray %>,
scheduler: <portlet:namespace />scheduler,
simpleMenu: calendarsMenu,
strings: {
emptyMessage: '<liferay-ui:message key="no-pending-invites" />'
}
}
).render();
window.<portlet:namespace />calendarListAccepted = new Liferay.CalendarList(
{
after: {
calendarsChange: function(event) {
var instance = this;
A.one('#<portlet:namespace />acceptedCounter').html(event.newVal.length);
syncCalendarsMap();
scheduler.load();
},
'scheduler-calendar:visibleChange': syncCalendarsMap
},
boundingBox: '#<portlet:namespace />calendarListAccepted',
calendars: <%= acceptedCalendarsJSONArray %>,
scheduler: <portlet:namespace />scheduler,
simpleMenu: calendarsMenu,
strings: {
emptyMessage: '<liferay-ui:message key="no-accepted-invites" />'
}
}
).render();
<c:if test="<%= calendarBooking != null %>">
window.<portlet:namespace />calendarListDeclined = new Liferay.CalendarList(
{
after: {
calendarsChange: function(event) {
var instance = this;
A.one('#<portlet:namespace />declinedCounter').html(event.newVal.length);
syncCalendarsMap();
scheduler.load();
},
'scheduler-calendar:visibleChange': syncCalendarsMap
},
boundingBox: '#<portlet:namespace />calendarListDeclined',
calendars: <%= declinedCalendarsJSONArray %>,
scheduler: <portlet:namespace />scheduler,
simpleMenu: calendarsMenu,
strings: {
emptyMessage: '<liferay-ui:message key="no-declined-invites" />'
}
}
).render();
window.<portlet:namespace />calendarListMaybe = new Liferay.CalendarList(
{
after: {
calendarsChange: function(event) {
var instance = this;
A.one('#<portlet:namespace />maybeCounter').html(event.newVal.length);
syncCalendarsMap();
scheduler.load();
},
'scheduler-calendar:visibleChange': syncCalendarsMap
},
boundingBox: '#<portlet:namespace />calendarListMaybe',
calendars: <%= maybeCalendarsJSONArray %>,
scheduler: <portlet:namespace />scheduler,
simpleMenu: calendarsMenu,
strings: {
emptyMessage: '<liferay-ui:message key="no-outstanding-invites" />'
}
}
).render();
</c:if>
syncCalendarsMap();
var formNode = A.one(document.<portlet:namespace />fm);
window.<portlet:namespace />placeholderSchedulerEvent = new Liferay.SchedulerEvent(
{
after: {
endDateChange: function(event) {
Liferay.DatePickerUtil.syncUI(formNode, 'endTime', event.newVal);
},
startDateChange: function(event) {
Liferay.DatePickerUtil.syncUI(formNode, 'startTime', event.newVal);
}
},
borderColor: '#000',
borderStyle: 'dashed',
borderWidth: '2px',
color: '#F8F8F8',
content: '&nbsp;',
editingEvent: true,
endDate: Liferay.CalendarUtil.toLocalTime(new Date(<%= endTime %>)),
on: {
endDateChange: function(event) {
event.stopPropagation();
},
startDateChange: function(event) {
event.stopPropagation();
}
},
preventDateChange: true,
scheduler: scheduler,
startDate: Liferay.CalendarUtil.toLocalTime(new Date(<%= startTime %>))
}
);
Liferay.DatePickerUtil.linkToSchedulerEvent('#<portlet:namespace />endDateContainer', window.<portlet:namespace />placeholderSchedulerEvent, 'endTime');
Liferay.DatePickerUtil.linkToSchedulerEvent('#<portlet:namespace />startDateContainer', window.<portlet:namespace />placeholderSchedulerEvent, 'startTime');
scheduler.after(
'*:load',
function(event) {
scheduler.addEvents(window.<portlet:namespace />placeholderSchedulerEvent);
scheduler.syncEventsUI();
}
);
<c:if test="<%= invitable %>">
var manageableCalendars = {};
A.Array.each(
<%= CalendarUtil.toCalendarsJSONArray(themeDisplay, manageableCalendars) %>,
function(item, index) {
manageableCalendars[item.calendarId] = item;
}
);
A.one('#<portlet:namespace />calendarId').on(
'change',
function(event) {
var calendarId = parseInt(event.target.val(), 10);
var calendar = manageableCalendars[calendarId];
A.Array.each(
[
<portlet:namespace />calendarListAccepted,
<c:if test="<%= calendarBooking != null %>">
<portlet:namespace />calendarListDeclined, <portlet:namespace />calendarListMaybe,
</c:if>
<portlet:namespace />calendarListPending
],
function(calendarList) {
calendarList.remove(calendarList.getCalendar(calendarId));
calendarList.remove(calendarList.getCalendar(defaultCalendarId));
}
);
<portlet:namespace />calendarListPending.add(calendar);
defaultCalendarId = calendarId;
}
);
var inviteResourcesInput = A.one('#<portlet:namespace />inviteResource');
<liferay-portlet:resourceURL copyCurrentRenderParameters="<%= false %>" id="calendarResources" var="calendarResourcesURL"></liferay-portlet:resourceURL>
Liferay.CalendarUtil.createCalendarsAutoComplete(
'<%= calendarResourcesURL %>',
inviteResourcesInput,
function(event) {
var calendar = event.result.raw;
calendar.disabled = true;
<portlet:namespace />calendarListPending.add(calendar);
inviteResourcesInput.val('');
}
);
</c:if>
window.<portlet:namespace />reminders = new Liferay.Reminders(
{
portletNamespace: '<portlet:namespace />',
render: '#<portlet:namespace />reminders',
values: [
{
interval: <%= firstReminder %>,
type: '<%= HtmlUtil.escapeJS(firstReminderType) %>'
},
{
interval: <%= secondReminder %>,
type: '<%= HtmlUtil.escapeJS(secondReminderType) %>'
}
]
}
);
var allDayCheckbox = A.one('#<portlet:namespace />allDayCheckbox');
allDayCheckbox.after(
'click',
function() {
var endDateContainer = A.one('#<portlet:namespace />endDateContainer');
var startDateContainer = A.one('#<portlet:namespace />startDateContainer');
var checked = allDayCheckbox.get('checked');
if (checked) {
window.<portlet:namespace />placeholderSchedulerEvent.set('allDay', true);
}
else {
window.<portlet:namespace />placeholderSchedulerEvent.set('allDay', false);
endDateContainer.show();
}
endDateContainer.toggleClass('allday-class-active', checked);
startDateContainer.toggleClass('allday-class-active', checked);
scheduler.syncEventsUI();
}
);
scheduler.load();
</aui:script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment