diff --git a/bower.json b/bower.json index 8c3f434..ee11c2e 100644 --- a/bower.json +++ b/bower.json @@ -23,6 +23,7 @@ "angular-animate": "1.2.14", "angular-loading-bar": "0.4.2", "angular-sanitize": "1.2.14", - "angular-bootstrap": "0.10.0" + "angular-bootstrap": "0.10.0", + "angular-bootstrap-nav-tree": "*" } } diff --git a/src/plone/app/angularjs/api/api.py b/src/plone/app/angularjs/api/api.py index 622eff4..edb9896 100644 --- a/src/plone/app/angularjs/api/api.py +++ b/src/plone/app/angularjs/api/api.py @@ -1,4 +1,7 @@ # -*- coding: utf-8 -*- +from Acquisition import aq_chain +from Products.CMFCore.interfaces import IContentish +from Products.CMFCore.interfaces import IFolderish from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile from Products.Five.browser import BrowserView from zope.component.hooks import getSite @@ -118,3 +121,36 @@ def _get_children(context): ) if brain.exclude_from_nav is not True ] ) + + def folder_children(self, request): + portal = getSite() + portal_path = '/'.join(portal.getPhysicalPath()) + path = request.get('path') + if not path: + path = portal_path + else: + path = portal_path + path + try: + folder = portal.restrictedTraverse(path) + except KeyError: + return json.dumps([]) + if not IFolderish.providedBy(folder): + for item in aq_chain(folder): + if IFolderish.providedBy(item): + folder = item + break + return json.dumps( + [ + { + 'id': obj[1].id, + 'title': obj[1].title, + 'label': obj[1].title, + 'description': obj[1].description, + 'url': '/'.join(obj[1].getPhysicalPath()), + 'children': [] + } + for obj in folder.objectItems() + if IContentish.providedBy(obj[1]) + and obj[1].exclude_from_nav is not True + ] + ) diff --git a/src/plone/app/angularjs/app/index.html b/src/plone/app/angularjs/app/index.html index 07020c8..37d63f1 100644 --- a/src/plone/app/angularjs/app/index.html +++ b/src/plone/app/angularjs/app/index.html @@ -6,7 +6,9 @@ + + @@ -16,9 +18,11 @@ + +
diff --git a/src/plone/app/angularjs/app/navigation-portlet.tpl.html b/src/plone/app/angularjs/app/navigation-portlet.tpl.html index 2c78c06..b52197a 100644 --- a/src/plone/app/angularjs/app/navigation-portlet.tpl.html +++ b/src/plone/app/angularjs/app/navigation-portlet.tpl.html @@ -1,4 +1,4 @@ -