コード例 #1
0
ファイル: render.py プロジェクト: cuchac/lino
 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)
コード例 #2
0
ファイル: lino_site.py プロジェクト: cuchac/lino
    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)
コード例 #3
0
ファイル: render.py プロジェクト: ManuelWeidmann/lino
    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)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
ファイル: ad.py プロジェクト: ManuelWeidmann/lino
    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)
コード例 #7
0
ファイル: uploadable.py プロジェクト: khchine5/lino
 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
コード例 #8
0
 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
コード例 #9
0
ファイル: requests.py プロジェクト: ManuelWeidmann/lino
 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)
コード例 #10
0
ファイル: models.py プロジェクト: MaxTyutyunnikov/lino
 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
コード例 #11
0
 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
コード例 #12
0
    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)
コード例 #13
0
 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)
コード例 #14
0
ファイル: renderer.py プロジェクト: DarioGT/lino
 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)
コード例 #15
0
 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)))
コード例 #16
0
ファイル: render.py プロジェクト: ManuelWeidmann/lino
 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)
コード例 #17
0
ファイル: models.py プロジェクト: khchine5/lino
 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)))
コード例 #18
0
ファイル: views.py プロジェクト: DarioGT/lino
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())
コード例 #19
0
ファイル: renderer.py プロジェクト: DarioGT/lino
    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)
コード例 #20
0
ファイル: renderer.py プロジェクト: sandeez/lino
 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)
コード例 #21
0
ファイル: views.py プロジェクト: DarioGT/lino
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')
コード例 #22
0
ファイル: requests.py プロジェクト: sandeez/lino
    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)
コード例 #23
0
    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)
コード例 #24
0
ファイル: views.py プロジェクト: TonisPiip/lino
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())
コード例 #25
0
ファイル: mixins.py プロジェクト: DarioGT/lino
 def image(self, ar):
     url = self.get_image_url(ar)
     return E.a(E.img(src=url, width="100%"), href=url, target="_blank")
コード例 #26
0
ファイル: views.py プロジェクト: khchine5/lino
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())
コード例 #27
0
 def href(self, url, text):
     return E.a(text, href=url)
コード例 #28
0
ファイル: mixins.py プロジェクト: zhuangyan/lino
 def image(self, ar):
     url = self.get_image_url(ar)
     return E.a(E.img(src=url, width="100%"), href=url, target="_blank")
コード例 #29
0
ファイル: render.py プロジェクト: ManuelWeidmann/lino
 def href(self, url, text):
     #~ return '<a href="%s">%s</a>' % (url,text)
     return E.a(text, href=url)
コード例 #30
0
ファイル: renderer.py プロジェクト: DarioGT/lino
 def href(self, url, text):
     return E.a(text, href=url)