package cms.controller.admin.page;
import cms.controller.admin.AdminController;
import cms.model.meta.PageEntityMeta;
import cms.model.model.PageEntity;
import cms.model.model.dto.PageDTO;
import cms.model.service.PageService;
import cms.model.service.ServiceException;
import cms.model.service.TemplateService;
import cms.util.GuiceUtil;
import cms.util.Message;
import cms.util.Messages;
import com.google.appengine.api.datastore.Key;
import org.slim3.controller.Navigation;
import org.slim3.util.BeanUtil;
import org.slim3.util.RequestMap;
public class EditController extends AdminController {
private PageService pageService = GuiceUtil.getService(PageService.class);
private TemplateService templateService = GuiceUtil.getService(TemplateService.class);
private PageEntityMeta pageMeta = PageEntityMeta.get();
@Override
public Navigation run() throws Exception {
requestScope("pageTitle", "Upravit stránku");
if (param("submit") != null) {
try {
pageService.edit(new RequestMap(request));
} catch (ServiceException e) {
if (e.getErrors() != null) {
requestScope("errors", e.getErrors());
} else {
Messages.setRequestMessage(e.getMessage(), Message.ERROR);
}
requestScope("templates", templateService.getAllTemplates());
return forward("/cms/admin/page/edit.jsp");
}
Messages.setSessionMessage("Stránka byla upravena.");
return redirect("/admin/page/");
}
Key key = asKey(pageMeta.key);
if (key == null) {
Messages.setSessionMessage("Chybný parametr.", Message.ERROR);
return redirect("/admin/page/");
}
PageEntity pageEntity = pageService.getPage(key);
PageDTO pageDTO = new PageDTO(pageEntity);
BeanUtil.copy(pageDTO, request);
requestScope("templates", templateService.getAllTemplates());
requestScope("templateName", pageDTO.getTemplateName());
return forward("/cms/admin/page/edit.jsp");
}
}