general.py 4.1 KB

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