web/views/treeview.py
changeset 3377 dd9d292b6a6d
parent 3369 7b88d12b4ee2
child 3451 6b46d73823f5
equal deleted inserted replaced
3376:f5c69485381f 3377:dd9d292b6a6d
    18 
    18 
    19 def treecookiename(treeid):
    19 def treecookiename(treeid):
    20     return str('%s-treestate' % treeid)
    20     return str('%s-treestate' % treeid)
    21 
    21 
    22 class TreeView(EntityView):
    22 class TreeView(EntityView):
    23     id = 'treeview'
    23     __regid__ = 'treeview'
    24     itemvid = 'treeitemview'
    24     itemvid = 'treeitemview'
    25     subvid = 'oneline'
    25     subvid = 'oneline'
    26     css_classes = 'treeview widget'
    26     css_classes = 'treeview widget'
    27     title = _('tree view')
    27     title = _('tree view')
    28 
    28 
    72         self.call(*args, **allargs)
    72         self.call(*args, **allargs)
    73 
    73 
    74 class FileTreeView(TreeView):
    74 class FileTreeView(TreeView):
    75     """specific version of the treeview to display file trees
    75     """specific version of the treeview to display file trees
    76     """
    76     """
    77     id = 'filetree'
    77     __regid__ = 'filetree'
    78     css_classes = 'treeview widget filetree'
    78     css_classes = 'treeview widget filetree'
    79     title = _('file tree view')
    79     title = _('file tree view')
    80 
    80 
    81     def call(self, subvid=None, treeid=None, initial_load=True, **kwargs):
    81     def call(self, subvid=None, treeid=None, initial_load=True, **kwargs):
    82         super(FileTreeView, self).call(treeid=treeid, subvid='filetree-oneline',
    82         super(FileTreeView, self).call(treeid=treeid, subvid='filetree-oneline',
    86     """inner view used by the TreeItemView instead of oneline view
    86     """inner view used by the TreeItemView instead of oneline view
    87 
    87 
    88     This view adds an enclosing <span> with some specific CSS classes
    88     This view adds an enclosing <span> with some specific CSS classes
    89     around the oneline view. This is needed by the jquery treeview plugin.
    89     around the oneline view. This is needed by the jquery treeview plugin.
    90     """
    90     """
    91     id = 'filetree-oneline'
    91     __regid__ = 'filetree-oneline'
    92 
    92 
    93     def cell_call(self, row, col):
    93     def cell_call(self, row, col):
    94         entity = self.rset.get_entity(row, col)
    94         entity = self.rset.get_entity(row, col)
    95         if ITree.is_implemented_by(entity.__class__) and not entity.is_leaf():
    95         if ITree.is_implemented_by(entity.__class__) and not entity.is_leaf():
    96             self.w(u'<div class="folder">%s</div>\n' % entity.view('oneline'))
    96             self.w(u'<div class="folder">%s</div>\n' % entity.view('oneline'))
    99             self.w(u'<div class="file">%s</div>\n' % entity.view('oneline'))
    99             self.w(u'<div class="file">%s</div>\n' % entity.view('oneline'))
   100 
   100 
   101 
   101 
   102 class DefaultTreeViewItemView(EntityView):
   102 class DefaultTreeViewItemView(EntityView):
   103     """default treeitem view for entities which don't implement ITree"""
   103     """default treeitem view for entities which don't implement ITree"""
   104     id = 'treeitemview'
   104     __regid__ = 'treeitemview'
   105 
   105 
   106     def cell_call(self, row, col, vid='oneline', parentvid='treeview', treeid=None):
   106     def cell_call(self, row, col, vid='oneline', parentvid='treeview', treeid=None):
   107         assert treeid is not None
   107         assert treeid is not None
   108         entity = self.rset.get_entity(row, col)
   108         entity = self.rset.get_entity(row, col)
   109         itemview = self.view(vid, self.rset, row=row, col=col)
   109         itemview = self.view(vid, self.rset, row=row, col=col)
   116 class TreeViewItemView(EntityView):
   116 class TreeViewItemView(EntityView):
   117     """specific treeitem view for entities which implement ITree
   117     """specific treeitem view for entities which implement ITree
   118 
   118 
   119     (each item should be expandable if it's not a tree leaf)
   119     (each item should be expandable if it's not a tree leaf)
   120     """
   120     """
   121     id = 'treeitemview'
   121     __regid__ = 'treeitemview'
       
   122     __select__ = EntityView.__select__ & implements(ITree)
   122     default_branch_state_is_open = False
   123     default_branch_state_is_open = False
   123     __select__ = EntityView.__select__ & implements(ITree)
       
   124 
   124 
   125     def open_state(self, eeid, treeid):
   125     def open_state(self, eeid, treeid):
   126         cookies = self.req.get_cookie()
   126         cookies = self.req.get_cookie()
   127         treestate = cookies.get(treecookiename(treeid))
   127         treestate = cookies.get(treecookiename(treeid))
   128         if treestate:
   128         if treestate: