web/views/boxes.py
changeset 3451 6b46d73823f5
parent 3377 dd9d292b6a6d
child 3491 48b26bfd6f02
equal deleted inserted replaced
3448:495862266785 3451:6b46d73823f5
    38 
    38 
    39     title = _('actions')
    39     title = _('actions')
    40     order = 2
    40     order = 2
    41 
    41 
    42     def call(self, view=None, **kwargs):
    42     def call(self, view=None, **kwargs):
    43         _ = self.req._
    43         _ = self._cw._
    44         title = _(self.title)
    44         title = _(self.title)
    45         if self.rset:
    45         if self.cw_rset:
    46             etypes = self.rset.column_types(0)
    46             etypes = self.cw_rset.column_types(0)
    47             if len(etypes) == 1:
    47             if len(etypes) == 1:
    48                 plural = self.rset.rowcount > 1 and 'plural' or ''
    48                 plural = self.cw_rset.rowcount > 1 and 'plural' or ''
    49                 etypelabel = display_name(self.req, iter(etypes).next(), plural)
    49                 etypelabel = display_name(self._cw, iter(etypes).next(), plural)
    50                 title = u'%s - %s' % (title, etypelabel.lower())
    50                 title = u'%s - %s' % (title, etypelabel.lower())
    51         box = BoxWidget(title, self.id, _class="greyBoxFrame")
    51         box = BoxWidget(title, self.__regid__, _class="greyBoxFrame")
    52         self._menus_in_order = []
    52         self._menus_in_order = []
    53         self._menus_by_id = {}
    53         self._menus_by_id = {}
    54         # build list of actions
    54         # build list of actions
    55         actions = self.vreg['actions'].possible_actions(self.req, self.rset,
    55         actions = self._cw.vreg['actions'].possible_actions(self._cw, self.cw_rset,
    56                                                         view=view)
    56                                                         view=view)
    57         other_menu = self._get_menu('moreactions', _('more actions'))
    57         other_menu = self._get_menu('moreactions', _('more actions'))
    58         for category, defaultmenu in (('mainactions', box),
    58         for category, defaultmenu in (('mainactions', box),
    59                                       ('moreactions', other_menu),
    59                                       ('moreactions', other_menu),
    60                                       ('addrelated', None)):
    60                                       ('addrelated', None)):
    83     def _get_menu(self, id, title=None, label_prefix=None):
    83     def _get_menu(self, id, title=None, label_prefix=None):
    84         try:
    84         try:
    85             return self._menus_by_id[id]
    85             return self._menus_by_id[id]
    86         except KeyError:
    86         except KeyError:
    87             if title is None:
    87             if title is None:
    88                 title = self.req._(id)
    88                 title = self._cw._(id)
    89             self._menus_by_id[id] = menu = BoxMenu(title)
    89             self._menus_by_id[id] = menu = BoxMenu(title)
    90             menu.label_prefix = label_prefix
    90             menu.label_prefix = label_prefix
    91             self._menus_in_order.append(menu)
    91             self._menus_in_order.append(menu)
    92             return menu
    92             return menu
    93 
    93 
   120 <input tabindex="%s" type="submit" id="rqlboxsubmit" class="rqlsubmit" value="" />
   120 <input tabindex="%s" type="submit" id="rqlboxsubmit" class="rqlsubmit" value="" />
   121 </td></tr></table>
   121 </td></tr></table>
   122 </form>"""
   122 </form>"""
   123 
   123 
   124     def call(self, view=None, **kwargs):
   124     def call(self, view=None, **kwargs):
   125         req = self.req
   125         req = self._cw
   126         if req.form.pop('__fromsearchbox', None):
   126         if req.form.pop('__fromsearchbox', None):
   127             rql = req.form.get('rql', '')
   127             rql = req.form.get('rql', '')
   128         else:
   128         else:
   129             rql = ''
   129             rql = ''
   130         form = self.formdef % (req.build_url('view'), req.next_tabindex(),
   130         form = self.formdef % (req.build_url('view'), req.next_tabindex(),
   131                                xml_escape(rql), req.next_tabindex())
   131                                xml_escape(rql), req.next_tabindex())
   132         title = u"""<span onclick="javascript: toggleVisibility('rqlinput')">%s</span>""" % req._(self.title)
   132         title = u"""<span onclick="javascript: toggleVisibility('rqlinput')">%s</span>""" % req._(self.title)
   133         box = BoxWidget(title, self.id, _class="searchBoxFrame", islist=False, escape=False)
   133         box = BoxWidget(title, self.__regid__, _class="searchBoxFrame", islist=False, escape=False)
   134         box.append(BoxHtml(form))
   134         box.append(BoxHtml(form))
   135         box.render(self.w)
   135         box.render(self.w)
   136 
   136 
   137 
   137 
   138 # boxes disabled by default ###################################################
   138 # boxes disabled by default ###################################################
   145     visible = False
   145     visible = False
   146     title = _('possible views')
   146     title = _('possible views')
   147     order = 10
   147     order = 10
   148 
   148 
   149     def call(self, **kwargs):
   149     def call(self, **kwargs):
   150         box = BoxWidget(self.req._(self.title), self.id)
   150         box = BoxWidget(self._cw._(self.title), self.__regid__)
   151         views = [v for v in self.vreg['views'].possible_views(self.req,
   151         views = [v for v in self._cw.vreg['views'].possible_views(self._cw,
   152                                                               rset=self.rset)
   152                                                               rset=self.cw_rset)
   153                  if v.category != 'startupview']
   153                  if v.category != 'startupview']
   154         for category, views in self.sort_actions(views):
   154         for category, views in self.sort_actions(views):
   155             menu = BoxMenu(category)
   155             menu = BoxMenu(category)
   156             for view in views:
   156             for view in views:
   157                 menu.append(self.box_action(view))
   157                 menu.append(self.box_action(view))
   166     visible = False # disabled by default
   166     visible = False # disabled by default
   167     title = _('startup views')
   167     title = _('startup views')
   168     order = 70
   168     order = 70
   169 
   169 
   170     def call(self, **kwargs):
   170     def call(self, **kwargs):
   171         box = BoxWidget(self.req._(self.title), self.id)
   171         box = BoxWidget(self._cw._(self.title), self.__regid__)
   172         for view in self.vreg['views'].possible_views(self.req, None):
   172         for view in self._cw.vreg['views'].possible_views(self._cw, None):
   173             if view.category == 'startupview':
   173             if view.category == 'startupview':
   174                 box.append(self.box_action(view))
   174                 box.append(self.box_action(view))
   175 
   175 
   176         if not box.is_empty():
   176         if not box.is_empty():
   177             box.render(self.w)
   177             box.render(self.w)
   187         """display a list of entities by calling their <item_vid> view"""
   187         """display a list of entities by calling their <item_vid> view"""
   188         if title:
   188         if title:
   189             self.w(u'<div class="sideBoxTitle"><span>%s</span></div>' % title)
   189             self.w(u'<div class="sideBoxTitle"><span>%s</span></div>' % title)
   190         self.w(u'<div class="%s"><div class="sideBoxBody">' % boxclass)
   190         self.w(u'<div class="%s"><div class="sideBoxBody">' % boxclass)
   191         # if not too much entities, show them all in a list
   191         # if not too much entities, show them all in a list
   192         maxrelated = self.req.property_value('navigation.related-limit')
   192         maxrelated = self._cw.property_value('navigation.related-limit')
   193         if self.rset.rowcount <= maxrelated:
   193         if self.cw_rset.rowcount <= maxrelated:
   194             if len(self.rset) == 1:
   194             if len(self.cw_rset) == 1:
   195                 self.wview('incontext', self.rset, row=0)
   195                 self.wview('incontext', self.cw_rset, row=0)
   196             elif 1 < len(self.rset) < 5:
   196             elif 1 < len(self.cw_rset) < 5:
   197                 self.wview('csv', self.rset)
   197                 self.wview('csv', self.cw_rset)
   198             else:
   198             else:
   199                 self.wview('simplelist', self.rset)
   199                 self.wview('simplelist', self.cw_rset)
   200         # else show links to display related entities
   200         # else show links to display related entities
   201         else:
   201         else:
   202             self.rset.limit(maxrelated)
   202             self.cw_rset.limit(maxrelated)
   203             rql = self.rset.printable_rql(encoded=False)
   203             rql = self.cw_rset.printable_rql(encoded=False)
   204             self.wview('simplelist', self.rset)
   204             self.wview('simplelist', self.cw_rset)
   205             self.w(u'[<a href="%s">%s</a>]' % (self.build_url(rql=rql),
   205             self.w(u'[<a href="%s">%s</a>]' % (self._cw.build_url(rql=rql),
   206                                                self.req._('see them all')))
   206                                                self._cw._('see them all')))
   207         self.w(u'</div>\n</div>\n')
   207         self.w(u'</div>\n</div>\n')