package com.psddev.cms.tool.page; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import com.psddev.cms.db.Draft; import com.psddev.cms.db.Schedule; import com.psddev.cms.db.ToolUser; import com.psddev.cms.tool.PageServlet; import com.psddev.cms.tool.ToolPageContext; import com.psddev.dari.db.Query; import com.psddev.dari.util.RoutingFilter; @RoutingFilter.Path(application = "cms", value = "/scheduleEdit") @SuppressWarnings("serial") public class ScheduleEdit extends PageServlet { @Override protected String getPermissionId() { return null; } @Override protected void doService(final ToolPageContext page) throws IOException, ServletException { Schedule schedule = (Schedule) page.findOrReserve(Schedule.class); boolean newSchedule = schedule.getState().isNew(); if (page.isFormPost()) { try { if (page.param(String.class, "action-save") != null) { ToolUser toolUser = page.getUser(); page.include("/WEB-INF/objectPost.jsp", "object", schedule); if (newSchedule) { schedule.setTriggerUser(toolUser); schedule.setTriggerSite(page.getSite()); } schedule.save(); if (newSchedule) { toolUser.setCurrentSchedule(schedule); toolUser.save(); } } else if (page.param(String.class, "action-delete") != null) { try { schedule.beginWrites(); Query.from(Draft.class).where("schedule = ?", schedule).deleteAll(); schedule.delete(); schedule.commitWrites(); } finally { schedule.endWrites(); } } page.writeStart("script", "type", "text/javascript"); page.writeRaw("window.location = window.location;"); page.writeEnd(); return; } catch (Exception error) { page.getErrors().add(error); } } page.writeStart("div", "class", "widget"); page.writeFormHeading(schedule, "class", "icon icon-object-schedule"); page.include("/WEB-INF/errors.jsp"); page.writeStart("form", "method", "post", "action", page.url("", "id", schedule.getId())); page.include("/WEB-INF/objectForm.jsp", "object", schedule); page.writeStart("div", "class", "actions"); page.writeStart("button", "class", "icon icon-action-save", "name", "action-save", "value", "true"); page.writeHtml(page.localize(ScheduleEdit.class, "action.save")); page.writeEnd(); if (!newSchedule) { page.writeStart("button", "class", "icon icon-action-delete action-pullRight link", "name", "action-delete", "value", "true"); page.writeHtml(page.localize(ScheduleEdit.class, "action.delete")); page.writeEnd(); } page.writeEnd(); page.writeEnd(); List<Draft> drafts = Query .from(Draft.class) .where("schedule = ?", schedule) .selectAll(); if (!drafts.isEmpty()) { page.writeStart("h2").writeHtml("Items").writeEnd(); page.writeStart("div", "class", "fixedScrollable"); page.writeStart("ul", "class", "links"); for (Draft draft : drafts) { page.writeStart("li"); page.writeStart("a", "href", page.objectUrl("/content/edit.jsp", draft), "target", "_top"); page.writeObjectLabel(draft); page.writeEnd(); page.writeEnd(); } page.writeEnd(); page.writeEnd(); } page.writeEnd(); } }