def href_button(self, url, text, title=None, target=None, icon_name=None, **kw): """ Returns an etree object of a "button-like" ``<a href>`` tag. """ #~ logger.info('20121002 href_button %r',unicode(text)) if target: kw.update(target=target) if title: # Remember that Python 2.6 doesn't like if title is a Promise kw.update(title=unicode(title)) #~ return xghtml.E.a(text,href=url,title=title) kw.update(href=url) #~ if icon_name: if icon_name is not None: #~ btn = xghtml.E.button(type='button',class_='x-btn-text '+icon_name) #~ btn = xghtml.E.button( #~ type='button', #~ class_='x-btn-text '+icon_name, #~ onclick='function() {console.log(20121024)}') #~ return btn #~ return xghtml.E.a(btn,**kw) #~ kw.update(class_='x-btn-text '+icon_name) img = E.img(src=settings.SITE.build_media_url( 'lino', 'extjs', 'images', 'mjames', icon_name + '.png')) return E.a(img, **kw) else: #~ return E.span('[',xghtml.E.a(text,**kw),']') #~ kw.update(style='border-width:1px; border-color:black; border-style:solid;') return E.a(text, **kw)
def welcome_html(self, ui=None): """ Return a HTML version of the "This is APPLICATION version VERSION using ..." text. to be displayed in the About dialog, in the plain html footer, and maybe at other places. """ from django.utils.translation import ugettext as _ p = [] sep = '' if self.verbose_name: p.append(_("This is ")) if self.url: p.append( E.a(self.verbose_name, href=self.url, target='_blank')) else: p.append(E.b(self.verbose_name)) if self.version: p.append(' ') p.append(self.version) sep = _(' using ') for name, version, url in self.get_used_libs(html=E): p.append(sep) p.append(E.a(name, href=url, target='_blank')) p.append(' ') p.append(version) sep = ', ' return E.span(*p)
def href_button( self, url, text, title=None, target=None, icon_name=None, **kw): """ Returns an etree object of a "button-like" ``<a href>`` tag. """ # logger.info('20121002 href_button %s', unicode(text)) if target: kw.update(target=target) if title: # Remember that Python 2.6 doesn't like if title is a Promise kw.update(title=unicode(title)) #~ return xghtml.E.a(text,href=url,title=title) if not isinstance(text, (tuple, list)): text = (text,) if url is None: return E.b(*text) kw.update(href=url) if icon_name is not None: src = settings.SITE.build_media_url( 'lino', 'extjs', 'images', 'mjames', icon_name + '.png') img = E.img(src=src, alt=icon_name) return E.a(img, **kw) else: return E.a(*text, **kw)
def href_button(self, url, text, title=None, icon_name=None, **kw): """Returns an etree object of a ``<a href>`` tag to the given URL `url`. `url` is what goes into the `href` part. If `url` is `None`, then we return just a ``<b>`` tag. `text` is what goes between the ``<a>`` and the ``</a>``. This can be either a string or a tuple (or list) of strings (or etree elements). """ # logger.info('20121002 href_button %s', unicode(text)) if title: # Remember that Python 2.6 doesn't like if title is a Promise kw.update(title=str(title)) #~ return xghtml.E.a(text,href=url,title=title) if not isinstance(text, (tuple, list)): text = (text,) if url is None: return E.b(*text) kw.update(href=url) if icon_name is not None: src = settings.SITE.build_static_url( 'images', 'mjames', icon_name + '.png') img = E.img(src=src, alt=icon_name) return E.a(img, **kw) else: return E.a(*text, **kw)
def href_button(self, url, text, title=None, target=None, icon_name=None, **kw): """ Returns an etree object of a "button-like" ``<a href>`` tag. """ # logger.info('20121002 href_button %s', unicode(text)) if target: kw.update(target=target) if title: # Remember that Python 2.6 doesn't like if title is a Promise kw.update(title=unicode(title)) #~ return xghtml.E.a(text,href=url,title=title) if not isinstance(text, (tuple, list)): text = (text, ) if url is None: return E.b(*text) kw.update(href=url) if icon_name is not None: src = settings.SITE.build_static_url('images', 'mjames', icon_name + '.png') img = E.img(src=src, alt=icon_name) return E.a(img, **kw) else: return E.a(*text, **kw)
def welcome_html(self, ui=None): "See :meth:`ad.Site.welcome_html`." from django.utils.translation import ugettext as _ p = [] sep = '' if self.verbose_name: p.append(_("This is ")) if self.url: p.append( E.a(self.verbose_name, href=self.url, target='_blank')) else: p.append(E.b(self.verbose_name)) if self.version: p.append(' ') p.append(self.version) sep = _(' using ') for name, version, url in self.get_used_libs(html=E): p.append(sep) p.append(E.a(name, href=url, target='_blank')) p.append(' ') p.append(version) sep = ', ' return E.span(*p)
def get_file_button(self, text=None): if text is None: text = str(self) if self.file.name: url = settings.SITE.build_media_url(self.file.name) return E.a(text, href=url, target="_blank") return text
def get_file_button(self, text=None): if text is None: text = str(self) if self.file.name: url = settings.SITE.build_media_url(self.file.name) return E.a(text, href=url, target="_blank") return text
def get_help_url(self, docname=None, text=None, **kw): if text is None: text = unicode(_("the documentation")) url = settings.SITE.help_url if docname is not None: url = "%s/help/%s.html" % (url, docname) return E.a(text, href=url, **kw)
def when(self,obj,ar): #~ rv = dbutils.dtosl(obj.date) rv = dd.fdf(obj.date) if obj.url: rv = '\n'.join(rv.split()) # replaces spaces by newline to avoid large column rv = E.a(rv,href=obj.url) return rv
def when(self, obj, ar): #~ rv = dbutils.dtosl(obj.date) rv = dd.fdf(obj.date) if obj.url: # replaces spaces by newline to avoid large column rv = '\n'.join(rv.split()) rv = E.a(rv, href=obj.url) return rv
def show_menu(self, ar, mnu, level=1): """ Render the given menu as an HTML element. Used for writing test cases. """ if not isinstance(mnu, Menu): assert isinstance(mnu, MenuItem) if mnu.bound_action: sr = mnu.bound_action.actor.request( action=mnu.bound_action, user=ar.user, subst_user=ar.subst_user, requesting_panel=ar.requesting_panel, renderer=self, **mnu.params) url = sr.get_request_url() else: url = mnu.href assert mnu.label is not None if url is None: return E.p() # spacer return E.li(E.a(mnu.label, href=url, tabindex="-1")) items = [self.show_menu(ar, mi, level + 1) for mi in mnu.items] #~ print 20120901, items if level == 1: return E.ul(*items, class_='nav navbar-nav') if mnu.label is None: raise Exception("%s has no label" % mnu) if level == 2: cl = 'dropdown' menu_title = E.a(unicode(mnu.label), E.b(' ', class_="caret"), href="#", class_='dropdown-toggle', data_toggle="dropdown") elif level == 3: menu_title = E.a(unicode(mnu.label), href="#") cl = 'dropdown-submenu' else: raise Exception("Menu with more than three levels") return E.li(menu_title, E.ul(*items, class_='dropdown-menu'), class_=cl)
def obj2html(self, ar, obj, text=None, **kwargs): if text is None: text = (force_unicode(obj), ) elif isinstance(text, basestring): text = (text, ) url = self.instance_handler(ar, obj) if url is not None: return E.a(*text, href=url, **kwargs) return E.em(*text)
def obj2html(self, ar, obj, text=None, **kwargs): if text is None: text = (force_unicode(obj),) elif isinstance(text, basestring): text = (text,) url = self.instance_handler(ar, obj) if url is not None: return E.a(*text, href=url, **kwargs) return E.em(*text)
def as_list_item(self, ar): if settings.SITE.is_demo_site: p = "'{0}', '{1}'".format(self.username, '1234') else: p = "'{0}'".format(self.username) url = "javascript:Lino.show_login_window(null, {0})".format(p) return E.li(E.a(self.username, href=url), ' : ', str(self), ', ', str(self.profile), ', ', E.strong(settings.SITE.LANGUAGE_DICT.get(self.language)))
def obj2html(self, ar, obj, text=None): if text is None: text = (force_unicode(obj),) elif isinstance(text, basestring): text = (text,) if self.is_interactive: url = self.instance_handler(ar, obj) if url is not None: return E.a(*text, href=url) return E.b(*text)
def as_list_item(self, ar): if settings.SITE.is_demo_site: p = "'{0}', '{1}'".format(self.username, '1234') else: p = "'{0}'".format(self.username) url = "javascript:Lino.show_login_window(null, {0})".format(p) return E.li(E.a(self.username, href=url), ' : ', str(self), ', ', str(self.profile), ', ', E.strong(settings.SITE.LANGUAGE_DICT.get(self.language)))
def table2html(ar, as_main=True): """This is not a docstring.""" as_main = True t = xghtml.Table() t.attrib.update(class_="table table-striped table-hover") if ar.limit is None: ar.limit = PLAIN_PAGE_LENGTH pglen = ar.limit if ar.offset is None: page = 1 else: """ (assuming pglen is 5) offset page 0 1 5 2 """ page = int(ar.offset / pglen) + 1 ar.dump2html(t, ar.sliced_data_iterator) if not as_main: url = ar.get_request_url() # open in own window return E.div(E.a(ar.get_title(), href=url), t.as_element()) buttons = [] kw = dict() kw = {} if pglen != PLAIN_PAGE_LENGTH: kw[constants.URL_PARAM_LIMIT] = pglen if page > 1: kw[constants.URL_PARAM_START] = pglen * (page - 2) prev_url = ar.get_request_url(**kw) kw[constants.URL_PARAM_START] = 0 first_url = ar.get_request_url(**kw) else: prev_url = None first_url = None buttons.append(('<<', _("First page"), first_url)) buttons.append(('<', _("Previous page"), prev_url)) next_start = pglen * page if next_start < ar.get_total_count(): kw[constants.URL_PARAM_START] = next_start next_url = ar.get_request_url(**kw) last_page = int((ar.get_total_count() - 1) / pglen) kw[constants.URL_PARAM_START] = pglen * last_page last_url = ar.get_request_url(**kw) else: next_url = None last_url = None buttons.append(('>', _("Next page"), next_url)) buttons.append(('>>', _("Last page"), last_url)) return E.div(buttons2pager(buttons), t.as_element())
def show_menu(self, ar, mnu, level=1): """ Render the given menu as an HTML element. Used for writing test cases. """ if not isinstance(mnu, Menu): assert isinstance(mnu, MenuItem) if mnu.bound_action: sr = mnu.bound_action.actor.request( action=mnu.bound_action, user=ar.user, subst_user=ar.subst_user, requesting_panel=ar.requesting_panel, renderer=self, **mnu.params) url = sr.get_request_url() else: url = mnu.href assert mnu.label is not None if url is None: return E.p() # spacer return E.li(E.a(mnu.label, href=url, tabindex="-1")) items = [self.show_menu(ar, mi, level + 1) for mi in mnu.items] #~ print 20120901, items if level == 1: return E.ul(*items, class_='nav navbar-nav') if mnu.label is None: raise Exception("%s has no label" % mnu) if level == 2: cl = 'dropdown' menu_title = E.a( unicode(mnu.label), E.b(' ', class_="caret"), href="#", class_='dropdown-toggle', data_toggle="dropdown") elif level == 3: menu_title = E.a(unicode(mnu.label), href="#") cl = 'dropdown-submenu' else: raise Exception("Menu with more than three levels") return E.li( menu_title, E.ul(*items, class_='dropdown-menu'), class_=cl)
def obj2html(self, ar, obj, text=None, **kwargs): """Return a html representation of a pointer to the given database object.""" if text is None: text = (force_text(obj),) elif isinstance(text, basestring): text = (text,) url = self.instance_handler(ar, obj) if url is None: return E.em(*text) return E.a(*text, href=url, **kwargs)
def buttons2pager(buttons, title=None): items = [] if title: items.append(E.li(E.span(title))) for symbol, label, url in buttons: if url is None: items.append(E.li(E.span(symbol), class_="disabled")) else: items.append(E.li(E.a(symbol, href=url))) # Bootstrap version 2.x # return E.div(E.ul(*items), class_='pagination') return E.ul(*items, class_='pagination pagination-sm')
def get_help_url(self, docname=None, text=None, **kw): """Generate a link to the help section of the documentation (whose base is defined by :attr:`lino.core.site.Site.help_url`) Usage example:: help = ar.get_help_url("foo", target='_blank') msg = _("You have a problem with foo." "Please consult %(help)s " "or ask your system administrator.") msg %= dict(help=E.tostring(help)) kw.update(message=msg, alert=True) The :ref:`lino.tutorial.pisa` tutorial shows a resulting message generated by the print action. """ if text is None: text = str(_("the documentation")) url = settings.SITE.help_url if docname is not None: url = "%s/help/%s.html" % (url, docname) return E.a(text, href=url, **kw)
def get_help_url(self, docname=None, text=None, **kw): """Generate a link to the help section of the documentation (whose base is defined by :attr:`lino.core.site.Site.help_url`) Usage example:: help = ar.get_help_url("foo", target='_blank') msg = _("You have a problem with foo." "Please consult %(help)s " "or ask your system administrator.") msg %= dict(help=E.tostring(help)) kw.update(message=msg, alert=True) The :ref:`lino.tutorial.pisa` tutorial shows a resulting message generated by the print action. """ if text is None: text = unicode(_("the documentation")) url = settings.SITE.help_url if docname is not None: url = "%s/help/%s.html" % (url, docname) return E.a(text, href=url, **kw)
def table2html(ar, as_main=True): """Represent the given table request as an HTML table. `ar` is the request to be rendered, an instance of :class:`lino.core.tablerequest.TableRequest`. The returned HTML enclosed in a ``<div>`` tag and generated using :mod:`lino.utils.xmlgen.html`. If `as_main` is True, include additional elements such as a paging toolbar. (This argument is currently being ignored.) """ as_main = True t = xghtml.Table() t.attrib.update(class_="table table-striped table-hover") if ar.limit is None: ar.limit = PLAIN_PAGE_LENGTH pglen = ar.limit if ar.offset is None: page = 1 else: """ (assuming pglen is 5) offset page 0 1 5 2 """ page = int(old_div(ar.offset, pglen)) + 1 ar.dump2html(t, ar.sliced_data_iterator) if not as_main: url = ar.get_request_url() # open in own window return E.div(E.a(ar.get_title(), href=url), t.as_element()) buttons = [] kw = dict() kw = {} if pglen != PLAIN_PAGE_LENGTH: kw[constants.URL_PARAM_LIMIT] = pglen if page > 1: kw[constants.URL_PARAM_START] = pglen * (page - 2) prev_url = ar.get_request_url(**kw) kw[constants.URL_PARAM_START] = 0 first_url = ar.get_request_url(**kw) else: prev_url = None first_url = None buttons.append(('<<', _("First page"), first_url)) buttons.append(('<', _("Previous page"), prev_url)) next_start = pglen * page if next_start < ar.get_total_count(): kw[constants.URL_PARAM_START] = next_start next_url = ar.get_request_url(**kw) last_page = int(old_div((ar.get_total_count() - 1), pglen)) kw[constants.URL_PARAM_START] = pglen * last_page last_url = ar.get_request_url(**kw) else: next_url = None last_url = None buttons.append(('>', _("Next page"), next_url)) buttons.append(('>>', _("Last page"), last_url)) return E.div(buttons2pager(buttons), t.as_element())
def image(self, ar): url = self.get_image_url(ar) return E.a(E.img(src=url, width="100%"), href=url, target="_blank")
def table2html(ar, as_main=True): """Represent the given table request as an HTML table. `ar` is the request to be rendered, an instance of :class:`lino.core.tablerequest.TableRequest`. The returned HTML enclosed in a ``<div>`` tag and generated using :mod:`lino.utils.xmlgen.html`. If `as_main` is True, include additional elements such as a paging toolbar. (This argument is currently being ignored.) """ as_main = True t = xghtml.Table() t.attrib.update(class_="table table-striped table-hover") if ar.limit is None: ar.limit = PLAIN_PAGE_LENGTH pglen = ar.limit if ar.offset is None: page = 1 else: """ (assuming pglen is 5) offset page 0 1 5 2 """ page = int(old_div(ar.offset, pglen)) + 1 ar.dump2html(t, ar.sliced_data_iterator) if not as_main: url = ar.get_request_url() # open in own window return E.div(E.a(ar.get_title(), href=url), t.as_element()) buttons = [] kw = dict() kw = {} if pglen != PLAIN_PAGE_LENGTH: kw[constants.URL_PARAM_LIMIT] = pglen if page > 1: kw[constants.URL_PARAM_START] = pglen * (page - 2) prev_url = ar.get_request_url(**kw) kw[constants.URL_PARAM_START] = 0 first_url = ar.get_request_url(**kw) else: prev_url = None first_url = None buttons.append(('<<', _("First page"), first_url)) buttons.append(('<', _("Previous page"), prev_url)) next_start = pglen * page if next_start < ar.get_total_count(): kw[constants.URL_PARAM_START] = next_start next_url = ar.get_request_url(**kw) last_page = int(old_div((ar.get_total_count() - 1), pglen)) kw[constants.URL_PARAM_START] = pglen * last_page last_url = ar.get_request_url(**kw) else: next_url = None last_url = None buttons.append(('>', _("Next page"), next_url)) buttons.append(('>>', _("Last page"), last_url)) return E.div(buttons2pager(buttons), t.as_element())
def href(self, url, text): return E.a(text, href=url)
def image(self, ar): url = self.get_image_url(ar) return E.a(E.img(src=url, width="100%"), href=url, target="_blank")
def href(self, url, text): #~ return '<a href="%s">%s</a>' % (url,text) return E.a(text, href=url)
def href(self, url, text): return E.a(text, href=url)