/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.vertical.adminweb; import com.enonic.cms.core.structure.DefaultSiteAccumulatedAccessRights; import com.enonic.cms.core.structure.SiteEntity; import com.enonic.cms.core.structure.SiteProperties; import com.enonic.cms.core.structure.SiteXmlCreator; import com.enonic.cms.core.structure.menuitem.MenuItemEntity; import com.enonic.cms.core.structure.menuitem.MenuItemKey; import com.enonic.cms.core.structure.menuitem.MenuItemXMLCreatorSetting; import com.enonic.cms.core.structure.menuitem.MenuItemXmlCreator; import com.enonic.cms.core.structure.page.PageEntity; import com.enonic.cms.core.structure.page.template.PageTemplateEntity; import com.enonic.cms.framework.xml.XMLDocument; import com.enonic.cms.framework.xml.XMLDocumentFactory; import org.jdom.Document; import org.jdom.Element; import java.util.List; import com.enonic.vertical.engine.handlers.MenuHandler; /** * model for edit menu item page */ public class MenuItemFormModel { private boolean newMenuItem; private SiteEntity site; private SiteProperties siteProperties; private DefaultSiteAccumulatedAccessRights userRightsForSite; private List<MenuItemEntity> selectedMenuItemPath; private MenuHandler menuHandler; public MenuItemFormModel( MenuItemKey selectedMenuItemKey, MenuHandler menuHandler ) { this.newMenuItem = selectedMenuItemKey == null; this.menuHandler = menuHandler; } public XMLDocument toXML() { Element modelEl = new Element( "model" ); modelEl.addContent( createSelectedMenuElement() ); modelEl.addContent( createSelectedMenuItemPathElement() ); return XMLDocumentFactory.create( new Document( modelEl ) ); } private Element createSelectedMenuElement() { SiteXmlCreator siteXmlCreator = new SiteXmlCreator( null, menuHandler ); return siteXmlCreator.createMenuElement( site, siteProperties, userRightsForSite ); } private Element createSelectedMenuItemPathElement() { Element selectedMenuItemPathEl = new Element( "menuitem-parents" ); if ( selectedMenuItemPath != null ) { int i = 0; for ( MenuItemEntity currMenuItem : selectedMenuItemPath ) { MenuItemXMLCreatorSetting miPathXmlCreatorSetting = new MenuItemXMLCreatorSetting(); miPathXmlCreatorSetting.includeTypeSpecificXML = false; miPathXmlCreatorSetting.includeParents = false; miPathXmlCreatorSetting.includeChildren = false; MenuItemXmlCreator menuItemPathXmlCreator = new MenuItemXmlCreator( miPathXmlCreatorSetting, null ); Element currMenuItemEl = menuItemPathXmlCreator.createMenuItemElement( currMenuItem ); selectedMenuItemPathEl.addContent( currMenuItemEl ); // do not add last element (it is the selected one, if not new) if ( ( ++i == selectedMenuItemPath.size() - 1 ) && !newMenuItem ) { break; } } } return selectedMenuItemPathEl; } public int findParentPageTemplateKey() { int template = -1; if ( selectedMenuItemPath != null ) { int self = selectedMenuItemPath.size() - 1; for ( int path = self; path >= 0; path-- ) // backward { PageEntity page = selectedMenuItemPath.get( path ).getPage(); if ( page != null ) { PageTemplateEntity pageTemplate = page.getTemplate(); if ( pageTemplate != null ) { template = pageTemplate.getKey(); break; } } } } return template; } /* getters and setters */ public void setSite( SiteEntity site ) { this.site = site; } public void setSiteProperties( SiteProperties siteProperties ) { this.siteProperties = siteProperties; } public void setUserRightsForSite( DefaultSiteAccumulatedAccessRights value ) { this.userRightsForSite = value; } public void setSelectedMenuItemPath( List<MenuItemEntity> selectedMenuItemPath ) { this.selectedMenuItemPath = selectedMenuItemPath; } }