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; } }