1 31 32 package org.opencms.workplace.tools.history; 33 34 import org.opencms.i18n.CmsMessages; 35 import org.opencms.jsp.CmsJspActionElement; 36 import org.opencms.main.CmsIllegalArgumentException; 37 import org.opencms.main.OpenCms; 38 import org.opencms.widgets.CmsCalendarWidget; 39 import org.opencms.workplace.CmsReport; 40 import org.opencms.workplace.CmsWorkplaceSettings; 41 42 import java.text.ParseException ; 43 import java.util.HashMap ; 44 import java.util.Map ; 45 46 import javax.servlet.http.HttpServletRequest ; 47 import javax.servlet.http.HttpServletResponse ; 48 import javax.servlet.jsp.JspException ; 49 import javax.servlet.jsp.PageContext ; 50 51 66 public class CmsAdminHistoryClear extends CmsReport { 67 68 69 public static final int ACTION_SAVE_EDIT = 300; 70 71 72 public static final String DIALOG_SAVE_EDIT = "saveedit"; 73 74 75 public static final String DIALOG_TYPE = "historyclear"; 76 77 82 public CmsAdminHistoryClear(CmsJspActionElement jsp) { 83 84 super(jsp); 85 } 86 87 94 public CmsAdminHistoryClear(PageContext context, HttpServletRequest req, HttpServletResponse res) { 95 96 this(new CmsJspActionElement(context, req, res)); 97 } 98 99 104 public void actionEdit() throws JspException { 105 106 getJsp().getRequest().setAttribute(SESSION_WORKPLACE_CLASS, this); 108 109 switch (getAction()) { 110 case ACTION_REPORT_UPDATE: 111 setParamAction(REPORT_UPDATE); 112 getJsp().include(FILE_REPORT_OUTPUT); 113 break; 114 case ACTION_REPORT_END: 115 actionCloseDialog(); 116 break; 117 case ACTION_REPORT_BEGIN: 118 case ACTION_SAVE_EDIT: 119 default: 120 Map params = new HashMap (); 121 try { 122 params = getBackupParams(); 123 CmsAdminHistoryClearThread thread = new CmsAdminHistoryClearThread(getCms(), params); 124 setParamAction(REPORT_BEGIN); 125 setParamThread(thread.getUUID().toString()); 126 getJsp().include(FILE_REPORT_OUTPUT); 127 } catch (Throwable e) { 128 includeErrorpage(this, e); 130 } 131 break; 132 } 133 } 134 135 140 public String buildClearForm() { 141 142 CmsMessages messages = Messages.get().getBundle(getLocale()); 143 StringBuffer retValue = new StringBuffer (512); 144 int maxVersions = OpenCms.getSystemInfo().getVersionHistoryMaxCount(); 145 146 retValue.append(dialogBlockStart(messages.key(Messages.GUI_LABEL_ADMNIN_HISTORY_SETTINGS_0))); 148 if (isHistoryEnabled()) { 149 retValue.append(messages.key(Messages.GUI_INPUT_HISTORY_CLEAR_VERSIONINFO_1, new Object [] {new Integer ( 150 maxVersions)})); 151 retValue.append("<br>"); 152 retValue.append(messages.key(Messages.GUI_INPUT_HISTORY_CLEAR_SELECTINFO_0)); 153 } else { 154 retValue.append(messages.key(Messages.GUI_INPUT_HISTORY_CLEAR_DISABLEDINFO_0)); 155 } 156 retValue.append(dialogBlockEnd()); 157 retValue.append(dialogSpacer()); 158 159 if (isHistoryEnabled()) { 161 retValue.append("<table border=\"0\">\n"); 162 retValue.append("<tr>\n"); 163 retValue.append("<td>" + messages.key(Messages.GUI_INPUT_HISTORY_CLEAR_NUMBER_0) + "</td>\n"); 164 retValue.append("<td colspan=\"2\">" + buildSelectVersions(null) + "</td>\n"); 165 retValue.append("</tr>\n"); 166 retValue.append("<tr><td colspan=\"3\"> </td></tr>\n"); 167 retValue.append("<tr>\n"); 168 retValue.append("<td>" + messages.key(Messages.GUI_INPUT_HISTORY_CLEAR_DATE_0) + "</td>\n"); 169 retValue.append("<td>"); 170 retValue.append("<input type=\"text\" name=\"date\" id=\"date\">"); 171 retValue.append("</td>\n<td>"); 172 retValue.append("<img SRC=\"" + getSkinUri() + "buttons/calendar.png\" id=\"triggercalendar\" "); 173 retValue.append("alt=\"" 174 + messages.key(Messages.GUI_CALENDAR_INPUT_CHOOSEDATE_0) 175 + "\" title=\"" 176 + messages.key(Messages.GUI_CALENDAR_INPUT_CHOOSEDATE_0) 177 + "\">"); 178 retValue.append("</td>\n"); 179 retValue.append("</tr>\n"); 180 retValue.append("</table>\n"); 181 } 182 183 return retValue.toString(); 184 } 185 186 192 public String buildSelectVersions(String attributes) { 193 194 return buildSelectNumbers("versions", attributes, 0, OpenCms.getSystemInfo().getVersionHistoryMaxCount()); 195 } 196 197 204 public String calendarIncludes() { 205 206 return CmsCalendarWidget.calendarIncludes(getLocale()); 207 } 208 209 223 public String calendarInit( 224 String inputFieldId, 225 String triggerButtonId, 226 String align, 227 boolean singleClick, 228 boolean weekNumbers, 229 boolean mondayFirst, 230 String dateStatusFunc) { 231 232 return CmsCalendarWidget.calendarInit( 233 getMessages(), 234 inputFieldId, 235 triggerButtonId, 236 align, 237 singleClick, 238 weekNumbers, 239 mondayFirst, 240 dateStatusFunc, 241 false); 242 } 243 244 249 public boolean isHistoryEnabled() { 250 251 return OpenCms.getSystemInfo().isVersionHistoryEnabled(); 252 } 253 254 257 protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { 258 259 fillParamValues(request); 261 262 setParamDialogtype(DIALOG_TYPE); 264 if (DIALOG_SAVE_EDIT.equals(getParamAction())) { 266 if (isHistoryEnabled()) { 267 setAction(ACTION_SAVE_EDIT); 269 } else { 270 setAction(ACTION_CANCEL); 272 } 273 } else if (REPORT_UPDATE.equals(getParamAction())) { 274 setAction(ACTION_REPORT_UPDATE); 275 } else if (REPORT_BEGIN.equals(getParamAction())) { 276 setAction(ACTION_REPORT_BEGIN); 277 } else if (REPORT_END.equals(getParamAction())) { 278 setAction(ACTION_REPORT_END); 279 } else if (DIALOG_CANCEL.equals(getParamAction())) { 280 setAction(ACTION_CANCEL); 281 } else { 282 setAction(ACTION_DEFAULT); 284 setParamTitle(Messages.get().getBundle(getLocale()).key(Messages.GUI_LABEL_ADMIN_HISTORY_CLEAR_0)); 285 } 286 } 287 288 297 private String buildSelectNumbers(String fieldName, String attributes, int startValue, int endValue) { 298 299 StringBuffer retValue = new StringBuffer (512); 300 301 retValue.append("<select name=\"" + fieldName + "\""); 302 if (attributes != null) { 303 retValue.append(" " + attributes); 304 } 305 retValue.append(">\n"); 306 retValue.append("\t<option value=\"\" selected=\"selected\">" 307 + Messages.get().getBundle(getLocale()).key(Messages.GUI_INPUT_HISTORY_CLEAR_SELECT_0) 308 + "</option>\n"); 309 for (int i = startValue; i <= endValue; i++) { 310 retValue.append("\t<option value=\"" + i + "\">" + i + "</option>\n"); 311 } 312 retValue.append("</select>\n"); 313 314 return retValue.toString(); 315 } 316 317 323 private Map getBackupParams() throws CmsIllegalArgumentException { 324 325 HttpServletRequest request = getJsp().getRequest(); 326 Map parameterMap = new HashMap (); 327 328 String paramVersions = request.getParameter("versions"); 330 String paramDate = request.getParameter("date"); 331 332 int versions = 0; 334 long timeStamp = 0; 335 boolean useVersions = false; 336 try { 337 versions = Integer.parseInt(paramVersions); 338 useVersions = true; 339 } catch (NumberFormatException e) { 340 try { 342 timeStamp = CmsCalendarWidget.getCalendarDate(getMessages(), paramDate, false); 343 } catch (ParseException ex) { 344 346 throw new CmsIllegalArgumentException( 347 Messages.get().container(Messages.ERR_INVALID_DATE_1, paramDate), 348 ex); 349 } 350 } 351 352 if (useVersions) { 354 timeStamp = System.currentTimeMillis() + 86400000; 355 } 356 if (DEBUG) { 357 System.err.println("Versions: " + versions + "\nDate: " + timeStamp); 358 } 359 parameterMap.put("timeStamp", String.valueOf(timeStamp)); 361 parameterMap.put("versions", String.valueOf(versions)); 362 363 if (DEBUG) { 364 System.err.println("Done"); 365 } 366 return parameterMap; 367 } 368 369 } 370 | Popular Tags |