Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make it easy to override the way sub organizations are displayed on an organization by calling a @@suborganizations view #56

Merged
merged 3 commits into from Aug 30, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGES.rst
Expand Up @@ -7,6 +7,9 @@ Changelog
- On persons listed on the directory view, display held_positions when hovering
person title (tooltip).
[gbastien]
- Make it easy to override the way sub organizations are displayed on an
organization by calling a @@suborganizations view.
[gbastien]

1.20 (2018-07-20)
-----------------
Expand Down
8 changes: 8 additions & 0 deletions src/collective/contact/core/browser/configure.zcml
Expand Up @@ -28,6 +28,14 @@
permission="zope2.View"
/>

<browser:page
name="suborganizations"
for="collective.contact.core.content.organization.IOrganization"
class=".organization.SubOrganizations"
template="templates/suborganizations.pt"
permission="zope2.View"
/>

<browser:page
name="view"
for="..content.position.IPosition"
Expand Down
28 changes: 20 additions & 8 deletions src/collective/contact/core/browser/organization.py
@@ -1,16 +1,16 @@
from five import grok
# -*- coding: utf-8 -*-

from AccessControl import getSecurityManager

from plone import api

from collective.contact.core.browser.contactable import BaseView
from collective.contact.core.interfaces import IContactable
from collective.contact.core.behaviors import IContactDetails
from collective.contact.core.content.organization import IOrganization
from collective.contact.core.browser.utils import get_valid_url
from collective.contact.core.browser.contactable import BaseView
from collective.contact.core.browser.utils import date_to_DateTime
from collective.contact.core.browser.utils import get_valid_url
from collective.contact.core.content.organization import IOrganization
from collective.contact.core.interfaces import IContactable
from collective.contact.core.interfaces import IContactCoreParameters
from five import grok
from plone import api
from Products.Five import BrowserView


ADDNEW_OVERLAY = """
Expand Down Expand Up @@ -64,6 +64,18 @@ def display_date(self, date):
return self.context.toLocalizedTime(date_to_DateTime(date))


class SubOrganizations(BrowserView):

def __call__(self):
catalog = api.portal.get_tool('portal_catalog')
context_path = '/'.join(self.context.getPhysicalPath())
self.sub_organizations = catalog.searchResults(portal_type="organization",
path={'query': context_path,
'depth': 1},
sort_on='getObjPositionInParent')
return self.index()


class OtherContacts(grok.View):
"""Displays other contacts list"""
grok.name('othercontacts')
Expand Down
12 changes: 1 addition & 11 deletions src/collective/contact/core/browser/templates/organization.pt
Expand Up @@ -33,17 +33,7 @@

<metal:additional-fields use-macro="context/contact_core_macros/macros/additional-fields" />

<div id="sub_organizations" class="field" tal:condition="view/sub_organizations">
<label><tal:block i18n:translate="">Organizations in this organization</tal:block>:</label>
<ul>
<tal:block tal:repeat="sub_org view/sub_organizations">
<li><img tal:attributes="src string:${portal_url}/${sub_org/getIcon}" /> <a tal:attributes="href sub_org/getURL">
<span tal:replace="sub_org/Title"
i18n:translate="" />
</a></li>
</tal:block>
</ul>
</div>
<div tal:replace="structure context/@@suborganizations" />

<div id="positions" class="field" tal:condition="view/positions">
<label><tal:block i18n:translate="">Positions in this organization</tal:block>:</label>
Expand Down
20 changes: 20 additions & 0 deletions src/collective/contact/core/browser/templates/suborganizations.pt
@@ -0,0 +1,20 @@
<div xmlns="http://www.w3.org/1999/xhtml"
lang="en"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
i18n:domain="collective.contact.core"
tal:define="portal_url context/@@plone_portal_state/portal_url;">

<div id="sub_organizations" class="field" tal:condition="view/sub_organizations">
<label><tal:block i18n:translate="">Organizations in this organization</tal:block>:</label>
<ul>
<tal:block tal:repeat="sub_org view/sub_organizations">
<li><img tal:attributes="src string:${portal_url}/${sub_org/getIcon}" /> <a tal:attributes="href sub_org/getURL">
<span tal:replace="sub_org/Title"
i18n:translate="" />
</a></li>
</tal:block>
</ul>
</div>
</div>