| 1 24 package org.riotfamily.pages.riot.command; 25 26 import java.util.Locale ; 27 28 import org.riotfamily.pages.Page; 29 import org.riotfamily.pages.PageNode; 30 import org.riotfamily.pages.PageValidationUtils; 31 import org.riotfamily.pages.dao.PageDao; 32 import org.riotfamily.pages.riot.dao.SiteLocale; 33 import org.riotfamily.riot.list.command.CommandContext; 34 import org.riotfamily.riot.list.command.core.Clipboard; 35 import org.riotfamily.riot.list.command.core.PasteCommand; 36 37 public class PastePageCommand extends PasteCommand { 38 39 private PageDao pageDao; 40 41 public PastePageCommand(PageDao pageDao) { 42 this.pageDao = pageDao; 43 } 44 45 protected boolean isEnabled(CommandContext context, String action) { 46 boolean enabled = super.isEnabled(context, action); 47 Clipboard cb = Clipboard.get(context); 48 Object obj = cb.getObject(); 49 if (obj instanceof Page) { 50 Page page = (Page) obj; 51 enabled &= isValidChild(context.getParent(), page); 52 53 Locale locale = PageCommandUtils.getParentLocale(context); 55 if(locale != null) { 56 enabled &= page.getLocale().equals(locale); 57 } 58 } 59 return enabled; 60 } 61 62 private boolean isValidChild(Object parent, Page page) { 63 PageNode parentNode; 64 if (parent instanceof Page) { 65 parentNode = ((Page) parent).getNode(); 66 } 67 else if (parent instanceof SiteLocale) { 68 SiteLocale siteLocale = ((SiteLocale) parent); 69 parentNode = pageDao.findRootNode(siteLocale.getSite()); 70 } 71 else { 72 parentNode = pageDao.findRootNode(pageDao.getDefaultSite()); 73 } 74 return PageValidationUtils.isValidChild(parentNode, page); 75 } 76 77 } 78 | Popular Tags |