Porównaj commity

...

12 Commity

Autor SHA1 Wiadomość Data
Michael 45b30825f0 Isolate the link conversion into a dedicated function 2024-04-11 22:10:30 +00:00
Michael 7dc5622dca Issue #14079: Shorten the displayed URL 2024-04-11 04:37:42 +00:00
Hypolite Petovan ce580241e2
Merge pull request #14089 from annando/ping-lock
Prevent concurring ping requests
2024-04-10 19:19:24 -04:00
Michael a440619769 Prevent concurring ping requests 2024-04-10 22:25:14 +00:00
Tobias Diekershoff 9626a76b18
Merge pull request #14083 from annando/issue-13812
Issue 13812: Public groups with manual request approval
2024-04-09 18:46:44 +02:00
Tobias Diekershoff b02a5ed701
Merge pull request #14085 from annando/generator
Use similar values for generator and system actor
2024-04-09 18:38:22 +02:00
Michael 69fc2c04e4 Issue 13812: Public groups with manual request approval 2024-04-08 07:58:45 +00:00
Michael d7e8ee51ae Use similar values for generator and system actor 2024-04-08 06:33:03 +00:00
Tobias Diekershoff 02d8cc2f71
Merge pull request #14076 from annando/follow-vcard
Don't display the "follow/unfollow" vcard-link on pages meant for follow/unfollow
2024-04-08 07:35:16 +02:00
Tobias Diekershoff 0a88d5a94a
Merge pull request #14082 from annando/issue-14055
Issue 14055: Set link to group server for group posts
2024-04-08 07:31:53 +02:00
Michael 8b75aab4ad Don't display the "follow/unfollow" vcard-link on pages meant for follow/unfollow 2024-04-07 21:30:39 +00:00
Michael a2da42640c Issue 14055: Set link to group server for group posts 2024-04-07 15:46:55 +00:00
28 zmienionych plików z 420 dodań i 370 usunięć

Wyświetl plik

@ -136,7 +136,7 @@ function photos_post(App $a)
$visitor = 0; $visitor = 0;
$page_owner_uid = intval($user['uid']); $page_owner_uid = intval($user['uid']);
$community_page = $user['page-flags'] == User::PAGE_FLAGS_COMMUNITY; $community_page = in_array($user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_COMM_MAN]);
if (DI::userSession()->getLocalUserId() && (DI::userSession()->getLocalUserId() == $page_owner_uid)) { if (DI::userSession()->getLocalUserId() && (DI::userSession()->getLocalUserId() == $page_owner_uid)) {
$can_post = true; $can_post = true;
@ -618,7 +618,7 @@ function photos_content(App $a)
$owner_uid = $user['uid']; $owner_uid = $user['uid'];
$community_page = (($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false); $community_page = in_array($user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_COMM_MAN]);
if (DI::userSession()->getLocalUserId() && (DI::userSession()->getLocalUserId() == $owner_uid)) { if (DI::userSession()->getLocalUserId() && (DI::userSession()->getLocalUserId() == $owner_uid)) {
$can_post = true; $can_post = true;

Wyświetl plik

@ -51,7 +51,7 @@ use Friendica\Util\XML;
class BBCode class BBCode
{ {
// Update this value to the current date whenever changes are made to BBCode::convert // Update this value to the current date whenever changes are made to BBCode::convert
const VERSION = '2021-07-28'; const VERSION = '2024-04-07';
const INTERNAL = 0; const INTERNAL = 0;
const EXTERNAL = 1; const EXTERNAL = 1;
@ -146,8 +146,7 @@ class BBCode
case 'title': case 'title':
$value = self::toPlaintext(html_entity_decode($value, ENT_QUOTES, 'UTF-8')); $value = self::toPlaintext(html_entity_decode($value, ENT_QUOTES, 'UTF-8'));
$value = html_entity_decode($value, ENT_QUOTES, 'UTF-8'); $value = html_entity_decode($value, ENT_QUOTES, 'UTF-8');
$value = str_replace(['[', ']'], ['[', ']'], $value); $data['title'] = self::escapeUrl($value);
$data['title'] = $value;
default: default:
$data[$field] = html_entity_decode($value, ENT_QUOTES, 'UTF-8'); $data[$field] = html_entity_decode($value, ENT_QUOTES, 'UTF-8');
@ -551,71 +550,6 @@ class BBCode
return $text . "\n" . $data['after']; return $text . "\n" . $data['after'];
} }
/**
* Converts [url] BBCodes in a format that looks fine on Mastodon. (callback function)
*
* @param array $match Array with the matching values
* @return string reformatted link including HTML codes
*/
private static function convertUrlForActivityPubCallback(array $match): string
{
$url = $match[1];
if (isset($match[2]) && ($match[1] != $match[2])) {
return $match[0];
}
$parts = parse_url($url);
if (!isset($parts['scheme'])) {
return $match[0];
}
return self::convertUrlForActivityPub($url);
}
/**
* Converts [url] BBCodes in a format that looks fine on ActivityPub systems.
*
* @param string $url URL that is about to be reformatted
* @return string reformatted link including HTML codes
*/
private static function convertUrlForActivityPub(string $url): string
{
return sprintf('<a href="%s" target="_blank" rel="noopener noreferrer">%s</a>', $url, Strings::getStyledURL($url));
}
/*
* [noparse][i]italic[/i][/noparse] turns into
* [noparse][ i ]italic[ /i ][/noparse],
* to hide them from parser.
*
* @param array $match
* @return string
*/
private static function escapeNoparseCallback(array $match): string
{
$whole_match = $match[0];
$captured = $match[1];
$spacefied = preg_replace("/\[(.*?)\]/", "[ $1 ]", $captured);
$new_str = str_replace($captured, $spacefied, $whole_match);
return $new_str;
}
/*
* The previously spacefied [noparse][ i ]italic[ /i ][/noparse],
* now turns back and the [noparse] tags are trimmed
* returning [i]italic[/i]
*
* @param array $match
* @return string
*/
private static function unescapeNoparseCallback(array $match): string
{
$captured = $match[1];
$unspacefied = preg_replace("/\[ (.*?)\ ]/", "[$1]", $captured);
return $unspacefied;
}
/** /**
* Returns the bracket character positions of a set of opening and closing BBCode tags, optionally skipping first * Returns the bracket character positions of a set of opening and closing BBCode tags, optionally skipping first
* occurrences * occurrences
@ -1871,135 +1805,7 @@ class BBCode
$text = '<span style="font-size: xx-large; line-height: normal;">' . $text . '</span>'; $text = '<span style="font-size: xx-large; line-height: normal;">' . $text . '</span>';
} }
$text = preg_replace_callback("/\[(url)\](.*?)\[\/url\]/ism", [self::class, 'sanitizeLinksCallback'], $text); $text = self::convertUrlToHtml($text, $simple_html, $for_plaintext, $try_oembed, $try_oembed_callback);
$text = preg_replace_callback("/\[(url)\=(.*?)\](.*?)\[\/url\]/ism", [self::class, 'sanitizeLinksCallback'], $text);
// Handle mentions and hashtag links
if ($simple_html == self::DIASPORA) {
// The ! is converted to @ since Diaspora only understands the @
$text = preg_replace(
"/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'@<a href="$2">$3</a>',
$text
);
} elseif (in_array($simple_html, [self::OSTATUS, self::ACTIVITYPUB])) {
$text = preg_replace(
"/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<span class="h-card"><a href="$2" class="u-url mention">$1<span>$3</span></a></span>',
$text
);
$text = preg_replace(
"/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<a href="$2" class="mention hashtag" rel="tag">$1<span>$3</span></a>',
$text
);
} elseif (in_array($simple_html, [self::INTERNAL, self::EXTERNAL, self::TWITTER_API])) {
$text = preg_replace(
"/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<bdi>$1<a href="$2" class="userinfo mention" title="$3">$3</a></bdi>',
$text
);
} elseif ($simple_html == self::MASTODON_API) {
$text = preg_replace(
"/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<a class="u-url mention status-link" href="$2" rel="nofollow noopener noreferrer" target="_blank" title="$3">$1<span>$3</span></a>',
$text
);
$text = preg_replace(
"/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<a class="mention hashtag status-link" href="$2" rel="tag">$1<span>$3</span></a>',
$text
);
} else {
$text = preg_replace("/([#@!])\[url\=(.*?)\](.*?)\[\/url\]/ism", '$1$3', $text);
}
if (!$for_plaintext) {
if (in_array($simple_html, [self::OSTATUS, self::MASTODON_API, self::TWITTER_API, self::ACTIVITYPUB])) {
$text = preg_replace_callback("/\[url\](.*?)\[\/url\]/ism", [self::class, 'convertUrlForActivityPubCallback'], $text);
$text = preg_replace_callback("/\[url\=(.*?)\](.*?)\[\/url\]/ism", [self::class, 'convertUrlForActivityPubCallback'], $text);
}
} else {
$text = preg_replace("(\[url\](.*?)\[\/url\])ism", " $1 ", $text);
$text = preg_replace_callback("&\[url=([^\[\]]*)\]\[img\](.*)\[\/img\]\[\/url\]&Usi", [self::class, 'removePictureLinksCallback'], $text);
}
// Bookmarks in red - will be converted to bookmarks in friendica
$text = preg_replace("/#\^\[url\](.*?)\[\/url\]/ism", '[bookmark=$1]$1[/bookmark]', $text);
$text = preg_replace("/#\^\[url\=(.*?)\](.*?)\[\/url\]/ism", '[bookmark=$1]$2[/bookmark]', $text);
$text = preg_replace(
"/#\[url\=.*?\]\^\[\/url\]\[url\=(.*?)\](.*?)\[\/url\]/i",
"[bookmark=$1]$2[/bookmark]",
$text
);
if (in_array($simple_html, [self::OSTATUS, self::TWITTER, self::BLUESKY])) {
$text = preg_replace_callback("/([^#@!])\[url\=([^\]]*)\](.*?)\[\/url\]/ism", [self::class, 'expandLinksCallback'], $text);
//$text = preg_replace("/[^#@!]\[url\=([^\]]*)\](.*?)\[\/url\]/ism", ' $2 [url]$1[/url]', $text);
$text = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", ' $2 [url]$1[/url]', $text);
}
// Perform URL Search
if ($try_oembed) {
$text = preg_replace_callback("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", $try_oembed_callback, $text);
}
$text = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", '[url=$1]$2[/url]', $text);
// Handle Diaspora posts
$text = preg_replace_callback(
"&\[url=/?posts/([^\[\]]*)\](.*)\[\/url\]&Usi",
function ($match) {
return "[url=" . DI::baseUrl() . "/display/" . $match[1] . "]" . $match[2] . "[/url]";
},
$text
);
$text = preg_replace_callback(
"&\[url=/people\?q\=(.*)\](.*)\[\/url\]&Usi",
function ($match) {
return "[url=" . DI::baseUrl() . "/search?search=%40" . $match[1] . "]" . $match[2] . "[/url]";
},
$text
);
// Server independent link to posts and comments
// See issue: https://github.com/diaspora/diaspora_federation/issues/75
$expression = "=diaspora://.*?/post/([0-9A-Za-z\-_@.:]{15,254}[0-9A-Za-z])=ism";
$text = preg_replace($expression, DI::baseUrl() . "/display/$1", $text);
/* Tag conversion
* Supports:
* - #[url=<anything>]<term>[/url]
* - [url=<anything>]#<term>[/url]
*/
self::performWithEscapedTags($text, ['url', 'share'], function ($text) use ($simple_html) {
$text = preg_replace_callback("/(?:#\[url\=[^\[\]]*\]|\[url\=[^\[\]]*\]#)(.*?)\[\/url\]/ism", function ($matches) use ($simple_html) {
if ($simple_html == self::ACTIVITYPUB) {
return '<a href="' . DI::baseUrl() . '/search?tag=' . urlencode($matches[1])
. '" data-tag="' . XML::escape($matches[1]) . '" rel="tag ugc">#'
. XML::escape($matches[1]) . '</a>';
} else {
return '#<a href="' . DI::baseUrl() . '/search?tag=' . urlencode($matches[1])
. '" class="tag" rel="tag" title="' . XML::escape($matches[1]) . '">'
. XML::escape($matches[1]) . '</a>';
}
}, $text);
return $text;
});
// We need no target="_blank" rel="noopener noreferrer" for local links
// convert links start with DI::baseUrl() as local link without the target="_blank" rel="noopener noreferrer" attribute
$escapedBaseUrl = preg_quote(DI::baseUrl(), '/');
$text = preg_replace("/\[url\](" . $escapedBaseUrl . ".*?)\[\/url\]/ism", '<a href="$1">$1</a>', $text);
$text = preg_replace("/\[url\=(" . $escapedBaseUrl . ".*?)\](.*?)\[\/url\]/ism", '<a href="$1">$2</a>', $text);
$text = preg_replace("/\[url\](.*?)\[\/url\]/ism", '<a href="$1" target="_blank" rel="noopener noreferrer">$1</a>', $text);
$text = preg_replace("/\[url\=(.*?)\](.*?)\[\/url\]/ism", '<a href="$1" target="_blank" rel="noopener noreferrer">$2</a>', $text);
// Red compatibility, though the link can't be authenticated on Friendica
$text = preg_replace("/\[zrl\=(.*?)\](.*?)\[\/zrl\]/ism", '<a href="$1" target="_blank" rel="noopener noreferrer">$2</a>', $text);
// we may need to restrict this further if it picks up too many strays // we may need to restrict this further if it picks up too many strays
// link acct:user@host to a webfinger profile redirector // link acct:user@host to a webfinger profile redirector
@ -2112,6 +1918,176 @@ class BBCode
return trim($text); return trim($text);
} }
private static function convertUrlToHtml(string $text, int $simple_html, bool $for_plaintext, bool $try_oembed, \Closure $try_oembed_callback): string
{
$text = preg_replace_callback("/\[(url)\](.*?)\[\/url\]/ism", [self::class, 'sanitizeLinksCallback'], $text);
$text = preg_replace_callback("/\[(url)\=(.*?)\](.*?)\[\/url\]/ism", [self::class, 'sanitizeLinksCallback'], $text);
// Handle mentions and hashtag links
if ($simple_html == self::DIASPORA) {
// The ! is converted to @ since Diaspora only understands the @
$text = preg_replace(
"/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'@<a href="$2">$3</a>',
$text
);
} elseif (in_array($simple_html, [self::OSTATUS, self::ACTIVITYPUB])) {
$text = preg_replace(
"/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<span class="h-card"><a href="$2" class="u-url mention">$1<span>$3</span></a></span>',
$text
);
$text = preg_replace(
"/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<a href="$2" class="mention hashtag" rel="tag">$1<span>$3</span></a>',
$text
);
} elseif (in_array($simple_html, [self::INTERNAL, self::EXTERNAL, self::TWITTER_API])) {
$text = preg_replace(
"/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<bdi>$1<a href="$2" class="userinfo mention" title="$3">$3</a></bdi>',
$text
);
} elseif ($simple_html == self::MASTODON_API) {
$text = preg_replace(
"/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<a class="u-url mention status-link" href="$2" rel="nofollow noopener noreferrer" target="_blank" title="$3">$1<span>$3</span></a>',
$text
);
$text = preg_replace(
"/([#])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'<a class="mention hashtag status-link" href="$2" rel="tag">$1<span>$3</span></a>',
$text
);
} else {
$text = preg_replace("/([#@!])\[url\=(.*?)\](.*?)\[\/url\]/ism", '$1$3', $text);
}
if ($for_plaintext) {
$text = preg_replace("(\[url\](.*?)\[\/url\])ism", " $1 ", $text);
$text = preg_replace_callback("&\[url=([^\[\]]*)\]\[img\](.*)\[\/img\]\[\/url\]&Usi", [self::class, 'removePictureLinksCallback'], $text);
}
// Bookmarks in red - will be converted to bookmarks in friendica
$text = preg_replace("/#\^\[url\](.*?)\[\/url\]/ism", '[bookmark=$1]$1[/bookmark]', $text);
$text = preg_replace("/#\^\[url\=(.*?)\](.*?)\[\/url\]/ism", '[bookmark=$1]$2[/bookmark]', $text);
$text = preg_replace(
"/#\[url\=.*?\]\^\[\/url\]\[url\=(.*?)\](.*?)\[\/url\]/i",
"[bookmark=$1]$2[/bookmark]",
$text
);
if (in_array($simple_html, [self::OSTATUS, self::TWITTER, self::BLUESKY])) {
$text = preg_replace_callback("/([^#@!])\[url\=([^\]]*)\](.*?)\[\/url\]/ism", [self::class, 'expandLinksCallback'], $text);
//$text = preg_replace("/[^#@!]\[url\=([^\]]*)\](.*?)\[\/url\]/ism", ' $2 [url]$1[/url]', $text);
$text = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", ' $2 [url]$1[/url]', $text);
}
// Perform URL Search
if ($try_oembed) {
$text = preg_replace_callback("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", $try_oembed_callback, $text);
}
$text = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", '[url=$1]$2[/url]', $text);
// Handle Diaspora posts
$text = preg_replace_callback(
"&\[url=/?posts/([^\[\]]*)\](.*)\[\/url\]&Usi",
function ($match) {
return "[url=" . DI::baseUrl() . "/display/" . $match[1] . "]" . $match[2] . "[/url]";
},
$text
);
$text = preg_replace_callback(
"&\[url=/people\?q\=(.*)\](.*)\[\/url\]&Usi",
function ($match) {
return "[url=" . DI::baseUrl() . "/search?search=%40" . $match[1] . "]" . $match[2] . "[/url]";
},
$text
);
// Server independent link to posts and comments
// See issue: https://github.com/diaspora/diaspora_federation/issues/75
$expression = "=diaspora://.*?/post/([0-9A-Za-z\-_@.:]{15,254}[0-9A-Za-z])=ism";
$text = preg_replace($expression, DI::baseUrl() . "/display/$1", $text);
/* Tag conversion
* Supports:
* - #[url=<anything>]<term>[/url]
* - [url=<anything>]#<term>[/url]
*/
self::performWithEscapedTags($text, ['url', 'share'], function ($text) use ($simple_html) {
$text = preg_replace_callback("/(?:#\[url\=[^\[\]]*\]|\[url\=[^\[\]]*\]#)(.*?)\[\/url\]/ism", function ($matches) use ($simple_html) {
if ($simple_html == self::ACTIVITYPUB) {
return '<a href="' . DI::baseUrl() . '/search?tag=' . urlencode($matches[1])
. '" data-tag="' . XML::escape($matches[1]) . '" rel="tag ugc">#'
. XML::escape($matches[1]) . '</a>';
} else {
return '#<a href="' . DI::baseUrl() . '/search?tag=' . urlencode($matches[1])
. '" class="tag" rel="tag" title="' . XML::escape($matches[1]) . '">'
. XML::escape($matches[1]) . '</a>';
}
}, $text);
return $text;
});
// Red compatibility, though the link can't be authenticated on Friendica
$text = preg_replace("/\[zrl\=(.*?)\](.*?)\[\/zrl\]/ism", '[url=$1]$2[/url]', $text);
if (in_array($simple_html, [self::INTERNAL, self::EXTERNAL, self::DIASPORA, self::OSTATUS, self::MASTODON_API, self::TWITTER_API, self::ACTIVITYPUB])) {
$text = self::shortenLinkDescription($text);
} else {
$text = self::unifyLinks($text);
}
// We need no target="_blank" rel="noopener noreferrer" for local links
// convert links start with DI::baseUrl() as local link without the target="_blank" rel="noopener noreferrer" attribute
$text = preg_replace("/\[url\=(" . preg_quote(DI::baseUrl(), '/') . ".*?)\](.*?)\[\/url\]/ism", '<a href="$1">$2</a>', $text);
$text = preg_replace("/\[url\=(.*?)\](.*?)\[\/url\]/ism", '<a href="$1" target="_blank" rel="noopener noreferrer">$2</a>', $text);
return $text;
}
private static function escapeUrl(string $url): string
{
return str_replace(['[', ']'], ['&#91;', '&#93;'], $url);
}
private static function unifyLinks(string $text): string
{
return preg_replace_callback(
"/\[url\](.*?)\[\/url\]/ism",
function ($match) {
return "[url=" . self::escapeUrl($match[1]) . "]" . $match[1] . "[/url]";
},
$text
);
}
private static function shortenLinkDescription(string $text): string
{
$text = preg_replace_callback(
"/\[url\](.*?)\[\/url\]/ism",
function ($match) {
return "[url=" . self::escapeUrl($match[1]) . "]" . Strings::getStyledURL($match[1]) . "[/url]";
},
$text
);
$text = preg_replace_callback(
"/\[url\=(.*?)\](.*?)\[\/url\]/ism",
function ($match) {
if ($match[1] == $match[2]) {
return "[url=" . self::escapeUrl($match[1]) . "]" . Strings::getStyledURL($match[2]) . "[/url]";
} else {
return "[url=" . self::escapeUrl($match[1]) . "]" . $match[2] . "[/url]";
}
},
$text
);
return $text;
}
/** /**
* Strips the "abstract" tag from the provided text * Strips the "abstract" tag from the provided text
* *

Wyświetl plik

@ -43,9 +43,10 @@ class VCard
* @template widget/vcard.tpl * @template widget/vcard.tpl
* @param array $contact * @param array $contact
* @param bool $hide_mention * @param bool $hide_mention
* @param bool $hide_follow
* @return string * @return string
*/ */
public static function getHTML(array $contact, bool $hide_mention = false): string public static function getHTML(array $contact, bool $hide_mention = false, bool $hide_follow = false): string
{ {
if (!isset($contact['network']) || !isset($contact['id'])) { if (!isset($contact['network']) || !isset($contact['id'])) {
Logger::warning('Incomplete contact', ['contact' => $contact ?? []]); Logger::warning('Incomplete contact', ['contact' => $contact ?? []]);
@ -87,7 +88,7 @@ class VCard
} }
} }
if (empty($contact['self']) && Protocol::supportsFollow($contact['network'])) { if (!$hide_follow && empty($contact['self']) && Protocol::supportsFollow($contact['network'])) {
if (in_array($rel, [Contact::SHARING, Contact::FRIEND])) { if (in_array($rel, [Contact::SHARING, Contact::FRIEND])) {
$unfollow_link = 'contact/unfollow?url=' . urlencode($contact_url) . '&auto=1'; $unfollow_link = 'contact/unfollow?url=' . urlencode($contact_url) . '&auto=1';
} elseif (!$pending) { } elseif (!$pending) {

Wyświetl plik

@ -892,10 +892,10 @@ class Contact
$fields['avatar'] = User::getAvatarUrl($user); $fields['avatar'] = User::getAvatarUrl($user);
$fields['header'] = User::getBannerUrl($user); $fields['header'] = User::getBannerUrl($user);
$fields['forum'] = $user['page-flags'] == User::PAGE_FLAGS_COMMUNITY; $fields['forum'] = in_array($user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_COMM_MAN]);
$fields['prv'] = $user['page-flags'] == User::PAGE_FLAGS_PRVGROUP; $fields['prv'] = $user['page-flags'] == User::PAGE_FLAGS_PRVGROUP;
$fields['unsearchable'] = !$profile['net-publish']; $fields['unsearchable'] = !$profile['net-publish'];
$fields['manually-approve'] = in_array($user['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP]); $fields['manually-approve'] = in_array($user['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP, User::PAGE_FLAGS_COMM_MAN]);
$fields['baseurl'] = DI::baseUrl(); $fields['baseurl'] = DI::baseUrl();
$fields['gsid'] = GServer::getID($fields['baseurl'], true); $fields['gsid'] = GServer::getID($fields['baseurl'], true);

Wyświetl plik

@ -3990,6 +3990,13 @@ class Item
$plink = $item['uri']; $plink = $item['uri'];
} }
if (($item['post-reason'] == self::PR_ANNOUNCEMENT) && ($item['owner-contact-type'] == Contact::TYPE_COMMUNITY) && ($item['owner-network'] == Protocol::DFRN)) {
$contact = Contact::getById($item['owner-id'], ['baseurl']);
if (!empty($contact['baseurl'])) {
$plink = $contact['baseurl'] . '/display/' . $item['guid'];
}
}
if (DI::userSession()->getLocalUserId()) { if (DI::userSession()->getLocalUserId()) {
$ret = [ $ret = [
'href' => "display/" . $item['guid'], 'href' => "display/" . $item['guid'],

Wyświetl plik

@ -25,6 +25,7 @@ use DivineOmega\DOFileCachePSR6\CacheItemPool;
use DivineOmega\PasswordExposed; use DivineOmega\PasswordExposed;
use ErrorException; use ErrorException;
use Exception; use Exception;
use Friendica\App;
use Friendica\Content\Pager; use Friendica\Content\Pager;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\L10n; use Friendica\Core\L10n;
@ -72,6 +73,7 @@ class User
const PAGE_FLAGS_FREELOVE = 3; const PAGE_FLAGS_FREELOVE = 3;
const PAGE_FLAGS_BLOG = 4; const PAGE_FLAGS_BLOG = 4;
const PAGE_FLAGS_PRVGROUP = 5; const PAGE_FLAGS_PRVGROUP = 5;
const PAGE_FLAGS_COMM_MAN = 6;
/** /**
* @} * @}
*/ */
@ -161,6 +163,7 @@ class User
} }
} }
$system['name'] = App::PLATFORM . " '" . App::CODENAME . "' " . App::VERSION . '-' . DB_UPDATE_VERSION;
$system['sprvkey'] = $system['uprvkey'] = $system['prvkey']; $system['sprvkey'] = $system['uprvkey'] = $system['prvkey'];
$system['spubkey'] = $system['upubkey'] = $system['pubkey']; $system['spubkey'] = $system['upubkey'] = $system['pubkey'];
$system['nickname'] = $system['nick']; $system['nickname'] = $system['nick'];

Wyświetl plik

@ -51,7 +51,7 @@ class Whoami extends BaseApi
$data['name'] = $owner['name']; $data['name'] = $owner['name'];
$data['preferredUsername'] = $owner['nick']; $data['preferredUsername'] = $owner['nick'];
$data['alsoKnownAs'] = []; $data['alsoKnownAs'] = [];
$data['manuallyApprovesFollowers'] = in_array($owner['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP]); $data['manuallyApprovesFollowers'] = in_array($owner['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP, User::PAGE_FLAGS_COMM_MAN]);
$data['discoverable'] = (bool)$owner['net-publish']; $data['discoverable'] = (bool)$owner['net-publish'];
$data['tag'] = []; $data['tag'] = [];

Wyświetl plik

@ -71,6 +71,7 @@ class UpdateCredentials extends BaseApi
} }
if ($user['account-type'] == Contact::TYPE_COMMUNITY) { if ($user['account-type'] == Contact::TYPE_COMMUNITY) {
// @todo Support for PAGE_FLAGS_COMM_MAN
$user['page-flags'] = $request['locked'] ? User::PAGE_FLAGS_PRVGROUP : User::PAGE_FLAGS_COMMUNITY; $user['page-flags'] = $request['locked'] ? User::PAGE_FLAGS_PRVGROUP : User::PAGE_FLAGS_COMMUNITY;
} elseif ($user['account-type'] == Contact::TYPE_PERSON) { } elseif ($user['account-type'] == Contact::TYPE_PERSON) {
if ($request['locked']) { if ($request['locked']) {

Wyświetl plik

@ -186,7 +186,7 @@ class Follow extends BaseModule
$this->page['aside'] = ''; $this->page['aside'] = '';
if (!in_array($protocol, [Protocol::PHANTOM, Protocol::MAIL])) { if (!in_array($protocol, [Protocol::PHANTOM, Protocol::MAIL])) {
$this->page['aside'] = VCard::getHTML($contact); $this->page['aside'] = VCard::getHTML($contact, false, true);
$output .= Renderer::replaceMacros(Renderer::getMarkupTemplate('section_title.tpl'), $output .= Renderer::replaceMacros(Renderer::getMarkupTemplate('section_title.tpl'),
['$title' => $this->t('Posts and Replies')] ['$title' => $this->t('Posts and Replies')]

Wyświetl plik

@ -133,7 +133,7 @@ class Unfollow extends \Friendica\BaseModule
'$keywords_label' => '' '$keywords_label' => ''
]); ]);
$this->page['aside'] = Widget\VCard::getHTML(Contact::getByURL($contact['url'], false)); $this->page['aside'] = Widget\VCard::getHTML(Contact::getByURL($contact['url'], false), false, true);
$o .= Renderer::replaceMacros(Renderer::getMarkupTemplate('section_title.tpl'), ['$title' => $this->t('Posts and Replies')]); $o .= Renderer::replaceMacros(Renderer::getMarkupTemplate('section_title.tpl'), ['$title' => $this->t('Posts and Replies')]);

Wyświetl plik

@ -53,7 +53,7 @@ class HCard extends BaseModule
$page = DI::page(); $page = DI::page();
if (!empty($profile['page-flags']) && ($profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) { if (!empty($profile['page-flags']) && in_array($profile['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_COMM_MAN])) {
$page['htmlhead'] .= '<meta name="friendica.community" content="true" />'; $page['htmlhead'] .= '<meta name="friendica.community" content="true" />';
} }
if (!empty($profile['openidserver'])) { if (!empty($profile['openidserver'])) {

Wyświetl plik

@ -119,6 +119,7 @@ abstract class BaseUsers extends BaseModeration
User::PAGE_FLAGS_NORMAL => $this->t('Normal Account Page'), User::PAGE_FLAGS_NORMAL => $this->t('Normal Account Page'),
User::PAGE_FLAGS_SOAPBOX => $this->t('Soapbox Page'), User::PAGE_FLAGS_SOAPBOX => $this->t('Soapbox Page'),
User::PAGE_FLAGS_COMMUNITY => $this->t('Public Group'), User::PAGE_FLAGS_COMMUNITY => $this->t('Public Group'),
User::PAGE_FLAGS_COMM_MAN => $this->t('Public Group - Restricted'),
User::PAGE_FLAGS_FREELOVE => $this->t('Automatic Friend Page'), User::PAGE_FLAGS_FREELOVE => $this->t('Automatic Friend Page'),
User::PAGE_FLAGS_PRVGROUP => $this->t('Private Group') User::PAGE_FLAGS_PRVGROUP => $this->t('Private Group')
]; ];

Wyświetl plik

@ -28,17 +28,14 @@ use Friendica\Content\GroupManager;
use Friendica\Core\Cache\Capability\ICanCache; use Friendica\Core\Cache\Capability\ICanCache;
use Friendica\Core\Cache\Enum\Duration; use Friendica\Core\Cache\Enum\Duration;
use Friendica\Core\Config\Capability\IManageConfigValues; use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\Hook;
use Friendica\Core\L10n; use Friendica\Core\L10n;
use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues; use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
use Friendica\Core\Session\Capability\IHandleUserSessions; use Friendica\Core\Session\Capability\IHandleUserSessions;
use Friendica\Database\Database; use Friendica\Database\Database;
use Friendica\Database\DBA;
use Friendica\Model\Circle; use Friendica\Model\Circle;
use Friendica\Model\Post; use Friendica\Model\Post;
use Friendica\Model\User; use Friendica\Model\User;
use Friendica\Model\Verb; use Friendica\Model\Verb;
use Friendica\Module\Conversation\Network;
use Friendica\Module\Register; use Friendica\Module\Register;
use Friendica\Module\Response; use Friendica\Module\Response;
use Friendica\Navigation\Notifications\Entity; use Friendica\Navigation\Notifications\Entity;
@ -191,7 +188,7 @@ class Ping extends BaseModule
if (!$this->notify->shouldShowOnDesktop($notification)) { if (!$this->notify->shouldShowOnDesktop($notification)) {
return null; return null;
} }
if (($notification->type == Post\UserNotification::TYPE_NONE) && in_array($owner['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP])) { if (($notification->type == Post\UserNotification::TYPE_NONE) && in_array($owner['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP, User::PAGE_FLAGS_COMM_MAN])) {
return null; return null;
} }
try { try {

Wyświetl plik

@ -21,11 +21,43 @@
namespace Friendica\Module\Ping; namespace Friendica\Module\Ping;
use Friendica\App;
use Friendica\App\Mode;
use Friendica\Content\Conversation;
use Friendica\Content\Conversation\Factory\Timeline as TimelineFactory;
use Friendica\Content\Conversation\Repository\UserDefinedChannel;
use Friendica\Content\Conversation\Factory\Channel as ChannelFactory;
use Friendica\Content\Conversation\Factory\UserDefinedChannel as UserDefinedChannelFactory;
use Friendica\Content\Conversation\Factory\Community as CommunityFactory;
use Friendica\Content\Conversation\Factory\Network as NetworkFactory;
use Friendica\Core\Cache\Capability\ICanCache;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\L10n;
use Friendica\Core\Lock\Capability\ICanLock;
use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
use Friendica\Core\Session\Capability\IHandleUserSessions;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\Database\Database;
use Friendica\Module\Conversation\Network as NetworkModule; use Friendica\Module\Conversation\Network as NetworkModule;
use Friendica\Module\Response;
use Friendica\Navigation\SystemMessages;
use Friendica\Util\Profiler;
use Psr\Log\LoggerInterface;
class Network extends NetworkModule class Network extends NetworkModule
{ {
/**
* @var ICanLock
*/
private $lock;
public function __construct(ICanLock $lock, UserDefinedChannelFactory $userDefinedChannel, NetworkFactory $network, CommunityFactory $community, ChannelFactory $channelFactory, UserDefinedChannel $channel, App $app, TimelineFactory $timeline, SystemMessages $systemMessages, Mode $mode, Conversation $conversation, App\Page $page, IHandleUserSessions $session, Database $database, IManagePersonalConfigValues $pConfig, IManageConfigValues $config, ICanCache $cache, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
{
parent::__construct($userDefinedChannel, $network, $community, $channelFactory, $channel, $app, $timeline, $systemMessages, $mode, $conversation, $page, $session, $database, $pConfig, $config, $cache, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
$this->lock = $lock;
}
protected function rawContent(array $request = []) protected function rawContent(array $request = [])
{ {
if (!$this->session->getLocalUserId()) { if (!$this->session->getLocalUserId()) {
@ -46,6 +78,12 @@ class Network extends NetworkModule
System::httpExit(''); System::httpExit('');
} }
$lockkey = 'network-ping-' . $this->session->getLocalUserId();
if (!$this->lock->acquire($lockkey, 0)) {
$this->logger->debug('Ping-1-lock', ['uid' => $this->session->getLocalUserId()]);
System::httpExit('');
}
$this->setPing(true); $this->setPing(true);
$this->itemsPerPage = 100; $this->itemsPerPage = 100;
@ -56,6 +94,7 @@ class Network extends NetworkModule
} else { } else {
$items = $this->getItems(); $items = $this->getItems();
} }
$this->lock->release($lockkey);
$count = count($items); $count = count($items);
System::httpExit(($count < 100) ? $count : '99+'); System::httpExit(($count < 100) ? $count : '99+');
} }

Wyświetl plik

@ -144,7 +144,7 @@ class Conversations extends BaseProfile
$o .= Widget::commonFriendsVisitor($profile['uid'], $profile['nickname']); $o .= Widget::commonFriendsVisitor($profile['uid'], $profile['nickname']);
$commpage = $profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY; $commpage = in_array($profile['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_COMM_MAN]);
$commvisitor = $commpage && $remote_contact; $commvisitor = $commpage && $remote_contact;
$this->page['aside'] .= Widget::postedByYear($this->baseUrl . '/profile/' . $profile['nickname'] . '/conversations', $profile['profile_uid'] ?? 0, true); $this->page['aside'] .= Widget::postedByYear($this->baseUrl . '/profile/' . $profile['nickname'] . '/conversations', $profile['profile_uid'] ?? 0, true);

Wyświetl plik

@ -122,7 +122,7 @@ class Profile extends BaseProfile
$this->baseUrl->redirect('profile/' . $profile['nickname'] . '/restricted'); $this->baseUrl->redirect('profile/' . $profile['nickname'] . '/restricted');
} }
if (!empty($profile['page-flags']) && $profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY) { if (!empty($profile['page-flags']) && in_array($profile['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_COMM_MAN])) {
$this->page['htmlhead'] .= '<meta name="friendica.community" content="true" />' . "\n"; $this->page['htmlhead'] .= '<meta name="friendica.community" content="true" />' . "\n";
} }
@ -319,7 +319,7 @@ class Profile extends BaseProfile
{ {
$htmlhead = "\n"; $htmlhead = "\n";
if (!empty($profile['page-flags']) && $profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY) { if (!empty($profile['page-flags']) && in_array($profile['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_COMM_MAN])) {
$htmlhead .= '<meta name="friendica.community" content="true" />' . "\n"; $htmlhead .= '<meta name="friendica.community" content="true" />' . "\n";
} }

Wyświetl plik

@ -118,7 +118,7 @@ class RemoteFollow extends BaseModule
protected function content(array $request = []): string protected function content(array $request = []): string
{ {
$this->page['aside'] = Widget\VCard::getHTML($this->owner); $this->page['aside'] = Widget\VCard::getHTML($this->owner, false, true);
$target_addr = $this->owner['addr']; $target_addr = $this->owner['addr'];
$target_url = $this->owner['url']; $target_url = $this->owner['url'];

Wyświetl plik

@ -314,7 +314,7 @@ class Account extends BaseSettings
$page_flags = User::PAGE_FLAGS_SOAPBOX; $page_flags = User::PAGE_FLAGS_SOAPBOX;
} elseif ($account_type == User::ACCOUNT_TYPE_NEWS && $page_flags != User::PAGE_FLAGS_SOAPBOX) { } elseif ($account_type == User::ACCOUNT_TYPE_NEWS && $page_flags != User::PAGE_FLAGS_SOAPBOX) {
$page_flags = User::PAGE_FLAGS_SOAPBOX; $page_flags = User::PAGE_FLAGS_SOAPBOX;
} elseif ($account_type == User::ACCOUNT_TYPE_COMMUNITY && !in_array($page_flags, [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP])) { } elseif ($account_type == User::ACCOUNT_TYPE_COMMUNITY && !in_array($page_flags, [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP, User::PAGE_FLAGS_COMM_MAN])) {
$page_flags = User::PAGE_FLAGS_COMMUNITY; $page_flags = User::PAGE_FLAGS_COMMUNITY;
} elseif ($account_type == User::ACCOUNT_TYPE_RELAY && $page_flags != User::PAGE_FLAGS_SOAPBOX) { } elseif ($account_type == User::ACCOUNT_TYPE_RELAY && $page_flags != User::PAGE_FLAGS_SOAPBOX) {
$page_flags = User::PAGE_FLAGS_SOAPBOX; $page_flags = User::PAGE_FLAGS_SOAPBOX;
@ -419,7 +419,7 @@ class Account extends BaseSettings
// Set the account type to "Community" when the page is a community page but the account type doesn't fit // Set the account type to "Community" when the page is a community page but the account type doesn't fit
// This is only happening on the first visit after the update // This is only happening on the first visit after the update
if ( if (
in_array($user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]) in_array($user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP, User::PAGE_FLAGS_COMM_MAN])
&& $user['account-type'] != User::ACCOUNT_TYPE_COMMUNITY && $user['account-type'] != User::ACCOUNT_TYPE_COMMUNITY
) { ) {
$user['account-type'] = User::ACCOUNT_TYPE_COMMUNITY; $user['account-type'] = User::ACCOUNT_TYPE_COMMUNITY;
@ -498,6 +498,13 @@ class Account extends BaseSettings
DI::l10n()->t('Automatically approves all contact requests.'), DI::l10n()->t('Automatically approves all contact requests.'),
$user['page-flags'] == User::PAGE_FLAGS_COMMUNITY $user['page-flags'] == User::PAGE_FLAGS_COMMUNITY
], ],
'$page_community_manually' => [
'page-flags',
DI::l10n()->t('Public Group - Restricted'),
User::PAGE_FLAGS_COMM_MAN,
DI::l10n()->t('Contact requests have to be manually approved.'),
$user['page-flags'] == User::PAGE_FLAGS_COMM_MAN
],
'$page_freelove' => [ '$page_freelove' => [
'page-flags', 'page-flags',
DI::l10n()->t('Automatic Friend Page'), DI::l10n()->t('Automatic Friend Page'),

Wyświetl plik

@ -2272,7 +2272,7 @@ class Probe
'inbox' => $approfile['inbox'], 'outbox' => $approfile['outbox'], 'inbox' => $approfile['inbox'], 'outbox' => $approfile['outbox'],
'sharedinbox' => $approfile['endpoints']['sharedInbox'], 'network' => Protocol::DFRN, 'sharedinbox' => $approfile['endpoints']['sharedInbox'], 'network' => Protocol::DFRN,
'pubkey' => $owner['upubkey'], 'baseurl' => $approfile['generator']['url'], 'gsid' => $owner['gsid'], 'pubkey' => $owner['upubkey'], 'baseurl' => $approfile['generator']['url'], 'gsid' => $owner['gsid'],
'manually-approve' => in_array($owner['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP]), 'manually-approve' => in_array($owner['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP, User::PAGE_FLAGS_COMM_MAN]),
'networks' => [ 'networks' => [
Protocol::DIASPORA => [ Protocol::DIASPORA => [
'name' => $owner['name'], 'name' => $owner['name'],

Wyświetl plik

@ -322,16 +322,17 @@ class Transmitter
} }
/** /**
* Return the service array containing information the used software and it's url * Return the service array containing information the used software and its url
* *
* @return array with service data * @return array with service data
*/ */
public static function getService(): array public static function getService(): array
{ {
return [ return [
'type' => 'Service', 'id' => (string)DI::baseUrl() . '/friendica',
'type' => 'Application',
'name' => App::PLATFORM . " '" . App::CODENAME . "' " . App::VERSION . '-' . DB_UPDATE_VERSION, 'name' => App::PLATFORM . " '" . App::CODENAME . "' " . App::VERSION . '-' . DB_UPDATE_VERSION,
'url' => (string)DI::baseUrl() 'url' => (string)DI::baseUrl(),
]; ];
} }

Wyświetl plik

@ -392,7 +392,7 @@ class DFRN
} }
// For backward compatibility we keep this element // For backward compatibility we keep this element
if ($owner['page-flags'] == User::PAGE_FLAGS_COMMUNITY) { if (in_array($owner['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_COMM_MAN])) {
XML::addElement($doc, $root, 'dfrn:community', 1); XML::addElement($doc, $root, 'dfrn:community', 1);
} }

Wyświetl plik

@ -569,6 +569,10 @@ class Strings
public static function getStyledURL(string $url): string public static function getStyledURL(string $url): string
{ {
$parts = parse_url($url); $parts = parse_url($url);
if (empty($parts['scheme'])) {
return $url;
}
$scheme = [$parts['scheme'] . '://www.', $parts['scheme'] . '://']; $scheme = [$parts['scheme'] . '://www.', $parts['scheme'] . '://'];
$styled_url = str_replace($scheme, '', $url); $styled_url = str_replace($scheme, '', $url);

Wyświetl plik

@ -25,6 +25,7 @@ use Friendica\Content\Text\BBCode;
use Friendica\DI; use Friendica\DI;
use Friendica\Network\HTTPException\InternalServerErrorException; use Friendica\Network\HTTPException\InternalServerErrorException;
use Friendica\Test\FixtureTest; use Friendica\Test\FixtureTest;
use Friendica\Util\Strings;
class BBCodeTest extends FixtureTest class BBCodeTest extends FixtureTest
{ {
@ -148,7 +149,7 @@ class BBCodeTest extends FixtureTest
public function testAutoLinking(string $data, bool $assertHTML) public function testAutoLinking(string $data, bool $assertHTML)
{ {
$output = BBCode::convert($data); $output = BBCode::convert($data);
$assert = $this->HTMLPurifier->purify('<a href="' . $data . '" target="_blank" rel="noopener noreferrer">' . $data . '</a>'); $assert = $this->HTMLPurifier->purify('<a href="' . $data . '" target="_blank" rel="noopener noreferrer">' . Strings::getStyledURL($data) . '</a>');
if ($assertHTML) { if ($assertHTML) {
self::assertEquals($assert, $output); self::assertEquals($assert, $output);
} else { } else {
@ -160,21 +161,21 @@ class BBCodeTest extends FixtureTest
{ {
return [ return [
'bug-7271-condensed-space' => [ 'bug-7271-condensed-space' => [
'expectedHtml' => '<ol><li> <a href="http://example.com/" target="_blank" rel="noopener noreferrer">http://example.com/</a></li></ol>', 'expectedHtml' => '<ol><li> <a href="http://example.com/" target="_blank" rel="noopener noreferrer">example.com/</a></li></ol>',
'text' => '[ol][li] http://example.com/[/ol]', 'text' => '[ol][li] http://example.com/[/ol]',
], ],
'bug-7271-condensed-nospace' => [ 'bug-7271-condensed-nospace' => [
'expectedHtml' => '<ol><li><a href="http://example.com/" target="_blank" rel="noopener noreferrer">http://example.com/</a></li></ol>', 'expectedHtml' => '<ol><li><a href="http://example.com/" target="_blank" rel="noopener noreferrer">example.com/</a></li></ol>',
'text' => '[ol][li]http://example.com/[/ol]', 'text' => '[ol][li]http://example.com/[/ol]',
], ],
'bug-7271-indented-space' => [ 'bug-7271-indented-space' => [
'expectedHtml' => '<ul><li> <a href="http://example.com/" target="_blank" rel="noopener noreferrer">http://example.com/</a></li></ul>', 'expectedHtml' => '<ul><li> <a href="http://example.com/" target="_blank" rel="noopener noreferrer">example.com/</a></li></ul>',
'text' => '[ul] 'text' => '[ul]
[li] http://example.com/ [li] http://example.com/
[/ul]', [/ul]',
], ],
'bug-7271-indented-nospace' => [ 'bug-7271-indented-nospace' => [
'expectedHtml' => '<ul><li><a href="http://example.com/" target="_blank" rel="noopener noreferrer">http://example.com/</a></li></ul>', 'expectedHtml' => '<ul><li><a href="http://example.com/" target="_blank" rel="noopener noreferrer">example.com/</a></li></ul>',
'text' => '[ul] 'text' => '[ul]
[li]http://example.com/ [li]http://example.com/
[/ul]', [/ul]',

Wyświetl plik

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 2024.06-dev\n" "Project-Id-Version: 2024.06-dev\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-06 11:09+0000\n" "POT-Creation-Date: 2024-04-07 16:31+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -957,7 +957,7 @@ msgstr ""
msgid "Enter user nickname: " msgid "Enter user nickname: "
msgstr "" msgstr ""
#: src/Console/User.php:182 src/Model/User.php:819 #: src/Console/User.php:182 src/Model/User.php:820
#: src/Module/Api/Twitter/ContactEndpoint.php:74 #: src/Module/Api/Twitter/ContactEndpoint.php:74
#: src/Module/Moderation/Users/Active.php:71 #: src/Module/Moderation/Users/Active.php:71
#: src/Module/Moderation/Users/Blocked.php:71 #: src/Module/Moderation/Users/Blocked.php:71
@ -1733,7 +1733,7 @@ msgstr ""
#: src/Content/Feature.php:130 src/Content/GroupManager.php:147 #: src/Content/Feature.php:130 src/Content/GroupManager.php:147
#: src/Content/Nav.php:278 src/Content/Text/HTML.php:881 #: src/Content/Nav.php:278 src/Content/Text/HTML.php:881
#: src/Content/Widget.php:538 src/Model/User.php:1385 #: src/Content/Widget.php:538 src/Model/User.php:1386
msgid "Groups" msgid "Groups"
msgstr "" msgstr ""
@ -3310,7 +3310,7 @@ msgstr ""
msgid "Group" msgid "Group"
msgstr "" msgstr ""
#: src/Model/Contact.php:1746 src/Module/Moderation/BaseUsers.php:130 #: src/Model/Contact.php:1746 src/Module/Moderation/BaseUsers.php:131
msgid "Relay" msgid "Relay"
msgstr "" msgstr ""
@ -3726,145 +3726,145 @@ msgstr ""
msgid "Contact information and Social Networks" msgid "Contact information and Social Networks"
msgstr "" msgstr ""
#: src/Model/User.php:228 src/Model/User.php:1298 #: src/Model/User.php:229 src/Model/User.php:1299
msgid "SERIOUS ERROR: Generation of security keys failed." msgid "SERIOUS ERROR: Generation of security keys failed."
msgstr "" msgstr ""
#: src/Model/User.php:728 src/Model/User.php:761 #: src/Model/User.php:729 src/Model/User.php:762
msgid "Login failed" msgid "Login failed"
msgstr "" msgstr ""
#: src/Model/User.php:793 #: src/Model/User.php:794
msgid "Not enough information to authenticate" msgid "Not enough information to authenticate"
msgstr "" msgstr ""
#: src/Model/User.php:918 #: src/Model/User.php:919
msgid "Password can't be empty" msgid "Password can't be empty"
msgstr "" msgstr ""
#: src/Model/User.php:960 #: src/Model/User.php:961
msgid "Empty passwords are not allowed." msgid "Empty passwords are not allowed."
msgstr "" msgstr ""
#: src/Model/User.php:964 #: src/Model/User.php:965
msgid "" msgid ""
"The new password has been exposed in a public data dump, please choose " "The new password has been exposed in a public data dump, please choose "
"another." "another."
msgstr "" msgstr ""
#: src/Model/User.php:968 #: src/Model/User.php:969
msgid "The password length is limited to 72 characters." msgid "The password length is limited to 72 characters."
msgstr "" msgstr ""
#: src/Model/User.php:972 #: src/Model/User.php:973
msgid "The password can't contain white spaces nor accentuated letters" msgid "The password can't contain white spaces nor accentuated letters"
msgstr "" msgstr ""
#: src/Model/User.php:1181 #: src/Model/User.php:1182
msgid "Passwords do not match. Password unchanged." msgid "Passwords do not match. Password unchanged."
msgstr "" msgstr ""
#: src/Model/User.php:1188 #: src/Model/User.php:1189
msgid "An invitation is required." msgid "An invitation is required."
msgstr "" msgstr ""
#: src/Model/User.php:1192 #: src/Model/User.php:1193
msgid "Invitation could not be verified." msgid "Invitation could not be verified."
msgstr "" msgstr ""
#: src/Model/User.php:1200 #: src/Model/User.php:1201
msgid "Invalid OpenID url" msgid "Invalid OpenID url"
msgstr "" msgstr ""
#: src/Model/User.php:1213 src/Security/Authentication.php:230 #: src/Model/User.php:1214 src/Security/Authentication.php:230
msgid "" msgid ""
"We encountered a problem while logging in with the OpenID you provided. " "We encountered a problem while logging in with the OpenID you provided. "
"Please check the correct spelling of the ID." "Please check the correct spelling of the ID."
msgstr "" msgstr ""
#: src/Model/User.php:1213 src/Security/Authentication.php:230 #: src/Model/User.php:1214 src/Security/Authentication.php:230
msgid "The error message was:" msgid "The error message was:"
msgstr "" msgstr ""
#: src/Model/User.php:1219 #: src/Model/User.php:1220
msgid "Please enter the required information." msgid "Please enter the required information."
msgstr "" msgstr ""
#: src/Model/User.php:1233 #: src/Model/User.php:1234
#, php-format #, php-format
msgid "" msgid ""
"system.username_min_length (%s) and system.username_max_length (%s) are " "system.username_min_length (%s) and system.username_max_length (%s) are "
"excluding each other, swapping values." "excluding each other, swapping values."
msgstr "" msgstr ""
#: src/Model/User.php:1240 #: src/Model/User.php:1241
#, php-format #, php-format
msgid "Username should be at least %s character." msgid "Username should be at least %s character."
msgid_plural "Username should be at least %s characters." msgid_plural "Username should be at least %s characters."
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/Model/User.php:1244 #: src/Model/User.php:1245
#, php-format #, php-format
msgid "Username should be at most %s character." msgid "Username should be at most %s character."
msgid_plural "Username should be at most %s characters." msgid_plural "Username should be at most %s characters."
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/Model/User.php:1252 #: src/Model/User.php:1253
msgid "That doesn't appear to be your full (First Last) name." msgid "That doesn't appear to be your full (First Last) name."
msgstr "" msgstr ""
#: src/Model/User.php:1257 #: src/Model/User.php:1258
msgid "Your email domain is not among those allowed on this site." msgid "Your email domain is not among those allowed on this site."
msgstr "" msgstr ""
#: src/Model/User.php:1261 #: src/Model/User.php:1262
msgid "Not a valid email address." msgid "Not a valid email address."
msgstr "" msgstr ""
#: src/Model/User.php:1264 #: src/Model/User.php:1265
msgid "The nickname was blocked from registration by the nodes admin." msgid "The nickname was blocked from registration by the nodes admin."
msgstr "" msgstr ""
#: src/Model/User.php:1268 src/Model/User.php:1274 #: src/Model/User.php:1269 src/Model/User.php:1275
msgid "Cannot use that email." msgid "Cannot use that email."
msgstr "" msgstr ""
#: src/Model/User.php:1280 #: src/Model/User.php:1281
msgid "Your nickname can only contain a-z, 0-9 and _." msgid "Your nickname can only contain a-z, 0-9 and _."
msgstr "" msgstr ""
#: src/Model/User.php:1288 src/Model/User.php:1345 #: src/Model/User.php:1289 src/Model/User.php:1346
msgid "Nickname is already registered. Please choose another." msgid "Nickname is already registered. Please choose another."
msgstr "" msgstr ""
#: src/Model/User.php:1332 src/Model/User.php:1336 #: src/Model/User.php:1333 src/Model/User.php:1337
msgid "An error occurred during registration. Please try again." msgid "An error occurred during registration. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:1359 #: src/Model/User.php:1360
msgid "An error occurred creating your default profile. Please try again." msgid "An error occurred creating your default profile. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:1366 #: src/Model/User.php:1367
msgid "An error occurred creating your self contact. Please try again." msgid "An error occurred creating your self contact. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:1371 #: src/Model/User.php:1372
msgid "Friends" msgid "Friends"
msgstr "" msgstr ""
#: src/Model/User.php:1375 #: src/Model/User.php:1376
msgid "" msgid ""
"An error occurred creating your default contact circle. Please try again." "An error occurred creating your default contact circle. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:1417 #: src/Model/User.php:1418
msgid "Profile Photos" msgid "Profile Photos"
msgstr "" msgstr ""
#: src/Model/User.php:1599 #: src/Model/User.php:1600
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -3872,7 +3872,7 @@ msgid ""
"\t\t\tthe administrator of %2$s has set up an account for you." "\t\t\tthe administrator of %2$s has set up an account for you."
msgstr "" msgstr ""
#: src/Model/User.php:1602 #: src/Model/User.php:1603
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -3908,12 +3908,12 @@ msgid ""
"\t\tThank you and welcome to %4$s." "\t\tThank you and welcome to %4$s."
msgstr "" msgstr ""
#: src/Model/User.php:1634 src/Model/User.php:1740 #: src/Model/User.php:1635 src/Model/User.php:1741
#, php-format #, php-format
msgid "Registration details for %s" msgid "Registration details for %s"
msgstr "" msgstr ""
#: src/Model/User.php:1654 #: src/Model/User.php:1655
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -3929,12 +3929,12 @@ msgid ""
"\t\t" "\t\t"
msgstr "" msgstr ""
#: src/Model/User.php:1673 #: src/Model/User.php:1674
#, php-format #, php-format
msgid "Registration at %s" msgid "Registration at %s"
msgstr "" msgstr ""
#: src/Model/User.php:1697 #: src/Model/User.php:1698
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -3943,7 +3943,7 @@ msgid ""
"\t\t\t" "\t\t\t"
msgstr "" msgstr ""
#: src/Model/User.php:1705 #: src/Model/User.php:1706
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -3981,7 +3981,7 @@ msgid ""
"\t\t\tThank you and welcome to %2$s." "\t\t\tThank you and welcome to %2$s."
msgstr "" msgstr ""
#: src/Model/User.php:1767 #: src/Model/User.php:1768
msgid "" msgid ""
"User with delegates can't be removed, please remove delegate users first" "User with delegates can't be removed, please remove delegate users first"
msgstr "" msgstr ""
@ -4053,7 +4053,7 @@ msgstr ""
#: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:83 #: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:83
#: src/Module/Admin/Logs/Settings.php:87 src/Module/Admin/Site.php:460 #: src/Module/Admin/Logs/Settings.php:87 src/Module/Admin/Site.php:460
#: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:86 #: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:86
#: src/Module/Settings/Account.php:551 src/Module/Settings/Addons.php:78 #: src/Module/Settings/Account.php:558 src/Module/Settings/Addons.php:78
#: src/Module/Settings/Connectors.php:160 #: src/Module/Settings/Connectors.php:160
#: src/Module/Settings/Connectors.php:246 #: src/Module/Settings/Connectors.php:246
#: src/Module/Settings/Delegation.php:193 src/Module/Settings/Display.php:312 #: src/Module/Settings/Delegation.php:193 src/Module/Settings/Display.php:312
@ -7957,29 +7957,33 @@ msgid "Public Group"
msgstr "" msgstr ""
#: src/Module/Moderation/BaseUsers.php:122 src/Module/Settings/Account.php:503 #: src/Module/Moderation/BaseUsers.php:122 src/Module/Settings/Account.php:503
msgid "Public Group - Restricted"
msgstr ""
#: src/Module/Moderation/BaseUsers.php:123 src/Module/Settings/Account.php:510
msgid "Automatic Friend Page" msgid "Automatic Friend Page"
msgstr "" msgstr ""
#: src/Module/Moderation/BaseUsers.php:123 #: src/Module/Moderation/BaseUsers.php:124
msgid "Private Group" msgid "Private Group"
msgstr "" msgstr ""
#: src/Module/Moderation/BaseUsers.php:126 src/Module/Moderation/Summary.php:53 #: src/Module/Moderation/BaseUsers.php:127 src/Module/Moderation/Summary.php:53
#: src/Module/Settings/Account.php:453 #: src/Module/Settings/Account.php:453
msgid "Personal Page" msgid "Personal Page"
msgstr "" msgstr ""
#: src/Module/Moderation/BaseUsers.php:127 src/Module/Moderation/Summary.php:54 #: src/Module/Moderation/BaseUsers.php:128 src/Module/Moderation/Summary.php:54
#: src/Module/Settings/Account.php:460 #: src/Module/Settings/Account.php:460
msgid "Organisation Page" msgid "Organisation Page"
msgstr "" msgstr ""
#: src/Module/Moderation/BaseUsers.php:128 src/Module/Moderation/Summary.php:55 #: src/Module/Moderation/BaseUsers.php:129 src/Module/Moderation/Summary.php:55
#: src/Module/Settings/Account.php:467 #: src/Module/Settings/Account.php:467
msgid "News Page" msgid "News Page"
msgstr "" msgstr ""
#: src/Module/Moderation/BaseUsers.php:129 src/Module/Moderation/Summary.php:56 #: src/Module/Moderation/BaseUsers.php:130 src/Module/Moderation/Summary.php:56
#: src/Module/Settings/Account.php:474 #: src/Module/Settings/Account.php:474
msgid "Community Group" msgid "Community Group"
msgstr "" msgstr ""
@ -9376,7 +9380,7 @@ msgid "Please repeat your e-mail address:"
msgstr "" msgstr ""
#: src/Module/Register.php:163 src/Module/Security/PasswordTooLong.php:100 #: src/Module/Register.php:163 src/Module/Security/PasswordTooLong.php:100
#: src/Module/Settings/Account.php:557 #: src/Module/Settings/Account.php:564
msgid "New Password:" msgid "New Password:"
msgstr "" msgstr ""
@ -9385,7 +9389,7 @@ msgid "Leave empty for an auto generated password."
msgstr "" msgstr ""
#: src/Module/Register.php:164 src/Module/Security/PasswordTooLong.php:101 #: src/Module/Register.php:164 src/Module/Security/PasswordTooLong.php:101
#: src/Module/Settings/Account.php:558 #: src/Module/Settings/Account.php:565
msgid "Confirm:" msgid "Confirm:"
msgstr "" msgstr ""
@ -9611,24 +9615,24 @@ msgid "Update Password"
msgstr "" msgstr ""
#: src/Module/Security/PasswordTooLong.php:99 #: src/Module/Security/PasswordTooLong.php:99
#: src/Module/Settings/Account.php:559 #: src/Module/Settings/Account.php:566
msgid "Current Password:" msgid "Current Password:"
msgstr "" msgstr ""
#: src/Module/Security/PasswordTooLong.php:99 #: src/Module/Security/PasswordTooLong.php:99
#: src/Module/Settings/Account.php:559 #: src/Module/Settings/Account.php:566
msgid "Your current password to confirm the changes" msgid "Your current password to confirm the changes"
msgstr "" msgstr ""
#: src/Module/Security/PasswordTooLong.php:100 #: src/Module/Security/PasswordTooLong.php:100
#: src/Module/Settings/Account.php:543 #: src/Module/Settings/Account.php:550
msgid "" msgid ""
"Allowed characters are a-z, A-Z, 0-9 and special characters except white " "Allowed characters are a-z, A-Z, 0-9 and special characters except white "
"spaces and accentuated letters." "spaces and accentuated letters."
msgstr "" msgstr ""
#: src/Module/Security/PasswordTooLong.php:100 #: src/Module/Security/PasswordTooLong.php:100
#: src/Module/Settings/Account.php:544 #: src/Module/Settings/Account.php:551
msgid "Password length is limited to 72 characters." msgid "Password length is limited to 72 characters."
msgstr "" msgstr ""
@ -9826,32 +9830,36 @@ msgid "Automatically approves all contact requests."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:505 #: src/Module/Settings/Account.php:505
msgid "Contact requests have to be manually approved."
msgstr ""
#: src/Module/Settings/Account.php:512
msgid "" msgid ""
"Account for a popular profile that automatically approves contact requests " "Account for a popular profile that automatically approves contact requests "
"as \"Friends\"." "as \"Friends\"."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:510 #: src/Module/Settings/Account.php:517
msgid "Private Group [Experimental]" msgid "Private Group [Experimental]"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:512 #: src/Module/Settings/Account.php:519
msgid "Requires manual approval of contact requests." msgid "Requires manual approval of contact requests."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:521 #: src/Module/Settings/Account.php:528
msgid "OpenID:" msgid "OpenID:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:521 #: src/Module/Settings/Account.php:528
msgid "(Optional) Allow this OpenID to login to this account." msgid "(Optional) Allow this OpenID to login to this account."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:529 #: src/Module/Settings/Account.php:536
msgid "Publish your profile in your local site directory?" msgid "Publish your profile in your local site directory?"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:529 #: src/Module/Settings/Account.php:536
#, php-format #, php-format
msgid "" msgid ""
"Your profile will be published in this node's <a href=\"%s\">local " "Your profile will be published in this node's <a href=\"%s\">local "
@ -9859,94 +9867,94 @@ msgid ""
"system settings." "system settings."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:535 #: src/Module/Settings/Account.php:542
#, php-format #, php-format
msgid "" msgid ""
"Your profile will also be published in the global friendica directories (e." "Your profile will also be published in the global friendica directories (e."
"g. <a href=\"%s\">%s</a>)." "g. <a href=\"%s\">%s</a>)."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:548 #: src/Module/Settings/Account.php:555
msgid "Account Settings" msgid "Account Settings"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:549 #: src/Module/Settings/Account.php:556
#, php-format #, php-format
msgid "Your Identity Address is <strong>'%s'</strong> or '%s'." msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:556 #: src/Module/Settings/Account.php:563
msgid "Password Settings" msgid "Password Settings"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:558 #: src/Module/Settings/Account.php:565
msgid "Leave password fields blank unless changing" msgid "Leave password fields blank unless changing"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:560 #: src/Module/Settings/Account.php:567
msgid "Password:" msgid "Password:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:560 #: src/Module/Settings/Account.php:567
msgid "Your current password to confirm the changes of the email address" msgid "Your current password to confirm the changes of the email address"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:563 #: src/Module/Settings/Account.php:570
msgid "Delete OpenID URL" msgid "Delete OpenID URL"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:565 #: src/Module/Settings/Account.php:572
msgid "Basic Settings" msgid "Basic Settings"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:566 #: src/Module/Settings/Account.php:573
#: src/Module/Settings/Profile/Index.php:283 #: src/Module/Settings/Profile/Index.php:283
msgid "Display name:" msgid "Display name:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:567 #: src/Module/Settings/Account.php:574
msgid "Email Address:" msgid "Email Address:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:568 #: src/Module/Settings/Account.php:575
msgid "Your Timezone:" msgid "Your Timezone:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:569 #: src/Module/Settings/Account.php:576
msgid "Your Language:" msgid "Your Language:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:569 #: src/Module/Settings/Account.php:576
msgid "" msgid ""
"Set the language we use to show you friendica interface and to send you " "Set the language we use to show you friendica interface and to send you "
"emails" "emails"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:570 #: src/Module/Settings/Account.php:577
msgid "Default Post Location:" msgid "Default Post Location:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:571 #: src/Module/Settings/Account.php:578
msgid "Use Browser Location:" msgid "Use Browser Location:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:573 #: src/Module/Settings/Account.php:580
msgid "Security and Privacy Settings" msgid "Security and Privacy Settings"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:575 #: src/Module/Settings/Account.php:582
msgid "Maximum Friend Requests/Day:" msgid "Maximum Friend Requests/Day:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:575 #: src/Module/Settings/Account.php:582
msgid "(to prevent spam abuse)" msgid "(to prevent spam abuse)"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:577 #: src/Module/Settings/Account.php:584
msgid "Allow your profile to be searchable globally?" msgid "Allow your profile to be searchable globally?"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:577 #: src/Module/Settings/Account.php:584
msgid "" msgid ""
"Activate this setting if you want others to easily find and follow you. Your " "Activate this setting if you want others to easily find and follow you. Your "
"profile will be searchable on remote systems. This setting also determines " "profile will be searchable on remote systems. This setting also determines "
@ -9954,43 +9962,43 @@ msgid ""
"indexed or not." "indexed or not."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:578 #: src/Module/Settings/Account.php:585
msgid "Hide your contact/friend list from viewers of your profile?" msgid "Hide your contact/friend list from viewers of your profile?"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:578 #: src/Module/Settings/Account.php:585
msgid "" msgid ""
"A list of your contacts is displayed on your profile page. Activate this " "A list of your contacts is displayed on your profile page. Activate this "
"option to disable the display of your contact list." "option to disable the display of your contact list."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:579 #: src/Module/Settings/Account.php:586
msgid "Hide your public content from anonymous viewers" msgid "Hide your public content from anonymous viewers"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:579 #: src/Module/Settings/Account.php:586
msgid "" msgid ""
"Anonymous visitors will only see your basic profile details. Your public " "Anonymous visitors will only see your basic profile details. Your public "
"posts and replies will still be freely accessible on the remote servers of " "posts and replies will still be freely accessible on the remote servers of "
"your followers and through relays." "your followers and through relays."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:580 #: src/Module/Settings/Account.php:587
msgid "Make public posts unlisted" msgid "Make public posts unlisted"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:580 #: src/Module/Settings/Account.php:587
msgid "" msgid ""
"Your public posts will not appear on the community pages or in search " "Your public posts will not appear on the community pages or in search "
"results, nor be sent to relay servers. However they can still appear on " "results, nor be sent to relay servers. However they can still appear on "
"public feeds on remote servers." "public feeds on remote servers."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:581 #: src/Module/Settings/Account.php:588
msgid "Make all posted pictures accessible" msgid "Make all posted pictures accessible"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:581 #: src/Module/Settings/Account.php:588
msgid "" msgid ""
"This option makes every posted picture accessible via the direct link. This " "This option makes every posted picture accessible via the direct link. This "
"is a workaround for the problem that most other networks can't handle " "is a workaround for the problem that most other networks can't handle "
@ -9998,227 +10006,227 @@ msgid ""
"public on your photo albums though." "public on your photo albums though."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:582 #: src/Module/Settings/Account.php:589
msgid "Allow friends to post to your profile page?" msgid "Allow friends to post to your profile page?"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:582 #: src/Module/Settings/Account.php:589
msgid "" msgid ""
"Your contacts may write posts on your profile wall. These posts will be " "Your contacts may write posts on your profile wall. These posts will be "
"distributed to your contacts" "distributed to your contacts"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:583 #: src/Module/Settings/Account.php:590
msgid "Allow friends to tag your posts?" msgid "Allow friends to tag your posts?"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:583 #: src/Module/Settings/Account.php:590
msgid "Your contacts can add additional tags to your posts." msgid "Your contacts can add additional tags to your posts."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:584 #: src/Module/Settings/Account.php:591
msgid "Default privacy circle for new contacts" msgid "Default privacy circle for new contacts"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:585 #: src/Module/Settings/Account.php:592
msgid "Default privacy circle for new group contacts" msgid "Default privacy circle for new group contacts"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:586 #: src/Module/Settings/Account.php:593
msgid "Default Post Permissions" msgid "Default Post Permissions"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:590 #: src/Module/Settings/Account.php:597
msgid "Expiration settings" msgid "Expiration settings"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:591 #: src/Module/Settings/Account.php:598
msgid "Automatically expire posts after this many days:" msgid "Automatically expire posts after this many days:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:591 #: src/Module/Settings/Account.php:598
msgid "If empty, posts will not expire. Expired posts will be deleted" msgid "If empty, posts will not expire. Expired posts will be deleted"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:592 #: src/Module/Settings/Account.php:599
msgid "Expire posts" msgid "Expire posts"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:592 #: src/Module/Settings/Account.php:599
msgid "When activated, posts and comments will be expired." msgid "When activated, posts and comments will be expired."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:593 #: src/Module/Settings/Account.php:600
msgid "Expire personal notes" msgid "Expire personal notes"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:593 #: src/Module/Settings/Account.php:600
msgid "" msgid ""
"When activated, the personal notes on your profile page will be expired." "When activated, the personal notes on your profile page will be expired."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:594 #: src/Module/Settings/Account.php:601
msgid "Expire starred posts" msgid "Expire starred posts"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:594 #: src/Module/Settings/Account.php:601
msgid "" msgid ""
"Starring posts keeps them from being expired. That behaviour is overwritten " "Starring posts keeps them from being expired. That behaviour is overwritten "
"by this setting." "by this setting."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:595 #: src/Module/Settings/Account.php:602
msgid "Only expire posts by others" msgid "Only expire posts by others"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:595 #: src/Module/Settings/Account.php:602
msgid "" msgid ""
"When activated, your own posts never expire. Then the settings above are " "When activated, your own posts never expire. Then the settings above are "
"only valid for posts you received." "only valid for posts you received."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:598 #: src/Module/Settings/Account.php:605
msgid "Notification Settings" msgid "Notification Settings"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:599 #: src/Module/Settings/Account.php:606
msgid "Send a notification email when:" msgid "Send a notification email when:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:600 #: src/Module/Settings/Account.php:607
msgid "You receive an introduction" msgid "You receive an introduction"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:601 #: src/Module/Settings/Account.php:608
msgid "Your introductions are confirmed" msgid "Your introductions are confirmed"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:602 #: src/Module/Settings/Account.php:609
msgid "Someone writes on your profile wall" msgid "Someone writes on your profile wall"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:603 #: src/Module/Settings/Account.php:610
msgid "Someone writes a followup comment" msgid "Someone writes a followup comment"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:604 #: src/Module/Settings/Account.php:611
msgid "You receive a private message" msgid "You receive a private message"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:605 #: src/Module/Settings/Account.php:612
msgid "You receive a friend suggestion" msgid "You receive a friend suggestion"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:606 #: src/Module/Settings/Account.php:613
msgid "You are tagged in a post" msgid "You are tagged in a post"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:608 #: src/Module/Settings/Account.php:615
msgid "Create a desktop notification when:" msgid "Create a desktop notification when:"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:609 #: src/Module/Settings/Account.php:616
msgid "Someone tagged you" msgid "Someone tagged you"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:610 #: src/Module/Settings/Account.php:617
msgid "Someone directly commented on your post" msgid "Someone directly commented on your post"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:611 #: src/Module/Settings/Account.php:618
msgid "Someone liked your content" msgid "Someone liked your content"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:611 src/Module/Settings/Account.php:612 #: src/Module/Settings/Account.php:618 src/Module/Settings/Account.php:619
msgid "Can only be enabled, when the direct comment notification is enabled." msgid "Can only be enabled, when the direct comment notification is enabled."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:612 #: src/Module/Settings/Account.php:619
msgid "Someone shared your content" msgid "Someone shared your content"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:613 #: src/Module/Settings/Account.php:620
msgid "Someone commented in your thread" msgid "Someone commented in your thread"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:614 #: src/Module/Settings/Account.php:621
msgid "Someone commented in a thread where you commented" msgid "Someone commented in a thread where you commented"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:615 #: src/Module/Settings/Account.php:622
msgid "Someone commented in a thread where you interacted" msgid "Someone commented in a thread where you interacted"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:617 #: src/Module/Settings/Account.php:624
msgid "Activate desktop notifications" msgid "Activate desktop notifications"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:617 #: src/Module/Settings/Account.php:624
msgid "Show desktop popup on new notifications" msgid "Show desktop popup on new notifications"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:621 #: src/Module/Settings/Account.php:628
msgid "Text-only notification emails" msgid "Text-only notification emails"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:623 #: src/Module/Settings/Account.php:630
msgid "Send text only notification emails, without the html part" msgid "Send text only notification emails, without the html part"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:627 #: src/Module/Settings/Account.php:634
msgid "Show detailled notifications" msgid "Show detailled notifications"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:629 #: src/Module/Settings/Account.php:636
msgid "" msgid ""
"Per default, notifications are condensed to a single notification per item. " "Per default, notifications are condensed to a single notification per item. "
"When enabled every notification is displayed." "When enabled every notification is displayed."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:633 #: src/Module/Settings/Account.php:640
msgid "Show notifications of ignored contacts" msgid "Show notifications of ignored contacts"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:635 #: src/Module/Settings/Account.php:642
msgid "" msgid ""
"You don't see posts from ignored contacts. But you still see their comments. " "You don't see posts from ignored contacts. But you still see their comments. "
"This setting controls if you want to still receive regular notifications " "This setting controls if you want to still receive regular notifications "
"that are caused by ignored contacts or not." "that are caused by ignored contacts or not."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:638 #: src/Module/Settings/Account.php:645
msgid "Advanced Account/Page Type Settings" msgid "Advanced Account/Page Type Settings"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:639 #: src/Module/Settings/Account.php:646
msgid "Change the behaviour of this account for special situations" msgid "Change the behaviour of this account for special situations"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:642 #: src/Module/Settings/Account.php:649
msgid "Import Contacts" msgid "Import Contacts"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:643 #: src/Module/Settings/Account.php:650
msgid "" msgid ""
"Upload a CSV file that contains the handle of your followed accounts in the " "Upload a CSV file that contains the handle of your followed accounts in the "
"first column you exported from the old account." "first column you exported from the old account."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:644 #: src/Module/Settings/Account.php:651
msgid "Upload File" msgid "Upload File"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:647 #: src/Module/Settings/Account.php:654
msgid "Relocate" msgid "Relocate"
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:648 #: src/Module/Settings/Account.php:655
msgid "" msgid ""
"If you have moved this profile from another server, and some of your " "If you have moved this profile from another server, and some of your "
"contacts don't receive your updates, try pushing this button." "contacts don't receive your updates, try pushing this button."
msgstr "" msgstr ""
#: src/Module/Settings/Account.php:649 #: src/Module/Settings/Account.php:656
msgid "Resend relocate message to contacts" msgid "Resend relocate message to contacts"
msgstr "" msgstr ""

Wyświetl plik

@ -15,6 +15,7 @@
<div id="account-type-sub-3" class="pageflags"> <div id="account-type-sub-3" class="pageflags">
<h5>{{$community}}</h5> <h5>{{$community}}</h5>
{{include file="field_radio.tpl" field=$page_community}} {{include file="field_radio.tpl" field=$page_community}}
{{include file="field_radio.tpl" field=$page_community_manually}}
{{include file="field_radio.tpl" field=$page_prvgroup}} {{include file="field_radio.tpl" field=$page_prvgroup}}
</div> </div>

Wyświetl plik

@ -76,6 +76,7 @@
{{if $u.page_flags_raw==3}}fa-heart{{/if}} {{* PAGE_FREELOVE *}} {{if $u.page_flags_raw==3}}fa-heart{{/if}} {{* PAGE_FREELOVE *}}
{{if $u.page_flags_raw==4}}fa-rss{{/if}} {{* PAGE_BLOG *}} {{if $u.page_flags_raw==4}}fa-rss{{/if}} {{* PAGE_BLOG *}}
{{if $u.page_flags_raw==5}}fa-user-secret{{/if}} {{* PAGE_PRVGROUP *}} {{if $u.page_flags_raw==5}}fa-user-secret{{/if}} {{* PAGE_PRVGROUP *}}
{{if $u.page_flags_raw==6}}fa-users{{/if}} {{* PAGE_COMM_MAN *}}
" title="{{$u.page_flags}}"> " title="{{$u.page_flags}}">
</i> </i>
{{if $u.page_flags_raw==0 && $u.account_type_raw > 0}} {{if $u.page_flags_raw==0 && $u.account_type_raw > 0}}

Wyświetl plik

@ -75,7 +75,8 @@
{{if $u.page_flags_raw==3}}fa-heart{{/if}} {{* PAGE_FREELOVE *}} {{if $u.page_flags_raw==3}}fa-heart{{/if}} {{* PAGE_FREELOVE *}}
{{if $u.page_flags_raw==4}}fa-rss{{/if}} {{* PAGE_BLOG *}} {{if $u.page_flags_raw==4}}fa-rss{{/if}} {{* PAGE_BLOG *}}
{{if $u.page_flags_raw==5}}fa-user-secret{{/if}} {{* PAGE_PRVGROUP *}} {{if $u.page_flags_raw==5}}fa-user-secret{{/if}} {{* PAGE_PRVGROUP *}}
" title="{{$u.page_flags}}"> {{if $u.page_flags_raw==6}}fa-users{{/if}} {{* PAGE_COMM_MAN *}}
" title="{{$u.page_flags}}">
</i> </i>
{{if $u.page_flags_raw==0 && $u.account_type_raw > 0}} {{if $u.page_flags_raw==0 && $u.account_type_raw > 0}}
<i class="fa <i class="fa

Wyświetl plik

@ -76,6 +76,7 @@
{{if $u.page_flags_raw==3}}fa-heart{{/if}} {{* PAGE_FREELOVE *}} {{if $u.page_flags_raw==3}}fa-heart{{/if}} {{* PAGE_FREELOVE *}}
{{if $u.page_flags_raw==4}}fa-rss{{/if}} {{* PAGE_BLOG *}} {{if $u.page_flags_raw==4}}fa-rss{{/if}} {{* PAGE_BLOG *}}
{{if $u.page_flags_raw==5}}fa-user-secret{{/if}} {{* PAGE_PRVGROUP *}} {{if $u.page_flags_raw==5}}fa-user-secret{{/if}} {{* PAGE_PRVGROUP *}}
{{if $u.page_flags_raw==6}}fa-users{{/if}} {{* PAGE_COMM_MAN *}}
" title="{{$u.page_flags}}"> " title="{{$u.page_flags}}">
</i> </i>
{{if $u.page_flags_raw==0 && $u.account_type_raw > 0}} {{if $u.page_flags_raw==0 && $u.account_type_raw > 0}}