web/views/treeview.py
changeset 465 1158231e7360
parent 464 75d242975792
parent 443 3c0e9c1d645d
child 472 958805c342b6
equal deleted inserted replaced
464:75d242975792 465:1158231e7360
     7 from cubicweb.web.views.baseviews import OneLineView
     7 from cubicweb.web.views.baseviews import OneLineView
     8 
     8 
     9 class TreeView(EntityView):
     9 class TreeView(EntityView):
    10     id = 'treeview'
    10     id = 'treeview'
    11     accepts = ('Any',)
    11     accepts = ('Any',)
    12     fstree = False
       
    13     itemvid = 'treeitemview'
    12     itemvid = 'treeitemview'
       
    13     css_classes = 'treeview widget'
       
    14     title = _('tree view')
    14     
    15     
    15     def call(self, subvid=None):
    16     def call(self, subvid=None):
    16         if subvid is None and 'subvid' in self.req.form:
    17         if subvid is None and 'subvid' in self.req.form:
    17             subvid = self.req.form.pop('subvid') # consume it
    18             subvid = self.req.form.pop('subvid') # consume it
    18         if subvid is None:
    19         if subvid is None:
    19             subvid = 'oneline'
    20             subvid = 'oneline'
    20         self.req.add_css('jquery.treeview.css')
    21         self.req.add_css('jquery.treeview.css')
    21         self.req.add_js(('cubicweb.ajax.js', 'jquery.treeview.js', 'cubicweb.widgets.js'))
    22         self.req.add_js(('cubicweb.ajax.js', 'jquery.treeview.js', 'cubicweb.widgets.js'))
    22         css_classes = 'treeview widget'
       
    23         if self.fstree:
       
    24             css_classes += ' filetree'
       
    25         # XXX noautoload is a quick hack to avoid treeview to be rebuilt
    23         # XXX noautoload is a quick hack to avoid treeview to be rebuilt
    26         #     after a json query and avoid double toggling bugs.
    24         #     after a json query and avoid double toggling bugs.
    27         #     Need to find a way to do that cleanly.
    25         #     Need to find a way to do that cleanly.
    28         if 'noautoload' in self.req.form:
    26         if 'noautoload' in self.req.form:
    29             self.w(u'<ul class="%s" cubicweb:wdgtype="TreeView">' % css_classes)
    27             self.w(u'<ul class="%s" cubicweb:wdgtype="TreeView">' % self.css_classes)
    30         else:
    28         else:
    31             self.w(u'<ul class="%s" cubicweb:loadtype="auto" cubicweb:wdgtype="TreeView">'
    29             self.w(u'<ul class="%s" cubicweb:loadtype="auto" cubicweb:wdgtype="TreeView">'
    32                    % css_classes)
    30                    % self.css_classes)
    33         for rowidx in xrange(len(self.rset)):
    31         for rowidx in xrange(len(self.rset)):
    34             self.wview(self.itemvid, self.rset, row=rowidx, col=0,
    32             self.wview(self.itemvid, self.rset, row=rowidx, col=0,
    35                        vid=subvid, parentvid=self.id)
    33                        vid=subvid, parentvid=self.id)
    36         self.w(u'</ul>')
    34         self.w(u'</ul>')
    37         
    35         
    38 
    36 
    39 class FileTreeView(TreeView):
    37 class FileTreeView(TreeView):
    40     """specific version of the treeview to display file trees
    38     """specific version of the treeview to display file trees
    41     """
    39     """
    42     id = 'filetree'
    40     id = 'filetree'
    43     fstree = True
    41     css_classes = 'treeview widget filetree'
       
    42     title = _('file tree view')
    44 
    43 
    45     def call(self, subvid=None):
    44     def call(self, subvid=None):
    46         super(FileTreeView, self).call(subvid='filetree-oneline')
    45         super(FileTreeView, self).call(subvid='filetree-oneline')
    47 
    46 
    48 
    47 
    49 
    48 
    50 class FileItemInnerView(OneLineView):
    49 class FileItemInnerView(EntityView):
    51     """inner view used by the TreeItemView instead of oneline view
    50     """inner view used by the TreeItemView instead of oneline view
    52 
    51 
    53     This view adds an enclosing <span> with some specific CSS classes
    52     This view adds an enclosing <span> with some specific CSS classes
    54     around the oneline view. This is needed by the jquery treeview plugin.
    53     around the oneline view. This is needed by the jquery treeview plugin.
    55     """
    54     """