Added basic priority star display.

This commit is contained in:
flash 2019-05-07 21:43:54 +02:00
parent a9e2458ac5
commit 957f32e588
7 changed files with 82 additions and 6 deletions

View file

@ -5,6 +5,7 @@
@import "header";
@import "post";
@import "poll";
@import "priority";
@import "status";
@import "topic";
@import "topics";

View file

@ -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;
}
}

View file

@ -77,6 +77,10 @@
background-color: var(--accent-colour);
}
&--faded {
opacity: .3;
}
&__participated {
position: absolute;
bottom: 2px;

View file

@ -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 ?? [],
]);

View file

@ -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);
}

View file

@ -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 @@
<div class="forum__topic__container">
<div class="forum__topic__icon forum__topic__icon--{{ topic_unread ? 'unread' : 'read' }}">
<i class="{{ topic_icon }} fa-fw"></i>
<i class="{{ topic_icon }} fa-fw{% if has_priority_voting %} forum__topic__icon--faded{% endif %}"></i>
{% if forum_has_priority_voting(topic.forum_type) %}
{% if has_priority_voting %}
<div class="forum__topic__icon__priority">{{ topic.topic_priority|number_format }}</div>
{% endif %}
@ -569,3 +570,20 @@
</div>
{% endif %}
{% endmacro %}
{% macro forum_priority_votes(topic, votes) %}
<div class="container forum__priority">
<div class="forum__priority__votes">
{% for vote in votes %}
<div title="{{ vote.username }} ({{ vote.topic_priority|number_format }})" class="forum__priority__vote" style="{{ vote.user_colour|html_colour }}">
{% for i in 0..vote.topic_priority %}
<span class="forum__priority__star fas fa-star fa-fw"></span>
{% endfor %}
</div>
{% endfor %}
</div>
<div class="forum__priority__input">
<button class="input__button">Vote for this feature</button>
</div>
</div>
{% endmacro %}

View file

@ -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) }}