Ejemplo n.º 1
0
def translation_links(context, calling_page):
    """Take the inclusion template 'translation_links.html' and return a snippet of HTML with links to the requesting page in all offered languages."""
    language_results = []

    query = ''
    try:
        query = context['request'].GET
        query = '?%s' % query.urlencode() if query else ''
    except Exception:
        pass

    if calling_page != "":
        for language_code, language_name in settings.ACTIVE_LANGUAGES:
            with use_language(language_code):
                language_url = pageurl(context, calling_page)
                language_name_local = get_language_info(language_code)['name_local']
                language_results.append({
                    "code": language_code,
                    "name": language_name,
                    "url": language_url,
                    "name_local": language_name_local,
                    "query": query,
                })

    return {
        'languages': language_results,
    }
Ejemplo n.º 2
0
def clerk_slugurl(context, slug):
    """
    Returns the URL for the page that has the given slug.
    First tries to find a page on the current site. If that fails or a request
    is not available in the context, then returns the URL for the first page
    that matches the slug on any site.

    Based on: https://github.com/wagtail/wagtail/blob/main/wagtail/core/templatetags/wagtailcore_tags.py#L48
    """
    page = None
    try:
        site = Site.find_for_request(context["request"])
        current_site = site
    except KeyError:
        # No site object found - allow the fallback below to take place.
        pass
    else:
        if current_site is not None:
            page = (
                Page.objects.in_site(current_site).filter(slug=slug).specific().first()
            )

    # If no page is found, fall back to searching the whole tree.
    if page is None:
        page = Page.objects.filter(slug=slug).specific().first()

    if page:
        # call pageurl() instead of page.relative_url() here so we get the ``accepts_kwarg`` logic
        return pageurl(context, page)
Ejemplo n.º 3
0
def slugurl(context, slug):
    """Returns the URL for the page that has the given slug."""
    page = Page.objects.filter(slug=slug).first()

    if page:
        return pageurl(context, page)
    else:
        return None
Ejemplo n.º 4
0
def cms_url(context, page):
    """Return the given pages url or the current pages draft url if in preview mode."""
    request = context["request"]

    if not page:
        return None
    if hasattr(request, "is_preview") and request.is_preview:
        return reverse("wagtailadmin_pages:view_draft", args=(page.id,))
    return pageurl(context, page)
Ejemplo n.º 5
0
def slugurl_trans(context, slug, language=None):
    """
    Examples:
        {% slugurl_trans 'default_lang_slug' %}
        {% slugurl_trans 'de_lang_slug' 'de' %}

    Returns the URL for the page that has the given slug.
    """
    language = language or DEFAULT_LANGUAGE

    with use_language(language):
        page = Page.objects.filter(slug=slug).first()

    if page:
        # call pageurl() instead of page.relative_url() here so we get the ``accepts_kwarg`` logic
        return pageurl(context, page)
Ejemplo n.º 6
0
def sensible_pageurl(context, page, fallback='#'):
    """
    An improved {% pageurl %} that returns a fallback URL (default "#") when
    ``page`` is ``None``, unpublished, or inaccessible via a URL, rather than
    crashing, returning a URL that will 404, or returning ``None``
    respectively.
    """
    if page is None or not isinstance(page, Page) or not page.live:
        return fallback

    url = pageurl(context, page)

    if url is None:
        return fallback
    else:
        return url
Ejemplo n.º 7
0
def translation_links(context, calling_page):
    """Take the inclusion template 'translation_links.html' and return a snippet of HTML with links to the requesting page in all offered languages."""
    language_results = []
    if calling_page != "":
        for language_code, language_name in settings.ACTIVE_LANGUAGES:
            with use_language(language_code):
                language_url = pageurl(context, calling_page)
                language_results.append({
                    "code": language_code,
                    "name": language_name,
                    "url": language_url
                })

    return {
        'languages': language_results,
    }
def slugurl_trans(context, slug, language=None):
    """
    Examples:
        {% slugurl_trans 'default_lang_slug' %}
        {% slugurl_trans 'de_lang_slug' 'de' %}

    Returns the URL for the page that has the given slug.
    """
    language = language or DEFAULT_LANGUAGE

    with use_language(language):
        page = Page.objects.filter(slug=slug).first()

    if page:
        # call pageurl() instead of page.relative_url() here so we get the ``accepts_kwarg`` logic
        return pageurl(context, page)
Ejemplo n.º 9
0
def menu_primary(context, calling_page=None):
    try:
        menu = MenuSnippet.objects.get(menu_name__iexact="primary")
    except MenuSnippet.DoesNotExist:
        return {}

    links = []
    for item in menu.links.all():
        calling_page_path = calling_page.url_path if calling_page else ''
        item_path = item.link_page.url_path
        links.append({
            "text": item.link_text,
            "url": pageurl(context, item.link_page),
            "active": calling_page_path.startswith(item_path) or calling_page_path == item_path
        })

    return {"links": links, "request": context["request"]}