diff --git a/admin_interface/admin.py b/admin_interface/admin.py index b2fd770..178601b 100644 --- a/admin_interface/admin.py +++ b/admin_interface/admin.py @@ -110,6 +110,13 @@ class ThemeAdmin(admin.ModelAdmin): 'related_modal_close_button_visible', ) }), + (_('Form Controls'), { + 'classes': ('wide', ), + 'fields': ( + 'form_submit_sticky', + 'form_pagination_sticky', + ) + }), (_('List Filter'), { 'classes': ('wide', ), 'fields': ( diff --git a/admin_interface/migrations/0019_auto_20210129_2029.py b/admin_interface/migrations/0019_auto_20210129_2029.py new file mode 100644 index 0000000..ecc4603 --- /dev/null +++ b/admin_interface/migrations/0019_auto_20210129_2029.py @@ -0,0 +1,23 @@ +# Generated by Django 3.1.5 on 2021-01-29 20:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('admin_interface', '0018_theme_list_filter_sticky'), + ] + + operations = [ + migrations.AddField( + model_name='theme', + name='form_pagination_sticky', + field=models.BooleanField(default=False, verbose_name='sticky pagination'), + ), + migrations.AddField( + model_name='theme', + name='form_submit_sticky', + field=models.BooleanField(default=False, verbose_name='sticky submit'), + ), + ] diff --git a/admin_interface/models.py b/admin_interface/models.py index c67aa02..c7104fe 100644 --- a/admin_interface/models.py +++ b/admin_interface/models.py @@ -299,6 +299,13 @@ class Theme(models.Model): default=True, verbose_name=_('visible')) + form_submit_sticky = models.BooleanField( + default=False, + verbose_name=_('sticky submit')) + form_pagination_sticky = models.BooleanField( + default=False, + verbose_name=_('sticky pagination')) + def set_active(self): self.active = True self.save() diff --git a/admin_interface/templates/admin/base_site.html b/admin_interface/templates/admin/base_site.html index 7035c7f..27f4cab 100644 --- a/admin_interface/templates/admin/base_site.html +++ b/admin_interface/templates/admin/base_site.html @@ -52,7 +52,8 @@ https://github.com/fabiocaccamo/django-admin-interface {% include "admin_interface/related-modal.html" %} {% endblock %} -{% block bodyclass %}admin-interface flat-theme {% get_admin_interface_theme as theme %}{% if theme.name %}{{ theme.name|slugify }}-theme{% endif %}{% endblock %} +{% block bodyclass %}admin-interface flat-theme {% get_admin_interface_theme as theme %}{% if theme.name %}{{ +theme.name|slugify }}-theme{% endif %}{% if theme.form_submit_sticky %} sticky-submit {% endif %}{% if theme.form_pagination_sticky %} sticky-pagination {% endif %}{% endblock %} {% block branding %} {% get_admin_interface_theme as theme %} diff --git a/admin_interface/templates/admin_interface/css/admin-interface-fix.css b/admin_interface/templates/admin_interface/css/admin-interface-fix.css index 9a8e290..45889b0 100644 --- a/admin_interface/templates/admin_interface/css/admin-interface-fix.css +++ b/admin_interface/templates/admin_interface/css/admin-interface-fix.css @@ -412,6 +412,25 @@ body.admin-interface .paginator a.showall:visited { max-width: 100%; } +.admin-interface.sticky-submit.change-form:not(.popup) #main > #nav-sidebar + .content, +.admin-interface.sticky-pagination.change-list:not(.popup) #main > #nav-sidebar + .content { + padding-bottom: 4rem; +} + +.admin-interface.sticky-submit.change-form:not(.popup) #main > #nav-sidebar + .content form fieldset + .submit-row, +.admin-interface.sticky-pagination.change-list:not(.popup) #main > #nav-sidebar + .content form .results + .paginator { + width: 100%; + max-width: calc(100% - 28px); + bottom: 0; + right: 0; + margin-bottom: 0; + position: fixed; +} + +.admin-interface.sticky-pagination.change-list:not(.popup) #main > #nav-sidebar + .content form .results + .paginator { + max-width: calc(100% - 20px); +} + /* hide nav-sidebar below 1280px to prevent horizontal overflow issues */ @media (max-width:1279px) { .admin-interface #nav-sidebar, @@ -449,6 +468,17 @@ body.admin-interface .paginator a.showall:visited { .admin-interface.change-form:not(.popup) #main.shifted > #nav-sidebar + .content { max-width: calc(100% - 360px); } + + .admin-interface.sticky-submit.change-form:not(.popup) #main.shifted > #nav-sidebar + .content form fieldset + .submit-row, + .admin-interface.sticky-pagination.change-list:not(.popup) #main.shifted > #nav-sidebar + .content form .results + .paginator { + max-width: calc(100% - 388px); + right: 0; + bottom: 0; + } + + .admin-interface.sticky-pagination.change-list:not(.popup) #main.shifted > #nav-sidebar + .content form .results + .paginator { + max-width: calc(100% - 380px); + } } /* fixed related widget and select2 */ @@ -537,4 +567,14 @@ body.admin-interface .paginator a.showall:visited { .admin-interface .aligned .form-row .file-upload input[type="file"] { margin-top: 5px; } + + .admin-interface.sticky-submit.change-form:not(.popup) #main > #nav-sidebar + .content, + .admin-interface.sticky-pagination.change-form:not(.popup) #main > #nav-sidebar + .content { + padding-bottom: 12rem; + } + + .admin-interface.sticky-submit.change-form:not(.popup) #main > #nav-sidebar + .content .submit-row, + .admin-interface.sticky-pagination.change-list:not(.popup) #main > #nav-sidebar + .content form .results + .paginator { + max-width: calc(100% - 20px); + } } \ No newline at end of file