package com.psddev.cms.tool.page;
import java.io.IOException;
import java.util.UUID;
import javax.servlet.ServletException;
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.db.State;
import com.psddev.dari.util.ObjectUtils;
import com.psddev.dari.util.RoutingFilter;
@RoutingFilter.Path(application = "cms", value = "/misc/updateUserSettings")
@SuppressWarnings("serial")
public class UpdateUserSettings extends PageServlet {
@Override
protected String getPermissionId() {
return "area/dashboard";
}
@Override
protected void doService(ToolPageContext page) throws IOException, ServletException {
if (!page.isFormPost()) {
throw new IllegalStateException("Form must be posted!");
}
ToolUser user = page.getUser();
State userState = user.getState();
for (String action : page.params(String.class, "action")) {
if ("liveContentPreview-enable".equals(action)) {
userState.put("liveContentPreview", true);
} else if ("liveContentPreview-disable".equals(action)) {
userState.put("liveContentPreview", false);
} else if ("dashboardWidgets-position".equals(action)) {
userState.put("dashboardWidgets", ObjectUtils.fromJson(page.param(String.class, "widgets")));
userState.put("dashboardWidgetsCollapse", ObjectUtils.fromJson(page.param(String.class, "widgetsCollapse")));
} else if ("scheduleSet".equals(action)) {
user.setCurrentSchedule(Query.
from(Schedule.class).
where("_id = ?", page.param(UUID.class, "scheduleId")).
first());
}
}
userState.save();
String returnUrl = page.param(String.class, "returnUrl");
if (!ObjectUtils.isBlank(returnUrl)) {
page.getResponse().sendRedirect(returnUrl);
}
}
}