Created
October 17, 2016 21:21
-
-
Save evaldeslacasa/55f5ddf8658e83505aebf23a3f73f15b to your computer and use it in GitHub Desktop.
AUI Script in edit_calendar_booking.jsp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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: ' ', | |
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