mirror of https://github.com/pixelfed/pixelfed
Staging (#5978)
* Added current title as value for input so that the current value remains stored by default * Added parameter 'show_legal_notice_link' => (bool) config_cache('instance.has_legal_notice'), * Added conditional display of a link to legal notice if the page is active * Added key 'legalNotice' * feat translate story * translate auth - register - login * add remove follow * Update ApiV1Controller.php Co-Authored-By: Mathieu <385764+Casmo@users.noreply.github.com> * New translations web.php (Chinese Simplified) [ci skip] * Added current title as value for input so that the current value remains stored by default * Added parameter 'show_legal_notice_link' => (bool) config_cache('instance.has_legal_notice'), * Added conditional display of a link to legal notice if the page is active * Added key 'legalNotice' * add missing key * add missing keys * New translations web.php (Portuguese, Brazilian) [ci skip] * New translations web.php (Turkish) [ci skip] * New translations web.php (Italian) [ci skip] * translate custom filter * New translations web.php (Italian) [ci skip] * use configured alt text length limit when uploading multiple photos * in notifications sidebar, show popover on shared posts too, not just liked posts * use case insensitive search when tagging accounts * New translations web.php (Portuguese, Brazilian) [ci skip] * Generic OIDC Support * Everything should be configurable by env variables * Basic request tests * Fixes for items highlighted by review.ai * Consider using `hash_equals()` instead of `==` when comparing the state values to prevent timing attacks: `abort_unless(hash_equals($request->input('state'), $request->session()->pull('oauth2state')), 400, 'invalid state');` * For better data integrity, consider adding a foreign key constraint to the user_id column: `$table- >foreign('user_id')->references('id')->on('users')->onDelete('cascade');` * Does the OIDC provider guarantee that the username field exists in the userInfo data? Consider adding a null check or fallback: `$userInfoData[config('remote-auth.oidc.field_username')] ?? null` * field isnt accessTokenResourceOwnerId but responseResourceOwnerId * New translations web.php (Dutch) [ci skip] * Fix components * Update LandingService and Config util to properly support the legal_notice setting * Update footer to use legalNotice i18n * Update i18n * Update sidebar with gap padding for footer links * Update compiled assets * Update i18n json * Update OIDC config with comments, and disable tests as we dont have db tests configured * Update remove_from_followers api endpoint * Update i18n * Update compiled assets * Update changelog * New supported formats, Preserve ICC Color Profiles, libvips support Update image pipeline to handle avif, heic and webp and preserve ICC color profiles and added libvips support. * Fix tests * Update CHANGELOG.md --------- Co-authored-by: Samy Elshamy <elshamy@coderbutze.de> Co-authored-by: Felipe Mateus <eu@felipemateus.com> Co-authored-by: Mathieu <385764+Casmo@users.noreply.github.com> Co-authored-by: Mackenzie Morgan <macoafi@gmail.com> Co-authored-by: Gavin Mogan <git@gavinmogan.com>pull/5979/head^2
parent
3d6348225b
commit
3861e7ddfe
@ -0,0 +1,121 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\UserOidcMapping;
|
||||||
|
use Purify;
|
||||||
|
use App\Services\EmailService;
|
||||||
|
use App\Services\UserOidcService;
|
||||||
|
use App\User;
|
||||||
|
use Illuminate\Auth\Events\Registered;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use App\Rules\EmailNotBanned;
|
||||||
|
use App\Rules\PixelfedUsername;
|
||||||
|
|
||||||
|
class RemoteOidcController extends Controller
|
||||||
|
{
|
||||||
|
protected $fractal;
|
||||||
|
|
||||||
|
public function start(UserOidcService $provider, Request $request)
|
||||||
|
{
|
||||||
|
abort_unless((bool) config('remote-auth.oidc.enabled'), 404);
|
||||||
|
if ($request->user()) {
|
||||||
|
return redirect('/');
|
||||||
|
}
|
||||||
|
|
||||||
|
$url = $provider->getAuthorizationUrl([
|
||||||
|
'scope' => $provider->getDefaultScopes(),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$request->session()->put('oauth2state', $provider->getState());
|
||||||
|
|
||||||
|
return redirect($url);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handleCallback(UserOidcService $provider, Request $request)
|
||||||
|
{
|
||||||
|
abort_unless((bool) config('remote-auth.oidc.enabled'), 404);
|
||||||
|
|
||||||
|
if ($request->user()) {
|
||||||
|
return redirect('/');
|
||||||
|
}
|
||||||
|
|
||||||
|
abort_unless($request->input("state"), 400);
|
||||||
|
abort_unless($request->input("code"), 400);
|
||||||
|
|
||||||
|
abort_unless(hash_equals($request->session()->pull('oauth2state'), $request->input("state")), 400, "invalid state");
|
||||||
|
|
||||||
|
$accessToken = $provider->getAccessToken('authorization_code', [
|
||||||
|
'code' => $request->get('code')
|
||||||
|
]);
|
||||||
|
|
||||||
|
$userInfo = $provider->getResourceOwner($accessToken);
|
||||||
|
$userInfoId = $userInfo->getId();
|
||||||
|
$userInfoData = $userInfo->toArray();
|
||||||
|
|
||||||
|
$mappedUser = UserOidcMapping::where('oidc_id', $userInfoId)->first();
|
||||||
|
if ($mappedUser) {
|
||||||
|
$this->guarder()->login($mappedUser->user);
|
||||||
|
return redirect('/');
|
||||||
|
}
|
||||||
|
|
||||||
|
abort_if(EmailService::isBanned($userInfoData["email"]), 400, 'Banned email.');
|
||||||
|
|
||||||
|
$user = $this->createUser([
|
||||||
|
'username' => $userInfoData[config('remote-auth.oidc.field_username')],
|
||||||
|
'name' => $userInfoData["name"] ?? $userInfoData["display_name"] ?? $userInfoData[config('remote-auth.oidc.field_username')] ?? null,
|
||||||
|
'email' => $userInfoData["email"],
|
||||||
|
]);
|
||||||
|
|
||||||
|
UserOidcMapping::create([
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'oidc_id' => $userInfoId,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return redirect('/');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function createUser($data)
|
||||||
|
{
|
||||||
|
$this->validate(new Request($data), [
|
||||||
|
'email' => [
|
||||||
|
'required',
|
||||||
|
'string',
|
||||||
|
'email:strict,filter_unicode,dns,spoof',
|
||||||
|
'max:255',
|
||||||
|
'unique:users',
|
||||||
|
new EmailNotBanned(),
|
||||||
|
],
|
||||||
|
'username' => [
|
||||||
|
'required',
|
||||||
|
'min:2',
|
||||||
|
'max:30',
|
||||||
|
'unique:users,username',
|
||||||
|
new PixelfedUsername(),
|
||||||
|
],
|
||||||
|
'name' => 'nullable|max:30',
|
||||||
|
]);
|
||||||
|
|
||||||
|
event(new Registered($user = User::create([
|
||||||
|
'name' => Purify::clean($data['name']),
|
||||||
|
'username' => $data['username'],
|
||||||
|
'email' => $data['email'],
|
||||||
|
'password' => Hash::make(Str::password()),
|
||||||
|
'email_verified_at' => now(),
|
||||||
|
'app_register_ip' => request()->ip(),
|
||||||
|
'register_source' => 'oidc',
|
||||||
|
])));
|
||||||
|
|
||||||
|
$this->guarder()->login($user);
|
||||||
|
|
||||||
|
return $user;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function guarder()
|
||||||
|
{
|
||||||
|
return Auth::guard();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use App\User;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
|
||||||
|
class UserOidcMapping extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
public $timestamps = true;
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'user_id',
|
||||||
|
'oidc_id',
|
||||||
|
];
|
||||||
|
|
||||||
|
public function user()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(User::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Rules;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use App\Services\EmailService;
|
||||||
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
|
|
||||||
|
class EmailNotBanned implements ValidationRule
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the validation rule.
|
||||||
|
*
|
||||||
|
* @param string $attribute
|
||||||
|
* @param mixed $value
|
||||||
|
* @param \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString $fail
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function validate(string $attribute, mixed $value, Closure $fail): void
|
||||||
|
{
|
||||||
|
if (EmailService::isBanned($value)) {
|
||||||
|
$fail('Email is invalid.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Rules;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use App\Util\Lexer\RestrictedNames;
|
||||||
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
|
|
||||||
|
class PixelfedUsername implements ValidationRule
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the validation rule.
|
||||||
|
*
|
||||||
|
* @param string $attribute
|
||||||
|
* @param mixed $value
|
||||||
|
* @param \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString $fail
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function validate(string $attribute, mixed $value, Closure $fail): void
|
||||||
|
{
|
||||||
|
$dash = substr_count($value, '-');
|
||||||
|
$underscore = substr_count($value, '_');
|
||||||
|
$period = substr_count($value, '.');
|
||||||
|
|
||||||
|
if (ends_with($value, ['.php', '.js', '.css'])) {
|
||||||
|
$fail('Username is invalid.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (($dash + $underscore + $period) > 1) {
|
||||||
|
$fail('Username is invalid. Can only contain one dash (-), period (.) or underscore (_).');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! ctype_alnum($value[0])) {
|
||||||
|
$fail('Username is invalid. Must start with a letter or number.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! ctype_alnum($value[strlen($value) - 1])) {
|
||||||
|
$fail('Username is invalid. Must end with a letter or number.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$val = str_replace(['_', '.', '-'], '', $value);
|
||||||
|
if (! ctype_alnum($val)) {
|
||||||
|
$fail('Username is invalid. Username must be alpha-numeric and may contain dashes (-), periods (.) and underscores (_).');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$restricted = RestrictedNames::get();
|
||||||
|
if (in_array(strtolower($value), array_map('strtolower', $restricted))) {
|
||||||
|
$fail('Username cannot be used.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services;
|
||||||
|
|
||||||
|
use League\OAuth2\Client\Provider\GenericProvider;
|
||||||
|
|
||||||
|
class UserOidcService extends GenericProvider {
|
||||||
|
public static function build()
|
||||||
|
{
|
||||||
|
return new UserOidcService([
|
||||||
|
'clientId' => config('remote-auth.oidc.clientId'),
|
||||||
|
'clientSecret' => config('remote-auth.oidc.clientSecret'),
|
||||||
|
'redirectUri' => url('auth/oidc/callback'),
|
||||||
|
'urlAuthorize' => config('remote-auth.oidc.authorizeURL'),
|
||||||
|
'urlAccessToken' => config('remote-auth.oidc.tokenURL'),
|
||||||
|
'urlResourceOwnerDetails' => config('remote-auth.oidc.profileURL'),
|
||||||
|
'scopes' => config('remote-auth.oidc.scopes'),
|
||||||
|
'responseResourceOwnerId' => config('remote-auth.oidc.field_id'),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('user_oidc_mappings', function (Blueprint $table) {
|
||||||
|
$table->bigIncrements('id');
|
||||||
|
$table->bigInteger('user_id')->unsigned()->index();
|
||||||
|
$table->string('oidc_id')->unique()->index();
|
||||||
|
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('user_oidc_mappings');
|
||||||
|
}
|
||||||
|
};
|
@ -1,170 +1,170 @@
|
|||||||
{
|
{
|
||||||
"common": {
|
"common": {
|
||||||
"comment": "\u8a55\u8ad6",
|
"comment": "\u8bc4\u8bba",
|
||||||
"commented": "\u5df2\u8a55\u8ad6",
|
"commented": "\u5df2\u8bc4\u8bba",
|
||||||
"comments": "\u689d\u610f\u898b\u8a55\u8ad6",
|
"comments": "\u8bc4\u8bba",
|
||||||
"like": "\u6309\u8b9a",
|
"like": "\u8d5e",
|
||||||
"liked": "\u5df2\u6309\u8b9a",
|
"liked": "\u5df2\u8d5e",
|
||||||
"likes": "\u500b\u4eba\u5df2\u6309\u8b9a",
|
"likes": "\u70b9\u8d5e",
|
||||||
"share": "\u5206\u4eab",
|
"share": "\u5206\u4eab",
|
||||||
"shared": "\u5df2\u5206\u4eab",
|
"shared": "\u5df2\u5206\u4eab\u7684",
|
||||||
"shares": "\u6b21\u5206\u4eab",
|
"shares": "\u5206\u4eab",
|
||||||
"unshare": "\u53d6\u6d88\u5206\u4eab",
|
"unshare": "\u53d6\u6d88\u5206\u4eab",
|
||||||
"bookmark": "\u66f8\u7c64",
|
"bookmark": "\u6536\u85cf",
|
||||||
"cancel": "\u53d6\u6d88",
|
"cancel": "\u53d6\u6d88",
|
||||||
"copyLink": "\u8907\u88fd\u9023\u7d50",
|
"copyLink": "\u590d\u5236\u94fe\u63a5",
|
||||||
"delete": "\u5220\u9664",
|
"delete": "\u5220\u9664",
|
||||||
"error": "\u932f\u8aa4",
|
"error": "\u9519\u8bef",
|
||||||
"errorMsg": "\u51fa\u4e86\u9ede\u5c0f\u554f\u984c\uff0c\u8acb\u7a0d\u5f8c\u91cd\u8a66\u3002",
|
"errorMsg": "\u51fa\u9519\u4e86\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002",
|
||||||
"oops": "\u5443\u2026",
|
"oops": "\u54ce\u5440\uff01",
|
||||||
"other": "\u5176\u4ed6",
|
"other": "\u5176\u5b83",
|
||||||
"readMore": "\u7e7c\u7e8c\u8b80\u4e0b\u53bb",
|
"readMore": "\u9605\u8bfb\u66f4\u591a",
|
||||||
"success": "\u6210\u529f",
|
"success": "\u6210\u529f",
|
||||||
"proceed": "\u7e7c\u7e8c",
|
"proceed": "\u7ee7\u7eed",
|
||||||
"next": "\u4e0b\u4e00\u500b",
|
"next": "\u4e0b\u4e00\u4e2a",
|
||||||
"close": "\u95dc\u9589",
|
"close": "\u5173\u95ed",
|
||||||
"clickHere": "\u9ede\u64ca\u6b64\u8655",
|
"clickHere": "\u70b9\u51fb\u6b64\u5904",
|
||||||
"sensitive": "\u654f\u611f\u5167\u5bb9",
|
"sensitive": "\u654f\u611f",
|
||||||
"sensitiveContent": "\u654f\u611f\u5167\u5bb9",
|
"sensitiveContent": "\u654f\u611f\u5185\u5bb9",
|
||||||
"sensitiveContentWarning": "\u9019\u7bc7\u6587\u53ef\u80fd\u5305\u542b\u654f\u611f\u5167\u5bb9"
|
"sensitiveContentWarning": "\u6b64\u5e16\u6587\u53ef\u80fd\u5305\u542b\u654f\u611f\u5185\u5bb9"
|
||||||
},
|
},
|
||||||
"site": {
|
"site": {
|
||||||
"terms": "\u4f7f\u7528\u689d\u6b3e",
|
"terms": "\u4f7f\u7528\u6761\u6b3e",
|
||||||
"privacy": "\u96b1\u79c1\u6b0a\u653f\u7b56"
|
"privacy": "\u9690\u79c1\u653f\u7b56"
|
||||||
},
|
},
|
||||||
"navmenu": {
|
"navmenu": {
|
||||||
"search": "\u641c\u5c0b",
|
"search": "\u641c\u7d22",
|
||||||
"admin": "\u7ba1\u7406\u5100\u8868\u677f",
|
"admin": "\u7ba1\u7406\u9762\u677f",
|
||||||
"homeFeed": "\u9996\u9801\u52d5\u614b",
|
"homeFeed": "\u4e3b\u9875",
|
||||||
"localFeed": "\u7ad9\u5167\u52d5\u614b",
|
"localFeed": "\u672c\u7ad9\u52a8\u6001",
|
||||||
"globalFeed": "\u806f\u90a6\u52d5\u614b",
|
"globalFeed": "\u8de8\u7ad9\u52a8\u6001",
|
||||||
"discover": "\u63a2\u7d22",
|
"discover": "\u63a2\u7d22",
|
||||||
"directMessages": "\u79c1\u4eba\u8a0a\u606f",
|
"directMessages": "\u79c1\u4fe1",
|
||||||
"notifications": "\u901a\u77e5",
|
"notifications": "\u901a\u77e5",
|
||||||
"groups": "\u7fa4\u7d44",
|
"groups": "\u7fa4\u7ec4",
|
||||||
"stories": "\u9650\u6642\u52d5\u614b",
|
"stories": "\u6545\u4e8b",
|
||||||
"profile": "\u500b\u4eba\u6a94\u6848",
|
"profile": "\u4e2a\u4eba\u8d44\u6599",
|
||||||
"drive": "Drive",
|
"drive": "\u7f51\u76d8",
|
||||||
"settings": "\u8a2d\u5b9a",
|
"settings": "\u8bbe\u7f6e",
|
||||||
"compose": "\u65b0\u589e",
|
"compose": "\u521b\u5efa",
|
||||||
"logout": "\u767b\u51fa",
|
"logout": "\u767b\u51fa",
|
||||||
"about": "\u95dc\u65bc",
|
"about": "\u5173\u4e8e",
|
||||||
"help": "\u8aac\u660e",
|
"help": "\u5e2e\u52a9",
|
||||||
"language": "\u8a9e\u8a00",
|
"language": "\u8bed\u8a00",
|
||||||
"privacy": "\u96b1\u79c1\u6b0a",
|
"privacy": "\u9690\u79c1",
|
||||||
"terms": "\u689d\u6b3e",
|
"terms": "\u4f7f\u7528\u6761\u6b3e",
|
||||||
"backToPreviousDesign": "\u56de\u5230\u5148\u524d\u7684\u8a2d\u8a08"
|
"backToPreviousDesign": "\u8fd4\u56de\u4e0a\u4e00\u4e2a\u8bbe\u8ba1"
|
||||||
},
|
},
|
||||||
"directMessages": {
|
"directMessages": {
|
||||||
"inbox": "\u6536\u4ef6\u593e",
|
"inbox": "\u6536\u4ef6\u7bb1",
|
||||||
"sent": "\u5bc4\u4ef6\u593e",
|
"sent": "\u5df2\u53d1\u9001",
|
||||||
"requests": "\u8acb\u6c42"
|
"requests": "\u8bf7\u6c42"
|
||||||
},
|
},
|
||||||
"notifications": {
|
"notifications": {
|
||||||
"liked": "\u559c\u6b61\u4f60\u7684",
|
"liked": "\u70b9\u8d5e\u4e86\u4f60\u7684",
|
||||||
"commented": "\u8a55\u8ad6\u4e86\u4f60\u7684",
|
"commented": "\u8bc4\u8bba\u4e86\u4f60\u7684",
|
||||||
"reacted": "\u53cd\u61c9\u4e86\u4f60\u7684",
|
"reacted": "\u56de\u5e94\u4e86\u4f60\u7684",
|
||||||
"shared": "\u5206\u4eab\u4e86\u4f60\u7684",
|
"shared": "\u8f6c\u53d1\u4e86\u4f60\u7684",
|
||||||
"tagged": "tagged you in a",
|
"tagged": "\u5728\u5e16\u5b50\u4e2d\u6807\u8bb0\u4e86\u4f60",
|
||||||
"updatedA": "updated a",
|
"updatedA": "\u66f4\u65b0\u4e86\u4e00\u4e2a",
|
||||||
"sentA": "sent a",
|
"sentA": "\u53d1\u9001\u4e86\u4e00\u4e2a",
|
||||||
"followed": "\u5df2\u95dc\u6ce8",
|
"followed": "\u5df2\u5173\u6ce8",
|
||||||
"mentioned": "\u88ab\u63d0\u53ca",
|
"mentioned": "\u63d0\u53ca\u4e86",
|
||||||
"you": "\u4f60",
|
"you": "\u4f60",
|
||||||
"yourApplication": "\u60a8\u7684\u52a0\u5165\u7533\u8acb",
|
"yourApplication": "\u60a8\u60f3\u8981\u52a0\u5165",
|
||||||
"applicationApproved": "\u88ab\u6279\u51c6\u4e86\uff01",
|
"applicationApproved": "\u7684\u7533\u8bf7\u88ab\u6279\u51c6\u4e86\uff01",
|
||||||
"applicationRejected": "\u88ab\u62d2\u7d55\u3002\u60a8\u53ef\u4ee5\u5728 6 \u500b\u6708\u5f8c\u518d\u6b21\u7533\u8acb\u52a0\u5165\u3002",
|
"applicationRejected": "\u7684\u7533\u8bf7\u88ab\u62d2\u7edd\u3002\u60a8\u53ef\u4ee5\u5728 6 \u4e2a\u6708\u540e\u91cd\u65b0\u7533\u8bf7\u52a0\u5165\u3002",
|
||||||
"dm": "\u76f4\u63a5\u8a0a\u606f",
|
"dm": "\u79c1\u4fe1",
|
||||||
"groupPost": "group post",
|
"groupPost": "\u7fa4\u7ec4\u8d34\u6587",
|
||||||
"modlog": "modlog",
|
"modlog": "\u7ba1\u7406\u65e5\u5fd7",
|
||||||
"post": "post",
|
"post": "\u5e16\u6587",
|
||||||
"story": "story",
|
"story": "\u6545\u4e8b",
|
||||||
"noneFound": "No notifications found"
|
"noneFound": "\u6682\u65e0\u901a\u77e5"
|
||||||
},
|
},
|
||||||
"post": {
|
"post": {
|
||||||
"shareToFollowers": "Share to followers",
|
"shareToFollowers": "\u5206\u4eab\u7ed9\u5173\u6ce8\u8005",
|
||||||
"shareToOther": "Share to other",
|
"shareToOther": "\u4e0e\u4ed6\u4eba\u5206\u4eab",
|
||||||
"noLikes": "No likes yet",
|
"noLikes": "\u5c1a\u65e0\u70b9\u8d5e",
|
||||||
"uploading": "\u4e0a\u50b3\u4e2d"
|
"uploading": "\u4e0a\u4f20\u4e2d"
|
||||||
},
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"posts": "Posts",
|
"posts": "\u5e16\u5b50",
|
||||||
"followers": "\u8ddf\u96a8\u8005",
|
"followers": "\u5173\u6ce8\u8005",
|
||||||
"following": "\u8ffd\u8e64\u4e2d",
|
"following": "\u6b63\u5728\u5173\u6ce8",
|
||||||
"admin": "\u7ba1\u7406\u54e1",
|
"admin": "\u7ba1\u7406\u5458",
|
||||||
"collections": "Collections",
|
"collections": "\u5f71\u96c6",
|
||||||
"follow": "\u8ffd\u8e64",
|
"follow": "\u5173\u6ce8",
|
||||||
"unfollow": "\u53d6\u6d88\u8ffd\u8e64",
|
"unfollow": "\u53d6\u6d88\u5173\u6ce8",
|
||||||
"editProfile": "\u7de8\u8f2f\u500b\u4eba\u6a94\u6848",
|
"editProfile": "\u7f16\u8f91\u4e2a\u4eba\u8d44\u6599",
|
||||||
"followRequested": "\u8ffd\u8e64\u8acb\u6c42",
|
"followRequested": "\u5df2\u53d1\u9001\u5173\u6ce8\u8bf7\u6c42",
|
||||||
"joined": "Joined",
|
"joined": "\u5df2\u52a0\u5165",
|
||||||
"emptyCollections": "We can't seem to find any collections",
|
"emptyCollections": "\u6211\u4eec\u4f3c\u4e4e\u627e\u4e0d\u5230\u4efb\u4f55\u5f71\u96c6",
|
||||||
"emptyPosts": "We can't seem to find any posts"
|
"emptyPosts": "\u6211\u4eec\u4f3c\u4e4e\u672a\u80fd\u627e\u5230\u4efb\u4f55\u5e16\u6587"
|
||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
"viewPost": "View Post",
|
"viewPost": "\u67e5\u770b\u5e16\u6587",
|
||||||
"viewProfile": "View Profile",
|
"viewProfile": "\u67e5\u770b\u4e2a\u4eba\u8d44\u6599",
|
||||||
"moderationTools": "Moderation Tools",
|
"moderationTools": "\u7ba1\u7406\u5de5\u5177",
|
||||||
"report": "\u6aa2\u8209",
|
"report": "\u4e3e\u62a5",
|
||||||
"archive": "\u5c01\u5b58",
|
"archive": "\u5c01\u5b58",
|
||||||
"unarchive": "\u53d6\u6d88\u5c01\u5b58",
|
"unarchive": "\u53d6\u6d88\u5c01\u5b58",
|
||||||
"embed": "\u5d4c\u5165",
|
"embed": "\u5d4c\u5165",
|
||||||
"selectOneOption": "\u9078\u64c7\u4ee5\u4e0b\u9078\u9805\u4e4b\u4e00",
|
"selectOneOption": "\u8bf7\u4ece\u4e0b\u5217\u9009\u9879\u4e2d\u9009\u62e9\u4e00\u4e2a",
|
||||||
"unlistFromTimelines": "\u4e0d\u5728\u6642\u9593\u8ef8\u4e2d\u4e0a\u986f\u793a",
|
"unlistFromTimelines": "\u4ece\u65f6\u95f4\u7ebf\u4e2d\u9690\u85cf",
|
||||||
"addCW": "\u589e\u52a0\u5167\u5bb9\u8b66\u544a",
|
"addCW": "\u6dfb\u52a0\u5185\u5bb9\u8b66\u544a",
|
||||||
"removeCW": "\u79fb\u9664\u5167\u5bb9\u8b66\u544a",
|
"removeCW": "\u79fb\u9664\u5185\u5bb9\u8b66\u544a",
|
||||||
"markAsSpammer": "\u6a19\u8a18\u70ba\u5783\u573e\u8a0a\u606f\u4f86\u6e90\u8005",
|
"markAsSpammer": "\u6807\u8bb0\u4e3a\u9a9a\u6270\u4fe1\u606f\u53d1\u9001\u8005",
|
||||||
"markAsSpammerText": "\u5c0d\u8a08\u6709\u53ca\u672a\u4f86\u8cbc\u6587\u8a2d\u5b9a\u6210\u4e0d\u5217\u51fa\u548c\u589e\u52a0\u5167\u5bb9\u8b66\u544a",
|
"markAsSpammerText": "\u5c06\u6240\u6709\u76ee\u524d\u53ca\u672a\u6765\u7684\u5e16\u5b50\u9690\u85cf\u5e76\u6dfb\u52a0\u5185\u5bb9\u8b66\u544a",
|
||||||
"spam": "\u5783\u573e\u8a0a\u606f",
|
"spam": "\u9a9a\u6270\u4fe1\u606f",
|
||||||
"sensitive": "\u654f\u611f\u5167\u5bb9",
|
"sensitive": "\u654f\u611f\u5185\u5bb9",
|
||||||
"abusive": "\u8fb1\u7f75\u6216\u6709\u5bb3",
|
"abusive": "\u6076\u610f\u6216\u6709\u5bb3\u7684",
|
||||||
"underageAccount": "\u672a\u6210\u5e74\u5e33\u865f",
|
"underageAccount": "\u672a\u6210\u5e74\u8d26\u6237",
|
||||||
"copyrightInfringement": "\u4fb5\u72af\u7248\u6b0a",
|
"copyrightInfringement": "\u7248\u6743\u4fb5\u72af",
|
||||||
"impersonation": "\u5047\u5192\u5e33\u865f",
|
"impersonation": "\u5192\u5145\u4ed6\u4eba",
|
||||||
"scamOrFraud": "\u8a50\u9a19\u5167\u5bb9",
|
"scamOrFraud": "\u9a9a\u6270\u6216\u6b3a\u8bc8\u884c\u4e3a",
|
||||||
"confirmReport": "\u78ba\u8a8d\u6aa2\u8209",
|
"confirmReport": "\u786e\u8ba4\u4e3e\u62a5",
|
||||||
"confirmReportText": "\u4f60\u78ba\u5b9a\u8981\u6aa2\u8209\u9019\u7bc7\u8cbc\u6587\uff1f",
|
"confirmReportText": "\u60a8\u786e\u5b9a\u8981\u4e3e\u62a5\u8fd9\u7bc7\u5e16\u6587\u5417\uff1f",
|
||||||
"reportSent": "\u6aa2\u8209\u5df2\u9001\u51fa\uff01",
|
"reportSent": "\u4e3e\u62a5\u5df2\u53d1\u9001\uff01",
|
||||||
"reportSentText": "\u6211\u5011\u5df2\u7d93\u6536\u5230\u4f60\u7684\u6aa2\u8209\u3002",
|
"reportSentText": "\u6211\u4eec\u5df2\u6210\u529f\u6536\u5230\u60a8\u7684\u4e3e\u62a5\u3002",
|
||||||
"reportSentError": "\u6aa2\u8209\u6b64\u8cbc\u6587\u6642\u51fa\u73fe\u554f\u984c\u3002",
|
"reportSentError": "\u4e3e\u62a5\u8fd9\u4e2a\u5e16\u5b50\u65f6\u51fa\u73b0\u95ee\u9898\u3002",
|
||||||
"modAddCWConfirm": "\u60a8\u78ba\u5b9a\u8981\u70ba\u6b64\u8cbc\u6587\u6dfb\u52a0\u5167\u5bb9\u8b66\u544a\u55ce\uff1f",
|
"modAddCWConfirm": "\u60a8\u786e\u5b9a\u8981\u4e3a\u8fd9\u4e2a\u5e16\u6587\u6dfb\u52a0\u5185\u5bb9\u8b66\u544a\uff1f",
|
||||||
"modCWSuccess": "\u6210\u529f\u6dfb\u52a0\u5167\u5bb9\u8b66\u544a",
|
"modCWSuccess": "\u5185\u5bb9\u8b66\u544a\u5df2\u6210\u529f\u6dfb\u52a0",
|
||||||
"modRemoveCWConfirm": "\u60a8\u78ba\u5b9a\u8981\u522a\u9664\u6b64\u8cbc\u6587\u4e0a\u7684\u5167\u5bb9\u8b66\u544a\u55ce\uff1f",
|
"modRemoveCWConfirm": "\u60a8\u786e\u5b9a\u8981\u79fb\u9664\u8fd9\u4e2a\u5e16\u6587\u4e0a\u7684\u5185\u5bb9\u8b66\u544a\u5417\uff1f",
|
||||||
"modRemoveCWSuccess": "\u5df2\u6210\u529f\u522a\u9664\u5167\u5bb9\u8b66\u544a",
|
"modRemoveCWSuccess": "\u5185\u5bb9\u8b66\u544a\u5df2\u88ab\u6210\u529f\u79fb\u9664",
|
||||||
"modUnlistConfirm": "Are you sure you want to unlist this post?",
|
"modUnlistConfirm": "\u60a8\u786e\u5b9a\u8981\u9690\u85cf\u8fd9\u4e2a\u5e16\u6587\u5417\uff1f",
|
||||||
"modUnlistSuccess": "Successfully unlisted post",
|
"modUnlistSuccess": "\u5e16\u6587\u5df2\u88ab\u6210\u529f\u9690\u85cf",
|
||||||
"modMarkAsSpammerConfirm": "\u60a8\u78ba\u5b9a\u8981\u5c07\u6b64\u4f7f\u7528\u8005\u6a19\u8a18\u70ba\u5783\u573e\u8a0a\u606f\u767c\u9001\u8005\u55ce\uff1f\u6240\u6709\u73fe\u6709\u548c\u672a\u4f86\u7684\u8cbc\u6587\u5c07\u6539\u70ba\u975e\u516c\u958b\uff0c\u4e26\u5c07\u52a0\u4e0a\u5167\u5bb9\u8b66\u544a\u3002",
|
"modMarkAsSpammerConfirm": "\u60a8\u786e\u5b9a\u8981\u5c06\u6b64\u7528\u6237\u6807\u8bb0\u4e3a\u5783\u573e\u4fe1\u606f\u53d1\u9001\u8005\uff1f\u6240\u6709\u6b64\u7528\u6237\u7684\u73b0\u6709\u548c\u672a\u6765\u7684\u5e16\u5b50\u90fd\u5c06\u88ab\u9690\u85cf\uff0c\u5e76\u6dfb\u52a0\u5185\u5bb9\u8b66\u544a\u3002",
|
||||||
"modMarkAsSpammerSuccess": "\u5df2\u6210\u529f\u5c07\u5e33\u6236\u6a19\u8a18\u70ba\u5783\u573e\u8a0a\u606f\u767c\u9001\u8005",
|
"modMarkAsSpammerSuccess": "\u6210\u529f\u5730\u5c06\u5e10\u6237\u6807\u8bb0\u4e3a\u5783\u573e\u4fe1\u606f\u53d1\u9001\u8005",
|
||||||
"toFollowers": "\u7d66\u95dc\u6ce8\u8005",
|
"toFollowers": "\u81f3\u5173\u6ce8\u8005",
|
||||||
"showCaption": "\u986f\u793a\u6587\u5b57\u8aaa\u660e",
|
"showCaption": "\u663e\u793a\u6807\u9898",
|
||||||
"showLikes": "\u986f\u793a\u559c\u6b61",
|
"showLikes": "\u663e\u793a\u70b9\u8d5e",
|
||||||
"compactMode": "\u7dca\u6e4a\u6a21\u5f0f",
|
"compactMode": "\u7d27\u51d1\u6a21\u5f0f",
|
||||||
"embedConfirmText": "\u4f7f\u7528\u6b64\u5d4c\u5165\u5f0f\u5167\u5bb9\u5373\u8868\u793a\u60a8\u540c\u610f\u6211\u5011\u7684",
|
"embedConfirmText": "\u4f7f\u7528\u8fd9\u6bb5\u5d4c\u5165\u5185\u5bb9\u4ee3\u8868\u60a8\u5c06\u540c\u610f\u6211\u4eec\u7684",
|
||||||
"deletePostConfirm": "\u4f60\u78ba\u5b9a\u8981\u522a\u9664\u6b64\u8cbc\u6587\uff1f",
|
"deletePostConfirm": "\u60a8\u786e\u5b9a\u8981\u5220\u9664\u8be5\u8d34\u5417\uff1f",
|
||||||
"archivePostConfirm": "\u60a8\u78ba\u5b9a\u8981\u5c01\u5b58\u6b64\u8cbc\u6587\u55ce\uff1f",
|
"archivePostConfirm": "\u60a8\u786e\u5b9a\u8981\u5c01\u5b58\u6b64\u8d34\u6587\u5417\uff1f",
|
||||||
"unarchivePostConfirm": "\u60a8\u78ba\u5b9a\u8981\u89e3\u9664\u5c01\u5b58\u6b64\u8cbc\u6587\u55ce\uff1f"
|
"unarchivePostConfirm": "\u60a8\u786e\u5b9a\u8981\u53d6\u6d88\u5c01\u5b58\u6b64\u8d34\u6587\u5417\uff1f"
|
||||||
},
|
},
|
||||||
"story": {
|
"story": {
|
||||||
"add": "\u65b0\u589e\u6545\u4e8b"
|
"add": "\u6dfb\u52a0\u6545\u4e8b"
|
||||||
},
|
},
|
||||||
"timeline": {
|
"timeline": {
|
||||||
"peopleYouMayKnow": "\u4f60\u53ef\u80fd\u8a8d\u8b58",
|
"peopleYouMayKnow": "\u60a8\u53ef\u80fd\u8ba4\u8bc6\u7684\u4eba",
|
||||||
"onboarding": {
|
"onboarding": {
|
||||||
"welcome": "\u6b61\u8fce",
|
"welcome": "\u6b22\u8fce",
|
||||||
"thisIsYourHomeFeed": "This is your home feed, a chronological feed of posts from accounts you follow.",
|
"thisIsYourHomeFeed": "\u8fd9\u662f\u4f60\u7684\u4e3b\u9875\u65f6\u95f4\u7ebf\uff0c\u5b83\u4f1a\u6309\u65f6\u95f4\u987a\u5e8f\u6392\u5217\u4f60\u6240\u5173\u6ce8\u7684\u8d26\u6237\u7684\u5e16\u5b50\u3002",
|
||||||
"letUsHelpYouFind": "Let us help you find some interesting people to follow",
|
"letUsHelpYouFind": "\u8ba9\u6211\u4eec\u5e2e\u4f60\u627e\u4e00\u4e9b\u6709\u8da3\u7684\u4eba\u6765\u5173\u6ce8",
|
||||||
"refreshFeed": "\u66f4\u65b0\u6211\u7684\u6e90"
|
"refreshFeed": "\u5237\u65b0\u52a8\u6001\u5217\u8868"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hashtags": {
|
"hashtags": {
|
||||||
"emptyFeed": "\u6211\u5011\u4f3c\u4e4e\u627e\u4e0d\u5230\u6b64\u4e3b\u984c\u6a19\u7c64\u7684\u4efb\u4f55\u8cbc\u6587"
|
"emptyFeed": "\u6211\u4eec\u4f3c\u4e4e\u627e\u4e0d\u5230\u8fd9\u4e2a\u6807\u7b7e\u7684\u4efb\u4f55\u5e16\u5b50"
|
||||||
},
|
},
|
||||||
"report": {
|
"report": {
|
||||||
"report": "\u6aa2\u8209",
|
"report": "\u4e3e\u62a5",
|
||||||
"selectReason": "\u9078\u64c7\u4e00\u500b\u7406\u7531",
|
"selectReason": "\u9009\u62e9\u7406\u7531",
|
||||||
"reported": "\u5df2\u6aa2\u8209",
|
"reported": "\u5df2\u4e3e\u62a5",
|
||||||
"sendingReport": "\u9001\u51fa\u6aa2\u8209",
|
"sendingReport": "\u6b63\u5728\u63d0\u4ea4\u4e3e\u62a5",
|
||||||
"thanksMsg": "\u611f\u8b1d\u4f60\u7684\u6aa2\u8209\u8b93\u4e16\u754c\u66f4\u7f8e\u597d\uff01",
|
"thanksMsg": "\u611f\u8c22\u4f60\u7684\u4e3e\u62a5\uff0c\u8fd9\u6709\u52a9\u4e8e\u7ef4\u62a4\u6211\u4eec\u793e\u533a\u7684\u5b89\u5168\uff01",
|
||||||
"contactAdminMsg": "\u5982\u679c\u4f60\u60f3\u8981\u63d0\u4f9b\u66f4\u591a\u6709\u95dc\u672c\u6b21\u6aa2\u8209\u7684\u5167\u5bb9\u7d66\u7ba1\u7406\u54e1"
|
"contactAdminMsg": "\u5982\u679c\u4f60\u60f3\u5c31\u8fd9\u4e2a\u5e16\u5b50\u8054\u7cfb\u7ba1\u7406\u5458\u6216\u7ba1\u7406\u5458\u4e3e\u62a5"
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
"use strict";(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[2822],{7685:(t,e,a)=>{a.r(e),a.d(e,{default:()=>f});var o=a(85072),n=a.n(o),r=a(12712),d={insert:"head",singleton:!1};n()(r.default,d);const f=r.default.locals||{}},12712:(t,e,a)=>{a.r(e),a.d(e,{default:()=>r});var o=a(76798),n=a.n(o)()((function(t){return t[1]}));n.push([t.id,".group-notifications-component[data-v-a4ffe9ee]{font-family:var(--font-family-sans-serif)}.group-notifications-component .jumbotron[data-v-a4ffe9ee]{background-color:#fff;border-radius:0}",""]);const r=n},22500:(t,e,a)=>{a.r(e),a.d(e,{default:()=>d});var o=a(47393),n=a(67988),r={};for(const t in n)"default"!==t&&(r[t]=()=>n[t]);a.d(e,r);a(61784);const d=(0,a(14486).default)(n.default,o.render,o.staticRenderFns,!1,null,"a4ffe9ee",null).exports},42360:(t,e,a)=>{a.r(e),a.d(e,{render:()=>o,staticRenderFns:()=>n});var o=function(){var t=this._self._c;return t("div",{staticClass:"group-notifications-component"},[t("div",{staticClass:"row border-bottom m-0 p-0"},[t("sidebar"),this._v(" "),t("create-group")],1)])},n=[]},47393:(t,e,a)=>{a.r(e);var o=a(42360),n={};for(const t in o)"default"!==t&&(n[t]=()=>o[t]);a.d(e,n)},61784:(t,e,a)=>{a.r(e);var o=a(7685),n={};for(const t in o)"default"!==t&&(n[t]=()=>o[t]);a.d(e,n)},67988:(t,e,a)=>{a.r(e),a.d(e,{default:()=>r});var o=a(96140),n={};for(const t in o)"default"!==t&&(n[t]=()=>o[t]);a.d(e,n);const r=o.default},96140:(t,e,a)=>{a.r(e),a.d(e,{default:()=>d});var o=a(26679),n=a(16080),r=a(49139);const d={components:{sidebar:o.default,loader:n.default,"create-group":r.default},data:function(){return{loaded:!1,loadTimeout:void 0}},created:function(){var t=this;this.loadTimeout=setTimeout((function(){t.loaded=!0}),1e3)},beforeUnmount:function(){clearTimeout(this.loadTimeout)}}}}]);
|
"use strict";(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[2822],{7685:(t,e,a)=>{a.r(e),a.d(e,{default:()=>f});var o=a(85072),n=a.n(o),r=a(12712),d={insert:"head",singleton:!1};n()(r.default,d);const f=r.default.locals||{}},12712:(t,e,a)=>{a.r(e),a.d(e,{default:()=>r});var o=a(76798),n=a.n(o)()((function(t){return t[1]}));n.push([t.id,".group-notifications-component[data-v-a4ffe9ee]{font-family:var(--font-family-sans-serif)}.group-notifications-component .jumbotron[data-v-a4ffe9ee]{background-color:#fff;border-radius:0}",""]);const r=n},22500:(t,e,a)=>{a.r(e),a.d(e,{default:()=>d});var o=a(47393),n=a(45607),r={};for(const t in n)"default"!==t&&(r[t]=()=>n[t]);a.d(e,r);a(61784);const d=(0,a(14486).default)(n.default,o.render,o.staticRenderFns,!1,null,"a4ffe9ee",null).exports},42360:(t,e,a)=>{a.r(e),a.d(e,{render:()=>o,staticRenderFns:()=>n});var o=function(){var t=this._self._c;return t("div",{staticClass:"group-notifications-component"},[t("div",{staticClass:"row border-bottom m-0 p-0"},[t("sidebar"),this._v(" "),t("create-group")],1)])},n=[]},45607:(t,e,a)=>{a.r(e),a.d(e,{default:()=>r});var o=a(96140),n={};for(const t in o)"default"!==t&&(n[t]=()=>o[t]);a.d(e,n);const r=o.default},47393:(t,e,a)=>{a.r(e);var o=a(42360),n={};for(const t in o)"default"!==t&&(n[t]=()=>o[t]);a.d(e,n)},61784:(t,e,a)=>{a.r(e);var o=a(7685),n={};for(const t in o)"default"!==t&&(n[t]=()=>o[t]);a.d(e,n)},96140:(t,e,a)=>{a.r(e),a.d(e,{default:()=>d});var o=a(26679),n=a(16080),r=a(49139);const d={components:{sidebar:o.default,loader:n.default,"create-group":r.default},data:function(){return{loaded:!1,loadTimeout:void 0}},created:function(){var t=this;this.loadTimeout=setTimeout((function(){t.loaded=!0}),1e3)},beforeUnmount:function(){clearTimeout(this.loadTimeout)}}}}]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
(()=>{"use strict";var e,r,a,o={},t={};function n(e){var r=t[e];if(void 0!==r)return r.exports;var a=t[e]={id:e,loaded:!1,exports:{}};return o[e].call(a.exports,a,a.exports,n),a.loaded=!0,a.exports}n.m=o,e=[],n.O=(r,a,o,t)=>{if(!a){var c=1/0;for(f=0;f<e.length;f++){for(var[a,o,t]=e[f],d=!0,s=0;s<a.length;s++)(!1&t||c>=t)&&Object.keys(n.O).every((e=>n.O[e](a[s])))?a.splice(s--,1):(d=!1,t<c&&(c=t));if(d){e.splice(f--,1);var i=o();void 0!==i&&(r=i)}}return r}t=t||0;for(var f=e.length;f>0&&e[f-1][2]>t;f--)e[f]=e[f-1];e[f]=[a,o,t]},n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var a in r)n.o(r,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:r[a]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,a)=>(n.f[a](e,r),r)),[])),n.u=e=>"js/"+{529:"groups-page",1179:"daci.chunk",1240:"discover~myhashtags.chunk",1645:"profile~following.bundle",2156:"dms.chunk",2822:"group.create",2966:"discover~hashtag.bundle",3688:"discover~serverfeed.chunk",4951:"home.chunk",6250:"discover~settings.chunk",6438:"groups-page-media",6535:"discover.chunk",6740:"discover~memories.chunk",6791:"groups-page-members",7206:"groups-page-topics",7342:"groups-post",7399:"dms~message.chunk",7413:"error404.bundle",7521:"discover~findfriends.chunk",7744:"notifications.chunk",8087:"profile.chunk",8119:"i18n.bundle",8257:"groups-page-about",8408:"post.chunk",8977:"profile~followers.bundle",9124:"compose.chunk",9231:"groups-profile",9919:"changelog.bundle"}[e]+"."+{529:"4a77f2a4e0024224",1179:"4eaae509ed4a084c",1240:"57eeb9257cb300fd",1645:"8ebe39a19638db1b",2156:"13449036a5b769e6",2822:"38102523ebf4cde9",2966:"fffb7ab6f02db6fe",3688:"b7e1082a3be6ef4c",4951:"7b3c50ff0f7828a4",6250:"edeee5803151d4eb",6438:"526b66b27a0bd091",6535:"0ca404627af971f2",6740:"8ea5b8e37111f15f",6791:"c59de89c3b8e3a02",7206:"d279a2438ee20311",7342:"e160e406bdb4a1b0",7399:"f0d6ccb6f2f1cbf7",7413:"f5958c1713b4ab7c",7521:"2ccaf3c586ba03fc",7744:"a8193668255b2c9a",8087:"5d560ecb7d4a57ce",8119:"85976a3b9d6b922a",8257:"16d96a32748daa93",8408:"d0c8b400a930b92a",8977:"9d2008cfa13a6f17",9124:"80e32f21442c8a91",9231:"58b5bf1af4d0722e",9919:"efd3d17aee17020e"}[e]+".js",n.miniCssF=e=>({2305:"css/portfolio",2540:"css/landing",3364:"css/admin",4370:"css/profile",6952:"css/appdark",8252:"css/app",8759:"css/spa"}[e]+".css"),n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},a="pixelfed:",n.l=(e,o,t,c)=>{if(r[e])r[e].push(o);else{var d,s;if(void 0!==t)for(var i=document.getElementsByTagName("script"),f=0;f<i.length;f++){var u=i[f];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==a+t){d=u;break}}d||(s=!0,(d=document.createElement("script")).charset="utf-8",d.timeout=120,n.nc&&d.setAttribute("nonce",n.nc),d.setAttribute("data-webpack",a+t),d.src=e),r[e]=[o];var l=(a,o)=>{d.onerror=d.onload=null,clearTimeout(b);var t=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),t&&t.forEach((e=>e(o))),a)return a(o)},b=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),s&&document.head.appendChild(d)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.p="/",(()=>{var e={461:0,6952:0,8252:0,2305:0,3364:0,2540:0,4370:0,8759:0};n.f.j=(r,a)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)a.push(o[2]);else if(/^((69|82)52|2305|2540|3364|4370|461|8759)$/.test(r))e[r]=0;else{var t=new Promise(((a,t)=>o=e[r]=[a,t]));a.push(o[2]=t);var c=n.p+n.u(r),d=new Error;n.l(c,(a=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var t=a&&("load"===a.type?"missing":a.type),c=a&&a.target&&a.target.src;d.message="Loading chunk "+r+" failed.\n("+t+": "+c+")",d.name="ChunkLoadError",d.type=t,d.request=c,o[1](d)}}),"chunk-"+r,r)}},n.O.j=r=>0===e[r];var r=(r,a)=>{var o,t,[c,d,s]=a,i=0;if(c.some((r=>0!==e[r]))){for(o in d)n.o(d,o)&&(n.m[o]=d[o]);if(s)var f=s(n)}for(r&&r(a);i<c.length;i++)t=c[i],n.o(e,t)&&e[t]&&e[t][0](),e[t]=0;return n.O(f)},a=self.webpackChunkpixelfed=self.webpackChunkpixelfed||[];a.forEach(r.bind(null,0)),a.push=r.bind(null,a.push.bind(a))})(),n.nc=void 0})();
|
(()=>{"use strict";var e,r,o,a={},t={};function n(e){var r=t[e];if(void 0!==r)return r.exports;var o=t[e]={id:e,loaded:!1,exports:{}};return a[e].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}n.m=a,e=[],n.O=(r,o,a,t)=>{if(!o){var d=1/0;for(f=0;f<e.length;f++){for(var[o,a,t]=e[f],s=!0,c=0;c<o.length;c++)(!1&t||d>=t)&&Object.keys(n.O).every((e=>n.O[e](o[c])))?o.splice(c--,1):(s=!1,t<d&&(d=t));if(s){e.splice(f--,1);var i=a();void 0!==i&&(r=i)}}return r}t=t||0;for(var f=e.length;f>0&&e[f-1][2]>t;f--)e[f]=e[f-1];e[f]=[o,a,t]},n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var o in r)n.o(r,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,o)=>(n.f[o](e,r),r)),[])),n.u=e=>"js/"+{529:"groups-page",1179:"daci.chunk",1240:"discover~myhashtags.chunk",1645:"profile~following.bundle",2156:"dms.chunk",2822:"group.create",2966:"discover~hashtag.bundle",3688:"discover~serverfeed.chunk",4951:"home.chunk",6250:"discover~settings.chunk",6438:"groups-page-media",6535:"discover.chunk",6740:"discover~memories.chunk",6791:"groups-page-members",7206:"groups-page-topics",7342:"groups-post",7399:"dms~message.chunk",7413:"error404.bundle",7521:"discover~findfriends.chunk",7744:"notifications.chunk",8087:"profile.chunk",8119:"i18n.bundle",8257:"groups-page-about",8408:"post.chunk",8977:"profile~followers.bundle",9124:"compose.chunk",9231:"groups-profile",9919:"changelog.bundle"}[e]+"."+{529:"4a77f2a4e0024224",1179:"0903327306251770",1240:"9b2cd210943ec613",1645:"8ebe39a19638db1b",2156:"746342b9470dc71f",2822:"e34ad5621d07870d",2966:"3f6d5e3bb2865a61",3688:"7eeef300c5b29e82",4951:"cf3e6ccd3b76689d",6250:"80c4e5afc970254e",6438:"526b66b27a0bd091",6535:"8698471944aa4417",6740:"8601596a52c06bfc",6791:"c59de89c3b8e3a02",7206:"d279a2438ee20311",7342:"e160e406bdb4a1b0",7399:"8cdd27784f95ee11",7413:"f5958c1713b4ab7c",7521:"c3db8f429e763088",7744:"eb78183fd97a9f0f",8087:"5b03b78ed621f690",8119:"ff6f2af48fd2e3d5",8257:"16d96a32748daa93",8408:"cdef3ec51a723c2f",8977:"9d2008cfa13a6f17",9124:"8292176da8a20099",9231:"58b5bf1af4d0722e",9919:"8ee4f1174f52ec8b"}[e]+".js",n.miniCssF=e=>({2305:"css/portfolio",2540:"css/landing",3364:"css/admin",4370:"css/profile",6952:"css/appdark",8252:"css/app",8759:"css/spa"}[e]+".css"),n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},o="pixelfed:",n.l=(e,a,t,d)=>{if(r[e])r[e].push(a);else{var s,c;if(void 0!==t)for(var i=document.getElementsByTagName("script"),f=0;f<i.length;f++){var u=i[f];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==o+t){s=u;break}}s||(c=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,n.nc&&s.setAttribute("nonce",n.nc),s.setAttribute("data-webpack",o+t),s.src=e),r[e]=[a];var l=(o,a)=>{s.onerror=s.onload=null,clearTimeout(p);var t=r[e];if(delete r[e],s.parentNode&&s.parentNode.removeChild(s),t&&t.forEach((e=>e(a))),o)return o(a)},p=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),c&&document.head.appendChild(s)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.p="/",(()=>{var e={461:0,6952:0,8252:0,2305:0,3364:0,2540:0,4370:0,8759:0};n.f.j=(r,o)=>{var a=n.o(e,r)?e[r]:void 0;if(0!==a)if(a)o.push(a[2]);else if(/^((69|82)52|2305|2540|3364|4370|461|8759)$/.test(r))e[r]=0;else{var t=new Promise(((o,t)=>a=e[r]=[o,t]));o.push(a[2]=t);var d=n.p+n.u(r),s=new Error;n.l(d,(o=>{if(n.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var t=o&&("load"===o.type?"missing":o.type),d=o&&o.target&&o.target.src;s.message="Loading chunk "+r+" failed.\n("+t+": "+d+")",s.name="ChunkLoadError",s.type=t,s.request=d,a[1](s)}}),"chunk-"+r,r)}},n.O.j=r=>0===e[r];var r=(r,o)=>{var a,t,[d,s,c]=o,i=0;if(d.some((r=>0!==e[r]))){for(a in s)n.o(s,a)&&(n.m[a]=s[a]);if(c)var f=c(n)}for(r&&r(o);i<d.length;i++)t=d[i],n.o(e,t)&&e[t]&&e[t][0](),e[t]=0;return n.O(f)},o=self.webpackChunkpixelfed=self.webpackChunkpixelfed||[];o.forEach(r.bind(null,0)),o.push=r.bind(null,o.push.bind(o))})(),n.nc=void 0})();
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,37 +1,39 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="footer-component">
|
<div class="footer-component">
|
||||||
<div class="footer-component-links">
|
<div class="footer-component-links">
|
||||||
<a href="/site/help">Help</a>
|
<a href="/site/help">Help</a>
|
||||||
<div class="spacer">·</div>
|
<div class="spacer">·</div>
|
||||||
<a href="/site/terms">Terms</a>
|
<a href="/site/terms">Terms</a>
|
||||||
<div class="spacer">·</div>
|
<div class="spacer">·</div>
|
||||||
<a href="/site/privacy">Privacy</a>
|
<a href="/site/privacy">Privacy</a>
|
||||||
<div class="spacer">·</div>
|
<div class="spacer">·</div>
|
||||||
<a href="https://pixelfed.org/mobile-apps" target="_blank">Mobile Apps</a>
|
<a v-if="config.show_legal_notice_link" href="/site/legal-notice">Legal Notice</a>
|
||||||
</div>
|
<div v-if="config.show_legal_notice_link" class="spacer">·</div>
|
||||||
|
<a href="https://pixelfed.org/mobile-apps" target="_blank">Mobile Apps</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="footer-component-attribution">
|
<div class="footer-component-attribution">
|
||||||
<div><span>© {{ getYear() }} {{config.domain}}</span></div>
|
<div><span>© {{ getYear() }} {{ config.domain }}</span></div>
|
||||||
<div class="spacer">·</div>
|
<div class="spacer">·</div>
|
||||||
<div><a href="https://pixelfed.org" class="text-bluegray-500 font-weight-bold">Powered by Pixelfed</a></div>
|
<div><a href="https://pixelfed.org" class="text-bluegray-500 font-weight-bold">Powered by Pixelfed</a></div>
|
||||||
<div class="spacer">·</div>
|
<div class="spacer">·</div>
|
||||||
<div><span>v{{config.version}}</span></div>
|
<div><span>v{{ config.version }}</span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
config: window.pfl
|
config: window.pfl
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
getYear() {
|
getYear() {
|
||||||
return (new Date().getFullYear());
|
return (new Date().getFullYear());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue