package com.psddev.cms.tool.page.user; import com.psddev.cms.db.WorkInProgress; import com.psddev.cms.tool.PageServlet; import com.psddev.cms.tool.ToolPageContext; import com.psddev.dari.db.ObjectType; import com.psddev.dari.db.Query; import com.psddev.dari.util.ObjectUtils; import com.psddev.dari.util.RoutingFilter; import com.psddev.dari.util.StringUtils; import javax.servlet.ServletException; import java.io.IOException; import java.util.List; import java.util.UUID; @RoutingFilter.Path(application = "cms", value = "/user/wips") public class ToolUserWorksInProgress extends PageServlet { @Override protected String getPermissionId() { return null; } @Override protected void doService(ToolPageContext page) throws IOException, ServletException { if (page.param(String.class, "action-delete") != null) { Query.from(WorkInProgress.class) .where("_id = ?", page.param(UUID.class, "wip")) .deleteAll(); String returnUrl = page.param(String.class, "returnUrl"); if (!ObjectUtils.isBlank(returnUrl)) { page.getResponse().sendRedirect(StringUtils.ensureStart(returnUrl, "/")); return; } } Query<WorkInProgress> query = Query.from(WorkInProgress.class) .where("owner = ?", page.getUser()) .and("updateDate != missing") .sortDescending("updateDate"); boolean deleteAll = page.isFormPost() && page.param(String.class, "action-delete-all") != null; List<WorkInProgress> wips = null; if (deleteAll) { query.deleteAll(); } else { wips = query.selectAll(); } page.writeHeader(); page.writeStart("div", "class", "widget ToolUserWorksInProgress"); { page.writeStart("h1"); page.writeHtml("Works In Progress"); page.writeEnd(); if (deleteAll) { page.writeStart("div", "class", "message message-info"); page.writeHtml("All works in progress deleted!"); page.writeEnd(); } else if (ObjectUtils.isBlank(wips)) { page.writeStart("div", "class", "message message-info"); page.writeHtml("No works in progress!"); page.writeEnd(); } else { page.writeStart("div", "class", "ToolUserWorksInProgress-body"); page.writeStart("ul", "class", "links"); { for (WorkInProgress wip : wips) { ObjectType contentType = wip.getContentType(); UUID contentId = wip.getContentId(); page.writeStart("li"); { page.writeStart("a", "target", "_top", "href", page.cmsUrl("/content/edit.jsp", "typeId", contentType.getId(), "id", contentId)); { page.writeObjectLabel(contentType); page.writeHtml(": "); page.writeHtml(wip.getContentLabel()); } page.writeEnd(); page.writeStart("form", "method", "post", "action", page.url("")); { page.writeElement("input", "type", "hidden", "name", "wip", "value", wip.getId()); page.writeStart("button", "class", "link", "name", "action-delete", "value", "true"); page.writeHtml("Delete"); page.writeEnd(); } page.writeEnd(); } page.writeEnd(); } } page.writeEnd(); page.writeStart("form", "class", "ToolUserWorksInProgress-actions", "method", "post", "action", page.url("")); { page.writeStart("button", "class", "link icon icon-action-remove", "name", "action-delete-all", "data-confirm-message", "Are you sure you want to delete all your works in progress?", "value", "true"); page.writeHtml("Delete All Works In Progress"); page.writeEnd(); } page.writeEnd(); page.writeEnd(); } } page.writeEnd(); page.writeFooter(); } }