1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.calendar.web;
35
36 import fr.paris.lutece.plugins.calendar.business.Event;
37 import fr.paris.lutece.plugins.calendar.business.MultiAgenda;
38 import fr.paris.lutece.plugins.calendar.business.MultiAgendaEvent;
39 import fr.paris.lutece.plugins.calendar.service.CalendarPlugin;
40 import fr.paris.lutece.plugins.calendar.service.Utils;
41 import fr.paris.lutece.plugins.calendar.service.search.CalendarSearchService;
42 import fr.paris.lutece.portal.service.plugin.Plugin;
43 import fr.paris.lutece.portal.service.plugin.PluginService;
44 import fr.paris.lutece.portal.service.template.AppTemplateService;
45 import fr.paris.lutece.util.html.HtmlTemplate;
46
47 import java.util.Date;
48 import java.util.HashMap;
49 import java.util.List;
50 import java.util.Locale;
51
52 import javax.servlet.http.HttpServletRequest;
53
54
55
56
57
58 public class MonthEventList implements EventList
59 {
60 private static final String TEMPLATE_MONTH_EVENT_LIST = "skin/plugins/calendar/calendar_eventlist_month.html";
61 private static final String TEMPLATE_MONTH_EVENT_LIST_DAY = "skin/plugins/calendar/calendar_eventlist_month_day.html";
62 private static final String TEMPLATE_MONTH_EVENT_LIST_EVENT = "skin/plugins/calendar/calendar_eventlist_month_event.html";
63
64
65
66
67
68
69
70
71
72
73 public String getEventList( String strMonthDate, MultiAgenda agenda, Locale locale, HttpServletRequest request )
74 {
75 HashMap<String, Object> model = new HashMap<String, Object>( );
76 int nYear = Utils.getYear( strMonthDate );
77 int nMonth = Utils.getMonth( strMonthDate );
78 StringBuffer sbDays = new StringBuffer( );
79
80 for ( int nDay = 1; nDay < 32; nDay++ )
81 {
82 String strDate = Utils.getDate( nYear, nMonth, nDay );
83
84 if ( agenda.hasEvents( strDate ) )
85 {
86 sbDays.append( getDay( strDate, agenda, locale, request ) );
87 }
88 }
89
90 model.put( Constants.MARK_DAYS, sbDays.toString( ) );
91
92 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MONTH_EVENT_LIST, locale, model );
93
94 return template.getHtml( );
95 }
96
97
98
99
100
101
102
103
104
105 private String getDay( String strDate, MultiAgenda agenda, Locale locale, HttpServletRequest request )
106 {
107 HashMap<String, Object> dayModel = new HashMap<String, Object>( );
108 StringBuffer sbEvents = new StringBuffer( );
109 Date date = Utils.getDate( strDate );
110 Plugin plugin = PluginService.getPlugin( CalendarPlugin.PLUGIN_NAME );
111 List<Event> listIndexedEvents = CalendarSearchService.getInstance( ).getSearchResults( agenda.getAgendaIds( ),
112 null, Constants.EMPTY_STRING, date, date, plugin );
113 boolean bHasIndexedEvent = false;
114
115 for ( Event event : listIndexedEvents )
116 {
117 MultiAgendaEvent multiAgendaEvent = new MultiAgendaEvent( event, String.valueOf( event.getIdCalendar( ) ) );
118 HashMap<String, Object> eventModel = new HashMap<String, Object>( );
119 HtmlUtils.fillEventTemplate( eventModel, multiAgendaEvent, strDate );
120
121 HtmlTemplate tEvent = AppTemplateService.getTemplate( TEMPLATE_MONTH_EVENT_LIST_EVENT, locale, eventModel );
122 sbEvents.append( tEvent.getHtml( ) );
123 bHasIndexedEvent = true;
124 }
125
126 if ( bHasIndexedEvent )
127 {
128 dayModel.put( Constants.MARK_DAY, Utils.getDayLabel( strDate, locale ) );
129 dayModel.put( Constants.MARK_EVENTS, sbEvents.toString( ) );
130 HtmlTemplate tDay = AppTemplateService.getTemplate( TEMPLATE_MONTH_EVENT_LIST_DAY, locale, dayModel );
131
132 return tDay.getHtml( );
133 }
134
135 return Constants.EMPTY_STRING;
136 }
137 }