from Products.CMFCore.utils import getToolByName from Products.CMFFormController.FormAction import FormActionKey from Products.Archetypes.Extensions.utils import installTypes from Products.Archetypes.Extensions.utils import install_subskin from Products.Archetypes.public import listTypes from StringIO import StringIO from Products.CMFDynamicViewFTI.migrate import migrateFTIs from Products.HomePage.config import * def install(self): """Install HomePage: Install content types, skin layer, install the stylesheet, set up global properties, enable the portal factory and set up form controller actions for the widget actions """ out = StringIO() print >> out, "Installing HomePage" # Install types classes = listTypes(PROJECTNAME) installTypes(self, out, classes, PROJECTNAME) print >> out, "Installed types" # Install skin install_subskin(self, out, product_globals) print >> out, "Installed skin" # Migrate FTI, to make sure we get the necessary infrastructure for the # 'display' menu to work. migrated = migrateFTIs(self, product=PROJECTNAME) print >>out, "Switched to DynamicViewFTI: %s" % ', '.join(migrated) # Install stylesheet portal_css = getToolByName(self, 'portal_css') portal_css.manage_addStylesheet(id = 'homepage.css', expression = 'python:object.getTypeInfo().getId() == "HomePage"', media = 'all', title = 'HomePage styles', enabled = True) # Enable portal_factory factory = getToolByName(self, 'portal_factory') types = factory.getFactoryTypes().keys() if 'HomePage' not in types: types.append('HomePage') factory.manage_setPortalFactoryTypes(listOfTypeIds = types) print >> out, "Added HomePage to portal_factory" propsTool = getToolByName(self, 'portal_properties') siteProperties = getattr(propsTool, 'site_properties') navtreeProperties = getattr(propsTool, 'navtree_properties') # Remove from use_folder_tabs useFolderTabs = list(siteProperties.getProperty('use_folder_tabs')) if 'HomePage' in useFolderTabs: useFolderTabs.remove('HomePage') siteProperties.manage_changeProperties(use_folder_tabs = useFolderTabs) # Remove from typesLinkToFolderContentsInFC typesLinkToFolderContentsInFC = list(siteProperties.getProperty('typesLinkToFolderContentsInFC')) if 'HomePage' in typesLinkToFolderContentsInFC: typesLinkToFolderContentsInFC.remove('HomePage') siteProperties.manage_changeProperties(typesLinkToFolderContentsInFC = typesLinkToFolderContentsInFC) # Add to default_page_types defaultPageTypes = list(siteProperties.getProperty('default_page_types')) if 'HomePage' not in defaultPageTypes: defaultPageTypes.append('HomePage') siteProperties.manage_changeProperties(default_page_types = defaultPageTypes) # Add to parentMetaTypesNotToQuery parentMetaTypesNotToQuery = list(navtreeProperties.getProperty('parentMetaTypesNotToQuery')) if 'HomePage' not in parentMetaTypesNotToQuery: parentMetaTypesNotToQuery.append('HomePage') navtreeProperties.manage_changeProperties(parentMetaTypesNotToQuery = parentMetaTypesNotToQuery) return out.getvalue()