diff --git a/database.sql b/database.sql index 9ffa3544ac..e06454b114 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2023.03-dev (Giant Rhubarb) --- DB_UPDATE_VERSION 1509 +-- DB_UPDATE_VERSION 1510 -- ------------------------------------------ diff --git a/src/Content/Item.php b/src/Content/Item.php index a60b12663d..26df55fd06 100644 --- a/src/Content/Item.php +++ b/src/Content/Item.php @@ -398,10 +398,11 @@ class Item } if (!empty($pcid)) { - $contact_url = 'contact/' . $pcid; - $posts_link = $contact_url . '/posts'; - $block_link = $item['self'] ? '' : $contact_url . '/block?t=' . $formSecurityToken; - $ignore_link = $item['self'] ? '' : $contact_url . '/ignore?t=' . $formSecurityToken; + $contact_url = 'contact/' . $pcid; + $posts_link = $contact_url . '/posts'; + $block_link = $item['self'] ? '' : $contact_url . '/block?t=' . $formSecurityToken; + $ignore_link = $item['self'] ? '' : $contact_url . '/ignore?t=' . $formSecurityToken; + $collapse_link = $item['self'] ? '' : $contact_url . '/collapse?t=' . $formSecurityToken; } if ($cid && !$item['self']) { @@ -423,7 +424,8 @@ class Item $this->l10n->t('View Contact') => $contact_url, $this->l10n->t('Send PM') => $pm_url, $this->l10n->t('Block') => $block_link, - $this->l10n->t('Ignore') => $ignore_link + $this->l10n->t('Ignore') => $ignore_link, + $this->l10n->t('Collapse') => $collapse_link ]; if (!empty($item['language'])) { diff --git a/src/Model/Item.php b/src/Model/Item.php index 1eaa7cff23..afa51461e8 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -3048,6 +3048,10 @@ class Item // Compile eventual content filter reasons $filter_reasons = []; if (!$is_preview && DI::userSession()->getPublicContactId() != $item['author-id']) { + if (Contact\User::isCollapsed($item['author-id'], $item['uid'])) { + $filter_reasons[] = DI::l10n()->t('Content from %s is collapsed', $item['author-name']); + } + if (!empty($item['content-warning']) && (!DI::userSession()->getLocalUserId() || !DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'system', 'disable_cw', false))) { $filter_reasons[] = DI::l10n()->t('Content warning: %s', $item['content-warning']); } diff --git a/src/Module/Contact.php b/src/Module/Contact.php index d848c749e4..21b1793af5 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -87,6 +87,11 @@ class Contact extends BaseModule self::toggleIgnoreContact($cdata['public']); $count_actions++; } + + if (!empty($_POST['contacts_batch_collapse'])) { + self::toggleCollapseContact($cdata['public']); + $count_actions++; + } } if ($count_actions > 0) { DI::sysmsg()->addInfo(DI::l10n()->tt('%d contact edited.', '%d contacts edited.', $count_actions)); @@ -165,6 +170,18 @@ class Contact extends BaseModule Model\Contact\User::setIgnored($contact_id, DI::userSession()->getLocalUserId(), $ignored); } + /** + * Toggles the collapsed status of a contact identified by id. + * + * @param int $contact_id Id of the contact with uid = 0 + * @throws \Exception + */ + private static function toggleCollapseContact(int $contact_id) + { + $collapsed = !Model\Contact\User::isCollapsed($contact_id, DI::userSession()->getLocalUserId()); + Model\Contact\User::setCollapsed($contact_id, DI::userSession()->getLocalUserId(), $collapsed); + } + protected function content(array $request = []): string { if (!DI::userSession()->getLocalUserId()) { @@ -230,6 +247,11 @@ class Contact extends BaseModule // This makes the query look for contact.uid = 0 array_unshift($sql_values, 0); break; + case 'collapsed': + $sql_extra = " AND `id` IN (SELECT `cid` FROM `user-contact` WHERE `user-contact`.`uid` = ? AND `user-contact`.`collapsed`)"; + // This makes the query look for contact.uid = 0 + array_unshift($sql_values, 0); + break; case 'archived': $sql_extra = " AND `archive` AND NOT `blocked` AND NOT `pending`"; break; @@ -345,6 +367,14 @@ class Contact extends BaseModule 'id' => 'showignored-tab', 'accesskey' => 'i', ], + [ + 'label' => DI::l10n()->t('Collapsed'), + 'url' => 'contact/collapsed', + 'sel' => $type == 'collapsed' ? 'active' : '', + 'title' => DI::l10n()->t('Only show collapsed contacts'), + 'id' => 'showcollapsed-tab', + 'accesskey' => 'c', + ], [ 'label' => DI::l10n()->t('Archived'), 'url' => 'contact/archived', @@ -382,11 +412,12 @@ class Contact extends BaseModule } switch ($type) { - case 'pending': $header .= ' - ' . DI::l10n()->t('Pending'); break; - case 'blocked': $header .= ' - ' . DI::l10n()->t('Blocked'); break; - case 'hidden': $header .= ' - ' . DI::l10n()->t('Hidden'); break; - case 'ignored': $header .= ' - ' . DI::l10n()->t('Ignored'); break; - case 'archived': $header .= ' - ' . DI::l10n()->t('Archived'); break; + case 'pending': $header .= ' - ' . DI::l10n()->t('Pending'); break; + case 'blocked': $header .= ' - ' . DI::l10n()->t('Blocked'); break; + case 'hidden': $header .= ' - ' . DI::l10n()->t('Hidden'); break; + case 'ignored': $header .= ' - ' . DI::l10n()->t('Ignored'); break; + case 'collapsed': $header .= ' - ' . DI::l10n()->t('Collapsed'); break; + case 'archived': $header .= ' - ' . DI::l10n()->t('Archived'); break; } $header .= $nets ? ' - ' . ContactSelector::networkToName($nets) : ''; @@ -405,9 +436,10 @@ class Contact extends BaseModule '$form_security_token' => BaseModule::getFormSecurityToken('contact_batch_actions'), 'multiselect' => 1, '$batch_actions' => [ - 'contacts_batch_update' => DI::l10n()->t('Update'), - 'contacts_batch_block' => DI::l10n()->t('Block') . '/' . DI::l10n()->t('Unblock'), - 'contacts_batch_ignore' => DI::l10n()->t('Ignore') . '/' . DI::l10n()->t('Unignore'), + 'contacts_batch_update' => DI::l10n()->t('Update'), + 'contacts_batch_block' => DI::l10n()->t('Block') . '/' . DI::l10n()->t('Unblock'), + 'contacts_batch_ignore' => DI::l10n()->t('Ignore') . '/' . DI::l10n()->t('Unignore'), + 'contacts_batch_collapse' => DI::l10n()->t('Collapse') . '/' . DI::l10n()->t('Uncollapse'), ], '$h_batch_actions' => DI::l10n()->t('Batch Actions'), '$paginate' => $pager->renderFull($total), diff --git a/src/Module/Contact/Profile.php b/src/Module/Contact/Profile.php index 736761f882..15eebd3603 100644 --- a/src/Module/Contact/Profile.php +++ b/src/Module/Contact/Profile.php @@ -197,7 +197,23 @@ class Profile extends BaseModule Contact\User::setIgnored($contact['id'], DI::userSession()->getLocalUserId(), true); $message = $this->t('Contact has been ignored'); } + + // @TODO: add $this->localRelationship->save($localRelationship); + DI::sysmsg()->addInfo($message); + } + if ($cmd === 'collapse') { + if ($localRelationship->collapsed) { + // @TODO Backward compatibility, replace with $localRelationship->unblock() + Contact\User::setCollapsed($contact['id'], DI::userSession()->getLocalUserId(), false); + + $message = $this->t('Contact has been uncollapsed'); + } else { + // @TODO Backward compatibility, replace with $localRelationship->block() + Contact\User::setCollapsed($contact['id'], DI::userSession()->getLocalUserId(), true); + $message = $this->t('Contact has been collapsed'); + } + // @TODO: add $this->localRelationship->save($localRelationship); DI::sysmsg()->addInfo($message); } @@ -352,6 +368,7 @@ class Profile extends BaseModule '$cinfo' => ['info', '', $localRelationship->info, ''], '$blocked' => ($contact['blocked'] ? $this->t('Currently blocked') : ''), '$ignored' => ($contact['readonly'] ? $this->t('Currently ignored') : ''), + '$collapsed' => (Contact\User::isCollapsed($contact['id'], DI::userSession()->getLocalUserId()) ? $this->t('Currently collapsed') : ''), '$archived' => ($contact['archive'] ? $this->t('Currently archived') : ''), '$pending' => ($contact['pending'] ? $this->t('Awaiting connection acknowledge') : ''), '$hidden' => ['hidden', $this->t('Hide this contact from others'), $localRelationship->hidden, $this->t('Replies/likes to your public posts may still be visible')], @@ -479,6 +496,14 @@ class Profile extends BaseModule 'id' => 'toggle-ignore', ]; + $contact_actions['collapse'] = [ + 'label' => $localRelationship->collapsed ? $this->t('Uncollapse') : $this->t('Collapse'), + 'url' => 'contact/' . $contact['id'] . '/collapse?t=' . $formSecurityToken, + 'title' => $this->t('Toggle Collapsed status'), + 'sel' => $localRelationship->collapsed ? 'active' : '', + 'id' => 'toggle-collapse', + ]; + if (Protocol::supportsRevokeFollow($contact['network']) && in_array($localRelationship->rel, [Contact::FOLLOWER, Contact::FRIEND])) { $contact_actions['revoke_follow'] = [ 'label' => $this->t('Revoke Follow'), diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 848da04040..d25d9cc3f1 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1509); + define('DB_UPDATE_VERSION', 1510); } return [ diff --git a/static/routes.config.php b/static/routes.config.php index 634b90b23a..bc10fdac07 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -386,7 +386,7 @@ return [ '/contact' => [ '[/]' => [Module\Contact::class, [R::GET]], '/{id:\d+}[/]' => [Module\Contact\Profile::class, [R::GET, R::POST]], - '/{id:\d+}/{action:block|ignore|update|updateprofile}' + '/{id:\d+}/{action:block|ignore|collapse|update|updateprofile}' => [Module\Contact\Profile::class, [R::GET]], '/{id:\d+}/advanced' => [Module\Contact\Advanced::class, [R::GET, R::POST]], '/{id:\d+}/conversations' => [Module\Contact\Conversations::class, [R::GET]], @@ -401,6 +401,7 @@ return [ '/hidden' => [Module\Contact::class, [R::GET]], '/hovercard' => [Module\Contact\Hovercard::class, [R::GET]], '/ignored' => [Module\Contact::class, [R::GET]], + '/collapsed' => [Module\Contact::class, [R::GET]], '/match' => [Module\Contact\MatchInterests::class, [R::GET]], '/pending' => [Module\Contact::class, [R::GET]], '/redir/{id:\d+}' => [Module\Contact\Redir::class, [R::GET]], diff --git a/update.php b/update.php index cf94b5679d..85a06892f0 100644 --- a/update.php +++ b/update.php @@ -1212,3 +1212,18 @@ function update_1509() return Update::SUCCESS; } + +function update_1510() +{ + $blocks = DBA::select('pconfig', ['uid', 'v'], ['cat' => 'blockem', 'k' => 'words']); + while ($block = DBA::fetch($blocks)) { + foreach (explode(',', $block['v']) as $account) { + $id = Contact::getIdForURL(trim($account), 0, false); + if (empty($id)) { + continue; + } + Contact\User::setCollapsed($id, $block['uid'], true); + } + } + return Update::SUCCESS; +} diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 4bd45b35b6..38fe8606ff 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2023.03-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-07 22:48-0500\n" +"POT-Creation-Date: 2023-01-08 23:25+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,7 +19,7 @@ msgstr "" #: mod/item.php:101 mod/item.php:104 mod/item.php:170 mod/item.php:173 -#: src/Content/Item.php:860 +#: src/Content/Item.php:862 msgid "Unable to locate original post." msgstr "" @@ -303,7 +303,7 @@ msgstr "" #: mod/photos.php:825 mod/photos.php:1103 mod/photos.php:1144 #: mod/photos.php:1200 mod/photos.php:1274 #: src/Module/Calendar/Event/Form.php:250 src/Module/Contact/Advanced.php:132 -#: src/Module/Contact/Profile.php:327 +#: src/Module/Contact/Profile.php:343 #: src/Module/Debug/ActivityPubConversion.php:140 #: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64 #: src/Module/Debug/Probe.php:54 src/Module/Debug/WebFinger.php:51 @@ -596,7 +596,7 @@ msgid "Rotate CCW (left)" msgstr "" #: mod/photos.php:1141 mod/photos.php:1197 mod/photos.php:1271 -#: src/Module/Contact.php:557 src/Module/Item/Compose.php:188 +#: src/Module/Contact.php:589 src/Module/Item/Compose.php:188 #: src/Object/Post.php:983 msgid "This is you" msgstr "" @@ -696,16 +696,16 @@ msgid "All contacts" msgstr "" #: src/BaseModule.php:432 src/Content/Widget.php:235 src/Core/ACL.php:194 -#: src/Module/Contact.php:378 src/Module/PermissionTooltip.php:122 +#: src/Module/Contact.php:408 src/Module/PermissionTooltip.php:122 #: src/Module/PermissionTooltip.php:144 msgid "Followers" msgstr "" -#: src/BaseModule.php:437 src/Content/Widget.php:236 src/Module/Contact.php:379 +#: src/BaseModule.php:437 src/Content/Widget.php:236 src/Module/Contact.php:409 msgid "Following" msgstr "" -#: src/BaseModule.php:442 src/Content/Widget.php:237 src/Module/Contact.php:380 +#: src/BaseModule.php:442 src/Content/Widget.php:237 src/Module/Contact.php:410 msgid "Mutual friends" msgstr "" @@ -1536,59 +1536,64 @@ msgstr "" msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" -#: src/Content/Item.php:418 view/theme/frio/theme.php:269 +#: src/Content/Item.php:419 view/theme/frio/theme.php:269 msgid "Follow Thread" msgstr "" -#: src/Content/Item.php:419 src/Model/Contact.php:1205 +#: src/Content/Item.php:420 src/Model/Contact.php:1205 msgid "View Status" msgstr "" -#: src/Content/Item.php:420 src/Content/Item.php:438 src/Model/Contact.php:1149 +#: src/Content/Item.php:421 src/Content/Item.php:440 src/Model/Contact.php:1149 #: src/Model/Contact.php:1197 src/Model/Contact.php:1206 #: src/Module/Directory.php:157 src/Module/Settings/Profile/Index.php:234 msgid "View Profile" msgstr "" -#: src/Content/Item.php:421 src/Model/Contact.php:1207 +#: src/Content/Item.php:422 src/Model/Contact.php:1207 msgid "View Photos" msgstr "" -#: src/Content/Item.php:422 src/Model/Contact.php:1198 +#: src/Content/Item.php:423 src/Model/Contact.php:1198 #: src/Model/Contact.php:1208 msgid "Network Posts" msgstr "" -#: src/Content/Item.php:423 src/Model/Contact.php:1199 +#: src/Content/Item.php:424 src/Model/Contact.php:1199 #: src/Model/Contact.php:1209 msgid "View Contact" msgstr "" -#: src/Content/Item.php:424 src/Model/Contact.php:1210 +#: src/Content/Item.php:425 src/Model/Contact.php:1210 msgid "Send PM" msgstr "" -#: src/Content/Item.php:425 src/Module/Contact.php:409 -#: src/Module/Contact/Profile.php:348 src/Module/Contact/Profile.php:467 +#: src/Content/Item.php:426 src/Module/Contact.php:440 +#: src/Module/Contact/Profile.php:364 src/Module/Contact/Profile.php:484 #: src/Module/Moderation/Blocklist/Contact.php:116 #: src/Module/Moderation/Users/Active.php:137 #: src/Module/Moderation/Users/Index.php:152 msgid "Block" msgstr "" -#: src/Content/Item.php:426 src/Module/Contact.php:410 -#: src/Module/Contact/Profile.php:349 src/Module/Contact/Profile.php:475 +#: src/Content/Item.php:427 src/Module/Contact.php:441 +#: src/Module/Contact/Profile.php:365 src/Module/Contact/Profile.php:492 #: src/Module/Notifications/Introductions.php:134 #: src/Module/Notifications/Introductions.php:206 #: src/Module/Notifications/Notification.php:89 msgid "Ignore" msgstr "" -#: src/Content/Item.php:430 src/Object/Post.php:454 +#: src/Content/Item.php:428 src/Module/Contact.php:442 +#: src/Module/Contact/Profile.php:500 +msgid "Collapse" +msgstr "" + +#: src/Content/Item.php:432 src/Object/Post.php:454 msgid "Languages" msgstr "" -#: src/Content/Item.php:435 src/Content/Widget.php:80 +#: src/Content/Item.php:437 src/Content/Widget.php:80 #: src/Model/Contact.php:1200 src/Model/Contact.php:1211 #: src/Module/Contact/Follow.php:166 view/theme/vier/theme.php:196 msgid "Connect/Follow" @@ -1628,7 +1633,7 @@ msgid "Sign in" msgstr "" #: src/Content/Nav.php:193 src/Module/BaseProfile.php:57 -#: src/Module/Contact.php:444 src/Module/Contact/Profile.php:380 +#: src/Module/Contact.php:476 src/Module/Contact/Profile.php:397 #: src/Module/Settings/TwoFactor/Index.php:119 view/theme/frio/theme.php:236 msgid "Status" msgstr "" @@ -1639,8 +1644,8 @@ msgid "Your posts and conversations" msgstr "" #: src/Content/Nav.php:194 src/Module/BaseProfile.php:49 -#: src/Module/BaseSettings.php:100 src/Module/Contact.php:468 -#: src/Module/Contact/Profile.php:382 src/Module/Profile/Profile.php:268 +#: src/Module/BaseSettings.php:100 src/Module/Contact.php:500 +#: src/Module/Contact/Profile.php:399 src/Module/Profile/Profile.php:268 #: src/Module/Welcome.php:57 view/theme/frio/theme.php:237 msgid "Profile" msgstr "" @@ -1659,7 +1664,7 @@ msgid "Your photos" msgstr "" #: src/Content/Nav.php:196 src/Module/BaseProfile.php:73 -#: src/Module/BaseProfile.php:76 src/Module/Contact.php:460 +#: src/Module/BaseProfile.php:76 src/Module/Contact.php:492 #: view/theme/frio/theme.php:242 msgid "Media" msgstr "" @@ -1745,8 +1750,8 @@ msgstr "" #: src/Content/Nav.php:238 src/Content/Nav.php:293 #: src/Content/Text/HTML.php:900 src/Module/BaseProfile.php:127 -#: src/Module/BaseProfile.php:130 src/Module/Contact.php:381 -#: src/Module/Contact.php:475 view/theme/frio/theme.php:250 +#: src/Module/BaseProfile.php:130 src/Module/Contact.php:411 +#: src/Module/Contact.php:507 view/theme/frio/theme.php:250 msgid "Contacts" msgstr "" @@ -1921,8 +1926,8 @@ msgid "" "%2$s %3$s" msgstr "" -#: src/Content/Text/BBCode.php:1257 src/Model/Item.php:3558 -#: src/Model/Item.php:3564 src/Model/Item.php:3565 +#: src/Content/Text/BBCode.php:1257 src/Model/Item.php:3562 +#: src/Model/Item.php:3568 src/Model/Item.php:3569 msgid "Link to source" msgstr "" @@ -1955,7 +1960,7 @@ msgid "The end" msgstr "" #: src/Content/Text/HTML.php:883 src/Content/Widget/VCard.php:109 -#: src/Model/Profile.php:463 src/Module/Contact/Profile.php:427 +#: src/Model/Profile.php:463 src/Module/Contact/Profile.php:444 msgid "Follow" msgstr "" @@ -1994,7 +1999,7 @@ msgstr "" msgid "Examples: Robert Morgenstein, Fishing" msgstr "" -#: src/Content/Widget.php:82 src/Module/Contact.php:402 +#: src/Content/Widget.php:82 src/Module/Contact.php:433 #: src/Module/Directory.php:96 view/theme/vier/theme.php:198 msgid "Find" msgstr "" @@ -2026,7 +2031,7 @@ msgid "Local Directory" msgstr "" #: src/Content/Widget.php:211 src/Model/Group.php:587 -#: src/Module/Contact.php:365 src/Module/Welcome.php:76 +#: src/Module/Contact.php:395 src/Module/Welcome.php:76 msgid "Groups" msgstr "" @@ -2038,7 +2043,7 @@ msgstr "" msgid "Relationships" msgstr "" -#: src/Content/Widget.php:244 src/Module/Contact.php:317 +#: src/Content/Widget.php:244 src/Module/Contact.php:339 #: src/Module/Group.php:291 msgid "All Contacts" msgstr "" @@ -2141,18 +2146,18 @@ msgid "More Trending Tags" msgstr "" #: src/Content/Widget/VCard.php:102 src/Model/Profile.php:378 -#: src/Module/Contact/Profile.php:371 src/Module/Profile/Profile.php:199 +#: src/Module/Contact/Profile.php:388 src/Module/Profile/Profile.php:199 msgid "XMPP:" msgstr "" #: src/Content/Widget/VCard.php:103 src/Model/Profile.php:379 -#: src/Module/Contact/Profile.php:373 src/Module/Profile/Profile.php:203 +#: src/Module/Contact/Profile.php:390 src/Module/Profile/Profile.php:203 msgid "Matrix:" msgstr "" #: src/Content/Widget/VCard.php:104 src/Model/Event.php:82 #: src/Model/Event.php:109 src/Model/Event.php:473 src/Model/Event.php:958 -#: src/Model/Profile.php:373 src/Module/Contact/Profile.php:369 +#: src/Model/Profile.php:373 src/Module/Contact/Profile.php:386 #: src/Module/Directory.php:147 src/Module/Notifications/Introductions.php:187 #: src/Module/Profile/Profile.php:221 msgid "Location:" @@ -2165,7 +2170,7 @@ msgstr "" #: src/Content/Widget/VCard.php:111 src/Model/Contact.php:1201 #: src/Model/Contact.php:1212 src/Model/Profile.php:465 -#: src/Module/Contact/Profile.php:419 +#: src/Module/Contact/Profile.php:436 msgid "Unfollow" msgstr "" @@ -3110,47 +3115,52 @@ msgstr "" #: src/Model/Item.php:3052 #, php-format +msgid "Content from %s is collapsed" +msgstr "" + +#: src/Model/Item.php:3056 +#, php-format msgid "Content warning: %s" msgstr "" -#: src/Model/Item.php:3470 +#: src/Model/Item.php:3474 msgid "bytes" msgstr "" -#: src/Model/Item.php:3501 +#: src/Model/Item.php:3505 #, php-format msgid "%2$s (%3$d%%, %1$d vote)" msgid_plural "%2$s (%3$d%%, %1$d votes)" msgstr[0] "" msgstr[1] "" -#: src/Model/Item.php:3503 +#: src/Model/Item.php:3507 #, php-format msgid "%2$s (%1$d vote)" msgid_plural "%2$s (%1$d votes)" msgstr[0] "" msgstr[1] "" -#: src/Model/Item.php:3508 +#: src/Model/Item.php:3512 #, php-format msgid "%d voter. Poll end: %s" msgid_plural "%d voters. Poll end: %s" msgstr[0] "" msgstr[1] "" -#: src/Model/Item.php:3510 +#: src/Model/Item.php:3514 #, php-format msgid "%d voter." msgid_plural "%d voters." msgstr[0] "" msgstr[1] "" -#: src/Model/Item.php:3512 +#: src/Model/Item.php:3516 #, php-format msgid "Poll end: %s" msgstr "" -#: src/Model/Item.php:3546 src/Model/Item.php:3547 +#: src/Model/Item.php:3550 src/Model/Item.php:3551 msgid "View on separate page" msgstr "" @@ -3176,7 +3186,7 @@ msgstr "" msgid "Homepage:" msgstr "" -#: src/Model/Profile.php:377 src/Module/Contact/Profile.php:375 +#: src/Model/Profile.php:377 src/Module/Contact/Profile.php:392 #: src/Module/Notifications/Introductions.php:189 msgid "About:" msgstr "" @@ -4094,7 +4104,7 @@ msgid "Policies" msgstr "" #: src/Module/Admin/Site.php:443 src/Module/Calendar/Event/Form.php:252 -#: src/Module/Contact.php:485 src/Module/Profile/Profile.php:276 +#: src/Module/Contact.php:517 src/Module/Profile/Profile.php:276 msgid "Advanced" msgstr "" @@ -4888,7 +4898,7 @@ msgid "" "received." msgstr "" -#: src/Module/Admin/Site.php:551 src/Module/Contact/Profile.php:274 +#: src/Module/Admin/Site.php:551 src/Module/Contact/Profile.php:290 #: src/Module/Settings/TwoFactor/Index.php:125 msgid "Disabled" msgstr "" @@ -5396,11 +5406,11 @@ msgstr "" msgid "Item Source" msgstr "" -#: src/Module/BaseProfile.php:52 src/Module/Contact.php:471 +#: src/Module/BaseProfile.php:52 src/Module/Contact.php:503 msgid "Profile Details" msgstr "" -#: src/Module/BaseProfile.php:60 src/Module/Contact.php:455 +#: src/Module/BaseProfile.php:60 src/Module/Contact.php:487 #: src/Module/Contact/Follow.php:191 src/Module/Contact/Unfollow.php:138 msgid "Status Messages and Posts" msgstr "" @@ -5588,135 +5598,147 @@ msgstr "" msgid "list" msgstr "" -#: src/Module/Contact.php:92 +#: src/Module/Contact.php:97 #, php-format msgid "%d contact edited." msgid_plural "%d contacts edited." msgstr[0] "" msgstr[1] "" -#: src/Module/Contact.php:320 +#: src/Module/Contact.php:342 msgid "Show all contacts" msgstr "" -#: src/Module/Contact.php:325 src/Module/Contact.php:385 +#: src/Module/Contact.php:347 src/Module/Contact.php:415 #: src/Module/Moderation/BaseUsers.php:85 msgid "Pending" msgstr "" -#: src/Module/Contact.php:328 +#: src/Module/Contact.php:350 msgid "Only show pending contacts" msgstr "" -#: src/Module/Contact.php:333 src/Module/Contact.php:386 +#: src/Module/Contact.php:355 src/Module/Contact.php:416 #: src/Module/Moderation/BaseUsers.php:93 msgid "Blocked" msgstr "" -#: src/Module/Contact.php:336 +#: src/Module/Contact.php:358 msgid "Only show blocked contacts" msgstr "" -#: src/Module/Contact.php:341 src/Module/Contact.php:388 +#: src/Module/Contact.php:363 src/Module/Contact.php:418 #: src/Object/Post.php:338 msgid "Ignored" msgstr "" -#: src/Module/Contact.php:344 +#: src/Module/Contact.php:366 msgid "Only show ignored contacts" msgstr "" -#: src/Module/Contact.php:349 src/Module/Contact.php:389 +#: src/Module/Contact.php:371 src/Module/Contact.php:419 +msgid "Collapsed" +msgstr "" + +#: src/Module/Contact.php:374 +msgid "Only show collapsed contacts" +msgstr "" + +#: src/Module/Contact.php:379 src/Module/Contact.php:420 msgid "Archived" msgstr "" -#: src/Module/Contact.php:352 +#: src/Module/Contact.php:382 msgid "Only show archived contacts" msgstr "" -#: src/Module/Contact.php:357 src/Module/Contact.php:387 +#: src/Module/Contact.php:387 src/Module/Contact.php:417 msgid "Hidden" msgstr "" -#: src/Module/Contact.php:360 +#: src/Module/Contact.php:390 msgid "Only show hidden contacts" msgstr "" -#: src/Module/Contact.php:368 +#: src/Module/Contact.php:398 msgid "Organize your contact groups" msgstr "" -#: src/Module/Contact.php:400 +#: src/Module/Contact.php:431 msgid "Search your contacts" msgstr "" -#: src/Module/Contact.php:401 src/Module/Search/Index.php:206 +#: src/Module/Contact.php:432 src/Module/Search/Index.php:206 #, php-format msgid "Results for: %s" msgstr "" -#: src/Module/Contact.php:408 +#: src/Module/Contact.php:439 msgid "Update" msgstr "" -#: src/Module/Contact.php:409 src/Module/Contact/Profile.php:348 -#: src/Module/Contact/Profile.php:467 +#: src/Module/Contact.php:440 src/Module/Contact/Profile.php:364 +#: src/Module/Contact/Profile.php:484 #: src/Module/Moderation/Blocklist/Contact.php:117 #: src/Module/Moderation/Users/Blocked.php:138 #: src/Module/Moderation/Users/Index.php:154 msgid "Unblock" msgstr "" -#: src/Module/Contact.php:410 src/Module/Contact/Profile.php:349 -#: src/Module/Contact/Profile.php:475 +#: src/Module/Contact.php:441 src/Module/Contact/Profile.php:365 +#: src/Module/Contact/Profile.php:492 msgid "Unignore" msgstr "" -#: src/Module/Contact.php:412 +#: src/Module/Contact.php:442 src/Module/Contact/Profile.php:500 +msgid "Uncollapse" +msgstr "" + +#: src/Module/Contact.php:444 msgid "Batch Actions" msgstr "" -#: src/Module/Contact.php:447 +#: src/Module/Contact.php:479 msgid "Conversations started by this contact" msgstr "" -#: src/Module/Contact.php:452 +#: src/Module/Contact.php:484 msgid "Posts and Comments" msgstr "" -#: src/Module/Contact.php:463 +#: src/Module/Contact.php:495 msgid "Posts containing media objects" msgstr "" -#: src/Module/Contact.php:478 +#: src/Module/Contact.php:510 msgid "View all known contacts" msgstr "" -#: src/Module/Contact.php:488 +#: src/Module/Contact.php:520 msgid "Advanced Contact Settings" msgstr "" -#: src/Module/Contact.php:524 +#: src/Module/Contact.php:556 msgid "Mutual Friendship" msgstr "" -#: src/Module/Contact.php:528 +#: src/Module/Contact.php:560 msgid "is a fan of yours" msgstr "" -#: src/Module/Contact.php:532 +#: src/Module/Contact.php:564 msgid "you are a fan of" msgstr "" -#: src/Module/Contact.php:550 +#: src/Module/Contact.php:582 msgid "Pending outgoing contact request" msgstr "" -#: src/Module/Contact.php:552 +#: src/Module/Contact.php:584 msgid "Pending incoming contact request" msgstr "" -#: src/Module/Contact.php:565 src/Module/Contact/Profile.php:334 +#: src/Module/Contact.php:597 src/Module/Contact/Profile.php:350 #, php-format msgid "Visit %s's profile [%s]" msgstr "" @@ -5869,7 +5891,7 @@ msgstr "" msgid "Your Identity Address:" msgstr "" -#: src/Module/Contact/Follow.php:169 src/Module/Contact/Profile.php:365 +#: src/Module/Contact/Follow.php:169 src/Module/Contact/Profile.php:382 #: src/Module/Contact/Unfollow.php:129 #: src/Module/Moderation/Blocklist/Contact.php:133 #: src/Module/Notifications/Introductions.php:129 @@ -5877,7 +5899,7 @@ msgstr "" msgid "Profile URL" msgstr "" -#: src/Module/Contact/Follow.php:170 src/Module/Contact/Profile.php:377 +#: src/Module/Contact/Follow.php:170 src/Module/Contact/Profile.php:394 #: src/Module/Notifications/Introductions.php:191 #: src/Module/Profile/Profile.php:234 msgid "Tags:" @@ -5932,207 +5954,223 @@ msgstr "" msgid "Contact has been ignored" msgstr "" -#: src/Module/Contact/Profile.php:230 +#: src/Module/Contact/Profile.php:210 +msgid "Contact has been uncollapsed" +msgstr "" + +#: src/Module/Contact/Profile.php:214 +msgid "Contact has been collapsed" +msgstr "" + +#: src/Module/Contact/Profile.php:246 #, php-format msgid "You are mutual friends with %s" msgstr "" -#: src/Module/Contact/Profile.php:231 +#: src/Module/Contact/Profile.php:247 #, php-format msgid "You are sharing with %s" msgstr "" -#: src/Module/Contact/Profile.php:232 +#: src/Module/Contact/Profile.php:248 #, php-format msgid "%s is sharing with you" msgstr "" -#: src/Module/Contact/Profile.php:248 +#: src/Module/Contact/Profile.php:264 msgid "Private communications are not available for this contact." msgstr "" -#: src/Module/Contact/Profile.php:250 +#: src/Module/Contact/Profile.php:266 msgid "Never" msgstr "" -#: src/Module/Contact/Profile.php:253 +#: src/Module/Contact/Profile.php:269 msgid "(Update was not successful)" msgstr "" -#: src/Module/Contact/Profile.php:253 +#: src/Module/Contact/Profile.php:269 msgid "(Update was successful)" msgstr "" -#: src/Module/Contact/Profile.php:255 src/Module/Contact/Profile.php:438 +#: src/Module/Contact/Profile.php:271 src/Module/Contact/Profile.php:455 msgid "Suggest friends" msgstr "" -#: src/Module/Contact/Profile.php:259 +#: src/Module/Contact/Profile.php:275 #, php-format msgid "Network type: %s" msgstr "" -#: src/Module/Contact/Profile.php:264 +#: src/Module/Contact/Profile.php:280 msgid "Communications lost with this contact!" msgstr "" -#: src/Module/Contact/Profile.php:270 +#: src/Module/Contact/Profile.php:286 msgid "Fetch further information for feeds" msgstr "" -#: src/Module/Contact/Profile.php:272 +#: src/Module/Contact/Profile.php:288 msgid "" "Fetch information like preview pictures, title and teaser from the feed " "item. You can activate this if the feed doesn't contain much text. Keywords " "are taken from the meta header in the feed item and are posted as hash tags." msgstr "" -#: src/Module/Contact/Profile.php:275 +#: src/Module/Contact/Profile.php:291 msgid "Fetch information" msgstr "" -#: src/Module/Contact/Profile.php:276 +#: src/Module/Contact/Profile.php:292 msgid "Fetch keywords" msgstr "" -#: src/Module/Contact/Profile.php:277 +#: src/Module/Contact/Profile.php:293 msgid "Fetch information and keywords" msgstr "" -#: src/Module/Contact/Profile.php:287 src/Module/Contact/Profile.php:292 -#: src/Module/Contact/Profile.php:297 src/Module/Contact/Profile.php:303 +#: src/Module/Contact/Profile.php:303 src/Module/Contact/Profile.php:308 +#: src/Module/Contact/Profile.php:313 src/Module/Contact/Profile.php:319 msgid "No mirroring" msgstr "" -#: src/Module/Contact/Profile.php:288 src/Module/Contact/Profile.php:298 -#: src/Module/Contact/Profile.php:304 +#: src/Module/Contact/Profile.php:304 src/Module/Contact/Profile.php:314 +#: src/Module/Contact/Profile.php:320 msgid "Mirror as my own posting" msgstr "" -#: src/Module/Contact/Profile.php:293 src/Module/Contact/Profile.php:299 +#: src/Module/Contact/Profile.php:309 src/Module/Contact/Profile.php:315 msgid "Native reshare" msgstr "" -#: src/Module/Contact/Profile.php:316 +#: src/Module/Contact/Profile.php:332 msgid "Contact Information / Notes" msgstr "" -#: src/Module/Contact/Profile.php:317 +#: src/Module/Contact/Profile.php:333 msgid "Contact Settings" msgstr "" -#: src/Module/Contact/Profile.php:325 +#: src/Module/Contact/Profile.php:341 msgid "Contact" msgstr "" -#: src/Module/Contact/Profile.php:329 +#: src/Module/Contact/Profile.php:345 msgid "Their personal note" msgstr "" -#: src/Module/Contact/Profile.php:331 +#: src/Module/Contact/Profile.php:347 msgid "Edit contact notes" msgstr "" -#: src/Module/Contact/Profile.php:335 +#: src/Module/Contact/Profile.php:351 msgid "Block/Unblock contact" msgstr "" -#: src/Module/Contact/Profile.php:336 +#: src/Module/Contact/Profile.php:352 msgid "Ignore contact" msgstr "" -#: src/Module/Contact/Profile.php:337 +#: src/Module/Contact/Profile.php:353 msgid "View conversations" msgstr "" -#: src/Module/Contact/Profile.php:342 +#: src/Module/Contact/Profile.php:358 msgid "Last update:" msgstr "" -#: src/Module/Contact/Profile.php:344 +#: src/Module/Contact/Profile.php:360 msgid "Update public posts" msgstr "" -#: src/Module/Contact/Profile.php:346 src/Module/Contact/Profile.php:448 +#: src/Module/Contact/Profile.php:362 src/Module/Contact/Profile.php:465 msgid "Update now" msgstr "" -#: src/Module/Contact/Profile.php:353 +#: src/Module/Contact/Profile.php:369 msgid "Currently blocked" msgstr "" -#: src/Module/Contact/Profile.php:354 +#: src/Module/Contact/Profile.php:370 msgid "Currently ignored" msgstr "" -#: src/Module/Contact/Profile.php:355 +#: src/Module/Contact/Profile.php:371 +msgid "Currently collapsed" +msgstr "" + +#: src/Module/Contact/Profile.php:372 msgid "Currently archived" msgstr "" -#: src/Module/Contact/Profile.php:356 +#: src/Module/Contact/Profile.php:373 msgid "Awaiting connection acknowledge" msgstr "" -#: src/Module/Contact/Profile.php:357 +#: src/Module/Contact/Profile.php:374 #: src/Module/Notifications/Introductions.php:192 msgid "Hide this contact from others" msgstr "" -#: src/Module/Contact/Profile.php:357 +#: src/Module/Contact/Profile.php:374 msgid "" "Replies/likes to your public posts may still be visible" msgstr "" -#: src/Module/Contact/Profile.php:358 +#: src/Module/Contact/Profile.php:375 msgid "Notification for new posts" msgstr "" -#: src/Module/Contact/Profile.php:358 +#: src/Module/Contact/Profile.php:375 msgid "Send a notification of every new post of this contact" msgstr "" -#: src/Module/Contact/Profile.php:360 +#: src/Module/Contact/Profile.php:377 msgid "Keyword Deny List" msgstr "" -#: src/Module/Contact/Profile.php:360 +#: src/Module/Contact/Profile.php:377 msgid "" "Comma separated list of keywords that should not be converted to hashtags, " "when \"Fetch information and keywords\" is selected" msgstr "" -#: src/Module/Contact/Profile.php:378 +#: src/Module/Contact/Profile.php:395 #: src/Module/Settings/TwoFactor/Index.php:139 msgid "Actions" msgstr "" -#: src/Module/Contact/Profile.php:386 +#: src/Module/Contact/Profile.php:403 msgid "Mirror postings from this contact" msgstr "" -#: src/Module/Contact/Profile.php:388 +#: src/Module/Contact/Profile.php:405 msgid "" "Mark this contact as remote_self, this will cause friendica to repost new " "entries from this contact." msgstr "" -#: src/Module/Contact/Profile.php:458 +#: src/Module/Contact/Profile.php:475 msgid "Refetch contact data" msgstr "" -#: src/Module/Contact/Profile.php:469 +#: src/Module/Contact/Profile.php:486 msgid "Toggle Blocked status" msgstr "" -#: src/Module/Contact/Profile.php:477 +#: src/Module/Contact/Profile.php:494 msgid "Toggle Ignored status" msgstr "" -#: src/Module/Contact/Profile.php:484 src/Module/Contact/Revoke.php:106 +#: src/Module/Contact/Profile.php:502 +msgid "Toggle Collapsed status" +msgstr "" + +#: src/Module/Contact/Profile.php:509 src/Module/Contact/Revoke.php:106 msgid "Revoke Follow" msgstr "" -#: src/Module/Contact/Profile.php:486 +#: src/Module/Contact/Profile.php:511 msgid "Revoke the follow from this contact" msgstr "" diff --git a/view/templates/contact_edit.tpl b/view/templates/contact_edit.tpl index 2b84657c88..97f7a6526f 100644 --- a/view/templates/contact_edit.tpl +++ b/view/templates/contact_edit.tpl @@ -23,6 +23,7 @@
  • {{$contact_actions.block.label}}
  • {{$contact_actions.ignore.label}}
  • +
  • {{$contact_actions.collapse.label}}
  • {{if $contact_actions.revoke_follow.url}}
  • {{$contact_actions.revoke_follow.label}}
  • {{/if}} @@ -44,6 +45,7 @@ {{if $blocked && !$pending}}
  • {{$blocked}}
  • {{/if}} {{if $pending}}
  • {{$pending}}
  • {{/if}} {{if $ignored}}
  • {{$ignored}}
  • {{/if}} + {{if $collapsed}}
  • {{$collapsed}}
  • {{/if}} {{if $archived}}
  • {{$archived}}
  • {{/if}} {{* End of contact-edit-status-wrapper *}} diff --git a/view/theme/frio/templates/contact_edit.tpl b/view/theme/frio/templates/contact_edit.tpl index 693434cc82..cb26e52dcf 100644 --- a/view/theme/frio/templates/contact_edit.tpl +++ b/view/theme/frio/templates/contact_edit.tpl @@ -29,6 +29,7 @@ {{/if}}
  • {{$contact_actions.block.label}}
  • {{$contact_actions.ignore.label}}
  • +
  • {{$contact_actions.collapse.label}}
  • {{if $contact_actions.revoke_follow.url}}
  • {{/if}} @@ -58,6 +59,7 @@ {{if $blocked && !$pending}}
  • {{$blocked}}
  • {{/if}} {{if $pending}}
  • {{$pending}}
  • {{/if}} {{if $ignored}}
  • {{$ignored}}
  • {{/if}} + {{if $collapsed}}
  • {{$collapsed}}
  • {{/if}} {{if $archived}}
  • {{$archived}}
  • {{/if}} {{* End of contact-edit-status-wrapper *}}