From 727d2ecd71af920ddb2f03a201014c8dd5a480e3 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 16 Dec 2018 01:04:11 -0400 Subject: [PATCH] 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

HTML tag allowing users to view the full title on mouse hover if the title was truncated. Signed-off-by: Roberto Rosario --- HISTORY.rst | 4 +++ mayan/apps/appearance/settings.py | 1 + .../appearance/calculate_form_title.html | 35 +++---------------- mayan/apps/common/classes.py | 1 - mayan/apps/common/templatetags/common_tags.py | 28 +++++++++++++++ 5 files changed, 37 insertions(+), 32 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 74e3f54e1e..69d68f7cd0 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -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) ================== diff --git a/mayan/apps/appearance/settings.py b/mayan/apps/appearance/settings.py index 5a53ef6719..da05640a5e 100644 --- a/mayan/apps/appearance/settings.py +++ b/mayan/apps/appearance/settings.py @@ -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=_( diff --git a/mayan/apps/appearance/templates/appearance/calculate_form_title.html b/mayan/apps/appearance/templates/appearance/calculate_form_title.html index 8e152170ca..8da8e72972 100644 --- a/mayan/apps/appearance/templates/appearance/calculate_form_title.html +++ b/mayan/apps/appearance/templates/appearance/calculate_form_title.html @@ -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 %} -

+

{% 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 %}

- {% if subtitle %} {{ subtitle }} {% endif %} diff --git a/mayan/apps/common/classes.py b/mayan/apps/common/classes.py index 18db047f6f..08f4102488 100644 --- a/mayan/apps/common/classes.py +++ b/mayan/apps/common/classes.py @@ -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 diff --git a/mayan/apps/common/templatetags/common_tags.py b/mayan/apps/common/templatetags/common_tags.py index daaf3975c0..71b1606d35 100644 --- a/mayan/apps/common/templatetags/common_tags.py +++ b/mayan/apps/common/templatetags/common_tags.py @@ -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')