1 package org.jahia.views.engines.datepicker.actions; 2 3 import java.io.IOException ; 4 import java.util.Date ; 5 import java.text.DateFormat ; 6 import java.util.Properties ; 7 import java.util.Vector ; 8 9 import javax.servlet.ServletException ; 10 import javax.servlet.http.HttpServletRequest ; 11 import javax.servlet.http.HttpServletResponse ; 12 13 import org.apache.struts.action.ActionForm; 14 import org.apache.struts.action.ActionForward; 15 import org.apache.struts.action.ActionMapping; 16 import org.apache.struts.action.ActionMessage; 17 import org.apache.struts.action.ActionMessages; 18 19 import org.jahia.exceptions.JahiaException; 20 import org.jahia.views.engines.JahiaEngineButtonsHelper; 21 import org.jahia.views.engines.JahiaEngineCommonData; 22 import org.jahia.views.engines.datepicker.DatePicker; 23 import org.jahia.views.engines.datepicker.DatePickerData; 24 import org.jahia.views.engines.datepicker.DatePickerEvent; 25 26 30 public class DatePickerAction extends org.apache.struts.actions.DispatchAction { 31 32 private static final String ENGINE_TITLE = "Date Picker"; 33 public static final String DATE_EVENT_PARAM = "dateEventParam"; 34 35 46 public ActionForward displayCalendar(ActionMapping mapping, 47 ActionForm form, 48 HttpServletRequest request, 49 HttpServletResponse response) 50 throws IOException , ServletException { 51 52 ActionForward forward = mapping.getInputForward(); 53 ActionMessages errors = new ActionMessages(); 54 JahiaEngineCommonData engineCommonData = null; 55 56 try { 57 init(request); 58 59 engineCommonData = (JahiaEngineCommonData) 60 request.getAttribute(JahiaEngineCommonData.JAHIA_ENGINE_COMMON_DATA); 61 62 String eventObj = (String )request.getParameter(DATE_EVENT_PARAM); 64 request.setAttribute(DATE_EVENT_PARAM,eventObj); 65 66 if ( eventObj != null ){ 67 DatePickerEvent ev = (DatePickerEvent)request.getSession() 68 .getAttribute(eventObj + "_dateEvent"); 69 if ( ev == null ){ 70 ev = new DatePickerEvent(this,null,null, 71 eventObj, 72 new DatePickerData()); 73 } 74 ev.setEventTimeToNow(); 75 DatePicker.getInstance().wakeupListener("beforeDisplayCalendar",ev); 76 Vector dateErrors = ev.getDatePickerData().getErrors(); 77 if ( dateErrors.size()>0 ){ 78 request.setAttribute("errors",dateErrors); 79 } 80 request.setAttribute("dateValue",DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.MEDIUM, 81 engineCommonData.getParamBean().getLocale()).format(new Date (ev.getDatePickerData().getDate()))); 82 request.setAttribute("dateLongValue", 83 String.valueOf(ev.getDatePickerData().getDate())); 84 } 85 } catch ( Throwable t ){ 86 t.printStackTrace(); 87 errors.add(ActionMessages.GLOBAL_MESSAGE, 88 new ActionMessage("displayCalendar error")); 89 } 90 return continueForward(mapping,request,errors,forward); 91 } 92 93 104 public ActionForward save(ActionMapping mapping, 105 ActionForm form, 106 HttpServletRequest request, 107 HttpServletResponse response) 108 throws IOException , ServletException { 109 110 ActionForward forward = mapping.getInputForward(); 111 ActionMessages errors = new ActionMessages(); 112 JahiaEngineCommonData engineCommonData = null; 113 try { 114 init(request); 115 116 engineCommonData = (JahiaEngineCommonData) 117 request.getAttribute(JahiaEngineCommonData.JAHIA_ENGINE_COMMON_DATA); 118 String dateValue = (String )request.getParameter("datebox"); 119 String dateLongValue = (String )request.getParameter("datelong"); 120 request.setAttribute("dateValue",dateValue); 121 request.setAttribute("dateLongValue",dateLongValue); 122 123 String eventObj = (String )request.getParameter(DATE_EVENT_PARAM); 125 DatePickerEvent ev = null; 126 Vector dateErrors = new Vector (); 127 if ( eventObj == null || dateLongValue == null ){ 128 errors.add(ActionMessages.GLOBAL_MESSAGE, 129 new ActionMessage("eventObj or date value is null")); 130 } else { 131 long dateLong = Long.parseLong(dateLongValue); 132 141 ev = new DatePickerEvent(this,null,null,eventObj, 142 new DatePickerData(dateLong)); 143 DatePicker.getInstance().wakeupListener("saveDate",ev); 144 request.setAttribute(DATE_EVENT_PARAM,eventObj); 145 dateErrors = ev.getDatePickerData().getErrors(); 146 request.getSession().setAttribute(eventObj + "_dateEvent",ev); 147 if ( dateErrors.size()==0 ){ 148 String method = request.getParameter(mapping.getParameter()); 149 if ( method.equals("save") ){ 150 request.setAttribute("engines.close.refresh-opener","yes"); 151 request.setAttribute("engines.close.opener-url-params","&reloaded=yes"); 152 forward = mapping.findForward("EnginesCloseAnyPopup"); 153 } else if ( method.equals("apply") ){ 154 Properties params = new Properties (); 155 params.put("method","displayCalendar"); 156 params.put(DATE_EVENT_PARAM,eventObj); 157 String requestURL = engineCommonData.getParamBean() 158 .composeStrutsUrl((mapping.getPath()).toString(),params,null); 159 request.setAttribute("engines.apply.new-url",requestURL); 160 request.setAttribute("engines.apply.refresh-opener","yes"); 161 request.setAttribute("engines.apply.opener-url-params","&reloaded=yes"); 162 forward = mapping.findForward("EnginesApplyAnyPopup"); 163 } 164 } else { 165 forward = displayCalendar(mapping,form,request,response); 166 } 167 } 168 } catch ( Throwable t ){ 169 t.printStackTrace(); 170 errors.add(ActionMessages.GLOBAL_MESSAGE, 171 new ActionMessage("displayCalendar error")); 172 } 173 return continueForward(mapping,request,errors,forward); 174 } 175 176 187 public ActionForward apply(ActionMapping mapping, 188 ActionForm form, 189 HttpServletRequest request, 190 HttpServletResponse response) 191 throws IOException , ServletException { 192 return save(mapping,form,request,response); 193 } 194 195 200 private void init(HttpServletRequest request) throws JahiaException { 201 202 JahiaEngineCommonData engineCommonData = 204 new JahiaEngineCommonData(request); 205 206 engineCommonData.setEngineTitle(DatePickerAction.ENGINE_TITLE); 207 208 String pid = null; 209 String entryStateParam = null; 210 try { 211 request.setAttribute(JahiaEngineCommonData.JAHIA_ENGINE_COMMON_DATA, 212 engineCommonData); 213 214 JahiaEngineButtonsHelper jahiaEngineButtonsHelper = 216 new JahiaEngineButtonsHelper(); 217 jahiaEngineButtonsHelper.addOkButton(); 218 jahiaEngineButtonsHelper.addApplyButton(); 219 jahiaEngineButtonsHelper.addCancelButton(); 220 221 request.setAttribute(JahiaEngineButtonsHelper.JAHIA_ENGINE_BUTTONS_HELPER, 222 jahiaEngineButtonsHelper); 223 224 Properties params = new Properties (); 226 String engineURL = engineCommonData.getParamBean() 227 .composeStrutsUrl("DatePicker",params,null); 228 engineCommonData.setEngineURL(engineURL); 229 230 } catch ( Throwable t ){ 231 t.printStackTrace(); 232 throw new JahiaException("Exception occured initializing engine's objects", 233 "Exception occured initializing engine's objects", 234 JahiaException.ENGINE_ERROR, 235 JahiaException.ENGINE_ERROR); 236 } 237 } 238 239 248 public ActionForward continueForward(ActionMapping mapping, 249 HttpServletRequest request, ActionMessages errors, 250 ActionForward continueForward){ 251 252 if(errors != null && !errors.isEmpty()){ 253 saveErrors(request,errors); 254 return mapping.findForward("error"); 255 } 256 return continueForward; 257 } 258 259 } 260 | Popular Tags |