Déplacement pour eggification.
[Plinn.git] / Products / Plinn / profiles / default / various.py
diff --git a/Products/Plinn/profiles/default/various.py b/Products/Plinn/profiles/default/various.py
new file mode 100644 (file)
index 0000000..efe3039
--- /dev/null
@@ -0,0 +1,126 @@
+## Script (Python) "various.py"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=site
+##title=Import various Plinn setting
+##
+from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.exceptions import BadRequest
+from Products.Plinn.exceptions import WorkflowException
+from Products.Plinn.utils import translate as i18ntranslate
+translate = lambda msg : i18ntranslate(msg, context)
+
+
+# constructs misc objects
+# (productName, factory, id)
+misc=(('StandardCacheManagers',        'manage_addAcceleratedHTTPCacheManager',        'HTTPCache'),
+        ('StandardCacheManagers',      'manage_addRAMCacheManager',                            'rcm'),
+        ('GroupUserFolder',            'manage_addGroupUserFolder',                            'acl_users'))
+
+
+dispatcher = site.manage_addProduct
+for m in misc :
+       try : getattr(dispatcher[m[0]], m[1])(m[2])
+       except : pass
+
+if site.acl_users.Users.acl_users.encrypt_passwords :
+       site.acl_users.Users.acl_users.manage_setUserFolderProperties(encrypt_passwords=True)
+
+
+# configure mosaicTool
+blockTypes = ('Action Box Block', 'Container Block', 'File Block', 'Image Block', 'Mosaic Document',
+                         'Section Block', 'Spacer Block', 'Text Block', 'Tree Box Block')
+
+mostool = getToolByName(site, 'mosaic_tool')
+addBI = mostool.manage_addProduct['MosaicDocument'].addMosaicBlockInformation
+for bt in blockTypes :
+       try : addBI(blockType=bt)
+       except BadRequest : pass
+
+# contents
+ttool = getToolByName(site, 'portal_types')
+wtool = getToolByName(site, 'portal_workflow')
+
+def constructOrSkip(*args, **kw) :
+       try : ttool.constructContent(*args, **kw)
+       except BadRequest : pass
+
+def addBlockOrSkip(container, *args, **kw) :
+       try : container.addBlock(*args, **kw)
+       except BadRequest : pass
+
+def doActionForOrSkip(*args, **kw) :
+       try : wtool.doActionFor(*args, **kw)
+       except WorkflowException : pass
+       
+# home page
+text=[]
+text.append('<h1>%s</h1>' % translate('Welcome to Plinn!'))
+text.append('<p>%s</p>' % translate('This is the default home page.'))
+text.append('<p>%s</p>' % translate('To change the content just select "Edit" in the Tab bar on the top.'))
+text = '\n'.join(text)
+constructOrSkip(  'Document', site, 'index_html'
+                               , title =       translate('Home')
+                               , text_format='html'
+                               , text=text)
+doActionForOrSkip(site.index_html, 'direct_publish')
+
+# default folders
+constructOrSkip('Huge Plinn Folder', site, 'Members', title =  translate('Members'))
+#constructOrSkip('Huge Plinn Folder', site, 'global_settings', title = translate('Portlets'))
+if not hasattr(site, 'global_settings') :
+       site.manage_addProduct['OFSP'].manage_addFolder('global_settings')
+if not site.global_settings.hasProperty('noIndex'):
+       site.global_settings.manage_addProperty('noIndex', True, 'boolean')
+
+# left boxes
+constructOrSkip('Mosaic Document', site.global_settings, 'left_boxes', title=translate('Left boxes'))
+lb = site.global_settings.left_boxes
+addBlockOrSkip(lb, 'Tree Box Block', 0, id='nav_tree')
+lb.nav_tree.saveBlock(filteredMetaTypes={'text' : ['Huge Plinn Folder', 'Portfolio', 'Topic']})
+doActionForOrSkip(lb, 'direct_publish')
+
+# right boxes
+constructOrSkip('Mosaic Document', site.global_settings, 'right_boxes', title=translate('Right boxes'))
+rb = site.global_settings.right_boxes
+addBlockOrSkip(rb, 'Action Box Block', 0, id='global_actions')
+rb.global_actions.saveBlock(boxTitle={'text' : translate('Global actions')}, categories={'text' : ['global']})
+addBlockOrSkip(rb, 'Action Box Block', 0, id='workflow_actions')
+rb.workflow_actions.saveBlock(boxTitle={'text' : translate('Workflow')}, categories={'text' : ['workflow']})
+doActionForOrSkip(rb, 'direct_publish')
+
+# tools settings
+mtool = getToolByName(site, 'portal_membership')
+mtool.setMemberAreaPortalType('Huge Plinn Folder')
+
+gtool = getToolByName(site, 'portal_groups')
+gtool.setGroupWorkspaceContainerType('Huge Plinn Folder')
+gtool.setGroupWorkspaceType('Huge Plinn Folder')
+
+caltool = getToolByName(site, 'portal_calendar')
+caltool.configureTool(['created', 'modified', 'DateTimeOriginal'], [9, 18])
+
+pimtool = getToolByName(site, 'portal_image_manipulation')
+if not pimtool.hasObject('image') :
+       pimtool.manage_addProduct['OFSP'].manage_addFolder('image')
+if not pimtool.hasObject('tile') :
+       pimtool.manage_addProduct['OFSP'].manage_addFolder('tile')
+
+ctool = getToolByName(site, 'portal_catalog')
+if not 'position' in ctool.indexes() :
+       ctool.manage_addProduct['ProxyIndex'].manage_addProxyIndex('position',
+               extra = { 'idx_type' : 'FieldIndex'
+                       , 'value_expr' : 'python:object.getParentNode().getObjectPosition(object.getId())'})
+
+# Caches
+HTTPCache = site.HTTPCache
+HTTPCache.manage_editProps(title='Accelerated HTTP Cache',
+                                                  settings={'anonymous_only' : False, 'interval' : 3600,'notify_urls' : []})
+
+gtool = getToolByName(site, 'portal_groups')
+gtool.ZCacheable_setManagerId('rcm')
+
+return 'Various Plinn settings imported'
\ No newline at end of file