Changeset 1133
- Timestamp:
- 06/27/08 10:20:13
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
qPloneComments/branches/plone-3.0/Extensions/Install.py
r1125 r1133 2 2 from Products.CMFCore.utils import getToolByName 3 3 from Products.CMFCore.DirectoryView import addDirectoryViews 4 try: 5 from Products.CMFCore.permissions import ManagePortal, ReplyToItem 6 except ImportError: 7 from Products.CMFCore.CMFCorePermissions import ManagePortal,ReplyToItem 8 from App.Common import package_home 9 from os.path import exists as path_exists, join as path_join 4 from Products.CMFCore.permissions import ManagePortal, ReplyToItem 10 5 11 6 from plone.browserlayer.utils import register_layer, unregister_layer … … 13 8 from Products.qPloneComments.interfaces import IPloneCommentsLayer 14 9 15 import string 10 def install(self): 11 out = StringIO() 16 12 17 def setupSkin(self, out, layers): 18 """Setup skins""" 19 skinstool=getToolByName(self, 'portal_skins') 20 addDirectoryViews(skinstool, 'skins', GLOBALS) 13 # Fire GenericSetup imports 14 portal_setup = getToolByName(self, 'portal_setup') 15 portal_setup.runAllImportStepsFromProfile('profile-Products.qPloneComments:default') 21 16 22 for skin in skinstool.getSkinSelections(): 23 modified = False 24 path = skinstool.getSkinPath(skin) 25 path = map( string.strip, string.split( path,',' ) ) 26 for layer in layers: 27 if not layer in path: 28 try: 29 path.insert(path.index('custom')+1, layer ) 30 except ValueError: 31 path.append(layer) 32 modified = True 33 out.write(' Layer %s sucessfully installed into skin %s.\n' % (layer,skin)) 34 else: 35 out.write(' Layer %s was already installed into skin %s.\n' % (layer,skin)) 36 if modified: 37 path = string.join( path, ', ' ) 38 skinstool.addSkinSelection( skin, path ) 39 40 41 def install(self): 42 out=StringIO() 43 44 Layers = [] 45 mtool = getToolByName(self, 'portal_migration') 46 plone_version = mtool.getFileSystemVersion() 47 if plone_version.startswith('2.1'): 48 plone_version = '2.1' 49 elif plone_version.startswith('2.0'): 50 plone_version = '2.0.5' 51 elif plone_version.startswith('2.5') or plone_version.startswith('3'): 52 plone_version = '2.5' 53 else: 54 raise Exception("Error - Unsupported version. Suported versions: Plone 2.0.5-3.0") 55 56 product_path = package_home(GLOBALS) 57 versioned_skin = path_join(product_path, 'skins', PROJECTNAME, plone_version) 58 59 Layers.append(SKIN_NAME) 60 Layers.append('%s/%s' % (SKIN_NAME, plone_version) ) 61 out.write('Call setupSkin... \n') 62 setupSkin(self, out, Layers) 63 64 # register our browser layer 17 # Register our browser layer 65 18 register_layer(IPloneCommentsLayer, name='qPloneComments') 66 19 67 # add Property sheet to portal_properies20 # Add Property sheet to portal_properies 68 21 pp = getToolByName(self, 'portal_properties') 69 22 if not 'qPloneComments' in pp.objectIds(): 70 pp.addPropertySheet(id='qPloneComments', title= '%s Properties' % 'qPloneComments')71 out.write("Adding %s property sheet to portal_properies\n" % 'qPloneComments' )23 pp.addPropertySheet(id='qPloneComments', title='qPloneComments Properties') 24 out.write("Adding %s property sheet to portal_properies\n" % 'qPloneComments') 72 25 props_sheet = pp['qPloneComments'] 73 26 updateProperties(props_sheet, out, PROPERTIES) … … 84 37 appId=PROJECTNAME, permission=ManagePortal, imageUrl='group.gif') 85 38 86 # Add DiscussionManager role to Portal 87 if plone_version == '2.5': 88 uf = getToolByName(self, 'acl_users') 89 rmanager = uf.portal_role_manager 90 existing = rmanager.listRoleIds() 91 if not 'DiscussionManager' in existing: 92 rmanager.addRole('DiscussionManager') 93 out.write("Added DiscussionManager role top portal.\n") 94 else: 95 roles = list(self.__ac_roles__) 96 if not 'DiscussionManager' in roles: 97 roles.append('DiscussionManager') 98 roles = tuple(roles) 99 self.__ac_roles__ = roles 100 out.write("Added DiscussionManager role top portal.\n") 39 uf = getToolByName(self, 'acl_users') 40 rmanager = uf.portal_role_manager 41 existing = rmanager.listRoleIds() 42 if not 'DiscussionManager' in existing: 43 rmanager.addRole('DiscussionManager') 44 out.write("Added DiscussionManager role top portal.\n") 101 45 102 46 self.manage_permission('Moderate Discussion', ['DiscussionManager', 'Manager']) 103 # Add 'DiscussionManagers' group47 # Add 'DiscussionManagers' group 104 48 gtool = getToolByName(self, 'portal_groups') 105 49 existing = gtool.listGroupIds() … … 110 54 # Remove workflow-chain for Discussion Item 111 55 wf_tool = getToolByName(self, 'portal_workflow') 112 wf_tool.setChainForPortalTypes( ('Discussion Item',), [])56 wf_tool.setChainForPortalTypes(('Discussion Item',), []) 113 57 out.write("Removed workflow chain for Discussion Item type.\n") 114 58 115 59 out.write('Installation successfully completed.\n') 116 60 return out.getvalue() 117 118 61 119 62 def updateProperties(pp_ps, out, *args): … … 122 65 if not pp_ps.hasProperty(prop_id): 123 66 pp_ps.manage_addProperty(prop_id, prop_value, prop_type) 124 out.write("Adding %s property to %s property sheet\n" % (prop_id, 'qPloneComments') )67 out.write("Adding %s property to %s property sheet\n" % (prop_id, 'qPloneComments')) 125 68 126 69 def uninstall(self): … … 133 76 for p in old_path: 134 77 if not p.startswith(SKIN_NAME): 135 path.append(p)78 path.append(p) 136 79 path = ','.join(path) 137 80 skinstool.addSkinSelection(skinName, path) 138 81 139 82 # remove browser layer 140 83 try: … … 142 85 except KeyError: 143 86 pass 144 87 145 88 # Remove configlet 146 89 controlpanel_tool = getToolByName(self, 'portal_controlpanel') 147 90 controlpanel_tool.unregisterConfiglet(CONFIGLET_ID) 91 148 92 # Remove Product's property sheet from portal_properties 149 93 pp = getToolByName(self, 'portal_properties') qPloneComments/branches/plone-3.0/configure.zcml
r1018 r1133 1 <configure xmlns="http://namespaces.zope.org/zope" 2 xmlns:browser="http://namespaces.zope.org/browser" 3 xmlns:five="http://namespaces.zope.org/five"> 1 <configure 2 xmlns="http://namespaces.zope.org/zope" 3 xmlns:browser="http://namespaces.zope.org/browser" 4 xmlns:gs="http://namespaces.zope.org/genericsetup" 5 xmlns:five="http://namespaces.zope.org/five"> 6 7 <gs:registerProfile 8 name="default" 9 title="qPloneComments profile" 10 directory="profiles/default" 11 provides="Products.GenericSetup.interfaces.EXTENSION" 12 description="" 13 for="Products.CMFPlone.interfaces.IPloneSiteRoot" 14 /> 4 15 5 16 </configure>
