Convert the title calculation into a template tag

Convert the calculate form title template into a template tag.
The result of the template tag is applied as the title property
of the <H3> HTML tag allowing users to view the full title on
mouse hover if the title was truncated.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2018-12-16 01:04:11 -04:00
parent 3a6a250d1b
commit 727d2ecd71
5 changed files with 37 additions and 32 deletions

View File

@@ -195,6 +195,10 @@
- Moved the navigation templates from the appearance app to the
navigation app.
- Moved the dashboard and dashboard widgets to their own app.
- Converted the calculate form title template into a template tag.
The result of the template tag is applied as the title property
of the H3 HTML tag allowing users to view the full title on
mouse hover if it was truncated.
3.1.9 (2018-11-01)
==================

View File

@@ -7,6 +7,7 @@ from mayan.apps.smart_settings import Namespace
from .literals import DEFAULT_MAXIMUM_TITLE_LENGTH
namespace = Namespace(name='appearance', label=_('Appearance'))
setting_max_title_length = namespace.add_setting(
default=DEFAULT_MAXIMUM_TITLE_LENGTH,
global_name='APPEARANCE_MAXIMUM_TITLE_LENGTH', help_text=_(

View File

@@ -1,42 +1,15 @@
{% load i18n %}
{% load smart_settings_tags %}
{% load common_tags %}
{% smart_setting 'APPEARANCE_MAXIMUM_TITLE_LENGTH' as maximum_title_length %}
{% common_calculate_title as form_title %}
{% if not non_html_title %}
<h3>
<h3 title='{{ form_title }}'>
{% endif %}
{% if title %}
{{ title|truncatechars:maximum_title_length }}
{% else %}
{% if delete_view %}
{% trans 'Confirm delete' %}
{% else %}
{% if form %}
{% if object %}
{% blocktrans with object as object %}Edit: {{ object }}{% endblocktrans %}
{% else %}
{% trans 'Confirm' %}
{% endif %}
{% else %}
{% if read_only %}
{% blocktrans %}Details for: {{ object }}{% endblocktrans %}
{% else %}
{% if object %}
{% blocktrans with object as object %}Edit: {{ object }}{% endblocktrans %}
{% else %}
{% trans 'Create' %}
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{{ form_title }}
{% if not non_html_title %}
</h3>
{% if subtitle %}
<small>{{ subtitle }}</small>
{% endif %}

View File

@@ -4,7 +4,6 @@ import hashlib
from django.apps import apps
from django.db import models
from django.template import loader
from django.template.response import TemplateResponse
from django.urls import reverse
from django.utils.encoding import force_text, python_2_unicode_compatible

View File

@@ -3,10 +3,13 @@ from __future__ import unicode_literals
from json import dumps
from django.template import Context, Library
from django.template.defaultfilters import truncatechars
from django.template.loader import get_template
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
import mayan
from mayan.apps.appearance.settings import setting_max_title_length
from ..classes import Collection
from ..literals import MESSAGE_SQLITE_WARNING
@@ -58,3 +61,28 @@ def render_subtemplate(context, template_name, template_context):
new_context = Context(context.flatten())
new_context.update(Context(template_context))
return get_template(template_name).render(new_context.flatten())
@register.simple_tag(takes_context=True)
def common_calculate_title(context):
if context.get('title'):
return truncatechars(
value=context.get('title'), arg=setting_max_title_length.value
)
else:
if context.get('delete_view'):
return _('Confirm delete')
else:
if context.get('form'):
if context.get('object'):
return _('Edit %s') % context.get('object')
else:
return _('Confirm')
else:
if context.get('read_only'):
return _('Details for: %s') % context.get('object')
else:
if context.get('object'):
return _('Edit: %s') % context.get('object')
else:
return _('Create')