Add custom css background

This commit is contained in:
cuom1999 2023-09-01 19:42:58 -05:00
parent 036509c47f
commit 5f80859022
7 changed files with 148 additions and 80 deletions

View file

@ -80,6 +80,7 @@ class ProfileForm(ModelForm):
"ace_theme", "ace_theme",
"user_script", "user_script",
"profile_image", "profile_image",
"css_background",
] ]
widgets = { widgets = {
"user_script": AceWidget(theme="github"), "user_script": AceWidget(theme="github"),
@ -87,6 +88,7 @@ class ProfileForm(ModelForm):
"language": Select2Widget(attrs={"style": "width:200px"}), "language": Select2Widget(attrs={"style": "width:200px"}),
"ace_theme": Select2Widget(attrs={"style": "width:200px"}), "ace_theme": Select2Widget(attrs={"style": "width:200px"}),
"profile_image": ImageWidget, "profile_image": ImageWidget,
"css_background": forms.TextInput(),
} }
has_math_config = bool(settings.MATHOID_URL) has_math_config = bool(settings.MATHOID_URL)

View file

@ -0,0 +1,24 @@
# Generated by Django 3.2.18 on 2023-09-02 00:30
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("judge", "0167_ultimate_contest_format"),
]
operations = [
migrations.AddField(
model_name="profile",
name="css_background",
field=models.TextField(
blank=True,
help_text='CSS custom background properties: url("image_url"), color, etc',
max_length=300,
null=True,
verbose_name="Custom background",
),
),
]

View file

@ -246,6 +246,13 @@ class Profile(models.Model):
) )
profile_image = models.ImageField(upload_to=profile_image_path, null=True) profile_image = models.ImageField(upload_to=profile_image_path, null=True)
email_change_pending = models.EmailField(blank=True, null=True) email_change_pending = models.EmailField(blank=True, null=True)
css_background = models.TextField(
verbose_name=_("Custom background"),
null=True,
blank=True,
help_text=_('CSS custom background properties: url("image_url"), color, etc'),
max_length=300,
)
@cached_property @cached_property
def organization(self): def organization(self):

View file

@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: lqdoj2\n" "Project-Id-Version: lqdoj2\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-30 10:40+0700\n" "POT-Creation-Date: 2023-09-02 07:40+0700\n"
"PO-Revision-Date: 2021-07-20 03:44\n" "PO-Revision-Date: 2021-07-20 03:44\n"
"Last-Translator: Icyene\n" "Last-Translator: Icyene\n"
"Language-Team: Vietnamese\n" "Language-Team: Vietnamese\n"
@ -18,26 +18,26 @@ msgstr ""
"X-Crowdin-Project-ID: 466004\n" "X-Crowdin-Project-ID: 466004\n"
"X-Crowdin-File-ID: 5\n" "X-Crowdin-File-ID: 5\n"
#: chat_box/models.py:32 chat_box/models.py:57 chat_box/models.py:72 #: chat_box/models.py:39 chat_box/models.py:64 chat_box/models.py:79
#: judge/admin/interface.py:150 judge/models/contest.py:636 #: judge/admin/interface.py:150 judge/models/contest.py:636
#: judge/models/contest.py:842 judge/models/course.py:115 #: judge/models/contest.py:842 judge/models/course.py:115
#: judge/models/profile.py:383 judge/models/profile.py:461 #: judge/models/profile.py:384 judge/models/profile.py:462
msgid "user" msgid "user"
msgstr "người dùng" msgstr "người dùng"
#: chat_box/models.py:34 judge/models/comment.py:44 judge/models/comment.py:189 #: chat_box/models.py:41 judge/models/comment.py:44 judge/models/comment.py:189
msgid "posted time" msgid "posted time"
msgstr "thời gian đăng" msgstr "thời gian đăng"
#: chat_box/models.py:36 judge/models/comment.py:49 #: chat_box/models.py:43 judge/models/comment.py:49
msgid "body of comment" msgid "body of comment"
msgstr "nội dung bình luận" msgstr "nội dung bình luận"
#: chat_box/models.py:61 #: chat_box/models.py:68
msgid "last seen" msgid "last seen"
msgstr "xem lần cuối" msgstr "xem lần cuối"
#: chat_box/views.py:46 #: chat_box/views.py:47
msgid "LQDOJ Chat" msgid "LQDOJ Chat"
msgstr "" msgstr ""
@ -69,7 +69,7 @@ msgstr "Đăng ký không thành công"
msgid "Login" msgid "Login"
msgstr "Đăng nhập" msgstr "Đăng nhập"
#: dmoj/urls.py:224 templates/base.html:209 #: dmoj/urls.py:224 templates/base.html:218
#: templates/organization/org-left-sidebar.html:2 #: templates/organization/org-left-sidebar.html:2
msgid "Home" msgid "Home"
msgstr "Trang chủ" msgstr "Trang chủ"
@ -101,7 +101,7 @@ msgstr ""
#: judge/admin/contest.py:79 judge/admin/volunteer.py:54 #: judge/admin/contest.py:79 judge/admin/volunteer.py:54
#: templates/contest/clarification.html:42 templates/contest/contest.html:100 #: templates/contest/clarification.html:42 templates/contest/contest.html:100
#: templates/contest/moss.html:41 templates/internal/left-sidebar.html:2 #: templates/contest/moss.html:41 templates/internal/left-sidebar.html:2
#: templates/internal/problem.html:35 templates/problem/list.html:17 #: templates/internal/problem.html:40 templates/problem/list.html:17
#: templates/problem/list.html:34 templates/problem/list.html:153 #: templates/problem/list.html:34 templates/problem/list.html:153
#: templates/user/user-problems.html:56 templates/user/user-problems.html:98 #: templates/user/user-problems.html:56 templates/user/user-problems.html:98
msgid "Problem" msgid "Problem"
@ -176,7 +176,7 @@ msgstr "Tính toán lại kết quả"
msgid "username" msgid "username"
msgstr "tên đăng nhập" msgstr "tên đăng nhập"
#: judge/admin/contest.py:502 templates/base.html:331 #: judge/admin/contest.py:502 templates/base.html:341
msgid "virtual" msgid "virtual"
msgstr "ảo" msgstr "ảo"
@ -238,7 +238,7 @@ msgid "Limits"
msgstr "Giới hạn" msgstr "Giới hạn"
#: judge/admin/problem.py:217 judge/admin/submission.py:351 #: judge/admin/problem.py:217 judge/admin/submission.py:351
#: templates/base.html:245 templates/stats/tab.html:4 #: templates/base.html:254 templates/stats/tab.html:4
#: templates/submission/list.html:347 #: templates/submission/list.html:347
msgid "Language" msgid "Language"
msgstr "Ngôn ngữ" msgstr "Ngôn ngữ"
@ -433,7 +433,7 @@ msgstr "Các bài tập trong nhóm này"
msgid "These problems are included in this type of problems" msgid "These problems are included in this type of problems"
msgstr "Các bài tập dạng này" msgstr "Các bài tập dạng này"
#: judge/admin/volunteer.py:60 templates/internal/problem.html:76 #: judge/admin/volunteer.py:60 templates/internal/problem.html:81
#: templates/problem/list.html:20 templates/problem/list.html:44 #: templates/problem/list.html:20 templates/problem/list.html:44
msgid "Types" msgid "Types"
msgstr "Dạng" msgstr "Dạng"
@ -483,80 +483,84 @@ msgstr ""
msgid "New IOI" msgid "New IOI"
msgstr "IOI mới" msgstr "IOI mới"
#: judge/forms.py:113 #: judge/contest_format/ultimate.py:12
msgid "Ultimate"
msgstr ""
#: judge/forms.py:115
msgid "File size exceeds the maximum allowed limit of 5MB." msgid "File size exceeds the maximum allowed limit of 5MB."
msgstr "File tải lên không được quá 5MB." msgstr "File tải lên không được quá 5MB."
#: judge/forms.py:144 #: judge/forms.py:146
msgid "Any judge" msgid "Any judge"
msgstr "" msgstr ""
#: judge/forms.py:350 #: judge/forms.py:352
msgid "Enter usernames separating by space" msgid "Enter usernames separating by space"
msgstr "Nhập các tên đăng nhập, cách nhau bởi dấu cách" msgstr "Nhập các tên đăng nhập, cách nhau bởi dấu cách"
#: judge/forms.py:351 judge/views/stats.py:166 templates/stats/site.html:27 #: judge/forms.py:353 judge/views/stats.py:166 templates/stats/site.html:27
msgid "New users" msgid "New users"
msgstr "Thành viên mới" msgstr "Thành viên mới"
#: judge/forms.py:368 #: judge/forms.py:370
#, python-brace-format #, python-brace-format
msgid "These usernames don't exist: {usernames}" msgid "These usernames don't exist: {usernames}"
msgstr "Các tên đăng nhập này không tồn tại: {usernames}" msgstr "Các tên đăng nhập này không tồn tại: {usernames}"
#: judge/forms.py:427 judge/views/register.py:30 #: judge/forms.py:429 judge/views/register.py:30
#: templates/registration/registration_form.html:34 #: templates/registration/registration_form.html:34
#: templates/user/base-users-table.html:5 #: templates/user/base-users-table.html:5
#: templates/user/import/table_csv.html:4 #: templates/user/import/table_csv.html:4
msgid "Username" msgid "Username"
msgstr "Tên đăng nhập" msgstr "Tên đăng nhập"
#: judge/forms.py:428 judge/views/email.py:22 #: judge/forms.py:430 judge/views/email.py:22
#: templates/registration/registration_form.html:46 #: templates/registration/registration_form.html:46
#: templates/registration/registration_form.html:60 #: templates/registration/registration_form.html:60
#: templates/user/edit-profile.html:108 templates/user/import/table_csv.html:5 #: templates/user/edit-profile.html:108 templates/user/import/table_csv.html:5
msgid "Password" msgid "Password"
msgstr "Mật khẩu" msgstr "Mật khẩu"
#: judge/forms.py:454 #: judge/forms.py:456
msgid "Two Factor Authentication tokens must be 6 decimal digits." msgid "Two Factor Authentication tokens must be 6 decimal digits."
msgstr "Two Factor Authentication phải chứa 6 chữ số." msgstr "Two Factor Authentication phải chứa 6 chữ số."
#: judge/forms.py:467 templates/registration/totp_auth.html:32 #: judge/forms.py:469 templates/registration/totp_auth.html:32
msgid "Invalid Two Factor Authentication token." msgid "Invalid Two Factor Authentication token."
msgstr "Token Two Factor Authentication không hợp lệ." msgstr "Token Two Factor Authentication không hợp lệ."
#: judge/forms.py:474 judge/models/problem.py:133 #: judge/forms.py:476 judge/models/problem.py:133
msgid "Problem code must be ^[a-z0-9]+$" msgid "Problem code must be ^[a-z0-9]+$"
msgstr "Mã bài phải có dạng ^[a-z0-9]+$" msgstr "Mã bài phải có dạng ^[a-z0-9]+$"
#: judge/forms.py:481 #: judge/forms.py:483
msgid "Problem with code already exists." msgid "Problem with code already exists."
msgstr "Mã bài đã tồn tại." msgstr "Mã bài đã tồn tại."
#: judge/forms.py:488 judge/models/contest.py:93 #: judge/forms.py:490 judge/models/contest.py:93
msgid "Contest id must be ^[a-z0-9]+$" msgid "Contest id must be ^[a-z0-9]+$"
msgstr "Mã kỳ thi phải có dạng ^[a-z0-9]+$" msgstr "Mã kỳ thi phải có dạng ^[a-z0-9]+$"
#: judge/forms.py:495 templates/problem/search-form.html:46 #: judge/forms.py:497 templates/problem/search-form.html:46
msgid "Group" msgid "Group"
msgstr "" msgstr ""
#: judge/forms.py:503 #: judge/forms.py:505
msgid "Contest with key already exists." msgid "Contest with key already exists."
msgstr "Mã kỳ thi đã tồn tại." msgstr "Mã kỳ thi đã tồn tại."
#: judge/forms.py:511 #: judge/forms.py:513
msgid "Group doesn't exist." msgid "Group doesn't exist."
msgstr "" msgstr ""
#: judge/forms.py:513 #: judge/forms.py:515
#, fuzzy #, fuzzy
#| msgid "You do not have the permission to rejudge submissions." #| msgid "You do not have the permission to rejudge submissions."
msgid "You don't have permission in this group." msgid "You don't have permission in this group."
msgstr "Bạn không có quyền chấm lại bài." msgstr "Bạn không có quyền chấm lại bài."
#: judge/forms.py:563 #: judge/forms.py:565
msgid "This problem is duplicated." msgid "This problem is duplicated."
msgstr "Bài này bị lặp" msgstr "Bài này bị lặp"
@ -1989,7 +1993,7 @@ msgid ""
msgstr "Ảnh này sẽ thay thế logo mặc định khi ở trong tổ chức." msgstr "Ảnh này sẽ thay thế logo mặc định khi ở trong tổ chức."
#: judge/models/profile.py:143 judge/models/profile.py:172 #: judge/models/profile.py:143 judge/models/profile.py:172
#: judge/models/profile.py:389 judge/models/profile.py:468 #: judge/models/profile.py:390 judge/models/profile.py:469
msgid "organization" msgid "organization"
msgstr "" msgstr ""
@ -2095,35 +2099,43 @@ msgstr "ghi chú nội bộ"
msgid "Notes for administrators regarding this user." msgid "Notes for administrators regarding this user."
msgstr "Ghi chú riêng cho quản trị viên." msgstr "Ghi chú riêng cho quản trị viên."
#: judge/models/profile.py:376 #: judge/models/profile.py:249
msgid "Custom background"
msgstr "Background tự chọn"
#: judge/models/profile.py:249
msgid "CSS custom background properties: url(\"image_url\"), color, etc"
msgstr "CSS background tự chọn. Ví dụ: url(\"image_url\"), white, ..."
#: judge/models/profile.py:377
msgid "user profile" msgid "user profile"
msgstr "thông tin người dùng" msgstr "thông tin người dùng"
#: judge/models/profile.py:377 #: judge/models/profile.py:378
msgid "user profiles" msgid "user profiles"
msgstr "thông tin người dùng" msgstr "thông tin người dùng"
#: judge/models/profile.py:393 #: judge/models/profile.py:394
msgid "request time" msgid "request time"
msgstr "thời gian đăng ký" msgstr "thời gian đăng ký"
#: judge/models/profile.py:396 #: judge/models/profile.py:397
msgid "state" msgid "state"
msgstr "trạng thái" msgstr "trạng thái"
#: judge/models/profile.py:403 #: judge/models/profile.py:404
msgid "reason" msgid "reason"
msgstr "lý do" msgstr "lý do"
#: judge/models/profile.py:406 #: judge/models/profile.py:407
msgid "organization join request" msgid "organization join request"
msgstr "đơn đăng ký tham gia" msgstr "đơn đăng ký tham gia"
#: judge/models/profile.py:407 #: judge/models/profile.py:408
msgid "organization join requests" msgid "organization join requests"
msgstr "đơn đăng ký tham gia" msgstr "đơn đăng ký tham gia"
#: judge/models/profile.py:473 #: judge/models/profile.py:474
#, fuzzy #, fuzzy
#| msgid "last seen" #| msgid "last seen"
msgid "last visit" msgid "last visit"
@ -2925,7 +2937,7 @@ msgstr "trang bị sập %s"
msgid "Internal problems" msgid "Internal problems"
msgstr "bài trong kỳ thi" msgstr "bài trong kỳ thi"
#: judge/views/internal.py:76 #: judge/views/internal.py:83
#, fuzzy #, fuzzy
#| msgid "request time" #| msgid "request time"
msgid "Request times" msgid "Request times"
@ -3388,8 +3400,8 @@ msgstr "Phải qua một kỳ thi"
#: judge/views/submission.py:914 #: judge/views/submission.py:914
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"<a href=\"{1}\">{0}</a>'s submissions for <a href=\"{3}\">{2}</a> in <a " "<a href=\"{1}\">{0}</a>'s submissions for <a href=\"{3}\">{2}</a> in <a href="
"href=\"{5}\">{4}</a>" "\"{5}\">{4}</a>"
msgstr "" msgstr ""
"Các bài nộp của <a href=\"{1}\">{0}</a> cho <a href=\"{3}\">{2}</a> trong <a " "Các bài nộp của <a href=\"{1}\">{0}</a> cho <a href=\"{3}\">{2}</a> trong <a "
"href=\"{5}\">{4}</a>" "href=\"{5}\">{4}</a>"
@ -3494,7 +3506,7 @@ msgid "Updated on site"
msgstr "Được cập nhật trên web" msgstr "Được cập nhật trên web"
#: judge/views/user.py:431 templates/admin/auth/user/change_form.html:14 #: judge/views/user.py:431 templates/admin/auth/user/change_form.html:14
#: templates/admin/auth/user/change_form.html:17 templates/base.html:291 #: templates/admin/auth/user/change_form.html:17 templates/base.html:300
#: templates/user/user-tabs.html:11 #: templates/user/user-tabs.html:11
msgid "Edit profile" msgid "Edit profile"
msgstr "Chỉnh sửa thông tin" msgstr "Chỉnh sửa thông tin"
@ -3585,26 +3597,26 @@ msgstr "Chỉnh sửa thông tin"
msgid "Rejudge" msgid "Rejudge"
msgstr "Chấm lại" msgstr "Chấm lại"
#: templates/base.html:227 templates/chat/chat.html:66 #: templates/base.html:236 templates/chat/chat.html:65
msgid "Chat" msgid "Chat"
msgstr "Chat" msgstr "Chat"
#: templates/base.html:237 #: templates/base.html:246
msgid "Notification" msgid "Notification"
msgstr "Thông báo" msgstr "Thông báo"
#: templates/base.html:258 #: templates/base.html:267
msgid "Dark Mode" msgid "Dark Mode"
msgstr "" msgstr ""
#: templates/base.html:275 #: templates/base.html:284
msgid "Profile" msgid "Profile"
msgstr "Trang cá nhân" msgstr "Trang cá nhân"
#: templates/base.html:279 templates/chat/chat_js.html:5 #: templates/base.html:288 templates/chat/chat_js.html:5
#: templates/comments/content-list.html:81 #: templates/comments/content-list.html:81
#: templates/contest/contest-list-tabs.html:4 #: templates/contest/contest-list-tabs.html:4
#: templates/contest/ranking-table.html:47 templates/internal/problem.html:57 #: templates/contest/ranking-table.html:47 templates/internal/problem.html:62
#: templates/organization/org-left-sidebar.html:12 #: templates/organization/org-left-sidebar.html:12
#: templates/problem/left-sidebar.html:6 #: templates/problem/left-sidebar.html:6
#: templates/problem/problem-list-tabs.html:6 #: templates/problem/problem-list-tabs.html:6
@ -3613,44 +3625,44 @@ msgstr "Trang cá nhân"
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
#: templates/base.html:284 #: templates/base.html:293
msgid "Internal" msgid "Internal"
msgstr "Nội bộ" msgstr "Nội bộ"
#: templates/base.html:287 #: templates/base.html:296
msgid "Stats" msgid "Stats"
msgstr "Thống kê" msgstr "Thống kê"
#: templates/base.html:300 #: templates/base.html:309
msgid "Log out" msgid "Log out"
msgstr "Đăng xuất" msgstr "Đăng xuất"
#: templates/base.html:310 #: templates/base.html:319
#: templates/registration/password_reset_complete.html:4 #: templates/registration/password_reset_complete.html:4
msgid "Log in" msgid "Log in"
msgstr "Đăng nhập" msgstr "Đăng nhập"
#: templates/base.html:311 templates/registration/registration_form.html:72 #: templates/base.html:320 templates/registration/registration_form.html:72
msgid "or" msgid "or"
msgstr "hoặc" msgstr "hoặc"
#: templates/base.html:312 #: templates/base.html:321
msgid "Sign up" msgid "Sign up"
msgstr "Đăng ký" msgstr "Đăng ký"
#: templates/base.html:325 #: templates/base.html:335
msgid "spectating" msgid "spectating"
msgstr "đang theo dõi" msgstr "đang theo dõi"
#: templates/base.html:337 #: templates/base.html:347
msgid "Compete" msgid "Compete"
msgstr "Thi" msgstr "Thi"
#: templates/base.html:339 #: templates/base.html:349
msgid "General" msgid "General"
msgstr "Chung" msgstr "Chung"
#: templates/base.html:346 #: templates/base.html:356
msgid "This site works best with JavaScript enabled." msgid "This site works best with JavaScript enabled."
msgstr "" msgstr ""
@ -3722,28 +3734,28 @@ msgstr "Thêm mới"
msgid "No clarifications have been made at this time." msgid "No clarifications have been made at this time."
msgstr "Không có thông báo nào." msgstr "Không có thông báo nào."
#: templates/chat/chat.html:5 templates/chat/chat_js.html:535 #: templates/chat/chat.html:5 templates/chat/chat_js.html:548
msgid "Chat Box" msgid "Chat Box"
msgstr "Chat Box" msgstr "Chat Box"
#: templates/chat/chat.html:68 templates/chat/chat.html:75 #: templates/chat/chat.html:67
msgid "Online Users" msgid "Online Users"
msgstr "Trực tuyến" msgstr "Trực tuyến"
#: templates/chat/chat.html:83 templates/chat/chat_js.html:497 #: templates/chat/chat.html:78 templates/chat/chat_js.html:510
#: templates/user/base-users-js.html:10 #: templates/user/base-users-js.html:10
#: templates/user/base-users-two-col.html:19 #: templates/user/base-users-two-col.html:19
msgid "Search by handle..." msgid "Search by handle..."
msgstr "Tìm kiếm theo tên..." msgstr "Tìm kiếm theo tên..."
#: templates/chat/chat.html:103 #: templates/chat/chat.html:97
msgid "Emoji"
msgstr ""
#: templates/chat/chat.html:104
msgid "Enter your message" msgid "Enter your message"
msgstr "Nhập tin nhắn" msgstr "Nhập tin nhắn"
#: templates/chat/chat.html:98
msgid "Emoji"
msgstr ""
#: templates/chat/chat_js.html:3 #: templates/chat/chat_js.html:3
msgid "Recent" msgid "Recent"
msgstr "Gần đây" msgstr "Gần đây"
@ -3756,11 +3768,11 @@ msgstr "Bạn bè"
msgid "Other" msgid "Other"
msgstr "Thành viên khác" msgstr "Thành viên khác"
#: templates/chat/chat_js.html:121 #: templates/chat/chat_js.html:124
msgid "New message(s)" msgid "New message(s)"
msgstr "Tin nhắn mới" msgstr "Tin nhắn mới"
#: templates/chat/chat_js.html:387 #: templates/chat/chat_js.html:401
msgid "Mute this user and delete all messages?" msgid "Mute this user and delete all messages?"
msgstr "Mute người dùng này và xóa tất cả tin nhắn chung?" msgstr "Mute người dùng này và xóa tất cả tin nhắn chung?"
@ -4002,8 +4014,8 @@ msgstr "G:i T, j F, Y"
#: templates/contest/contest-datetime.html:39 #: templates/contest/contest-datetime.html:39
#, python-format #, python-format
msgid "" msgid ""
"<b>%(time_limit)s</b> window between <b>%(start_time)s</b> and " "<b>%(time_limit)s</b> window between <b>%(start_time)s</b> and <b>"
"<b>%(end_time)s</b>" "%(end_time)s</b>"
msgstr "" msgstr ""
"Kéo dài <b>%(time_limit)s</b> từ <b>%(start_time)s</b> đến <b>%(end_time)s</" "Kéo dài <b>%(time_limit)s</b> từ <b>%(start_time)s</b> đến <b>%(end_time)s</"
"b>" "b>"
@ -4144,7 +4156,7 @@ msgstr "Tham gia"
msgid "Search contests..." msgid "Search contests..."
msgstr "Tìm kiếm kỳ thi..." msgstr "Tìm kiếm kỳ thi..."
#: templates/contest/list.html:221 #: templates/contest/list.html:221 templates/internal/problem.html:33
msgid "Search" msgid "Search"
msgstr "Tìm kiếm" msgstr "Tìm kiếm"
@ -4389,33 +4401,33 @@ msgstr "Tốc độ trung bình"
msgid "Slow requests" msgid "Slow requests"
msgstr "Requests chậm" msgstr "Requests chậm"
#: templates/internal/problem.html:36 #: templates/internal/problem.html:41
msgid "Code" msgid "Code"
msgstr "" msgstr ""
#: templates/internal/problem.html:37 #: templates/internal/problem.html:42
#, fuzzy #, fuzzy
#| msgid "Total points" #| msgid "Total points"
msgid "Vote count" msgid "Vote count"
msgstr "Tổng điểm" msgstr "Tổng điểm"
#: templates/internal/problem.html:60 #: templates/internal/problem.html:65
#, fuzzy #, fuzzy
#| msgid "contest problem" #| msgid "contest problem"
msgid "Votes for problem" msgid "Votes for problem"
msgstr "bài trong kỳ thi" msgstr "bài trong kỳ thi"
#: templates/internal/problem.html:68 #: templates/internal/problem.html:73
msgid "Knowledge" msgid "Knowledge"
msgstr "" msgstr ""
#: templates/internal/problem.html:72 #: templates/internal/problem.html:77
#, fuzzy #, fuzzy
#| msgid "Rankings" #| msgid "Rankings"
msgid "Thinking" msgid "Thinking"
msgstr "Bảng xếp hạng" msgstr "Bảng xếp hạng"
#: templates/internal/problem.html:80 templates/problem/feed/problems.html:97 #: templates/internal/problem.html:85 templates/problem/feed/problems.html:97
#, fuzzy #, fuzzy
#| msgid "Feed" #| msgid "Feed"
msgid "Feedback" msgid "Feedback"
@ -5695,10 +5707,14 @@ msgid "Enable"
msgstr "Bật" msgstr "Bật"
#: templates/user/edit-profile.html:176 #: templates/user/edit-profile.html:176
msgid "User-script" msgid "CSS background"
msgstr "" msgstr ""
#: templates/user/edit-profile.html:180 #: templates/user/edit-profile.html:180
msgid "User-script"
msgstr ""
#: templates/user/edit-profile.html:184
msgid "Update profile" msgid "Update profile"
msgstr "Cập nhật thông tin" msgstr "Cập nhật thông tin"
@ -5950,8 +5966,8 @@ msgstr "Chọn tất cả"
#~ msgstr "bình luận nữa" #~ msgstr "bình luận nữa"
#~ msgid "" #~ msgid ""
#~ "This comment is hidden due to too much negative feedback. Click <a " #~ "This comment is hidden due to too much negative feedback. Click <a href="
#~ "href=\"javascript:comment_show_content(%(id)s)\">here</a> to view it." #~ "\"javascript:comment_show_content(%(id)s)\">here</a> to view it."
#~ msgstr "" #~ msgstr ""
#~ "Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào <a href=\"javascript:" #~ "Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào <a href=\"javascript:"
#~ "comment_show_content(%(id)s)\">đây</a> để mở." #~ "comment_show_content(%(id)s)\">đây</a> để mở."

View file

@ -2510,6 +2510,12 @@ input[type="text"]:focus, input[type="password"]:focus {
.tabs > ul { .tabs > ul {
list-style-image: none; list-style-image: none;
} }
.tabs > ul::-webkit-scrollbar {
background-color: transparent;
}
.tabs > ul::-webkit-scrollbar-thumb {
background-color: transparent;
}
.tabs > ul > li > a, .tabs > ul > li > a,
.tabs > ul > li > span { .tabs > ul > li > span {
color: rgb(148, 143, 134); color: rgb(148, 143, 134);

View file

@ -193,6 +193,15 @@
} }
</style> </style>
</noscript> </noscript>
{% if request.profile.css_background %}
<style>
@media(min-width: 800px) {
#page-container {
background: {{request.profile.css_background|safe}};
}
}
</style>
{% endif %}
</head> </head>
<body> <body>
<svg width="0" height="0" style="display: block"> <svg width="0" height="0" style="display: block">

View file

@ -173,6 +173,10 @@
{% endif %} {% endif %}
</div> </div>
<br><hr> <br><hr>
<span class="block-header">{{ _('CSS background') }}:</span>
{{ form.css_background }}
<div><i>{{form.css_background.help_text}}</i></div>
<br><br>
<div class="block-header">{{ _('User-script') }}:</div> <div class="block-header">{{ _('User-script') }}:</div>
{{ form.user_script }} {{ form.user_script }}
<hr> <hr>