Skip to content

Commit 208642a

Browse files
author
David Farrington
committed
Adds support for topmenu icons
1 parent fd1d294 commit 208642a

File tree

3 files changed

+22
-27
lines changed

3 files changed

+22
-27
lines changed

jazzmin/templates/admin/base.html

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,19 @@
7171
<li class="nav-item d-none d-sm-inline-block{% if link.children %} dropdown{% endif %}">
7272
{% if link.children %}
7373
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
74-
{{ link.name }}
74+
{% if jazzmin_settings.topmenu_icons and link.icon %}<i class="fa-sm {{ link.icon }}">&nbsp;</i> {% endif %}{{ link.name }}
7575
</a>
7676
<div class="dropdown-menu">
7777
{% for child in link.children %}
78-
<a class="dropdown-item" href="{{ child.url }}" {% if link.new_window %}target="_blank"{% endif %}>{{ child.name }}</a>
78+
<a class="dropdown-item" href="{{ child.url }}" {% if link.new_window %}target="_blank"{% endif %}>
79+
{% if jazzmin_settings.topmenu_icons and child.icon %}<i class="fa-sm {{ child.icon }}">&nbsp;</i> {% endif %}{{ child.name }}
80+
</a>
7981
{% endfor %}
8082
</div>
8183
{% else %}
82-
<a href="{{ link.url }}" class="nav-link" {% if link.new_window %}target="_blank"{% endif %}>{{ link.name }}</a>
84+
<a href="{{ link.url }}" class="nav-link" {% if link.new_window %}target="_blank"{% endif %}>
85+
{% if jazzmin_settings.topmenu_icons and link.icon %}<i class="fa-sm {{ link.icon }}">&nbsp;</i> {% endif %}{{ link.name }}
86+
</a>
8387
{% endif %}
8488
</li>
8589
{% endfor %}

jazzmin/utils.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ def make_menu(
192192
"url": get_custom_url(link["url"], admin_site=admin_site),
193193
"children": None,
194194
"new_window": link.get("new_window", False),
195-
"icon": link.get("icon", options["default_icon_children"]),
195+
"icon": link.get("icon"),
196196
}
197197
)
198198

@@ -210,7 +210,7 @@ def make_menu(
210210
"url": get_admin_url(link["model"], admin_site=admin_site),
211211
"children": [],
212212
"new_window": link.get("new_window", False),
213-
"icon": options["icons"].get(link["model"], options["default_icon_children"]),
213+
"icon": options["icons"].get(link["model"].lower()),
214214
}
215215
)
216216

@@ -224,6 +224,7 @@ def make_menu(
224224
"name": child.get("verbose_name", child["name"]),
225225
"url": child["url"],
226226
"children": None,
227+
"icon": options["icons"].get(child["model"].lower()),
227228
}
228229
>>>>>>> 3ec6d11 (test)
229230
for child in get_app_admin_urls(link["app"], admin_site=admin_site)
@@ -237,7 +238,7 @@ def make_menu(
237238
"name": getattr(apps.app_configs[link["app"]], "verbose_name", link["app"]).title(),
238239
"url": "#",
239240
"children": children,
240-
"icon": options["icons"].get(link["app"], options["default_icon_children"]),
241+
"icon": options["icons"].get(link["app"].lower()),
241242
}
242243
)
243244

tests/test_app/library/settings.py

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -71,25 +71,15 @@
7171

7272
DATABASES = {
7373
"default": dj_database_url.config(
74-
env="DATABASE_URL",
75-
conn_max_age=500,
76-
default="sqlite:///{}".format(os.path.join(BASE_DIR, "db.sqlite3")),
74+
env="DATABASE_URL", conn_max_age=500, default="sqlite:///{}".format(os.path.join(BASE_DIR, "db.sqlite3")),
7775
)
7876
}
7977

8078
AUTH_PASSWORD_VALIDATORS = [
81-
{
82-
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
83-
},
84-
{
85-
"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
86-
},
87-
{
88-
"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
89-
},
90-
{
91-
"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
92-
},
79+
{"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",},
80+
{"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",},
81+
{"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",},
82+
{"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",},
9383
]
9484

9585
LANGUAGE_CODE = "en"
@@ -142,29 +132,27 @@
142132
# Links to put along the top menu
143133
"topmenu_links": [
144134
# Url that gets reversed (Permissions can be added)
145-
{"name": "Home", "url": "admin:index", "permissions": ["auth.view_user"]},
135+
{"name": "Home", "url": "admin:index", "permissions": ["auth.view_user"], "icon": "fas fa-home"},
146136
# external url that opens in a new window (Permissions can be added)
147137
{
148138
"name": "Support",
149139
"url": "https://github.com/farridav/django-jazzmin/issues",
150140
"new_window": True,
141+
"icon": "fas fa-cog",
151142
},
152143
# model admin to link to (Permissions checked against model)
153144
{"model": "auth.User"},
154145
# App with dropdown menu to all its models pages (Permissions checked against models)
155146
{"app": "books"},
156147
{"app": "loans"},
157148
],
149+
"topmenu_icons": True,
158150
#############
159151
# User Menu #
160152
#############
161153
# Additional links to include in the user menu on the top right ('app' url type is not allowed)
162154
"usermenu_links": [
163-
{
164-
"name": "Support",
165-
"url": "https://github.com/farridav/django-jazzmin/issues",
166-
"new_window": True,
167-
},
155+
{"name": "Support", "url": "https://github.com/farridav/django-jazzmin/issues", "new_window": True},
168156
{"model": "auth.user"},
169157
],
170158
#############
@@ -200,9 +188,11 @@
200188
"auth.user": "fas fa-user",
201189
"auth.Group": "fas fa-users",
202190
"admin.LogEntry": "fas fa-file",
191+
"books": "fas fa-book",
203192
"books.Author": "fas fa-user",
204193
"books.Book": "fas fa-book",
205194
"books.Genre": "fas fa-photo-video",
195+
"loans": "fas fa-book-open",
206196
"loans.BookLoan": "fas fa-book-open",
207197
"loans.Library": "fas fa-book-reader",
208198
},

0 commit comments

Comments
 (0)