Version 5.0.0 beta 1

This commit is contained in:
Neo committed 2025-12-19 16:27:35 -08:00
1 parent 25ddeb65d6
commit 15c7beabc5
6736 files changed
+627902 -497943

No files matched your search

+10
View File
@@ -0,0 +1,10 @@
;(function($,_,undefined){"use strict";ips.controller.register('calendar.front.browse.main',{_ajaxObj:null,initialize:function(){this.on('click','[data-action="changeView"]',this.changeView);this.on(window,'historychange:calendarView',this.stateChange);this.setup();},setup(){ips.utils.history.replaceState({controller:'calendarView'},'calendarView',window.location.href);},changeView(e){e.preventDefault();const title=$(e.currentTarget).attr('title');const url=$(e.currentTarget).attr('href');ips.utils.history.pushState({controller:'calendarView'},'calendarView',url);document.title=title},stateChange(){const data=ips.utils.history.getState('calendarView')||{},url=window.location.href
if(data.controller!=='calendarView'){return;}
ips.utils.analytics.trackPageView(url);this._updateView(url)},_updateView(url){if(this._ajaxObj&&_.isFunction(this._ajaxObj.abort)){this._ajaxObj.abort();}
this._setLoading(true);this._ajaxObj=ips.getAjax()(url,{showLoading:true}).done(response=>{this.scope.html(response);$(document).trigger('contentChange',[this.scope]);}).always(()=>{this._setLoading(false);});},_setLoading(state){if(state){this.scope.animate({opacity:"0.6"},'fast');}else{this.scope.animate({opacity:"1"},'fast');}}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('calendar.front.browse.monthView',{_emptyEvent:"<li class='cEvents_event cEvents_empty' data-eventid='0'><span></span></a></li>",initialize:function(){this.setup();},setup:function(){this._alignEvents();},_alignEvents:function(){var days=this.scope.find('.cCalendar_date');var currentPositions=[];var self=this;_.each(days,function(day){var day=$(day);var dayNumber=day.find('.cCalendar_dayNumber').text();var weekStart=false;if(day.closest('td').is('tr > td:first-child')){weekStart=true;}
var events=day.find('.cEvents_ranged [data-eventID]');if(!events.length){currentPositions=[];return;}
var wrapper=$("<ul/>").addClass('cEvents');var spaces=0;if(currentPositions.length){var doneEvent=false;for(var i=0;i<currentPositions.length;i++){if(events.filter('[data-eventID="'+currentPositions[i]+'"]').length){wrapper.append(events.filter('[data-eventID="'+currentPositions[i]+'"]'));doneEvent=true;}else{if(!weekStart||doneEvent){wrapper.append(self._emptyEvent);spaces++;}}}}
var remainingEvents=day.find('.cEvents_ranged [data-eventID]');if(spaces&&remainingEvents.length){var availableSpaces=wrapper.find('[data-eventID="0"]');for(var i=0;i<=spaces;i++){if(remainingEvents[i]&&availableSpaces[i]){$(availableSpaces[i]).replaceWith($(remainingEvents[i]));}}
remainingEvents=day.find('.cEvents_ranged [data-eventID]');}
wrapper.append(remainingEvents);day.find('.cEvents_ranged > .cEvents').replaceWith(wrapper);currentPositions=[];_.each(day.find('.cEvents_ranged [data-eventID]'),function(event){var eventID=parseInt($(event).attr('data-eventID'));if(eventID===0){currentPositions.push('-');}else if(_.isNumber(eventID)&&!_.isNaN(eventID)){currentPositions.push(eventID);}});});}});}(jQuery,_));;
@@ -0,0 +1,67 @@
ips.templates.set("eventLoading",`
<li class='ipsData__item ipsData__item--loading'>
<div class="ipsData__image"></div>
<div class="ipsData__content">
<div class="ipsData__main">
<div class="ipsData__title"></div>
<div class="ipsData__desc"></div>
</div>
</div>
</li>
`);ips.templates.set("nearMe",`
<i-data>
<ul class='ipsData ipsData--grid ipsData--events-list ipsEventList ipsEventList--nearMe'>
<li class="ipsData__item ipsEventsNearMe__map"><div class='cEvents__skeleton cEvents__skeleton--map' id='map'></div></li>
{{{events}}}
</ul>
</i-data>
`);;
var PER_PAGE=16;;(function($,_,undefined){"use strict";ips.controller.register('calendar.front.overview.eventList',{initialize:function(){this.on('click','[data-action="loadMore"]',this.loadMore);this.on('click','[data-action="changeMonth"]',this.changeMonth);this.setup();},setup:function(){this._eventList=this.scope.find('[data-role="eventList"]');this._loadMore=this.scope.find('[data-action="loadMore"]');this._monthNav=this.scope.find('[data-role="monthNav"]');},loadMore:function(e){e.preventDefault();var placeholders=this.getPlaceholders();this._eventList.append(placeholders);this._loadMore.prop('disabled',true);var self=this;var current=this.getCurrentDate();var total=this.scope.find('[data-eventID]').length;var url=ips.getSetting('baseURL')+'?app=calendar&module=calendar&controller=view&view=overview&get=byMonth&m='+current.month+'&y='+current.year+'&offset='+total;ips.getAjax()(url).done(function(response){self._eventList.append(response.html);self.removePlaceholders();self.checkMoreButton(response.count);self._loadMore.prop('disabled',false);$(document).trigger('contentChange',[self.scope]);});},changeMonth:function(e){e.preventDefault();var placeholders=this.getPlaceholders(4);this._eventList.html(placeholders);this._loadMore.prop('disabled',true);this._monthNav.find('[data-action="changeMonth"]').removeClass('cEvents__monthNav__monthItem--active');$(e.currentTarget).addClass('cEvents__monthNav__monthItem--active');var self=this;var current=this.getCurrentDate();var url=ips.getSetting('baseURL')+'?app=calendar&module=calendar&controller=view&view=overview&get=byMonth&m='+current.month+'&y='+current.year+'&offset=0';ips.getAjax()(url).done(function(response){self._eventList.html(response.html);self.checkMoreButton(response.count);self._loadMore.prop('disabled',false);$(document).trigger('contentChange',[self.scope]);});},getPlaceholders:function(count){var events=[];if(_.isUndefined(count)){count=4;}
for(var i=0;i<count;i++){events.push(ips.templates.render('eventLoading'));}
return events.join('');},removePlaceholders:function(){this.scope.find('.ipsData__item--loading').remove();},checkMoreButton:function(count){if(_.isNumber(count)&&count<PER_PAGE){this.scope.find('[data-action="loadMore"]').attr('hidden',true);this.scope.find('[data-role="noMoreResults"]').removeAttr('hidden');}else{this.scope.find('[data-action="loadMore"]').removeAttr('hidden');this.scope.find('[data-role="noMoreResults"]').attr('hidden',true);}},getCurrentDate:function(){var current=this.scope.find('[data-role="monthNav"] .cEvents__monthNav__monthItem--active');return{month:current.attr('data-month'),year:current.attr('data-year')};}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('calendar.front.overview.nearMe',{useGoogleMaps:false,events:{},useGeolocation:false,initialize:function(){this.setup();this.on('change','input#useCurrentLocation',this.useCurrentLocation);},setup(){if(ips.utils.geolocation.getGeolocationIsAllowed()){this.scope.find('input[type="checkbox"]').attr('checked',true);this.useGeolocation=true;}
if('nearmeUseGoogle'in this.scope.data()){let apiKey=this.scope.data()['googlemapsApiKey'];if(!apiKey){}
this.useGoogleMaps=true;ips.ui.map.afterGoogleMapsLoaded(()=>this.setupGoogleMaps())}
else{$('head').append(`<link rel='stylesheet' type='text/css' media='all' href='https://api.mapbox.com/mapbox.js/v3.3.1/mapbox.css'>
<link href='https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css' rel='stylesheet' />
<link href='https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css' rel='stylesheet' />
<link rel='stylesheet' type='text/css' media='all' href='https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css' />`);window.ips.loader.get(['https://api.mapbox.com/mapbox.js/v3.3.1/mapbox.js']).then(()=>ips.loader.get(['https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js','https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js'])).then(()=>{if(this.useGeolocation){this.getEventsByLocation();}else{this.fetchEvents();}
this._mapReady=true;});}},googleMap:undefined,setupGoogleMaps:function(){if(this.useGeolocation){this.getEventsByLocation();}else{this.fetchEvents();}
window.ipsGoogleMapsCallback=undefined;this._mapReady=true;},useCurrentLocation:function(){if(this.useGoogleMaps){this.googleMap=false;}
if(this.scope.find('#useCurrentLocation').is(':checked')){this.getEventsByLocation();}else{ips.utils.geolocation.setGeolocationIsAllowed(ips.utils.geolocation.permissions.DENIED);this.fetchEvents();}},getEventsByLocation:function(){this.showPlaceholders();ips.utils.geolocation.getCurrentPosition().then(coords=>{var lat=coords.latitude;var long=coords.longitude;this.scope.find('[data-role="nearMeLink"]').attr('href',ips.getSetting('baseURL')+'?app=calendar&do=search&form_submitted=1&lat='+lat+'&lon='+long).attr('data-lat',lat).attr('data-long',long);this.fetchEvents(lat,long);}).catch(()=>{ips.ui.alert.show({type:'alert',message:ips.getString('event_your_current_location_sorry'),icon:'warn'});this.scope.find('#useCurrentLocation').closest('li').remove();this.fetchEvents();});},fetchEvents:function(lat,long){var self=this;this.showPlaceholders();ips.getAjax()(ips.getSetting('baseURL')+'?app=calendar&module=calendar&controller=view&view=overview&get=nearMe'+(lat&&long?'&lat='+lat+'&lon='+long:'')).done(function(response){self.scope.find('[data-role="locationEvents"]').html(response.content);self.setUpMap(response.lat,response.long);$(document).trigger('contentChange',[self.scope]);});},setUpMap:function(lat,long){var self=this;var mapDiv=this.scope.find('#map');if(!mapDiv.length){Debug.log("No map container");return;}
if(this.useGoogleMaps){lat=Number(lat);long=Number(long);if(!this.googleMap){const mapContainer=mapDiv.get(0);mapContainer.style.width='100%';mapContainer.style.height='400px';this.googleMap=new window.google.maps.Map(mapContainer,{zoom:4,center:{lat,lng:long}});}else{this.googleMap.setCenter({lat,lng:long});}
self.scope.find('[data-role="nearMeLink"]').attr('href',ips.getSetting('baseURL')+'?app=calendar&do=search&form_submitted=1&lat='+lat+'&lon='+long).attr('data-lat',lat).attr('data-long',long);if(this.googleMap){let markers;try{let _markers=JSON.parse(mapDiv.attr('data-markers'));let markers=[];for(let marker of Object.values(_markers)){markers.push({...marker,lat:Number(marker.lat),long:Number(marker.long)});}
for(let marker of Object.values(markers)){let mapMarker=new window.google.maps.Marker({position:{lat:marker.lat,lng:marker.long},map:this.googleMap,title:marker.title});}
if(Object.values(markers).length){const cb=(()=>{let bounds=this.googleMap.getBounds();if(!bounds){return window.setTimeout(cb,200);}
let firstMarker=null;let markerVisible=false;let markerBounds={latMax:null,latMin:null,lngMax:null,lngMin:null};for(let marker of Object.values(markers)){markerBounds.latMax=markerBounds.latMax===null?marker.lat:Math.max(markerBounds.latMax,marker.lat);markerBounds.latMin=markerBounds.latMin===null?marker.lat:Math.min(markerBounds.latMin,marker.lat);markerBounds.lngMax=markerBounds.lngMax===null?marker.long:Math.max(markerBounds.lngMax,marker.long);markerBounds.lngMin=markerBounds.lngMin===null?marker.long:Math.min(markerBounds.lngMin,marker.long);firstMarker=firstMarker||marker;if(bounds.contains({lat:marker.lat,lng:marker.long})){markerVisible=true;}}
if(!markerVisible&&firstMarker){let evtMidpoint={lat:((markerBounds.latMax+markerBounds.latMin)/2),lng:((markerBounds.lngMax+markerBounds.lngMin)/2)};let minDistance=null;let mostMiddleMarker=null;if(Object.values(markers).length>1){for(let marker of Object.values(markers)){let distance=this.getDistance(evtMidpoint.lat,marker.lat,evtMidpoint.lng,marker.long);if(minDistance===null||distance<minDistance){minDistance=distance;mostMiddleMarker={lat:marker.lat,lng:marker.long};}}}else{mostMiddleMarker={lat:firstMarker.lat,lng:firstMarker.long};}
this.googleMap.panTo(mostMiddleMarker);}}).bind(this);window.setTimeout(cb,0);}}catch(e){}}}else{L.mapbox.accessToken=ips.getSetting('mapApiKey');this._map=L.mapbox.map(mapDiv.get(0)).addLayer(L.mapbox.styleLayer('mapbox://styles/mapbox/streets-v11'));this._map.zoomControl=false;this._map.minZoom=2;this._map.dragging=false;this._map.zoomControl=false;var markersGroup=new L.featureGroup([]);var markers=$.parseJSON(mapDiv.attr('data-markers'));for(var id in markers){var marker=L.marker([Number(markers[id].lat),Number(markers[id].long)],{title:markers[id].title,draggable:false,eventId:parseInt(id)});markersGroup.addLayer(marker);marker.on('mouseover',_.bind(this._markerMouseOver,this));marker.on('mouseout',_.bind(this._markerMouseOut,this));}
markersGroup.addTo(this._map);this._map.fitBounds(markersGroup.getBounds(),{maxZoom:5});}},getDistance:function(lat1,lat2,lng1,lng2){lng1=lng1*Math.PI/180;lng2=lng2*Math.PI/180;lat1=lat1*Math.PI/180;lat2=lat2*Math.PI/180;let dlng=lng2-lng1;let dlat=lat2-lat1;let a=Math.pow(Math.sin(dlat/2),2)
+Math.cos(lat1)*Math.cos(lat2)*Math.pow(Math.sin(dlng/2),2);let c=Math.asin(Math.sqrt(a));return c;},_markerMouseOver:function(e){var eventId=e.target.options.eventId;this.scope.find('[data-eventid]').stop(false,true);this.scope.find('[data-eventid]:not([data-eventid="'+eventId+'"])').animate({opacity:0.4},'fast');},_markerMouseOut:function(e){this.scope.find('[data-eventid]').stop(false,true);this.scope.find('[data-eventid]').animate({opacity:1},'fast');},showPlaceholders:function(count){var events=[];for(var i=0;i<6;i++){events.push(ips.templates.render('eventLoading'));}
this.scope.find('[data-role="locationEvents"]').removeClass('ipsJS_hide').html(ips.templates.render('nearMe',{events:events.join('')}));}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('calendar.front.overview.search',{initialize(){this.on('click','[data-action="useMyLocation"]',this.useMyLocation);this.on('click','[data-action="cancelLocation"]',this.cancelLocation);this.on('submit',this.doSearch);this.on(document,'click','[data-action="backToOverview"]',this.backToOverview);this.on(document,'click','[data-action="loadMoreSearch"]',this.loadMore);this.on(document,'menuItemSelected','#elSortMenu',this.changeSort);this.on(document,'click','[data-action="moreNearMe"]',this.moreNearMe);this.on(document,'click','[data-action="moreExhibitions"]',this.moreExhibitions);this.on(window,'historychange:calendarSearch',this.stateChange);this.setup();},setup(){this._gotCoords=false;this._offset=0;this._limit=20;this._currentSort=$('body').find('#elSortMenu_menu .ipsMenu_itemChecked').attr('data-ipsMenuValue');this._baseURL=this.scope.attr('action');this._initialURL=window.location.href;this._cancelledLookup=false;this._searchBox=this.scope.find('input[name="location"]');this._previousValue=this._searchBox.val();this._originalPlaceholder=this.scope.attr('data-placeholder');this._locationLink=this.scope.find('[data-action="useMyLocation"]');this._cancelLocationLink=this.scope.find('[data-action="cancelLocation"]');this._page=this.scope.closest('[data-role="eventsPage"]');this._resultsContainer=$('body').find('[data-role="searchResults"]');this._noResults=$('body').find('[data-role="noSearchResults"]');this._loadMore=$('body').find('[data-action="loadMoreSearch"]');this._noMore=$('body').find('[data-role="noMoreSearchResults"]');this._map=null;this._mapContainer=$('body').find('[data-role="searchResultsMap"]');this._markers={};this.getInitialLocation();if(ips.getSetting('mapProvider')==='google'){this.setupGoogle();}else if(ips.getSetting('mapProvider')==='mapbox'){this.setupMapbox();}else{this._mapContainer.hide();}},setupGoogle(){this._mapReady=true;Debug.log(this._resultsContainer.find('[data-eventid]'));Debug.log(this._mapContainer.attr('data-markers'));if(this._resultsContainer.find('[data-eventid]').length&&this._mapContainer.attr('data-markers')){Debug.log('here');try{var markers=JSON.parse(this._mapContainer.attr('data-markers'));Debug.log(markers);this._updateGoogleMap(markers);}catch(err){Debug.log("Invalid marker JSON");Debug.log(err);}}},setupMapbox(){$('head').append`
<link rel='stylesheet' type='text/css' media='all' href='https://api.mapbox.com/mapbox.js/v3.3.1/mapbox.css'>
<link href='https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.css' rel='stylesheet' />
<link href='https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/MarkerCluster.Default.css' rel='stylesheet' />
<link rel='stylesheet' type='text/css' media='all' href='https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/leaflet.fullscreen.css' />`;ips.loader.get(['https://api.mapbox.com/mapbox.js/v3.3.1/mapbox.js']).then(()=>{ips.loader.get(['https://api.mapbox.com/mapbox.js/plugins/leaflet-markercluster/v1.0.0/leaflet.markercluster.js','https://api.mapbox.com/mapbox.js/plugins/leaflet-fullscreen/v1.0.1/Leaflet.fullscreen.min.js']).then(()=>{this._mapReady=true;if(this._resultsContainer.find('[data-eventid]').length&&this._mapContainer.attr('data-markers')){try{const markers=JSON.parse(this._mapContainer.attr('data-markers'));this._updateMapboxMap(markers);}catch(err){Debug.log("Invalid marker JSON");Debug.log(err);}}});});},getInitialLocation(){if(ips.utils.geolocation.getGeolocationIsAllowed()){ips.utils.geolocation.getCurrentPosition().then(coords=>{this.setCoords(coords.latitude,coords.longitude);})
this.setSearchToLocation();this._locationLink.attr('hidden',true);this._cancelLocationLink.removeAttr('hidden');}},setCoords(lat,long){this.scope.prepend("<input type='hidden' name='lat' value='"+lat+"'>");this.scope.prepend("<input type='hidden' name='lon' value='"+long+"'>");this._gotCoords=true;},clearCoords(){this.scope.find('input[name="lat"]').remove();this.scope.find('input[name="lon"]').remove();this._gotCoords=false;},moreNearMe(e){e.preventDefault();var lat=$(e.currentTarget).attr('data-lat');var long=$(e.currentTarget).attr('data-long');var self=this;this.setSearchToLocation();this.scope.find('[name="date[start]"]').val('');this.scope.find('[name="date[end]"]').val('');this.scope.find('[name="show"]').val('regular');$("html, body").animate({scrollTop:"300px"},function(){self.doSearch();});},moreExhibitions(e){e.preventDefault();this.cancelLocation();this.scope.find('[name="date[start]"]').val('');this.scope.find('[name="date[end]"]').val('');this.scope.find('[name="show"]').val('exhibitions');$("html, body").animate({scrollTop:"300px"},()=>{this.doSearch();});},doSearch(e){e?.preventDefault()
const url=this._getUrlFromData();ips.utils.history.replaceState({controller:'calendar.front.overview.search',url},'calendarSearch',url);},getPlaceholders(count){let events='';count=typeof count==='number'?10:count;for(let i=0;i<count;i++){events+=ips.templates.render('eventLoading');}
return events;},stateChange(){if(!('calendarSearch'in ips.utils.history.getState())&&this._initialURL!==window.location.href){return;}
const state=ips.utils.history.getState('calendarSearch')
if(this._initialURL===state?.url){this.hideResults();}else if(this._initialURL===window.location.href&&state?.url===undefined){this._loadResults(this._getUrlFromData(this._initialData));}else{this._loadResults(state?.url);}},changeSort(e,data){e.preventDefault();this._currentSort=data.selectedItemID;const title=data.menuElem.find('[data-ipsMenuValue="'+this._currentSort+'"]').text();$('body').find('[data-role="searchOrder"]').text(title);this.doSearch();},_getUrlFromData(){const formData=this.scope.serializeArray();const params=[];_.each(formData,function(item){if($.trim(item.value)!==''){params.push(item.name+"="+encodeURIComponent(item.value));}});params.push("sortBy="+this._currentSort);if(this._baseURL.match(/\?/)){if(!this._baseURL.endsWith('?')){this._baseURL+='&';}}else{this._baseURL+='?';}
return this._baseURL+params.join('&');},async _loadResults(url){if(this._page.length){this._page.find('[data-role="eventsOverview"]').hide();this._page.find('[data-role="searchResultsWrapper"]').show();}
this._resultsContainer.removeClass('ipsHide').html(this.getPlaceholders(6));if(ips.getSetting('mapProvider')!=='none'){this._mapContainer.addClass('cEvents__searchMap--loading').show();}
this._currentUrl=url;const response=await ips.fetch(url);if(response.count){this._resultsContainer.html(response.content);this._noResults.addClass('ipsHide');this._updateMap(_.extend({},this._markers,response.markers));if(response.totalCount>(response.count+this._offset)){this._loadMore.show();this._noMore.hide();}else{this._loadMore.hide();this._noMore.hide();}}else{this._resultsContainer.html('').addClass('ipsHide');this._noResults.removeClass('ipsHide');this._loadMore.hide();this._noMore.hide();this._mapContainer.hide();}
if(response.virtual){this._mapContainer.hide();}
$(document).trigger('contentChange',[this._resultsContainer]);},_updateMap(markers){if(ips.getSetting('mapProvider')==='google'){this._updateGoogleMap(markers);}else if(ips.getSetting('mapProvider')==='mapbox'){this._updateMapboxMap(markers);}else{this._mapContainer.hide();}},_updateGoogleMap(markers){if(!this._map){this._map=new window.google.maps.Map(document.querySelector('[data-role="searchResultsMap"]'));this._mapMarkers=[];}
this._mapContainer.removeClass('cEvents__searchMap--loading');if(this._mapMarkers.length){for(let marker of Object.values(this._mapMarkers)){marker.setMap(null);}
this._mapMarkers=[];}
const bounds=new google.maps.LatLngBounds();for(let marker of Object.values(markers)){let mapMarker=new window.google.maps.Marker({position:{lat:marker.lat,lng:marker.long},map:this._map,title:marker.title});this._mapMarkers.push(mapMarker);const coords=new google.maps.LatLng(marker.lat,marker.long);if(!(bounds.contains(coords))){bounds.extend(coords);}}
if(this._mapMarkers.length===1){this._map.setZoom(15);this._map.setCenter(bounds.getCenter());}else{this._map.fitBounds(bounds);}
this._mapContainer.show();},_updateMapboxMap(markers){if(!this._map){L.mapbox.accessToken=ips.getSetting('mapApiKey');this._map=L.mapbox.map(this._mapContainer.get(0)).addLayer(L.mapbox.styleLayer('mapbox://styles/mapbox/streets-v11'));this._map.zoomControl=false;this._map.minZoom=2;this._map.dragging=false;this._map.zoomControl=false;this._markersGroup=new L.featureGroup([]);this._markersGroup.addTo(this._map);}
this._mapContainer.removeClass('cEvents__searchMap--loading');this._markersGroup.clearLayers();for(let id in markers){const marker=L.marker([markers[id].lat,markers[id].long],{title:markers[id].title,draggable:false,eventId:parseInt(id)});this._markersGroup.addLayer(marker);marker.on('click',_.bind(this._markerClick,this));}
this._mapContainer.show();this._map.fitBounds(this._markersGroup.getBounds(),{maxZoom:5});},_markerClick(e){const targetEvent=e.target.options.eventId;const eventBlock=this._resultsContainer.find('[data-eventId="'+targetEvent+'"]');const topPos=eventBlock.offset().top;$('html, body').animate({scrollTop:topPos},function(){eventBlock.css({transform:'scale(1.1)'});setTimeout(function(){eventBlock.css({transform:'scale(1)'});},2000);});},async loadMore(e){e.preventDefault();const placeholders=this.getPlaceholders(2);this._resultsContainer.append(placeholders);this._loadMore.prop('disabled',true);const currentCount=this._resultsContainer.find('[data-eventid]').length;const response=await ips.fetch(this._currentUrl+"&offset="+currentCount+"&limit="+this._limit);this._resultsContainer.find('.ipsData__item--loading').remove();this._resultsContainer.append(response.content);this._updateMap(response.markers);this._loadMore.prop('disabled',false);if(this._resultsContainer.find('[data-eventid]').length>=response.totalCount){this._loadMore.hide();this._noMore.show();}else{this._loadMore.show();this._noMore.hide();}
$(document).trigger('contentChange',[this._resultsContainer]);},cancelLocation(e){e?.preventDefault()
ips.utils.geolocation.setGeolocationIsAllowed(ips.utils.geolocation.permissions.DENIED);this._cancelledLookup=true;this._searchBox.val(this._previousValue).attr('placeholder',this._originalPlaceholder).prop('disabled',false).removeClass('ipsField_loading');this._locationLink.removeAttr('hidden');this._cancelLocationLink.attr('hidden',true);this.scope.find('[name="searchNearLocation"]').remove();},useMyLocation(e){e.preventDefault();this._cancelledLookup=false;this._searchBox.val('').attr('placeholder',ips.getString('event_finding_location')).prop('disabled',true).addClass('ipsField_loading');this._locationLink.attr('hidden',true);this._cancelLocationLink.removeAttr('hidden');const afterCoords=()=>{if(this._cancelledLookup){this._cancelledLookup=false;return;}
this.setSearchToLocation();this._cancelledLookup=false;};if(this._gotCoords){afterCoords()}else{ips.utils.geolocation.getCurrentPosition().then(coords=>{this.setCoords(coords.latitude,coords.longitude);this.setSearchToLocation();});}},setSearchToLocation(){this._searchBox.val('').attr('placeholder',ips.getString('event_your_current_location')).prop('disabled',true).removeClass('ipsField_loading');this.scope.prepend("<input type='hidden' name='searchNearLocation' value='1'>");},backToOverview(e){if(!this._page.length){return;}
e.preventDefault();ips.utils.history.replaceState({controller:'calendar.front.overview.search',url:this._initialURL},'calendarSearch',this._initialURL);},hideResults(){this._page.find('[data-role="eventsOverview"]').show();this._page.find('[data-role="searchResultsWrapper"]').hide();}});}(jQuery,_));;
+31
View File
@@ -0,0 +1,31 @@
;(function($,_,undefined){"use strict";ips.controller.register('calendar.front.submit.dates',{initialize:function(){this._hasFocusedEventEnd=false;this.on('click','[data-action="updateTimezone"]',this.updateTimezone);this.on('focus','input[name="repeat_end_occurrences"]',function(){$('#event_repeat_end_afterx').prop('checked',true);});this.on('focus','input[name="repeat_end_date"]',function(){$('#event_repeat_end_ondate').prop('checked',true);});this.on('change','input, select',this.checkForSummaryChange);this.on('change','#check_single_day, #check_all_day',this.toggleFields);this.on('change','#check_no_end_time',this.toggleEndtimeFields);this.on('click','#elRecurRemove',this.disableRecurring);this.on('change','input[name="event_dates[start_date]"]',this.setEndDateOnStartChange);this.on('change','#event_end_date',this.setHasFocusedEventOnEndChange);this.on('click','[data-action="updateRepeat"]',this.finishRepeat);this._checkAndSetEventEndState();this.evaluateRecurringOptions();this.setup();},_checkAndSetEventEndState:function(){var eventEndDate=$("#event_end_date");var date=eventEndDate.val();if(!this._hasFocusedEventEnd&&this._isValidEndDate(date)){this._hasFocusedEventEnd=true;}},_isValidEndDate:function(date){var tempDate=new Date(date);if(!isNaN(tempDate.getDate())){return true;}
return false;},setHasFocusedEventOnEndChange:function(){this._hasFocusedEventEnd=true;this.evaluateRecurringOptions();},setEndDateOnStartChange:function(){var isSameDay=$("#check_single_day").is(":checked");var eventStartDate=$('input[name="event_dates[start_date]');var eventEndDate=$("#event_end_date");if(!isSameDay&&!this._hasFocusedEventEnd){if(ips.utils.time.supportsHTMLDate()){eventEndDate.val(eventStartDate.val());}}},evaluateRecurringOptions:function(){var startDate=$("#event_start_date").val();var endDate=$("#event_end_date").val();if(!this._isValidEndDate(endDate)||$('#check_single_day').prop('checked')){if(!$('#elRepeatRow_shown').is(':visible')){$('#elRepeatRow_hidden').show();}
$('#elSelect_event_repeats').find('option').prop('disabled',false);if($('#elRepeatOn_back').length){$('#elRepeatOn_back').attr('id','elRepeatOn');}
if($('#elSelect_event_repeats').val()=='weekly'){$('#elRepeatOn').show();}
this._updateSummary();return;}
startDate=new Date(startDate);endDate=new Date(endDate);var dayDifference=parseInt((endDate.getTime()-startDate.getTime())/(24*3600*1000));var currentlySelected=$('#elSelect_event_repeats').val();if(dayDifference>1){$('#elSelect_event_repeats').find('option[value="daily"]').prop('disabled',true);$('#elRepeatOn').hide();$('#elRepeatOn').attr('id','elRepeatOn_back');if(!currentlySelected||currentlySelected=='daily'){$('#elSelect_event_repeats').find('option[value="daily"]').prop('selected',false);$('#elSelect_event_repeats').find('option[value="weekly"]').prop('selected',true);currentlySelected='weekly';}}else{$('#elSelect_event_repeats').find('option[value="daily"]').prop('disabled',false);if($('#elRepeatOn_back').length){$('#elRepeatOn_back').attr('id','elRepeatOn');}
if($('#elSelect_event_repeats').val()=='weekly'){$('#elRepeatOn').show();}}
if(dayDifference>7){$('#elSelect_event_repeats').find('option[value="weekly"]').prop('disabled',true);if(!currentlySelected||currentlySelected=='weekly'){$('#elSelect_event_repeats').find('option[value="weekly"]').prop('selected',false);$('#elSelect_event_repeats').find('option[value="monthly"]').prop('selected',true);currentlySelected='monthly';}}else{$('#elSelect_event_repeats').find('option[value="weekly"]').prop('disabled',false);}
if((endDate.getMonth()-startDate.getMonth()+(12*(endDate.getFullYear()-startDate.getFullYear()))>1)||(endDate.getMonth()-startDate.getMonth()+(12*(endDate.getFullYear()-startDate.getFullYear()))==1&&endDate.getDate()>startDate.getDate())){$('#elSelect_event_repeats').find('option[value="monthly"]').prop('disabled',true);if(!currentlySelected||currentlySelected=='monthly'){$('#elSelect_event_repeats').find('option[value="monthly"]').prop('selected',false);$('#elSelect_event_repeats').find('option[value="yearly"]').prop('selected',true);currentlySelected='yearly';}}else{$('#elSelect_event_repeats').find('option[value="monthly"]').prop('disabled',false);}
if(dayDifference>365){$('#elSelect_event_repeats').find('option[value="yearly"]').prop('selected',false);this.disableRecurring();$('#elRepeatRow_hidden').hide();}
else
{$('#elRepeatRow_hidden').show();}
this._updateSummary();},finishRepeat:function(){this._updateSummary();$('#elRecurEdit_menu').trigger('closeMenu');},setup:function(){this._updateSummary();this.toggleFields();this.updateTimezone();},toggleEndtimeFields:function(e){if(this.scope.find('#check_no_end_time').is(':checked')){this.scope.find('#end_time').prop('disabled',true);}
else
{this.scope.find('#end_time').prop('disabled',false);}},toggleFields:function(e){this.toggleEndtimeFields();var singleDay=this.scope.find('#check_single_day');var allDay=this.scope.find('#check_all_day');var self=this;var toggles={start_time_wrap:true,end_time_wrap:true,event_end_date_wrap:true,elDateGrid_arrow:true,elDateGrid_end:true,end_date_controls:true};if(singleDay.is(':checked')&&!allDay.is(':checked')){toggles.event_end_date_wrap=false;}else if(singleDay.is(':checked')&&allDay.is(':checked')){toggles.elDateGrid_arrow=false;toggles.elDateGrid_end=false;toggles.start_time_wrap=false;}else if(!singleDay.is(':checked')&&allDay.is(':checked')){toggles.start_time_wrap=false;toggles.end_time_wrap=false;toggles.end_date_controls=false;}
else
{toggles.end_date_controls=false;this.scope.find('#end_time').prop('disabled',false);}
_.each(toggles,function(val,key){self.scope.find('#'+key).toggle(val);});},checkForSummaryChange:function(e){if($(e.currentTarget).attr('name').startsWith('event_dates[')){this._updateSummary();}},updateTimezone:function(e){if(e){e.preventDefault();}
this.scope.find('[data-role="timezone_display"]').text($('#event_timezone option:selected').data('abbreviated')).trigger('closeMenu');},disableRecurring:function(e){if(e){e.preventDefault();}
this.scope.find('#elRepeatCb').prop('checked',false);this._updateSummary();},finishRepeatConfiguration:function(e,data){e.preventDefault();this.scope.find('[data-role="recur_summary_final"]').text(this.scope.find('[data-role="recur_summary"]').text());this.scope.find('#elRecurEdit').trigger('closeMenu');},_updateSummary:function(){var summary=this.scope.find('[data-role="recurringSummary"]');if(this.scope.find('#elRepeatCb').is(':checked')){summary.text(this._getSummary());this.scope.find('#elRepeatRow_hidden').hide();this.scope.find('#elRepeatRow_shown').show();}else{summary.html("<em class='i-color_soft'>"+ips.getString('doesnt_repeat')+"</em>");this.scope.find('#elRepeatRow_hidden').show();this.scope.find('#elRepeatRow_shown').hide();}
this.scope.find('[data-role="dateSummary"]').html(this._dateSummary());},_dateSummary:function(){var startDate=ips.utils.time.getDateFromInput(this.scope.find('input[name="event_dates[start_date]"]'));var singleDay=this.scope.find('#check_single_day');var allDay=this.scope.find('#check_all_day');if(!ips.utils.time.isValidDateObj(startDate)||startDate.getFullYear()<1900){return'';}
ips.utils.time.removeTimezone(startDate);var startDateString=ips.utils.time.localeDateString(startDate,{weekday:'short',month:'short',day:'numeric',year:'numeric',timeZone:'UTC'});var startTime=this._getTime(this.scope.find('input[name="event_dates[start_time]"]').val());var endTime=this._getTime(this.scope.find('input[name="event_dates[end_time]"]').val());var endDate=ips.utils.time.getDateFromInput(this.scope.find('input[name="event_dates[end_date]"]'));var endDateString='';if(!singleDay.is(':checked')&&ips.utils.time.isValidDateObj(endDate)){ips.utils.time.removeTimezone(endDate);endDateString=ips.utils.time.localeDateString(endDate,{weekday:'short',month:'short',day:'numeric',year:'numeric',timeZone:'UTC'});}
var finalString='';if(singleDay.is(':checked')&&!allDay.is(':checked')){if(this.scope.find('#check_no_end_time').is(':checked')){finalString=ips.getString('single_not_allday_noendtime',{startDate:startDateString,startTime:startTime});}
else
{finalString=ips.getString('single_not_allday',{startDate:startDateString,startTime:startTime,endTime:endTime});}}else if((!singleDay.is(':checked')&&!allDay.is(':checked'))&&endDateString&&startTime&&endTime){finalString=ips.getString('not_single_not_allday',{startDate:startDateString,endDate:endDateString,startTime:startTime,endTime:endTime});}else if(!singleDay.is(':checked')&&allDay.is(':checked')&&endDateString){finalString=ips.getString('not_single_allday',{startDate:startDateString,endDate:endDateString});}else{finalString=ips.getString('single_allday',{startDate:startDateString});}
return finalString;},_getTime:function(time){if(!time){return"<em class='i-color_soft i-font-weight_normal i-opacity_4'>"+ips.getString('select_time')+"</em>";}
var date=new Date('1970-01-01T'+time+'Z');var time=date.toLocaleTimeString($('html').attr('lang'),{hour:'2-digit',minute:'2-digit',timeZone:'UTC'});return time;},_getSummary:function(){var type=this.scope.find('#elSelect_event_repeats').val();var intervalString='';var endString='';switch(type){case'daily':case'monthly':case'yearly':intervalString=this._buildString(type);break;case'weekly':intervalString=this._buildWeekly();break;}
if(this.scope.find('#event_repeat_end_afterx').is(':checked')){var occurrences=parseInt(this.scope.find('input[name="event_dates[repeat_end_occurrences]"]').val());if(_.isNumber(occurrences)&&!_.isNaN(occurrences)){endString=ips.pluralize(ips.getString('x_times'),occurrences);}}else if(this.scope.find('#event_repeat_end_ondate').is(':checked')){var dateObj=ips.utils.time.getDateFromInput(this.scope.find('input[name="event_dates[repeat_end_date]"]'));if(ips.utils.time.isValidDateObj(dateObj)&&dateObj.getFullYear()>1900){ips.utils.time.removeTimezone(dateObj);endString=ips.getString('until',{date:ips.utils.time.localeDateString(dateObj,{weekday:'short',month:'short',day:'numeric',year:'numeric'})});}}
if(endString){return ips.getString('with_end',{interval:intervalString,endAfter:endString});}else{return intervalString;}},_buildString:function(type){var val=parseInt(this.scope.find('#elSelect_event_repeat_freq').val())||1;return ips.pluralize(ips.getString('every_x',{period:ips.pluralize(ips.getString('x_'+type),val)}),val);},_buildWeekly:function(){var selectedDays=this.scope.find('[data-iCal]:checked');var val=parseInt(this.scope.find('#elSelect_event_repeat_freq').val())||1;var weekString='';weekString=ips.pluralize(ips.getString('x_weekly'),val);if(!selectedDays.length){return weekString;}
var fullDays=_.map(selectedDays,function(day,key){return ips.getString($(day).attr('data-iCal'));});var dayString='';if(fullDays.length===1){dayString=ips.getString('one_day',{first:fullDays[0]});}else{dayString=ips.getString('multiple_day',{days:fullDays.slice(0,-1).join(', '),last:fullDays[fullDays.length-1]});}
return ips.getString('week_string',{week:weekString,days:dayString});}});}(jQuery,_));;
+4
View File
@@ -0,0 +1,4 @@
;(function($,_,undefined){"use strict";ips.controller.register('calendar.front.venue.main',{_ajaxObj:null,initialize(){this.on('click','[data-action="changeView"]',this.changeView);this.on(window,'historychange:venueView',this.stateChange);this.setup();},setup(){ips.utils.history.pushState({controller:'venueView'},'venueView',window.location.href);},changeView(e){e.preventDefault();ips.utils.history.pushState({controller:'venueView'},'venueView',$(e.currentTarget).attr('href'));document.title=$(e.currentTarget).attr('title');},stateChange(){const data=ips.utils.history.getState('venueView')||{},url=window.location.href
if(data.controller!=='venueView'){return;}
ips.utils.analytics.trackPageView(url);this._updateView(url)},_updateView(url){if(this._ajaxObj&&_.isFunction(this._ajaxObj.abort)){this._ajaxObj.abort();}
this._setLoading(true);this._ajaxObj=ips.getAjax()(url,{showLoading:true}).done(response=>{console.log(response);this.scope.html(response);$(document).trigger('contentChange',[self.scope]);}).always(()=>{this._setLoading(false);});},_setLoading(state){this.scope.animate({opacity:state?"0.6":"1"},"fast");}});}(jQuery,_));;
+4
View File
@@ -0,0 +1,4 @@
;(function($,_,undefined){"use strict";ips.controller.register('calendar.front.view.reminderButton',{initialize:function(){this.setup();this.on(document,'reminderItem',this.reminderItemChange);},setup:function(){this._id=this.scope.attr('data-reminderID');this._button=this.scope.find('[data-role="reminderButton"]');},reminderItemChange:function(e,data){this._reloadButton();},_reloadButton:function(){this._button.addClass('i-opacity_3');var self=this;var pos=ips.utils.position.getElemPosition(this._button);var dims=ips.utils.position.getElemDims(this._button);this.scope.append(ips.templates.render('calendar.reminder.loading'));this.scope.css({position:'relative'}).find('.ipsLoading').css({width:dims.outerWidth+'px',height:dims.outerHeight+'px',top:"0",left:"0",position:'absolute',zIndex:ips.ui.zIndex()});ips.getAjax()(ips.getSetting('baseURL')+'index.php?app=calendar&module=calendar&controller=event&do=reminderButton',{data:_.extend({id:this._id},(this.scope.attr('data-buttonType'))?{button_type:this.scope.attr('data-buttonType')}:{})}).done(function(response){self.scope.html(response);$(document).trigger('contentChange',[self.scope]);}).fail(function(){self._button.removeClass('i-opacity_3');}).always(function(){self.scope.find('.ipsLoading').remove();});}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('calendar.front.view.reminderForm',{initialize:function(){this.on('submit',this.submitForm);this.on('click','[data-action="removereminder"]',this.removereminder);this.setup();},setup:function(){},removereminder:function(e){e.preventDefault();this._doRemindAction($(e.currentTarget).attr('href'),{},true);},submitForm:function(e){e.preventDefault();this._doRemindAction(this.scope.attr('action'),this.scope.serialize(),false);},_doRemindAction:function(url,data,removereminder){var self=this;var dims=ips.utils.position.getElemDims(this.scope.parent('div'));this.scope.hide().parent('div').css({width:dims.outerWidth+'px',height:dims.outerHeight+'px'}).addClass('ipsLoading');ips.getAjax()(url,{data:data,type:'post'}).done(function(response,status,jqXHR){if(jqXHR.getAllResponseHeaders().indexOf('X-IPS-FormError: true')!==-1||jqXHR.getAllResponseHeaders().indexOf('X-IPS-FormNoSubmit: true')!==-1||jqXHR.getAllResponseHeaders().indexOf('x-ips-formerror: true')!==-1||jqXHR.getAllResponseHeaders().indexOf('x-ips-formnosubmit: true')!==-1){self.scope.show().html(response).parent('div').removeClass('ipsLoading').css({width:'auto',height:'auto'});}else{self.trigger('reminderItem');if(removereminder){ips.ui.flashMsg.show(ips.getString('event_reminder_removed'));}
else{ips.ui.flashMsg.show(ips.getString('event_reminder_added'));}
self.scope.parents('.ipsHovercard').remove();}}).fail(function(jqXHR,textStatus,errorThrown){window.location=url;}).always(function(){});}});}(jQuery,_));;