From 957f32e588f6ee3f34aae2888d035c19308659de Mon Sep 17 00:00:00 2001 From: flashwave Date: Tue, 7 May 2019 21:43:54 +0200 Subject: [PATCH] Added basic priority star display. --- assets/less/forum/forum.less | 1 + assets/less/forum/priority.less | 41 +++++++++++++++++++++++++++++++++ assets/less/forum/topic.less | 4 ++++ public/forum/topic.php | 1 + src/Forum/topic.php | 11 +++++++-- templates/forum/macros.twig | 24 ++++++++++++++++--- templates/forum/topic.twig | 6 ++++- 7 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 assets/less/forum/priority.less diff --git a/assets/less/forum/forum.less b/assets/less/forum/forum.less index 7b5f0d51..01d2b1e1 100644 --- a/assets/less/forum/forum.less +++ b/assets/less/forum/forum.less @@ -5,6 +5,7 @@ @import "header"; @import "post"; @import "poll"; +@import "priority"; @import "status"; @import "topic"; @import "topics"; diff --git a/assets/less/forum/priority.less b/assets/less/forum/priority.less new file mode 100644 index 00000000..628d636a --- /dev/null +++ b/assets/less/forum/priority.less @@ -0,0 +1,41 @@ +.forum__priority { + + &__votes { + text-align: center; + margin: 5px 16px 5px 5px; + -webkit-touch-callout: none !important; + -webkit-user-select: none !important; + -khtml-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; + cursor: default; + } + + &__vote { + font-size: 14px; + display: inline; + } + + &__star { + margin-right: -.9em; + opacity: .6; + text-shadow: 0 1px 1px #000; + color: var(--user-colour); + transition: text-shadow .2s; + + &:last-child { + margin-right: 0; + opacity: 1; + } + } + + &__vote:hover &__star { + text-shadow: 0 0 1px #fff; + } + + &__input { + margin: 5px; + text-align: center; + } +} diff --git a/assets/less/forum/topic.less b/assets/less/forum/topic.less index 23d8cb5c..a96721b7 100644 --- a/assets/less/forum/topic.less +++ b/assets/less/forum/topic.less @@ -77,6 +77,10 @@ background-color: var(--accent-colour); } + &--faded { + opacity: .3; + } + &__participated { position: absolute; bottom: 2px; diff --git a/public/forum/topic.php b/public/forum/topic.php index 3e23659a..4060fef1 100644 --- a/public/forum/topic.php +++ b/public/forum/topic.php @@ -380,4 +380,5 @@ echo tpl_render('forum.topic', [ 'topic_can_lock' => $canLockTopic, 'topic_poll_options' => $pollOptions ?? [], 'topic_poll_user_answers' => $pollUserAnswers ?? [], + 'topic_priority_votes' => $topicPriority ?? [], ]); diff --git a/src/Forum/topic.php b/src/Forum/topic.php index 08e50063..b108f481 100644 --- a/src/Forum/topic.php +++ b/src/Forum/topic.php @@ -75,7 +75,7 @@ function forum_topic_get(int $topicId, bool $allowDeleted = false): array ' SELECT t.`topic_id`, t.`forum_id`, t.`topic_title`, t.`topic_type`, t.`topic_locked`, t.`topic_created`, - f.`forum_archived` AS `topic_archived`, t.`topic_deleted`, t.`topic_bumped`, + f.`forum_archived` AS `topic_archived`, t.`topic_deleted`, t.`topic_bumped`, f.`forum_type`, tp.`poll_id`, tp.`poll_max_votes`, tp.`poll_expires`, tp.`poll_preview_results`, tp.`poll_change_vote`, (tp.`poll_expires` < CURRENT_TIMESTAMP) AS `poll_expired`, fp.`topic_id` AS `author_post_id`, fp.`user_id` AS `author_user_id`, @@ -674,11 +674,18 @@ function forum_topic_priority(int $topic): array } $getPriority = db_prepare(' - SELECT tp.`topic_id`, tp.`topic_priority` + SELECT + tp.`topic_id`, tp.`topic_priority`, + u.`user_id`, u.`username`, + COALESCE(u.`user_colour`, r.`role_colour`) AS `user_colour` FROM `msz_forum_topics_priority` AS tp LEFT JOIN `msz_users` AS u ON u.`user_id` = tp.`user_id` + LEFT JOIN `msz_roles` AS r + ON u.`display_role` = r.`role_id` + WHERE `topic_id` = :topic '); + $getPriority->bindValue('topic', $topic); return db_fetch_all($getPriority); } diff --git a/templates/forum/macros.twig b/templates/forum/macros.twig index 8098ff15..25872cf6 100644 --- a/templates/forum/macros.twig +++ b/templates/forum/macros.twig @@ -256,6 +256,7 @@ {% macro forum_topic_entry(topic, topic_icon, topic_unread) %} {% set topic_unread = topic_unread|default(topic.topic_unread|default(false)) %} {% set topic_important = topic.topic_type == constant('MSZ_TOPIC_TYPE_STICKY') or topic.topic_type == constant('MSZ_TOPIC_TYPE_ANNOUNCEMENT') or topic.topic_type == constant('MSZ_TOPIC_TYPE_GLOBAL_ANNOUNCEMENT') %} + {% set has_priority_voting = forum_has_priority_voting(topic.forum_type) %} {% if topic_icon is null %} {% if topic.topic_deleted is defined and topic.topic_deleted is not null %} @@ -268,7 +269,7 @@ {% endif %} {% elseif topic.topic_locked is defined and topic.topic_locked is not null %} {% set topic_icon = 'fas fa-lock' %} - {% elseif forum_has_priority_voting(topic.forum_type) %} + {% elseif has_priority_voting %} {% set topic_icon = 'far fa-star' %} {% else %} {% set topic_icon = (topic_unread ? 'fas' : 'far') ~ ' fa-comment' %} @@ -280,9 +281,9 @@
- + - {% if forum_has_priority_voting(topic.forum_type) %} + {% if has_priority_voting %}
{{ topic.topic_priority|number_format }}
{% endif %} @@ -569,3 +570,20 @@
{% endif %} {% endmacro %} + +{% macro forum_priority_votes(topic, votes) %} +
+
+ {% for vote in votes %} +
+ {% for i in 0..vote.topic_priority %} + + {% endfor %} +
+ {% endfor %} +
+
+ +
+
+{% endmacro %} diff --git a/templates/forum/topic.twig b/templates/forum/topic.twig index b23c4d62..0fefc598 100644 --- a/templates/forum/topic.twig +++ b/templates/forum/topic.twig @@ -8,7 +8,8 @@ forum_topic_locked, forum_header, forum_topic_tools, - forum_poll + forum_poll, + forum_priority_votes %} {% set title = topic_info.topic_title %} @@ -56,6 +57,9 @@ {% block content %} {{ forum_header(topic_info.topic_title, topic_breadcrumbs, false, canonical_url, topic_actions) }} {{ topic_notice }} + {% if forum_has_priority_voting(topic_info.forum_type) %} + {{ forum_priority_votes(topic_info, topic_priority_votes) }} + {% endif %} {{ forum_poll(topic_info, topic_poll_options, topic_poll_user_answers, topic_info.topic_id, current_user.user_id|default(0) > 0, topic_info.author_user_id == current_user.user_id|default(0)) }} {{ topic_tools }} {{ forum_post_listing(topic_posts, current_user.user_id|default(0), topic_perms) }}