diff --git a/assets/less/forum/poll.less b/assets/less/forum/poll.less
index 7cbe67d4..880f85ac 100644
--- a/assets/less/forum/poll.less
+++ b/assets/less/forum/poll.less
@@ -70,6 +70,10 @@
opacity: .2;
}
+ &--voted &__background {
+ opacity: .4;
+ }
+
&__container {
display: flex;
justify-content: center;
@@ -80,6 +84,10 @@
padding: 5px;
}
+ &--voted &__text {
+ font-weight: 700;
+ }
+
&__votes {
flex: 0 0 auto;
padding: 5px;
diff --git a/public/forum/poll.php b/public/forum/poll.php
index b816ebdc..a8ec1427 100644
--- a/public/forum/poll.php
+++ b/public/forum/poll.php
@@ -48,6 +48,11 @@ if (empty($poll)) {
$topicInfo = forum_poll_get_topic($poll['poll_id']);
+if (!is_null($topicInfo['topic_locked'])) {
+ echo "The topic associated with this poll has been locked.
";
+ return;
+}
+
if (!forum_perms_check_user(
MSZ_FORUM_PERMS_GENERAL, $topicInfo['forum_id'],
$currentUserId, MSZ_FORUM_PERM_SET_READ
diff --git a/src/Forum/poll.php b/src/Forum/poll.php
index 45b2c8d3..7202ef3b 100644
--- a/src/Forum/poll.php
+++ b/src/Forum/poll.php
@@ -202,7 +202,7 @@ function forum_poll_get_topic(int $poll): array
}
$getTopic = db_prepare("
- SELECT `forum_id`, `topic_id`
+ SELECT `forum_id`, `topic_id`, `topic_locked`
FROM `msz_forum_topics`
WHERE `poll_id` = :poll
");
diff --git a/templates/forum/macros.twig b/templates/forum/macros.twig
index 6f695545..42ace084 100644
--- a/templates/forum/macros.twig
+++ b/templates/forum/macros.twig
@@ -467,24 +467,27 @@
{% endmacro %}
-{% macro forum_poll(poll, options, user_answers, topic_id) %}
+{% macro forum_poll(poll, options, user_answers, topic_id, can_vote, preview_results) %}
{% from '_layout/input.twig' import input_csrf, input_hidden, input_checkbox, input_checkbox_raw %}
{% set user_answers = user_answers is empty or user_answers is not iterable ? [] : user_answers %}
{% set user_answered = user_answers|length > 0 %}
- {% set results_available = user_answered or poll.poll_expired or poll.poll_preview_results %}
- {% set can_vote = not poll.poll_expired and (poll.poll_change_vote or not user_answered) %}
+ {% set results_available = preview_results or user_answered or poll.poll_expired or poll.poll_preview_results %}
+ {% set options_available = not poll.poll_expired and (poll.poll_change_vote or not user_answered) %}
{% set display_results = user_answered or poll.poll_expired %}
{% if options is iterable and options|length > 0 %}