package no.dusken.aranea.admin.control;
import no.dusken.aranea.admin.editor.GenericCollectionEditor;
import no.dusken.aranea.admin.editor.GenericEditor;
import no.dusken.aranea.model.Page;
import no.dusken.aranea.model.PageImage;
import no.dusken.aranea.service.PageService;
import no.dusken.common.service.GenericService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
* @author Benjamin Bjørnseth <benjamin@underdusken.no>
*/
@Controller
@RequestMapping("/pageImageParagraph")
public class EditPageImageParagraphController {
private PageService pageService;
private GenericService<PageImage> pageImageService;
private GenericCollectionEditor<PageImage, List> pageImageEditor;
@RequestMapping("/chooseImage")
public String getImageSelectionView(@RequestParam Integer paragraphNumber, @RequestParam Long ID, Model model) {
List<PageImage> pageImages = pageService.getEntity(ID).getPageImages();
model.addAttribute("pageImages", pageImages);
model.addAttribute("pageId", ID);
model.addAttribute("paragraphNumber", paragraphNumber);
return "no/dusken/aranea/base/admin/pageImage/imageChooser";
}
@RequestMapping("/updateParagraph")
public String updatePageImageParagraph(@RequestParam Long pageImageID, @RequestParam Long pageID, @RequestParam Integer paragraphNumber) {
PageImage pageImage = pageImageService.getEntity(pageImageID);
pageImage.setParagraph(paragraphNumber);
pageImageService.saveOrUpdate(pageImage);
Page p = pageService.getEntity(pageID);
// redirect to the same form
/*
StringBuffer url = new StringBuffer();
url.append("/admin/edit");
url.append(p.getClass().getSimpleName());
url.append(".do?ID=");
url.append(pageID);
return "redirect:" + url;
*/
return "no/dusken/aranea/base/admin/pageImage/paragraphSuccess";
}
@RequestMapping("/updateGalleryOrdering")
public @ResponseBody String updateGalleryOrdering(@RequestParam List<PageImage> pageImages) {
for (int i = 0; i < pageImages.size(); i++) {
pageImages.get(i).setParagraph(i + 1);
}
pageImageService.saveOrUpdate(pageImages);
return "";
}
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(List.class, pageImageEditor);
}
@Autowired
public void setPageService(PageService pageService) {
this.pageService = pageService;
}
@Autowired
public void setPageImageService(GenericService<PageImage> pageImageService) {
this.pageImageService = pageImageService;
}
@Autowired
public void setPageImageEditor(GenericCollectionEditor<PageImage, List> pageImageEditor) {
this.pageImageEditor = pageImageEditor;
}
}