general.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. from django import forms
  2. from django.utils.translation import gettext_lazy as _
  3. from ....admin.forms import YesNoSwitch
  4. from .base import ChangeSettingsForm
  5. class ChangeGeneralSettingsForm(ChangeSettingsForm):
  6. settings = [
  7. "forum_name",
  8. "forum_address",
  9. "index_header",
  10. "index_title",
  11. "index_meta_description",
  12. "logo",
  13. "logo_small",
  14. "logo_text",
  15. "og_image",
  16. "og_image_avatar_on_profile",
  17. "og_image_avatar_on_thread",
  18. "forum_footnote",
  19. "email_footer",
  20. ]
  21. forum_name = forms.CharField(label=_("Forum name"), min_length=2, max_length=255)
  22. forum_address = forms.URLField(label=_("Forum address"), max_length=255)
  23. index_header = forms.CharField(
  24. label=_("Header text"),
  25. help_text=_("This text will replace forum name in page header."),
  26. max_length=255,
  27. required=False,
  28. )
  29. index_title = forms.CharField(label=_("Page title"), max_length=255, required=False)
  30. index_meta_description = forms.CharField(
  31. label=_("Meta Description"),
  32. help_text=_(
  33. "Short description of your forum that search and social sites may "
  34. "display next to link to your forum's index."
  35. ),
  36. max_length=255,
  37. required=False,
  38. )
  39. logo = forms.ImageField(
  40. label=_("Logo"),
  41. help_text=_("Image that will displayed in forum navbar."),
  42. required=False,
  43. )
  44. logo_delete = forms.BooleanField(label=_("Delete logo image"), required=False)
  45. logo_small = forms.ImageField(
  46. label=_("Small logo"),
  47. help_text=_(
  48. "Image that will be displayed in compact forum navbar. "
  49. "When set, it will replace icon pointing to forum index."
  50. ),
  51. required=False,
  52. )
  53. logo_small_delete = forms.BooleanField(
  54. label=_("Delete small logo image"), required=False
  55. )
  56. logo_text = forms.CharField(
  57. label=_("Text"),
  58. help_text=_(
  59. "Text displayed in forum navbar. If logo image was uploaded, text will "
  60. "be displayed right next to it. Never displayed by the compact navbar."
  61. ),
  62. max_length=255,
  63. required=False,
  64. )
  65. og_image = forms.ImageField(
  66. label=_("Image"),
  67. help_text=_(
  68. "Custom image that will appear next to links to your forum posted on "
  69. "social sites. Facebook recommends that this image should be "
  70. "1200 pixels wide and 630 pixels tall."
  71. ),
  72. required=False,
  73. )
  74. og_image_delete = forms.BooleanField(label=_("Delete image"), required=False)
  75. og_image_avatar_on_profile = YesNoSwitch(
  76. label=_("Replace image with avatar on user profiles")
  77. )
  78. og_image_avatar_on_thread = YesNoSwitch(
  79. label=_("Replace image with avatar on threads")
  80. )
  81. forum_footnote = forms.CharField(
  82. label=_("Forum footnote"),
  83. help_text=_("Short message displayed in forum footer."),
  84. max_length=300,
  85. required=False,
  86. )
  87. email_footer = forms.CharField(
  88. label=_("E-mails footer"),
  89. help_text=_(
  90. "Optional short message included at the end of e-mails sent by forum."
  91. ),
  92. max_length=255,
  93. required=False,
  94. )
  95. def __init__(self, *args, **kwargs):
  96. super().__init__(*args, **kwargs)
  97. address = self.request.build_absolute_uri("/")
  98. self["forum_address"].help_text = _(
  99. "Misago uses this setting to build links in e-mails sent to site "
  100. 'users. Address under which site is running appears to be "%(address)s".'
  101. ) % {"address": address}
  102. def clean_forum_address(self):
  103. return self.cleaned_data["forum_address"].lower()