use z3c.table for links viewlet

This commit is contained in:
Frédéric Péters 2013-07-17 11:25:51 +02:00
parent c7dcf3b323
commit 9a9f29fb46
2 changed files with 39 additions and 8 deletions

View File

@ -1,4 +1,4 @@
from zope.interface import implements, implementer
from zope.interface import Interface, implements, implementer
from five import grok
from zope import schema
from plone.directives import form
@ -43,6 +43,32 @@ grok.context(IDmsDocument)
from collective.dms.basecontent.browser.viewlets import BaseViewlet, DmsBelowContentViewletManager
from collective.dms.basecontent.browser.listing import BaseTable, BaseTitleColumn
from collective.dms.basecontent.browser import column
class LinksTable(BaseTable):
def setUpColumns(self):
columns = super(LinksTable, self).setUpColumns()
column_names = [column.__name__ for column in columns]
selected_columns = ('dms.delete', 'dms.title')
return [column for column in columns if column.__name__ in selected_columns]
class TitleColumn(BaseTitleColumn):
grok.adapts(Interface, Interface, LinksTable)
def getLinkContent(self, item):
return item.getObject().folder.to_object.Title()
def getLinkURL(self, item):
return item.getObject().folder.to_object.absolute_url()
class DeleteColumn(column.DeleteColumn):
grok.name('dms.delete')
grok.adapts(Interface, Interface, LinksTable)
class LinkViewlet(grok.Viewlet):
grok.template('linksviewlet')
grok.viewletmanager(DmsBelowContentViewletManager)
@ -50,9 +76,16 @@ class LinkViewlet(grok.Viewlet):
portal_type = 'pfwbgedlink'
label = _(u"Filed in Folders")
@property
def table(self):
table = LinksTable(self.context, self.request)
table.values = self.links()
table.update()
return table
def links(self):
links = []
for child in self.context.values():
for child in self.context.getFolderContents():
if child.portal_type != 'pfwbgedlink':
continue
links.append(child)

View File

@ -1,10 +1,8 @@
<fieldset>
<tal:block tal:define="links viewlet/links">
<fieldset tal:condition="links">
<legend
i18n:translate=""
tal:content="viewlet/label">label</legend>
<ul>
<li tal:repeat="link viewlet/links"><a tal:attributes="href
link/folder/to_object/absolute_url"
tal:content="link/folder/to_object/Title">plop</a></li>
</ul>
<table tal:replace="structure viewlet/table/render"/>
</fieldset>
</tal:block>