django-smartbase-admin 0.2.47__py3-none-any.whl → 1.0.38__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- django_smartbase_admin/actions/admin_action_list.py +80 -51
- django_smartbase_admin/actions/advanced_filters.py +55 -20
- django_smartbase_admin/admin/admin_base.py +477 -89
- django_smartbase_admin/admin/site.py +104 -34
- django_smartbase_admin/admin/widgets.py +598 -26
- django_smartbase_admin/apps.py +2 -0
- django_smartbase_admin/engine/actions.py +34 -16
- django_smartbase_admin/engine/admin_base_view.py +253 -115
- django_smartbase_admin/engine/configuration.py +186 -4
- django_smartbase_admin/engine/const.py +7 -0
- django_smartbase_admin/engine/dashboard.py +44 -23
- django_smartbase_admin/engine/fake_inline.py +44 -7
- django_smartbase_admin/engine/field.py +54 -10
- django_smartbase_admin/engine/field_formatter.py +32 -9
- django_smartbase_admin/engine/filter_widgets.py +356 -21
- django_smartbase_admin/engine/menu_item.py +8 -5
- django_smartbase_admin/engine/modal_view.py +12 -7
- django_smartbase_admin/engine/request.py +2 -0
- django_smartbase_admin/integration/__init__.py +0 -0
- django_smartbase_admin/integration/django_cms.py +43 -0
- django_smartbase_admin/locale/sk/LC_MESSAGES/django.mo +0 -0
- django_smartbase_admin/locale/sk/LC_MESSAGES/django.po +268 -37
- django_smartbase_admin/migrations/0005_sbadminuserconfiguration.py +26 -0
- django_smartbase_admin/migrations/0006_alter_sbadminuserconfiguration_color_scheme.py +18 -0
- django_smartbase_admin/models.py +22 -0
- django_smartbase_admin/monkeypatch/admin_readonly_field_monkeypatch.py +96 -0
- django_smartbase_admin/monkeypatch/fake_inline_monkeypatch.py +1 -1
- django_smartbase_admin/querysets.py +3 -0
- django_smartbase_admin/services/configuration.py +30 -0
- django_smartbase_admin/services/thread_local.py +6 -19
- django_smartbase_admin/services/views.py +82 -27
- django_smartbase_admin/services/xlsx_export.py +6 -0
- django_smartbase_admin/static/sb_admin/build/tailwind.config.js +1 -0
- django_smartbase_admin/static/sb_admin/build/tailwind_config_partials/colors.js +4 -0
- django_smartbase_admin/static/sb_admin/build/tailwind_config_partials/spacing.js +1 -0
- django_smartbase_admin/static/sb_admin/build/webpack.common.js +11 -8
- django_smartbase_admin/static/sb_admin/css/ckeditor/ckeditor_content_dark.css +208 -0
- django_smartbase_admin/static/sb_admin/css/coloris/coloris.min.css +1 -0
- django_smartbase_admin/static/sb_admin/dist/calendar.js +1 -0
- django_smartbase_admin/static/sb_admin/dist/calendar_style.css +1 -0
- django_smartbase_admin/static/sb_admin/dist/calendar_style.js +0 -0
- django_smartbase_admin/static/sb_admin/dist/chart.js +1 -1
- django_smartbase_admin/static/sb_admin/dist/main.js +1 -1
- django_smartbase_admin/static/sb_admin/dist/main_style.css +1 -1
- django_smartbase_admin/static/sb_admin/dist/table.js +1 -1
- django_smartbase_admin/static/sb_admin/dist/table.js.LICENSE.txt +9 -0
- django_smartbase_admin/static/sb_admin/dist/tree_widget.js +1 -0
- django_smartbase_admin/static/sb_admin/dist/tree_widget_style.css +1 -0
- django_smartbase_admin/static/sb_admin/dist/tree_widget_style.js +0 -0
- django_smartbase_admin/static/sb_admin/fancytree/jquery.fancytree-all-deps.min.js +1 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-csv.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-doc.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-docx.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-other.svg +13 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-pdf.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-ppt.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-xls.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-xlsx.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-zip.svg +18 -0
- django_smartbase_admin/static/sb_admin/images/flags/de-at.png +0 -0
- django_smartbase_admin/static/sb_admin/images/flags/de-ch.png +0 -0
- django_smartbase_admin/static/sb_admin/images/logo_light.svg +21 -0
- django_smartbase_admin/static/sb_admin/js/coloris/coloris.min.js +6 -0
- django_smartbase_admin/static/sb_admin/js/fullcalendar.min.js +14804 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Bolt-one.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Calendar.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Caution.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Electric-drill.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Fire-extinguisher.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Gas.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Lightning-fill.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Moon.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Phone-telephone.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Printer.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Pull.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Sun-one.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Time.svg +3 -0
- django_smartbase_admin/static/sb_admin/src/css/_base.css +5 -1
- django_smartbase_admin/static/sb_admin/src/css/_colors.css +257 -82
- django_smartbase_admin/static/sb_admin/src/css/_components.css +66 -13
- django_smartbase_admin/static/sb_admin/src/css/_datepicker.css +8 -1
- django_smartbase_admin/static/sb_admin/src/css/_filer.css +60 -0
- django_smartbase_admin/static/sb_admin/src/css/_inlines.css +51 -10
- django_smartbase_admin/static/sb_admin/src/css/_tabulator.css +8 -2
- django_smartbase_admin/static/sb_admin/src/css/calendar.css +162 -0
- django_smartbase_admin/static/sb_admin/src/css/components/_button.css +41 -1
- django_smartbase_admin/static/sb_admin/src/css/components/_dropdown.css +26 -8
- django_smartbase_admin/static/sb_admin/src/css/components/_input.css +62 -20
- django_smartbase_admin/static/sb_admin/src/css/components/_modal.css +1 -1
- django_smartbase_admin/static/sb_admin/src/css/components/_query-builder.css +21 -2
- django_smartbase_admin/static/sb_admin/src/css/components/_toggle.css +12 -1
- django_smartbase_admin/static/sb_admin/src/css/components/_tooltip.css +8 -22
- django_smartbase_admin/static/sb_admin/src/css/style.css +17 -0
- django_smartbase_admin/static/sb_admin/src/css/tree_widget.css +411 -0
- django_smartbase_admin/static/sb_admin/src/js/autocomplete.js +63 -5
- django_smartbase_admin/static/sb_admin/src/js/calendar.js +56 -0
- django_smartbase_admin/static/sb_admin/src/js/chart.js +8 -22
- django_smartbase_admin/static/sb_admin/src/js/choices.js +18 -8
- django_smartbase_admin/static/sb_admin/src/js/datepicker.js +97 -336
- django_smartbase_admin/static/sb_admin/src/js/datepicker_plugins.js +357 -0
- django_smartbase_admin/static/sb_admin/src/js/main.js +307 -26
- django_smartbase_admin/static/sb_admin/src/js/multiselect.js +50 -41
- django_smartbase_admin/static/sb_admin/src/js/range.js +3 -2
- django_smartbase_admin/static/sb_admin/src/js/sb_ajax_params_tabulator_modifier.js +21 -0
- django_smartbase_admin/static/sb_admin/src/js/table.js +38 -13
- django_smartbase_admin/static/sb_admin/src/js/table_modules/advanced_filter_module.js +43 -20
- django_smartbase_admin/static/sb_admin/src/js/table_modules/data_edit_module.js +8 -10
- django_smartbase_admin/static/sb_admin/src/js/table_modules/filter_module.js +3 -3
- django_smartbase_admin/static/sb_admin/src/js/table_modules/header_tabs_module.js +11 -11
- django_smartbase_admin/static/sb_admin/src/js/table_modules/selection_module.js +28 -8
- django_smartbase_admin/static/sb_admin/src/js/table_modules/table_params_module.js +6 -0
- django_smartbase_admin/static/sb_admin/src/js/table_modules/views_module.js +19 -3
- django_smartbase_admin/static/sb_admin/src/js/tree_widget.js +406 -0
- django_smartbase_admin/static/sb_admin/src/js/utils.js +56 -21
- django_smartbase_admin/templates/sb_admin/actions/change_form.html +169 -117
- django_smartbase_admin/templates/sb_admin/actions/dashboard.html +2 -2
- django_smartbase_admin/templates/sb_admin/actions/delete_selected_confirmation.html +56 -32
- django_smartbase_admin/templates/sb_admin/actions/list.html +79 -42
- django_smartbase_admin/templates/sb_admin/actions/object_history.html +2 -2
- django_smartbase_admin/templates/sb_admin/actions/partials/action_link.html +14 -0
- django_smartbase_admin/templates/sb_admin/actions/partials/selected_rows_actions.html +2 -2
- django_smartbase_admin/templates/sb_admin/actions/partials/tabulator_header_v2.html +2 -2
- django_smartbase_admin/templates/sb_admin/actions/tree_list.html +63 -0
- django_smartbase_admin/templates/sb_admin/authentification/login_base.html +5 -1
- django_smartbase_admin/templates/sb_admin/components/columns.html +1 -1
- django_smartbase_admin/templates/sb_admin/components/filters_v2.html +99 -85
- django_smartbase_admin/templates/sb_admin/config/view.html +0 -1
- django_smartbase_admin/templates/sb_admin/dashboard/calendar_widget.html +69 -0
- django_smartbase_admin/templates/sb_admin/dashboard/chart_widget.html +21 -2
- django_smartbase_admin/templates/sb_admin/dashboard/list_widget.html +6 -0
- django_smartbase_admin/templates/sb_admin/dashboard/widget_base.html +1 -1
- django_smartbase_admin/templates/sb_admin/filter_widgets/advanced_filters/date_field.html +18 -8
- django_smartbase_admin/templates/sb_admin/filter_widgets/advanced_filters/multiple_choice_field.html +1 -1
- django_smartbase_admin/templates/sb_admin/filter_widgets/advanced_filters/tree_select_filter.html +2 -0
- django_smartbase_admin/templates/sb_admin/filter_widgets/date_field.html +18 -4
- django_smartbase_admin/templates/sb_admin/filter_widgets/multiple_choice_field.html +14 -0
- django_smartbase_admin/templates/sb_admin/filter_widgets/partials/clear.html +10 -5
- django_smartbase_admin/templates/sb_admin/filter_widgets/radio_choice_field.html +2 -2
- django_smartbase_admin/templates/sb_admin/filter_widgets/tree_select_filter.html +16 -0
- django_smartbase_admin/templates/sb_admin/includes/change_form_title.html +3 -1
- django_smartbase_admin/templates/sb_admin/includes/components.html +5 -1
- django_smartbase_admin/templates/sb_admin/includes/inline_fieldset.html +48 -39
- django_smartbase_admin/templates/sb_admin/includes/notifications.html +2 -1
- django_smartbase_admin/templates/sb_admin/includes/readonly_boolean_field.html +9 -0
- django_smartbase_admin/templates/sb_admin/includes/readonly_field.html +12 -0
- django_smartbase_admin/templates/sb_admin/includes/table_inline_delete_button.html +4 -5
- django_smartbase_admin/templates/sb_admin/inlines/stacked_inline.html +68 -40
- django_smartbase_admin/templates/sb_admin/inlines/table_inline.html +78 -36
- django_smartbase_admin/templates/sb_admin/integrations/filer/folder_list.html +18 -0
- django_smartbase_admin/templates/sb_admin/navigation.html +166 -158
- django_smartbase_admin/templates/sb_admin/partials/modal/modal_content.html +2 -6
- django_smartbase_admin/templates/sb_admin/sb_admin_base.html +49 -4
- django_smartbase_admin/templates/sb_admin/sb_admin_base_no_sidebar.html +35 -11
- django_smartbase_admin/templates/sb_admin/sb_admin_js_trans.html +3 -0
- django_smartbase_admin/templates/sb_admin/sprites/sb_admin.svg +1 -1
- django_smartbase_admin/templates/sb_admin/tailwind_whitelist.html +6 -3
- django_smartbase_admin/templates/sb_admin/widgets/array.html +0 -1
- django_smartbase_admin/templates/sb_admin/widgets/attributes.html +68 -0
- django_smartbase_admin/templates/sb_admin/widgets/autocomplete.html +13 -2
- django_smartbase_admin/templates/sb_admin/widgets/{checkbox_select.html → checkbox_dropdown.html} +2 -2
- django_smartbase_admin/templates/sb_admin/widgets/checkbox_group.html +15 -0
- django_smartbase_admin/templates/sb_admin/widgets/clearable_file_input.html +2 -2
- django_smartbase_admin/templates/sb_admin/widgets/color_field.html +30 -0
- django_smartbase_admin/templates/sb_admin/widgets/date.html +8 -1
- django_smartbase_admin/templates/sb_admin/widgets/filer_file.html +84 -0
- django_smartbase_admin/templates/sb_admin/widgets/html_read_only.html +1 -0
- django_smartbase_admin/templates/sb_admin/widgets/includes/related_item_buttons.html +38 -0
- django_smartbase_admin/templates/sb_admin/widgets/multiwidget.html +1 -1
- django_smartbase_admin/templates/sb_admin/widgets/radio.html +3 -2
- django_smartbase_admin/templates/sb_admin/widgets/radio_dropdown.html +30 -0
- django_smartbase_admin/templates/sb_admin/widgets/read_only_password_hash.html +3 -0
- django_smartbase_admin/templates/sb_admin/widgets/time.html +8 -1
- django_smartbase_admin/templates/sb_admin/widgets/toggle.html +1 -1
- django_smartbase_admin/templates/sb_admin/widgets/tree_base.html +59 -0
- django_smartbase_admin/templates/sb_admin/widgets/tree_select.html +24 -0
- django_smartbase_admin/templates/sb_admin/widgets/tree_select_inline.html +12 -0
- django_smartbase_admin/templatetags/sb_admin_tags.py +163 -4
- django_smartbase_admin/utils.py +22 -3
- django_smartbase_admin/views/dashboard_view.py +6 -0
- django_smartbase_admin/views/global_filter_view.py +8 -2
- django_smartbase_admin/views/translations_view.py +12 -5
- django_smartbase_admin/views/user_config_view.py +52 -0
- django_smartbase_admin-1.0.38.dist-info/METADATA +166 -0
- {django_smartbase_admin-0.2.47.dist-info → django_smartbase_admin-1.0.38.dist-info}/RECORD +186 -121
- {django_smartbase_admin-0.2.47.dist-info → django_smartbase_admin-1.0.38.dist-info}/WHEEL +1 -1
- django_smartbase_admin/templates/sb_admin/integrations/sorting/change_list.html +0 -401
- django_smartbase_admin-0.2.47.dist-info/METADATA +0 -25
- {django_smartbase_admin-0.2.47.dist-info → django_smartbase_admin-1.0.38.dist-info}/LICENSE.md +0 -0
|
@@ -1,172 +1,180 @@
|
|
|
1
1
|
{% load static sb_admin_tags widget_tweaks i18n %}
|
|
2
2
|
|
|
3
3
|
{% block content %}
|
|
4
|
-
|
|
5
|
-
<
|
|
6
|
-
<
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
</div>
|
|
10
|
-
<img src="{{ LAZY_LOAD_DEFAULT_IMAGE }}" data-src="{% static 'sb_admin/images/logo.svg' %}" class="lazyload h-32 w-auto"
|
|
11
|
-
alt="SBAdmin" width="106" height="16">
|
|
12
|
-
<div class="w-32 h-32 rounded-full leading-none flex-center flex-shrink-0 bg-dark-300 ml-auto">
|
|
13
|
-
{{ username_data.initials }}
|
|
14
|
-
</div>
|
|
15
|
-
</header>
|
|
16
|
-
<nav class="w-260 xl:fixed top-0 bottom-0 left-0 max-lg:sidebar border-r border-dark-200 overflow-hidden flex flex-col relative bg-dark-50 z-1"
|
|
17
|
-
id="main-navigation">
|
|
18
|
-
<header class="px-24 py-32 hidden xl:!block">
|
|
19
|
-
<img src="{{ LAZY_LOAD_DEFAULT_IMAGE }}" data-src="{% static 'sb_admin/images/logo.svg' %}" class="lazyload h-32 w-auto"
|
|
20
|
-
alt="SBAdmin" width="133" height="20">
|
|
21
|
-
</header>
|
|
22
|
-
<header class="px-16 py-8 flex items-center xl:hidden border-b border-dark-200 bg-light min-h-56">
|
|
23
|
-
<div class="js-sidebar-toggle w-24 h-24 flex-center ml-auto" data-sidebar-target="main-navigation">
|
|
24
|
-
<svg class="w-20 h-20 flex-shrink-0">
|
|
25
|
-
<use xlink:href="#Close"></use>
|
|
4
|
+
{% if not sec_fetch_site or request.META.HTTP_SEC_FETCH_DEST == 'document' %}
|
|
5
|
+
<header class="flex items-center bg-light border-b border-dark-200 p-12 xl:hidden">
|
|
6
|
+
<div class="js-sidebar-toggle mr-12" data-sidebar-target="main-navigation">
|
|
7
|
+
<svg class="w-24 h-24">
|
|
8
|
+
<use xlink:href="#Hamburger-button"></use>
|
|
26
9
|
</svg>
|
|
27
10
|
</div>
|
|
11
|
+
<img src="{% static 'sb_admin/images/logo.svg' %}" class="h-32 w-auto dark:hidden"
|
|
12
|
+
alt="SBAdmin" width="106" height="16">
|
|
13
|
+
<img src="{% static 'sb_admin/images/logo_light.svg' %}" class="h-32 w-auto hidden dark:block"
|
|
14
|
+
alt="SBAdmin" width="106" height="16">
|
|
15
|
+
<div class="w-32 h-32 rounded-full leading-none flex-center flex-shrink-0 bg-dark-300 ml-auto">
|
|
16
|
+
{{ username_data.initials }}
|
|
17
|
+
</div>
|
|
28
18
|
</header>
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
<use xlink:href="#{{ menu_item.get_icon }}"></use>
|
|
42
|
-
</svg>
|
|
43
|
-
{% endif %}
|
|
44
|
-
<span>{{ menu_item.get_label }}</span>
|
|
45
|
-
</a>
|
|
46
|
-
<ul id="{{ menu_item.get_id }}" class="collapse -mb-2 mt-2{% if menu_item.is_active %} show{% endif %}">
|
|
47
|
-
{% for sub_menu_item in menu_item.sub_items %}
|
|
48
|
-
<li class="py-2">
|
|
49
|
-
<a href="{{ sub_menu_item.get_url }}"
|
|
50
|
-
class="menu-item text-dark-600 leading-20 pl-36 py-8 pr-8{% if sub_menu_item.is_active %} active{% endif %}">
|
|
51
|
-
<span>{{ sub_menu_item.get_label }}</span>
|
|
52
|
-
</a>
|
|
53
|
-
</li>
|
|
54
|
-
{% endfor %}
|
|
55
|
-
</ul>
|
|
56
|
-
</div>
|
|
57
|
-
{% else %}
|
|
58
|
-
<div class="menu-item{% if menu_item.is_active %} active{% endif %}">
|
|
59
|
-
<a href="{{ menu_item.get_url }}" class="inline-flex w-full p-8">
|
|
60
|
-
{% if menu_item.get_icon %}
|
|
61
|
-
<svg class="w-20 h-20 mr-8 flex-shrink-0">
|
|
62
|
-
<use xlink:href="#{{ menu_item.get_icon }}"></use>
|
|
63
|
-
</svg>
|
|
64
|
-
{% endif %}
|
|
65
|
-
<span>{{ menu_item.get_label }}</span>
|
|
66
|
-
</a>
|
|
67
|
-
</div>
|
|
68
|
-
{% endif %}
|
|
69
|
-
</li>
|
|
70
|
-
{% endfor %}
|
|
71
|
-
</ul>
|
|
72
|
-
{# <hr class="my-32">#}
|
|
73
|
-
{# <div class="text-14 mb-24 px-16">#}
|
|
74
|
-
{# Pomoc a podpora#}
|
|
75
|
-
{# </div>#}
|
|
76
|
-
{# <ul class="-my-2 px-16">#}
|
|
77
|
-
{# <li class="py-2">#}
|
|
78
|
-
{# <div class="menu-item">#}
|
|
79
|
-
{# <a href="#" class="inline-flex w-full p-8">#}
|
|
80
|
-
{# <svg class="w-20 h-20 mr-8 flex-shrink-0">#}
|
|
81
|
-
{# <use xlink:href="#Accept-email"></use>#}
|
|
82
|
-
{# </svg>#}
|
|
83
|
-
{# <span class="leading-20 line-clamp-1">Menu Item 8</span>#}
|
|
84
|
-
{# </a>#}
|
|
85
|
-
{# </div>#}
|
|
86
|
-
{# </li>#}
|
|
87
|
-
{# <li class="py-2">#}
|
|
88
|
-
{# <div class="menu-item">#}
|
|
89
|
-
{# <a href="#" class="inline-flex w-full p-8">#}
|
|
90
|
-
{# <svg class="w-20 h-20 mr-8 flex-shrink-0">#}
|
|
91
|
-
{# <use xlink:href="#Accept-email"></use>#}
|
|
92
|
-
{# </svg>#}
|
|
93
|
-
{# <span class="leading-20 line-clamp-1">Menu Item 8</span>#}
|
|
94
|
-
{# </a>#}
|
|
95
|
-
{# </div>#}
|
|
96
|
-
{# </li>#}
|
|
97
|
-
{# </ul>#}
|
|
98
|
-
</div>
|
|
99
|
-
<footer class="mt-auto border-t border-dark-200">
|
|
100
|
-
{# Global Search #}
|
|
101
|
-
{# <div class="flex p-16 gap-x-8 border-b border-dark-200 w-full">#}
|
|
102
|
-
{# <div class="flex gap-x-4">#}
|
|
103
|
-
{# <div class="key">#}
|
|
104
|
-
{# ⌘#}
|
|
105
|
-
{# </div>#}
|
|
106
|
-
{# <div class="key">#}
|
|
107
|
-
{# K#}
|
|
108
|
-
{# </div>#}
|
|
109
|
-
{# </div>#}
|
|
110
|
-
{##}
|
|
111
|
-
{# <div class="text-dark">#}
|
|
112
|
-
{# Rýchla navigácia#}
|
|
113
|
-
{# </div>#}
|
|
114
|
-
{# </div>#}
|
|
115
|
-
<div class="relative">
|
|
116
|
-
<div class="dropdown-btn flex items-center w-full p-16 cursor-pointer min-h-72"
|
|
117
|
-
data-bs-toggle="dropdown"
|
|
118
|
-
data-bs-offset="[16,8]"
|
|
119
|
-
data-bs-popper-placement="top-start">
|
|
120
|
-
<div class="w-32 h-32 rounded-full leading-none flex-center flex-shrink-0 bg-dark-300">
|
|
121
|
-
{{ username_data.initials }}
|
|
122
|
-
</div>
|
|
123
|
-
<div class="ml-8">
|
|
124
|
-
<div class="text-14 text-dark-900">{{ username_data.full_name }}</div>
|
|
125
|
-
<div class="text-12 leading-16 js-alias-domain-name hidden"></div>
|
|
126
|
-
</div>
|
|
127
|
-
<svg class="w-16 h-16 ml-auto flex-shrink-0">
|
|
128
|
-
<use xlink:href="#Sort Alt"></use>
|
|
19
|
+
<nav class="w-260 xl:fixed top-0 bottom-0 left-0 max-lg:sidebar border-r border-dark-200 overflow-hidden flex flex-col relative bg-dark-50 z-1"
|
|
20
|
+
id="main-navigation">
|
|
21
|
+
<header class="px-24 py-32 hidden xl:!block">
|
|
22
|
+
<img src="{% static 'sb_admin/images/logo.svg' %}" class="h-32 w-auto dark:hidden"
|
|
23
|
+
alt="SBAdmin" width="133" height="20">
|
|
24
|
+
<img src="{% static 'sb_admin/images/logo_light.svg' %}" class="h-32 w-auto hidden dark:block"
|
|
25
|
+
alt="SBAdmin" width="133" height="20">
|
|
26
|
+
</header>
|
|
27
|
+
<header class="px-16 py-8 flex items-center xl:hidden border-b border-dark-200 bg-light min-h-56">
|
|
28
|
+
<div class="js-sidebar-toggle w-24 h-24 flex-center ml-auto" data-sidebar-target="main-navigation">
|
|
29
|
+
<svg class="w-20 h-20 flex-shrink-0">
|
|
30
|
+
<use xlink:href="#Close"></use>
|
|
129
31
|
</svg>
|
|
130
32
|
</div>
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
33
|
+
</header>
|
|
34
|
+
<div class="h-full overflow-auto custom-scrollbar max-lg:py-16">
|
|
35
|
+
<ul class="-my-2 px-16">
|
|
36
|
+
{% for menu_item in request_data.menu_items %}
|
|
37
|
+
<li class="py-2">
|
|
38
|
+
{% if menu_item.sub_items %}
|
|
39
|
+
<div class="menu-item">
|
|
40
|
+
<a href="{{ menu_item.get_url|default:menu_item.sub_items.0.get_url }}"
|
|
41
|
+
class="inline-flex w-full p-8 justify-start collapse-btn{% if not menu_item.is_active %} collapsed{% endif %}"
|
|
42
|
+
aria-expanded="{% if menu_item.is_active %}true{% else %}false{% endif %}"
|
|
43
|
+
>
|
|
44
|
+
{% if menu_item.get_icon %}
|
|
45
|
+
<svg class="w-20 h-20 mr-8 flex-shrink-0">
|
|
46
|
+
<use xlink:href="#{{ menu_item.get_icon }}"></use>
|
|
47
|
+
</svg>
|
|
48
|
+
{% endif %}
|
|
49
|
+
<span>{{ menu_item.get_label }}</span>
|
|
50
|
+
</a>
|
|
51
|
+
<ul id="{{ menu_item.get_id }}" class="collapse -mb-2 mt-2{% if menu_item.is_active %} show{% endif %}">
|
|
52
|
+
{% for sub_menu_item in menu_item.sub_items %}
|
|
53
|
+
<li class="py-2">
|
|
54
|
+
<a href="{{ sub_menu_item.get_url }}"
|
|
55
|
+
class="menu-item text-dark-600 leading-20 pl-36 py-8 pr-8{% if sub_menu_item.is_active %} active{% endif %}">
|
|
56
|
+
<span>{{ sub_menu_item.get_label }}</span>
|
|
57
|
+
</a>
|
|
58
|
+
</li>
|
|
59
|
+
{% endfor %}
|
|
60
|
+
</ul>
|
|
61
|
+
</div>
|
|
62
|
+
{% else %}
|
|
63
|
+
<div class="menu-item{% if menu_item.is_active %} active{% endif %}">
|
|
64
|
+
<a href="{{ menu_item.get_url }}" class="inline-flex w-full p-8">
|
|
65
|
+
{% if menu_item.get_icon %}
|
|
66
|
+
<svg class="w-20 h-20 mr-8 flex-shrink-0">
|
|
67
|
+
<use xlink:href="#{{ menu_item.get_icon }}"></use>
|
|
68
|
+
</svg>
|
|
69
|
+
{% endif %}
|
|
70
|
+
<span>{{ menu_item.get_label }}</span>
|
|
71
|
+
</a>
|
|
72
|
+
</div>
|
|
73
|
+
{% endif %}
|
|
149
74
|
</li>
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
75
|
+
{% endfor %}
|
|
76
|
+
</ul>
|
|
77
|
+
{# <hr class="my-32">#}
|
|
78
|
+
{# <div class="text-14 mb-24 px-16">#}
|
|
79
|
+
{# Pomoc a podpora#}
|
|
80
|
+
{# </div>#}
|
|
81
|
+
{# <ul class="-my-2 px-16">#}
|
|
82
|
+
{# <li class="py-2">#}
|
|
83
|
+
{# <div class="menu-item">#}
|
|
84
|
+
{# <a href="#" class="inline-flex w-full p-8">#}
|
|
85
|
+
{# <svg class="w-20 h-20 mr-8 flex-shrink-0">#}
|
|
86
|
+
{# <use xlink:href="#Accept-email"></use>#}
|
|
87
|
+
{# </svg>#}
|
|
88
|
+
{# <span class="leading-20 line-clamp-1">Menu Item 8</span>#}
|
|
89
|
+
{# </a>#}
|
|
90
|
+
{# </div>#}
|
|
91
|
+
{# </li>#}
|
|
92
|
+
{# <li class="py-2">#}
|
|
93
|
+
{# <div class="menu-item">#}
|
|
94
|
+
{# <a href="#" class="inline-flex w-full p-8">#}
|
|
95
|
+
{# <svg class="w-20 h-20 mr-8 flex-shrink-0">#}
|
|
96
|
+
{# <use xlink:href="#Accept-email"></use>#}
|
|
97
|
+
{# </svg>#}
|
|
98
|
+
{# <span class="leading-20 line-clamp-1">Menu Item 8</span>#}
|
|
99
|
+
{# </a>#}
|
|
100
|
+
{# </div>#}
|
|
101
|
+
{# </li>#}
|
|
102
|
+
{# </ul>#}
|
|
103
|
+
</div>
|
|
104
|
+
<footer class="mt-auto border-t border-dark-200">
|
|
105
|
+
{# Global Search #}
|
|
106
|
+
{# <div class="flex p-16 gap-x-8 border-b border-dark-200 w-full">#}
|
|
107
|
+
{# <div class="flex gap-x-4">#}
|
|
108
|
+
{# <div class="key">#}
|
|
109
|
+
{# ⌘#}
|
|
110
|
+
{# </div>#}
|
|
111
|
+
{# <div class="key">#}
|
|
112
|
+
{# K#}
|
|
113
|
+
{# </div>#}
|
|
114
|
+
{# </div>#}
|
|
115
|
+
{##}
|
|
116
|
+
{# <div class="text-dark">#}
|
|
117
|
+
{# Rýchla navigácia#}
|
|
118
|
+
{# </div>#}
|
|
119
|
+
{# </div>#}
|
|
120
|
+
<div class="relative">
|
|
121
|
+
<div class="dropdown-btn flex items-center w-full p-16 cursor-pointer min-h-72"
|
|
122
|
+
data-bs-toggle="dropdown"
|
|
123
|
+
data-bs-offset="[16,8]"
|
|
124
|
+
data-bs-popper-placement="top-start">
|
|
125
|
+
<div class="w-32 h-32 rounded-full leading-none flex-center flex-shrink-0 bg-dark-300">
|
|
126
|
+
{{ username_data.initials }}
|
|
127
|
+
</div>
|
|
128
|
+
<div class="ml-8">
|
|
129
|
+
<div class="text-14 text-dark-900">{{ username_data.full_name }}</div>
|
|
130
|
+
<div class="text-12 leading-16 js-alias-domain-name hidden"></div>
|
|
131
|
+
</div>
|
|
132
|
+
<svg class="w-16 h-16 ml-auto flex-shrink-0">
|
|
133
|
+
<use xlink:href="#Sort Alt"></use>
|
|
134
|
+
</svg>
|
|
135
|
+
</div>
|
|
136
|
+
<div class="dropdown-menu max-h-432">
|
|
137
|
+
<form id="logout-form" method="post" action="{% url 'sb_admin:logout' %}" class="hidden">
|
|
138
|
+
{% csrf_token %}
|
|
139
|
+
</form>
|
|
140
|
+
|
|
141
|
+
<ul>
|
|
142
|
+
<li class="flex items-center p-12 text-dark-900 border-b border-dark-100 cursor-pointer hover:bg-dark-100"
|
|
143
|
+
onclick="document.getElementById('logout-form').submit();">
|
|
144
|
+
<svg class="w-16 h-16 flex-shrink-0 mr-8">
|
|
145
|
+
<use xlink:href="#Logout"></use>
|
|
146
|
+
</svg>
|
|
147
|
+
{% trans 'Logout' %}
|
|
153
148
|
</li>
|
|
154
|
-
<li>
|
|
155
|
-
<
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
</div>
|
|
160
|
-
{{ field.errors }}
|
|
161
|
-
{% endfor %}
|
|
162
|
-
</form>
|
|
149
|
+
<li class="flex items-center p-12 text-dark-900 cursor-pointer hover:bg-dark-100" onclick="window.location='{% url "sb_admin:password_change" %}'">
|
|
150
|
+
<svg class="w-16 h-16 flex-shrink-0 mr-8">
|
|
151
|
+
<use xlink:href="#Lock"></use>
|
|
152
|
+
</svg>
|
|
153
|
+
{% trans 'Change password' %}
|
|
163
154
|
</li>
|
|
164
|
-
|
|
165
|
-
|
|
155
|
+
{% block color_scheme %}
|
|
156
|
+
<li class="border-t border-dark-100 pt-8">
|
|
157
|
+
<form hx-post="{% url 'sb_admin:color_scheme' %}" hx-trigger="change" hx-swap="none" id="color-schema-form" class="js-color-scheme-picker">
|
|
158
|
+
{{ color_scheme_form.color_scheme }}
|
|
159
|
+
</form>
|
|
160
|
+
</li>
|
|
161
|
+
{% endblock %}
|
|
162
|
+
{% if request_data.global_filter_instance %}
|
|
163
|
+
<li class="border-t border-dark-100 pt-8">
|
|
164
|
+
<form hx-post="{% url 'sb_admin:global_filter' %}" hx-trigger="change" hx-swap="none" id="global_filter_form">
|
|
165
|
+
{% for field in request_data.global_filter_instance %}
|
|
166
|
+
{{ field }}
|
|
167
|
+
{{ field.errors }}
|
|
168
|
+
{% endfor %}
|
|
169
|
+
</form>
|
|
170
|
+
</li>
|
|
171
|
+
{% endif %}
|
|
172
|
+
</ul>
|
|
173
|
+
</div>
|
|
166
174
|
</div>
|
|
167
|
-
</div>
|
|
168
175
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
176
|
+
</footer>
|
|
177
|
+
</nav>
|
|
178
|
+
<div class="bg-filter js-sidebar-toggle" data-sidebar-target="main-navigation"></div>
|
|
179
|
+
{% endif %}
|
|
172
180
|
{% endblock %}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
</div>
|
|
17
17
|
<div class="modal-body">
|
|
18
18
|
{% block modal_body %}
|
|
19
|
-
<form id="sb-admin-modal-form" hx-indicator=".sb-admin-modal-loading" hx-target="#sb-admin-modal" hx-post="{{ request.get_full_path }}" action="{{ request.get_full_path }}" method="post">
|
|
19
|
+
<form id="sb-admin-modal-form" enctype="multipart/form-data" hx-indicator=".sb-admin-modal-loading" hx-target="#sb-admin-modal" hx-post="{{ request.get_full_path }}" action="{{ request.get_full_path }}" method="post">
|
|
20
20
|
{% if form.errors %}
|
|
21
21
|
<div class="alert bg-negative-50 border border-negative-100 text-negative-900 mb-24">
|
|
22
22
|
<div class="flex">
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
</div>
|
|
43
43
|
<div class="modal-footer">
|
|
44
44
|
{% block modal_footer %}
|
|
45
|
-
<button form="sb-admin-modal-form" type="button" class="btn btn-destructive
|
|
45
|
+
<button form="sb-admin-modal-form" type="button" class="btn btn-destructive" data-bs-dismiss="modal">{% trans 'Close' %}</button>
|
|
46
46
|
<button form="sb-admin-modal-form" type="submit" class="btn btn-primary">{% trans 'Continue' %}</button>
|
|
47
47
|
{% endblock %}
|
|
48
48
|
</div>
|
|
@@ -51,10 +51,6 @@
|
|
|
51
51
|
</div>
|
|
52
52
|
<script>
|
|
53
53
|
(function(){
|
|
54
|
-
const choiceElements = document.getElementById('sb-admin-modal').querySelectorAll('.js-autocomplete');
|
|
55
|
-
choiceElements.forEach((choiceInput) => {
|
|
56
|
-
window.SBAdmin.autocomplete.initAutocomplete(choiceInput);
|
|
57
|
-
})
|
|
58
54
|
document.body.dispatchEvent(new Event('SBModalShown'));
|
|
59
55
|
})();
|
|
60
56
|
</script>
|
|
@@ -1,15 +1,60 @@
|
|
|
1
1
|
{% extends 'sb_admin/sb_admin_base_no_sidebar.html' %}
|
|
2
|
+
{% load sb_admin_tags %}
|
|
2
3
|
|
|
3
4
|
{% block main_wrapper %}
|
|
4
|
-
|
|
5
|
+
{% get_item request.META 'HTTP_SEC_FETCH_SITE' as sec_fetch_site %}
|
|
6
|
+
<div class="w-full h-full min-h-full{% if not sec_fetch_site or request.META.HTTP_SEC_FETCH_DEST == 'document' %} xl:pl-260{% endif %}">
|
|
5
7
|
{% include 'sb_admin/navigation.html' %}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
{% if sbadmin_is_modal %}
|
|
10
|
+
<div id="modal-content" class="modal-dialog">
|
|
11
|
+
<div class="modal-content">
|
|
12
|
+
{% endif %}
|
|
13
|
+
|
|
14
|
+
<div id="content" class="relative flex flex-col{% if sbadmin_is_modal %} min-h-0 h-full{% else %} min-h-screen sm:p-24 {% block view_class %}{% endblock %}{% endif %}">
|
|
15
|
+
{% if sbadmin_is_modal %}
|
|
16
|
+
{# load media which are missing #}
|
|
17
|
+
<script>
|
|
18
|
+
(function(){
|
|
19
|
+
const mediaString = '{{ media|escapejs }}';
|
|
20
|
+
const mediaList = mediaString.split('\n');
|
|
21
|
+
const tmpEl = document.createElement('div');
|
|
22
|
+
function duplicateScript(script) {
|
|
23
|
+
const newScript = document.createElement('script');
|
|
24
|
+
for (let i = 0; i < script.attributes.length; i++) {
|
|
25
|
+
const attr = script.attributes[i];
|
|
26
|
+
newScript.setAttribute(attr.name, attr.value);
|
|
27
|
+
}
|
|
28
|
+
newScript.textContent = script.textContent;
|
|
29
|
+
newScript.async = false;
|
|
30
|
+
return newScript;
|
|
31
|
+
}
|
|
32
|
+
mediaList.forEach(media => {
|
|
33
|
+
tmpEl.innerHTML = media.trim();
|
|
34
|
+
const mediaEl = tmpEl.firstElementChild;
|
|
35
|
+
if(mediaEl.tagName === 'LINK' && !document.head.querySelector(`link[href="${mediaEl.getAttribute('href')}"]`)) {
|
|
36
|
+
document.head.appendChild(mediaEl);
|
|
37
|
+
return
|
|
38
|
+
}
|
|
39
|
+
if(mediaEl.tagName === 'SCRIPT' && !document.head.querySelector(`script[src="${mediaEl.getAttribute('src')}"]`)) {
|
|
40
|
+
document.head.appendChild(duplicateScript(mediaEl));
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}());
|
|
44
|
+
</script>
|
|
45
|
+
{% else %}
|
|
46
|
+
{% include "sb_admin/includes/loading.html" %}
|
|
47
|
+
{% include "sb_admin/includes/notifications.html" %}
|
|
48
|
+
{% endif %}
|
|
9
49
|
|
|
10
50
|
{% block content %}
|
|
11
51
|
{% endblock %}
|
|
12
52
|
{{ inner_content }}
|
|
13
53
|
</div>
|
|
54
|
+
|
|
55
|
+
{% if sbadmin_is_modal %}
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
{% endif %}
|
|
14
59
|
</div>
|
|
15
60
|
{% endblock %}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{% load static %}
|
|
2
2
|
|
|
3
3
|
<!DOCTYPE html>
|
|
4
|
-
<html lang="{{ request.LANGUAGE_CODE }}" data-theme="
|
|
4
|
+
<html lang="{{ request.LANGUAGE_CODE }}" data-theme="{{ user_config.color_scheme }}">
|
|
5
5
|
<head>
|
|
6
6
|
{% include 'sb_admin/fonts.html' %}
|
|
7
7
|
<meta name="robots" content="noindex"/>
|
|
@@ -11,20 +11,24 @@
|
|
|
11
11
|
<title>{% block title %}SBAdmin{% endblock %}</title>
|
|
12
12
|
|
|
13
13
|
{% block icons %}
|
|
14
|
-
<link rel="apple-touch-icon" sizes="180x180" href="{% static 'favicon/apple-touch-icon.png' %}">
|
|
15
|
-
<link rel="icon" type="image/png" sizes="32x32" href="{% static 'favicon/favicon-32x32.png' %}">
|
|
16
|
-
<link rel="icon" type="image/png" sizes="16x16" href="{% static 'favicon/favicon-16x16.png' %}">
|
|
17
|
-
<link rel="manifest" href="{% static 'favicon/site.webmanifest' %}">
|
|
18
|
-
<link rel="mask-icon" href="{% static 'favicon/safari-pinned-tab.svg' %}" color="#e0004d">
|
|
19
|
-
<link rel="shortcut icon" href="{% static 'favicon/favicon.ico' %}">
|
|
14
|
+
<link rel="apple-touch-icon" sizes="180x180" href="{% static 'sb_admin/favicon/apple-touch-icon.png' %}">
|
|
15
|
+
<link rel="icon" type="image/png" sizes="32x32" href="{% static 'sb_admin/favicon/favicon-32x32.png' %}">
|
|
16
|
+
<link rel="icon" type="image/png" sizes="16x16" href="{% static 'sb_admin/favicon/favicon-16x16.png' %}">
|
|
17
|
+
<link rel="manifest" href="{% static 'sb_admin/favicon/site.webmanifest' %}">
|
|
18
|
+
<link rel="mask-icon" href="{% static 'sb_admin/favicon/safari-pinned-tab.svg' %}" color="#e0004d">
|
|
19
|
+
<link rel="shortcut icon" href="{% static 'sb_admin/favicon/favicon.ico' %}">
|
|
20
20
|
<meta name="msapplication-TileColor" content="#e0004d">
|
|
21
|
-
<meta name="msapplication-config" content="{% static 'favicon/browserconfig.xml' %}">
|
|
21
|
+
<meta name="msapplication-config" content="{% static 'sb_admin/favicon/browserconfig.xml' %}">
|
|
22
22
|
<meta name="theme-color" content="#ffffff">
|
|
23
23
|
{% endblock %}
|
|
24
24
|
<link rel="stylesheet" href="{% static 'sb_admin/dist/main_style.css' %}">
|
|
25
25
|
{% block style_init %}{% endblock %}
|
|
26
26
|
|
|
27
27
|
<script>window.csrf_token = "{{ csrf_token }}"</script>
|
|
28
|
+
|
|
29
|
+
{% block jquery %}
|
|
30
|
+
<script src="{% static 'sb_admin/js/jquery-3.7.1.min.js' %}"></script>
|
|
31
|
+
{% endblock %}
|
|
28
32
|
{% block js_init %}
|
|
29
33
|
<script>
|
|
30
34
|
{% if const %}
|
|
@@ -35,11 +39,23 @@
|
|
|
35
39
|
}
|
|
36
40
|
</script>
|
|
37
41
|
{% endblock %}
|
|
38
|
-
{%
|
|
39
|
-
<script src="{% static 'sb_admin/
|
|
40
|
-
|
|
42
|
+
{% block tree_widget_static %}
|
|
43
|
+
<script src="{% static 'sb_admin/fancytree/jquery.fancytree-all-deps.min.js' %}"></script>
|
|
44
|
+
<script src="{% static 'sb_admin/dist/tree_widget.js' %}"></script>
|
|
45
|
+
<link rel="stylesheet" href="{% static 'sb_admin/dist/tree_widget_style.css' %}">
|
|
46
|
+
{% endblock %}
|
|
41
47
|
{% block extrahead %}{% endblock %}
|
|
42
48
|
<style>@media (min-width: 1200px){.xl\:\!block {display: block !important;}}</style>
|
|
49
|
+
{% if request.META.HTTP_SEC_FETCH_DEST == "iframe" %}
|
|
50
|
+
<style>
|
|
51
|
+
.detail-view-action-bar {
|
|
52
|
+
display: none !important;
|
|
53
|
+
}
|
|
54
|
+
.change-form {
|
|
55
|
+
margin-top: 0 !important;
|
|
56
|
+
}
|
|
57
|
+
</style>
|
|
58
|
+
{% endif %}
|
|
43
59
|
</head>
|
|
44
60
|
<body hx-ext="remove-me" class="{{ view_id }} {% block bodyclass %}{% endblock %}" hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'>
|
|
45
61
|
<div class="hidden">
|
|
@@ -52,6 +68,14 @@
|
|
|
52
68
|
|
|
53
69
|
{% endblock %}
|
|
54
70
|
|
|
71
|
+
{% block confirmation_modal %}
|
|
72
|
+
{% include 'sb_admin/includes/confirmation.html' %}
|
|
73
|
+
{% endblock %}
|
|
74
|
+
|
|
75
|
+
{% block modal %}
|
|
76
|
+
{% include 'sb_admin/partials/modal/modal.html' %}
|
|
77
|
+
{% endblock %}
|
|
78
|
+
|
|
55
79
|
{% block js %}
|
|
56
80
|
{% include 'sb_admin/sb_admin_js_trans.html' %}
|
|
57
81
|
<script>
|
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
window.sb_admin_translation_strings["up"] = '{% trans "Move up" %}';
|
|
7
7
|
window.sb_admin_translation_strings["down"] = '{% trans "Move down" %}';
|
|
8
8
|
window.sb_admin_translation_strings["reorder"] = '{% trans "Reorder" %}';
|
|
9
|
+
window.sb_admin_translation_strings["expand"] = '{% trans "Expand" %}';
|
|
10
|
+
window.sb_admin_translation_strings["collapse"] = '{% trans "Collapse" %}';
|
|
9
11
|
window.sb_admin_translation_strings["page"] = '{% blocktrans %}<strong>${from} - ${to}</strong> of <strong>${total}</strong><span class="max-xs:hidden"> items</span>{% endblocktrans %}'
|
|
10
12
|
window.sb_admin_translation_strings["page_empty"] = '{% blocktrans %}<strong>0</strong> items{% endblocktrans %}'
|
|
13
|
+
window.sb_admin_translation_strings["selected"] = '{% blocktrans %}${value} selected{% endblocktrans %}'
|
|
11
14
|
</script>
|