Merge pull request #13605 from annando/button-counter

Frio: The activity buttons now have got counters
This commit is contained in:
Hypolite Petovan 2023-11-04 15:36:22 -07:00 committed by GitHub
commit 19c5667d9f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 387 additions and 282 deletions

View File

@ -891,6 +891,7 @@ class Conversation
if ($this->config->get('system', 'emoji_activities')) { if ($this->config->get('system', 'emoji_activities')) {
$emojis = $this->getEmojis($uriids); $emojis = $this->getEmojis($uriids);
$quoteshares = $this->getQuoteShares($uriids);
$condition = DBA::mergeConditions($condition, ["(`gravity` != ? OR `origin`)", ItemModel::GRAVITY_ACTIVITY]); $condition = DBA::mergeConditions($condition, ["(`gravity` != ? OR `origin`)", ItemModel::GRAVITY_ACTIVITY]);
} }
@ -1013,6 +1014,7 @@ class Conversation
foreach ($items as $key => $row) { foreach ($items as $key => $row) {
$items[$key]['emojis'] = $emojis[$key] ?? []; $items[$key]['emojis'] = $emojis[$key] ?? [];
$items[$key]['quoteshares'] = $quoteshares[$key] ?? [];
$always_display = in_array($mode, [self::MODE_CONTACTS, self::MODE_CONTACT_POSTS]); $always_display = in_array($mode, [self::MODE_CONTACTS, self::MODE_CONTACT_POSTS]);
@ -1056,19 +1058,24 @@ class Conversation
]; ];
$index_list = array_values($activity_emoji); $index_list = array_values($activity_emoji);
$verbs = array_merge(array_keys($activity_emoji), [Activity::EMOJIREACT]); $verbs = array_merge(array_keys($activity_emoji), [Activity::EMOJIREACT, Activity::POST]);
$condition = DBA::mergeConditions(['parent-uri-id' => $uriids, 'gravity' => ItemModel::GRAVITY_ACTIVITY, 'verb' => $verbs], ["NOT `deleted`"]); $condition = DBA::mergeConditions(['parent-uri-id' => $uriids, 'gravity' => [ItemModel::GRAVITY_ACTIVITY, ItemModel::GRAVITY_COMMENT], 'verb' => $verbs], ["NOT `deleted`"]);
$separator = chr(255) . chr(255) . chr(255); $separator = chr(255) . chr(255) . chr(255);
$sql = "SELECT `thr-parent-id`, `body`, `verb`, COUNT(*) AS `total`, GROUP_CONCAT(REPLACE(`author-name`, '" . $separator . "', ' ') SEPARATOR '" . $separator . "' LIMIT 50) AS `title` FROM `post-view` WHERE " . array_shift($condition) . " GROUP BY `thr-parent-id`, `verb`, `body`"; $sql = "SELECT `thr-parent-id`, `body`, `verb`, `gravity`, COUNT(*) AS `total`, GROUP_CONCAT(REPLACE(`author-name`, '" . $separator . "', ' ') SEPARATOR '" . $separator . "' LIMIT 50) AS `title` FROM `post-view` WHERE " . array_shift($condition) . " GROUP BY `thr-parent-id`, `verb`, `body`, `gravity`";
$emojis = []; $emojis = [];
$rows = DBA::p($sql, $condition); $rows = DBA::p($sql, $condition);
while ($row = DBA::fetch($rows)) { while ($row = DBA::fetch($rows)) {
if ($row['gravity'] == ItemModel::GRAVITY_ACTIVITY) {
$row['verb'] = $row['body'] ? Activity::EMOJIREACT : $row['verb']; $row['verb'] = $row['body'] ? Activity::EMOJIREACT : $row['verb'];
$emoji = $row['body'] ?: $activity_emoji[$row['verb']]; $emoji = $row['body'] ?: $activity_emoji[$row['verb']];
} else {
$emoji = '';
}
if (!isset($index_list[$emoji])) { if (!isset($index_list[$emoji])) {
$index_list[] = $emoji; $index_list[] = $emoji;
} }
@ -1084,6 +1091,31 @@ class Conversation
return $emojis; return $emojis;
} }
/**
* Fetch quote shares from the conversation
*
* @param array $uriids
* @return array
*/
private function getQuoteShares(array $uriids): array
{
$condition = DBA::mergeConditions(['quote-uri-id' => $uriids], ["NOT `quote-uri-id` IS NULL"]);
$separator = chr(255) . chr(255) . chr(255);
$sql = "SELECT `quote-uri-id`, COUNT(*) AS `total`, GROUP_CONCAT(REPLACE(`name`, '" . $separator . "', ' ') SEPARATOR '" . $separator . "' LIMIT 50) AS `title` FROM `post-content` INNER JOIN `post` ON `post`.`uri-id` = `post-content`.`uri-id` INNER JOIN `contact` ON `post`.`author-id` = `contact`.`id` WHERE " . array_shift($condition) . " GROUP BY `quote-uri-id`";
$quotes = [];
$rows = DBA::p($sql, $condition);
while ($row = DBA::fetch($rows)) {
$quotes[$row['quote-uri-id']]['total'] = $row['total'];
$quotes[$row['quote-uri-id']]['title'] = array_unique(explode($separator, $row['title']));
}
DBA::close($rows);
return $quotes;
}
/** /**
* Plucks the children of the given parent from a given item list. * Plucks the children of the given parent from a given item list.
* *

View File

@ -636,7 +636,7 @@ class Event
{ {
$fmt = DI::l10n()->t('l, F j'); $fmt = DI::l10n()->t('l, F j');
$item = Post::selectFirst(['plink', 'author-name', 'author-network', 'author-id', 'author-avatar', 'author-link', 'private', 'uri-id'], ['id' => $event['itemid']]); $item = Post::selectFirst(['plink', 'author-name', 'author-network', 'author-id', 'author-avatar', 'author-link', 'author-alias', 'private', 'uri-id'], ['id' => $event['itemid']]);
if (empty($item)) { if (empty($item)) {
// Using default values when no item had been found // Using default values when no item had been found
$item = ['plink' => '', 'author-name' => '', 'author-avatar' => '', 'author-link' => '', 'private' => Item::PUBLIC, 'uri-id' => ($event['uri-id'] ?? 0)]; $item = ['plink' => '', 'author-name' => '', 'author-avatar' => '', 'author-link' => '', 'private' => Item::PUBLIC, 'uri-id' => ($event['uri-id'] ?? 0)];

View File

@ -320,7 +320,7 @@ class Post
$location_html = $locate['html'] ?: Strings::escapeHtml($locate['location'] ?: $locate['coord'] ?: ''); $location_html = $locate['html'] ?: Strings::escapeHtml($locate['location'] ?: $locate['coord'] ?: '');
// process action responses - e.g. like/dislike/attend/agree/whatever // process action responses - e.g. like/dislike/attend/agree/whatever
$response_verbs = ['like', 'dislike', 'announce']; $response_verbs = ['like', 'dislike', 'announce', 'comment'];
$isevent = false; $isevent = false;
$attend = []; $attend = [];
@ -335,14 +335,31 @@ class Post
} }
} }
$emojis = $this->getEmojis($item);
$verbs = [
'like' => Activity::LIKE,
'dislike' => Activity::DISLIKE,
'announce' => Activity::ANNOUNCE,
'comment' => Activity::POST,
'attendyes' => Activity::ATTEND,
'attendno' => Activity::ATTENDNO,
'attendmaybe' => Activity::ATTENDMAYBE,
];
$reactions = $emojis;
$responses = []; $responses = [];
foreach ($response_verbs as $value => $verb) { foreach ($response_verbs as $value => $verb) {
$responses[$verb] = [ $responses[$verb] = [
'self' => $conv_responses[$verb][$item['uri-id']]['self'] ?? 0, 'self' => $conv_responses[$verb][$item['uri-id']]['self'] ?? 0,
'output' => !empty($conv_responses[$verb][$item['uri-id']]) ? DI::conversation()->formatActivity($conv_responses[$verb][$item['uri-id']]['links'], $verb, $item['uri-id']) : '', 'output' => !empty($conv_responses[$verb][$item['uri-id']]) ? DI::conversation()->formatActivity($conv_responses[$verb][$item['uri-id']]['links'], $verb, $item['uri-id']) : '',
'total' => $emojis[$verbs[$verb]]['total'] ?? '',
'title' => $emojis[$verbs[$verb]]['title'] ?? '',
]; ];
unset($reactions[$verbs[$verb]]);
} }
unset($emojis[Activity::POST]);
/* /*
* We should avoid doing this all the time, but it depends on the conversation mode * We should avoid doing this all the time, but it depends on the conversation mode
* And the conv mode may change when we change the conv, or it changes its mode * And the conv mode may change when we change the conv, or it changes its mode
@ -576,7 +593,9 @@ class Post
'vote' => $buttons, 'vote' => $buttons,
'like_html' => $responses['like']['output'], 'like_html' => $responses['like']['output'],
'dislike_html' => $responses['dislike']['output'], 'dislike_html' => $responses['dislike']['output'],
'emojis' => $this->getEmojis($item), 'emojis' => $emojis,
'quoteshares' => $this->getQuoteShares($item['quoteshares']),
'reactions' => $reactions,
'responses' => $responses, 'responses' => $responses,
'switchcomment' => DI::l10n()->t('Comment'), 'switchcomment' => DI::l10n()->t('Comment'),
'reply_label' => DI::l10n()->t('Reply to %s', $profile_name), 'reply_label' => DI::l10n()->t('Reply to %s', $profile_name),
@ -662,6 +681,7 @@ class Post
$emojis = []; $emojis = [];
foreach ($item['emojis'] as $index => $element) { foreach ($item['emojis'] as $index => $element) {
$key = $element['verb'];
$actors = implode(', ', $element['title']); $actors = implode(', ', $element['title']);
switch ($element['verb']) { switch ($element['verb']) {
case Activity::ANNOUNCE: case Activity::ANNOUNCE:
@ -699,18 +719,38 @@ class Post
$icon = ['fa' => 'fa-times', 'icon' => 'icon-remove']; $icon = ['fa' => 'fa-times', 'icon' => 'icon-remove'];
break; break;
case Activity::POST:
$title = DI::l10n()->t('Commented by: %s', $actors);
$icon = ['fa' => 'fa-commenting', 'icon' => 'icon-commenting'];
break;
default: default:
$title = DI::l10n()->t('Reacted with %s by: %s', $element['emoji'], $actors); $title = DI::l10n()->t('Reacted with %s by: %s', $element['emoji'], $actors);
$icon = []; $icon = [];
$key = $element['emoji'];
break; break;
} }
$emojis[$index] = ['emoji' => $element['emoji'], 'total' => $element['total'], 'title' => $title, 'icon' => $icon]; $emojis[$key] = ['emoji' => $element['emoji'], 'total' => $element['total'], 'title' => $title, 'icon' => $icon];
} }
ksort($emojis);
return $emojis; return $emojis;
} }
/**
* Fetch quote shares
*
* @param array $quoteshares
* @return array
*/
private function getQuoteShares($quoteshares)
{
if (empty($quoteshares)) {
return [];
}
return ['total' => $quoteshares['total'], 'title' => DI::l10n()->t('Quote shared by: %s', implode(', ', $quoteshares['title']))];
}
/** /**
* @return integer * @return integer
*/ */

View File

@ -110,6 +110,12 @@ span.connector {
margin: 0; margin: 0;
} }
.wall-item-response {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.type-link blockquote, .type-video blockquote { .type-link blockquote, .type-video blockquote {
margin-left: 0px; margin-left: 0px;
max-height: 160px; max-height: 160px;

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 2023.09-rc\n" "Project-Id-Version: 2023.09-rc\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-03 05:35+0000\n" "POT-Creation-Date: 2023-11-04 14:11+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -293,9 +293,9 @@ msgid "Insert web link"
msgstr "" msgstr ""
#: mod/message.php:201 mod/message.php:357 mod/photos.php:1301 #: mod/message.php:201 mod/message.php:357 mod/photos.php:1301
#: src/Content/Conversation.php:399 src/Content/Conversation.php:1549 #: src/Content/Conversation.php:399 src/Content/Conversation.php:1581
#: src/Module/Item/Compose.php:206 src/Module/Post/Edit.php:145 #: src/Module/Item/Compose.php:206 src/Module/Post/Edit.php:145
#: src/Module/Profile/UnkMail.php:154 src/Object/Post.php:587 #: src/Module/Profile/UnkMail.php:154 src/Object/Post.php:606
msgid "Please wait" msgid "Please wait"
msgstr "" msgstr ""
@ -318,7 +318,7 @@ msgstr ""
#: src/Module/Profile/Profile.php:274 src/Module/Profile/UnkMail.php:155 #: src/Module/Profile/Profile.php:274 src/Module/Profile/UnkMail.php:155
#: src/Module/Settings/Profile/Index.php:257 #: src/Module/Settings/Profile/Index.php:257
#: src/Module/Settings/Server/Action.php:79 src/Module/User/Delegation.php:189 #: src/Module/Settings/Server/Action.php:79 src/Module/User/Delegation.php:189
#: src/Object/Post.php:1106 view/theme/duepuntozero/config.php:85 #: src/Object/Post.php:1153 view/theme/duepuntozero/config.php:85
#: view/theme/frio/config.php:171 view/theme/quattro/config.php:87 #: view/theme/frio/config.php:171 view/theme/quattro/config.php:87
#: view/theme/vier/config.php:135 #: view/theme/vier/config.php:135
msgid "Submit" msgid "Submit"
@ -603,34 +603,34 @@ msgstr ""
#: mod/photos.php:1139 mod/photos.php:1195 mod/photos.php:1275 #: mod/photos.php:1139 mod/photos.php:1195 mod/photos.php:1275
#: src/Module/Contact.php:618 src/Module/Item/Compose.php:188 #: src/Module/Contact.php:618 src/Module/Item/Compose.php:188
#: src/Object/Post.php:1103 #: src/Object/Post.php:1150
msgid "This is you" msgid "This is you"
msgstr "" msgstr ""
#: mod/photos.php:1141 mod/photos.php:1197 mod/photos.php:1277 #: mod/photos.php:1141 mod/photos.php:1197 mod/photos.php:1277
#: src/Module/Moderation/Reports.php:95 src/Object/Post.php:581 #: src/Module/Moderation/Reports.php:95 src/Object/Post.php:600
#: src/Object/Post.php:1105 #: src/Object/Post.php:1152
msgid "Comment" msgid "Comment"
msgstr "" msgstr ""
#: mod/photos.php:1143 mod/photos.php:1199 mod/photos.php:1279 #: mod/photos.php:1143 mod/photos.php:1199 mod/photos.php:1279
#: src/Content/Conversation.php:414 src/Module/Calendar/Event/Form.php:248 #: src/Content/Conversation.php:414 src/Module/Calendar/Event/Form.php:248
#: src/Module/Item/Compose.php:201 src/Module/Post/Edit.php:165 #: src/Module/Item/Compose.php:201 src/Module/Post/Edit.php:165
#: src/Object/Post.php:1119 #: src/Object/Post.php:1166
msgid "Preview" msgid "Preview"
msgstr "" msgstr ""
#: mod/photos.php:1144 src/Content/Conversation.php:367 #: mod/photos.php:1144 src/Content/Conversation.php:367
#: src/Module/Post/Edit.php:130 src/Object/Post.php:1107 #: src/Module/Post/Edit.php:130 src/Object/Post.php:1154
msgid "Loading..." msgid "Loading..."
msgstr "" msgstr ""
#: mod/photos.php:1236 src/Content/Conversation.php:1464 #: mod/photos.php:1236 src/Content/Conversation.php:1496
#: src/Object/Post.php:261 #: src/Object/Post.php:261
msgid "Select" msgid "Select"
msgstr "" msgstr ""
#: mod/photos.php:1237 src/Content/Conversation.php:1465 #: mod/photos.php:1237 src/Content/Conversation.php:1497
#: src/Module/Moderation/Users/Active.php:136 #: src/Module/Moderation/Users/Active.php:136
#: src/Module/Moderation/Users/Blocked.php:136 #: src/Module/Moderation/Users/Blocked.php:136
#: src/Module/Moderation/Users/Index.php:151 #: src/Module/Moderation/Users/Index.php:151
@ -639,19 +639,19 @@ msgstr ""
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: mod/photos.php:1298 src/Object/Post.php:409 #: mod/photos.php:1298 src/Object/Post.php:426
msgid "Like" msgid "Like"
msgstr "" msgstr ""
#: mod/photos.php:1299 src/Object/Post.php:409 #: mod/photos.php:1299 src/Object/Post.php:426
msgid "I like this (toggle)" msgid "I like this (toggle)"
msgstr "" msgstr ""
#: mod/photos.php:1300 src/Object/Post.php:410 #: mod/photos.php:1300 src/Object/Post.php:427
msgid "Dislike" msgid "Dislike"
msgstr "" msgstr ""
#: mod/photos.php:1302 src/Object/Post.php:410 #: mod/photos.php:1302 src/Object/Post.php:427
msgid "I don't like this (toggle)" msgid "I don't like this (toggle)"
msgstr "" msgstr ""
@ -961,7 +961,7 @@ msgstr ""
msgid "Enter user nickname: " msgid "Enter user nickname: "
msgstr "" msgstr ""
#: src/Console/User.php:182 src/Model/User.php:736 #: src/Console/User.php:182 src/Model/User.php:776
#: src/Module/Api/Twitter/ContactEndpoint.php:74 #: src/Module/Api/Twitter/ContactEndpoint.php:74
#: src/Module/Moderation/Users/Active.php:71 #: src/Module/Moderation/Users/Active.php:71
#: src/Module/Moderation/Users/Blocked.php:71 #: src/Module/Moderation/Users/Blocked.php:71
@ -1244,7 +1244,7 @@ msgid "Visible to <strong>everybody</strong>"
msgstr "" msgstr ""
#: src/Content/Conversation.php:337 src/Module/Item/Compose.php:200 #: src/Content/Conversation.php:337 src/Module/Item/Compose.php:200
#: src/Object/Post.php:1118 #: src/Object/Post.php:1165
msgid "Please enter a image/video/audio/webpage URL:" msgid "Please enter a image/video/audio/webpage URL:"
msgstr "" msgstr ""
@ -1289,52 +1289,52 @@ msgid "attach file"
msgstr "" msgstr ""
#: src/Content/Conversation.php:372 src/Module/Item/Compose.php:190 #: src/Content/Conversation.php:372 src/Module/Item/Compose.php:190
#: src/Module/Post/Edit.php:171 src/Object/Post.php:1108 #: src/Module/Post/Edit.php:171 src/Object/Post.php:1155
msgid "Bold" msgid "Bold"
msgstr "" msgstr ""
#: src/Content/Conversation.php:373 src/Module/Item/Compose.php:191 #: src/Content/Conversation.php:373 src/Module/Item/Compose.php:191
#: src/Module/Post/Edit.php:172 src/Object/Post.php:1109 #: src/Module/Post/Edit.php:172 src/Object/Post.php:1156
msgid "Italic" msgid "Italic"
msgstr "" msgstr ""
#: src/Content/Conversation.php:374 src/Module/Item/Compose.php:192 #: src/Content/Conversation.php:374 src/Module/Item/Compose.php:192
#: src/Module/Post/Edit.php:173 src/Object/Post.php:1110 #: src/Module/Post/Edit.php:173 src/Object/Post.php:1157
msgid "Underline" msgid "Underline"
msgstr "" msgstr ""
#: src/Content/Conversation.php:375 src/Module/Item/Compose.php:193 #: src/Content/Conversation.php:375 src/Module/Item/Compose.php:193
#: src/Module/Post/Edit.php:174 src/Object/Post.php:1112 #: src/Module/Post/Edit.php:174 src/Object/Post.php:1159
msgid "Quote" msgid "Quote"
msgstr "" msgstr ""
#: src/Content/Conversation.php:376 src/Module/Item/Compose.php:194 #: src/Content/Conversation.php:376 src/Module/Item/Compose.php:194
#: src/Module/Post/Edit.php:175 src/Object/Post.php:1113 #: src/Module/Post/Edit.php:175 src/Object/Post.php:1160
msgid "Add emojis" msgid "Add emojis"
msgstr "" msgstr ""
#: src/Content/Conversation.php:377 src/Module/Item/Compose.php:195 #: src/Content/Conversation.php:377 src/Module/Item/Compose.php:195
#: src/Object/Post.php:1111 #: src/Object/Post.php:1158
msgid "Content Warning" msgid "Content Warning"
msgstr "" msgstr ""
#: src/Content/Conversation.php:378 src/Module/Item/Compose.php:196 #: src/Content/Conversation.php:378 src/Module/Item/Compose.php:196
#: src/Module/Post/Edit.php:176 src/Object/Post.php:1114 #: src/Module/Post/Edit.php:176 src/Object/Post.php:1161
msgid "Code" msgid "Code"
msgstr "" msgstr ""
#: src/Content/Conversation.php:379 src/Module/Item/Compose.php:197 #: src/Content/Conversation.php:379 src/Module/Item/Compose.php:197
#: src/Object/Post.php:1115 #: src/Object/Post.php:1162
msgid "Image" msgid "Image"
msgstr "" msgstr ""
#: src/Content/Conversation.php:380 src/Module/Item/Compose.php:198 #: src/Content/Conversation.php:380 src/Module/Item/Compose.php:198
#: src/Module/Post/Edit.php:177 src/Object/Post.php:1116 #: src/Module/Post/Edit.php:177 src/Object/Post.php:1163
msgid "Link" msgid "Link"
msgstr "" msgstr ""
#: src/Content/Conversation.php:381 src/Module/Item/Compose.php:199 #: src/Content/Conversation.php:381 src/Module/Item/Compose.php:199
#: src/Module/Post/Edit.php:178 src/Object/Post.php:1117 #: src/Module/Post/Edit.php:178 src/Object/Post.php:1164
msgid "Link or Media" msgid "Link or Media"
msgstr "" msgstr ""
@ -1490,30 +1490,30 @@ msgstr ""
msgid "Pushed to us" msgid "Pushed to us"
msgstr "" msgstr ""
#: src/Content/Conversation.php:1492 src/Object/Post.php:248 #: src/Content/Conversation.php:1524 src/Object/Post.php:248
msgid "Pinned item" msgid "Pinned item"
msgstr "" msgstr ""
#: src/Content/Conversation.php:1509 src/Object/Post.php:530 #: src/Content/Conversation.php:1541 src/Object/Post.php:547
#: src/Object/Post.php:531 #: src/Object/Post.php:548
#, php-format #, php-format
msgid "View %s's profile @ %s" msgid "View %s's profile @ %s"
msgstr "" msgstr ""
#: src/Content/Conversation.php:1522 src/Object/Post.php:518 #: src/Content/Conversation.php:1554 src/Object/Post.php:535
msgid "Categories:" msgid "Categories:"
msgstr "" msgstr ""
#: src/Content/Conversation.php:1523 src/Object/Post.php:519 #: src/Content/Conversation.php:1555 src/Object/Post.php:536
msgid "Filed under:" msgid "Filed under:"
msgstr "" msgstr ""
#: src/Content/Conversation.php:1531 src/Object/Post.php:544 #: src/Content/Conversation.php:1563 src/Object/Post.php:561
#, php-format #, php-format
msgid "%s from %s" msgid "%s from %s"
msgstr "" msgstr ""
#: src/Content/Conversation.php:1547 #: src/Content/Conversation.php:1579
msgid "View in context" msgid "View in context"
msgstr "" msgstr ""
@ -1627,7 +1627,7 @@ msgstr ""
msgid "Posts that mention or involve you" msgid "Posts that mention or involve you"
msgstr "" msgstr ""
#: src/Content/Conversation/Factory/Network.php:42 src/Object/Post.php:381 #: src/Content/Conversation/Factory/Network.php:42 src/Object/Post.php:398
msgid "Starred" msgid "Starred"
msgstr "" msgstr ""
@ -1749,7 +1749,7 @@ msgstr ""
#: src/Content/GroupManager.php:152 src/Content/Nav.php:278 #: src/Content/GroupManager.php:152 src/Content/Nav.php:278
#: src/Content/Text/HTML.php:880 src/Content/Widget.php:537 #: src/Content/Text/HTML.php:880 src/Content/Widget.php:537
#: src/Model/User.php:1298 #: src/Model/User.php:1338
msgid "Groups" msgid "Groups"
msgstr "" msgstr ""
@ -1846,7 +1846,7 @@ msgstr ""
msgid "Ignore %s server" msgid "Ignore %s server"
msgstr "" msgstr ""
#: src/Content/Item.php:443 src/Object/Post.php:491 #: src/Content/Item.php:443 src/Object/Post.php:508
msgid "Languages" msgid "Languages"
msgstr "" msgstr ""
@ -3648,145 +3648,145 @@ msgstr ""
msgid "Contact information and Social Networks" msgid "Contact information and Social Networks"
msgstr "" msgstr ""
#: src/Model/User.php:225 src/Model/User.php:1211 #: src/Model/User.php:225 src/Model/User.php:1251
msgid "SERIOUS ERROR: Generation of security keys failed." msgid "SERIOUS ERROR: Generation of security keys failed."
msgstr "" msgstr ""
#: src/Model/User.php:645 src/Model/User.php:678 #: src/Model/User.php:685 src/Model/User.php:718
msgid "Login failed" msgid "Login failed"
msgstr "" msgstr ""
#: src/Model/User.php:710 #: src/Model/User.php:750
msgid "Not enough information to authenticate" msgid "Not enough information to authenticate"
msgstr "" msgstr ""
#: src/Model/User.php:831 #: src/Model/User.php:871
msgid "Password can't be empty" msgid "Password can't be empty"
msgstr "" msgstr ""
#: src/Model/User.php:873 #: src/Model/User.php:913
msgid "Empty passwords are not allowed." msgid "Empty passwords are not allowed."
msgstr "" msgstr ""
#: src/Model/User.php:877 #: src/Model/User.php:917
msgid "" msgid ""
"The new password has been exposed in a public data dump, please choose " "The new password has been exposed in a public data dump, please choose "
"another." "another."
msgstr "" msgstr ""
#: src/Model/User.php:881 #: src/Model/User.php:921
msgid "The password length is limited to 72 characters." msgid "The password length is limited to 72 characters."
msgstr "" msgstr ""
#: src/Model/User.php:885 #: src/Model/User.php:925
msgid "The password can't contain white spaces nor accentuated letters" msgid "The password can't contain white spaces nor accentuated letters"
msgstr "" msgstr ""
#: src/Model/User.php:1094 #: src/Model/User.php:1134
msgid "Passwords do not match. Password unchanged." msgid "Passwords do not match. Password unchanged."
msgstr "" msgstr ""
#: src/Model/User.php:1101 #: src/Model/User.php:1141
msgid "An invitation is required." msgid "An invitation is required."
msgstr "" msgstr ""
#: src/Model/User.php:1105 #: src/Model/User.php:1145
msgid "Invitation could not be verified." msgid "Invitation could not be verified."
msgstr "" msgstr ""
#: src/Model/User.php:1113 #: src/Model/User.php:1153
msgid "Invalid OpenID url" msgid "Invalid OpenID url"
msgstr "" msgstr ""
#: src/Model/User.php:1126 src/Security/Authentication.php:241 #: src/Model/User.php:1166 src/Security/Authentication.php:241
msgid "" msgid ""
"We encountered a problem while logging in with the OpenID you provided. " "We encountered a problem while logging in with the OpenID you provided. "
"Please check the correct spelling of the ID." "Please check the correct spelling of the ID."
msgstr "" msgstr ""
#: src/Model/User.php:1126 src/Security/Authentication.php:241 #: src/Model/User.php:1166 src/Security/Authentication.php:241
msgid "The error message was:" msgid "The error message was:"
msgstr "" msgstr ""
#: src/Model/User.php:1132 #: src/Model/User.php:1172
msgid "Please enter the required information." msgid "Please enter the required information."
msgstr "" msgstr ""
#: src/Model/User.php:1146 #: src/Model/User.php:1186
#, php-format #, php-format
msgid "" msgid ""
"system.username_min_length (%s) and system.username_max_length (%s) are " "system.username_min_length (%s) and system.username_max_length (%s) are "
"excluding each other, swapping values." "excluding each other, swapping values."
msgstr "" msgstr ""
#: src/Model/User.php:1153 #: src/Model/User.php:1193
#, php-format #, php-format
msgid "Username should be at least %s character." msgid "Username should be at least %s character."
msgid_plural "Username should be at least %s characters." msgid_plural "Username should be at least %s characters."
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/Model/User.php:1157 #: src/Model/User.php:1197
#, php-format #, php-format
msgid "Username should be at most %s character." msgid "Username should be at most %s character."
msgid_plural "Username should be at most %s characters." msgid_plural "Username should be at most %s characters."
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/Model/User.php:1165 #: src/Model/User.php:1205
msgid "That doesn't appear to be your full (First Last) name." msgid "That doesn't appear to be your full (First Last) name."
msgstr "" msgstr ""
#: src/Model/User.php:1170 #: src/Model/User.php:1210
msgid "Your email domain is not among those allowed on this site." msgid "Your email domain is not among those allowed on this site."
msgstr "" msgstr ""
#: src/Model/User.php:1174 #: src/Model/User.php:1214
msgid "Not a valid email address." msgid "Not a valid email address."
msgstr "" msgstr ""
#: src/Model/User.php:1177 #: src/Model/User.php:1217
msgid "The nickname was blocked from registration by the nodes admin." msgid "The nickname was blocked from registration by the nodes admin."
msgstr "" msgstr ""
#: src/Model/User.php:1181 src/Model/User.php:1187 #: src/Model/User.php:1221 src/Model/User.php:1227
msgid "Cannot use that email." msgid "Cannot use that email."
msgstr "" msgstr ""
#: src/Model/User.php:1193 #: src/Model/User.php:1233
msgid "Your nickname can only contain a-z, 0-9 and _." msgid "Your nickname can only contain a-z, 0-9 and _."
msgstr "" msgstr ""
#: src/Model/User.php:1201 src/Model/User.php:1258 #: src/Model/User.php:1241 src/Model/User.php:1298
msgid "Nickname is already registered. Please choose another." msgid "Nickname is already registered. Please choose another."
msgstr "" msgstr ""
#: src/Model/User.php:1245 src/Model/User.php:1249 #: src/Model/User.php:1285 src/Model/User.php:1289
msgid "An error occurred during registration. Please try again." msgid "An error occurred during registration. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:1272 #: src/Model/User.php:1312
msgid "An error occurred creating your default profile. Please try again." msgid "An error occurred creating your default profile. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:1279 #: src/Model/User.php:1319
msgid "An error occurred creating your self contact. Please try again." msgid "An error occurred creating your self contact. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:1284 #: src/Model/User.php:1324
msgid "Friends" msgid "Friends"
msgstr "" msgstr ""
#: src/Model/User.php:1288 #: src/Model/User.php:1328
msgid "" msgid ""
"An error occurred creating your default contact circle. Please try again." "An error occurred creating your default contact circle. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:1332 #: src/Model/User.php:1372
msgid "Profile Photos" msgid "Profile Photos"
msgstr "" msgstr ""
#: src/Model/User.php:1512 #: src/Model/User.php:1552
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -3794,7 +3794,7 @@ msgid ""
"\t\t\tthe administrator of %2$s has set up an account for you." "\t\t\tthe administrator of %2$s has set up an account for you."
msgstr "" msgstr ""
#: src/Model/User.php:1515 #: src/Model/User.php:1555
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -3830,12 +3830,12 @@ msgid ""
"\t\tThank you and welcome to %4$s." "\t\tThank you and welcome to %4$s."
msgstr "" msgstr ""
#: src/Model/User.php:1547 src/Model/User.php:1653 #: src/Model/User.php:1587 src/Model/User.php:1693
#, php-format #, php-format
msgid "Registration details for %s" msgid "Registration details for %s"
msgstr "" msgstr ""
#: src/Model/User.php:1567 #: src/Model/User.php:1607
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -3851,12 +3851,12 @@ msgid ""
"\t\t" "\t\t"
msgstr "" msgstr ""
#: src/Model/User.php:1586 #: src/Model/User.php:1626
#, php-format #, php-format
msgid "Registration at %s" msgid "Registration at %s"
msgstr "" msgstr ""
#: src/Model/User.php:1610 #: src/Model/User.php:1650
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -3865,7 +3865,7 @@ msgid ""
"\t\t\t" "\t\t\t"
msgstr "" msgstr ""
#: src/Model/User.php:1618 #: src/Model/User.php:1658
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -3903,7 +3903,7 @@ msgid ""
"\t\t\tThank you and welcome to %2$s." "\t\t\tThank you and welcome to %2$s."
msgstr "" msgstr ""
#: src/Model/User.php:1680 #: src/Model/User.php:1720
msgid "" msgid ""
"User with delegates can't be removed, please remove delegate users first" "User with delegates can't be removed, please remove delegate users first"
msgstr "" msgstr ""
@ -6089,7 +6089,7 @@ msgid "Only show blocked contacts"
msgstr "" msgstr ""
#: src/Module/Contact.php:368 src/Module/Contact.php:440 #: src/Module/Contact.php:368 src/Module/Contact.php:440
#: src/Module/Settings/Server/Index.php:107 src/Object/Post.php:369 #: src/Module/Settings/Server/Index.php:107 src/Object/Post.php:386
msgid "Ignored" msgid "Ignored"
msgstr "" msgstr ""
@ -11997,208 +11997,218 @@ msgstr ""
msgid "I might attend" msgid "I might attend"
msgstr "" msgstr ""
#: src/Object/Post.php:364 #: src/Object/Post.php:381
msgid "Ignore thread" msgid "Ignore thread"
msgstr "" msgstr ""
#: src/Object/Post.php:365 #: src/Object/Post.php:382
msgid "Unignore thread" msgid "Unignore thread"
msgstr "" msgstr ""
#: src/Object/Post.php:366 #: src/Object/Post.php:383
msgid "Toggle ignore status" msgid "Toggle ignore status"
msgstr "" msgstr ""
#: src/Object/Post.php:376 #: src/Object/Post.php:393
msgid "Add star" msgid "Add star"
msgstr "" msgstr ""
#: src/Object/Post.php:377 #: src/Object/Post.php:394
msgid "Remove star" msgid "Remove star"
msgstr "" msgstr ""
#: src/Object/Post.php:378 #: src/Object/Post.php:395
msgid "Toggle star status" msgid "Toggle star status"
msgstr "" msgstr ""
#: src/Object/Post.php:389 #: src/Object/Post.php:406
msgid "Pin" msgid "Pin"
msgstr "" msgstr ""
#: src/Object/Post.php:390 #: src/Object/Post.php:407
msgid "Unpin" msgid "Unpin"
msgstr "" msgstr ""
#: src/Object/Post.php:391 #: src/Object/Post.php:408
msgid "Toggle pin status" msgid "Toggle pin status"
msgstr "" msgstr ""
#: src/Object/Post.php:394 #: src/Object/Post.php:411
msgid "Pinned" msgid "Pinned"
msgstr "" msgstr ""
#: src/Object/Post.php:399 #: src/Object/Post.php:416
msgid "Add tag" msgid "Add tag"
msgstr "" msgstr ""
#: src/Object/Post.php:412 #: src/Object/Post.php:429
msgid "Quote share this" msgid "Quote share this"
msgstr "" msgstr ""
#: src/Object/Post.php:412 #: src/Object/Post.php:429
msgid "Quote Share" msgid "Quote Share"
msgstr "" msgstr ""
#: src/Object/Post.php:415 #: src/Object/Post.php:432
msgid "Reshare this" msgid "Reshare this"
msgstr "" msgstr ""
#: src/Object/Post.php:415 #: src/Object/Post.php:432
msgid "Reshare" msgid "Reshare"
msgstr "" msgstr ""
#: src/Object/Post.php:416 #: src/Object/Post.php:433
msgid "Cancel your Reshare" msgid "Cancel your Reshare"
msgstr "" msgstr ""
#: src/Object/Post.php:416 #: src/Object/Post.php:433
msgid "Unshare" msgid "Unshare"
msgstr "" msgstr ""
#: src/Object/Post.php:467 #: src/Object/Post.php:484
#, php-format #, php-format
msgid "%s (Received %s)" msgid "%s (Received %s)"
msgstr "" msgstr ""
#: src/Object/Post.php:473 #: src/Object/Post.php:490
msgid "Comment this item on your system" msgid "Comment this item on your system"
msgstr "" msgstr ""
#: src/Object/Post.php:473 #: src/Object/Post.php:490
msgid "Remote comment" msgid "Remote comment"
msgstr "" msgstr ""
#: src/Object/Post.php:495 #: src/Object/Post.php:512
msgid "Share via ..." msgid "Share via ..."
msgstr "" msgstr ""
#: src/Object/Post.php:495 #: src/Object/Post.php:512
msgid "Share via external services" msgid "Share via external services"
msgstr "" msgstr ""
#: src/Object/Post.php:502 #: src/Object/Post.php:519
msgid "Unknown parent" msgid "Unknown parent"
msgstr "" msgstr ""
#: src/Object/Post.php:506 #: src/Object/Post.php:523
#, php-format #, php-format
msgid "in reply to %s" msgid "in reply to %s"
msgstr "" msgstr ""
#: src/Object/Post.php:508 #: src/Object/Post.php:525
msgid "Parent is probably private or not federated." msgid "Parent is probably private or not federated."
msgstr "" msgstr ""
#: src/Object/Post.php:532 #: src/Object/Post.php:549
msgid "to" msgid "to"
msgstr "" msgstr ""
#: src/Object/Post.php:533 #: src/Object/Post.php:550
msgid "via" msgid "via"
msgstr "" msgstr ""
#: src/Object/Post.php:534 #: src/Object/Post.php:551
msgid "Wall-to-Wall" msgid "Wall-to-Wall"
msgstr "" msgstr ""
#: src/Object/Post.php:535 #: src/Object/Post.php:552
msgid "via Wall-To-Wall:" msgid "via Wall-To-Wall:"
msgstr "" msgstr ""
#: src/Object/Post.php:582 #: src/Object/Post.php:601
#, php-format #, php-format
msgid "Reply to %s" msgid "Reply to %s"
msgstr "" msgstr ""
#: src/Object/Post.php:585 #: src/Object/Post.php:604
msgid "More" msgid "More"
msgstr "" msgstr ""
#: src/Object/Post.php:604 #: src/Object/Post.php:623
msgid "Notifier task is pending" msgid "Notifier task is pending"
msgstr "" msgstr ""
#: src/Object/Post.php:605 #: src/Object/Post.php:624
msgid "Delivery to remote servers is pending" msgid "Delivery to remote servers is pending"
msgstr "" msgstr ""
#: src/Object/Post.php:606 #: src/Object/Post.php:625
msgid "Delivery to remote servers is underway" msgid "Delivery to remote servers is underway"
msgstr "" msgstr ""
#: src/Object/Post.php:607 #: src/Object/Post.php:626
msgid "Delivery to remote servers is mostly done" msgid "Delivery to remote servers is mostly done"
msgstr "" msgstr ""
#: src/Object/Post.php:608 #: src/Object/Post.php:627
msgid "Delivery to remote servers is done" msgid "Delivery to remote servers is done"
msgstr "" msgstr ""
#: src/Object/Post.php:630 #: src/Object/Post.php:649
#, php-format #, php-format
msgid "%d comment" msgid "%d comment"
msgid_plural "%d comments" msgid_plural "%d comments"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/Object/Post.php:631 #: src/Object/Post.php:650
msgid "Show more" msgid "Show more"
msgstr "" msgstr ""
#: src/Object/Post.php:632 #: src/Object/Post.php:651
msgid "Show fewer" msgid "Show fewer"
msgstr "" msgstr ""
#: src/Object/Post.php:668 #: src/Object/Post.php:687
#, php-format #, php-format
msgid "Reshared by: %s" msgid "Reshared by: %s"
msgstr "" msgstr ""
#: src/Object/Post.php:673 #: src/Object/Post.php:693
#, php-format #, php-format
msgid "Viewed by: %s" msgid "Viewed by: %s"
msgstr "" msgstr ""
#: src/Object/Post.php:678 #: src/Object/Post.php:699
#, php-format #, php-format
msgid "Liked by: %s" msgid "Liked by: %s"
msgstr "" msgstr ""
#: src/Object/Post.php:683 #: src/Object/Post.php:705
#, php-format #, php-format
msgid "Disliked by: %s" msgid "Disliked by: %s"
msgstr "" msgstr ""
#: src/Object/Post.php:688 #: src/Object/Post.php:711
#, php-format #, php-format
msgid "Attended by: %s" msgid "Attended by: %s"
msgstr "" msgstr ""
#: src/Object/Post.php:693 #: src/Object/Post.php:717
#, php-format #, php-format
msgid "Maybe attended by: %s" msgid "Maybe attended by: %s"
msgstr "" msgstr ""
#: src/Object/Post.php:698 #: src/Object/Post.php:723
#, php-format #, php-format
msgid "Not attended by: %s" msgid "Not attended by: %s"
msgstr "" msgstr ""
#: src/Object/Post.php:703 #: src/Object/Post.php:729
#, php-format
msgid "Commented by: %s"
msgstr ""
#: src/Object/Post.php:735
#, php-format #, php-format
msgid "Reacted with %s by: %s" msgid "Reacted with %s by: %s"
msgstr "" msgstr ""
#: src/Object/Post.php:758
#, php-format
msgid "Quote shared by: %s"
msgstr ""
#: src/Protocol/ActivityPub/Receiver.php:523 #: src/Protocol/ActivityPub/Receiver.php:523
msgid "Chat" msgid "Chat"
msgstr "" msgstr ""

View File

@ -1985,6 +1985,8 @@ code > .hl-main {
.wall-item-actions button { .wall-item-actions button {
color: $font_color_darker; color: $font_color_darker;
background-color: transparent; background-color: transparent;
padding-left: 5px;
padding-right: 5px;
} }
.wall-item-actions .active { .wall-item-actions .active {
font-weight: bold; font-weight: bold;

View File

@ -309,18 +309,22 @@ as the value of $top_child_total (this is done at the end of this file)
{{if $item.vote}} {{if $item.vote}}
{{if $item.vote.like}} {{if $item.vote.like}}
<span class="wall-item-response">
<button type="button" class="btn-link button-likes{{if $item.responses.like.self}} active" aria-pressed="true{{/if}}" id="like-{{$item.id}}" title="{{$item.vote.like.0}}" onclick="doActivityItemAction({{$item.id}}, 'like'{{if $item.responses.like.self}}, true{{/if}});" ><i class="fa fa-thumbs-up" aria-hidden="true"></i></button> <button type="button" class="btn-link button-likes{{if $item.responses.like.self}} active" aria-pressed="true{{/if}}" id="like-{{$item.id}}" title="{{$item.vote.like.0}}" onclick="doActivityItemAction({{$item.id}}, 'like'{{if $item.responses.like.self}}, true{{/if}});" ><i class="fa fa-thumbs-up" aria-hidden="true"></i></button>
{{/if}} <span title="{{$item.responses.like.title}}">{{$item.responses.like.total}}</span>
{{if $item.vote.like AND $item.vote.dislike}} </span>
<span role="presentation" class="separator"></span>
{{/if}} {{/if}}
{{if $item.vote.dislike}} {{if $item.vote.dislike}}
<span class="wall-item-response">
<button type="button" class="btn-link button-likes{{if $item.responses.dislike.self}} active" aria-pressed="true{{/if}}" id="dislike-{{$item.id}}" title="{{$item.vote.dislike.0}}" onclick="doActivityItemAction({{$item.id}}, 'dislike'{{if $item.responses.dislike.self}}, true{{/if}});" ><i class="fa fa-thumbs-down" aria-hidden="true"></i></button> <button type="button" class="btn-link button-likes{{if $item.responses.dislike.self}} active" aria-pressed="true{{/if}}" id="dislike-{{$item.id}}" title="{{$item.vote.dislike.0}}" onclick="doActivityItemAction({{$item.id}}, 'dislike'{{if $item.responses.dislike.self}}, true{{/if}});" ><i class="fa fa-thumbs-down" aria-hidden="true"></i></button>
<span title="{{$item.responses.dislike.title}}">{{$item.responses.dislike.total}}</span>
</span>
{{/if}} {{/if}}
{{if ($item.vote.like OR $item.vote.dislike) AND $item.comment_html}}
<span role="presentation" class="separator"></span> {{foreach $item.reactions as $emoji}}
{{/if}} <span class="wall-item-emoji" title="{{$emoji.title}}">{{$emoji.emoji}} {{$emoji.total}}</span>
{{/foreach}}
{{/if}} {{/if}}
{{if $item.remote_comment}} {{if $item.remote_comment}}
@ -329,27 +333,47 @@ as the value of $top_child_total (this is done at the end of this file)
{{* Button to open the comment text field *}} {{* Button to open the comment text field *}}
{{if $item.comment_html}} {{if $item.comment_html}}
<span class="wall-item-response">
<button type="button" class="btn-link button-comments" id="comment-{{$item.id}}" title="{{$item.switchcomment}}" {{if $item.thread_level != 1}}onclick="openClose('item-comments-{{$item.id}}'); commentExpand({{$item.id}});" {{else}} onclick="openClose('item-comments-{{$item.id}}'); commentExpand({{$item.id}});"{{/if}}><i class="fa fa-commenting" aria-hidden="true"></i></button> <button type="button" class="btn-link button-comments" id="comment-{{$item.id}}" title="{{$item.switchcomment}}" {{if $item.thread_level != 1}}onclick="openClose('item-comments-{{$item.id}}'); commentExpand({{$item.id}});" {{else}} onclick="openClose('item-comments-{{$item.id}}'); commentExpand({{$item.id}});"{{/if}}><i class="fa fa-commenting" aria-hidden="true"></i></button>
<span title="{{$item.responses.comment.title}}">{{$item.responses.comment.total}}</span>
</span>
{{/if}} {{/if}}
{{* Button for sharing the item *}} {{* Button for sharing the item *}}
{{if $item.vote}} {{if $item.vote}}
{{if $item.vote.share OR $item.vote.announce}}
{{if $item.vote.like OR $item.vote.dislike OR $item.comment_html}}
<span role="presentation" class="separator"></span>
{{/if}}
{{/if}}
{{if $item.vote.announce}} {{if $item.vote.announce}}
<span class="wall-item-response">
<button type="button" class="btn-link button-announces{{if $item.responses.announce.self}} active" aria-pressed="true{{/if}}" id="announce-{{$item.id}}" title="{{$item.vote.announce.0}}" onclick="doActivityItemAction({{$item.id}}, 'announce'{{if $item.responses.announce.self}}, true{{/if}});" ><i class="fa fa-retweet" aria-hidden="true"></i></button> <button type="button" class="btn-link button-announces{{if $item.responses.announce.self}} active" aria-pressed="true{{/if}}" id="announce-{{$item.id}}" title="{{$item.vote.announce.0}}" onclick="doActivityItemAction({{$item.id}}, 'announce'{{if $item.responses.announce.self}}, true{{/if}});" ><i class="fa fa-retweet" aria-hidden="true"></i></button>
<span role="presentation" class="separator"></span> <span title="{{$item.responses.announce.title}}">{{$item.responses.announce.total}}</span>
</span>
{{/if}} {{/if}}
{{if $item.vote.share}} {{if $item.vote.share}}
<span class="wall-item-response">
<button type="button" class="btn-link button-votes" id="share-{{$item.id}}" title="{{$item.vote.share.0}}" onclick="jotShare({{$item.id}});"><i class="fa fa-share" aria-hidden="true"></i></button> <button type="button" class="btn-link button-votes" id="share-{{$item.id}}" title="{{$item.vote.share.0}}" onclick="jotShare({{$item.id}});"><i class="fa fa-share" aria-hidden="true"></i></button>
<span title="{{$item.quoteshares.title}}">{{$item.quoteshares.total}}</span>
</span>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{* Event attendance buttons *}}
{{if $item.isevent}}
<span class="wall-item-response">
<button type="button" class="btn-link button-event{{if $item.responses.attendyes.self}} active" aria-pressed="true{{/if}}" id="attendyes-{{$item.id}}" title="{{$item.attend.0}}" onclick="doActivityItemAction({{$item.id}}, 'attendyes'{{if $item.responses.attendyes.self}}, true{{/if}});"><i class="fa fa-check" aria-hidden="true"><span class="sr-only">{{$item.attend.0}}</span></i></button>
<span title="{{$item.responses.attendyes.title}}">{{$item.responses.attendyes.total}}</span>
</span>
<span class="wall-item-response">
<button type="button" class="btn-link button-event{{if $item.responses.attendno.self}} active" aria-pressed="true{{/if}}" id="attendno-{{$item.id}}" title="{{$item.attend.1}}" onclick="doActivityItemAction({{$item.id}}, 'attendno'{{if $item.responses.attendno.self}}, true{{/if}});"><i class="fa fa-times" aria-hidden="true"><span class="sr-only">{{$item.attend.1}}</span></i></button>
<span title="{{$item.responses.attendno.title}}">{{$item.responses.attendno.total}}</span>
</span>
<span class="wall-item-response">
<button type="button" class="btn-link button-event{{if $item.responses.attendmaybe.self}} active" aria-pressed="true{{/if}}" id="attendmaybe-{{$item.id}}" title="{{$item.attend.2}}" onclick="doActivityItemAction({{$item.id}}, 'attendmaybe'{{if $item.responses.attendmaybe.self}}, true{{/if}});"><i class="fa fa-question" aria-hidden="true"><span class="sr-only">{{$item.attend.2}}</span></i></button>
<span title="{{$item.responses.attendmaybe.title}}">{{$item.responses.attendmaybe.total}}</span>
</span>
{{/if}}
</div>
</div>
<span class="wall-item-actions-right hidden-xs">
{{* Put additional actions in a dropdown menu *}} {{* Put additional actions in a dropdown menu *}}
<span role="presentation" class="separator"></span>
<span class="more-links btn-group{{if $item.thread_level > 1}} dropup{{/if}}"> <span class="more-links btn-group{{if $item.thread_level > 1}} dropup{{/if}}">
<button type="button" class="btn-link dropdown-toggle" data-toggle="dropdown" id="dropdownMenuOptions-{{$item.id}}" aria-haspopup="true" aria-expanded="false" title="{{$item.menu}}"><i class="fa fa-ellipsis-h" aria-hidden="true"></i></button> <button type="button" class="btn-link dropdown-toggle" data-toggle="dropdown" id="dropdownMenuOptions-{{$item.id}}" aria-haspopup="true" aria-expanded="false" title="{{$item.menu}}"><i class="fa fa-ellipsis-h" aria-hidden="true"></i></button>
<ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="dropdownMenuOptions-{{$item.id}}"> <ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="dropdownMenuOptions-{{$item.id}}">
@ -449,17 +473,6 @@ as the value of $top_child_total (this is done at the end of this file)
{{/if}} {{/if}}
</ul> </ul>
</span> </span>
</div>
</div>
<span class="wall-item-actions-right hidden-xs">
{{* Event attendance buttons *}}
{{if $item.isevent}}
<span class="vote-event">
<button type="button" class="btn btn-xs btn-default button-event{{if $item.responses.attendyes.self}} active" aria-pressed="true{{/if}}" id="attendyes-{{$item.id}}" title="{{$item.attend.0}}" onclick="doActivityItemAction({{$item.id}}, 'attendyes'{{if $item.responses.attendyes.self}}, true{{/if}});"><i class="fa fa-check" aria-hidden="true"><span class="sr-only">{{$item.attend.0}}</span></i></button>
<button type="button" class="btn btn-xs btn-default button-event{{if $item.responses.attendno.self}} active" aria-pressed="true{{/if}}" id="attendno-{{$item.id}}" title="{{$item.attend.1}}" onclick="doActivityItemAction({{$item.id}}, 'attendno'{{if $item.responses.attendno.self}}, true{{/if}});"><i class="fa fa-times" aria-hidden="true"><span class="sr-only">{{$item.attend.1}}</span></i></button>
<button type="button" class="btn btn-xs btn-default button-event{{if $item.responses.attendmaybe.self}} active" aria-pressed="true{{/if}}" id="attendmaybe-{{$item.id}}" title="{{$item.attend.2}}" onclick="doActivityItemAction({{$item.id}}, 'attendmaybe'{{if $item.responses.attendmaybe.self}}, true{{/if}});"><i class="fa fa-question" aria-hidden="true"><span class="sr-only">{{$item.attend.2}}</span></i></button>
</span>
{{/if}}
<span class="pull-right checkbox"> <span class="pull-right checkbox">
{{if $item.drop && $item.drop.pagedrop}} {{if $item.drop && $item.drop.pagedrop}}
<input type="checkbox" title="{{$item.drop.select}}" name="itemselected[]" id="checkbox-{{$item.id}}" class="item-select" value="{{$item.id}}" /> <input type="checkbox" title="{{$item.drop.select}}" name="itemselected[]" id="checkbox-{{$item.id}}" class="item-select" value="{{$item.id}}" />
@ -473,16 +486,22 @@ as the value of $top_child_total (this is done at the end of this file)
{{* Buttons for like and dislike *}} {{* Buttons for like and dislike *}}
{{if $item.vote}} {{if $item.vote}}
{{if $item.vote.like}} {{if $item.vote.like}}
<button type="button" class="btn button-likes{{if $item.responses.like.self}} active" aria-pressed="true{{/if}}" id="like-{{$item.id}}" title="{{$item.vote.like.0}}" onclick="doActivityItemAction({{$item.id}}, 'like'{{if $item.responses.like.self}}, true{{/if}});" ><i class="fa fa-thumbs-up" aria-hidden="true"></i></button> <button type="button" class="btn button-likes{{if $item.responses.like.self}} active" aria-pressed="true{{/if}}" id="like-{{$item.id}}" title="{{$item.vote.like.0}}" onclick="doActivityItemAction({{$item.id}}, 'like'{{if $item.responses.like.self}}, true{{/if}});" ><i class="fa fa-thumbs-up" aria-hidden="true"></i>
<span title="{{$item.responses.like.title}}">{{$item.responses.like.total}}</span>
</button>
{{/if}} {{/if}}
{{if $item.vote.dislike}} {{if $item.vote.dislike}}
<button type="button" class="btn button-likes{{if $item.responses.dislike.self}} active" aria-pressed="true{{/if}}" id="dislike-{{$item.id}}" title="{{$item.vote.dislike.0}}" onclick="doActivityItemAction({{$item.id}}, 'dislike'{{if $item.responses.dislike.self}}, true{{/if}});" ><i class="fa fa-thumbs-down" aria-hidden="true"></i></button> <button type="button" class="btn button-likes{{if $item.responses.dislike.self}} active" aria-pressed="true{{/if}}" id="dislike-{{$item.id}}" title="{{$item.vote.dislike.0}}" onclick="doActivityItemAction({{$item.id}}, 'dislike'{{if $item.responses.dislike.self}}, true{{/if}});" ><i class="fa fa-thumbs-down" aria-hidden="true"></i>
<span title="{{$item.responses.dislike.title}}">{{$item.responses.dislike.total}}</span>
</button>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{* Button to open the comment text field *}} {{* Button to open the comment text field *}}
{{if $item.comment_html}} {{if $item.comment_html}}
<button type="button" class="btn button-comments" id="comment-{{$item.id}}" title="{{$item.switchcomment}}" {{if $item.thread_level != 1}}onclick="openClose('item-comments-{{$item.id}}'); commentExpand({{$item.id}});" {{else}} onclick="openClose('item-comments-{{$item.id}}'); commentExpand({{$item.id}});"{{/if}}><i class="fa fa-commenting" aria-hidden="true"></i></button> <button type="button" class="btn button-comments" id="comment-{{$item.id}}" title="{{$item.switchcomment}}" {{if $item.thread_level != 1}}onclick="openClose('item-comments-{{$item.id}}'); commentExpand({{$item.id}});" {{else}} onclick="openClose('item-comments-{{$item.id}}'); commentExpand({{$item.id}});"{{/if}}><i class="fa fa-commenting" aria-hidden="true"></i>
<span title="{{$item.responses.comment.title}}">{{$item.responses.comment.total}}</span>
</button>
{{/if}} {{/if}}
{{if $item.vote.announce OR $item.vote.share}} {{if $item.vote.announce OR $item.vote.share}}
@ -526,11 +545,15 @@ as the value of $top_child_total (this is done at the end of this file)
{{* Event attendance buttons *}} {{* Event attendance buttons *}}
{{if $item.isevent}} {{if $item.isevent}}
<div class="btn-group btn-group-event" role="group"> <button type="button" class="btn button-event{{if $item.responses.attendyes.self}} active" aria-pressed="true{{/if}}" id="attendyes-{{$item.id}}" title="{{$item.attend.0}}" onclick="doActivityItemAction({{$item.id}}, 'attendyes'{{if $item.responses.attendyes.self}}, true{{/if}});"><i class="fa fa-check" aria-hidden="true"><span class="sr-only">{{$item.attend.0}}</span></i>
<button type="button" class="btn btn-default button-event{{if $item.responses.attendyes.self}} active" aria-pressed="true{{/if}}" id="attendyes-{{$item.id}}" title="{{$item.attend.0}}" onclick="doActivityItemAction({{$item.id}}, 'attendyes'{{if $item.responses.attendyes.self}}, true{{/if}});"><i class="fa fa-check" aria-hidden="true"><span class="sr-only">{{$item.attend.0}}</span></i></button> <span title="{{$item.responses.attendyes.title}}">{{$item.responses.attendyes.total}}</span>
<button type="button" class="btn btn-default button-event{{if $item.responses.attendno.self}} active" aria-pressed="true{{/if}}" id="attendno-{{$item.id}}" title="{{$item.attend.1}}" onclick="doActivityItemAction({{$item.id}}, 'attendno'{{if $item.responses.attendno.self}}, true{{/if}});"><i class="fa fa-times" aria-hidden="true"><span class="sr-only">{{$item.attend.1}}</span></i></button> </button>
<button type="button" class="btn btn-default button-event{{if $item.responses.attendmaybe.self}} active" aria-pressed="true{{/if}}" id="attendmaybe-{{$item.id}}" title="{{$item.attend.2}}" onclick="doActivityItemAction({{$item.id}}, 'attendmaybe'{{if $item.responses.attendmaybe.self}}, true{{/if}});"><i class="fa fa-question" aria-hidden="true"><span class="sr-only">{{$item.attend.2}}</span></i></button> <button type="button" class="btn button-event{{if $item.responses.attendno.self}} active" aria-pressed="true{{/if}}" id="attendno-{{$item.id}}" title="{{$item.attend.1}}" onclick="doActivityItemAction({{$item.id}}, 'attendno'{{if $item.responses.attendno.self}}, true{{/if}});"><i class="fa fa-times" aria-hidden="true"><span class="sr-only">{{$item.attend.1}}</span></i>
</div> <span title="{{$item.responses.attendno.title}}">{{$item.responses.attendno.total}}</span>
</button>
<button type="button" class="btn button-event{{if $item.responses.attendmaybe.self}} active" aria-pressed="true{{/if}}" id="attendmaybe-{{$item.id}}" title="{{$item.attend.2}}" onclick="doActivityItemAction({{$item.id}}, 'attendmaybe'{{if $item.responses.attendmaybe.self}}, true{{/if}});"><i class="fa fa-question" aria-hidden="true"><span class="sr-only">{{$item.attend.2}}</span></i>
<span title="{{$item.responses.attendmaybe.title}}">{{$item.responses.attendmaybe.total}}</span>
</button>
{{/if}} {{/if}}
{{if $item.edpost || $item.tagger || $item.filer || $item.pin || $item.star || $item.follow_thread || $item.ignore || ($item.drop && $item.drop.dropping)}} {{if $item.edpost || $item.tagger || $item.filer || $item.pin || $item.star || $item.follow_thread || $item.ignore || ($item.drop && $item.drop.dropping)}}
@ -615,15 +638,7 @@ as the value of $top_child_total (this is done at the end of this file)
<div class="wall-item-links"></div> <div class="wall-item-links"></div>
{{* Display likes, dislike and attendance stats *}} {{* Display likes, dislike and attendance stats *}}
{{if $item.emojis}} {{if !$item.emojis && $item.responses}}
{{foreach $item.emojis as $emoji}}
{{if $emoji.icon.fa}}
<span class="wall-item-emoji" title="{{$emoji.title}}"><i class="fa {{$emoji.icon.fa}}" aria-hidden="true"></i> {{$emoji.total}}</span>
{{else}}
<span class="wall-item-emoji" title="{{$emoji.title}}">{{$emoji.emoji}} {{$emoji.total}}</span>
{{/if}}
{{/foreach}}
{{elseif $item.responses}}
<div class="wall-item-responses"> <div class="wall-item-responses">
{{foreach $item.responses as $verb=>$response}} {{foreach $item.responses as $verb=>$response}}
<div class="wall-item-{{$verb}}" id="wall-item-{{$verb}}-{{$item.id}}">{{$response.output nofilter}}</div> <div class="wall-item-{{$verb}}" id="wall-item-{{$verb}}-{{$item.id}}">{{$response.output nofilter}}</div>