1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from django import forms
- from django.utils.translation import gettext_lazy as _
- from ...admin.forms import YesNoSwitch
- from ..models import MenuItem
- from ..cache import clear_menus_cache
- class MenuItemForm(forms.ModelForm):
- title = forms.CharField(label=_("Title"))
- url = forms.URLField(
- label=_("URL"), help_text=_("URL where this item will point to.")
- )
- menu = forms.ChoiceField(
- label=_("Menu"),
- choices=MenuItem.MENU_CHOICES,
- help_text=_("Menu in which this item will be displayed."),
- )
- css_class = forms.CharField(
- label=_("CSS class"),
- help_text=_('If you want to set custom value for link\'s "class".'),
- required=False,
- )
- target_blank = YesNoSwitch(
- label=_("Open this link in new window"),
- help_text=_(
- 'Enabling this option will result in the target="_blank" attribute being '
- "added to this link's HTML element."
- ),
- required=False,
- )
- rel = forms.CharField(
- label=_("Rel attribute"),
- help_text=_(
- 'Optional "rel" attribute that this item will use (ex. "nofollow").'
- ),
- required=False,
- )
- class Meta:
- model = MenuItem
- fields = ["title", "url", "menu", "css_class", "target_blank", "rel"]
- def save(self):
- item = super().save()
- clear_menus_cache()
- return item
|