kopia lustrzana https://github.com/friendica/friendica
Porównaj commity
11 Commity
c8fff8c50c
...
ad65e56b16
Autor | SHA1 | Data |
---|---|---|
Tobias Diekershoff | ad65e56b16 | |
Michael | 78dc61b59e | |
Hypolite Petovan | e9dcf15d86 | |
Michael | b40687081e | |
Michael | 50b1de5959 | |
Michael Vogel | 44344af055 | |
Jonathan Lamothe | cbcec17bcb | |
Hypolite Petovan | 9ab5d8a83a | |
Michael | 0d4f956fba | |
Hypolite Petovan | c71f4eb1df | |
Michael | 626ab7cb54 |
|
@ -61,7 +61,7 @@ Additionally to the search for content, there are keywords that can be used in t
|
|||
Alternatives are presented with "|".
|
||||
|
||||
* from - Use "from:nickname" or "from:nickname@domain.tld" to search for posts from a specific author.
|
||||
* to - Use "from:nickname" or "from:nickname@domain.tld" to search for posts with the given contact as receiver.
|
||||
* to - Use "to:nickname" or "to:nickname@domain.tld" to search for posts with the given contact as receiver.
|
||||
* group - Use "group:nickname" or "group:nickname@domain.tld" to search for group post of the given group.
|
||||
* application | relay - Use "application:nickname" or "application:nickname@domain.tld" to search for posts that had been reshared by the given relay application.
|
||||
* server - Use "server:hostname" to search for posts from a specific server. In the case of group postings, the search text contains both the hostname of the group server and the author's hostname.
|
||||
|
|
|
@ -30,7 +30,7 @@ Due to the large variety of operating systems and PHP platforms in existence we
|
|||
* Apache with mod-rewrite enabled and "Options All" so you can use a local `.htaccess` file
|
||||
* PHP 7.4+
|
||||
* PHP *command line* access with register_argc_argv set to true in the php.ini file
|
||||
* Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip, IntlChar and OpenSSL extensions
|
||||
* Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip, IntlChar, IDN and OpenSSL extensions
|
||||
* The POSIX module of PHP needs to be activated (e.g. [RHEL, CentOS](http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7) have disabled it)
|
||||
* Some form of email server or email gateway such that PHP mail() works.
|
||||
If you cannot set up your own email server, you can use the [phpmailer](https://github.com/friendica/friendica-addons/tree/develop/phpmailer) addon and use a remote SMTP server.
|
||||
|
|
|
@ -27,7 +27,7 @@ Requirements
|
|||
* Apache mit einer aktiverten mod-rewrite-Funktion und dem Eintrag "Options All", so dass du die lokale .htaccess-Datei nutzen kannst
|
||||
* PHP 7.4+
|
||||
* PHP *Kommandozeilen*-Zugang mit register_argc_argv auf "true" gesetzt in der php.ini-Datei
|
||||
* Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip, IntlChar and OpenSSL-Erweiterung
|
||||
* Curl, GD, GMP, PDO, mbstrings, MySQLi, hash, xml, zip, IntlChar, IDN und OpenSSL-Erweiterung
|
||||
* Das POSIX Modul muss aktiviert sein ([CentOS, RHEL](http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7http://www.bigsoft.co.uk/blog/index.php/2014/12/08/posix-php-commands-not-working-under-centos-7) haben dies z.B. deaktiviert)
|
||||
* Einen E-Mail Server, so dass PHP `mail()` funktioniert.
|
||||
Wenn kein eigener E-Mail Server zur Verfügung steht, kann alternativ das [phpmailer](https://github.com/friendica/friendica-addons/tree/develop/phpmailer) Addon mit einem externen SMTP Account verwendet werden.
|
||||
|
|
|
@ -440,9 +440,11 @@ class Item
|
|||
];
|
||||
|
||||
if (!empty($item['language'])) {
|
||||
$menu[$this->l10n->t('Languages')] = 'javascript:alert(\'' . ItemModel::getLanguageMessage($item) . '\');';
|
||||
$menu[$this->l10n->t('Languages')] = 'javascript:displayLanguage(' . $item['uri-id'] . ');';
|
||||
}
|
||||
|
||||
$menu[$this->l10n->t('Search Text')] = 'javascript:displaySearchText(' . $item['uri-id'] . ');';
|
||||
|
||||
if ((($cid == 0) || ($rel == Contact::FOLLOWER)) &&
|
||||
in_array($item['network'], Protocol::FEDERATED)
|
||||
) {
|
||||
|
|
|
@ -495,6 +495,13 @@ class Installer
|
|||
);
|
||||
$returnVal = $returnVal ? $status : false;
|
||||
|
||||
$status = $this->checkFunction('idn_to_ascii',
|
||||
DI::l10n()->t('IDN Functions PHP module'),
|
||||
DI::l10n()->t('Error: IDN Functions PHP module required but not installed.'),
|
||||
true
|
||||
);
|
||||
$returnVal = $returnVal ? $status : false;
|
||||
|
||||
return $returnVal;
|
||||
}
|
||||
|
||||
|
|
|
@ -4132,9 +4132,14 @@ class Item
|
|||
return is_numeric($hookData['item_id']) ? $hookData['item_id'] : 0;
|
||||
}
|
||||
|
||||
$curlResult = DI::httpClient()->head($uri, [HttpClientOptions::ACCEPT_CONTENT => HttpClientAccept::JSON_AS]);
|
||||
if (HTTPSignature::isValidContentType($curlResult->getContentType(), $uri)) {
|
||||
$fetched_uri = ActivityPub\Processor::fetchMissingActivity($uri, [], '', $completion, $uid);
|
||||
try {
|
||||
$curlResult = DI::httpClient()->head($uri, [HttpClientOptions::ACCEPT_CONTENT => HttpClientAccept::JSON_AS]);
|
||||
if (HTTPSignature::isValidContentType($curlResult->getContentType(), $uri)) {
|
||||
$fetched_uri = ActivityPub\Processor::fetchMissingActivity($uri, [], '', $completion, $uid);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
Logger::info('Invalid link', ['uid' => $uid, 'uri' => $uri, 'code' => $th->getCode(), 'message' => $th->getMessage()]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!empty($fetched_uri)) {
|
||||
|
|
|
@ -418,4 +418,12 @@ class Engagement
|
|||
}
|
||||
return $fullTextSearch;
|
||||
}
|
||||
|
||||
public static function unescapeKeywords(string $fullTextSearch): string
|
||||
{
|
||||
foreach (self::KEYWORDS as $keyword) {
|
||||
$fullTextSearch = preg_replace('~(' . $keyword . ')_(.[\w\*@\.-]+)~', '$1:$2', $fullTextSearch);
|
||||
}
|
||||
return $fullTextSearch;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -378,6 +378,11 @@ class Network extends Timeline
|
|||
}
|
||||
}
|
||||
|
||||
protected function setPing(bool $ping)
|
||||
{
|
||||
$this->ping = $ping;
|
||||
}
|
||||
|
||||
protected function getItems()
|
||||
{
|
||||
$conditionFields = ['uid' => $this->session->getLocalUserId()];
|
||||
|
|
|
@ -71,6 +71,8 @@ class Timeline extends BaseModule
|
|||
/** @var bool */
|
||||
protected $update;
|
||||
/** @var bool */
|
||||
protected $ping;
|
||||
/** @var bool */
|
||||
protected $raw;
|
||||
/** @var string */
|
||||
protected $order;
|
||||
|
@ -823,7 +825,7 @@ class Timeline extends BaseModule
|
|||
*/
|
||||
protected function setItemsSeenByCondition(array $condition)
|
||||
{
|
||||
if (empty($condition)) {
|
||||
if (empty($condition) || $this->ping) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
<?php
|
||||
/**
|
||||
* @copyright Copyright (C) 2010-2024, 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\Item;
|
||||
|
||||
use Friendica\App;
|
||||
use Friendica\BaseModule;
|
||||
use Friendica\Core\L10n;
|
||||
use Friendica\Core\Session\Capability\IHandleUserSessions;
|
||||
use Friendica\Model\Item;
|
||||
use Friendica\Model\Post;
|
||||
use Friendica\Module\Api\ApiResponse;
|
||||
use Friendica\Network\HTTPException;
|
||||
use Friendica\Util\Profiler;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
* Return the language of a given item uri-id
|
||||
*/
|
||||
class Language extends BaseModule
|
||||
{
|
||||
/** @var IHandleUserSessions */
|
||||
private $session;
|
||||
|
||||
public function __construct(IHandleUserSessions $session, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
|
||||
{
|
||||
parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
|
||||
|
||||
$this->session = $session;
|
||||
}
|
||||
|
||||
protected function rawContent(array $request = [])
|
||||
{
|
||||
if (!$this->session->isAuthenticated()) {
|
||||
throw new HttpException\ForbiddenException($this->l10n->t('Access denied.'));
|
||||
}
|
||||
|
||||
if (empty($this->parameters['id'])) {
|
||||
throw new HTTPException\BadRequestException();
|
||||
}
|
||||
|
||||
$item = Post::selectFirstForUser($this->session->getLocalUserId(), ['language'], ['uid' => [0, $this->session->getLocalUserId()], 'uri-id' => $this->parameters['id']]);
|
||||
if (empty($item)) {
|
||||
throw new HTTPException\NotFoundException();
|
||||
}
|
||||
|
||||
$this->httpExit(Item::getLanguageMessage($item));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
/**
|
||||
* @copyright Copyright (C) 2010-2024, 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\Item;
|
||||
|
||||
use Friendica\App;
|
||||
use Friendica\BaseModule;
|
||||
use Friendica\Core\L10n;
|
||||
use Friendica\Core\Session\Capability\IHandleUserSessions;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Model\Post;
|
||||
use Friendica\Module\Api\ApiResponse;
|
||||
use Friendica\Network\HTTPException;
|
||||
use Friendica\Util\Profiler;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
* Return the search text of a given item id
|
||||
*/
|
||||
class Searchtext extends BaseModule
|
||||
{
|
||||
/** @var IHandleUserSessions */
|
||||
private $session;
|
||||
|
||||
public function __construct(IHandleUserSessions $session, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
|
||||
{
|
||||
parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
|
||||
|
||||
$this->session = $session;
|
||||
}
|
||||
|
||||
protected function rawContent(array $request = [])
|
||||
{
|
||||
if (!$this->session->isAuthenticated()) {
|
||||
throw new HttpException\ForbiddenException($this->l10n->t('Access denied.'));
|
||||
}
|
||||
|
||||
if (empty($this->parameters['id'])) {
|
||||
throw new HTTPException\BadRequestException();
|
||||
}
|
||||
|
||||
$item = Post::selectFirstForUser($this->session->getLocalUserId(), ['uri-id'], ['uid' => [0, $this->session->getLocalUserId()], 'uri-id' => $this->parameters['id']]);
|
||||
if (empty($item)) {
|
||||
throw new HTTPException\NotFoundException();
|
||||
}
|
||||
|
||||
$search = DBA::selectFirst('post-searchindex', [], ['uri-id' => $item['uri-id']]);
|
||||
if (empty($search)) {
|
||||
throw new HTTPException\NotFoundException();
|
||||
}
|
||||
|
||||
$this->httpExit(Post\Engagement::unescapeKeywords($search['searchtext']));
|
||||
}
|
||||
}
|
|
@ -46,6 +46,7 @@ class Network extends NetworkModule
|
|||
System::httpExit('');
|
||||
}
|
||||
|
||||
$this->setPing(true);
|
||||
$this->itemsPerPage = 100;
|
||||
|
||||
if ($this->channel->isTimeline($this->selectedTab) || $this->userDefinedChannel->isTimeline($this->selectedTab, $this->session->getLocalUserId())) {
|
||||
|
|
|
@ -521,7 +521,7 @@ class Post
|
|||
|
||||
$languages = [];
|
||||
if (!empty($item['language'])) {
|
||||
$languages = [DI::l10n()->t('Languages'), Item::getLanguageMessage($item)];
|
||||
$languages = DI::l10n()->t('Languages');
|
||||
}
|
||||
|
||||
if (in_array($item['private'], [Item::PUBLIC, Item::UNLISTED]) && in_array($item['network'], Protocol::FEDERATED)) {
|
||||
|
@ -600,6 +600,7 @@ class Post
|
|||
'tagger' => $tagger,
|
||||
'filer' => $filer,
|
||||
'language' => $languages,
|
||||
'searchtext' => DI::l10n()->t('Search Text'),
|
||||
'drop' => $drop,
|
||||
'block' => $block,
|
||||
'ignore_author' => $ignore,
|
||||
|
|
|
@ -533,20 +533,29 @@ class Network
|
|||
{
|
||||
$parts = parse_url($uri);
|
||||
if (!empty($parts['scheme']) && !empty($parts['host'])) {
|
||||
$parts['host'] = idn_to_ascii($parts['host']);
|
||||
$parts['host'] = self::idnToAscii($parts['host']);
|
||||
$uri = (string)Uri::fromParts($parts);
|
||||
} else {
|
||||
$parts = explode('@', $uri);
|
||||
if (count($parts) == 2) {
|
||||
$uri = $parts[0] . '@' . idn_to_ascii($parts[1]);
|
||||
$uri = $parts[0] . '@' . self::idnToAscii($parts[1]);
|
||||
} else {
|
||||
$uri = idn_to_ascii($uri);
|
||||
$uri = self::idnToAscii($uri);
|
||||
}
|
||||
}
|
||||
|
||||
return $uri;
|
||||
}
|
||||
|
||||
private static function idnToAscii(string $uri): string
|
||||
{
|
||||
if (!function_exists('idn_to_ascii')) {
|
||||
Logger::error('IDN functions are missing.');
|
||||
return $uri;
|
||||
}
|
||||
return idn_to_ascii($uri);
|
||||
}
|
||||
|
||||
/**
|
||||
* Switch the scheme of an url between http and https
|
||||
*
|
||||
|
|
|
@ -480,7 +480,9 @@ return [
|
|||
'/activity/{verb}' => [Module\Item\Activity::class, [ R::POST]],
|
||||
'/follow' => [Module\Item\Follow::class, [ R::POST]],
|
||||
'/ignore' => [Module\Item\Ignore::class, [ R::POST]],
|
||||
'/language' => [Module\Item\Language::class, [R::GET]],
|
||||
'/pin' => [Module\Item\Pin::class, [ R::POST]],
|
||||
'/searchtext' => [Module\Item\Searchtext::class, [R::GET]],
|
||||
'/star' => [Module\Item\Star::class, [ R::POST]],
|
||||
],
|
||||
|
||||
|
|
|
@ -110,6 +110,8 @@ class InstallerTest extends MockedTest
|
|||
$this->mockL10nT('Error: File Information PHP module required but not installed.', 1);
|
||||
$this->mockL10nT('GNU Multiple Precision PHP module', 1);
|
||||
$this->mockL10nT('Error: GNU Multiple Precision PHP module required but not installed.', 1);
|
||||
$this->mockL10nT('IDN Functions PHP module', 1);
|
||||
$this->mockL10nT('Error: IDN Functions PHP module required but not installed.', 1);
|
||||
$this->mockL10nT('Program execution functions', 1);
|
||||
$this->mockL10nT('Error: Program execution functions (proc_open) required but not enabled.', 1);
|
||||
}
|
||||
|
|
|
@ -797,6 +797,18 @@ function getPosition(e) {
|
|||
return cursor;
|
||||
}
|
||||
|
||||
function displaySearchText(id) {
|
||||
$.get('item/' + id + '/searchtext', function(data) {
|
||||
alert(data);
|
||||
});
|
||||
}
|
||||
|
||||
function displayLanguage(id) {
|
||||
$.get('item/' + id + '/language', function(data) {
|
||||
alert(data);
|
||||
});
|
||||
}
|
||||
|
||||
var lockvisible = false;
|
||||
|
||||
function lockview(event, type, id) {
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 2024.06-dev\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-03-29 20:29+0000\n"
|
||||
"POT-Creation-Date: 2024-04-06 11:09+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -292,7 +292,7 @@ msgstr ""
|
|||
#: mod/message.php:201 mod/message.php:357 mod/photos.php:1297
|
||||
#: src/Content/Conversation.php:400 src/Content/Conversation.php:1583
|
||||
#: src/Module/Item/Compose.php:206 src/Module/Post/Edit.php:145
|
||||
#: src/Object/Post.php:624
|
||||
#: src/Object/Post.php:625
|
||||
msgid "Please wait"
|
||||
msgstr ""
|
||||
|
||||
|
@ -314,7 +314,7 @@ msgstr ""
|
|||
#: src/Module/Moderation/Report/Create.php:263
|
||||
#: src/Module/Profile/Profile.php:274 src/Module/Settings/Profile/Index.php:257
|
||||
#: src/Module/Settings/Server/Action.php:79 src/Module/User/Delegation.php:189
|
||||
#: src/Object/Post.php:1169 view/theme/duepuntozero/config.php:85
|
||||
#: src/Object/Post.php:1170 view/theme/duepuntozero/config.php:85
|
||||
#: view/theme/frio/config.php:150 view/theme/quattro/config.php:87
|
||||
#: view/theme/vier/config.php:135
|
||||
msgid "Submit"
|
||||
|
@ -599,25 +599,25 @@ msgstr ""
|
|||
|
||||
#: mod/photos.php:1135 mod/photos.php:1191 mod/photos.php:1271
|
||||
#: src/Module/Contact.php:618 src/Module/Item/Compose.php:188
|
||||
#: src/Object/Post.php:1166
|
||||
#: src/Object/Post.php:1167
|
||||
msgid "This is you"
|
||||
msgstr ""
|
||||
|
||||
#: mod/photos.php:1137 mod/photos.php:1193 mod/photos.php:1273
|
||||
#: src/Module/Moderation/Reports.php:95 src/Object/Post.php:618
|
||||
#: src/Object/Post.php:1168
|
||||
#: src/Module/Moderation/Reports.php:95 src/Object/Post.php:619
|
||||
#: src/Object/Post.php:1169
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
#: mod/photos.php:1139 mod/photos.php:1195 mod/photos.php:1275
|
||||
#: src/Content/Conversation.php:414 src/Module/Calendar/Event/Form.php:248
|
||||
#: src/Module/Item/Compose.php:201 src/Module/Post/Edit.php:165
|
||||
#: src/Object/Post.php:1182
|
||||
#: src/Object/Post.php:1183
|
||||
msgid "Preview"
|
||||
msgstr ""
|
||||
|
||||
#: mod/photos.php:1140 src/Content/Conversation.php:368
|
||||
#: src/Module/Post/Edit.php:130 src/Object/Post.php:1170
|
||||
#: src/Module/Post/Edit.php:130 src/Object/Post.php:1171
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -1244,7 +1244,7 @@ msgid "Visible to <strong>everybody</strong>"
|
|||
msgstr ""
|
||||
|
||||
#: src/Content/Conversation.php:338 src/Module/Item/Compose.php:200
|
||||
#: src/Object/Post.php:1181
|
||||
#: src/Object/Post.php:1182
|
||||
msgid "Please enter a image/video/audio/webpage URL:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1289,52 +1289,52 @@ msgid "attach file"
|
|||
msgstr ""
|
||||
|
||||
#: src/Content/Conversation.php:373 src/Module/Item/Compose.php:190
|
||||
#: src/Module/Post/Edit.php:171 src/Object/Post.php:1171
|
||||
#: src/Module/Post/Edit.php:171 src/Object/Post.php:1172
|
||||
msgid "Bold"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Conversation.php:374 src/Module/Item/Compose.php:191
|
||||
#: src/Module/Post/Edit.php:172 src/Object/Post.php:1172
|
||||
#: src/Module/Post/Edit.php:172 src/Object/Post.php:1173
|
||||
msgid "Italic"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Conversation.php:375 src/Module/Item/Compose.php:192
|
||||
#: src/Module/Post/Edit.php:173 src/Object/Post.php:1173
|
||||
#: src/Module/Post/Edit.php:173 src/Object/Post.php:1174
|
||||
msgid "Underline"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Conversation.php:376 src/Module/Item/Compose.php:193
|
||||
#: src/Module/Post/Edit.php:174 src/Object/Post.php:1175
|
||||
#: src/Module/Post/Edit.php:174 src/Object/Post.php:1176
|
||||
msgid "Quote"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Conversation.php:377 src/Module/Item/Compose.php:194
|
||||
#: src/Module/Post/Edit.php:175 src/Object/Post.php:1176
|
||||
#: src/Module/Post/Edit.php:175 src/Object/Post.php:1177
|
||||
msgid "Add emojis"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Conversation.php:378 src/Module/Item/Compose.php:195
|
||||
#: src/Object/Post.php:1174
|
||||
#: src/Object/Post.php:1175
|
||||
msgid "Content Warning"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Conversation.php:379 src/Module/Item/Compose.php:196
|
||||
#: src/Module/Post/Edit.php:176 src/Object/Post.php:1177
|
||||
#: src/Module/Post/Edit.php:176 src/Object/Post.php:1178
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Conversation.php:380 src/Module/Item/Compose.php:197
|
||||
#: src/Object/Post.php:1178
|
||||
#: src/Object/Post.php:1179
|
||||
msgid "Image"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Conversation.php:381 src/Module/Item/Compose.php:198
|
||||
#: src/Module/Post/Edit.php:177 src/Object/Post.php:1179
|
||||
#: src/Module/Post/Edit.php:177 src/Object/Post.php:1180
|
||||
msgid "Link"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Conversation.php:382 src/Module/Item/Compose.php:199
|
||||
#: src/Module/Post/Edit.php:178 src/Object/Post.php:1180
|
||||
#: src/Module/Post/Edit.php:178 src/Object/Post.php:1181
|
||||
msgid "Link or Media"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1792,7 +1792,7 @@ msgstr ""
|
|||
msgid "Display a list of folders in which posts are stored."
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Feature.php:137 src/Module/Conversation/Timeline.php:196
|
||||
#: src/Content/Feature.php:137 src/Module/Conversation/Timeline.php:198
|
||||
msgid "Own Contacts"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1887,7 +1887,7 @@ msgstr ""
|
|||
msgid "View Status"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Item.php:431 src/Content/Item.php:452 src/Model/Contact.php:1177
|
||||
#: src/Content/Item.php:431 src/Content/Item.php:454 src/Model/Contact.php:1177
|
||||
#: src/Model/Contact.php:1233 src/Model/Contact.php:1243
|
||||
#: src/Module/Directory.php:157 src/Module/Settings/Profile/Index.php:259
|
||||
msgid "View Profile"
|
||||
|
@ -1942,13 +1942,17 @@ msgstr ""
|
|||
msgid "Languages"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Item.php:449 src/Content/Widget.php:80
|
||||
#: src/Content/Item.php:446 src/Object/Post.php:603
|
||||
msgid "Search Text"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Item.php:451 src/Content/Widget.php:80
|
||||
#: src/Model/Contact.php:1236 src/Model/Contact.php:1248
|
||||
#: src/Module/Contact/Follow.php:167 view/theme/vier/theme.php:195
|
||||
msgid "Connect/Follow"
|
||||
msgstr ""
|
||||
|
||||
#: src/Content/Item.php:883
|
||||
#: src/Content/Item.php:885
|
||||
msgid "Unable to fetch user."
|
||||
msgstr ""
|
||||
|
||||
|
@ -2789,120 +2793,128 @@ msgstr ""
|
|||
msgid "Error: GNU Multiple Precision PHP module required but not installed."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:516
|
||||
msgid ""
|
||||
"The web installer needs to be able to create a file called \"local.config."
|
||||
"php\" in the \"config\" folder of your web server and it is unable to do so."
|
||||
#: src/Core/Installer.php:499
|
||||
msgid "IDN Functions PHP module"
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:517
|
||||
#: src/Core/Installer.php:500
|
||||
msgid "Error: IDN Functions PHP module required but not installed."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:523
|
||||
msgid ""
|
||||
"The web installer needs to be able to create a file called \"local.config.php"
|
||||
"\" in the \"config\" folder of your web server and it is unable to do so."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:524
|
||||
msgid ""
|
||||
"This is most often a permission setting, as the web server may not be able "
|
||||
"to write files in your folder - even if you can."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:518
|
||||
#: src/Core/Installer.php:525
|
||||
msgid ""
|
||||
"At the end of this procedure, we will give you a text to save in a file "
|
||||
"named local.config.php in your Friendica \"config\" folder."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:519
|
||||
#: src/Core/Installer.php:526
|
||||
msgid ""
|
||||
"You can alternatively skip this procedure and perform a manual installation. "
|
||||
"Please see the file \"doc/INSTALL.md\" for instructions."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:522
|
||||
#: src/Core/Installer.php:529
|
||||
msgid "config/local.config.php is writable"
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:542
|
||||
#: src/Core/Installer.php:549
|
||||
msgid ""
|
||||
"Friendica uses the Smarty3 template engine to render its web views. Smarty3 "
|
||||
"compiles templates to PHP to speed up rendering."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:543
|
||||
#: src/Core/Installer.php:550
|
||||
msgid ""
|
||||
"In order to store these compiled templates, the web server needs to have "
|
||||
"write access to the directory view/smarty3/ under the Friendica top level "
|
||||
"folder."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:544
|
||||
#: src/Core/Installer.php:551
|
||||
msgid ""
|
||||
"Please ensure that the user that your web server runs as (e.g. www-data) has "
|
||||
"write access to this folder."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:545
|
||||
#: src/Core/Installer.php:552
|
||||
msgid ""
|
||||
"Note: as a security measure, you should give the web server write access to "
|
||||
"view/smarty3/ only--not the template files (.tpl) that it contains."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:548
|
||||
#: src/Core/Installer.php:555
|
||||
msgid "view/smarty3 is writable"
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:576
|
||||
#: src/Core/Installer.php:583
|
||||
msgid ""
|
||||
"Url rewrite in .htaccess seems not working. Make sure you copied .htaccess-"
|
||||
"dist to .htaccess."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:577
|
||||
#: src/Core/Installer.php:584
|
||||
msgid ""
|
||||
"In some circumstances (like running inside containers), you can skip this "
|
||||
"error."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:579
|
||||
#: src/Core/Installer.php:586
|
||||
msgid "Error message from Curl when fetching"
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:585
|
||||
#: src/Core/Installer.php:592
|
||||
msgid "Url rewrite is working"
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:614
|
||||
#: src/Core/Installer.php:621
|
||||
msgid ""
|
||||
"The detection of TLS to secure the communication between the browser and the "
|
||||
"new Friendica server failed."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:615
|
||||
#: src/Core/Installer.php:622
|
||||
msgid ""
|
||||
"It is highly encouraged to use Friendica only over a secure connection as "
|
||||
"sensitive information like passwords will be transmitted."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:616
|
||||
#: src/Core/Installer.php:623
|
||||
msgid "Please ensure that the connection to the server is secure."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:617
|
||||
#: src/Core/Installer.php:624
|
||||
msgid "No TLS detected"
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:619
|
||||
#: src/Core/Installer.php:626
|
||||
msgid "TLS detected"
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:636
|
||||
#: src/Core/Installer.php:643
|
||||
msgid "ImageMagick PHP extension is not installed"
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:638
|
||||
#: src/Core/Installer.php:645
|
||||
msgid "ImageMagick PHP extension is installed"
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:659
|
||||
#: src/Core/Installer.php:666
|
||||
msgid "Database already in use."
|
||||
msgstr ""
|
||||
|
||||
#: src/Core/Installer.php:664
|
||||
#: src/Core/Installer.php:671
|
||||
msgid "Could not connect to database."
|
||||
msgstr ""
|
||||
|
||||
|
@ -3952,8 +3964,8 @@ msgid ""
|
|||
"profile\n"
|
||||
"\t\t\t(on the \"Profiles\" page) so that other people can easily find you.\n"
|
||||
"\n"
|
||||
"\t\t\tWe recommend adding a profile photo, adding some profile "
|
||||
"\"keywords\" (very useful\n"
|
||||
"\t\t\tWe recommend adding a profile photo, adding some profile \"keywords"
|
||||
"\" (very useful\n"
|
||||
"\t\t\tin making new friends) - and perhaps what country you live in; if you "
|
||||
"do not wish\n"
|
||||
"\t\t\tto be more specific than that.\n"
|
||||
|
@ -5727,9 +5739,9 @@ msgstr ""
|
|||
|
||||
#: src/Module/Admin/Summary.php:98
|
||||
msgid ""
|
||||
"The last update failed. Please run \"php bin/console.php dbstructure "
|
||||
"update\" from the command line and have a look at the errors that might "
|
||||
"appear. (Some of the errors are possibly inside the logfile.)"
|
||||
"The last update failed. Please run \"php bin/console.php dbstructure update"
|
||||
"\" from the command line and have a look at the errors that might appear. "
|
||||
"(Some of the errors are possibly inside the logfile.)"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Admin/Summary.php:102
|
||||
|
@ -5880,8 +5892,8 @@ msgstr ""
|
|||
#, php-format
|
||||
msgid ""
|
||||
"Show some informations regarding the needed information to operate the node "
|
||||
"according e.g. to <a href=\"%s\" target=\"_blank\" rel=\"noopener "
|
||||
"noreferrer\">EU-GDPR</a>."
|
||||
"according e.g. to <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer"
|
||||
"\">EU-GDPR</a>."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Admin/Tos.php:81
|
||||
|
@ -6652,7 +6664,8 @@ msgstr[1] ""
|
|||
#: src/Module/Debug/ItemBody.php:38 src/Module/Diaspora/Receive.php:57
|
||||
#: src/Module/Item/Display.php:96 src/Module/Item/Feed.php:59
|
||||
#: src/Module/Item/Follow.php:41 src/Module/Item/Ignore.php:41
|
||||
#: src/Module/Item/Pin.php:41 src/Module/Item/Pin.php:56
|
||||
#: src/Module/Item/Language.php:53 src/Module/Item/Pin.php:41
|
||||
#: src/Module/Item/Pin.php:56 src/Module/Item/Searchtext.php:53
|
||||
#: src/Module/Item/Star.php:42 src/Module/Update/Display.php:37
|
||||
msgid "Access denied."
|
||||
msgstr ""
|
||||
|
@ -7143,11 +7156,11 @@ msgstr ""
|
|||
msgid "Network feed not available."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Conversation/Timeline.php:200
|
||||
#: src/Module/Conversation/Timeline.php:202
|
||||
msgid "Include"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Conversation/Timeline.php:201
|
||||
#: src/Module/Conversation/Timeline.php:203
|
||||
msgid "Hide"
|
||||
msgstr ""
|
||||
|
||||
|
@ -9186,8 +9199,8 @@ msgstr ""
|
|||
#: src/Module/Profile/Profile.php:158
|
||||
#, php-format
|
||||
msgid ""
|
||||
"You're currently viewing your profile as <b>%s</b> <a href=\"%s\" "
|
||||
"class=\"btn btn-sm pull-right\">Cancel</a>"
|
||||
"You're currently viewing your profile as <b>%s</b> <a href=\"%s\" class="
|
||||
"\"btn btn-sm pull-right\">Cancel</a>"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Profile/Profile.php:167
|
||||
|
@ -9707,8 +9720,8 @@ msgstr ""
|
|||
#: src/Module/Security/TwoFactor/Verify.php:100
|
||||
#, php-format
|
||||
msgid ""
|
||||
"If you do not have access to your authentication code you can use a <a "
|
||||
"href=\"%s\">two-factor recovery code</a>."
|
||||
"If you do not have access to your authentication code you can use a <a href="
|
||||
"\"%s\">two-factor recovery code</a>."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Security/TwoFactor/Verify.php:101
|
||||
|
@ -11416,8 +11429,8 @@ msgstr ""
|
|||
#: src/Module/Settings/TwoFactor/Verify.php:152
|
||||
#, php-format
|
||||
msgid ""
|
||||
"<p>Or you can open the following URL in your mobile device:</p><p><a "
|
||||
"href=\"%s\">%s</a></p>"
|
||||
"<p>Or you can open the following URL in your mobile device:</p><p><a href="
|
||||
"\"%s\">%s</a></p>"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/TwoFactor/Verify.php:159
|
||||
|
@ -11526,9 +11539,9 @@ msgstr ""
|
|||
msgid ""
|
||||
"At any point in time a logged in user can export their account data from the "
|
||||
"<a href=\"%1$s/settings/userexport\">account settings</a>. If the user wants "
|
||||
"to delete their account they can do so at <a href=\"%1$s/settings/"
|
||||
"removeme\">%1$s/settings/removeme</a>. The deletion of the account will be "
|
||||
"permanent. Deletion of the data will also be requested from the nodes of the "
|
||||
"to delete their account they can do so at <a href=\"%1$s/settings/removeme\">"
|
||||
"%1$s/settings/removeme</a>. The deletion of the account will be permanent. "
|
||||
"Deletion of the data will also be requested from the nodes of the "
|
||||
"communication partners."
|
||||
msgstr ""
|
||||
|
||||
|
@ -12466,101 +12479,101 @@ msgstr ""
|
|||
msgid "via Wall-To-Wall:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:619
|
||||
#: src/Object/Post.php:620
|
||||
#, php-format
|
||||
msgid "Reply to %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:622
|
||||
#: src/Object/Post.php:623
|
||||
msgid "More"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:641
|
||||
#: src/Object/Post.php:642
|
||||
msgid "Notifier task is pending"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:642
|
||||
#: src/Object/Post.php:643
|
||||
msgid "Delivery to remote servers is pending"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:643
|
||||
#: src/Object/Post.php:644
|
||||
msgid "Delivery to remote servers is underway"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:644
|
||||
#: src/Object/Post.php:645
|
||||
msgid "Delivery to remote servers is mostly done"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:645
|
||||
#: src/Object/Post.php:646
|
||||
msgid "Delivery to remote servers is done"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:667
|
||||
#: src/Object/Post.php:668
|
||||
#, php-format
|
||||
msgid "%d comment"
|
||||
msgid_plural "%d comments"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/Object/Post.php:668
|
||||
#: src/Object/Post.php:669
|
||||
msgid "Show more"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:669
|
||||
#: src/Object/Post.php:670
|
||||
msgid "Show fewer"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:706
|
||||
#: src/Object/Post.php:707
|
||||
#, php-format
|
||||
msgid "Reshared by: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:711
|
||||
#: src/Object/Post.php:712
|
||||
#, php-format
|
||||
msgid "Viewed by: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:716
|
||||
#: src/Object/Post.php:717
|
||||
#, php-format
|
||||
msgid "Read by: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:721
|
||||
#: src/Object/Post.php:722
|
||||
#, php-format
|
||||
msgid "Liked by: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:726
|
||||
#: src/Object/Post.php:727
|
||||
#, php-format
|
||||
msgid "Disliked by: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:731
|
||||
#: src/Object/Post.php:732
|
||||
#, php-format
|
||||
msgid "Attended by: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:736
|
||||
#: src/Object/Post.php:737
|
||||
#, php-format
|
||||
msgid "Maybe attended by: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:741
|
||||
#: src/Object/Post.php:742
|
||||
#, php-format
|
||||
msgid "Not attended by: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:746
|
||||
#: src/Object/Post.php:747
|
||||
#, php-format
|
||||
msgid "Commented by: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:751
|
||||
#: src/Object/Post.php:752
|
||||
#, php-format
|
||||
msgid "Reacted with %s by: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Object/Post.php:774
|
||||
#: src/Object/Post.php:775
|
||||
#, php-format
|
||||
msgid "Quote shared by: %s"
|
||||
msgstr ""
|
||||
|
|
|
@ -221,10 +221,14 @@
|
|||
|
||||
{{if $item.language}}
|
||||
<li role="menuitem">
|
||||
<a id="language-{{$item.id}}" href="javascript:alert('{{$item.language.1}}');" class="btn-link filer-item language-icon" title="{{$item.language.0}}"><i class="fa fa-language" aria-hidden="true"></i> {{$item.language.0}}</a>
|
||||
<a id="language-{{$item.id}}" href="javascript:displayLanguage({{$item.uriid}});" class="btn-link filer-item language-icon" title="{{$item.language}}"><i class="fa fa-language" aria-hidden="true"></i> {{$item.language}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
<li role="menuitem">
|
||||
<a id="searchtext-{{$item.id}}" href="javascript:displaySearchText({{$item.uriid}});" class="btn-link filer-item search-icon" title="{{$item.searchtext}}"><i class="fa fa-search" aria-hidden="true"></i> {{$item.searchtext}}</a>
|
||||
</li>
|
||||
|
||||
{{if $item.browsershare}}
|
||||
<li role="menuitem" class="button-browser-share">
|
||||
<a id="browser-share-{{$item.id}}" href="javascript:navigator.share({url: '{{$item.plink.orig}}'});" class="btn-link button-browser-share" title="{{$item.browsershare.1}}"><i class="fa fa-share-alt" aria-hidden="true"></i> {{$item.browsershare.0}}</a>
|
||||
|
|
|
@ -433,10 +433,14 @@ as the value of $top_child_total (this is done at the end of this file)
|
|||
|
||||
{{if $item.language}}
|
||||
<li role="menuitem">
|
||||
<a id="language-{{$item.id}}" href="javascript:alert('{{$item.language.1}}');" class="btn-link filer-item language-icon" title="{{$item.language.0}}"><i class="fa fa-language" aria-hidden="true"></i> {{$item.language.0}}</a>
|
||||
<a id="language-{{$item.id}}" href="javascript:displayLanguage({{$item.uriid}});" class="btn-link filer-item language-icon" title="{{$item.language}}"><i class="fa fa-language" aria-hidden="true"></i> {{$item.language}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
<li role="menuitem">
|
||||
<a id="searchtext-{{$item.id}}" href="javascript:displaySearchText({{$item.uriid}});" class="btn-link filer-item search-icon" title="{{$item.searchtext}}"><i class="fa fa-search" aria-hidden="true"></i> {{$item.searchtext}}</a>
|
||||
</li>
|
||||
|
||||
{{if $item.browsershare}}
|
||||
<li role="menuitem" class="button-browser-share">
|
||||
<a id="browser-share-{{$item.id}}" href="javascript:navigator.share({url: '{{$item.plink.orig}}'})" class="btn-link button-browser-share" title="{{$item.browsershare.1}}"><i class="fa fa-share-alt" aria-hidden="true"></i> {{$item.browsershare.0}}</a>
|
||||
|
@ -616,10 +620,13 @@ as the value of $top_child_total (this is done at the end of this file)
|
|||
|
||||
{{if $item.language}}
|
||||
<li role="menuitem">
|
||||
<a id="language-{{$item.id}}" href="javascript:alert('{{$item.language.1}}');" class="btn-link filer-item language-icon" title="{{$item.language.0}}"><i class="fa fa-language" aria-hidden="true"></i> {{$item.language.0}}</a>
|
||||
<a id="language-{{$item.id}}" href="javascript:displayLanguage({{$item.uriid}});" class="btn-link filer-item language-icon" title="{{$item.language}}"><i class="fa fa-language" aria-hidden="true"></i> {{$item.language}}</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
<li role="menuitem">
|
||||
<a id="searchtext-{{$item.id}}" href="javascript:displaySearchText({{$item.uriid}});" class="btn-link filer-item search-icon" title="{{$item.searchtext}}"><i class="fa fa-search" aria-hidden="true"></i> {{$item.searchtext}}</a>
|
||||
</li>
|
||||
|
||||
{{if ($item.edpost || $item.tagger || $item.filer || $item.pin || $item.star || $item.follow_thread) && ($item.ignore || ($item.drop && $item.drop.dropping))}}
|
||||
<li role="separator" class="divider"></li>
|
||||
|
|
Ładowanie…
Reference in New Issue