Exemplo n.º 1
0
    def getMenuItems(self, context, request):
        """Return menu item entries in a TAL-friendly form."""
        results = BaseFactoriesMenu.getMenuItems(self, context, request)
        
        factories_view = getMultiAdapter((context, request), name='folder_factories')

        haveMore = False
        include = None

        addContext = factories_view.default_page_add_context()
        if not addContext:
            return results
        allowedTypes = _allowedTypes(request, addContext)

        constraints = IConstrainTypes(addContext, None)
        if constraints is not None:
            include = constraints.getImmediatelyAddableTypes()
            if len(include) < len(allowedTypes):
                haveMore = True

        results.append({'title'       : _p(u'folder_add_to_default_page', default=u'Add to default page'),
                        'description' : _p(u'Add content to the default page'),
                        'action'      : None,
                        'selected'    : False,
                        'icon'        : None,
                        'extra'       : {'id': 'add-to-default', 'separator': 'actionSeparator', 'class': ''},
                        'submenu'     : None,
                        })

        results += factories_view.default_page_addable_types(include=include)

        if haveMore:
            url = '%s/folder_factories' % (addContext.absolute_url(),)
            results.append({ 'title'       : _p(u'folder_add_more', default=u'More\u2026'),
                             'description' : _p(u'Show all available content types'),
                             'action'      : url,
                             'selected'    : False,
                             'icon'        : None,
                             'extra'       : {'id': 'more', 'separator': None, 'class': ''},
                             'submenu'     : None,
                            })

        constraints = ISelectableConstrainTypes(addContext, None)
        if constraints is not None:
            if constraints.canSetConstrainTypes() and constraints.getDefaultAddableTypes():
                url = '%s/folder_constraintypes_form' % (addContext.absolute_url(),)
                results.append({'title'       : _p(u'folder_add_settings', default=u'Restrictions\u2026'),
                                'description' : _p(u'title_configure_addable_content_types', default=u'Configure which content types can be added here'),
                                'action'      : url,
                                'selected'    : False,
                                'icon'        : None,
                                'extra'       : {'id': 'settings', 'separator': None, 'class': ''},
                                'submenu'     : None,
                                })

        return results
Exemplo n.º 2
0
    def getMenuItems(self, context, request):
        """Return menu item entries in a TAL-friendly form."""
        factories_view = getMultiAdapter((context, request),
                                         name='folder_factories')

        haveMore = False
        include = None

        addContext = factories_view.add_context()
        allowedTypes = _allowedTypes(request, addContext)

        constraints = IConstrainTypes(addContext, None)
        if constraints is not None:
            include = constraints.getImmediatelyAddableTypes()
            if len(include) < len(allowedTypes):
                haveMore = True

        results = factories_view.addable_types(include=include)

        if haveMore:
            url = '%s/folder_factories' % (addContext.absolute_url(),)
            results.append({
                'title': _(u'folder_add_more', default=u'More\u2026'),
                'description': _(u'Show all available content types'),
                'action': url,
                'selected': False,
                'icon': None,
                'extra': {
                    'id': 'plone-contentmenu-more',
                    'separator': None,
                    'class': ''},
                'submenu': None,
            })

        constraints = ISelectableConstrainTypes(addContext, None)
        if constraints is not None:
            if constraints.canSetConstrainTypes() and \
                    constraints.getDefaultAddableTypes():
                url = '%s/folder_constraintypes_form' % (
                    addContext.absolute_url(),)
                results.append({
                    'title': _(u'folder_add_settings',
                               default=u'Restrictions\u2026'),
                    'description': _(
                        u'title_configure_addable_content_types',
                        default=u'Configure which content types can be '
                                u'added here'),
                    'action': url,
                    'selected': False,
                    'icon': None,
                    'extra': {
                        'id': 'plone-contentmenu-settings',
                        'separator': None,
                        'class': ''},
                    'submenu': None,
                    })

        # Also add a menu item to add items to the default page
        context_state = getMultiAdapter((context, request),
                                        name='plone_context_state')
        if context_state.is_structural_folder() and \
                context_state.is_default_page() and \
                self._contentCanBeAdded(context, request):
            results.append({
                'title': _(u'default_page_folder',
                           default=u'Add item to default page'),
                'description': _(
                    u'desc_default_page_folder',
                    default=u'If the default page is also a folder, '
                            u'add items to it from here.'),
                'action': context.absolute_url() + '/@@folder_factories',
                'selected': False,
                'icon': None,
                'extra': {
                    'id': 'plone-contentmenu-add-to-default-page',
                    'separator': None,
                    'class': 'pat-plone-modal'},
                'submenu': None,
                })

        return results
Exemplo n.º 3
0
    def getMenuItems(self, context, request):
        """Return menu item entries in a TAL-friendly form."""
        results = BaseFactoriesMenu.getMenuItems(self, context, request)

        factories_view = getMultiAdapter((context, request),
                                         name='folder_factories')

        haveMore = False
        include = None

        addContext = factories_view.default_page_add_context()
        if not addContext:
            return results
        allowedTypes = _allowedTypes(request, addContext)

        constraints = IConstrainTypes(addContext, None)
        if constraints is not None:
            include = constraints.getImmediatelyAddableTypes()
            if len(include) < len(allowedTypes):
                haveMore = True

        results.append({
            'title':
            _p(u'folder_add_to_default_page', default=u'Add to default page'),
            'description':
            _p(u'Add content to the default page'),
            'action':
            None,
            'selected':
            False,
            'icon':
            None,
            'extra': {
                'id': 'add-to-default',
                'separator': 'actionSeparator',
                'class': ''
            },
            'submenu':
            None,
        })

        results += factories_view.default_page_addable_types(include=include)

        if haveMore:
            url = '%s/folder_factories' % (addContext.absolute_url(), )
            results.append({
                'title':
                _p(u'folder_add_more', default=u'More\u2026'),
                'description':
                _p(u'Show all available content types'),
                'action':
                url,
                'selected':
                False,
                'icon':
                None,
                'extra': {
                    'id': 'more',
                    'separator': None,
                    'class': ''
                },
                'submenu':
                None,
            })

        constraints = ISelectableConstrainTypes(addContext, None)
        if constraints is not None:
            if constraints.canSetConstrainTypes(
            ) and constraints.getDefaultAddableTypes():
                url = '%s/folder_constraintypes_form' % (
                    addContext.absolute_url(), )
                results.append({
                    'title':
                    _p(u'folder_add_settings', default=u'Restrictions\u2026'),
                    'description':
                    _p(u'title_configure_addable_content_types',
                       default=
                       u'Configure which content types can be added here'),
                    'action':
                    url,
                    'selected':
                    False,
                    'icon':
                    None,
                    'extra': {
                        'id': 'settings',
                        'separator': None,
                        'class': ''
                    },
                    'submenu':
                    None,
                })

        return results
Exemplo n.º 4
0
 def get_addable_items(self):
     """
     Return menu item entries in a TAL-friendly form.
     """
     context = self.context
     request = self.request
     factories_view = getMultiAdapter(
         (context, request),
         name='folder_factories',
     )
     include = None
     addContext = factories_view.add_context()
     constraints = IConstrainTypes(addContext, None)
     if constraints is not None:
         include = constraints.getImmediatelyAddableTypes()
     results = factories_view.addable_types(include=include)
     results_with_icons = []
     for result in results:
         result['icon'] = 'menu-item-icon {0}'.format(self.icon('plus'))
         results_with_icons.append(result)
     results = results_with_icons
     constraints = ISelectableConstrainTypes(addContext, None)
     if constraints is not None:
         if constraints.canSetConstrainTypes() and \
                 constraints.getDefaultAddableTypes():
             url = '{0}/folder_constraintypes_form'.format(
                 addContext.absolute_url(),
             )
             results.append({
                 'title': _(u'folder_add_settings',
                            default=u'Restrictions'),
                 'description': _(
                     u'title_configure_addable_content_types',
                     default=u'Configure which content types can be '
                             u'added here',
                 ),
                 'action': url,
                 'selected': False,
                 'icon': 'menu-item-icon {0}'.format(self.icon('cog')),
                 'id': 'settings',
                 'extra': {
                     'id': 'plone-contentmenu-settings',
                     'separator': None,
                     'class': '',
                 },
                 'submenu': None,
             })
     # Also add a menu item to add items to the default page
     context_state = getMultiAdapter(
         (context, request),
         name='plone_context_state',
     )
     if context_state.is_structural_folder() and \
             context_state.is_default_page() and \
             self._contentCanBeAdded(context, request):
         results.append({
             'title': _(u'default_page_folder',
                        default=u'Add item to default page'),
             'description': _(
                 u'desc_default_page_folder',
                 default=u'If the default page is also a folder, '
                         u'add items to it from here.',
             ),
             'action': context.absolute_url() + '/@@folder_factories',
             'selected': False,
             'icon': 'menu-item-icon {0}'.format(self.icon('cog')),
             'id': 'special',
             'extra': {
                 'id': 'plone-contentmenu-add-to-default-page',
                 'separator': None,
                 'class': 'pat-plone-modal',
             },
             'submenu': None,
         })
     return results
Exemplo n.º 5
0
    def getMenuItems(self, context, request):
        """Return menu item entries in a TAL-friendly form."""
        factories_view = getMultiAdapter((context, request),
                                         name='folder_factories')

        haveMore = False
        include = None

        addContext = factories_view.add_context()
        allowedTypes = _allowedTypes(request, addContext)

        constraints = IConstrainTypes(addContext, None)
        if constraints is not None:
            include = constraints.getImmediatelyAddableTypes()
            if len(include) < len(allowedTypes):
                haveMore = True

        results = factories_view.addable_types(include=include)

        if haveMore:
            url = '%s/folder_factories' % (addContext.absolute_url(), )
            results.append({
                'title':
                _(u'folder_add_more', default=u'More\u2026'),
                'description':
                _(u'Show all available content types'),
                'action':
                url,
                'selected':
                False,
                'icon':
                None,
                'extra': {
                    'id': 'plone-contentmenu-more',
                    'separator': None,
                    'class': ''
                },
                'submenu':
                None,
            })

        constraints = ISelectableConstrainTypes(addContext, None)
        if constraints is not None:
            if constraints.canSetConstrainTypes() and \
                    constraints.getDefaultAddableTypes():
                url = '%s/folder_constraintypes_form' % (
                    addContext.absolute_url(), )
                results.append({
                    'title':
                    _(u'folder_add_settings', default=u'Restrictions\u2026'),
                    'description':
                    _(u'title_configure_addable_content_types',
                      default=u'Configure which content types can be '
                      u'added here'),
                    'action':
                    url,
                    'selected':
                    False,
                    'icon':
                    None,
                    'extra': {
                        'id': 'plone-contentmenu-settings',
                        'separator': None,
                        'class': ''
                    },
                    'submenu':
                    None,
                })

        # Also add a menu item to add items to the default page
        context_state = getMultiAdapter((context, request),
                                        name='plone_context_state')
        if context_state.is_structural_folder() and \
                context_state.is_default_page() and \
                self._contentCanBeAdded(context, request):
            results.append({
                'title':
                _(u'default_page_folder', default=u'Add item to default page'),
                'description':
                _(u'desc_default_page_folder',
                  default=u'If the default page is also a folder, '
                  u'add items to it from here.'),
                'action':
                context.absolute_url() + '/@@folder_factories',
                'selected':
                False,
                'icon':
                None,
                'extra': {
                    'id': 'plone-contentmenu-add-to-default-page',
                    'separator': None,
                    'class': 'pat-plone-modal'
                },
                'submenu':
                None,
            })

        return results