Add 'Create Contact' link on position view

This commit is contained in:
Cédric Messiant 2013-10-09 14:17:39 +02:00
parent 481ad7443c
commit 9b6ef51621
4 changed files with 55 additions and 0 deletions

View File

@ -318,6 +318,18 @@ class AddContactFromOrganization(AddContact):
super(AddContactFromOrganization, self).updateWidgets()
class AddContactFromPosition(AddContact):
def updateWidgets(self):
organization = self.context.get_organization()
if 'oform.widgets.organization' not in self.request.form:
self.request.form['oform.widgets.organization'] = '/'.join(
organization.getPhysicalPath())
if 'oform.widgets.position' not in self.request.form:
self.request.form['oform.widgets.position'] = '/'.join(
self.context.getPhysicalPath())
super(AddContactFromPosition, self).updateWidgets()
class AddOrganization(form.AddForm):
implements(IFieldsAndContentProvidersForm)
contentProviders = ContentProviders(['organization-ms'])

View File

@ -79,6 +79,13 @@
permission="cmf.AddPortalContent"
/>
<browser:page
name="add-contact"
for="..content.position.IPosition"
class=".addcontact.AddContactFromPosition"
permission="cmf.AddPortalContent"
/>
<browser:page
name="add-organization"
for="*"

View File

@ -1,3 +1,5 @@
from AccessControl import getSecurityManager
from zope.component import getUtility
from zope.schema.interfaces import IVocabularyFactory
@ -6,6 +8,26 @@ from collective.contact.core.browser.utils import get_ttw_fields
from collective.contact.core.interfaces import IContactable
ADDNEW_OVERLAY = """
<script type="text/javascript">
$(document).ready(function(){
$('.addnewcontactfromposition').prepOverlay({
subtype: 'ajax',
filter: common_content_filter,
formselector: '#oform',
cssclass: 'overlay-contact-addnew',
closeselector: '[name="oform.buttons.cancel"]',
noform: function(el, pbo) {return 'reload';},
config: {
closeOnClick: false,
closeOnEsc: false
}
});
});
</script>
"""
class Position(BaseView):
name = ''
@ -35,3 +57,7 @@ class Position(BaseView):
# also show fields that were added TTW
self.ttw_fields = get_ttw_fields(position)
sm = getSecurityManager()
self.can_add = sm.checkPermission('Add portal content', self.context)
self.addnew_script = ADDNEW_OVERLAY

View File

@ -64,6 +64,16 @@
<div id="address"
tal:replace="structure view/render_address" />
<tal:addnew
tal:define="ajax_load request/ajax_load|nothing"
tal:condition="python: not ajax_load and view.can_add">
<a href="@@add-contact" class="addnewcontactfromposition"
i18n:translate=""
tal:attributes="href string:${context/absolute_url}/@@add-contact">
Create <tal:i18n i18n:name="name">Contact</tal:i18n></a>
<script tal:replace="structure view/addnew_script"></script>
</tal:addnew>
<tal:block tal:repeat="field view/ttw_fields">
<div class="field" tal:define="widget python: view.widgets[field]" tal:condition="widget/value">
<label><tal:block tal:content="python: widget.label" i18n:translate="" />:</label>