Porównaj commity

...

11 Commity

Autor SHA1 Wiadomość Data
Tobias Diekershoff ad65e56b16
Merge pull request #14077 from annando/idn
Fallback mechanism for missing IDN functions
2024-04-07 08:11:35 +02:00
Michael 78dc61b59e Fallback mechanism for missing IDN functions 2024-04-06 11:26:12 +00:00
Hypolite Petovan e9dcf15d86
Merge pull request #14074 from annando/searchtext
Menu option to display the search text
2024-04-05 08:40:45 -04:00
Michael b40687081e The data for the language display is now fetched on demand 2024-04-05 10:29:27 +00:00
Michael 50b1de5959 Menu option to display the search text 2024-04-05 07:35:21 +00:00
Michael Vogel 44344af055
Merge pull request #14072 from jlamothe/from-to
fixed Channels documentation
2024-04-04 00:51:40 +02:00
Jonathan Lamothe cbcec17bcb fixed Channels documentation
The "to" keyword documentation seemed incorrect.
2024-04-03 15:48:03 -04:00
Hypolite Petovan 9ab5d8a83a
Merge pull request #14069 from annando/invalid-link
Avoid exception "Unable to retrieve the host in URL" in the search
2024-04-03 09:25:46 -04:00
Michael 0d4f956fba Avoid exception "Unable to retrieve the host in URL" in the search 2024-04-03 07:51:02 +00:00
Hypolite Petovan c71f4eb1df
Merge pull request #14068 from annando/wall-read
Don't set posts to seen on channel ping
2024-04-02 21:22:13 -04:00
Michael 626ab7cb54 Don't set posts to seen on channel ping 2024-04-02 21:31:57 +00:00
20 zmienionych plików z 323 dodań i 104 usunięć

Wyświetl plik

@ -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.

Wyświetl plik

@ -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.

Wyświetl plik

@ -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.

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

@ -378,6 +378,11 @@ class Network extends Timeline
}
}
protected function setPing(bool $ping)
{
$this->ping = $ping;
}
protected function getItems()
{
$conditionFields = ['uid' => $this->session->getLocalUserId()];

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

@ -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())) {

Wyświetl plik

@ -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,

Wyświetl plik

@ -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
*

Wyświetl plik

@ -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]],
],

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

@ -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 ""

Wyświetl plik

@ -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>&nbsp;{{$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>&nbsp;{{$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>&nbsp;{{$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>&nbsp;{{$item.browsershare.0}}</a>

Wyświetl plik

@ -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>&ensp;{{$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>&ensp;{{$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>&ensp;{{$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>&ensp;{{$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>&ensp;{{$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>&ensp;{{$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>&ensp;{{$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>