1
0
Fork 0

Merge remote-tracking branch 'upstream/develop' into network-thread-view

This commit is contained in:
Michael 2021-10-02 21:00:10 +00:00
commit eea355ae3b
31 changed files with 886 additions and 870 deletions

View file

@ -32,7 +32,7 @@ General
* m - Status Messages and Posts * m - Status Messages and Posts
* r - Profile Details * r - Profile Details
* h - Photo Albums * h - Photo Albums
* v - Videos * d - Media
* e - Events and Calendar * e - Events and Calendar
* t - Personal Notes * t - Personal Notes
* o - Scheduled Posts * o - Scheduled Posts
@ -49,12 +49,13 @@ General
* h - Only show hidden contacts * h - Only show hidden contacts
* e - Edit contact groups * e - Edit contact groups
../contacts (single contact view) ../contact (single contact view)
------------------------------- -------------------------------
* m - Status messages * m - Status messages
* p - Posts and Comments
* d - Media
* o - Profile * o - Profile
* t - Contacts * t - Contacts
* d - Common friends
* r - Advanced * r - Advanced
../message ../message

View file

@ -479,6 +479,22 @@ Hook data:
- **uid** (input): the user to return the contact data for (can be empty for public contacts). - **uid** (input): the user to return the contact data for (can be empty for public contacts).
- **result** (output): Set by the hook function to indicate a successful detection. - **result** (output): Set by the hook function to indicate a successful detection.
### support_follow
Called to assert whether a connector addon provides follow capabilities.
Hook data:
- **protocol** (input): shorthand for the protocol. List of values is available in `src/Core/Protocol.php`.
- **result** (output): should be true if the connector provides follow capabilities, left alone otherwise.
### support_revoke_follow
Called to assert whether a connector addon provides follow revocation capabilities.
Hook data:
- **protocol** (input): shorthand for the protocol. List of values is available in `src/Core/Protocol.php`.
- **result** (output): should be true if the connector provides follow revocation capabilities, left alone otherwise.
### follow ### follow
Called before adding a new contact for a user to handle non-native network remote contact (like Twitter). Called before adding a new contact for a user to handle non-native network remote contact (like Twitter).
@ -497,6 +513,14 @@ Hook data:
- **two_way** (input): wether to stop sharing with the remote contact as well. - **two_way** (input): wether to stop sharing with the remote contact as well.
- **result** (output): wether the unfollowing is successful or not. - **result** (output): wether the unfollowing is successful or not.
### revoke_follow
Called when making a remote contact on a non-native network (like Twitter) unfollow you.
Hook data:
- **contact** (input): the remote contact (uid = local revoking user id) array.
- **result** (output): a boolean value indicating wether the operation was successful or not.
## Complete list of hook callbacks ## Complete list of hook callbacks
Here is a complete list of all hook callbacks with file locations (as of 24-Sep-2018). Please see the source for details of any hooks not documented above. Here is a complete list of all hook callbacks with file locations (as of 24-Sep-2018). Please see the source for details of any hooks not documented above.
@ -666,7 +690,6 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
Hook::callAll('contact_photo_menu', $args); Hook::callAll('contact_photo_menu', $args);
Hook::callAll('follow', $arr); Hook::callAll('follow', $arr);
Hook::callAll('unfollow', $hook_data);
### src/Model/Profile.php ### src/Model/Profile.php
@ -750,6 +773,13 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
Hook::callAll('logged_in', $a->user); Hook::callAll('logged_in', $a->user);
### src/Core/Protocol.php
Hook::callAll('support_follow', $hook_data);
Hook::callAll('support_revoke_follow', $hook_data);
Hook::callAll('unfollow', $hook_data);
Kook::callAll('revoke_follow', $hook_data);
### src/Core/StorageManager ### src/Core/StorageManager
Hook::callAll('storage_instance', $data); Hook::callAll('storage_instance', $data);

View file

@ -356,7 +356,6 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
Hook::callAll('contact_photo_menu', $args); Hook::callAll('contact_photo_menu', $args);
Hook::callAll('follow', $arr); Hook::callAll('follow', $arr);
Hook::callAll('unfollow', $hook_data);
### src/Model/Profile.php ### src/Model/Profile.php
@ -413,7 +412,14 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
### src/Core/Authentication.php ### src/Core/Authentication.php
Hook::callAll('logged_in', $a->user); Hook::callAll('logged_in', $a->user);
### src/Core/Protocol.php
Hook::callAll('support_follow', $hook_data);
Hook::callAll('support_revoke_follow', $hook_data);
Hook::callAll('unfollow', $hook_data);
Kook::callAll('revoke_follow', $hook_data);
### src/Core/StorageManager ### src/Core/StorageManager
Hook::callAll('storage_instance', $data); Hook::callAll('storage_instance', $data);

View file

@ -242,17 +242,11 @@ function events_content(App $a)
} }
if ((DI::args()->getArgc() > 2) && (DI::args()->getArgv()[1] === 'ignore') && intval(DI::args()->getArgv()[2])) { if ((DI::args()->getArgc() > 2) && (DI::args()->getArgv()[1] === 'ignore') && intval(DI::args()->getArgv()[2])) {
q("UPDATE `event` SET `ignore` = 1 WHERE `id` = %d AND `uid` = %d", DBA::update('event', ['ignore' => true], ['id' => DI::args()->getArgv()[2], 'uid' => local_user()]);
intval(DI::args()->getArgv()[2]),
intval(local_user())
);
} }
if ((DI::args()->getArgc() > 2) && (DI::args()->getArgv()[1] === 'unignore') && intval(DI::args()->getArgv()[2])) { if ((DI::args()->getArgc() > 2) && (DI::args()->getArgv()[1] === 'unignore') && intval(DI::args()->getArgv()[2])) {
q("UPDATE `event` SET `ignore` = 0 WHERE `id` = %d AND `uid` = %d", DBA::update('event', ['ignore' => false], ['id' => DI::args()->getArgv()[2], 'uid' => local_user()]);
intval(DI::args()->getArgv()[2]),
intval(local_user())
);
} }
if ($a->getThemeInfoValue('events_in_profile')) { if ($a->getThemeInfoValue('events_in_profile')) {
@ -444,13 +438,7 @@ function events_content(App $a)
} }
if (($mode === 'edit' || $mode === 'copy') && $event_id) { if (($mode === 'edit' || $mode === 'copy') && $event_id) {
$r = q("SELECT * FROM `event` WHERE `id` = %d AND `uid` = %d LIMIT 1", $orig_event = DBA::selectFirst('event', [], ['id' => $event_id, 'uid' => local_user()]);
intval($event_id),
intval(local_user())
);
if (DBA::isResult($r)) {
$orig_event = $r[0];
}
} }
// Passed parameters overrides anything found in the DB // Passed parameters overrides anything found in the DB

View file

@ -158,12 +158,9 @@ function message_content(App $a)
DI::baseUrl()->redirect('message/' . $conversation['id'] ); DI::baseUrl()->redirect('message/' . $conversation['id'] );
} else { } else {
$r = q("SELECT `parent-uri`,`convid` FROM `mail` WHERE `id` = %d AND `uid` = %d LIMIT 1", $parentmail = DBA::selectFirst('mail', ['parent-uri'], ['id' => DI::args()->getArgv()[2], 'uid' => local_user()]);
intval(DI::args()->getArgv()[2]), if (DBA::isResult($parentmail)) {
intval(local_user()) $parent = $parentmail['parent-uri'];
);
if (DBA::isResult($r)) {
$parent = $r[0]['parent-uri'];
if (!DBA::delete('mail', ['parent-uri' => $parent, 'uid' => local_user()])) { if (!DBA::delete('mail', ['parent-uri' => $parent, 'uid' => local_user()])) {
notice(DI::l10n()->t('Conversation was not removed.')); notice(DI::l10n()->t('Conversation was not removed.'));

View file

@ -200,12 +200,7 @@ function photos_post(App $a)
return; // NOTREACHED return; // NOTREACHED
} }
$r = q("SELECT `album` FROM `photo` WHERE `album` = '%s' AND `uid` = %d", if (!DBA::exists('photo', ['album' => $album, 'uid' => $page_owner_uid])) {
DBA::escape($album),
intval($page_owner_uid)
);
if (!DBA::isResult($r)) {
notice(DI::l10n()->t('Album not found.')); notice(DI::l10n()->t('Album not found.'));
DI::baseUrl()->redirect('photos/' . $user['nickname'] . '/album'); DI::baseUrl()->redirect('photos/' . $user['nickname'] . '/album');
return; // NOTREACHED return; // NOTREACHED
@ -321,7 +316,7 @@ function photos_post(App $a)
} }
if (!empty($_POST['rotate']) && (intval($_POST['rotate']) == 1 || intval($_POST['rotate']) == 2)) { if (!empty($_POST['rotate']) && (intval($_POST['rotate']) == 1 || intval($_POST['rotate']) == 2)) {
Logger::log('rotate'); Logger::notice('rotate');
$photo = Photo::getPhotoForUser($page_owner_uid, $resource_id); $photo = Photo::getPhotoForUser($page_owner_uid, $resource_id);
@ -681,7 +676,7 @@ function photos_post(App $a)
$type = Images::getMimeTypeBySource($src, $filename, $type); $type = Images::getMimeTypeBySource($src, $filename, $type);
Logger::log('photos: upload: received file: ' . $filename . ' as ' . $src . ' ('. $type . ') ' . $filesize . ' bytes', Logger::DEBUG); Logger::info('photos: upload: received file: ' . $filename . ' as ' . $src . ' ('. $type . ') ' . $filesize . ' bytes');
$maximagesize = DI::config()->get('system', 'maximagesize'); $maximagesize = DI::config()->get('system', 'maximagesize');
@ -701,14 +696,14 @@ function photos_post(App $a)
return; return;
} }
Logger::log('mod/photos.php: photos_post(): loading the contents of ' . $src , Logger::DEBUG); Logger::info('loading the contents of ' . $src);
$imagedata = @file_get_contents($src); $imagedata = @file_get_contents($src);
$image = new Image($imagedata, $type); $image = new Image($imagedata, $type);
if (!$image->isValid()) { if (!$image->isValid()) {
Logger::log('mod/photos.php: photos_post(): unable to process image' , Logger::DEBUG); Logger::info('unable to process image');
notice(DI::l10n()->t('Unable to process image.')); notice(DI::l10n()->t('Unable to process image.'));
@unlink($src); @unlink($src);
$foo = 0; $foo = 0;
@ -737,7 +732,7 @@ function photos_post(App $a)
$r = Photo::store($image, $page_owner_uid, $visitor, $resource_id, $filename, $album, 0 , 0, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny); $r = Photo::store($image, $page_owner_uid, $visitor, $resource_id, $filename, $album, 0 , 0, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny);
if (!$r) { if (!$r) {
Logger::log('mod/photos.php: photos_post(): image store failed', Logger::DEBUG); Logger::info('image store failed');
notice(DI::l10n()->t('Image upload failed.')); notice(DI::l10n()->t('Image upload failed.'));
return; return;
} }
@ -1020,13 +1015,15 @@ function photos_content(App $a)
$drop_url = DI::args()->getQueryString(); $drop_url = DI::args()->getQueryString();
return Renderer::replaceMacros(Renderer::getMarkupTemplate('confirm.tpl'), [ return Renderer::replaceMacros(Renderer::getMarkupTemplate('confirm.tpl'), [
'$method' => 'post', '$l10n' => [
'$message' => DI::l10n()->t('Do you really want to delete this photo album and all its photos?'), 'message' => DI::l10n()->t('Do you really want to delete this photo album and all its photos?'),
'$confirm' => DI::l10n()->t('Delete Album'), 'confirm' => DI::l10n()->t('Delete Album'),
'$confirm_url' => $drop_url, 'cancel' => DI::l10n()->t('Cancel'),
'$confirm_name' => 'dropalbum', ],
'$method' => 'post',
'$confirm_url' => $drop_url,
'$confirm_name' => 'dropalbum',
'$confirm_value' => 'dropalbum', '$confirm_value' => 'dropalbum',
'$cancel' => DI::l10n()->t('Cancel'),
]); ]);
} }
@ -1127,13 +1124,15 @@ function photos_content(App $a)
$drop_url = DI::args()->getQueryString(); $drop_url = DI::args()->getQueryString();
return Renderer::replaceMacros(Renderer::getMarkupTemplate('confirm.tpl'), [ return Renderer::replaceMacros(Renderer::getMarkupTemplate('confirm.tpl'), [
'$method' => 'post', '$l10n' => [
'$message' => DI::l10n()->t('Do you really want to delete this photo?'), 'message' => DI::l10n()->t('Do you really want to delete this photo?'),
'$confirm' => DI::l10n()->t('Delete Photo'), 'confirm' => DI::l10n()->t('Delete Photo'),
'$confirm_url' => $drop_url, 'cancel' => DI::l10n()->t('Cancel'),
'$confirm_name' => 'delete', ],
'$method' => 'post',
'$confirm_url' => $drop_url,
'$confirm_name' => 'delete',
'$confirm_value' => 'delete', '$confirm_value' => 'delete',
'$cancel' => DI::l10n()->t('Cancel'),
]); ]);
} }

View file

@ -1,261 +0,0 @@
<?php
/**
* @copyright Copyright (C) 2010-2021, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
use Friendica\App;
use Friendica\Content\Nav;
use Friendica\Content\Pager;
use Friendica\Content\Widget;
use Friendica\Core\Renderer;
use Friendica\Core\Session;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Attach;
use Friendica\Model\Item;
use Friendica\Model\Profile;
use Friendica\Model\User;
use Friendica\Module\BaseProfile;
use Friendica\Security\Security;
use Friendica\Network\HTTPException;
function videos_init(App $a)
{
if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) {
return;
}
Nav::setSelected('home');
if (DI::args()->getArgc() > 1) {
$owner = User::getOwnerDataByNick(DI::args()->getArgv()[1]);
if (empty($owner)) {
throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
}
// If not there, create 'aside' empty
if (!isset(DI::page()['aside'])) {
DI::page()['aside'] = '';
}
DI::page()['aside'] .= Widget\VCard::getHTML($owner);
$tpl = Renderer::getMarkupTemplate("videos_head.tpl");
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl);
}
return;
}
function videos_post(App $a)
{
$user = User::getByNickname(DI::args()->getArgv()[1]);
if (!DBA::isResult($user)) {
throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
}
if (local_user() != $user['uid']) {
DI::baseUrl()->redirect('videos/' . $user['nickname']);
}
if ((DI::args()->getArgc() == 2) && !empty($_POST['delete']) && !empty($_POST['id'])) {
$video_id = $_POST['id'];
if (Attach::exists(['id' => $video_id, 'uid' => local_user()])) {
// delete the attachment
Attach::delete(['id' => $video_id, 'uid' => local_user()]);
// delete items where the attach is used
Item::deleteForUser(['`attach` LIKE ? AND `uid` = ?',
'%attach/' . $video_id . '%',
local_user()
], local_user());
}
DI::baseUrl()->redirect('videos/' . $user['nickname']);
return; // NOTREACHED
}
DI::baseUrl()->redirect('videos/' . $user['nickname']);
}
function videos_content(App $a)
{
// URLs (most aren't currently implemented):
// videos/name
// videos/name/upload
// videos/name/upload/xxxxx (xxxxx is album name)
// videos/name/album/xxxxx
// videos/name/album/xxxxx/edit
// videos/name/video/xxxxx
// videos/name/video/xxxxx/edit
$user = User::getByNickname(DI::args()->getArgv()[1]);
if (!DBA::isResult($user)) {
throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
}
if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) {
notice(DI::l10n()->t('Public access denied.'));
return;
}
if (empty($user)) {
notice(DI::l10n()->t('No videos selected') . EOL );
return;
}
$profile = Profile::getByUID($user['uid']);
//$phototypes = Photo::supportedTypes();
$_SESSION['video_return'] = DI::args()->getCommand();
//
// Parse arguments
//
if (DI::args()->getArgc() > 3) {
$datatype = DI::args()->getArgv()[2];
} elseif((DI::args()->getArgc() > 2) && (DI::args()->getArgv()[2] === 'upload')) {
$datatype = 'upload';
} else {
$datatype = 'summary';
}
//
// Setup permissions structures
//
$can_post = false;
$visitor = 0;
$remote_contact = false;
$contact_id = 0;
$community_page = (($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false);
if ((local_user()) && (local_user() == $user['uid'])) {
$can_post = true;
} elseif ($community_page && !empty(Session::getRemoteContactID($user['uid']))) {
$contact_id = Session::getRemoteContactID($user['uid']);
$can_post = true;
$remote_contact = true;
$visitor = $contact_id;
}
// perhaps they're visiting - but not a community page, so they wouldn't have write access
if (!empty(Session::getRemoteContactID($user['uid'])) && !$visitor) {
$contact_id = Session::getRemoteContactID($user['uid']);
$remote_contact = true;
}
if ($user['hidewall'] && (local_user() != $user['uid']) && !$remote_contact) {
notice(DI::l10n()->t('Access to this item is restricted.'));
return;
}
$sql_extra = Security::getPermissionsSQLByUserId($user['uid']);
$o = "";
// tabs
$_is_owner = (local_user() && (local_user() == $user['uid']));
$o .= BaseProfile::getTabsHTML($a, 'videos', $_is_owner, $user['nickname'], $profile['hide-friends']);
//
// dispatch request
//
if ($datatype === 'upload') {
return; // no uploading for now
// DELETED -- look at mod/photos.php if you want to implement
}
if ($datatype === 'album') {
return; // no albums for now
// DELETED -- look at mod/photos.php if you want to implement
}
if ($datatype === 'video') {
return; // no single video view for now
// DELETED -- look at mod/photos.php if you want to implement
}
// Default - show recent videos (no upload link for now)
//$o = '';
$total = 0;
$r = q("SELECT hash FROM `attach` WHERE `uid` = %d AND filetype LIKE '%%video%%'
$sql_extra GROUP BY hash",
intval($user['uid'])
);
if (DBA::isResult($r)) {
$total = count($r);
}
$pager = new Pager(DI::l10n(), DI::args()->getQueryString(), 20);
$r = q("SELECT hash, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`created`) AS `created`,
ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`filetype`) as `filetype`
FROM `attach`
WHERE `uid` = %d AND filetype LIKE '%%video%%'
$sql_extra GROUP BY hash ORDER BY `created` DESC LIMIT %d , %d",
intval($user['uid']),
$pager->getStart(),
$pager->getItemsPerPage()
);
$videos = [];
if (DBA::isResult($r)) {
foreach ($r as $rr) {
$alt_e = $rr['filename'];
/// @todo The album isn't part of the above query. This seems to be some unfinished code that needs to be reworked completely.
$rr['album'] = '';
$name_e = $rr['album'];
$videos[] = [
'id' => $rr['id'],
'link' => DI::baseUrl() . '/videos/' . $user['nickname'] . '/video/' . $rr['hash'],
'title' => DI::l10n()->t('View Video'),
'src' => DI::baseUrl() . '/attach/' . $rr['id'] . '?attachment=0',
'alt' => $alt_e,
'mime' => $rr['filetype'],
'album' => [
'link' => DI::baseUrl() . '/videos/' . $user['nickname'] . '/album/' . bin2hex($rr['album']),
'name' => $name_e,
'alt' => DI::l10n()->t('View Album'),
],
];
}
}
$tpl = Renderer::getMarkupTemplate('videos_recent.tpl');
$o .= Renderer::replaceMacros($tpl, [
'$title' => DI::l10n()->t('Recent Videos'),
'$can_post' => $can_post,
'$upload' => [DI::l10n()->t('Upload New Videos'), DI::baseUrl() . '/videos/' . $user['nickname'] . '/upload'],
'$videos' => $videos,
'$delete_url' => (($can_post) ? DI::baseUrl() . '/videos/' . $user['nickname'] : false)
]);
$o .= $pager->renderFull($total);
return $o;
}

View file

@ -71,6 +71,44 @@ class Protocol
const PHANTOM = 'unkn'; // Place holder const PHANTOM = 'unkn'; // Place holder
/**
* Returns whether the provided protocol supports following
*
* @param $protocol
* @return bool
* @throws HTTPException\InternalServerErrorException
*/
public static function supportsFollow($protocol): bool
{
if (in_array($protocol, self::NATIVE_SUPPORT)) {
return true;
}
$result = null;
Hook::callAll('support_follow', $result);
return $result === true;
}
/**
* Returns whether the provided protocol supports revoking inbound follows
*
* @param $protocol
* @return bool
* @throws HTTPException\InternalServerErrorException
*/
public static function supportsRevokeFollow($protocol): bool
{
if (in_array($protocol, self::NATIVE_SUPPORT)) {
return true;
}
$result = null;
Hook::callAll('support_revoke_follow', $result);
return $result === true;
}
/** /**
* Returns the address string for the provided profile URL * Returns the address string for the provided profile URL
* *
@ -212,7 +250,7 @@ class Protocol
return ActivityPub\Transmitter::sendContactUndo($contact['url'], $contact['id'], $user['uid']); return ActivityPub\Transmitter::sendContactUndo($contact['url'], $contact['id'], $user['uid']);
} }
// Catch-all addon hook // Catch-all hook for connector addons
$hook_data = [ $hook_data = [
'contact' => $contact, 'contact' => $contact,
'two_way' => $two_way, 'two_way' => $two_way,
@ -222,4 +260,36 @@ class Protocol
return $hook_data['result']; return $hook_data['result'];
} }
/**
* Revoke an incoming follow from the provided contact
*
* @param array $contact Private contact (uid != 0) array
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
public static function revokeFollow(array $contact)
{
if (empty($contact['network'])) {
throw new \InvalidArgumentException('Missing network key in contact array');
}
$protocol = $contact['network'];
if ($protocol == Protocol::DFRN && !empty($contact['protocol'])) {
$protocol = $contact['protocol'];
}
if ($protocol == Protocol::ACTIVITYPUB) {
return ActivityPub\Transmitter::sendContactReject($contact['url'], $contact['hub-verify'], $contact['uid']);
}
// Catch-all hook for connector addons
$hook_data = [
'contact' => $contact,
'result' => null,
];
Hook::callAll('revoke_follow', $hook_data);
return $hook_data['result'];
}
} }

View file

@ -849,6 +849,36 @@ class Contact
return $result; return $result;
} }
/**
* Revoke follow privileges of the remote user contact
*
* @param array $contact Contact unfriended
* @return bool|null Whether the remote operation is successful or null if no remote operation was performed
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
public static function revokeFollow(array $contact): bool
{
if (empty($contact['network'])) {
throw new \InvalidArgumentException('Empty network in contact array');
}
if (empty($contact['uid'])) {
throw new \InvalidArgumentException('Unexpected public contact record');
}
$result = Protocol::revokeFollow($contact);
// A null value here means the remote network doesn't support explicit follow revocation, we can still
// break the locally recorded relationship
if ($result !== false) {
DBA::update('contact', ['rel' => $contact['rel'] == self::FRIEND ? self::SHARING : self::NOTHING], ['id' => $contact['id']]);
}
return $result;
}
/** /**
* Marks a contact for archival after a communication issue delay * Marks a contact for archival after a communication issue delay
* *
@ -964,7 +994,6 @@ class Contact
$pm_url = ''; $pm_url = '';
$status_link = ''; $status_link = '';
$photos_link = ''; $photos_link = '';
$contact_drop_link = '';
$poke_link = ''; $poke_link = '';
if ($uid == 0) { if ($uid == 0) {
@ -1016,13 +1045,9 @@ class Contact
$posts_link = DI::baseUrl() . '/contact/' . $contact['id'] . '/conversations'; $posts_link = DI::baseUrl() . '/contact/' . $contact['id'] . '/conversations';
if (!$contact['self']) {
$contact_drop_link = DI::baseUrl() . '/contact/' . $contact['id'] . '/drop?confirm=1';
}
$follow_link = ''; $follow_link = '';
$unfollow_link = ''; $unfollow_link = '';
if (!$contact['self'] && in_array($contact['network'], Protocol::NATIVE_SUPPORT)) { if (!$contact['self'] && Protocol::supportsFollow($contact['network'])) {
if ($contact['uid'] && in_array($contact['rel'], [self::SHARING, self::FRIEND])) { if ($contact['uid'] && in_array($contact['rel'], [self::SHARING, self::FRIEND])) {
$unfollow_link = 'unfollow?url=' . urlencode($contact['url']) . '&auto=1'; $unfollow_link = 'unfollow?url=' . urlencode($contact['url']) . '&auto=1';
} elseif(!$contact['pending']) { } elseif(!$contact['pending']) {
@ -1030,10 +1055,6 @@ class Contact
} }
} }
if (!empty($follow_link) || !empty($unfollow_link)) {
$contact_drop_link = '';
}
/** /**
* Menu array: * Menu array:
* "name" => [ "Label", "link", (bool)Should the link opened in a new tab? ] * "name" => [ "Label", "link", (bool)Should the link opened in a new tab? ]
@ -1053,7 +1074,6 @@ class Contact
'photos' => [DI::l10n()->t('View Photos') , $photos_link , true], 'photos' => [DI::l10n()->t('View Photos') , $photos_link , true],
'network' => [DI::l10n()->t('Network Posts') , $posts_link , false], 'network' => [DI::l10n()->t('Network Posts') , $posts_link , false],
'edit' => [DI::l10n()->t('View Contact') , $contact_url , false], 'edit' => [DI::l10n()->t('View Contact') , $contact_url , false],
'drop' => [DI::l10n()->t('Drop Contact') , $contact_drop_link, false],
'pm' => [DI::l10n()->t('Send PM') , $pm_url , false], 'pm' => [DI::l10n()->t('Send PM') , $pm_url , false],
'poke' => [DI::l10n()->t('Poke') , $poke_link , false], 'poke' => [DI::l10n()->t('Poke') , $poke_link , false],
'follow' => [DI::l10n()->t('Connect/Follow'), $follow_link , true], 'follow' => [DI::l10n()->t('Connect/Follow'), $follow_link , true],
@ -1340,12 +1360,13 @@ class Contact
* @param bool $thread_mode * @param bool $thread_mode
* @param int $update Update mode * @param int $update Update mode
* @param int $parent Item parent ID for the update mode * @param int $parent Item parent ID for the update mode
* @param bool $only_media Only display media content
* @return string posts in HTML * @return string posts in HTML
* @throws \Exception * @throws \Exception
*/ */
public static function getPostsFromUrl($contact_url, $thread_mode = false, $update = 0, $parent = 0) public static function getPostsFromUrl($contact_url, $thread_mode = false, $update = 0, $parent = 0, bool $only_media = false)
{ {
return self::getPostsFromId(self::getIdForURL($contact_url), $thread_mode, $update, $parent); return self::getPostsFromId(self::getIdForURL($contact_url), $thread_mode, $update, $parent, $only_media);
} }
/** /**
@ -1354,14 +1375,13 @@ class Contact
* @param int $cid Contact ID * @param int $cid Contact ID
* @param bool $thread_mode * @param bool $thread_mode
* @param int $update Update mode * @param int $update Update mode
* @param int $parent Item parent ID for the update mode * @param int $parent Item parent ID for the update mode
* @param bool $only_media Only display media content
* @return string posts in HTML * @return string posts in HTML
* @throws \Exception * @throws \Exception
*/ */
public static function getPostsFromId($cid, $thread_mode = false, $update = 0, $parent = 0) public static function getPostsFromId($cid, $thread_mode = false, $update = 0, $parent = 0, bool $only_media = false)
{ {
$a = DI::app();
$contact = DBA::selectFirst('contact', ['contact-type', 'network'], ['id' => $cid]); $contact = DBA::selectFirst('contact', ['contact-type', 'network'], ['id' => $cid]);
if (!DBA::isResult($contact)) { if (!DBA::isResult($contact)) {
return ''; return '';
@ -1392,6 +1412,11 @@ class Contact
} }
} }
if ($only_media) {
$condition = DBA::mergeConditions($condition, ["`uri-id` IN (SELECT `uri-id` FROM `post-media` WHERE `type` IN (?, ?, ?))",
Post\Media::AUDIO, Post\Media::IMAGE, Post\Media::VIDEO]);
}
if (DI::mode()->isMobile()) { if (DI::mode()->isMobile()) {
$itemsPerPage = DI::pConfig()->get(local_user(), 'system', 'itemspage_mobile_network', $itemsPerPage = DI::pConfig()->get(local_user(), 'system', 'itemspage_mobile_network',
DI::config()->get('system', 'itemspage_network_mobile')); DI::config()->get('system', 'itemspage_network_mobile'));

View file

@ -68,15 +68,14 @@ class BaseProfile extends BaseModule
'id' => 'photo-tab', 'id' => 'photo-tab',
'accesskey' => 'h', 'accesskey' => 'h',
], ],
// @todo Currently deactivated since it doesn't really work [
// [ 'label' => DI::l10n()->t('Media'),
// 'label' => DI::l10n()->t('Videos'), 'url' => $baseProfileUrl . '/media',
// 'url' => DI::baseUrl() . '/videos/' . $nickname, 'sel' => $current == 'media' ? 'active' : '',
// 'sel' => $current == 'videos' ? 'active' : '', 'title' => DI::l10n()->t('Media'),
// 'title' => DI::l10n()->t('Videos'), 'id' => 'media-tab',
// 'id' => 'video-tab', 'accesskey' => 'd',
// 'accesskey' => 'v', ],
// ],
]; ];
// the calendar link for the full featured events calendar // the calendar link for the full featured events calendar

View file

@ -52,6 +52,7 @@ class Contact extends BaseModule
const TAB_PROFILE = 3; const TAB_PROFILE = 3;
const TAB_CONTACTS = 4; const TAB_CONTACTS = 4;
const TAB_ADVANCED = 5; const TAB_ADVANCED = 5;
const TAB_MEDIA = 6;
private static function batchActions() private static function batchActions()
{ {
@ -86,12 +87,6 @@ class Contact extends BaseModule
self::toggleIgnoreContact($cdata['public']); self::toggleIgnoreContact($cdata['public']);
$count_actions++; $count_actions++;
} }
if (!empty($_POST['contacts_batch_drop']) && $cdata['user']
&& self::dropContact($cdata['user'], local_user())
) {
$count_actions++;
}
} }
if ($count_actions > 0) { if ($count_actions > 0) {
info(DI::l10n()->tt('%d contact edited.', '%d contacts edited.', $count_actions)); info(DI::l10n()->tt('%d contact edited.', '%d contacts edited.', $count_actions));
@ -229,31 +224,6 @@ class Contact extends BaseModule
Model\Contact\User::setIgnored($contact_id, local_user(), $ignored); Model\Contact\User::setIgnored($contact_id, local_user(), $ignored);
} }
/**
* @param int $contact_id Id for contact with uid != 0
* @param int $uid Id for user we want to drop the contact for
* @return bool
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
private static function dropContact(int $contact_id, int $uid): bool
{
$contact = Model\Contact::getContactForUser($contact_id, $uid);
if (!DBA::isResult($contact)) {
return false;
}
$owner = Model\User::getOwnerDataById($uid);
if (!DBA::isResult($owner)) {
return false;
}
Model\Contact::terminateFriendship($owner, $contact, true);
Model\Contact::remove($contact['id']);
return true;
}
public static function content(array $parameters = [], $update = 0) public static function content(array $parameters = [], $update = 0)
{ {
if (!local_user()) { if (!local_user()) {
@ -372,7 +342,7 @@ class Contact extends BaseModule
} }
if ($cmd === 'posts') { if ($cmd === 'posts') {
return self::getPostsHTML($a, $contact_id); return self::getPostsHTML($contact_id);
} }
if ($cmd === 'conversations') { if ($cmd === 'conversations') {
@ -425,36 +395,6 @@ class Contact extends BaseModule
DI::baseUrl()->redirect('contact/' . $cdata['public']); DI::baseUrl()->redirect('contact/' . $cdata['public']);
// NOTREACHED // NOTREACHED
} }
if ($cmd === 'drop' && $cdata['user']) {
// Check if we should do HTML-based delete confirmation
if (!empty($_REQUEST['confirm'])) {
DI::page()['aside'] = '';
return Renderer::replaceMacros(Renderer::getMarkupTemplate('contact_drop_confirm.tpl'), [
'$header' => DI::l10n()->t('Drop contact'),
'$contact' => self::getContactTemplateVars($orig_record),
'$method' => 'get',
'$message' => DI::l10n()->t('Do you really want to delete this contact?'),
'$confirm' => DI::l10n()->t('Yes'),
'$confirm_url' => DI::args()->getCommand(),
'$confirm_name' => 't',
'$confirm_value' => BaseModule::getFormSecurityToken('contact_action'),
'$cancel' => DI::l10n()->t('Cancel'),
]);
}
// Now check how the user responded to the confirmation query
if (!empty($_REQUEST['canceled'])) {
DI::baseUrl()->redirect('contact');
}
if (self::dropContact($cdata['user'], local_user())) {
info(DI::l10n()->t('Contact has been removed.'));
}
DI::baseUrl()->redirect('contact');
// NOTREACHED
}
} }
$_SESSION['return_path'] = DI::args()->getQueryString(); $_SESSION['return_path'] = DI::args()->getQueryString();
@ -856,13 +796,11 @@ class Contact extends BaseModule
'$cmd' => DI::args()->getCommand(), '$cmd' => DI::args()->getCommand(),
'$contacts' => $contacts, '$contacts' => $contacts,
'$form_security_token' => BaseModule::getFormSecurityToken('contact_batch_actions'), '$form_security_token' => BaseModule::getFormSecurityToken('contact_batch_actions'),
'$contact_drop_confirm' => DI::l10n()->t('Do you really want to delete this contact?'),
'multiselect' => 1, 'multiselect' => 1,
'$batch_actions' => [ '$batch_actions' => [
'contacts_batch_update' => DI::l10n()->t('Update'), 'contacts_batch_update' => DI::l10n()->t('Update'),
'contacts_batch_block' => DI::l10n()->t('Block') . '/' . DI::l10n()->t('Unblock'), 'contacts_batch_block' => DI::l10n()->t('Block') . '/' . DI::l10n()->t('Unblock'),
'contacts_batch_ignore' => DI::l10n()->t('Ignore') . '/' . DI::l10n()->t('Unignore'), 'contacts_batch_ignore' => DI::l10n()->t('Ignore') . '/' . DI::l10n()->t('Unignore'),
'contacts_batch_drop' => DI::l10n()->t('Delete'),
], ],
'$h_batch_actions' => DI::l10n()->t('Batch Actions'), '$h_batch_actions' => DI::l10n()->t('Batch Actions'),
'$paginate' => $pager->renderFull($total), '$paginate' => $pager->renderFull($total),
@ -911,6 +849,14 @@ class Contact extends BaseModule
'id' => 'posts-tab', 'id' => 'posts-tab',
'accesskey' => 'p', 'accesskey' => 'p',
], ],
[
'label' => DI::l10n()->t('Media'),
'url' => 'contact/' . $pcid . '/media',
'sel' => (($active_tab == self::TAB_MEDIA) ? 'active' : ''),
'title' => DI::l10n()->t('Posts containing media objects'),
'id' => 'media-tab',
'accesskey' => 'd',
],
[ [
'label' => DI::l10n()->t('Profile'), 'label' => DI::l10n()->t('Profile'),
'url' => 'contact/' . $cid, 'url' => 'contact/' . $cid,
@ -979,7 +925,7 @@ class Contact extends BaseModule
return $o; return $o;
} }
private static function getPostsHTML($a, $contact_id) private static function getPostsHTML(int $contact_id)
{ {
$contact = DBA::selectFirst('contact', ['uid', 'url', 'id'], ['id' => $contact_id, 'deleted' => false]); $contact = DBA::selectFirst('contact', ['uid', 'url', 'id'], ['id' => $contact_id, 'deleted' => false]);
@ -1145,13 +1091,13 @@ class Contact extends BaseModule
'id' => 'toggle-ignore', 'id' => 'toggle-ignore',
]; ];
if ($contact['uid'] != 0) { if ($contact['uid'] != 0 && Protocol::supportsRevokeFollow($contact['network']) && in_array($contact['rel'], [Model\Contact::FOLLOWER, Model\Contact::FRIEND])) {
$contact_actions['delete'] = [ $contact_actions['revoke_follow'] = [
'label' => DI::l10n()->t('Delete'), 'label' => DI::l10n()->t('Revoke Follow'),
'url' => 'contact/' . $contact['id'] . '/drop?t=' . $formSecurityToken, 'url' => 'contact/' . $contact['id'] . '/revoke',
'title' => DI::l10n()->t('Delete contact'), 'title' => DI::l10n()->t('Revoke the follow from this contact'),
'sel' => '', 'sel' => '',
'id' => 'delete', 'id' => 'revoke_follow',
]; ];
} }

View file

@ -0,0 +1,54 @@
<?php
/**
* @copyright Copyright (C) 2010-2021, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
namespace Friendica\Module\Contact;
use Friendica\BaseModule;
use Friendica\Content\Widget;
use Friendica\DI;
use Friendica\Model;
use Friendica\Model\Contact as ModelContact;
use Friendica\Module\Contact;
use Friendica\Network\HTTPException\BadRequestException;
/**
* GUI for media posts of a contact
*/
class Media extends BaseModule
{
public static function content(array $parameters = [])
{
$cid = $parameters['id'];
$contact = Model\Contact::selectFirst([], ['id' => $cid]);
if (empty($contact)) {
throw new BadRequestException(DI::l10n()->t('Contact not found.'));
}
DI::page()['aside'] = Widget\VCard::getHTML($contact);
$o = Contact::getTabsHTML($contact, Contact::TAB_MEDIA);
$o .= ModelContact::getPostsFromUrl($contact['url'], false, 0, 0, true);
return $o;
}
}

View file

@ -0,0 +1,108 @@
<?php
/**
* @copyright Copyright (C) 2010-2021, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
namespace Friendica\Module\Contact;
use Friendica\BaseModule;
use Friendica\Content\Nav;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model;
use Friendica\Module\Contact;
use Friendica\Module\Security\Login;
use Friendica\Network\HTTPException;
class Revoke extends BaseModule
{
/** @var array */
private static $contact;
public static function init(array $parameters = [])
{
if (!local_user()) {
return;
}
$data = Model\Contact::getPublicAndUserContactID($parameters['id'], local_user());
if (!DBA::isResult($data)) {
throw new HTTPException\NotFoundException(DI::l10n()->t('Unknown contact.'));
}
if (empty($data['user'])) {
throw new HTTPException\ForbiddenException();
}
self::$contact = Model\Contact::getById($data['user']);
if (self::$contact['deleted']) {
throw new HTTPException\NotFoundException(DI::l10n()->t('Contact is deleted.'));
}
if (!empty(self::$contact['network']) && self::$contact['network'] == Protocol::PHANTOM) {
throw new HTTPException\NotFoundException(DI::l10n()->t('Contact is being deleted.'));
}
}
public static function post(array $parameters = [])
{
if (!local_user()) {
throw new HTTPException\UnauthorizedException();
}
self::checkFormSecurityTokenRedirectOnError('contact/' . $parameters['id'], 'contact_revoke');
$result = Model\Contact::revokeFollow(self::$contact);
if ($result === true) {
notice(DI::l10n()->t('Follow was successfully revoked.'));
} elseif ($result === null) {
notice(DI::l10n()->t('Follow was successfully revoked, however the remote contact won\'t be aware of this revokation.'));
} else {
notice(DI::l10n()->t('Unable to revoke follow, please try again later or contact the administrator.'));
}
DI::baseUrl()->redirect('contact/' . $parameters['id']);
}
public static function content(array $parameters = []): string
{
if (!local_user()) {
return Login::form($_SERVER['REQUEST_URI']);
}
Nav::setSelected('contact');
return Renderer::replaceMacros(Renderer::getMarkupTemplate('contact_drop_confirm.tpl'), [
'$l10n' => [
'header' => DI::l10n()->t('Revoke Follow'),
'message' => DI::l10n()->t('Do you really want to revoke this contact\'s follow? This cannot be undone and they will have to manually follow you back again.'),
'confirm' => DI::l10n()->t('Yes'),
'cancel' => DI::l10n()->t('Cancel'),
],
'$contact' => Contact::getContactTemplateVars(self::$contact),
'$method' => 'post',
'$confirm_url' => DI::args()->getCommand(),
'$confirm_name' => 'form_security_token',
'$confirm_value' => BaseModule::getFormSecurityToken('contact_revoke'),
]);
}
}

View file

@ -0,0 +1,53 @@
<?php
/**
* @copyright Copyright (C) 2010-2021, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
namespace Friendica\Module\Profile;
use Friendica\DI;
use Friendica\Model\Contact;
use Friendica\Model\Profile as ProfileModel;
use Friendica\Module\BaseProfile;
use Friendica\Network\HTTPException;
class Media extends BaseProfile
{
public static function content(array $parameters = [])
{
$a = DI::app();
$profile = ProfileModel::load($a, $parameters['nickname']);
if (empty($profile)) {
throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
}
if (!$profile['net-publish']) {
DI::page()['htmlhead'] .= '<meta content="noindex, noarchive" name="robots" />' . "\n";
}
$is_owner = local_user() == $profile['uid'];
$o = self::getTabsHTML($a, 'media', $is_owner, $profile['nickname'], $profile['hide-friends']);
$o .= Contact::getPostsFromUrl($profile['url'], false, 0, 0, true);
return $o;
}
}

View file

@ -1037,9 +1037,12 @@ class Processor
self::switchContact($cid); self::switchContact($cid);
if (DBA::exists('contact', ['id' => $cid, 'rel' => Contact::SHARING])) { $contact = Contact::getById($cid, ['rel']);
if ($contact['rel'] == Contact::SHARING) {
Contact::remove($cid); Contact::remove($cid);
Logger::info('Rejected contact request - contact removed', ['contact' => $cid, 'user' => $uid]); Logger::info('Rejected contact request - contact removed', ['contact' => $cid, 'user' => $uid]);
} elseif ($contact['rel'] == Contact::FRIEND) {
Contact::update(['rel' => Contact::FOLLOWER], ['id' => $cid]);
} else { } else {
Logger::info('Rejected contact request', ['contact' => $cid, 'user' => $uid]); Logger::info('Rejected contact request', ['contact' => $cid, 'user' => $uid]);
} }

View file

@ -2047,15 +2047,16 @@ class Transmitter
* @param string $target Target profile * @param string $target Target profile
* @param $id * @param $id
* @param integer $uid User ID * @param integer $uid User ID
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @return bool Operation success
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException * @throws \ImagickException
*/ */
public static function sendContactReject($target, $id, $uid) public static function sendContactReject($target, $id, $uid): bool
{ {
$profile = APContact::getByURL($target); $profile = APContact::getByURL($target);
if (empty($profile['inbox'])) { if (empty($profile['inbox'])) {
Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]); Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]);
return; return false;
} }
$owner = User::getOwnerDataById($uid); $owner = User::getOwnerDataById($uid);
@ -2075,7 +2076,7 @@ class Transmitter
Logger::debug('Sending reject to ' . $target . ' for user ' . $uid . ' with id ' . $id); Logger::debug('Sending reject to ' . $target . ' for user ' . $uid . ' with id ' . $id);
$signed = LDSignature::sign($data, $owner); $signed = LDSignature::sign($data, $owner);
HTTPSignature::transmit($signed, $profile['inbox'], $uid); return HTTPSignature::transmit($signed, $profile['inbox'], $uid);
} }
/** /**

View file

@ -37,6 +37,7 @@ $profileRoutes = [
'/contacts/common' => [Module\Profile\Common::class, [R::GET]], '/contacts/common' => [Module\Profile\Common::class, [R::GET]],
'/contacts[/{type}]' => [Module\Profile\Contacts::class, [R::GET]], '/contacts[/{type}]' => [Module\Profile\Contacts::class, [R::GET]],
'/status[/{category}[/{date1}[/{date2}]]]' => [Module\Profile\Status::class, [R::GET]], '/status[/{category}[/{date1}[/{date2}]]]' => [Module\Profile\Status::class, [R::GET]],
'/media' => [Module\Profile\Media::class, [R::GET]],
]; ];
return [ return [
@ -235,10 +236,11 @@ return [
'/{id:\d+}/block' => [Module\Contact::class, [R::GET]], '/{id:\d+}/block' => [Module\Contact::class, [R::GET]],
'/{id:\d+}/conversations' => [Module\Contact::class, [R::GET]], '/{id:\d+}/conversations' => [Module\Contact::class, [R::GET]],
'/{id:\d+}/contacts[/{type}]' => [Module\Contact\Contacts::class, [R::GET]], '/{id:\d+}/contacts[/{type}]' => [Module\Contact\Contacts::class, [R::GET]],
'/{id:\d+}/drop' => [Module\Contact::class, [R::GET]],
'/{id:\d+}/ignore' => [Module\Contact::class, [R::GET]], '/{id:\d+}/ignore' => [Module\Contact::class, [R::GET]],
'/{id:\d+}/media' => [Module\Contact\Media::class, [R::GET]],
'/{id:\d+}/poke' => [Module\Contact\Poke::class, [R::GET, R::POST]], '/{id:\d+}/poke' => [Module\Contact\Poke::class, [R::GET, R::POST]],
'/{id:\d+}/posts' => [Module\Contact::class, [R::GET]], '/{id:\d+}/posts' => [Module\Contact::class, [R::GET]],
'/{id:\d+}/revoke' => [Module\Contact\Revoke::class, [R::GET, R::POST]],
'/{id:\d+}/update' => [Module\Contact::class, [R::GET]], '/{id:\d+}/update' => [Module\Contact::class, [R::GET]],
'/{id:\d+}/updateprofile' => [Module\Contact::class, [R::GET]], '/{id:\d+}/updateprofile' => [Module\Contact::class, [R::GET]],
'/archived' => [Module\Contact::class, [R::GET]], '/archived' => [Module\Contact::class, [R::GET]],

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 2021.12-dev\n" "Project-Id-Version: 2021.12-dev\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-10-02 08:34-0400\n" "POT-Creation-Date: 2021-10-02 16:06-0400\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"
@ -37,8 +37,8 @@ msgstr[1] ""
msgid "Monthly posting limit of %d post reached. The post was rejected." msgid "Monthly posting limit of %d post reached. The post was rejected."
msgstr "" msgstr ""
#: include/api.php:4430 mod/photos.php:89 mod/photos.php:198 mod/photos.php:626 #: include/api.php:4430 mod/photos.php:89 mod/photos.php:198 mod/photos.php:621
#: mod/photos.php:1035 mod/photos.php:1052 mod/photos.php:1599 #: mod/photos.php:1032 mod/photos.php:1049 mod/photos.php:1598
#: src/Model/User.php:1169 src/Model/User.php:1177 src/Model/User.php:1185 #: src/Model/User.php:1169 src/Model/User.php:1177 src/Model/User.php:1185
#: src/Module/Settings/Profile/Photo/Crop.php:101 #: src/Module/Settings/Profile/Photo/Crop.php:101
#: src/Module/Settings/Profile/Photo/Crop.php:117 #: src/Module/Settings/Profile/Photo/Crop.php:117
@ -302,7 +302,7 @@ msgstr ""
#: mod/api.php:30 mod/editpost.php:38 mod/events.php:236 mod/follow.php:56 #: mod/api.php:30 mod/editpost.php:38 mod/events.php:236 mod/follow.php:56
#: mod/follow.php:130 mod/item.php:185 mod/item.php:190 mod/item.php:936 #: mod/follow.php:130 mod/item.php:185 mod/item.php:190 mod/item.php:936
#: mod/message.php:69 mod/message.php:111 mod/notes.php:44 #: mod/message.php:69 mod/message.php:111 mod/notes.php:44
#: mod/ostatus_subscribe.php:32 mod/photos.php:163 mod/photos.php:917 #: mod/ostatus_subscribe.php:32 mod/photos.php:163 mod/photos.php:912
#: mod/repair_ostatus.php:31 mod/settings.php:47 mod/settings.php:57 #: mod/repair_ostatus.php:31 mod/settings.php:47 mod/settings.php:57
#: mod/settings.php:417 mod/suggest.php:34 mod/uimport.php:32 #: mod/settings.php:417 mod/suggest.php:34 mod/uimport.php:32
#: mod/unfollow.php:35 mod/unfollow.php:50 mod/unfollow.php:82 #: mod/unfollow.php:35 mod/unfollow.php:50 mod/unfollow.php:82
@ -311,7 +311,7 @@ msgstr ""
#: mod/wallmessage.php:96 mod/wallmessage.php:120 src/Module/Attach.php:55 #: mod/wallmessage.php:96 mod/wallmessage.php:120 src/Module/Attach.php:55
#: src/Module/BaseApi.php:79 src/Module/BaseApi.php:88 #: src/Module/BaseApi.php:79 src/Module/BaseApi.php:88
#: src/Module/BaseApi.php:97 src/Module/BaseApi.php:106 #: src/Module/BaseApi.php:97 src/Module/BaseApi.php:106
#: src/Module/BaseNotifications.php:88 src/Module/Contact.php:356 #: src/Module/BaseNotifications.php:88 src/Module/Contact.php:326
#: src/Module/Contact/Advanced.php:44 src/Module/Delegation.php:118 #: src/Module/Contact/Advanced.php:44 src/Module/Delegation.php:118
#: src/Module/FollowConfirm.php:16 src/Module/FriendSuggest.php:44 #: src/Module/FollowConfirm.php:16 src/Module/FriendSuggest.php:44
#: src/Module/Group.php:45 src/Module/Group.php:90 src/Module/Invite.php:41 #: src/Module/Group.php:45 src/Module/Group.php:90 src/Module/Invite.php:41
@ -343,12 +343,11 @@ msgid "Access denied."
msgstr "" msgstr ""
#: mod/cal.php:61 mod/cal.php:78 mod/photos.php:69 mod/photos.php:143 #: mod/cal.php:61 mod/cal.php:78 mod/photos.php:69 mod/photos.php:143
#: mod/photos.php:824 mod/videos.php:49 mod/videos.php:70 mod/videos.php:111 #: mod/photos.php:819 src/Model/Profile.php:228 src/Module/HCard.php:52
#: src/Model/Profile.php:228 src/Module/HCard.php:52
#: src/Module/Profile/Common.php:41 src/Module/Profile/Common.php:52 #: src/Module/Profile/Common.php:41 src/Module/Profile/Common.php:52
#: src/Module/Profile/Contacts.php:40 src/Module/Profile/Contacts.php:50 #: src/Module/Profile/Contacts.php:40 src/Module/Profile/Contacts.php:50
#: src/Module/Profile/Status.php:58 src/Module/Register.php:256 #: src/Module/Profile/Media.php:38 src/Module/Profile/Status.php:58
#: src/Module/RemoteFollow.php:49 #: src/Module/Register.php:256 src/Module/RemoteFollow.php:49
msgid "User not found." msgid "User not found."
msgstr "" msgstr ""
@ -358,45 +357,45 @@ msgstr ""
msgid "Access to this profile has been restricted." msgid "Access to this profile has been restricted."
msgstr "" msgstr ""
#: mod/cal.php:251 mod/events.php:422 src/Content/Nav.php:194 #: mod/cal.php:251 mod/events.php:416 src/Content/Nav.php:194
#: src/Content/Nav.php:258 src/Module/BaseProfile.php:85 #: src/Content/Nav.php:258 src/Module/BaseProfile.php:84
#: src/Module/BaseProfile.php:96 view/theme/frio/theme.php:230 #: src/Module/BaseProfile.php:95 view/theme/frio/theme.php:230
#: view/theme/frio/theme.php:234 #: view/theme/frio/theme.php:234
msgid "Events" msgid "Events"
msgstr "" msgstr ""
#: mod/cal.php:252 mod/events.php:423 #: mod/cal.php:252 mod/events.php:417
msgid "View" msgid "View"
msgstr "" msgstr ""
#: mod/cal.php:253 mod/events.php:425 #: mod/cal.php:253 mod/events.php:419
msgid "Previous" msgid "Previous"
msgstr "" msgstr ""
#: mod/cal.php:254 mod/events.php:426 src/Module/Install.php:207 #: mod/cal.php:254 mod/events.php:420 src/Module/Install.php:207
msgid "Next" msgid "Next"
msgstr "" msgstr ""
#: mod/cal.php:257 mod/events.php:431 src/Model/Event.php:474 #: mod/cal.php:257 mod/events.php:425 src/Model/Event.php:474
msgid "today" msgid "today"
msgstr "" msgstr ""
#: mod/cal.php:258 mod/events.php:432 src/Model/Event.php:475 #: mod/cal.php:258 mod/events.php:426 src/Model/Event.php:475
#: src/Util/Temporal.php:330 #: src/Util/Temporal.php:330
msgid "month" msgid "month"
msgstr "" msgstr ""
#: mod/cal.php:259 mod/events.php:433 src/Model/Event.php:476 #: mod/cal.php:259 mod/events.php:427 src/Model/Event.php:476
#: src/Util/Temporal.php:331 #: src/Util/Temporal.php:331
msgid "week" msgid "week"
msgstr "" msgstr ""
#: mod/cal.php:260 mod/events.php:434 src/Model/Event.php:477 #: mod/cal.php:260 mod/events.php:428 src/Model/Event.php:477
#: src/Util/Temporal.php:332 #: src/Util/Temporal.php:332
msgid "day" msgid "day"
msgstr "" msgstr ""
#: mod/cal.php:261 mod/events.php:435 #: mod/cal.php:261 mod/events.php:429
msgid "list" msgid "list"
msgstr "" msgstr ""
@ -419,7 +418,7 @@ msgstr ""
msgid "calendar" msgid "calendar"
msgstr "" msgstr ""
#: mod/display.php:165 mod/photos.php:828 mod/videos.php:115 #: mod/display.php:165 mod/photos.php:823
#: src/Module/Conversation/Community.php:176 src/Module/Debug/Probe.php:39 #: src/Module/Conversation/Community.php:176 src/Module/Debug/Probe.php:39
#: src/Module/Debug/WebFinger.php:38 src/Module/Directory.php:49 #: src/Module/Debug/WebFinger.php:38 src/Module/Directory.php:49
#: src/Module/Search/Index.php:50 src/Module/Search/Index.php:55 #: src/Module/Search/Index.php:50 src/Module/Search/Index.php:55
@ -447,12 +446,12 @@ msgstr ""
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: mod/editpost.php:92 mod/photos.php:1375 src/Content/Conversation.php:326 #: mod/editpost.php:92 mod/photos.php:1374 src/Content/Conversation.php:326
#: src/Module/Contact/Poke.php:157 src/Object/Post.php:964 #: src/Module/Contact/Poke.php:157 src/Object/Post.php:964
msgid "Loading..." msgid "Loading..."
msgstr "" msgstr ""
#: mod/editpost.php:93 mod/message.php:201 mod/message.php:365 #: mod/editpost.php:93 mod/message.php:198 mod/message.php:362
#: mod/wallmessage.php:153 src/Content/Conversation.php:327 #: mod/wallmessage.php:153 src/Content/Conversation.php:327
msgid "Upload photo" msgid "Upload photo"
msgstr "" msgstr ""
@ -469,7 +468,7 @@ msgstr ""
msgid "attach file" msgid "attach file"
msgstr "" msgstr ""
#: mod/editpost.php:97 mod/message.php:202 mod/message.php:366 #: mod/editpost.php:97 mod/message.php:199 mod/message.php:363
#: mod/wallmessage.php:154 #: mod/wallmessage.php:154
msgid "Insert web link" msgid "Insert web link"
msgstr "" msgstr ""
@ -511,8 +510,8 @@ msgstr ""
msgid "clear location" msgid "clear location"
msgstr "" msgstr ""
#: mod/editpost.php:107 mod/message.php:203 mod/message.php:368 #: mod/editpost.php:107 mod/message.php:200 mod/message.php:365
#: mod/photos.php:1526 mod/wallmessage.php:155 src/Content/Conversation.php:355 #: mod/photos.php:1525 mod/wallmessage.php:155 src/Content/Conversation.php:355
#: src/Content/Conversation.php:689 src/Module/Item/Compose.php:165 #: src/Content/Conversation.php:689 src/Module/Item/Compose.php:165
#: src/Object/Post.php:502 #: src/Object/Post.php:502
msgid "Please wait" msgid "Please wait"
@ -544,16 +543,16 @@ msgstr ""
msgid "Example: bob@example.com, mary@example.com" msgid "Example: bob@example.com, mary@example.com"
msgstr "" msgstr ""
#: mod/editpost.php:128 mod/events.php:578 mod/photos.php:1374 #: mod/editpost.php:128 mod/events.php:566 mod/photos.php:1373
#: mod/photos.php:1430 mod/photos.php:1504 src/Content/Conversation.php:370 #: mod/photos.php:1429 mod/photos.php:1503 src/Content/Conversation.php:370
#: src/Module/Item/Compose.php:160 src/Object/Post.php:974 #: src/Module/Item/Compose.php:160 src/Object/Post.php:974
msgid "Preview" msgid "Preview"
msgstr "" msgstr ""
#: mod/editpost.php:130 mod/fbrowser.php:105 mod/fbrowser.php:134 #: mod/editpost.php:130 mod/fbrowser.php:105 mod/fbrowser.php:134
#: mod/follow.php:144 mod/photos.php:1029 mod/photos.php:1136 mod/tagrm.php:37 #: mod/follow.php:144 mod/photos.php:1021 mod/photos.php:1130 mod/tagrm.php:37
#: mod/tagrm.php:129 mod/unfollow.php:97 src/Content/Conversation.php:373 #: mod/tagrm.php:129 mod/unfollow.php:97 src/Content/Conversation.php:373
#: src/Module/Contact.php:443 src/Module/RemoteFollow.php:116 #: src/Module/Contact/Revoke.php:99 src/Module/RemoteFollow.php:116
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
@ -568,8 +567,8 @@ msgstr ""
msgid "Browser" msgid "Browser"
msgstr "" msgstr ""
#: mod/editpost.php:136 mod/events.php:583 mod/photos.php:965 #: mod/editpost.php:136 mod/events.php:571 mod/photos.php:960
#: mod/photos.php:1328 src/Content/Conversation.php:357 #: mod/photos.php:1327 src/Content/Conversation.php:357
msgid "Permissions" msgid "Permissions"
msgstr "" msgstr ""
@ -585,23 +584,23 @@ msgstr ""
msgid "Event title and start time are required." msgid "Event title and start time are required."
msgstr "" msgstr ""
#: mod/events.php:424 #: mod/events.php:418
msgid "Create New Event" msgid "Create New Event"
msgstr "" msgstr ""
#: mod/events.php:536 src/Module/Admin/Logs/View.php:96 #: mod/events.php:524 src/Module/Admin/Logs/View.php:96
msgid "Event details" msgid "Event details"
msgstr "" msgstr ""
#: mod/events.php:537 #: mod/events.php:525
msgid "Starting date and Title are required." msgid "Starting date and Title are required."
msgstr "" msgstr ""
#: mod/events.php:538 mod/events.php:543 #: mod/events.php:526 mod/events.php:531
msgid "Event Starts:" msgid "Event Starts:"
msgstr "" msgstr ""
#: mod/events.php:538 mod/events.php:570 #: mod/events.php:526 mod/events.php:558
#: src/Module/Admin/Blocklist/Server.php:79 #: src/Module/Admin/Blocklist/Server.php:79
#: src/Module/Admin/Blocklist/Server.php:80 #: src/Module/Admin/Blocklist/Server.php:80
#: src/Module/Admin/Blocklist/Server.php:99 #: src/Module/Admin/Blocklist/Server.php:99
@ -619,43 +618,43 @@ msgstr ""
msgid "Required" msgid "Required"
msgstr "" msgstr ""
#: mod/events.php:551 mod/events.php:576 #: mod/events.php:539 mod/events.php:564
msgid "Finish date/time is not known or not relevant" msgid "Finish date/time is not known or not relevant"
msgstr "" msgstr ""
#: mod/events.php:553 mod/events.php:558 #: mod/events.php:541 mod/events.php:546
msgid "Event Finishes:" msgid "Event Finishes:"
msgstr "" msgstr ""
#: mod/events.php:564 mod/events.php:577 #: mod/events.php:552 mod/events.php:565
msgid "Adjust for viewer timezone" msgid "Adjust for viewer timezone"
msgstr "" msgstr ""
#: mod/events.php:566 src/Module/Profile/Profile.php:172 #: mod/events.php:554 src/Module/Profile/Profile.php:172
#: src/Module/Settings/Profile/Index.php:236 #: src/Module/Settings/Profile/Index.php:236
msgid "Description:" msgid "Description:"
msgstr "" msgstr ""
#: mod/events.php:568 src/Content/Widget/VCard.php:98 src/Model/Event.php:86 #: mod/events.php:556 src/Content/Widget/VCard.php:98 src/Model/Event.php:86
#: src/Model/Event.php:113 src/Model/Event.php:483 src/Model/Event.php:969 #: src/Model/Event.php:113 src/Model/Event.php:483 src/Model/Event.php:969
#: src/Model/Profile.php:367 src/Module/Contact.php:623 #: src/Model/Profile.php:367 src/Module/Contact.php:563
#: src/Module/Directory.php:150 src/Module/Notifications/Introductions.php:166 #: src/Module/Directory.php:150 src/Module/Notifications/Introductions.php:166
#: src/Module/Profile/Profile.php:194 #: src/Module/Profile/Profile.php:194
msgid "Location:" msgid "Location:"
msgstr "" msgstr ""
#: mod/events.php:570 mod/events.php:572 #: mod/events.php:558 mod/events.php:560
msgid "Title:" msgid "Title:"
msgstr "" msgstr ""
#: mod/events.php:573 mod/events.php:574 #: mod/events.php:561 mod/events.php:562
msgid "Share this event" msgid "Share this event"
msgstr "" msgstr ""
#: mod/events.php:580 mod/message.php:204 mod/message.php:367 #: mod/events.php:568 mod/message.php:201 mod/message.php:364
#: mod/photos.php:947 mod/photos.php:1046 mod/photos.php:1332 #: mod/photos.php:942 mod/photos.php:1043 mod/photos.php:1331
#: mod/photos.php:1373 mod/photos.php:1429 mod/photos.php:1503 #: mod/photos.php:1372 mod/photos.php:1428 mod/photos.php:1502
#: src/Module/Admin/Item/Source.php:65 src/Module/Contact.php:581 #: src/Module/Admin/Item/Source.php:65 src/Module/Contact.php:521
#: src/Module/Contact/Advanced.php:133 src/Module/Contact/Poke.php:158 #: src/Module/Contact/Advanced.php:133 src/Module/Contact/Poke.php:158
#: src/Module/Debug/ActivityPubConversion.php:141 #: src/Module/Debug/ActivityPubConversion.php:141
#: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64 #: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64
@ -670,16 +669,16 @@ msgstr ""
msgid "Submit" msgid "Submit"
msgstr "" msgstr ""
#: mod/events.php:581 src/Module/Profile/Profile.php:248 #: mod/events.php:569 src/Module/Profile/Profile.php:248
msgid "Basic" msgid "Basic"
msgstr "" msgstr ""
#: mod/events.php:582 src/Module/Admin/Site.php:505 src/Module/Contact.php:932 #: mod/events.php:570 src/Module/Admin/Site.php:505 src/Module/Contact.php:878
#: src/Module/Profile/Profile.php:249 #: src/Module/Profile/Profile.php:249
msgid "Advanced" msgid "Advanced"
msgstr "" msgstr ""
#: mod/events.php:599 #: mod/events.php:587
msgid "Failed to remove event" msgid "Failed to remove event"
msgstr "" msgstr ""
@ -718,7 +717,7 @@ msgid "OStatus support is disabled. Contact can't be added."
msgstr "" msgstr ""
#: mod/follow.php:138 src/Content/Item.php:463 src/Content/Widget.php:76 #: mod/follow.php:138 src/Content/Item.php:463 src/Content/Widget.php:76
#: src/Model/Contact.php:1046 src/Model/Contact.php:1059 #: src/Model/Contact.php:1067 src/Model/Contact.php:1079
#: view/theme/vier/theme.php:172 #: view/theme/vier/theme.php:172
msgid "Connect/Follow" msgid "Connect/Follow"
msgstr "" msgstr ""
@ -732,13 +731,13 @@ msgid "Your Identity Address:"
msgstr "" msgstr ""
#: mod/follow.php:141 mod/unfollow.php:100 #: mod/follow.php:141 mod/unfollow.php:100
#: src/Module/Admin/Blocklist/Contact.php:100 src/Module/Contact.php:619 #: src/Module/Admin/Blocklist/Contact.php:100 src/Module/Contact.php:559
#: src/Module/Notifications/Introductions.php:108 #: src/Module/Notifications/Introductions.php:108
#: src/Module/Notifications/Introductions.php:177 #: src/Module/Notifications/Introductions.php:177
msgid "Profile URL" msgid "Profile URL"
msgstr "" msgstr ""
#: mod/follow.php:142 src/Module/Contact.php:631 #: mod/follow.php:142 src/Module/Contact.php:571
#: src/Module/Notifications/Introductions.php:170 #: src/Module/Notifications/Introductions.php:170
#: src/Module/Profile/Profile.php:207 #: src/Module/Profile/Profile.php:207
msgid "Tags:" msgid "Tags:"
@ -754,7 +753,7 @@ msgid "Add a personal note:"
msgstr "" msgstr ""
#: mod/follow.php:163 mod/unfollow.php:109 src/Module/BaseProfile.php:59 #: mod/follow.php:163 mod/unfollow.php:109 src/Module/BaseProfile.php:59
#: src/Module/Contact.php:910 #: src/Module/Contact.php:848
msgid "Status Messages and Posts" msgid "Status Messages and Posts"
msgstr "" msgstr ""
@ -976,84 +975,84 @@ msgstr ""
msgid "Message was not deleted." msgid "Message was not deleted."
msgstr "" msgstr ""
#: mod/message.php:169 #: mod/message.php:166
msgid "Conversation was not removed." msgid "Conversation was not removed."
msgstr "" msgstr ""
#: mod/message.php:183 mod/message.php:296 mod/wallmessage.php:137 #: mod/message.php:180 mod/message.php:293 mod/wallmessage.php:137
msgid "Please enter a link URL:" msgid "Please enter a link URL:"
msgstr "" msgstr ""
#: mod/message.php:192 mod/wallmessage.php:142 #: mod/message.php:189 mod/wallmessage.php:142
msgid "Send Private Message" msgid "Send Private Message"
msgstr "" msgstr ""
#: mod/message.php:193 mod/message.php:357 mod/wallmessage.php:144 #: mod/message.php:190 mod/message.php:354 mod/wallmessage.php:144
msgid "To:" msgid "To:"
msgstr "" msgstr ""
#: mod/message.php:194 mod/message.php:358 mod/wallmessage.php:145 #: mod/message.php:191 mod/message.php:355 mod/wallmessage.php:145
msgid "Subject:" msgid "Subject:"
msgstr "" msgstr ""
#: mod/message.php:198 mod/message.php:361 mod/wallmessage.php:151 #: mod/message.php:195 mod/message.php:358 mod/wallmessage.php:151
#: src/Module/Invite.php:170 #: src/Module/Invite.php:170
msgid "Your message:" msgid "Your message:"
msgstr "" msgstr ""
#: mod/message.php:232 #: mod/message.php:229
msgid "No messages." msgid "No messages."
msgstr "" msgstr ""
#: mod/message.php:288 #: mod/message.php:285
msgid "Message not available." msgid "Message not available."
msgstr "" msgstr ""
#: mod/message.php:333 #: mod/message.php:330
msgid "Delete message" msgid "Delete message"
msgstr "" msgstr ""
#: mod/message.php:335 mod/message.php:467 #: mod/message.php:332 mod/message.php:464
msgid "D, d M Y - g:i A" msgid "D, d M Y - g:i A"
msgstr "" msgstr ""
#: mod/message.php:350 mod/message.php:464 #: mod/message.php:347 mod/message.php:461
msgid "Delete conversation" msgid "Delete conversation"
msgstr "" msgstr ""
#: mod/message.php:352 #: mod/message.php:349
msgid "" msgid ""
"No secure communications available. You <strong>may</strong> be able to " "No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page." "respond from the sender's profile page."
msgstr "" msgstr ""
#: mod/message.php:356 #: mod/message.php:353
msgid "Send Reply" msgid "Send Reply"
msgstr "" msgstr ""
#: mod/message.php:438 #: mod/message.php:435
#, php-format #, php-format
msgid "Unknown sender - %s" msgid "Unknown sender - %s"
msgstr "" msgstr ""
#: mod/message.php:440 #: mod/message.php:437
#, php-format #, php-format
msgid "You and %s" msgid "You and %s"
msgstr "" msgstr ""
#: mod/message.php:442 #: mod/message.php:439
#, php-format #, php-format
msgid "%s and You" msgid "%s and You"
msgstr "" msgstr ""
#: mod/message.php:470 #: mod/message.php:467
#, php-format #, php-format
msgid "%d message" msgid "%d message"
msgid_plural "%d messages" msgid_plural "%d messages"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: mod/notes.php:51 src/Module/BaseProfile.php:107 #: mod/notes.php:51 src/Module/BaseProfile.php:106
msgid "Personal Notes" msgid "Personal Notes"
msgstr "" msgstr ""
@ -1113,11 +1112,11 @@ msgstr ""
msgid "Photo Albums" msgid "Photo Albums"
msgstr "" msgstr ""
#: mod/photos.php:112 mod/photos.php:1628 #: mod/photos.php:112 mod/photos.php:1627
msgid "Recent Photos" msgid "Recent Photos"
msgstr "" msgstr ""
#: mod/photos.php:114 mod/photos.php:1097 mod/photos.php:1630 #: mod/photos.php:114 mod/photos.php:1094 mod/photos.php:1629
msgid "Upload New Photos" msgid "Upload New Photos"
msgstr "" msgstr ""
@ -1129,236 +1128,235 @@ msgstr ""
msgid "Contact information unavailable" msgid "Contact information unavailable"
msgstr "" msgstr ""
#: mod/photos.php:209 #: mod/photos.php:204
msgid "Album not found." msgid "Album not found."
msgstr "" msgstr ""
#: mod/photos.php:267 #: mod/photos.php:262
msgid "Album successfully deleted" msgid "Album successfully deleted"
msgstr "" msgstr ""
#: mod/photos.php:269 #: mod/photos.php:264
msgid "Album was empty." msgid "Album was empty."
msgstr "" msgstr ""
#: mod/photos.php:301 #: mod/photos.php:296
msgid "Failed to delete the photo." msgid "Failed to delete the photo."
msgstr "" msgstr ""
#: mod/photos.php:576 #: mod/photos.php:571
msgid "a photo" msgid "a photo"
msgstr "" msgstr ""
#: mod/photos.php:576 #: mod/photos.php:571
#, php-format #, php-format
msgid "%1$s was tagged in %2$s by %3$s" msgid "%1$s was tagged in %2$s by %3$s"
msgstr "" msgstr ""
#: mod/photos.php:659 mod/photos.php:662 mod/photos.php:689 #: mod/photos.php:654 mod/photos.php:657 mod/photos.php:684
#: mod/wall_upload.php:216 src/Module/Settings/Profile/Photo/Index.php:60 #: mod/wall_upload.php:216 src/Module/Settings/Profile/Photo/Index.php:60
#, php-format #, php-format
msgid "Image exceeds size limit of %s" msgid "Image exceeds size limit of %s"
msgstr "" msgstr ""
#: mod/photos.php:665 #: mod/photos.php:660
msgid "Image upload didn't complete, please try again" msgid "Image upload didn't complete, please try again"
msgstr "" msgstr ""
#: mod/photos.php:668 #: mod/photos.php:663
msgid "Image file is missing" msgid "Image file is missing"
msgstr "" msgstr ""
#: mod/photos.php:673 #: mod/photos.php:668
msgid "" msgid ""
"Server can't accept new file upload at this time, please contact your " "Server can't accept new file upload at this time, please contact your "
"administrator" "administrator"
msgstr "" msgstr ""
#: mod/photos.php:697 #: mod/photos.php:692
msgid "Image file is empty." msgid "Image file is empty."
msgstr "" msgstr ""
#: mod/photos.php:712 mod/wall_upload.php:175 #: mod/photos.php:707 mod/wall_upload.php:175
#: src/Module/Settings/Profile/Photo/Index.php:69 #: src/Module/Settings/Profile/Photo/Index.php:69
msgid "Unable to process image." msgid "Unable to process image."
msgstr "" msgstr ""
#: mod/photos.php:741 mod/wall_upload.php:241 #: mod/photos.php:736 mod/wall_upload.php:241
#: src/Module/Settings/Profile/Photo/Index.php:96 #: src/Module/Settings/Profile/Photo/Index.php:96
msgid "Image upload failed." msgid "Image upload failed."
msgstr "" msgstr ""
#: mod/photos.php:833 #: mod/photos.php:828
msgid "No photos selected" msgid "No photos selected"
msgstr "" msgstr ""
#: mod/photos.php:902 mod/videos.php:166 #: mod/photos.php:897
msgid "Access to this item is restricted." msgid "Access to this item is restricted."
msgstr "" msgstr ""
#: mod/photos.php:957 #: mod/photos.php:952
msgid "Upload Photos" msgid "Upload Photos"
msgstr "" msgstr ""
#: mod/photos.php:961 mod/photos.php:1042 #: mod/photos.php:956 mod/photos.php:1039
msgid "New album name: " msgid "New album name: "
msgstr "" msgstr ""
#: mod/photos.php:962 #: mod/photos.php:957
msgid "or select existing album:" msgid "or select existing album:"
msgstr "" msgstr ""
#: mod/photos.php:963 #: mod/photos.php:958
msgid "Do not show a status post for this upload" msgid "Do not show a status post for this upload"
msgstr "" msgstr ""
#: mod/photos.php:1024 #: mod/photos.php:1019
msgid "Do you really want to delete this photo album and all its photos?" msgid "Do you really want to delete this photo album and all its photos?"
msgstr "" msgstr ""
#: mod/photos.php:1025 mod/photos.php:1047 #: mod/photos.php:1020 mod/photos.php:1044
msgid "Delete Album" msgid "Delete Album"
msgstr "" msgstr ""
#: mod/photos.php:1053 #: mod/photos.php:1050
msgid "Edit Album" msgid "Edit Album"
msgstr "" msgstr ""
#: mod/photos.php:1054 #: mod/photos.php:1051
msgid "Drop Album" msgid "Drop Album"
msgstr "" msgstr ""
#: mod/photos.php:1059 #: mod/photos.php:1056
msgid "Show Newest First" msgid "Show Newest First"
msgstr "" msgstr ""
#: mod/photos.php:1061 #: mod/photos.php:1058
msgid "Show Oldest First" msgid "Show Oldest First"
msgstr "" msgstr ""
#: mod/photos.php:1082 mod/photos.php:1613 #: mod/photos.php:1079 mod/photos.php:1612
msgid "View Photo" msgid "View Photo"
msgstr "" msgstr ""
#: mod/photos.php:1119 #: mod/photos.php:1116
msgid "Permission denied. Access to this item may be restricted." msgid "Permission denied. Access to this item may be restricted."
msgstr "" msgstr ""
#: mod/photos.php:1121 #: mod/photos.php:1118
msgid "Photo not available" msgid "Photo not available"
msgstr "" msgstr ""
#: mod/photos.php:1131 #: mod/photos.php:1128
msgid "Do you really want to delete this photo?" msgid "Do you really want to delete this photo?"
msgstr "" msgstr ""
#: mod/photos.php:1132 mod/photos.php:1333 #: mod/photos.php:1129 mod/photos.php:1332
msgid "Delete Photo" msgid "Delete Photo"
msgstr "" msgstr ""
#: mod/photos.php:1224 #: mod/photos.php:1223
msgid "View photo" msgid "View photo"
msgstr "" msgstr ""
#: mod/photos.php:1226 #: mod/photos.php:1225
msgid "Edit photo" msgid "Edit photo"
msgstr "" msgstr ""
#: mod/photos.php:1227 #: mod/photos.php:1226
msgid "Delete photo" msgid "Delete photo"
msgstr "" msgstr ""
#: mod/photos.php:1228 #: mod/photos.php:1227
msgid "Use as profile photo" msgid "Use as profile photo"
msgstr "" msgstr ""
#: mod/photos.php:1235 #: mod/photos.php:1234
msgid "Private Photo" msgid "Private Photo"
msgstr "" msgstr ""
#: mod/photos.php:1241 #: mod/photos.php:1240
msgid "View Full Size" msgid "View Full Size"
msgstr "" msgstr ""
#: mod/photos.php:1301 #: mod/photos.php:1300
msgid "Tags: " msgid "Tags: "
msgstr "" msgstr ""
#: mod/photos.php:1304 #: mod/photos.php:1303
msgid "[Select tags to remove]" msgid "[Select tags to remove]"
msgstr "" msgstr ""
#: mod/photos.php:1319 #: mod/photos.php:1318
msgid "New album name" msgid "New album name"
msgstr "" msgstr ""
#: mod/photos.php:1320 #: mod/photos.php:1319
msgid "Caption" msgid "Caption"
msgstr "" msgstr ""
#: mod/photos.php:1321 #: mod/photos.php:1320
msgid "Add a Tag" msgid "Add a Tag"
msgstr "" msgstr ""
#: mod/photos.php:1321 #: mod/photos.php:1320
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
msgstr "" msgstr ""
#: mod/photos.php:1322 #: mod/photos.php:1321
msgid "Do not rotate" msgid "Do not rotate"
msgstr "" msgstr ""
#: mod/photos.php:1323 #: mod/photos.php:1322
msgid "Rotate CW (right)" msgid "Rotate CW (right)"
msgstr "" msgstr ""
#: mod/photos.php:1324 #: mod/photos.php:1323
msgid "Rotate CCW (left)" msgid "Rotate CCW (left)"
msgstr "" msgstr ""
#: mod/photos.php:1370 mod/photos.php:1426 mod/photos.php:1500 #: mod/photos.php:1369 mod/photos.php:1425 mod/photos.php:1499
#: src/Module/Contact.php:1062 src/Module/Item/Compose.php:148 #: src/Module/Contact.php:1008 src/Module/Item/Compose.php:148
#: src/Object/Post.php:960 #: src/Object/Post.php:960
msgid "This is you" msgid "This is you"
msgstr "" msgstr ""
#: mod/photos.php:1372 mod/photos.php:1428 mod/photos.php:1502 #: mod/photos.php:1371 mod/photos.php:1427 mod/photos.php:1501
#: src/Object/Post.php:496 src/Object/Post.php:962 #: src/Object/Post.php:496 src/Object/Post.php:962
msgid "Comment" msgid "Comment"
msgstr "" msgstr ""
#: mod/photos.php:1461 src/Content/Conversation.php:615 src/Object/Post.php:227 #: mod/photos.php:1460 src/Content/Conversation.php:615 src/Object/Post.php:227
msgid "Select" msgid "Select"
msgstr "" msgstr ""
#: mod/photos.php:1462 mod/settings.php:573 src/Content/Conversation.php:616 #: mod/photos.php:1461 mod/settings.php:573 src/Content/Conversation.php:616
#: src/Module/Admin/Users/Active.php:139 src/Module/Admin/Users/Blocked.php:140 #: src/Module/Admin/Users/Active.php:139 src/Module/Admin/Users/Blocked.php:140
#: src/Module/Admin/Users/Index.php:153 src/Module/Contact.php:865 #: src/Module/Admin/Users/Index.php:153
#: src/Module/Contact.php:1150
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: mod/photos.php:1523 src/Object/Post.php:349 #: mod/photos.php:1522 src/Object/Post.php:349
msgid "Like" msgid "Like"
msgstr "" msgstr ""
#: mod/photos.php:1524 src/Object/Post.php:349 #: mod/photos.php:1523 src/Object/Post.php:349
msgid "I like this (toggle)" msgid "I like this (toggle)"
msgstr "" msgstr ""
#: mod/photos.php:1525 src/Object/Post.php:350 #: mod/photos.php:1524 src/Object/Post.php:350
msgid "Dislike" msgid "Dislike"
msgstr "" msgstr ""
#: mod/photos.php:1527 src/Object/Post.php:350 #: mod/photos.php:1526 src/Object/Post.php:350
msgid "I don't like this (toggle)" msgid "I don't like this (toggle)"
msgstr "" msgstr ""
#: mod/photos.php:1549 #: mod/photos.php:1548
msgid "Map" msgid "Map"
msgstr "" msgstr ""
#: mod/photos.php:1619 mod/videos.php:243 #: mod/photos.php:1618
msgid "View Album" msgid "View Album"
msgstr "" msgstr ""
@ -1381,8 +1379,8 @@ msgstr ""
#: mod/redir.php:55 mod/redir.php:129 src/Module/Contact/Advanced.php:54 #: mod/redir.php:55 mod/redir.php:129 src/Module/Contact/Advanced.php:54
#: src/Module/Contact/Advanced.php:105 src/Module/Contact/Contacts.php:36 #: src/Module/Contact/Advanced.php:105 src/Module/Contact/Contacts.php:36
#: src/Module/FriendSuggest.php:54 src/Module/FriendSuggest.php:93 #: src/Module/Contact/Media.php:43 src/Module/FriendSuggest.php:54
#: src/Module/Group.php:105 #: src/Module/FriendSuggest.php:93 src/Module/Group.php:105
msgid "Contact not found." msgid "Contact not found."
msgstr "" msgstr ""
@ -2308,22 +2306,6 @@ msgstr ""
msgid "Unable to unfollow this contact, please contact your administrator" msgid "Unable to unfollow this contact, please contact your administrator"
msgstr "" msgstr ""
#: mod/videos.php:120
msgid "No videos selected"
msgstr ""
#: mod/videos.php:236
msgid "View Video"
msgstr ""
#: mod/videos.php:251
msgid "Recent Videos"
msgstr ""
#: mod/videos.php:253
msgid "Upload New Videos"
msgstr ""
#: mod/wall_attach.php:42 mod/wall_attach.php:49 mod/wall_attach.php:87 #: mod/wall_attach.php:42 mod/wall_attach.php:49 mod/wall_attach.php:87
#: mod/wall_upload.php:52 mod/wall_upload.php:63 mod/wall_upload.php:108 #: mod/wall_upload.php:52 mod/wall_upload.php:63 mod/wall_upload.php:108
#: mod/wall_upload.php:159 mod/wall_upload.php:162 #: mod/wall_upload.php:159 mod/wall_upload.php:162
@ -2413,16 +2395,16 @@ msgid "All contacts"
msgstr "" msgstr ""
#: src/BaseModule.php:212 src/Content/Widget.php:238 src/Core/ACL.php:195 #: src/BaseModule.php:212 src/Content/Widget.php:238 src/Core/ACL.php:195
#: src/Module/Contact.php:831 src/Module/PermissionTooltip.php:77 #: src/Module/Contact.php:771 src/Module/PermissionTooltip.php:77
#: src/Module/PermissionTooltip.php:99 #: src/Module/PermissionTooltip.php:99
msgid "Followers" msgid "Followers"
msgstr "" msgstr ""
#: src/BaseModule.php:217 src/Content/Widget.php:239 src/Module/Contact.php:832 #: src/BaseModule.php:217 src/Content/Widget.php:239 src/Module/Contact.php:772
msgid "Following" msgid "Following"
msgstr "" msgstr ""
#: src/BaseModule.php:222 src/Content/Widget.php:240 src/Module/Contact.php:833 #: src/BaseModule.php:222 src/Content/Widget.php:240 src/Module/Contact.php:773
msgid "Mutual friends" msgid "Mutual friends"
msgstr "" msgstr ""
@ -3020,43 +3002,43 @@ msgstr ""
msgid "Follow Thread" msgid "Follow Thread"
msgstr "" msgstr ""
#: src/Content/Item.php:443 src/Model/Contact.php:1051 #: src/Content/Item.php:443 src/Model/Contact.php:1072
msgid "View Status" msgid "View Status"
msgstr "" msgstr ""
#: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:977 #: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:1006
#: src/Model/Contact.php:1043 src/Model/Contact.php:1052 #: src/Model/Contact.php:1064 src/Model/Contact.php:1073
#: src/Module/Directory.php:160 src/Module/Settings/Profile/Index.php:223 #: src/Module/Directory.php:160 src/Module/Settings/Profile/Index.php:223
msgid "View Profile" msgid "View Profile"
msgstr "" msgstr ""
#: src/Content/Item.php:445 src/Model/Contact.php:1053 #: src/Content/Item.php:445 src/Model/Contact.php:1074
msgid "View Photos" msgid "View Photos"
msgstr "" msgstr ""
#: src/Content/Item.php:446 src/Model/Contact.php:1044 #: src/Content/Item.php:446 src/Model/Contact.php:1065
#: src/Model/Contact.php:1054 #: src/Model/Contact.php:1075
msgid "Network Posts" msgid "Network Posts"
msgstr "" msgstr ""
#: src/Content/Item.php:447 src/Model/Contact.php:1045 #: src/Content/Item.php:447 src/Model/Contact.php:1066
#: src/Model/Contact.php:1055 #: src/Model/Contact.php:1076
msgid "View Contact" msgid "View Contact"
msgstr "" msgstr ""
#: src/Content/Item.php:448 src/Model/Contact.php:1057 #: src/Content/Item.php:448 src/Model/Contact.php:1077
msgid "Send PM" msgid "Send PM"
msgstr "" msgstr ""
#: src/Content/Item.php:449 src/Module/Admin/Blocklist/Contact.php:84 #: src/Content/Item.php:449 src/Module/Admin/Blocklist/Contact.php:84
#: src/Module/Admin/Users/Active.php:140 src/Module/Admin/Users/Index.php:154 #: src/Module/Admin/Users/Active.php:140 src/Module/Admin/Users/Index.php:154
#: src/Module/Contact.php:602 src/Module/Contact.php:863 #: src/Module/Contact.php:542 src/Module/Contact.php:802
#: src/Module/Contact.php:1133 #: src/Module/Contact.php:1079
msgid "Block" msgid "Block"
msgstr "" msgstr ""
#: src/Content/Item.php:450 src/Module/Contact.php:603 #: src/Content/Item.php:450 src/Module/Contact.php:543
#: src/Module/Contact.php:864 src/Module/Contact.php:1141 #: src/Module/Contact.php:803 src/Module/Contact.php:1087
#: src/Module/Notifications/Introductions.php:113 #: src/Module/Notifications/Introductions.php:113
#: src/Module/Notifications/Introductions.php:185 #: src/Module/Notifications/Introductions.php:185
#: src/Module/Notifications/Notification.php:59 #: src/Module/Notifications/Notification.php:59
@ -3067,7 +3049,7 @@ msgstr ""
msgid "Languages" msgid "Languages"
msgstr "" msgstr ""
#: src/Content/Item.php:458 src/Model/Contact.php:1058 #: src/Content/Item.php:458 src/Model/Contact.php:1078
msgid "Poke" msgid "Poke"
msgstr "" msgstr ""
@ -3105,7 +3087,7 @@ msgid "Sign in"
msgstr "" msgstr ""
#: src/Content/Nav.php:190 src/Module/BaseProfile.php:56 #: src/Content/Nav.php:190 src/Module/BaseProfile.php:56
#: src/Module/Contact.php:634 src/Module/Contact.php:899 #: src/Module/Contact.php:574 src/Module/Contact.php:837
#: src/Module/Settings/TwoFactor/Index.php:112 view/theme/frio/theme.php:226 #: src/Module/Settings/TwoFactor/Index.php:112 view/theme/frio/theme.php:226
msgid "Status" msgid "Status"
msgstr "" msgstr ""
@ -3116,8 +3098,8 @@ msgid "Your posts and conversations"
msgstr "" msgstr ""
#: src/Content/Nav.php:191 src/Module/BaseProfile.php:48 #: src/Content/Nav.php:191 src/Module/BaseProfile.php:48
#: src/Module/BaseSettings.php:57 src/Module/Contact.php:636 #: src/Module/BaseSettings.php:57 src/Module/Contact.php:576
#: src/Module/Contact.php:915 src/Module/Profile/Profile.php:241 #: src/Module/Contact.php:861 src/Module/Profile/Profile.php:241
#: src/Module/Welcome.php:57 view/theme/frio/theme.php:227 #: src/Module/Welcome.php:57 view/theme/frio/theme.php:227
msgid "Profile" msgid "Profile"
msgstr "" msgstr ""
@ -3202,9 +3184,9 @@ msgid "Tags"
msgstr "" msgstr ""
#: src/Content/Nav.php:235 src/Content/Nav.php:294 #: src/Content/Nav.php:235 src/Content/Nav.php:294
#: src/Content/Text/HTML.php:902 src/Module/BaseProfile.php:126 #: src/Content/Text/HTML.php:902 src/Module/BaseProfile.php:125
#: src/Module/BaseProfile.php:129 src/Module/Contact.php:834 #: src/Module/BaseProfile.php:128 src/Module/Contact.php:774
#: src/Module/Contact.php:922 view/theme/frio/theme.php:237 #: src/Module/Contact.php:868 view/theme/frio/theme.php:237
msgid "Contacts" msgid "Contacts"
msgstr "" msgstr ""
@ -3216,8 +3198,8 @@ msgstr ""
msgid "Conversations on this and other servers" msgid "Conversations on this and other servers"
msgstr "" msgstr ""
#: src/Content/Nav.php:258 src/Module/BaseProfile.php:88 #: src/Content/Nav.php:258 src/Module/BaseProfile.php:87
#: src/Module/BaseProfile.php:99 view/theme/frio/theme.php:234 #: src/Module/BaseProfile.php:98 view/theme/frio/theme.php:234
msgid "Events and Calendar" msgid "Events and Calendar"
msgstr "" msgstr ""
@ -3434,7 +3416,7 @@ msgstr ""
msgid "Examples: Robert Morgenstein, Fishing" msgid "Examples: Robert Morgenstein, Fishing"
msgstr "" msgstr ""
#: src/Content/Widget.php:78 src/Module/Contact.php:855 #: src/Content/Widget.php:78 src/Module/Contact.php:795
#: src/Module/Directory.php:99 view/theme/vier/theme.php:174 #: src/Module/Directory.php:99 view/theme/vier/theme.php:174
msgid "Find" msgid "Find"
msgstr "" msgstr ""
@ -3461,7 +3443,7 @@ msgid "Local Directory"
msgstr "" msgstr ""
#: src/Content/Widget.php:214 src/Model/Group.php:535 #: src/Content/Widget.php:214 src/Model/Group.php:535
#: src/Module/Contact.php:818 src/Module/Welcome.php:76 #: src/Module/Contact.php:758 src/Module/Welcome.php:76
msgid "Groups" msgid "Groups"
msgstr "" msgstr ""
@ -3473,7 +3455,7 @@ msgstr ""
msgid "Relationships" msgid "Relationships"
msgstr "" msgstr ""
#: src/Content/Widget.php:247 src/Module/Contact.php:770 #: src/Content/Widget.php:247 src/Module/Contact.php:710
#: src/Module/Group.php:292 #: src/Module/Group.php:292
msgid "All Contacts" msgid "All Contacts"
msgstr "" msgstr ""
@ -3517,7 +3499,7 @@ msgstr ""
msgid "Organisations" msgid "Organisations"
msgstr "" msgstr ""
#: src/Content/Widget.php:529 src/Model/Contact.php:1474 #: src/Content/Widget.php:529 src/Model/Contact.php:1499
msgid "News" msgid "News"
msgstr "" msgstr ""
@ -3572,12 +3554,12 @@ msgid "More Trending Tags"
msgstr "" msgstr ""
#: src/Content/Widget/VCard.php:96 src/Model/Profile.php:372 #: src/Content/Widget/VCard.php:96 src/Model/Profile.php:372
#: src/Module/Contact.php:625 src/Module/Profile/Profile.php:176 #: src/Module/Contact.php:565 src/Module/Profile/Profile.php:176
msgid "XMPP:" msgid "XMPP:"
msgstr "" msgstr ""
#: src/Content/Widget/VCard.php:97 src/Model/Profile.php:373 #: src/Content/Widget/VCard.php:97 src/Model/Profile.php:373
#: src/Module/Contact.php:627 src/Module/Profile/Profile.php:180 #: src/Module/Contact.php:567 src/Module/Profile/Profile.php:180
msgid "Matrix:" msgid "Matrix:"
msgstr "" msgstr ""
@ -4381,85 +4363,81 @@ msgstr ""
msgid "Legacy module file not found: %s" msgid "Legacy module file not found: %s"
msgstr "" msgstr ""
#: src/Model/Contact.php:1047 src/Model/Contact.php:1060 #: src/Model/Contact.php:1068 src/Model/Contact.php:1080
msgid "UnFollow" msgid "UnFollow"
msgstr "" msgstr ""
#: src/Model/Contact.php:1056 #: src/Model/Contact.php:1086 src/Module/Admin/Users/Pending.php:107
msgid "Drop Contact"
msgstr ""
#: src/Model/Contact.php:1066 src/Module/Admin/Users/Pending.php:107
#: src/Module/Notifications/Introductions.php:111 #: src/Module/Notifications/Introductions.php:111
#: src/Module/Notifications/Introductions.php:183 #: src/Module/Notifications/Introductions.php:183
msgid "Approve" msgid "Approve"
msgstr "" msgstr ""
#: src/Model/Contact.php:1470 #: src/Model/Contact.php:1495
msgid "Organisation" msgid "Organisation"
msgstr "" msgstr ""
#: src/Model/Contact.php:1478 #: src/Model/Contact.php:1503
msgid "Forum" msgid "Forum"
msgstr "" msgstr ""
#: src/Model/Contact.php:2334 #: src/Model/Contact.php:2359
msgid "Disallowed profile URL." msgid "Disallowed profile URL."
msgstr "" msgstr ""
#: src/Model/Contact.php:2339 src/Module/Friendica.php:81 #: src/Model/Contact.php:2364 src/Module/Friendica.php:81
msgid "Blocked domain" msgid "Blocked domain"
msgstr "" msgstr ""
#: src/Model/Contact.php:2344 #: src/Model/Contact.php:2369
msgid "Connect URL missing." msgid "Connect URL missing."
msgstr "" msgstr ""
#: src/Model/Contact.php:2353 #: src/Model/Contact.php:2378
msgid "" msgid ""
"The contact could not be added. Please check the relevant network " "The contact could not be added. Please check the relevant network "
"credentials in your Settings -> Social Networks page." "credentials in your Settings -> Social Networks page."
msgstr "" msgstr ""
#: src/Model/Contact.php:2390 #: src/Model/Contact.php:2415
msgid "The profile address specified does not provide adequate information." msgid "The profile address specified does not provide adequate information."
msgstr "" msgstr ""
#: src/Model/Contact.php:2392 #: src/Model/Contact.php:2417
msgid "No compatible communication protocols or feeds were discovered." msgid "No compatible communication protocols or feeds were discovered."
msgstr "" msgstr ""
#: src/Model/Contact.php:2395 #: src/Model/Contact.php:2420
msgid "An author or name was not found." msgid "An author or name was not found."
msgstr "" msgstr ""
#: src/Model/Contact.php:2398 #: src/Model/Contact.php:2423
msgid "No browser URL could be matched to this address." msgid "No browser URL could be matched to this address."
msgstr "" msgstr ""
#: src/Model/Contact.php:2401 #: src/Model/Contact.php:2426
msgid "" msgid ""
"Unable to match @-style Identity Address with a known protocol or email " "Unable to match @-style Identity Address with a known protocol or email "
"contact." "contact."
msgstr "" msgstr ""
#: src/Model/Contact.php:2402 #: src/Model/Contact.php:2427
msgid "Use mailto: in front of address to force email check." msgid "Use mailto: in front of address to force email check."
msgstr "" msgstr ""
#: src/Model/Contact.php:2408 #: src/Model/Contact.php:2433
msgid "" msgid ""
"The profile address specified belongs to a network which has been disabled " "The profile address specified belongs to a network which has been disabled "
"on this site." "on this site."
msgstr "" msgstr ""
#: src/Model/Contact.php:2413 #: src/Model/Contact.php:2438
msgid "" msgid ""
"Limited profile. This person will be unable to receive direct/personal " "Limited profile. This person will be unable to receive direct/personal "
"notifications from you." "notifications from you."
msgstr "" msgstr ""
#: src/Model/Contact.php:2472 #: src/Model/Contact.php:2497
msgid "Unable to retrieve contact information." msgid "Unable to retrieve contact information."
msgstr "" msgstr ""
@ -4729,7 +4707,7 @@ msgstr ""
msgid "Homepage:" msgid "Homepage:"
msgstr "" msgstr ""
#: src/Model/Profile.php:371 src/Module/Contact.php:629 #: src/Model/Profile.php:371 src/Module/Contact.php:569
#: src/Module/Notifications/Introductions.php:168 #: src/Module/Notifications/Introductions.php:168
msgid "About:" msgid "About:"
msgstr "" msgstr ""
@ -5130,8 +5108,8 @@ msgstr ""
msgid "List of active accounts" msgid "List of active accounts"
msgstr "" msgstr ""
#: src/Module/Admin/BaseUsers.php:66 src/Module/Contact.php:778 #: src/Module/Admin/BaseUsers.php:66 src/Module/Contact.php:718
#: src/Module/Contact.php:838 #: src/Module/Contact.php:778
msgid "Pending" msgid "Pending"
msgstr "" msgstr ""
@ -5139,8 +5117,8 @@ msgstr ""
msgid "List of pending registrations" msgid "List of pending registrations"
msgstr "" msgstr ""
#: src/Module/Admin/BaseUsers.php:74 src/Module/Contact.php:786 #: src/Module/Admin/BaseUsers.php:74 src/Module/Contact.php:726
#: src/Module/Contact.php:839 #: src/Module/Contact.php:779
msgid "Blocked" msgid "Blocked"
msgstr "" msgstr ""
@ -5197,8 +5175,8 @@ msgstr ""
#: src/Module/Admin/Blocklist/Contact.php:85 #: src/Module/Admin/Blocklist/Contact.php:85
#: src/Module/Admin/Users/Blocked.php:142 src/Module/Admin/Users/Index.php:156 #: src/Module/Admin/Users/Blocked.php:142 src/Module/Admin/Users/Index.php:156
#: src/Module/Contact.php:602 src/Module/Contact.php:863 #: src/Module/Contact.php:542 src/Module/Contact.php:802
#: src/Module/Contact.php:1133 #: src/Module/Contact.php:1079
msgid "Unblock" msgid "Unblock"
msgstr "" msgstr ""
@ -6544,7 +6522,7 @@ msgid ""
"received." "received."
msgstr "" msgstr ""
#: src/Module/Admin/Site.php:609 src/Module/Contact.php:531 #: src/Module/Admin/Site.php:609 src/Module/Contact.php:471
#: src/Module/Settings/TwoFactor/Index.php:118 #: src/Module/Settings/TwoFactor/Index.php:118
msgid "Disabled" msgid "Disabled"
msgstr "" msgstr ""
@ -7115,8 +7093,8 @@ msgstr ""
msgid "Posts from %s can't be unshared" msgid "Posts from %s can't be unshared"
msgstr "" msgstr ""
#: src/Module/Api/Twitter/ContactEndpoint.php:63 src/Module/Contact.php:371 #: src/Module/Api/Twitter/ContactEndpoint.php:63 src/Module/Contact.php:341
#: src/Module/Contact.php:386 #: src/Module/Contact.php:356
msgid "Contact not found" msgid "Contact not found"
msgstr "" msgstr ""
@ -7237,23 +7215,28 @@ msgstr ""
msgid "Too Many Requests" msgid "Too Many Requests"
msgstr "" msgstr ""
#: src/Module/BaseProfile.php:51 src/Module/Contact.php:918 #: src/Module/BaseProfile.php:51 src/Module/Contact.php:864
msgid "Profile Details" msgid "Profile Details"
msgstr "" msgstr ""
#: src/Module/BaseProfile.php:110 #: src/Module/BaseProfile.php:72 src/Module/BaseProfile.php:75
#: src/Module/Contact.php:853
msgid "Media"
msgstr ""
#: src/Module/BaseProfile.php:109
msgid "Only You Can See This" msgid "Only You Can See This"
msgstr "" msgstr ""
#: src/Module/BaseProfile.php:115 src/Module/Profile/Schedule.php:82 #: src/Module/BaseProfile.php:114 src/Module/Profile/Schedule.php:82
msgid "Scheduled Posts" msgid "Scheduled Posts"
msgstr "" msgstr ""
#: src/Module/BaseProfile.php:118 #: src/Module/BaseProfile.php:117
msgid "Posts that are scheduled for publishing" msgid "Posts that are scheduled for publishing"
msgstr "" msgstr ""
#: src/Module/BaseProfile.php:137 src/Module/BaseProfile.php:140 #: src/Module/BaseProfile.php:136 src/Module/BaseProfile.php:139
msgid "Tips for New Members" msgid "Tips for New Members"
msgstr "" msgstr ""
@ -7304,366 +7287,357 @@ msgstr ""
msgid "The post was created" msgid "The post was created"
msgstr "" msgstr ""
#: src/Module/Contact.php:97 #: src/Module/Contact.php:92
#, php-format #, php-format
msgid "%d contact edited." msgid "%d contact edited."
msgid_plural "%d contacts edited." msgid_plural "%d contacts edited."
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/Module/Contact.php:122 #: src/Module/Contact.php:117
msgid "Could not access contact record." msgid "Could not access contact record."
msgstr "" msgstr ""
#: src/Module/Contact.php:158 #: src/Module/Contact.php:153
msgid "Failed to update contact record." msgid "Failed to update contact record."
msgstr "" msgstr ""
#: src/Module/Contact.php:403 #: src/Module/Contact.php:373
msgid "You can't block yourself" msgid "You can't block yourself"
msgstr "" msgstr ""
#: src/Module/Contact.php:409 #: src/Module/Contact.php:379
msgid "Contact has been blocked" msgid "Contact has been blocked"
msgstr "" msgstr ""
#: src/Module/Contact.php:409 #: src/Module/Contact.php:379
msgid "Contact has been unblocked" msgid "Contact has been unblocked"
msgstr "" msgstr ""
#: src/Module/Contact.php:417 #: src/Module/Contact.php:387
msgid "You can't ignore yourself" msgid "You can't ignore yourself"
msgstr "" msgstr ""
#: src/Module/Contact.php:423 #: src/Module/Contact.php:393
msgid "Contact has been ignored" msgid "Contact has been ignored"
msgstr "" msgstr ""
#: src/Module/Contact.php:423 #: src/Module/Contact.php:393
msgid "Contact has been unignored" msgid "Contact has been unignored"
msgstr "" msgstr ""
#: src/Module/Contact.php:435 #: src/Module/Contact.php:413
msgid "Drop contact"
msgstr ""
#: src/Module/Contact.php:438 src/Module/Contact.php:859
msgid "Do you really want to delete this contact?"
msgstr ""
#: src/Module/Contact.php:439 src/Module/Notifications/Introductions.php:123
#: src/Module/OAuth/Acknowledge.php:47 src/Module/Register.php:117
msgid "Yes"
msgstr ""
#: src/Module/Contact.php:452
msgid "Contact has been removed."
msgstr ""
#: src/Module/Contact.php:473
#, php-format #, php-format
msgid "You are mutual friends with %s" msgid "You are mutual friends with %s"
msgstr "" msgstr ""
#: src/Module/Contact.php:477 #: src/Module/Contact.php:417
#, php-format #, php-format
msgid "You are sharing with %s" msgid "You are sharing with %s"
msgstr "" msgstr ""
#: src/Module/Contact.php:481 #: src/Module/Contact.php:421
#, php-format #, php-format
msgid "%s is sharing with you" msgid "%s is sharing with you"
msgstr "" msgstr ""
#: src/Module/Contact.php:505 #: src/Module/Contact.php:445
msgid "Private communications are not available for this contact." msgid "Private communications are not available for this contact."
msgstr "" msgstr ""
#: src/Module/Contact.php:507 #: src/Module/Contact.php:447
msgid "Never" msgid "Never"
msgstr "" msgstr ""
#: src/Module/Contact.php:510 #: src/Module/Contact.php:450
msgid "(Update was not successful)" msgid "(Update was not successful)"
msgstr "" msgstr ""
#: src/Module/Contact.php:510 #: src/Module/Contact.php:450
msgid "(Update was successful)" msgid "(Update was successful)"
msgstr "" msgstr ""
#: src/Module/Contact.php:512 src/Module/Contact.php:1104 #: src/Module/Contact.php:452 src/Module/Contact.php:1050
msgid "Suggest friends" msgid "Suggest friends"
msgstr "" msgstr ""
#: src/Module/Contact.php:516 #: src/Module/Contact.php:456
#, php-format #, php-format
msgid "Network type: %s" msgid "Network type: %s"
msgstr "" msgstr ""
#: src/Module/Contact.php:521 #: src/Module/Contact.php:461
msgid "Communications lost with this contact!" msgid "Communications lost with this contact!"
msgstr "" msgstr ""
#: src/Module/Contact.php:527 #: src/Module/Contact.php:467
msgid "Fetch further information for feeds" msgid "Fetch further information for feeds"
msgstr "" msgstr ""
#: src/Module/Contact.php:529 #: src/Module/Contact.php:469
msgid "" msgid ""
"Fetch information like preview pictures, title and teaser from the feed " "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 " "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." "are taken from the meta header in the feed item and are posted as hash tags."
msgstr "" msgstr ""
#: src/Module/Contact.php:532 #: src/Module/Contact.php:472
msgid "Fetch information" msgid "Fetch information"
msgstr "" msgstr ""
#: src/Module/Contact.php:533 #: src/Module/Contact.php:473
msgid "Fetch keywords" msgid "Fetch keywords"
msgstr "" msgstr ""
#: src/Module/Contact.php:534 #: src/Module/Contact.php:474
msgid "Fetch information and keywords" msgid "Fetch information and keywords"
msgstr "" msgstr ""
#: src/Module/Contact.php:546 src/Module/Contact.php:550 #: src/Module/Contact.php:486 src/Module/Contact.php:490
#: src/Module/Contact.php:553 src/Module/Contact.php:557 #: src/Module/Contact.php:493 src/Module/Contact.php:497
msgid "No mirroring" msgid "No mirroring"
msgstr "" msgstr ""
#: src/Module/Contact.php:547 #: src/Module/Contact.php:487
msgid "Mirror as forwarded posting" msgid "Mirror as forwarded posting"
msgstr "" msgstr ""
#: src/Module/Contact.php:548 src/Module/Contact.php:554 #: src/Module/Contact.php:488 src/Module/Contact.php:494
#: src/Module/Contact.php:558 #: src/Module/Contact.php:498
msgid "Mirror as my own posting" msgid "Mirror as my own posting"
msgstr "" msgstr ""
#: src/Module/Contact.php:551 src/Module/Contact.php:555 #: src/Module/Contact.php:491 src/Module/Contact.php:495
msgid "Native reshare" msgid "Native reshare"
msgstr "" msgstr ""
#: src/Module/Contact.php:570 #: src/Module/Contact.php:510
msgid "Contact Information / Notes" msgid "Contact Information / Notes"
msgstr "" msgstr ""
#: src/Module/Contact.php:571 #: src/Module/Contact.php:511
msgid "Contact Settings" msgid "Contact Settings"
msgstr "" msgstr ""
#: src/Module/Contact.php:579 #: src/Module/Contact.php:519
msgid "Contact" msgid "Contact"
msgstr "" msgstr ""
#: src/Module/Contact.php:583 #: src/Module/Contact.php:523
msgid "Their personal note" msgid "Their personal note"
msgstr "" msgstr ""
#: src/Module/Contact.php:585 #: src/Module/Contact.php:525
msgid "Edit contact notes" msgid "Edit contact notes"
msgstr "" msgstr ""
#: src/Module/Contact.php:588 src/Module/Contact.php:1070 #: src/Module/Contact.php:528 src/Module/Contact.php:1016
#, php-format #, php-format
msgid "Visit %s's profile [%s]" msgid "Visit %s's profile [%s]"
msgstr "" msgstr ""
#: src/Module/Contact.php:589 #: src/Module/Contact.php:529
msgid "Block/Unblock contact" msgid "Block/Unblock contact"
msgstr "" msgstr ""
#: src/Module/Contact.php:590 #: src/Module/Contact.php:530
msgid "Ignore contact" msgid "Ignore contact"
msgstr "" msgstr ""
#: src/Module/Contact.php:591 #: src/Module/Contact.php:531
msgid "View conversations" msgid "View conversations"
msgstr "" msgstr ""
#: src/Module/Contact.php:596 #: src/Module/Contact.php:536
msgid "Last update:" msgid "Last update:"
msgstr "" msgstr ""
#: src/Module/Contact.php:598 #: src/Module/Contact.php:538
msgid "Update public posts" msgid "Update public posts"
msgstr "" msgstr ""
#: src/Module/Contact.php:600 src/Module/Contact.php:1114 #: src/Module/Contact.php:540 src/Module/Contact.php:1060
msgid "Update now" msgid "Update now"
msgstr "" msgstr ""
#: src/Module/Contact.php:603 src/Module/Contact.php:864 #: src/Module/Contact.php:543 src/Module/Contact.php:803
#: src/Module/Contact.php:1141 #: src/Module/Contact.php:1087
msgid "Unignore" msgid "Unignore"
msgstr "" msgstr ""
#: src/Module/Contact.php:607 #: src/Module/Contact.php:547
msgid "Currently blocked" msgid "Currently blocked"
msgstr "" msgstr ""
#: src/Module/Contact.php:608 #: src/Module/Contact.php:548
msgid "Currently ignored" msgid "Currently ignored"
msgstr "" msgstr ""
#: src/Module/Contact.php:609 #: src/Module/Contact.php:549
msgid "Currently archived" msgid "Currently archived"
msgstr "" msgstr ""
#: src/Module/Contact.php:610 #: src/Module/Contact.php:550
msgid "Awaiting connection acknowledge" msgid "Awaiting connection acknowledge"
msgstr "" msgstr ""
#: src/Module/Contact.php:611 src/Module/Notifications/Introductions.php:171 #: src/Module/Contact.php:551 src/Module/Notifications/Introductions.php:171
msgid "Hide this contact from others" msgid "Hide this contact from others"
msgstr "" msgstr ""
#: src/Module/Contact.php:611 #: src/Module/Contact.php:551
msgid "" msgid ""
"Replies/likes to your public posts <strong>may</strong> still be visible" "Replies/likes to your public posts <strong>may</strong> still be visible"
msgstr "" msgstr ""
#: src/Module/Contact.php:612 #: src/Module/Contact.php:552
msgid "Notification for new posts" msgid "Notification for new posts"
msgstr "" msgstr ""
#: src/Module/Contact.php:612 #: src/Module/Contact.php:552
msgid "Send a notification of every new post of this contact" msgid "Send a notification of every new post of this contact"
msgstr "" msgstr ""
#: src/Module/Contact.php:614 #: src/Module/Contact.php:554
msgid "Keyword Deny List" msgid "Keyword Deny List"
msgstr "" msgstr ""
#: src/Module/Contact.php:614 #: src/Module/Contact.php:554
msgid "" msgid ""
"Comma separated list of keywords that should not be converted to hashtags, " "Comma separated list of keywords that should not be converted to hashtags, "
"when \"Fetch information and keywords\" is selected" "when \"Fetch information and keywords\" is selected"
msgstr "" msgstr ""
#: src/Module/Contact.php:632 src/Module/Settings/TwoFactor/Index.php:132 #: src/Module/Contact.php:572 src/Module/Settings/TwoFactor/Index.php:132
msgid "Actions" msgid "Actions"
msgstr "" msgstr ""
#: src/Module/Contact.php:639 #: src/Module/Contact.php:579
msgid "Mirror postings from this contact" msgid "Mirror postings from this contact"
msgstr "" msgstr ""
#: src/Module/Contact.php:641 #: src/Module/Contact.php:581
msgid "" msgid ""
"Mark this contact as remote_self, this will cause friendica to repost new " "Mark this contact as remote_self, this will cause friendica to repost new "
"entries from this contact." "entries from this contact."
msgstr "" msgstr ""
#: src/Module/Contact.php:773 #: src/Module/Contact.php:713
msgid "Show all contacts" msgid "Show all contacts"
msgstr "" msgstr ""
#: src/Module/Contact.php:781 #: src/Module/Contact.php:721
msgid "Only show pending contacts" msgid "Only show pending contacts"
msgstr "" msgstr ""
#: src/Module/Contact.php:789 #: src/Module/Contact.php:729
msgid "Only show blocked contacts" msgid "Only show blocked contacts"
msgstr "" msgstr ""
#: src/Module/Contact.php:794 src/Module/Contact.php:841 #: src/Module/Contact.php:734 src/Module/Contact.php:781
#: src/Object/Post.php:309 #: src/Object/Post.php:309
msgid "Ignored" msgid "Ignored"
msgstr "" msgstr ""
#: src/Module/Contact.php:797 #: src/Module/Contact.php:737
msgid "Only show ignored contacts" msgid "Only show ignored contacts"
msgstr "" msgstr ""
#: src/Module/Contact.php:802 src/Module/Contact.php:842 #: src/Module/Contact.php:742 src/Module/Contact.php:782
msgid "Archived" msgid "Archived"
msgstr "" msgstr ""
#: src/Module/Contact.php:805 #: src/Module/Contact.php:745
msgid "Only show archived contacts" msgid "Only show archived contacts"
msgstr "" msgstr ""
#: src/Module/Contact.php:810 src/Module/Contact.php:840 #: src/Module/Contact.php:750 src/Module/Contact.php:780
msgid "Hidden" msgid "Hidden"
msgstr "" msgstr ""
#: src/Module/Contact.php:813 #: src/Module/Contact.php:753
msgid "Only show hidden contacts" msgid "Only show hidden contacts"
msgstr "" msgstr ""
#: src/Module/Contact.php:821 #: src/Module/Contact.php:761
msgid "Organize your contact groups" msgid "Organize your contact groups"
msgstr "" msgstr ""
#: src/Module/Contact.php:853 #: src/Module/Contact.php:793
msgid "Search your contacts" msgid "Search your contacts"
msgstr "" msgstr ""
#: src/Module/Contact.php:854 src/Module/Search/Index.php:194 #: src/Module/Contact.php:794 src/Module/Search/Index.php:194
#, php-format #, php-format
msgid "Results for: %s" msgid "Results for: %s"
msgstr "" msgstr ""
#: src/Module/Contact.php:862 #: src/Module/Contact.php:801
msgid "Update" msgid "Update"
msgstr "" msgstr ""
#: src/Module/Contact.php:867 #: src/Module/Contact.php:805
msgid "Batch Actions" msgid "Batch Actions"
msgstr "" msgstr ""
#: src/Module/Contact.php:902 #: src/Module/Contact.php:840
msgid "Conversations started by this contact" msgid "Conversations started by this contact"
msgstr "" msgstr ""
#: src/Module/Contact.php:907 #: src/Module/Contact.php:845
msgid "Posts and Comments" msgid "Posts and Comments"
msgstr "" msgstr ""
#: src/Module/Contact.php:925 #: src/Module/Contact.php:856
msgid "Posts containing media objects"
msgstr ""
#: src/Module/Contact.php:871
msgid "View all known contacts" msgid "View all known contacts"
msgstr "" msgstr ""
#: src/Module/Contact.php:935 #: src/Module/Contact.php:881
msgid "Advanced Contact Settings" msgid "Advanced Contact Settings"
msgstr "" msgstr ""
#: src/Module/Contact.php:1029 #: src/Module/Contact.php:975
msgid "Mutual Friendship" msgid "Mutual Friendship"
msgstr "" msgstr ""
#: src/Module/Contact.php:1033 #: src/Module/Contact.php:979
msgid "is a fan of yours" msgid "is a fan of yours"
msgstr "" msgstr ""
#: src/Module/Contact.php:1037 #: src/Module/Contact.php:983
msgid "you are a fan of" msgid "you are a fan of"
msgstr "" msgstr ""
#: src/Module/Contact.php:1055 #: src/Module/Contact.php:1001
msgid "Pending outgoing contact request" msgid "Pending outgoing contact request"
msgstr "" msgstr ""
#: src/Module/Contact.php:1057 #: src/Module/Contact.php:1003
msgid "Pending incoming contact request" msgid "Pending incoming contact request"
msgstr "" msgstr ""
#: src/Module/Contact.php:1124 #: src/Module/Contact.php:1070
msgid "Refetch contact data" msgid "Refetch contact data"
msgstr "" msgstr ""
#: src/Module/Contact.php:1135 #: src/Module/Contact.php:1081
msgid "Toggle Blocked status" msgid "Toggle Blocked status"
msgstr "" msgstr ""
#: src/Module/Contact.php:1143 #: src/Module/Contact.php:1089
msgid "Toggle Ignored status" msgid "Toggle Ignored status"
msgstr "" msgstr ""
#: src/Module/Contact.php:1152 #: src/Module/Contact.php:1096 src/Module/Contact/Revoke.php:96
msgid "Delete contact" msgid "Revoke Follow"
msgstr ""
#: src/Module/Contact.php:1098
msgid "Revoke the follow from this contact"
msgstr "" msgstr ""
#: src/Module/Contact/Advanced.php:93 #: src/Module/Contact/Advanced.php:93
@ -7805,6 +7779,45 @@ msgstr ""
msgid "Make this post private" msgid "Make this post private"
msgstr "" msgstr ""
#: src/Module/Contact/Revoke.php:48
msgid "Unknown contact."
msgstr ""
#: src/Module/Contact/Revoke.php:58 src/Module/Group.php:109
msgid "Contact is deleted."
msgstr ""
#: src/Module/Contact/Revoke.php:62
msgid "Contact is being deleted."
msgstr ""
#: src/Module/Contact/Revoke.php:76
msgid "Follow was successfully revoked."
msgstr ""
#: src/Module/Contact/Revoke.php:78
msgid ""
"Follow was successfully revoked, however the remote contact won't be aware "
"of this revokation."
msgstr ""
#: src/Module/Contact/Revoke.php:80
msgid ""
"Unable to revoke follow, please try again later or contact the administrator."
msgstr ""
#: src/Module/Contact/Revoke.php:97
msgid ""
"Do you really want to revoke this contact's follow? This cannot be undone "
"and they will have to manually follow you back again."
msgstr ""
#: src/Module/Contact/Revoke.php:98
#: src/Module/Notifications/Introductions.php:123
#: src/Module/OAuth/Acknowledge.php:47 src/Module/Register.php:117
msgid "Yes"
msgstr ""
#: src/Module/Conversation/Community.php:68 #: src/Module/Conversation/Community.php:68
msgid "Local Community" msgid "Local Community"
msgstr "" msgstr ""
@ -8285,10 +8298,6 @@ msgstr ""
msgid "Unknown group." msgid "Unknown group."
msgstr "" msgstr ""
#: src/Module/Group.php:109
msgid "Contact is deleted."
msgstr ""
#: src/Module/Group.php:115 #: src/Module/Group.php:115
msgid "Unable to add the contact to the group." msgid "Unable to add the contact to the group."
msgstr "" msgstr ""
@ -10446,7 +10455,7 @@ msgstr ""
msgid "Show fewer" msgid "Show fewer"
msgstr "" msgstr ""
#: src/Protocol/Diaspora.php:3448 #: src/Protocol/Diaspora.php:3417
msgid "Attachments:" msgid "Attachments:"
msgstr "" msgstr ""

View file

@ -49,8 +49,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: friendica\n" "Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-10-01 16:40+0200\n" "POT-Creation-Date: 2021-10-02 08:34-0400\n"
"PO-Revision-Date: 2021-10-01 15:32+0000\n" "PO-Revision-Date: 2021-10-02 19:18+0000\n"
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n" "Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n"
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n" "Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -79,7 +79,7 @@ msgstr[1] "Das wöchentliche Limit von %d Beiträgen wurde erreicht. Der Beitrag
msgid "Monthly posting limit of %d post reached. The post was rejected." msgid "Monthly posting limit of %d post reached. The post was rejected."
msgstr "Das monatliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen." msgstr "Das monatliche Limit von %d Beiträgen wurde erreicht. Der Beitrag wurde verworfen."
#: include/api.php:4437 mod/photos.php:89 mod/photos.php:198 #: include/api.php:4430 mod/photos.php:89 mod/photos.php:198
#: mod/photos.php:626 mod/photos.php:1035 mod/photos.php:1052 #: mod/photos.php:626 mod/photos.php:1035 mod/photos.php:1052
#: mod/photos.php:1599 src/Model/User.php:1169 src/Model/User.php:1177 #: mod/photos.php:1599 src/Model/User.php:1169 src/Model/User.php:1177
#: src/Model/User.php:1185 src/Module/Settings/Profile/Photo/Crop.php:101 #: src/Model/User.php:1185 src/Module/Settings/Profile/Photo/Crop.php:101
@ -602,7 +602,7 @@ msgstr "Abbrechen"
#: mod/editpost.php:134 src/Content/Conversation.php:380 #: mod/editpost.php:134 src/Content/Conversation.php:380
#: src/Content/Widget/VCard.php:107 src/Model/Profile.php:459 #: src/Content/Widget/VCard.php:107 src/Model/Profile.php:459
#: src/Module/Admin/Logs/View.php:93 #: src/Module/Admin/Logs/View.php:92
msgid "Message" msgid "Message"
msgstr "Nachricht" msgstr "Nachricht"
@ -632,7 +632,7 @@ msgstr "Der Veranstaltungstitel und die Anfangszeit müssen angegeben werden."
msgid "Create New Event" msgid "Create New Event"
msgstr "Neue Veranstaltung erstellen" msgstr "Neue Veranstaltung erstellen"
#: mod/events.php:536 src/Module/Admin/Logs/View.php:97 #: mod/events.php:536 src/Module/Admin/Logs/View.php:96
msgid "Event details" msgid "Event details"
msgstr "Veranstaltungsdetails" msgstr "Veranstaltungsdetails"
@ -761,7 +761,7 @@ msgid "OStatus support is disabled. Contact can't be added."
msgstr "OStatus-Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden." msgstr "OStatus-Unterstützung ist nicht aktiviert. Der Kontakt kann nicht zugefügt werden."
#: mod/follow.php:138 src/Content/Item.php:463 src/Content/Widget.php:76 #: mod/follow.php:138 src/Content/Item.php:463 src/Content/Widget.php:76
#: src/Model/Contact.php:1051 src/Model/Contact.php:1064 #: src/Model/Contact.php:1046 src/Model/Contact.php:1059
#: view/theme/vier/theme.php:172 #: view/theme/vier/theme.php:172
msgid "Connect/Follow" msgid "Connect/Follow"
msgstr "Verbinden/Folgen" msgstr "Verbinden/Folgen"
@ -2321,11 +2321,11 @@ msgid ""
"select \"Export account\"" "select \"Export account\""
msgstr "Um Deinen Account zu exportieren, rufe \"Einstellungen -> Persönliche Daten exportieren\" auf und wähle \"Account exportieren\"" msgstr "Um Deinen Account zu exportieren, rufe \"Einstellungen -> Persönliche Daten exportieren\" auf und wähle \"Account exportieren\""
#: mod/unfollow.php:65 mod/unfollow.php:129 #: mod/unfollow.php:65 mod/unfollow.php:135
msgid "You aren't following this contact." msgid "You aren't following this contact."
msgstr "Du folgst diesem Kontakt." msgstr "Du folgst diesem Kontakt."
#: mod/unfollow.php:71 mod/unfollow.php:135 #: mod/unfollow.php:71
msgid "Unfollowing is currently not supported by your network." msgid "Unfollowing is currently not supported by your network."
msgstr "Bei diesem Netzwerk wird das Entfolgen derzeit nicht unterstützt." msgstr "Bei diesem Netzwerk wird das Entfolgen derzeit nicht unterstützt."
@ -2333,6 +2333,24 @@ msgstr "Bei diesem Netzwerk wird das Entfolgen derzeit nicht unterstützt."
msgid "Disconnect/Unfollow" msgid "Disconnect/Unfollow"
msgstr "Verbindung lösen/Nicht mehr folgen" msgstr "Verbindung lösen/Nicht mehr folgen"
#: mod/unfollow.php:149
msgid "Unfollowing is currently not supported by this contact's network."
msgstr "Bei dem Netzwerk dieses Kontakts wird das Entfolgen derzeit nicht unterstützt."
#: mod/unfollow.php:153
msgid ""
"Unable to unfollow this contact, please retry in a few minutes or contact "
"your administrator."
msgstr "Konnte dem Kontakt nicht entfolgen. Bitte warte ein paar Minuten und versuche es dann noch einmal, oder kontaktiere deinen Administrator."
#: mod/unfollow.php:157
msgid "Contact was successfully unfollowed"
msgstr "Kontakt wurde erfolgreich entfolgt."
#: mod/unfollow.php:161
msgid "Unable to unfollow this contact, please contact your administrator"
msgstr "Konnte dem Kontakt nicht entfolgen. Bitte kontaktiere deinen Administrator."
#: mod/videos.php:120 #: mod/videos.php:120
msgid "No videos selected" msgid "No videos selected"
msgstr "Keine Videos ausgewählt" msgstr "Keine Videos ausgewählt"
@ -2469,12 +2487,12 @@ msgstr "Addon bereits aktiviert"
msgid "Addon already disabled" msgid "Addon already disabled"
msgstr "Addon bereits deaktiviert" msgstr "Addon bereits deaktiviert"
#: src/Console/ArchiveContact.php:105 #: src/Console/ArchiveContact.php:106
#, php-format #, php-format
msgid "Could not find any unarchived contact entry for this URL (%s)" msgid "Could not find any unarchived contact entry for this URL (%s)"
msgstr "Für die URL (%s) konnte kein nicht-archivierter Kontakt gefunden werden" msgstr "Für die URL (%s) konnte kein nicht-archivierter Kontakt gefunden werden"
#: src/Console/ArchiveContact.php:108 #: src/Console/ArchiveContact.php:109
msgid "The contact entries have been archived" msgid "The contact entries have been archived"
msgstr "Die Kontakteinträge wurden archiviert." msgstr "Die Kontakteinträge wurden archiviert."
@ -3047,31 +3065,31 @@ msgstr "Veranstaltung"
msgid "Follow Thread" msgid "Follow Thread"
msgstr "Folge der Unterhaltung" msgstr "Folge der Unterhaltung"
#: src/Content/Item.php:443 src/Model/Contact.php:1056 #: src/Content/Item.php:443 src/Model/Contact.php:1051
msgid "View Status" msgid "View Status"
msgstr "Status anschauen" msgstr "Status anschauen"
#: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:982 #: src/Content/Item.php:444 src/Content/Item.php:466 src/Model/Contact.php:977
#: src/Model/Contact.php:1048 src/Model/Contact.php:1057 #: src/Model/Contact.php:1043 src/Model/Contact.php:1052
#: src/Module/Directory.php:160 src/Module/Settings/Profile/Index.php:223 #: src/Module/Directory.php:160 src/Module/Settings/Profile/Index.php:223
msgid "View Profile" msgid "View Profile"
msgstr "Profil anschauen" msgstr "Profil anschauen"
#: src/Content/Item.php:445 src/Model/Contact.php:1058 #: src/Content/Item.php:445 src/Model/Contact.php:1053
msgid "View Photos" msgid "View Photos"
msgstr "Bilder anschauen" msgstr "Bilder anschauen"
#: src/Content/Item.php:446 src/Model/Contact.php:1049 #: src/Content/Item.php:446 src/Model/Contact.php:1044
#: src/Model/Contact.php:1059 #: src/Model/Contact.php:1054
msgid "Network Posts" msgid "Network Posts"
msgstr "Netzwerkbeiträge" msgstr "Netzwerkbeiträge"
#: src/Content/Item.php:447 src/Model/Contact.php:1050 #: src/Content/Item.php:447 src/Model/Contact.php:1045
#: src/Model/Contact.php:1060 #: src/Model/Contact.php:1055
msgid "View Contact" msgid "View Contact"
msgstr "Kontakt anzeigen" msgstr "Kontakt anzeigen"
#: src/Content/Item.php:448 src/Model/Contact.php:1062 #: src/Content/Item.php:448 src/Model/Contact.php:1057
msgid "Send PM" msgid "Send PM"
msgstr "Private Nachricht senden" msgstr "Private Nachricht senden"
@ -3094,7 +3112,7 @@ msgstr "Ignorieren"
msgid "Languages" msgid "Languages"
msgstr "Sprachen" msgstr "Sprachen"
#: src/Content/Item.php:458 src/Model/Contact.php:1063 #: src/Content/Item.php:458 src/Model/Contact.php:1058
msgid "Poke" msgid "Poke"
msgstr "Anstupsen" msgstr "Anstupsen"
@ -3211,7 +3229,7 @@ msgid "Addon applications, utilities, games"
msgstr "Zusätzliche Anwendungen, Dienstprogramme, Spiele" msgstr "Zusätzliche Anwendungen, Dienstprogramme, Spiele"
#: src/Content/Nav.php:230 src/Content/Text/HTML.php:891 #: src/Content/Nav.php:230 src/Content/Text/HTML.php:891
#: src/Module/Admin/Logs/View.php:87 src/Module/Search/Index.php:99 #: src/Module/Admin/Logs/View.php:86 src/Module/Search/Index.php:99
msgid "Search" msgid "Search"
msgstr "Suche" msgstr "Suche"
@ -3543,7 +3561,7 @@ msgstr "Personen"
msgid "Organisations" msgid "Organisations"
msgstr "Organisationen" msgstr "Organisationen"
#: src/Content/Widget.php:529 src/Model/Contact.php:1480 #: src/Content/Widget.php:529 src/Model/Contact.php:1474
msgid "News" msgid "News"
msgstr "Nachrichten" msgstr "Nachrichten"
@ -4407,85 +4425,85 @@ msgstr "%s ist jetzt mit %s befreundet"
msgid "Legacy module file not found: %s" msgid "Legacy module file not found: %s"
msgstr "Legacy-Moduldatei nicht gefunden: %s" msgstr "Legacy-Moduldatei nicht gefunden: %s"
#: src/Model/Contact.php:1052 src/Model/Contact.php:1065 #: src/Model/Contact.php:1047 src/Model/Contact.php:1060
msgid "UnFollow" msgid "UnFollow"
msgstr "Entfolgen" msgstr "Entfolgen"
#: src/Model/Contact.php:1061 #: src/Model/Contact.php:1056
msgid "Drop Contact" msgid "Drop Contact"
msgstr "Kontakt löschen" msgstr "Kontakt löschen"
#: src/Model/Contact.php:1071 src/Module/Admin/Users/Pending.php:107 #: src/Model/Contact.php:1066 src/Module/Admin/Users/Pending.php:107
#: src/Module/Notifications/Introductions.php:111 #: src/Module/Notifications/Introductions.php:111
#: src/Module/Notifications/Introductions.php:183 #: src/Module/Notifications/Introductions.php:183
msgid "Approve" msgid "Approve"
msgstr "Genehmigen" msgstr "Genehmigen"
#: src/Model/Contact.php:1476 #: src/Model/Contact.php:1470
msgid "Organisation" msgid "Organisation"
msgstr "Organisation" msgstr "Organisation"
#: src/Model/Contact.php:1484 #: src/Model/Contact.php:1478
msgid "Forum" msgid "Forum"
msgstr "Forum" msgstr "Forum"
#: src/Model/Contact.php:2340 #: src/Model/Contact.php:2334
msgid "Disallowed profile URL." msgid "Disallowed profile URL."
msgstr "Nicht erlaubte Profil-URL." msgstr "Nicht erlaubte Profil-URL."
#: src/Model/Contact.php:2345 src/Module/Friendica.php:81 #: src/Model/Contact.php:2339 src/Module/Friendica.php:81
msgid "Blocked domain" msgid "Blocked domain"
msgstr "Blockierte Domain" msgstr "Blockierte Domain"
#: src/Model/Contact.php:2350 #: src/Model/Contact.php:2344
msgid "Connect URL missing." msgid "Connect URL missing."
msgstr "Connect-URL fehlt" msgstr "Connect-URL fehlt"
#: src/Model/Contact.php:2359 #: src/Model/Contact.php:2353
msgid "" msgid ""
"The contact could not be added. Please check the relevant network " "The contact could not be added. Please check the relevant network "
"credentials in your Settings -> Social Networks page." "credentials in your Settings -> Social Networks page."
msgstr "Der Kontakt konnte nicht hinzugefügt werden. Bitte überprüfe die Einstellungen unter Einstellungen -> Soziale Netzwerke" msgstr "Der Kontakt konnte nicht hinzugefügt werden. Bitte überprüfe die Einstellungen unter Einstellungen -> Soziale Netzwerke"
#: src/Model/Contact.php:2396 #: src/Model/Contact.php:2390
msgid "The profile address specified does not provide adequate information." msgid "The profile address specified does not provide adequate information."
msgstr "Die angegebene Profiladresse liefert unzureichende Informationen." msgstr "Die angegebene Profiladresse liefert unzureichende Informationen."
#: src/Model/Contact.php:2398 #: src/Model/Contact.php:2392
msgid "No compatible communication protocols or feeds were discovered." msgid "No compatible communication protocols or feeds were discovered."
msgstr "Es wurden keine kompatiblen Kommunikationsprotokolle oder Feeds gefunden." msgstr "Es wurden keine kompatiblen Kommunikationsprotokolle oder Feeds gefunden."
#: src/Model/Contact.php:2401 #: src/Model/Contact.php:2395
msgid "An author or name was not found." msgid "An author or name was not found."
msgstr "Es wurde kein Autor oder Name gefunden." msgstr "Es wurde kein Autor oder Name gefunden."
#: src/Model/Contact.php:2404 #: src/Model/Contact.php:2398
msgid "No browser URL could be matched to this address." msgid "No browser URL could be matched to this address."
msgstr "Zu dieser Adresse konnte keine passende Browser-URL gefunden werden." msgstr "Zu dieser Adresse konnte keine passende Browser-URL gefunden werden."
#: src/Model/Contact.php:2407 #: src/Model/Contact.php:2401
msgid "" msgid ""
"Unable to match @-style Identity Address with a known protocol or email " "Unable to match @-style Identity Address with a known protocol or email "
"contact." "contact."
msgstr "Konnte die @-Adresse mit keinem der bekannten Protokolle oder Email-Kontakte abgleichen." msgstr "Konnte die @-Adresse mit keinem der bekannten Protokolle oder Email-Kontakte abgleichen."
#: src/Model/Contact.php:2408 #: src/Model/Contact.php:2402
msgid "Use mailto: in front of address to force email check." msgid "Use mailto: in front of address to force email check."
msgstr "Verwende mailto: vor der E-Mail-Adresse, um eine Überprüfung der E-Mail-Adresse zu erzwingen." msgstr "Verwende mailto: vor der E-Mail-Adresse, um eine Überprüfung der E-Mail-Adresse zu erzwingen."
#: src/Model/Contact.php:2414 #: src/Model/Contact.php:2408
msgid "" msgid ""
"The profile address specified belongs to a network which has been disabled " "The profile address specified belongs to a network which has been disabled "
"on this site." "on this site."
msgstr "Die Adresse dieses Profils gehört zu einem Netzwerk, mit dem die Kommunikation auf dieser Seite ausgeschaltet wurde." msgstr "Die Adresse dieses Profils gehört zu einem Netzwerk, mit dem die Kommunikation auf dieser Seite ausgeschaltet wurde."
#: src/Model/Contact.php:2419 #: src/Model/Contact.php:2413
msgid "" msgid ""
"Limited profile. This person will be unable to receive direct/personal " "Limited profile. This person will be unable to receive direct/personal "
"notifications from you." "notifications from you."
msgstr "Eingeschränktes Profil. Diese Person wird keine direkten/privaten Nachrichten von dir erhalten können." msgstr "Eingeschränktes Profil. Diese Person wird keine direkten/privaten Nachrichten von dir erhalten können."
#: src/Model/Contact.php:2478 #: src/Model/Contact.php:2472
msgid "Unable to retrieve contact information." msgid "Unable to retrieve contact information."
msgstr "Konnte die Kontaktinformationen nicht empfangen." msgstr "Konnte die Kontaktinformationen nicht empfangen."
@ -5081,7 +5099,7 @@ msgstr "Einschalten"
#: src/Module/Admin/Blocklist/Contact.php:78 #: src/Module/Admin/Blocklist/Contact.php:78
#: src/Module/Admin/Blocklist/Server.php:88 #: src/Module/Admin/Blocklist/Server.php:88
#: src/Module/Admin/Federation.php:159 src/Module/Admin/Item/Delete.php:65 #: src/Module/Admin/Federation.php:159 src/Module/Admin/Item/Delete.php:65
#: src/Module/Admin/Logs/Settings.php:80 src/Module/Admin/Logs/View.php:84 #: src/Module/Admin/Logs/Settings.php:80 src/Module/Admin/Logs/View.php:83
#: src/Module/Admin/Queue.php:72 src/Module/Admin/Site.php:497 #: src/Module/Admin/Queue.php:72 src/Module/Admin/Site.php:497
#: src/Module/Admin/Storage.php:131 src/Module/Admin/Summary.php:233 #: src/Module/Admin/Storage.php:131 src/Module/Admin/Summary.php:233
#: src/Module/Admin/Themes/Details.php:90 #: src/Module/Admin/Themes/Details.php:90
@ -5519,7 +5537,7 @@ msgstr "Mention"
msgid "Implicit Mention" msgid "Implicit Mention"
msgstr "Implicit Mention" msgstr "Implicit Mention"
#: src/Module/Admin/Item/Source.php:73 src/Module/Admin/Logs/View.php:99 #: src/Module/Admin/Item/Source.php:73 src/Module/Admin/Logs/View.php:98
#: src/Module/Debug/ActivityPubConversion.php:62 #: src/Module/Debug/ActivityPubConversion.php:62
msgid "Source" msgid "Source"
msgstr "Quelle" msgstr "Quelle"
@ -5577,82 +5595,82 @@ msgid ""
"'display_errors' is to enable these options, set to '0' to disable them." "'display_errors' is to enable these options, set to '0' to disable them."
msgstr "Um die Protokollierung von PHP-Fehlern und Warnungen vorübergehend zu aktivieren, kannst du der Datei index.php deiner Installation Folgendes voranstellen. Der in der Datei 'error_log' angegebene Dateiname ist relativ zum obersten Verzeichnis von Friendica und muss vom Webserver beschreibbar sein. Die Option '1' für 'log_errors' und 'display_errors' aktiviert diese Optionen, ersetze die '1' durch eine '0', um sie zu deaktivieren." msgstr "Um die Protokollierung von PHP-Fehlern und Warnungen vorübergehend zu aktivieren, kannst du der Datei index.php deiner Installation Folgendes voranstellen. Der in der Datei 'error_log' angegebene Dateiname ist relativ zum obersten Verzeichnis von Friendica und muss vom Webserver beschreibbar sein. Die Option '1' für 'log_errors' und 'display_errors' aktiviert diese Optionen, ersetze die '1' durch eine '0', um sie zu deaktivieren."
#: src/Module/Admin/Logs/View.php:71 #: src/Module/Admin/Logs/View.php:70
#, php-format #, php-format
msgid "" msgid ""
"Error trying to open <strong>%1$s</strong> log file.<br/>Check to see if " "Error trying to open <strong>%1$s</strong> log file.<br/>Check to see if "
"file %1$s exist and is readable." "file %1$s exist and is readable."
msgstr "Fehler beim Öffnen der Logdatei <strong>%1$s</strong>.<br/>Bitte überprüfe ob die Datei %1$s existiert und gelesen werden kann." msgstr "Fehler beim Öffnen der Logdatei <strong>%1$s</strong>.<br/>Bitte überprüfe ob die Datei %1$s existiert und gelesen werden kann."
#: src/Module/Admin/Logs/View.php:80 #: src/Module/Admin/Logs/View.php:79
#, php-format #, php-format
msgid "" msgid ""
"Couldn't open <strong>%1$s</strong> log file.<br/>Check to see if file %1$s " "Couldn't open <strong>%1$s</strong> log file.<br/>Check to see if file %1$s "
"is readable." "is readable."
msgstr "Konnte die Logdatei <strong>%1$s</strong> nicht öffnen.<br/>Bitte stelle sicher, dass die Datei %1$s lesbar ist." msgstr "Konnte die Logdatei <strong>%1$s</strong> nicht öffnen.<br/>Bitte stelle sicher, dass die Datei %1$s lesbar ist."
#: src/Module/Admin/Logs/View.php:85 src/Module/BaseAdmin.php:110 #: src/Module/Admin/Logs/View.php:84 src/Module/BaseAdmin.php:110
msgid "View Logs" msgid "View Logs"
msgstr "Protokolle anzeigen" msgstr "Protokolle anzeigen"
#: src/Module/Admin/Logs/View.php:88 #: src/Module/Admin/Logs/View.php:87
msgid "Search in logs" msgid "Search in logs"
msgstr "Logs durchsuchen" msgstr "Logs durchsuchen"
#: src/Module/Admin/Logs/View.php:89 #: src/Module/Admin/Logs/View.php:88
#: src/Module/Notifications/Notifications.php:138 #: src/Module/Notifications/Notifications.php:138
msgid "Show all" msgid "Show all"
msgstr "Alle anzeigen" msgstr "Alle anzeigen"
#: src/Module/Admin/Logs/View.php:90 #: src/Module/Admin/Logs/View.php:89
msgid "Date" msgid "Date"
msgstr "Datum" msgstr "Datum"
#: src/Module/Admin/Logs/View.php:91 #: src/Module/Admin/Logs/View.php:90
msgid "Level" msgid "Level"
msgstr "Level" msgstr "Level"
#: src/Module/Admin/Logs/View.php:92 #: src/Module/Admin/Logs/View.php:91
msgid "Context" msgid "Context"
msgstr "Zusammenhang" msgstr "Zusammenhang"
#: src/Module/Admin/Logs/View.php:94 #: src/Module/Admin/Logs/View.php:93
msgid "ALL" msgid "ALL"
msgstr "ALLE" msgstr "ALLE"
#: src/Module/Admin/Logs/View.php:95 #: src/Module/Admin/Logs/View.php:94
msgid "View details" msgid "View details"
msgstr "Details anzeigen" msgstr "Details anzeigen"
#: src/Module/Admin/Logs/View.php:96 #: src/Module/Admin/Logs/View.php:95
msgid "Click to view details" msgid "Click to view details"
msgstr "Anklicken zum Anzeigen der Details" msgstr "Anklicken zum Anzeigen der Details"
#: src/Module/Admin/Logs/View.php:98 #: src/Module/Admin/Logs/View.php:97
msgid "Data" msgid "Data"
msgstr "Daten" msgstr "Daten"
#: src/Module/Admin/Logs/View.php:100 #: src/Module/Admin/Logs/View.php:99
msgid "File" msgid "File"
msgstr "Datei" msgstr "Datei"
#: src/Module/Admin/Logs/View.php:101 #: src/Module/Admin/Logs/View.php:100
msgid "Line" msgid "Line"
msgstr "Zeile" msgstr "Zeile"
#: src/Module/Admin/Logs/View.php:102 #: src/Module/Admin/Logs/View.php:101
msgid "Function" msgid "Function"
msgstr "Funktion" msgstr "Funktion"
#: src/Module/Admin/Logs/View.php:103 #: src/Module/Admin/Logs/View.php:102
msgid "UID" msgid "UID"
msgstr "UID" msgstr "UID"
#: src/Module/Admin/Logs/View.php:104 #: src/Module/Admin/Logs/View.php:103
msgid "Process ID" msgid "Process ID"
msgstr "Prozess ID" msgstr "Prozess ID"
#: src/Module/Admin/Logs/View.php:105 #: src/Module/Admin/Logs/View.php:104
msgid "Close" msgid "Close"
msgstr "Schließen" msgstr "Schließen"

View file

@ -491,6 +491,10 @@ $a->strings["To export your account, go to \"Settings->Export your personal data
$a->strings["You aren't following this contact."] = "Du folgst diesem Kontakt."; $a->strings["You aren't following this contact."] = "Du folgst diesem Kontakt.";
$a->strings["Unfollowing is currently not supported by your network."] = "Bei diesem Netzwerk wird das Entfolgen derzeit nicht unterstützt."; $a->strings["Unfollowing is currently not supported by your network."] = "Bei diesem Netzwerk wird das Entfolgen derzeit nicht unterstützt.";
$a->strings["Disconnect/Unfollow"] = "Verbindung lösen/Nicht mehr folgen"; $a->strings["Disconnect/Unfollow"] = "Verbindung lösen/Nicht mehr folgen";
$a->strings["Unfollowing is currently not supported by this contact's network."] = "Bei dem Netzwerk dieses Kontakts wird das Entfolgen derzeit nicht unterstützt.";
$a->strings["Unable to unfollow this contact, please retry in a few minutes or contact your administrator."] = "Konnte dem Kontakt nicht entfolgen. Bitte warte ein paar Minuten und versuche es dann noch einmal, oder kontaktiere deinen Administrator.";
$a->strings["Contact was successfully unfollowed"] = "Kontakt wurde erfolgreich entfolgt.";
$a->strings["Unable to unfollow this contact, please contact your administrator"] = "Konnte dem Kontakt nicht entfolgen. Bitte kontaktiere deinen Administrator.";
$a->strings["No videos selected"] = "Keine Videos ausgewählt"; $a->strings["No videos selected"] = "Keine Videos ausgewählt";
$a->strings["View Video"] = "Video ansehen"; $a->strings["View Video"] = "Video ansehen";
$a->strings["Recent Videos"] = "Neueste Videos"; $a->strings["Recent Videos"] = "Neueste Videos";

View file

@ -2,10 +2,10 @@
<center> <center>
<form action="{{$confirm_url}}" id="confirm-form" method="{{$method}}"> <form action="{{$confirm_url}}" id="confirm-form" method="{{$method}}">
<h3 id="confirm-message">{{$message}}</h3> <h3 id="confirm-message">{{$l10n.message}}</h3>
<button class="confirm-button" id="confirm-submit-button" type="submit" name="{{$confirm_name}}" value="{{$confirm_value}}">{{$confirm}}</button> <button class="confirm-button" id="confirm-submit-button" type="submit" name="{{$confirm_name}}" value="{{$confirm_value}}">{{$l10n.confirm}}</button>
<button class="confirm-button" id="confirm-cancel-button" type="submit" name="canceled" value="{{$cancel}}">{{$cancel}}</button> <button class="confirm-button" id="confirm-cancel-button" type="submit" name="canceled" value="{{$l10n.cancel}}">{{$l10n.cancel}}</button>
</form> </form>
</center> </center>

View file

@ -1,8 +1,8 @@
<h1>{{$header}}</h1> <h1>{{$l10n.header}}</h1>
{{include file="contact_template.tpl" no_contacts_checkbox=True}} {{include file="contact_template.tpl" no_contacts_checkbox=True}}
{{include file="confirm.tpl"}} {{include file="confirm.tpl"}}
<div class="clear"></div> <div class="clear"></div>

View file

@ -15,13 +15,13 @@
<a class="btn" rel="#contact-actions-menu" href="#" id="contact-edit-actions-button">{{$contact_action_button}}</a> <a class="btn" rel="#contact-actions-menu" href="#" id="contact-edit-actions-button">{{$contact_action_button}}</a>
<ul role="menu" aria-haspopup="true" id="contact-actions-menu" class="menu-popup"> <ul role="menu" aria-haspopup="true" id="contact-actions-menu" class="menu-popup">
{{if $lblsuggest}}<li role="menuitem"><a href="#" title="{{$contact_actions.suggest.title}}" onclick="window.location.href='{{$contact_actions.suggest.url}}'; return false;">{{$contact_actions.suggest.label}}</a></li>{{/if}} {{if $lblsuggest}}<li role="menuitem"><a href="#" title="{{$contact_actions.suggest.title}}" onclick="window.location.href='{{$contact_actions.suggest.url}}'; return false;">{{$contact_actions.suggest.label}}</a></li>{{/if}}
{{if $poll_enabled}}<li role="menuitem"><a href="#" title="{{$contact_actions.update.title}}" onclick="window.location.href='{{$contact_actions.update.url}}'; return false;">{{$contact_actions.update.label}}</a></li>{{/if}} {{if $poll_enabled}}<li role="menuitem"><a href="#" title="{{$contact_actions.update.title}}" onclick="window.location.href='{{$contact_actions.update.url}}'; return false;">{{$contact_actions.update.label}}</a></li>{{/if}}
{{if $contact_actions.updateprofile}}<li role="menuitem"><a href="{{$contact_actions.updateprofile.url}}" title="{{$contact_actions.updateprofile.title}}">{{$contact_actions.updateprofile.label}}</a></li>{{/if}} {{if $contact_actions.updateprofile}}<li role="menuitem"><a href="{{$contact_actions.updateprofile.url}}" title="{{$contact_actions.updateprofile.title}}">{{$contact_actions.updateprofile.label}}</a></li>{{/if}}
<li class="divider"></li> <li class="divider"></li>
<li role="menuitem"><a href="#" title="{{$contact_actions.block.title}}" onclick="window.location.href='{{$contact_actions.block.url}}'; return false;">{{$contact_actions.block.label}}</a></li> <li role="menuitem"><a href="#" title="{{$contact_actions.block.title}}" onclick="window.location.href='{{$contact_actions.block.url}}'; return false;">{{$contact_actions.block.label}}</a></li>
<li role="menuitem"><a href="#" title="{{$contact_actions.ignore.title}}" onclick="window.location.href='{{$contact_actions.ignore.url}}'; return false;">{{$contact_actions.ignore.label}}</a></li> <li role="menuitem"><a href="#" title="{{$contact_actions.ignore.title}}" onclick="window.location.href='{{$contact_actions.ignore.url}}'; return false;">{{$contact_actions.ignore.label}}</a></li>
{{if $contact_actions.delete.url}}<li role="menuitem"><a href="{{$contact_actions.delete.url}}" title="{{$contact_actions.delete.title}}" onclick="return confirmDelete();">{{$contact_actions.delete.label}}</a></li> {{/if}} {{if $contact_actions.revoke_follow.url}}<li role="menuitem"><a href="{{$contact_actions.revoke_follow.url}}" title="{{$contact_actions.revoke_follow.title}}">{{$contact_actions.revoke_follow.label}}</a></li>{{/if}}
</ul> </ul>
</div> </div>

View file

@ -38,20 +38,6 @@
return false; return false;
} }
}); });
// add javascript confirm dialog to "drop" links. Plain html url have "?confirm=1" to show confirmation form, we need to remove it
$(".drop").each(function() {
$(this).attr('href', $(this).attr('href').replace("confirm=1","") );
$(this).click(function(e){
if (confirm("{{$contact_drop_confirm}}")) {
return true;
} else {
e.preventDefault();
return false;
}
});
});
}); });
</script> </script>

View file

@ -2504,14 +2504,6 @@ ul li:hover .contact-wrapper .contact-action-link:hover {
#directory-search-wrapper { #directory-search-wrapper {
padding: 10px 0; padding: 10px 0;
} }
#contact-drop-confirm .contact-actions,
#contact-drop-confirm .contact-photo-overlay,
#contact-drop-confirm .contact-photo-menu {
display: none;
}
#contact-drop-confirm #confirm-form {
margin-top: 20px;
}
/* contact-edit */ /* contact-edit */
#contact-edit-actions { #contact-edit-actions {

View file

@ -1,9 +1,9 @@
<form action="{{$confirm_url}}" id="confirm-form" method="{{$method}}" class="generic-page-wrapper"> <form action="{{$confirm_url}}" id="confirm-form" method="{{$method}}" class="generic-page-wrapper">
<div id="confirm-message">{{$message}}</div> <div id="confirm-message">{{$l10n.message}}</div>
<div class="form-group pull-right settings-submit-wrapper"> <div class="form-group pull-right settings-submit-wrapper">
<button type="submit" name="{{$confirm_name}}" id="confirm-submit-button" class="btn btn-primary confirm-button" value="{{$confirm_value}}">{{$confirm}}</button> <button type="submit" name="{{$confirm_name}}" id="confirm-submit-button" class="btn btn-primary confirm-button" value="{{$confirm_value}}">{{$l10n.confirm}}</button>
<button type="submit" name="canceled" value="{{$cancel}} id="confirm-cancel-button" class="btn confirm-button" data-dismiss="modal">{{$cancel}}</button> <button type="submit" name="canceled" value="{{$l10n.cancel}}" id="confirm-cancel-button" class="btn confirm-button" data-dismiss="modal">{{$l10n.cancel}}</button>
</div> </div>
</form> </form>

View file

@ -1,9 +1,9 @@
<div id="contact-drop-confirm"> <div id="contact-drop-confirm">
<h2 class="heading">{{$header}}</h2> <h2 class="heading">{{$l10n.header}}</h2>
{{include file="contact_template.tpl" no_contacts_checkbox=True}} {{include file="contact_template.tpl" no_contacts_checkbox=True}}
{{include file="confirm.tpl"}} {{include file="confirm.tpl"}}
<div class="clear"></div> <div class="clear"></div>
</div> </div>

View file

@ -27,7 +27,7 @@
{{/if}} {{/if}}
<li role="presentation"><a role="menuitem" href="{{$contact_actions.block.url}}" title="{{$contact_actions.block.title}}">{{$contact_actions.block.label}}</a></li> <li role="presentation"><a role="menuitem" href="{{$contact_actions.block.url}}" title="{{$contact_actions.block.title}}">{{$contact_actions.block.label}}</a></li>
<li role="presentation"><a role="menuitem" href="{{$contact_actions.ignore.url}}" title="{{$contact_actions.ignore.title}}">{{$contact_actions.ignore.label}}</a></li> <li role="presentation"><a role="menuitem" href="{{$contact_actions.ignore.url}}" title="{{$contact_actions.ignore.title}}">{{$contact_actions.ignore.label}}</a></li>
{{if $contact_actions.delete.url}}<li role="presentation"><button role="menuitem" type="button" class="btn-link" title="{{$contact_actions.delete.title}}" onclick="addToModal('{{$contact_actions.delete.url}}&confirm=1');">{{$contact_actions.delete.label}}</button></li>{{/if}} {{if $contact_actions.revoke_follow.url}}<li role="presentation"><button role="menuitem" type="button" class="btn-link" title="{{$contact_actions.revoke_follow.title}}" onclick="addToModal('{{$contact_actions.revoke_follow.url}}');">{{$contact_actions.revoke_follow.label}}</button></li>{{/if}}
</ul> </ul>
</li> </li>
</ul> </ul>

View file

@ -65,11 +65,6 @@
<i class="fa fa-user" aria-hidden="true"></i> <i class="fa fa-user" aria-hidden="true"></i>
</a> </a>
{{/if}} {{/if}}
{{if $contact.photo_menu.drop}}
<button type="button" class="contact-action-link btn-link" onclick="addToModal('{{$contact.photo_menu.drop.1}}'); return false;" data-toggle="tooltip" title="{{$contact.photo_menu.drop.0}}">
<i class="fa fa-user-times" aria-hidden="true"></i>
</button>
{{/if}}
{{if $contact.photo_menu.follow}} {{if $contact.photo_menu.follow}}
<a class="contact-action-link btn-link" href="{{$contact.photo_menu.follow.1}}" data-toggle="tooltip" title="{{$contact.photo_menu.follow.0}}"> <a class="contact-action-link btn-link" href="{{$contact.photo_menu.follow.1}}" data-toggle="tooltip" title="{{$contact.photo_menu.follow.0}}">
<i class="fa fa-user-plus" aria-hidden="true"></i> <i class="fa fa-user-plus" aria-hidden="true"></i>
@ -198,11 +193,6 @@ We use this part to filter the contacts with jquery.textcomplete *}}
<i class="fa fa-user" aria-hidden="true"></i> <i class="fa fa-user" aria-hidden="true"></i>
</a> </a>
{/if} {/if}
{if $photo_menu.drop}
<a class="contact-action-link btn-link" href="{$photo_menu.drop.1}" data-toggle="tooltip" title="{$photo_menu.drop.0}">
<i class="fa fa-user-times" aria-hidden="true"></i>
</a>
{/if}
{if $photo_menu.follow} {if $photo_menu.follow}
<a class="contact-action-link btn-link" href="{$photo_menu.follow.1}" data-toggle="tooltip" title="{$photo_menu.follow.0}"> <a class="contact-action-link btn-link" href="{$photo_menu.follow.1}" data-toggle="tooltip" title="{$photo_menu.follow.0}">
<i class="fa fa-user-plus" aria-hidden="true"></i> <i class="fa fa-user-plus" aria-hidden="true"></i>

View file

@ -1,8 +1,4 @@
<script type="text/javascript">
var dropContact = "{{$contact_drop_confirm}}";
</script>
{{$tabs nofilter}} {{$tabs nofilter}}
<div id="contacts" class="generic-page-wrapper"> <div id="contacts" class="generic-page-wrapper">

View file

@ -16,13 +16,13 @@
<a class="btn" id="contact-edit-actions-button">{{$contact_action_button}}</a> <a class="btn" id="contact-edit-actions-button">{{$contact_action_button}}</a>
<ul role="menu" aria-haspopup="true" id="contact-actions-menu" class="menu-popup"> <ul role="menu" aria-haspopup="true" id="contact-actions-menu" class="menu-popup">
{{if $lblsuggest}}<li role="menuitem"><a href="#" title="{{$contact_actions.suggest.title}}" onclick="window.location.href='{{$contact_actions.suggest.url}}'; return false;">{{$contact_actions.suggest.label}}</a></li>{{/if}} {{if $lblsuggest}}<li role="menuitem"><a href="#" title="{{$contact_actions.suggest.title}}" onclick="window.location.href='{{$contact_actions.suggest.url}}'; return false;">{{$contact_actions.suggest.label}}</a></li>{{/if}}
{{if $poll_enabled}}<li role="menuitem"><a href="#" title="{{$contact_actions.update.title}}" onclick="window.location.href='{{$contact_actions.update.url}}'; return false;">{{$contact_actions.update.label}}</a></li>{{/if}} {{if $poll_enabled}}<li role="menuitem"><a href="#" title="{{$contact_actions.update.title}}" onclick="window.location.href='{{$contact_actions.update.url}}'; return false;">{{$contact_actions.update.label}}</a></li>{{/if}}
{{if $contact_actions.updateprofile}}<li role="menuitem"><a href="{{$contact_actions.updateprofile.url}}" title="{{$contact_actions.updateprofile.title}}">{{$contact_actions.updateprofile.label}}</a></li>{{/if}} {{if $contact_actions.updateprofile}}<li role="menuitem"><a href="{{$contact_actions.updateprofile.url}}" title="{{$contact_actions.updateprofile.title}}">{{$contact_actions.updateprofile.label}}</a></li>{{/if}}
<li class="divider"></li> <li class="divider"></li>
<li role="menuitem"><a href="#" title="{{$contact_actions.block.title}}" onclick="window.location.href='{{$contact_actions.block.url}}'; return false;">{{$contact_actions.block.label}}</a></li> <li role="menuitem"><a href="#" title="{{$contact_actions.block.title}}" onclick="window.location.href='{{$contact_actions.block.url}}'; return false;">{{$contact_actions.block.label}}</a></li>
<li role="menuitem"><a href="#" title="{{$contact_actions.ignore.title}}" onclick="window.location.href='{{$contact_actions.ignore.url}}'; return false;">{{$contact_actions.ignore.label}}</a></li> <li role="menuitem"><a href="#" title="{{$contact_actions.ignore.title}}" onclick="window.location.href='{{$contact_actions.ignore.url}}'; return false;">{{$contact_actions.ignore.label}}</a></li>
{{if $contact_actions.delete.url}}<li role="menuitem"><a href="{{$contact_actions.delete.url}}" title="{{$contact_actions.delete.title}}" onclick="return confirmDelete();">{{$contact_actions.delete.label}}</a></li>{{/if}} {{if $contact_actions.revoke_follow.url}}<li role="menuitem"><a href="{{$contact_actions.revoke_follow.url}}" title="{{$contact_actions.revoke_follow.title}}">{{$contact_actions.revoke_follow.label}}</a></li>{{/if}}
</ul> </ul>
</div> </div>