possibility to unfile items from classifying folders (#3875)

This commit is contained in:
Frédéric Péters 2013-12-30 14:50:51 +01:00
parent 4602282e10
commit 0fd8794d83
4 changed files with 40 additions and 1 deletions

View File

@ -30,6 +30,11 @@
image="pfwbgedfolder_icon.png" image="pfwbgedfolder_icon.png"
/> />
<browser:resource
name="unlink_icon.png"
image="unlink_icon.png"
/>
<browser:page <browser:page
name="view" name="view"
for="pfwbged.folder.IFolder" for="pfwbged.folder.IFolder"

View File

@ -3,6 +3,7 @@ from zope.interface import implements
from five import grok from five import grok
from zope import component from zope import component
from zope import schema from zope import schema
from zope.interface import Interface
from zc.relation.interfaces import ICatalog from zc.relation.interfaces import ICatalog
from zope.app.intid.interfaces import IIntIds from zope.app.intid.interfaces import IIntIds
@ -30,6 +31,9 @@ from zope.app.intid.interfaces import IIntIds
from z3c.relationfield import RelationValue from z3c.relationfield import RelationValue
from zope.lifecycleevent.interfaces import IObjectAddedEvent from zope.lifecycleevent.interfaces import IObjectAddedEvent
import z3c.table.column
from pfwbged.collection.searchview import ResultsTable from pfwbged.collection.searchview import ResultsTable
from collective.dms.thesaurus.keywordsfield import ThesaurusKeywords from collective.dms.thesaurus.keywordsfield import ThesaurusKeywords
@ -108,11 +112,39 @@ grok.templatedir('templates')
grok.context(IDexterityContainer) grok.context(IDexterityContainer)
class ItemsTable(ResultsTable):
def setUpColumns(self):
columns = super(ItemsTable, self).setUpColumns()
# do not include the delete column, from classifying folders we only
# provide an icon for unlink
columns = [x for x in columns if x.__name__ != 'dms.delete']
return columns
from collective.dms.basecontent.browser import column
class UnfileColumn(column.IconColumn, column.LinkColumn):
grok.name('pfwbged.folder.unfile')
grok.adapts(Interface, Interface, ItemsTable)
header = u''
iconName = "++resource++unlink_icon.png"
linkContent = _('Unfile')
def getLinkURL(self, item):
for id, child in item.getObject().contentItems():
if not ILink.providedBy(child):
continue
if child.folder.to_object == self.context:
return item.getURL() + '/' + id + '/delete_confirmation'
return '#'
class ClassifiedItems: class ClassifiedItems:
@property @property
def table(self): def table(self):
table = ResultsTable(self.context, self.request) table = ItemsTable(self.context, self.request)
table.values = self.documents() table.values = self.documents()
table.update() table.update()
return table return table

View File

@ -90,6 +90,8 @@ class DeleteColumn(column.DeleteColumn):
grok.name('dms.delete') grok.name('dms.delete')
grok.adapts(Interface, Interface, LinksTable) grok.adapts(Interface, Interface, LinksTable)
iconName = "++resource++unlink_icon.png"
class LinkViewlet(BaseViewlet): class LinkViewlet(BaseViewlet):
grok.order(15) grok.order(15)

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B