Skip to content

Commit

Permalink
Merge pull request #7 from zestsoftware/maurits-default-page
Browse files Browse the repository at this point in the history
Show extra factory menu items for parent of default page.
  • Loading branch information
jone committed Mar 3, 2014
2 parents 9798ece + 6d9851f commit 7ec16e1
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 5 deletions.
3 changes: 2 additions & 1 deletion docs/HISTORY.txt
Expand Up @@ -5,7 +5,8 @@ Changelog
2.2.3 (unreleased)
------------------

- Nothing changed yet.
- Show extra factory menu items for parent of default page.
[maurits]


2.2.2 (2013-08-26)
Expand Down
19 changes: 16 additions & 3 deletions ftw/contentmenu/menu.py
@@ -1,4 +1,4 @@
from Acquisition import aq_inner
from Acquisition import aq_inner, aq_parent
from Products.CMFCore.interfaces import IActionProvider
from Products.CMFCore.utils import getToolByName, _checkPermission
from Products.CMFPlone import PloneMessageFactory as _
Expand Down Expand Up @@ -204,7 +204,13 @@ def available(self):
actions_tool = getToolByName(self.context, 'portal_actions')
provider = getattr(actions_tool, 'portal_types', None)
if IActionProvider.providedBy(provider):
type_actions = provider.listActionInfos(object=self.context,
# Get folder_factories of container.
context = aq_inner(self.context)
if self._addingToParent():
container = aq_parent(context)
else:
container = context
type_actions = provider.listActionInfos(object=container,
category='folder_factories', max=1)
if len(type_actions) > 0:
return True
Expand All @@ -225,7 +231,14 @@ def getMenuItems(self, context, request):
actions_tool = getToolByName(aq_inner(context), 'portal_actions')
provider = getattr(actions_tool, 'portal_types', None)
if IActionProvider.providedBy(provider):
type_actions = provider.listActionInfos(object=context,
# Get folder_factories of container.
context_state = getMultiAdapter((context, request),
name='plone_context_state')
if context_state.is_structural_folder():
container = context
else:
container = context_state.folder()
type_actions = provider.listActionInfos(object=container,
category='folder_factories')

if type_actions:
Expand Down
13 changes: 12 additions & 1 deletion ftw/contentmenu/tests/test_menu.py
Expand Up @@ -76,7 +76,7 @@ def test_actionsmenu_items_from_typestool(self):
actions = self.menu.getActionsMenuItems(self.folder, self.request)
self.assertIn('tt_test', [a['extra']['id'] for a in actions])

def test_worklfow_menu_items(self):
def test_workflow_menu_items(self):
actions = self.menu.getWorkflowMenuItems(self.folder.doc1,
self.request)
self.assertIn('workflow-transition-submit',
Expand Down Expand Up @@ -136,3 +136,14 @@ def test_post_menu_item_adapter(self):
# .. then we should not have any more actions
actions = self.menu.getMenuItems(self.folder, self.request)
self.assertEqual(len(actions), 0)

def test_menu_of_default_page_includes_factory_actions(self):
folder_fti = self.portal.portal_types['Folder']
folder_fti.addAction('test_factory_action',
'Test Factory Action',
'string:${object_url}', '', '',
'folder_factories')
self.folder.default_page = 'doc1'
actions = self.menu.getMenuItems(self.folder.doc1, self.request)
self.assertIn('test_factory_action',
[a['extra']['id'] for a in actions])

0 comments on commit 7ec16e1

Please sign in to comment.