kopia lustrzana https://github.com/friendica/friendica
Porównaj commity
12 Commity
bd10441409
...
45b30825f0
Autor | SHA1 | Data |
---|---|---|
Michael | 45b30825f0 | |
Michael | 7dc5622dca | |
Hypolite Petovan | ce580241e2 | |
Michael | a440619769 | |
Tobias Diekershoff | 9626a76b18 | |
Tobias Diekershoff | b02a5ed701 | |
Michael | 69fc2c04e4 | |
Michael | d7e8ee51ae | |
Tobias Diekershoff | 02d8cc2f71 | |
Tobias Diekershoff | 0a88d5a94a | |
Michael | 8b75aab4ad | |
Michael | a2da42640c |
|
@ -136,7 +136,7 @@ function photos_post(App $a)
|
|||
$visitor = 0;
|
||||
|
||||
$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)) {
|
||||
$can_post = true;
|
||||
|
@ -618,7 +618,7 @@ function photos_content(App $a)
|
|||
|
||||
$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)) {
|
||||
$can_post = true;
|
||||
|
|
|
@ -51,7 +51,7 @@ use Friendica\Util\XML;
|
|||
class BBCode
|
||||
{
|
||||
// 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 EXTERNAL = 1;
|
||||
|
@ -146,8 +146,7 @@ class BBCode
|
|||
case 'title':
|
||||
$value = self::toPlaintext(html_entity_decode($value, ENT_QUOTES, 'UTF-8'));
|
||||
$value = html_entity_decode($value, ENT_QUOTES, 'UTF-8');
|
||||
$value = str_replace(['[', ']'], ['[', ']'], $value);
|
||||
$data['title'] = $value;
|
||||
$data['title'] = self::escapeUrl($value);
|
||||
|
||||
default:
|
||||
$data[$field] = html_entity_decode($value, ENT_QUOTES, 'UTF-8');
|
||||
|
@ -551,71 +550,6 @@ class BBCode
|
|||
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
|
||||
* occurrences
|
||||
|
@ -1871,135 +1805,7 @@ class BBCode
|
|||
$text = '<span style="font-size: xx-large; line-height: normal;">' . $text . '</span>';
|
||||
}
|
||||
|
||||
$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) {
|
||||
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);
|
||||
|
||||
$text = self::convertUrlToHtml($text, $simple_html, $for_plaintext, $try_oembed, $try_oembed_callback);
|
||||
|
||||
// we may need to restrict this further if it picks up too many strays
|
||||
// link acct:user@host to a webfinger profile redirector
|
||||
|
@ -2112,6 +1918,176 @@ class BBCode
|
|||
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(['[', ']'], ['[', ']'], $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
|
||||
*
|
||||
|
|
|
@ -43,9 +43,10 @@ class VCard
|
|||
* @template widget/vcard.tpl
|
||||
* @param array $contact
|
||||
* @param bool $hide_mention
|
||||
* @param bool $hide_follow
|
||||
* @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'])) {
|
||||
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])) {
|
||||
$unfollow_link = 'contact/unfollow?url=' . urlencode($contact_url) . '&auto=1';
|
||||
} elseif (!$pending) {
|
||||
|
|
|
@ -892,10 +892,10 @@ class Contact
|
|||
|
||||
$fields['avatar'] = User::getAvatarUrl($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['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['gsid'] = GServer::getID($fields['baseurl'], true);
|
||||
|
||||
|
|
|
@ -3990,6 +3990,13 @@ class Item
|
|||
$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()) {
|
||||
$ret = [
|
||||
'href' => "display/" . $item['guid'],
|
||||
|
|
|
@ -25,6 +25,7 @@ use DivineOmega\DOFileCachePSR6\CacheItemPool;
|
|||
use DivineOmega\PasswordExposed;
|
||||
use ErrorException;
|
||||
use Exception;
|
||||
use Friendica\App;
|
||||
use Friendica\Content\Pager;
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\Core\L10n;
|
||||
|
@ -72,6 +73,7 @@ class User
|
|||
const PAGE_FLAGS_FREELOVE = 3;
|
||||
const PAGE_FLAGS_BLOG = 4;
|
||||
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['spubkey'] = $system['upubkey'] = $system['pubkey'];
|
||||
$system['nickname'] = $system['nick'];
|
||||
|
|
|
@ -51,7 +51,7 @@ class Whoami extends BaseApi
|
|||
$data['name'] = $owner['name'];
|
||||
$data['preferredUsername'] = $owner['nick'];
|
||||
$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['tag'] = [];
|
||||
|
||||
|
|
|
@ -71,6 +71,7 @@ class UpdateCredentials extends BaseApi
|
|||
}
|
||||
|
||||
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;
|
||||
} elseif ($user['account-type'] == Contact::TYPE_PERSON) {
|
||||
if ($request['locked']) {
|
||||
|
|
|
@ -186,7 +186,7 @@ class Follow extends BaseModule
|
|||
$this->page['aside'] = '';
|
||||
|
||||
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'),
|
||||
['$title' => $this->t('Posts and Replies')]
|
||||
|
|
|
@ -133,7 +133,7 @@ class Unfollow extends \Friendica\BaseModule
|
|||
'$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')]);
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ class HCard extends BaseModule
|
|||
|
||||
$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" />';
|
||||
}
|
||||
if (!empty($profile['openidserver'])) {
|
||||
|
|
|
@ -119,6 +119,7 @@ abstract class BaseUsers extends BaseModeration
|
|||
User::PAGE_FLAGS_NORMAL => $this->t('Normal Account Page'),
|
||||
User::PAGE_FLAGS_SOAPBOX => $this->t('Soapbox Page'),
|
||||
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_PRVGROUP => $this->t('Private Group')
|
||||
];
|
||||
|
|
|
@ -28,17 +28,14 @@ use Friendica\Content\GroupManager;
|
|||
use Friendica\Core\Cache\Capability\ICanCache;
|
||||
use Friendica\Core\Cache\Enum\Duration;
|
||||
use Friendica\Core\Config\Capability\IManageConfigValues;
|
||||
use Friendica\Core\Hook;
|
||||
use Friendica\Core\L10n;
|
||||
use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
|
||||
use Friendica\Core\Session\Capability\IHandleUserSessions;
|
||||
use Friendica\Database\Database;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Model\Circle;
|
||||
use Friendica\Model\Post;
|
||||
use Friendica\Model\User;
|
||||
use Friendica\Model\Verb;
|
||||
use Friendica\Module\Conversation\Network;
|
||||
use Friendica\Module\Register;
|
||||
use Friendica\Module\Response;
|
||||
use Friendica\Navigation\Notifications\Entity;
|
||||
|
@ -191,7 +188,7 @@ class Ping extends BaseModule
|
|||
if (!$this->notify->shouldShowOnDesktop($notification)) {
|
||||
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;
|
||||
}
|
||||
try {
|
||||
|
|
|
@ -21,11 +21,43 @@
|
|||
|
||||
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\Database\Database;
|
||||
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
|
||||
{
|
||||
/**
|
||||
* @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 = [])
|
||||
{
|
||||
if (!$this->session->getLocalUserId()) {
|
||||
|
@ -46,6 +78,12 @@ class Network extends NetworkModule
|
|||
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->itemsPerPage = 100;
|
||||
|
||||
|
@ -56,6 +94,7 @@ class Network extends NetworkModule
|
|||
} else {
|
||||
$items = $this->getItems();
|
||||
}
|
||||
$this->lock->release($lockkey);
|
||||
$count = count($items);
|
||||
System::httpExit(($count < 100) ? $count : '99+');
|
||||
}
|
||||
|
|
|
@ -144,7 +144,7 @@ class Conversations extends BaseProfile
|
|||
|
||||
$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;
|
||||
|
||||
$this->page['aside'] .= Widget::postedByYear($this->baseUrl . '/profile/' . $profile['nickname'] . '/conversations', $profile['profile_uid'] ?? 0, true);
|
||||
|
|
|
@ -122,7 +122,7 @@ class Profile extends BaseProfile
|
|||
$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";
|
||||
}
|
||||
|
||||
|
@ -319,7 +319,7 @@ class Profile extends BaseProfile
|
|||
{
|
||||
$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";
|
||||
}
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ class RemoteFollow extends BaseModule
|
|||
|
||||
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_url = $this->owner['url'];
|
||||
|
|
|
@ -314,7 +314,7 @@ class Account extends BaseSettings
|
|||
$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;
|
||||
} 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;
|
||||
} elseif ($account_type == User::ACCOUNT_TYPE_RELAY && $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
|
||||
// This is only happening on the first visit after the update
|
||||
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;
|
||||
|
@ -498,6 +498,13 @@ class Account extends BaseSettings
|
|||
DI::l10n()->t('Automatically approves all contact requests.'),
|
||||
$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-flags',
|
||||
DI::l10n()->t('Automatic Friend Page'),
|
||||
|
|
|
@ -2272,7 +2272,7 @@ class Probe
|
|||
'inbox' => $approfile['inbox'], 'outbox' => $approfile['outbox'],
|
||||
'sharedinbox' => $approfile['endpoints']['sharedInbox'], 'network' => Protocol::DFRN,
|
||||
'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' => [
|
||||
Protocol::DIASPORA => [
|
||||
'name' => $owner['name'],
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
public static function getService(): array
|
||||
{
|
||||
return [
|
||||
'type' => 'Service',
|
||||
'id' => (string)DI::baseUrl() . '/friendica',
|
||||
'type' => 'Application',
|
||||
'name' => App::PLATFORM . " '" . App::CODENAME . "' " . App::VERSION . '-' . DB_UPDATE_VERSION,
|
||||
'url' => (string)DI::baseUrl()
|
||||
'url' => (string)DI::baseUrl(),
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
@ -392,7 +392,7 @@ class DFRN
|
|||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
|
|
|
@ -569,6 +569,10 @@ class Strings
|
|||
public static function getStyledURL(string $url): string
|
||||
{
|
||||
$parts = parse_url($url);
|
||||
if (empty($parts['scheme'])) {
|
||||
return $url;
|
||||
}
|
||||
|
||||
$scheme = [$parts['scheme'] . '://www.', $parts['scheme'] . '://'];
|
||||
$styled_url = str_replace($scheme, '', $url);
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ use Friendica\Content\Text\BBCode;
|
|||
use Friendica\DI;
|
||||
use Friendica\Network\HTTPException\InternalServerErrorException;
|
||||
use Friendica\Test\FixtureTest;
|
||||
use Friendica\Util\Strings;
|
||||
|
||||
class BBCodeTest extends FixtureTest
|
||||
{
|
||||
|
@ -148,7 +149,7 @@ class BBCodeTest extends FixtureTest
|
|||
public function testAutoLinking(string $data, bool $assertHTML)
|
||||
{
|
||||
$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) {
|
||||
self::assertEquals($assert, $output);
|
||||
} else {
|
||||
|
@ -160,21 +161,21 @@ class BBCodeTest extends FixtureTest
|
|||
{
|
||||
return [
|
||||
'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]',
|
||||
],
|
||||
'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]',
|
||||
],
|
||||
'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]
|
||||
[li] http://example.com/
|
||||
[/ul]',
|
||||
],
|
||||
'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]
|
||||
[li]http://example.com/
|
||||
[/ul]',
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: 2024.06-dev\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -957,7 +957,7 @@ msgstr ""
|
|||
msgid "Enter user nickname: "
|
||||
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/Moderation/Users/Active.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/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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -3310,7 +3310,7 @@ msgstr ""
|
|||
msgid "Group"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -3726,145 +3726,145 @@ msgstr ""
|
|||
msgid "Contact information and Social Networks"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:728 src/Model/User.php:761
|
||||
#: src/Model/User.php:729 src/Model/User.php:762
|
||||
msgid "Login failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:793
|
||||
#: src/Model/User.php:794
|
||||
msgid "Not enough information to authenticate"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:918
|
||||
#: src/Model/User.php:919
|
||||
msgid "Password can't be empty"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:960
|
||||
#: src/Model/User.php:961
|
||||
msgid "Empty passwords are not allowed."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:964
|
||||
#: src/Model/User.php:965
|
||||
msgid ""
|
||||
"The new password has been exposed in a public data dump, please choose "
|
||||
"another."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:968
|
||||
#: src/Model/User.php:969
|
||||
msgid "The password length is limited to 72 characters."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:972
|
||||
#: src/Model/User.php:973
|
||||
msgid "The password can't contain white spaces nor accentuated letters"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1181
|
||||
#: src/Model/User.php:1182
|
||||
msgid "Passwords do not match. Password unchanged."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1188
|
||||
#: src/Model/User.php:1189
|
||||
msgid "An invitation is required."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1192
|
||||
#: src/Model/User.php:1193
|
||||
msgid "Invitation could not be verified."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1200
|
||||
#: src/Model/User.php:1201
|
||||
msgid "Invalid OpenID url"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1213 src/Security/Authentication.php:230
|
||||
#: src/Model/User.php:1214 src/Security/Authentication.php:230
|
||||
msgid ""
|
||||
"We encountered a problem while logging in with the OpenID you provided. "
|
||||
"Please check the correct spelling of the ID."
|
||||
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:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1219
|
||||
#: src/Model/User.php:1220
|
||||
msgid "Please enter the required information."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1233
|
||||
#: src/Model/User.php:1234
|
||||
#, php-format
|
||||
msgid ""
|
||||
"system.username_min_length (%s) and system.username_max_length (%s) are "
|
||||
"excluding each other, swapping values."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1240
|
||||
#: src/Model/User.php:1241
|
||||
#, php-format
|
||||
msgid "Username should be at least %s character."
|
||||
msgid_plural "Username should be at least %s characters."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/Model/User.php:1244
|
||||
#: src/Model/User.php:1245
|
||||
#, php-format
|
||||
msgid "Username should be at most %s character."
|
||||
msgid_plural "Username should be at most %s characters."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/Model/User.php:1252
|
||||
#: src/Model/User.php:1253
|
||||
msgid "That doesn't appear to be your full (First Last) name."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1257
|
||||
#: src/Model/User.php:1258
|
||||
msgid "Your email domain is not among those allowed on this site."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1261
|
||||
#: src/Model/User.php:1262
|
||||
msgid "Not a valid email address."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1264
|
||||
#: src/Model/User.php:1265
|
||||
msgid "The nickname was blocked from registration by the nodes admin."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1280
|
||||
#: src/Model/User.php:1281
|
||||
msgid "Your nickname can only contain a-z, 0-9 and _."
|
||||
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."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1359
|
||||
#: src/Model/User.php:1360
|
||||
msgid "An error occurred creating your default profile. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1366
|
||||
#: src/Model/User.php:1367
|
||||
msgid "An error occurred creating your self contact. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1371
|
||||
#: src/Model/User.php:1372
|
||||
msgid "Friends"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1375
|
||||
#: src/Model/User.php:1376
|
||||
msgid ""
|
||||
"An error occurred creating your default contact circle. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1417
|
||||
#: src/Model/User.php:1418
|
||||
msgid "Profile Photos"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1599
|
||||
#: src/Model/User.php:1600
|
||||
#, php-format
|
||||
msgid ""
|
||||
"\n"
|
||||
|
@ -3872,7 +3872,7 @@ msgid ""
|
|||
"\t\t\tthe administrator of %2$s has set up an account for you."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1602
|
||||
#: src/Model/User.php:1603
|
||||
#, php-format
|
||||
msgid ""
|
||||
"\n"
|
||||
|
@ -3908,12 +3908,12 @@ msgid ""
|
|||
"\t\tThank you and welcome to %4$s."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1634 src/Model/User.php:1740
|
||||
#: src/Model/User.php:1635 src/Model/User.php:1741
|
||||
#, php-format
|
||||
msgid "Registration details for %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1654
|
||||
#: src/Model/User.php:1655
|
||||
#, php-format
|
||||
msgid ""
|
||||
"\n"
|
||||
|
@ -3929,12 +3929,12 @@ msgid ""
|
|||
"\t\t"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1673
|
||||
#: src/Model/User.php:1674
|
||||
#, php-format
|
||||
msgid "Registration at %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1697
|
||||
#: src/Model/User.php:1698
|
||||
#, php-format
|
||||
msgid ""
|
||||
"\n"
|
||||
|
@ -3943,7 +3943,7 @@ msgid ""
|
|||
"\t\t\t"
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1705
|
||||
#: src/Model/User.php:1706
|
||||
#, php-format
|
||||
msgid ""
|
||||
"\n"
|
||||
|
@ -3981,7 +3981,7 @@ msgid ""
|
|||
"\t\t\tThank you and welcome to %2$s."
|
||||
msgstr ""
|
||||
|
||||
#: src/Model/User.php:1767
|
||||
#: src/Model/User.php:1768
|
||||
msgid ""
|
||||
"User with delegates can't be removed, please remove delegate users first"
|
||||
msgstr ""
|
||||
|
@ -4053,7 +4053,7 @@ msgstr ""
|
|||
#: 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/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:246
|
||||
#: src/Module/Settings/Delegation.php:193 src/Module/Settings/Display.php:312
|
||||
|
@ -7957,29 +7957,33 @@ msgid "Public Group"
|
|||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Moderation/BaseUsers.php:123
|
||||
#: src/Module/Moderation/BaseUsers.php:124
|
||||
msgid "Private Group"
|
||||
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
|
||||
msgid "Personal Page"
|
||||
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
|
||||
msgid "Organisation Page"
|
||||
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
|
||||
msgid "News Page"
|
||||
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
|
||||
msgid "Community Group"
|
||||
msgstr ""
|
||||
|
@ -9376,7 +9380,7 @@ msgid "Please repeat your e-mail address:"
|
|||
msgstr ""
|
||||
|
||||
#: 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:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -9385,7 +9389,7 @@ msgid "Leave empty for an auto generated password."
|
|||
msgstr ""
|
||||
|
||||
#: 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:"
|
||||
msgstr ""
|
||||
|
||||
|
@ -9611,24 +9615,24 @@ msgid "Update Password"
|
|||
msgstr ""
|
||||
|
||||
#: src/Module/Security/PasswordTooLong.php:99
|
||||
#: src/Module/Settings/Account.php:559
|
||||
#: src/Module/Settings/Account.php:566
|
||||
msgid "Current Password:"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Security/PasswordTooLong.php:100
|
||||
#: src/Module/Settings/Account.php:543
|
||||
#: src/Module/Settings/Account.php:550
|
||||
msgid ""
|
||||
"Allowed characters are a-z, A-Z, 0-9 and special characters except white "
|
||||
"spaces and accentuated letters."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
msgstr ""
|
||||
|
||||
|
@ -9826,32 +9830,36 @@ msgid "Automatically approves all contact requests."
|
|||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:505
|
||||
msgid "Contact requests have to be manually approved."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:512
|
||||
msgid ""
|
||||
"Account for a popular profile that automatically approves contact requests "
|
||||
"as \"Friends\"."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:510
|
||||
#: src/Module/Settings/Account.php:517
|
||||
msgid "Private Group [Experimental]"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:512
|
||||
#: src/Module/Settings/Account.php:519
|
||||
msgid "Requires manual approval of contact requests."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:521
|
||||
#: src/Module/Settings/Account.php:528
|
||||
msgid "OpenID:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:521
|
||||
#: src/Module/Settings/Account.php:528
|
||||
msgid "(Optional) Allow this OpenID to login to this account."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:529
|
||||
#: src/Module/Settings/Account.php:536
|
||||
msgid "Publish your profile in your local site directory?"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:529
|
||||
#: src/Module/Settings/Account.php:536
|
||||
#, php-format
|
||||
msgid ""
|
||||
"Your profile will be published in this node's <a href=\"%s\">local "
|
||||
|
@ -9859,94 +9867,94 @@ msgid ""
|
|||
"system settings."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:535
|
||||
#: src/Module/Settings/Account.php:542
|
||||
#, php-format
|
||||
msgid ""
|
||||
"Your profile will also be published in the global friendica directories (e."
|
||||
"g. <a href=\"%s\">%s</a>)."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:548
|
||||
#: src/Module/Settings/Account.php:555
|
||||
msgid "Account Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:549
|
||||
#: src/Module/Settings/Account.php:556
|
||||
#, php-format
|
||||
msgid "Your Identity Address is <strong>'%s'</strong> or '%s'."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:556
|
||||
#: src/Module/Settings/Account.php:563
|
||||
msgid "Password Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:558
|
||||
#: src/Module/Settings/Account.php:565
|
||||
msgid "Leave password fields blank unless changing"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:560
|
||||
#: src/Module/Settings/Account.php:567
|
||||
msgid "Password:"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:563
|
||||
#: src/Module/Settings/Account.php:570
|
||||
msgid "Delete OpenID URL"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:565
|
||||
#: src/Module/Settings/Account.php:572
|
||||
msgid "Basic Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:566
|
||||
#: src/Module/Settings/Account.php:573
|
||||
#: src/Module/Settings/Profile/Index.php:283
|
||||
msgid "Display name:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:567
|
||||
#: src/Module/Settings/Account.php:574
|
||||
msgid "Email Address:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:568
|
||||
#: src/Module/Settings/Account.php:575
|
||||
msgid "Your Timezone:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:569
|
||||
#: src/Module/Settings/Account.php:576
|
||||
msgid "Your Language:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:569
|
||||
#: src/Module/Settings/Account.php:576
|
||||
msgid ""
|
||||
"Set the language we use to show you friendica interface and to send you "
|
||||
"emails"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:570
|
||||
#: src/Module/Settings/Account.php:577
|
||||
msgid "Default Post Location:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:571
|
||||
#: src/Module/Settings/Account.php:578
|
||||
msgid "Use Browser Location:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:573
|
||||
#: src/Module/Settings/Account.php:580
|
||||
msgid "Security and Privacy Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:575
|
||||
#: src/Module/Settings/Account.php:582
|
||||
msgid "Maximum Friend Requests/Day:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:575
|
||||
#: src/Module/Settings/Account.php:582
|
||||
msgid "(to prevent spam abuse)"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:577
|
||||
#: src/Module/Settings/Account.php:584
|
||||
msgid "Allow your profile to be searchable globally?"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:577
|
||||
#: src/Module/Settings/Account.php:584
|
||||
msgid ""
|
||||
"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 "
|
||||
|
@ -9954,43 +9962,43 @@ msgid ""
|
|||
"indexed or not."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:578
|
||||
#: src/Module/Settings/Account.php:585
|
||||
msgid "Hide your contact/friend list from viewers of your profile?"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:578
|
||||
#: src/Module/Settings/Account.php:585
|
||||
msgid ""
|
||||
"A list of your contacts is displayed on your profile page. Activate this "
|
||||
"option to disable the display of your contact list."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:579
|
||||
#: src/Module/Settings/Account.php:586
|
||||
msgid "Hide your public content from anonymous viewers"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:579
|
||||
#: src/Module/Settings/Account.php:586
|
||||
msgid ""
|
||||
"Anonymous visitors will only see your basic profile details. Your public "
|
||||
"posts and replies will still be freely accessible on the remote servers of "
|
||||
"your followers and through relays."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:580
|
||||
#: src/Module/Settings/Account.php:587
|
||||
msgid "Make public posts unlisted"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:580
|
||||
#: src/Module/Settings/Account.php:587
|
||||
msgid ""
|
||||
"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 "
|
||||
"public feeds on remote servers."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:581
|
||||
#: src/Module/Settings/Account.php:588
|
||||
msgid "Make all posted pictures accessible"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:581
|
||||
#: src/Module/Settings/Account.php:588
|
||||
msgid ""
|
||||
"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 "
|
||||
|
@ -9998,227 +10006,227 @@ msgid ""
|
|||
"public on your photo albums though."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:582
|
||||
#: src/Module/Settings/Account.php:589
|
||||
msgid "Allow friends to post to your profile page?"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:582
|
||||
#: src/Module/Settings/Account.php:589
|
||||
msgid ""
|
||||
"Your contacts may write posts on your profile wall. These posts will be "
|
||||
"distributed to your contacts"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:583
|
||||
#: src/Module/Settings/Account.php:590
|
||||
msgid "Allow friends to tag your posts?"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:583
|
||||
#: src/Module/Settings/Account.php:590
|
||||
msgid "Your contacts can add additional tags to your posts."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:584
|
||||
#: src/Module/Settings/Account.php:591
|
||||
msgid "Default privacy circle for new contacts"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:585
|
||||
#: src/Module/Settings/Account.php:592
|
||||
msgid "Default privacy circle for new group contacts"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:586
|
||||
#: src/Module/Settings/Account.php:593
|
||||
msgid "Default Post Permissions"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:590
|
||||
#: src/Module/Settings/Account.php:597
|
||||
msgid "Expiration settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:591
|
||||
#: src/Module/Settings/Account.php:598
|
||||
msgid "Automatically expire posts after this many days:"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:592
|
||||
#: src/Module/Settings/Account.php:599
|
||||
msgid "Expire posts"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:592
|
||||
#: src/Module/Settings/Account.php:599
|
||||
msgid "When activated, posts and comments will be expired."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:593
|
||||
#: src/Module/Settings/Account.php:600
|
||||
msgid "Expire personal notes"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:593
|
||||
#: src/Module/Settings/Account.php:600
|
||||
msgid ""
|
||||
"When activated, the personal notes on your profile page will be expired."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:594
|
||||
#: src/Module/Settings/Account.php:601
|
||||
msgid "Expire starred posts"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:594
|
||||
#: src/Module/Settings/Account.php:601
|
||||
msgid ""
|
||||
"Starring posts keeps them from being expired. That behaviour is overwritten "
|
||||
"by this setting."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:595
|
||||
#: src/Module/Settings/Account.php:602
|
||||
msgid "Only expire posts by others"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:595
|
||||
#: src/Module/Settings/Account.php:602
|
||||
msgid ""
|
||||
"When activated, your own posts never expire. Then the settings above are "
|
||||
"only valid for posts you received."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:598
|
||||
#: src/Module/Settings/Account.php:605
|
||||
msgid "Notification Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:599
|
||||
#: src/Module/Settings/Account.php:606
|
||||
msgid "Send a notification email when:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:600
|
||||
#: src/Module/Settings/Account.php:607
|
||||
msgid "You receive an introduction"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:601
|
||||
#: src/Module/Settings/Account.php:608
|
||||
msgid "Your introductions are confirmed"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:602
|
||||
#: src/Module/Settings/Account.php:609
|
||||
msgid "Someone writes on your profile wall"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:603
|
||||
#: src/Module/Settings/Account.php:610
|
||||
msgid "Someone writes a followup comment"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:604
|
||||
#: src/Module/Settings/Account.php:611
|
||||
msgid "You receive a private message"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:605
|
||||
#: src/Module/Settings/Account.php:612
|
||||
msgid "You receive a friend suggestion"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:606
|
||||
#: src/Module/Settings/Account.php:613
|
||||
msgid "You are tagged in a post"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:608
|
||||
#: src/Module/Settings/Account.php:615
|
||||
msgid "Create a desktop notification when:"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:609
|
||||
#: src/Module/Settings/Account.php:616
|
||||
msgid "Someone tagged you"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:610
|
||||
#: src/Module/Settings/Account.php:617
|
||||
msgid "Someone directly commented on your post"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:611
|
||||
#: src/Module/Settings/Account.php:618
|
||||
msgid "Someone liked your content"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:612
|
||||
#: src/Module/Settings/Account.php:619
|
||||
msgid "Someone shared your content"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:613
|
||||
#: src/Module/Settings/Account.php:620
|
||||
msgid "Someone commented in your thread"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:614
|
||||
#: src/Module/Settings/Account.php:621
|
||||
msgid "Someone commented in a thread where you commented"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:615
|
||||
#: src/Module/Settings/Account.php:622
|
||||
msgid "Someone commented in a thread where you interacted"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:617
|
||||
#: src/Module/Settings/Account.php:624
|
||||
msgid "Activate desktop notifications"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:617
|
||||
#: src/Module/Settings/Account.php:624
|
||||
msgid "Show desktop popup on new notifications"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:621
|
||||
#: src/Module/Settings/Account.php:628
|
||||
msgid "Text-only notification emails"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:623
|
||||
#: src/Module/Settings/Account.php:630
|
||||
msgid "Send text only notification emails, without the html part"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:627
|
||||
#: src/Module/Settings/Account.php:634
|
||||
msgid "Show detailled notifications"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:629
|
||||
#: src/Module/Settings/Account.php:636
|
||||
msgid ""
|
||||
"Per default, notifications are condensed to a single notification per item. "
|
||||
"When enabled every notification is displayed."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:633
|
||||
#: src/Module/Settings/Account.php:640
|
||||
msgid "Show notifications of ignored contacts"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:635
|
||||
#: src/Module/Settings/Account.php:642
|
||||
msgid ""
|
||||
"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 "
|
||||
"that are caused by ignored contacts or not."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:638
|
||||
#: src/Module/Settings/Account.php:645
|
||||
msgid "Advanced Account/Page Type Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:639
|
||||
#: src/Module/Settings/Account.php:646
|
||||
msgid "Change the behaviour of this account for special situations"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:642
|
||||
#: src/Module/Settings/Account.php:649
|
||||
msgid "Import Contacts"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:643
|
||||
#: src/Module/Settings/Account.php:650
|
||||
msgid ""
|
||||
"Upload a CSV file that contains the handle of your followed accounts in the "
|
||||
"first column you exported from the old account."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:644
|
||||
#: src/Module/Settings/Account.php:651
|
||||
msgid "Upload File"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:647
|
||||
#: src/Module/Settings/Account.php:654
|
||||
msgid "Relocate"
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:648
|
||||
#: src/Module/Settings/Account.php:655
|
||||
msgid ""
|
||||
"If you have moved this profile from another server, and some of your "
|
||||
"contacts don't receive your updates, try pushing this button."
|
||||
msgstr ""
|
||||
|
||||
#: src/Module/Settings/Account.php:649
|
||||
#: src/Module/Settings/Account.php:656
|
||||
msgid "Resend relocate message to contacts"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
<div id="account-type-sub-3" class="pageflags">
|
||||
<h5>{{$community}}</h5>
|
||||
{{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}}
|
||||
</div>
|
||||
|
||||
|
|
|
@ -76,6 +76,7 @@
|
|||
{{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==5}}fa-user-secret{{/if}} {{* PAGE_PRVGROUP *}}
|
||||
{{if $u.page_flags_raw==6}}fa-users{{/if}} {{* PAGE_COMM_MAN *}}
|
||||
" title="{{$u.page_flags}}">
|
||||
</i>
|
||||
{{if $u.page_flags_raw==0 && $u.account_type_raw > 0}}
|
||||
|
|
|
@ -75,7 +75,8 @@
|
|||
{{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==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>
|
||||
{{if $u.page_flags_raw==0 && $u.account_type_raw > 0}}
|
||||
<i class="fa
|
||||
|
|
|
@ -76,6 +76,7 @@
|
|||
{{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==5}}fa-user-secret{{/if}} {{* PAGE_PRVGROUP *}}
|
||||
{{if $u.page_flags_raw==6}}fa-users{{/if}} {{* PAGE_COMM_MAN *}}
|
||||
" title="{{$u.page_flags}}">
|
||||
</i>
|
||||
{{if $u.page_flags_raw==0 && $u.account_type_raw > 0}}
|
||||
|
|
Ładowanie…
Reference in New Issue