Automatic push 4.0.5

This commit is contained in:
chevereto
2022-11-30 12:33:23 +00:00
parent e59ddb9c5c
commit 3355a33451
622 changed files with 353382 additions and 2 deletions

6
.ecs/.header Normal file
View File

@@ -0,0 +1,6 @@
This file is part of Chevereto.
(c) Rodolfo Berrios <rodolfo@chevereto.com>
For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.

212
.ecs/ecs-chevere.php Normal file
View File

@@ -0,0 +1,212 @@
<?php
/*
* This file is part of Chevere.
*
* (c) Rodolfo Berrios <rodolfo@chevere.org>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
use PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer;
use PhpCsFixer\Fixer\ArrayNotation\NoWhitespaceBeforeCommaInArrayFixer;
use PhpCsFixer\Fixer\ArrayNotation\WhitespaceAfterCommaInArrayFixer;
use PhpCsFixer\Fixer\Basic\BracesFixer;
use PhpCsFixer\Fixer\Basic\EncodingFixer;
use PhpCsFixer\Fixer\Casing\ConstantCaseFixer;
use PhpCsFixer\Fixer\Casing\LowercaseKeywordsFixer;
use PhpCsFixer\Fixer\CastNotation\LowercaseCastFixer;
use PhpCsFixer\Fixer\CastNotation\ShortScalarCastFixer;
use PhpCsFixer\Fixer\ClassNotation\ClassAttributesSeparationFixer;
use PhpCsFixer\Fixer\ClassNotation\ClassDefinitionFixer;
use PhpCsFixer\Fixer\ClassNotation\NoBlankLinesAfterClassOpeningFixer;
use PhpCsFixer\Fixer\ClassNotation\ProtectedToPrivateFixer;
use PhpCsFixer\Fixer\ClassNotation\SingleClassElementPerStatementFixer;
use PhpCsFixer\Fixer\ClassNotation\VisibilityRequiredFixer;
use PhpCsFixer\Fixer\Comment\HeaderCommentFixer;
use PhpCsFixer\Fixer\Comment\NoTrailingWhitespaceInCommentFixer;
use PhpCsFixer\Fixer\Comment\SingleLineCommentStyleFixer;
use PhpCsFixer\Fixer\ControlStructure\ElseifFixer;
use PhpCsFixer\Fixer\ControlStructure\IncludeFixer;
use PhpCsFixer\Fixer\ControlStructure\NoBreakCommentFixer;
use PhpCsFixer\Fixer\ControlStructure\NoUnneededControlParenthesesFixer;
use PhpCsFixer\Fixer\ControlStructure\NoUnneededCurlyBracesFixer;
use PhpCsFixer\Fixer\ControlStructure\SwitchCaseSemicolonToColonFixer;
use PhpCsFixer\Fixer\ControlStructure\SwitchCaseSpaceFixer;
use PhpCsFixer\Fixer\FunctionNotation\FunctionDeclarationFixer;
use PhpCsFixer\Fixer\FunctionNotation\MethodArgumentSpaceFixer;
use PhpCsFixer\Fixer\FunctionNotation\NoSpacesAfterFunctionNameFixer;
use PhpCsFixer\Fixer\FunctionNotation\ReturnTypeDeclarationFixer;
use PhpCsFixer\Fixer\Import\NoLeadingImportSlashFixer;
use PhpCsFixer\Fixer\Import\NoUnusedImportsFixer;
use PhpCsFixer\Fixer\Import\OrderedImportsFixer;
use PhpCsFixer\Fixer\Import\SingleImportPerStatementFixer;
use PhpCsFixer\Fixer\Import\SingleLineAfterImportsFixer;
use PhpCsFixer\Fixer\LanguageConstruct\CombineConsecutiveUnsetsFixer;
use PhpCsFixer\Fixer\LanguageConstruct\DeclareEqualNormalizeFixer;
use PhpCsFixer\Fixer\NamespaceNotation\BlankLineAfterNamespaceFixer;
use PhpCsFixer\Fixer\Operator\BinaryOperatorSpacesFixer;
use PhpCsFixer\Fixer\Operator\ConcatSpaceFixer;
use PhpCsFixer\Fixer\Operator\NewWithBracesFixer;
use PhpCsFixer\Fixer\Operator\ObjectOperatorWithoutWhitespaceFixer;
use PhpCsFixer\Fixer\Operator\TernaryOperatorSpacesFixer;
use PhpCsFixer\Fixer\Operator\UnaryOperatorSpacesFixer;
use PhpCsFixer\Fixer\PhpTag\BlankLineAfterOpeningTagFixer;
use PhpCsFixer\Fixer\PhpTag\FullOpeningTagFixer;
use PhpCsFixer\Fixer\PhpTag\NoClosingTagFixer;
use PhpCsFixer\Fixer\ReturnNotation\ReturnAssignmentFixer;
use PhpCsFixer\Fixer\Semicolon\MultilineWhitespaceBeforeSemicolonsFixer;
use PhpCsFixer\Fixer\Semicolon\NoEmptyStatementFixer;
use PhpCsFixer\Fixer\Semicolon\NoSinglelineWhitespaceBeforeSemicolonsFixer;
use PhpCsFixer\Fixer\Strict\DeclareStrictTypesFixer;
use PhpCsFixer\Fixer\Whitespace\BlankLineBeforeStatementFixer;
use PhpCsFixer\Fixer\Whitespace\CompactNullableTypehintFixer;
use PhpCsFixer\Fixer\Whitespace\IndentationTypeFixer;
use PhpCsFixer\Fixer\Whitespace\LineEndingFixer;
use PhpCsFixer\Fixer\Whitespace\NoExtraBlankLinesFixer;
use PhpCsFixer\Fixer\Whitespace\NoSpacesInsideParenthesisFixer;
use PhpCsFixer\Fixer\Whitespace\NoTrailingWhitespaceFixer;
use PhpCsFixer\Fixer\Whitespace\SingleBlankLineAtEofFixer;
use SlevomatCodingStandard\Sniffs\ControlStructures\RequireShortTernaryOperatorSniff;
use SlevomatCodingStandard\Sniffs\Functions\UnusedInheritedVariablePassedToClosureSniff;
use SlevomatCodingStandard\Sniffs\Operators\RequireCombinedAssignmentOperatorSniff;
use SlevomatCodingStandard\Sniffs\PHP\DisallowDirectMagicInvokeCallSniff;
use SlevomatCodingStandard\Sniffs\PHP\UselessParenthesesSniff;
use SlevomatCodingStandard\Sniffs\PHP\UselessSemicolonSniff;
use SlevomatCodingStandard\Sniffs\Variables\UnusedVariableSniff;
use SlevomatCodingStandard\Sniffs\Variables\UselessVariableSniff;
use Symplify\CodingStandard\Fixer\Commenting\ParamReturnAndVarTagMalformsFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;
use Symplify\EasyCodingStandard\ValueObject\Option;
use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
return static function (ECSConfig $containerConfigurator): void {
$headerFile = __DIR__ . '/.header';
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::SETS, [
SetList::COMMON,
]);
$services = $containerConfigurator->services();
if (file_exists($headerFile)) {
$services->set(HeaderCommentFixer::class)
->call('configure', [[
'header' => file_get_contents($headerFile),
'location' => 'after_open',
]]);
}
$services->set(EncodingFixer::class);
$services->set(FullOpeningTagFixer::class);
$services->set(BlankLineAfterNamespaceFixer::class);
$services->set(BracesFixer::class);
$services->set(ClassDefinitionFixer::class);
$services->set(ConstantCaseFixer::class);
$services->set(ElseifFixer::class);
$services->set(FunctionDeclarationFixer::class);
$services->set(IndentationTypeFixer::class);
$services->set(LineEndingFixer::class);
$services->set(LowercaseKeywordsFixer::class);
$services->set(MethodArgumentSpaceFixer::class)
->call('configure', [[
'on_multiline' => 'ensure_fully_multiline',
]]);
$services->set(NoBreakCommentFixer::class);
$services->set(NoClosingTagFixer::class);
$services->set(NoSpacesAfterFunctionNameFixer::class);
$services->set(NoSpacesInsideParenthesisFixer::class);
$services->set(NoTrailingWhitespaceFixer::class);
$services->set(NoTrailingWhitespaceInCommentFixer::class);
$services->set(SingleBlankLineAtEofFixer::class);
$services->set(SingleClassElementPerStatementFixer::class)
->call('configure', [[
'elements' => ['property'],
]]);
$services->set(SingleImportPerStatementFixer::class);
$services->set(SingleLineAfterImportsFixer::class);
// $services->set(SwitchCaseSemicolonToColonFixer::class); broken for php 8.0
$services->set(SwitchCaseSpaceFixer::class);
$services->set(VisibilityRequiredFixer::class);
$services->set(LowercaseCastFixer::class);
$services->set(ShortScalarCastFixer::class);
$services->set(BlankLineAfterOpeningTagFixer::class);
$services->set(NoLeadingImportSlashFixer::class);
$services->set(OrderedImportsFixer::class)
->call('configure', [[
'importsOrder' => ['class', 'function', 'const'],
]]);
$services->set(DeclareEqualNormalizeFixer::class)
->call('configure', [[
'space' => 'none',
]]);
$services->set(NewWithBracesFixer::class);
$services->set(BracesFixer::class)
->call('configure', [[
'allow_single_line_closure' => false,
'position_after_functions_and_oop_constructs' => 'next',
'position_after_control_structures' => 'same',
'position_after_anonymous_constructs' => 'same',
]]);
$services->set(NoBlankLinesAfterClassOpeningFixer::class);
$services->set(VisibilityRequiredFixer::class)
->call('configure', [[
'elements' => ['const', 'method', 'property'],
]]);
$services->set(BinaryOperatorSpacesFixer::class);
$services->set(TernaryOperatorSpacesFixer::class);
$services->set(UnaryOperatorSpacesFixer::class);
$services->set(ReturnTypeDeclarationFixer::class);
$services->set(NoTrailingWhitespaceFixer::class);
$services->set(ConcatSpaceFixer::class)
->call('configure', [[
'spacing' => 'one',
]]);
$services->set(NoSinglelineWhitespaceBeforeSemicolonsFixer::class);
$services->set(NoWhitespaceBeforeCommaInArrayFixer::class);
$services->set(WhitespaceAfterCommaInArrayFixer::class);
$services->set(DeclareStrictTypesFixer::class);
$services->set(CompactNullableTypehintFixer::class);
$services->set(BlankLineBeforeStatementFixer::class);
$services->set(CombineConsecutiveUnsetsFixer::class);
$services->set(ClassAttributesSeparationFixer::class);
$services->set(MultilineWhitespaceBeforeSemicolonsFixer::class);
$services->set(SingleLineCommentStyleFixer::class);
$services->set(IncludeFixer::class);
$services->set(ObjectOperatorWithoutWhitespaceFixer::class);
$services->set(DisallowDirectMagicInvokeCallSniff::class);
$services->set(ParamReturnAndVarTagMalformsFixer::class);
$services->set(UnusedVariableSniff::class);
$services->set(UselessVariableSniff::class);
$services->set(UnusedInheritedVariablePassedToClosureSniff::class);
$services->set(UselessSemicolonSniff::class);
// $services->set(UselessParenthesesSniff::class); // broken for php 8.0
$services->set(ArraySyntaxFixer::class)
->call('configure', [[
'syntax' => 'short',
]]);
$services->set(NoUnusedImportsFixer::class);
$services->set(OrderedImportsFixer::class);
$services->set(NoEmptyStatementFixer::class);
$services->set(ProtectedToPrivateFixer::class);
$services->set(NoUnneededControlParenthesesFixer::class);
$services->set(NoUnneededCurlyBracesFixer::class);
$services->set(ReturnAssignmentFixer::class);
$services->set(RequireShortTernaryOperatorSniff::class);
$services->set(RequireCombinedAssignmentOperatorSniff::class);
$services->set(NoExtraBlankLinesFixer::class)
->call('configure', [[
'tokens' => [
'curly_brace_block',
'extra',
'parenthesis_brace_block',
'square_brace_block',
'throw',
'use',
]
]]);
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::SKIP, [
SingleImportPerStatementFixer::class => null,
]);
};

22
.ecs/ecs.php Normal file
View File

@@ -0,0 +1,22 @@
<?php
/*
* This file is part of Chevereto.
*
* (c) Rodolfo Berrios <rodolfo@chevereto.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use PhpCsFixer\Fixer\Strict\DeclareStrictTypesFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;
use Symplify\EasyCodingStandard\ValueObject\Option;
return static function (ECSConfig $containerConfigurator): void {
$containerConfigurator->import(__DIR__ . '/ecs-chevere.php');
$services = $containerConfigurator->services();
$services->remove(DeclareStrictTypesFixer::class);
$parameters = $containerConfigurator->parameters();
$parameters->set(Option::SKIP, []);
};

BIN
.github/banner/chevereto-ultimate.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

BIN
.github/screen/user-profile.jpeg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

71
.github/test.yml vendored Normal file
View File

@@ -0,0 +1,71 @@
name: Test
on:
push:
branches:
- "**"
tags-ignore:
- "**"
jobs:
build:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ubuntu-22.04]
php-versions: ["8.0", "8.1"]
env:
extensions: pcov, imagick
tools: composer
ini-values: precision=16, default_charset='UTF-8', pcov.directory=src
key: cache-1626460452817
name: Test on PHP ${{ matrix.php-versions }} ${{ matrix.operating-system }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup cache environment
if: ${{ !env.ACT }}
id: extcache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}
key: ${{ env.key }}
- name: Cache extensions
if: ${{ !env.ACT }}
uses: actions/cache@v3
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}
restore-keys: ${{ steps.extcache.outputs.key }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}
ini-values: ${{ env.ini-values }}
coverage: pcov
tools: ${{ env.tools }}
env:
fail-fast: true
- name: Setup problem matchers for PHPUnit
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
- name: Validate composer
run: composer validate
working-directory: app
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install dependencies
run: composer install --no-progress --ignore-platform-reqs
working-directory: app
- name: Run tests with phpunit
run: app/vendor/bin/phpunit -c app/phpunit-report.xml --coverage-clover=app/build/coverage/clover.xml

102
.github/workflows/docker.yml vendored Normal file
View File

@@ -0,0 +1,102 @@
name: Docker
on:
push:
tags:
- "*"
env:
GHCR_SLUG: ghcr.io/${{ github.repository }}
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
php: ["8.1"]
name: Build on PHP ${{ matrix.php }} ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get current branch
id: get-branch
run: |
raw=$(git branch -r --contains ${{ github.ref }})
echo "branch=${raw##*/}" >> $GITHUB_OUTPUT
- run: echo ${{ steps.get-branch.outputs.branch }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.GHCR_SLUG }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
labels: |
org.opencontainers.image.title=Chevereto V4
org.opencontainers.image.description=Ultimate image sharing software 🦄
org.opencontainers.image.vendor=Chevereto
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GHCR
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build dependencies
run: composer install --no-progress --ignore-platform-reqs
working-directory: app
- name: Build Chevereto
run: |
app/bin/legacy -C langs
app/bin/legacy -C htaccess-checksum
app/bin/legacy -C htaccess-enforce
- name: Packaging
run: |
rm -rf .git .gitignore .github .ecs .vscode
rm -rf README.md chevereto.svg rector.php
rm -rf app/tests app/phpunit*.xml
rm -rf app/.editions app/bin/edition
mkdir importing/{parse-users,parse-albums,no-parse}
mv .package ..
ls -la ../.package
- name: Checkout chevereto/docker
uses: actions/checkout@v3
with:
repository: chevereto/docker
path: docker
ref: ${{ steps.get-branch.outputs.branch }}
- run: |
mv docker ../docker
mkdir -p ../docker/chevereto
ls -la ../docker
- name: Copy to docker folder
run: |
cp -a ./. ../docker/chevereto/
ls -la ../docker/chevereto
- name: Build
uses: docker/bake-action@v2
with:
workdir: ../docker
set: build.args.PHP=${{ matrix.php }}
files: |
./docker-bake.hcl
${{ steps.meta.outputs.bake-file }}
targets: build
push: true
- name: Check manifest
run: |
docker buildx imagetools inspect ${{ env.GHCR_SLUG }}:${{ steps.meta.outputs.version }}
- name: Inspect image
run: |
docker pull ${{ env.GHCR_SLUG }}:${{ steps.meta.outputs.version }}
docker image inspect ${{ env.GHCR_SLUG }}:${{ steps.meta.outputs.version }}

85
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,85 @@
name: Release
on:
push:
tags:
- "*"
jobs:
build:
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system: [ubuntu-latest]
php-versions: ["8.1"]
env:
tools: composer
ini-values: default_charset='UTF-8'
key: cache-1633608016315
name: Release on PHP ${{ matrix.php-versions }} ${{ matrix.operating-system }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
ini-values: ${{ env.ini-values }}
tools: ${{ env.tools }}
env:
fail-fast: true
- name: Validate composer
run: composer validate
working-directory: app
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
working-directory: app
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Build dependencies
run: composer install --no-progress --ignore-platform-reqs
working-directory: app
- name: Build Chevereto
run: |
app/bin/legacy -C langs
app/bin/legacy -C htaccess-checksum
app/bin/legacy -C htaccess-enforce
- name: Packaging
run: |
rm -rf .git .gitignore .github .ecs .vscode
rm -rf README.md chevereto.svg rector.php
rm -rf app/tests app/phpunit*.xml
rm -rf app/.editions app/bin/edition
mkdir importing/{parse-users,parse-albums,no-parse}
mv .package ..
ls -la ../.package
- name: Archive lite
uses: thedoctor0/zip-release@master
with:
directory: "."
type: "zip"
filename: "${{ github.ref_name}}-lite.zip"
exclusions: "/*app/vendor/*"
- name: Archive release
uses: thedoctor0/zip-release@master
with:
directory: "."
type: "zip"
filename: "${{ github.ref_name}}.zip"
exclusions: "${{ github.ref_name}}-lite.zip"
- name: Upload artifacts
uses: ncipollo/release-action@v1
with:
allowUpdates: true
removeArtifacts: true
bodyFile: "../.package/${{ github.ref_name}}.txt"
artifacts: >
../.package/${{ github.ref_name}}.txt,
${{ github.ref_name}}.zip,
${{ github.ref_name}}-lite.zip
token: ${{ secrets.GITHUB_TOKEN }}

12
.gitignore vendored Normal file
View File

@@ -0,0 +1,12 @@
.DS_Store
/.env
/.idea
/app/vendor
/app/build
/app/.phpunit.cache
/app/.phpunit.result.cache
/importing/**
/images/**
!/images/.htaccess
!/importing/.htaccess
/_assets

31
.htaccess Normal file
View File

@@ -0,0 +1,31 @@
ServerSignature Off
Options -Indexes
Options -MultiViews
# CORS header (avoids font rendering issues)(replace dev\.local with your domain\.com)
# SetEnvIf Origin ^(https?://.+\.dev\.local(?::\d{1,5})?)$ CORS_ALLOW_ORIGIN=$1
# Header append Access-Control-Allow-Origin %{CORS_ALLOW_ORIGIN}e env=CORS_ALLOW_ORIGIN
# Header merge Vary "Origin"
<FilesMatch "\.htaccess|LICENSE">
Require all denied
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteEngine On
# If you have problems with the rewrite rules remove the "#" from the following RewriteBase line
# You will also have to change the path to reflect the path to your Chevereto installation
# If you are using mod alias is likely that you will need this.
#RewriteBase /
# Image not found replacement
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule images/.+\.(gif|jpe?g|a?png|bmp|webp) content/images/system/default/404.gif [NC,L]
RewriteRule images/.+\.(gif|jpe?g|png|bmp|webp) - [NC,L,R=404]
# PHP front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
# Single PHP-entrypoint
RewriteCond %{THE_REQUEST} ^.+?\ [^?]+\.php[?\ ] [NC]
RewriteRule \.php$ - [NC,L,F,R=404]
</IfModule>

11
.package/4.0.5.txt Normal file
View File

@@ -0,0 +1,11 @@
Chevereto 4.0.5 (2022-11-30)
✅ Added more environment variables
✅ Renamed dashboard/settings/api to dashboard/settings/guest-api
✅ Renamed website modes (community, personal)
🐞 Fixed bug with Exif metadata removal
🐞 Fixed bug with single image redirect
🐞 Fixed bug with selectable items on iPad
🐞 Fixed bug with login page
🐞 Fixed bug with missing timestamp on upload
🐞 Fixed bug with ModerateContent

20
.package/README.txt Executable file
View File

@@ -0,0 +1,20 @@
__ __
____/ / ___ _ _____ _______ / /____
/ __/ _ \/ -_) |/ / -_) __/ -_) __/ _ \
\__/_//_/\__/|___/\__/_/ \__/\__/\___/
https://chevereto.com/
This package is another quality release
made by Chevereto Software. We ship
indie software from Concepcion, Chile
to the rest of the world.
Many thanks for using our software and
trusting our work. This software exists
thanks to your ongoing support.
~
GRACIAS
(Thank you!)

View File

@@ -0,0 +1,47 @@
<?php
/*
* This file is part of Chevereto.
*
* (c) Rodolfo Berrios <rodolfo@chevereto.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use function Chevereto\Legacy\loaderHandler;
class CustomTinkerwellDriver extends TinkerwellDriver
{
public function canBootstrap($projectPath)
{
return file_exists($projectPath . '/app/legacy/load/loader.php');
}
public function bootstrap($projectPath)
{
define('ACCESS', 'web');
define('REPL', true);
require $projectPath . '/app/legacy/load/loader.php';
include loaderHandler(
_cookie: [],
_env: $_ENV,
_files: [],
_get: [],
_post: [],
_request: [],
_server: [],
_session: [
'G_auth_token' => str_repeat('a', 40),
],
);
}
public function contextMenu()
{
return [
Label::create('Detected Chevereto v4'),
OpenURL::create('Chevereto Docs', 'https://v4-docs.chevereto.com/'),
];
}
}

37
.vscode/action.code-snippets vendored Normal file
View File

@@ -0,0 +1,37 @@
{
"action": {
"description": "Create an action",
"prefix": "action",
"body": [
"<?php",
"",
"namespace Chevereto\\\\${TM_DIRECTORY/.*src\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+\\\\}${5:+\\\\}$5/g};",
"",
"use Chevere\\Action\\Action;",
"use function Chevere\\Components\\Parameter\\parameters;",
"use Chevere\\Parameter\\Interfaces\\ArgumentsInterface;",
"use Chevere\\Parameter\\Interfaces\\ParametersInterface;",
"use Chevere\\Response\\Interfaces\\ResponseInterface;",
"",
"final class $TM_FILENAME_BASE extends Action",
"{",
"",
"\tpublic function getParameters(): ParametersInterface",
"\t{",
"\t\treturn ${2:parameters()};",
"\t}",
"",
"\tpublic function getResponseParameters(): ParametersInterface",
"\t{",
"\t\treturn parameters();",
"\t}",
"",
"\tpublic function run(ArgumentsInterface \\$arguments): ResponseInterface",
"\t{",
"\t\t$0",
"\t\treturn \\$this->getResponse(key: 'value',);",
"\t}",
"}"
]
}
}

46
.vscode/class.code-snippets vendored Normal file
View File

@@ -0,0 +1,46 @@
{
"interface": {
"description": "Create a interface",
"prefix": "interface",
"body": [
"<?php",
"",
"namespace Chevereto\\\\${TM_DIRECTORY/.*src\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+\\\\}${5:+\\\\}$5/g};",
"",
"/**",
" * Describes the component in charge of ${1:doing}.",
" */",
"interface $TM_FILENAME_BASE",
"{",
"\t$0",
"}"
]
},
"class": {
"description": "Create a class",
"prefix": "class",
"body": [
"<?php",
"",
"namespace Chevereto\\\\${TM_DIRECTORY/.*src\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+\\\\}${5:+\\\\}$5/g};",
"",
"final class $TM_FILENAME_BASE",
"{",
"\t${0}",
"}"
]
},
"trait": {
"description": "Create a trait",
"prefix": "trait",
"body": [
"<?php",
"namespace Chevereto\\\\${TM_DIRECTORY/.*src\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+\\\\}${5:+\\\\}$5/g};",
"",
"trait $TM_FILENAME_BASE",
"{",
"\t$0",
"}"
]
},
}

38
.vscode/controller.code-snippets vendored Normal file
View File

@@ -0,0 +1,38 @@
{
"controller-workflow": {
"description": "Create a ControllerWorkflow",
"prefix": "controller-workflow",
"body": [
"<?php",
"",
"namespace Chevereto\\\\${TM_DIRECTORY/.*src\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+\\\\}${5:+\\\\}$5/g};",
"",
"use Chevere\\Parameter\\ObjectParameter;",
"use Chevere\\Parameter\\Parameters;",
"use Chevere\\Parameter\\StringParameter;",
"use Chevere\\Parameter\\Interfaces\\ParametersInterface;",
"use Chevereto\\\\Controller\\ControllerWorkflow;",
"",
"final class $TM_FILENAME_BASE extends ControllerWorkflow",
"{",
"\tpublic function getDescription(): string",
"\t{",
"\t\treturn '${1:description}';",
"\t}",
"",
"\tpublic function getParameters(): ParametersInterface",
"\t{",
"\t\treturn new Parameters(",
"\t\t\t${2:parameter}: new StringParameter(),",
"\t\t);",
"\t}",
"\tpublic function getResponseParameters(): ParametersInterface",
"\t{",
"\t\treturn new Parameters(",
"\t\t\t${3:key}: new ObjectParameter(${4:'className'}),",
"\t\t);",
"\t}",
"}"
]
},
}

41
.vscode/doc-internal.code-snippets vendored Normal file
View File

@@ -0,0 +1,41 @@
{
"doc-json": {
"description": "Insert an internal document for route.json.php",
"prefix": "doc-json",
"body": [
"# ${1:Document}",
"",
"V4 `${2|CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE|} api/4/${3:path}`",
"",
"* Controller",
"* Workflow",
"",
"`OK Response`",
"",
"```php",
"[",
" 'resource' => \\$resource,",
"]",
"```",
"",
"V3 `POST json/?action=${4:action}`",
"",
"* [json](../../../3.20.10/app/routes/route.json.php#${5:line})",
"",
"| Parameter | Values |",
"| --------- | ------ |",
"| | `` |",
"",
"`OK Response`",
"",
"```php",
"[",
" 'status_code' => 200,",
" 'success' => ['message' => 'message', 'code' => 200],",
" 'resource' => $resource,",
"]",
"```",
"",
]
},
}

62
.vscode/docblock.code-snippets vendored Normal file
View File

@@ -0,0 +1,62 @@
{
"docblock-instance": {
"description": "Insert a docblock instance",
"prefix": "docblock-instance",
"body": [
"/**",
" * Provides access to the ${1:name} instance.",
" */"
]
},
"docblock-immutable": {
"description": "Insert a docblock immutable",
"prefix": "docblock-immutable",
"body": [
"/**",
" * Return an instance with the specified ${1:name}.",
" *",
" * This method MUST retain the state of the current instance, and return",
" * an instance that contains the specified ${1:name}.",
" */"
]
},
"docblock-boolean": {
"description": "Insert a docblock boolean",
"prefix": "docblock-boolean",
"body": [
"/**",
" * Indicates whether the instance has ${1:name}.",
" */"
]
},
"docblock-interface": {
"description": "Insert a docblock interface",
"prefix": "docblock-interface",
"body": [
"/**",
" * Describes the component in charge of ${1:doing}.",
" */"
]
},
"coverage-ignore": {
"description": "Insert a code coverage ignore tag",
"prefix": "cov-ignore",
"body": [
"@codeCoverageIgnore"
]
},
"coverage-ignore-start": {
"description": "Insert a code coverage ignore start tag",
"prefix": "cov-ignore-start",
"body": [
"@codeCoverageIgnoreStart"
]
},
"coverage-ignore-end": {
"description": "Insert a code coverage ignore end tag",
"prefix": "cov-ignore-end",
"body": [
"@codeCoverageIgnoreEnd"
]
},
}

12
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,12 @@
{
"runOnSave.commands": [
{
"match": "\\.php$",
"runIn": "backend",
"command": "cd ${workspaceFolder} && app/vendor/bin/ecs --config='.ecs/ecs.php' check ${file} --fix",
"workingDirectoryAsCWD": true,
"runningStatusMessage": "ECS ${fileBasename}",
"finishStatusMessage": "${fileBasename} OK"
},
]
}

34
.vscode/templates.code-snippets vendored Normal file
View File

@@ -0,0 +1,34 @@
{
"with-method": {
"description": "Chevereto with method",
"prefix": "with",
"body": [
"private ${2|int,string,bool,array,object,resource|} \\$${3:argument};",
"",
"public function with${1:Name}(${2|int,string,bool,array,object,resource|} \\$${3:argument}): ${4:self}",
"{",
"\t\\$new = clone \\$this;",
"\t\\$new->${3:argument} = \\$${3:argument};",
"",
"\treturn \\$new;",
"}"
]
},
"exception": {
"description": "Chevereto exception",
"prefix": "exception",
"body": [
"<?php",
"namespace Chevereto\\Exceptions\\\\${TM_DIRECTORY/.*Exceptions\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+\\\\}${5:+\\\\}$5/g};",
"",
"use Chevereto\\Exceptions\\Core\\Exception;",
"",
"/**",
" * Exception thrown when ${1:description}.",
" */",
"final class $TM_FILENAME_BASE extends Exception",
"{",
"}"
]
},
}

40
.vscode/test.code-snippets vendored Normal file
View File

@@ -0,0 +1,40 @@
{
"test": {
"description": "Chevereto test",
"prefix": "test",
"body": [
"<?php",
"namespace Chevereto\\Tests\\\\${TM_DIRECTORY/.*tests\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+\\\\}${5:+\\\\}$5/g};",
"",
"use PHPUnit\\Framework\\TestCase;",
"",
"final class $TM_FILENAME_BASE extends TestCase",
"{",
"\t$0",
"}"
]
},
"test-method": {
"description": "Chevereto test method",
"prefix": "test-method",
"body": [
"public function test${1:Name}(): void",
"{",
"\t$0",
"}"
]
},
"testResource": {
"description": "Chevereto test resource",
"prefix": "test-resource",
"body": [
"<?php",
"namespace Chevereto\\Tests\\\\${TM_DIRECTORY/.*tests\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+\\\\}${5:+\\\\}$5/g};",
"",
"final class $TM_FILENAME_BASE",
"{",
"\t$0",
"}"
]
},
}

35
.vscode/workflow.code-snippets vendored Normal file
View File

@@ -0,0 +1,35 @@
{
"action": {
"description": "Create a Workflow",
"prefix": "workflow-return",
"body": [
"<?php",
"",
"namespace Chevereto\\\\${TM_DIRECTORY/.*src\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+\\\\}${5:+\\\\}$5/g};",
"",
"use function Chevere\\Components\\Workflow\\step;",
"use function Chevere\\Components\\Workflow\\workflow;",
"use Chevere\\Workflow\\Interfaces\\WorkflowInterface;",
"use Chevereto\\Workflow\\Components\\BaseWorkflow;",
"",
"final class $TM_FILENAME_BASE extends BaseWorkflow",
"{",
"\tpublic function getWorkflow(): WorkflowInterface",
"\t{",
"\t\treturn workflow(",
"\t\t\tstep: step(",
"\t\t\t\t'ActionName',",
"\t\t\t\t${2:parameter}: '\\${${3:variable}}',",
"\t\t\t)",
"\t\t);",
"\t}",
"}"
]
}
}
{
{

View File

@@ -1,2 +1,40 @@
# chevereto
Ultimate image sharing software 🦄
# Chevereto: Ultimate image sharing software 🦄
> 🔔 [Subscribe](https://chv.to/newsletter) to don't miss any update regarding Chevereto.
<p align="center">
<img alt="Chevereto" src="chevereto.svg" width="50%">
</p>
![CHUISS](.github/banner/chevereto-ultimate.png)
[![Community](https://img.shields.io/badge/chv.to-community-blue?style=flat-square)](https://chv.to/community)
[![AGPL-3.0-only](https://img.shields.io/github/license/chevereto/chevereto?style=flat-square)](LICENSE)
Chevereto enables to create an image sharing website on your own server. It's your hosting and your rules, say goodbye to closures and restrictions.
![screen](.github/screen/user-profile.jpeg)
## Documentation
We provide several layers of documentation covering all aspects of our software. Chevereto documentation is Open Source and your contribution is highly appreciated.
* Software [v4-docs.chevereto.com](https://v4-docs.chevereto.com)
* Admin [v4-admin.chevereto.com](https://v4-admin.chevereto.com)
* User [v4-user.chevereto.com](https://v4-admin.chevereto.com)
## License
### Open Source license
Copyright [Rodolfo Berríos Arce](http://rodolfoberrios.com) - [AGPLv3](LICENSE).
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.
### Commercial license
The commercial license is designed to for you to use Chevereto in commercial products and applications, without the provisions of the AGPLv3. With the commercial license, your code is kept proprietary, to yourself. See the Chevereto Commercial License at [chevereto.com](https://chevereto.com/license)

View File

@@ -0,0 +1,282 @@
<?php return array (
'ar' =>
array (
'code' => 'ar',
'dir' => 'rtl',
'name' => 'العربية',
'base' => 'ar',
'short_name' => 'AR',
),
'bg-BG' =>
array (
'code' => 'bg-BG',
'dir' => 'ltr',
'name' => 'Български',
'base' => 'bg',
'short_name' => 'BG (BG)',
),
'cs' =>
array (
'code' => 'cs',
'dir' => 'ltr',
'name' => 'Čeština',
'base' => 'cs',
'short_name' => 'CS',
),
'da' =>
array (
'code' => 'da',
'dir' => 'ltr',
'name' => 'Dansk',
'base' => 'da',
'short_name' => 'DA',
),
'de' =>
array (
'code' => 'de',
'dir' => 'ltr',
'name' => 'Deutsch',
'base' => 'de',
'short_name' => 'DE',
),
'el' =>
array (
'code' => 'el',
'dir' => 'ltr',
'name' => 'Ελληνικά',
'base' => 'el',
'short_name' => 'EL',
),
'en' =>
array (
'code' => 'en',
'dir' => 'ltr',
'name' => 'English',
'base' => 'en',
'short_name' => 'EN',
),
'es' =>
array (
'code' => 'es',
'dir' => 'ltr',
'name' => 'Español',
'base' => 'es',
'short_name' => 'ES',
),
'et-EE' =>
array (
'code' => 'et-EE',
'dir' => 'ltr',
'name' => 'Eesti (Eesti)',
'base' => 'et',
'short_name' => 'ET (EE)',
),
'fa' =>
array (
'code' => 'fa',
'dir' => 'rtl',
'name' => 'فارسی',
'base' => 'fa',
'short_name' => 'FA',
),
'fi' =>
array (
'code' => 'fi',
'dir' => 'ltr',
'name' => 'Suomi',
'base' => 'fi',
'short_name' => 'FI',
),
'fr' =>
array (
'code' => 'fr',
'dir' => 'ltr',
'name' => 'Français',
'base' => 'fr',
'short_name' => 'FR',
),
'he' =>
array (
'code' => 'he',
'dir' => 'rtl',
'name' => 'עברית',
'base' => 'he',
'short_name' => 'HE',
),
'hr' =>
array (
'code' => 'hr',
'dir' => 'ltr',
'name' => 'Hrvatski',
'base' => 'hr',
'short_name' => 'HR',
),
'hu' =>
array (
'code' => 'hu',
'dir' => 'ltr',
'name' => 'Magyar',
'base' => 'hu',
'short_name' => 'HU',
),
'id' =>
array (
'code' => 'id',
'dir' => 'ltr',
'name' => 'Bahasa Indonesia',
'base' => 'id',
'short_name' => 'ID',
),
'it' =>
array (
'code' => 'it',
'dir' => 'ltr',
'name' => 'Italiano',
'base' => 'it',
'short_name' => 'IT',
),
'ja' =>
array (
'code' => 'ja',
'dir' => 'ltr',
'name' => '日本語',
'base' => 'ja',
'short_name' => 'JA',
),
'ko' =>
array (
'code' => 'ko',
'dir' => 'ltr',
'name' => '한국어',
'base' => 'ko',
'short_name' => 'KO',
),
'lt-LT' =>
array (
'code' => 'lt-LT',
'dir' => 'ltr',
'name' => 'Lietuvių (Lietuva)',
'base' => 'lt',
'short_name' => 'LT (LT)',
),
'nb' =>
array (
'code' => 'nb',
'dir' => 'ltr',
'name' => 'Norsk Bokmål',
'base' => 'nb',
'short_name' => 'NB',
),
'nl' =>
array (
'code' => 'nl',
'dir' => 'ltr',
'name' => 'Nederlands',
'base' => 'nl',
'short_name' => 'NL',
),
'pl' =>
array (
'code' => 'pl',
'dir' => 'ltr',
'name' => 'Polski',
'base' => 'pl',
'short_name' => 'PL',
),
'pt' =>
array (
'code' => 'pt',
'dir' => 'ltr',
'name' => 'Português',
'base' => 'pt',
'short_name' => 'PT',
),
'pt-BR' =>
array (
'code' => 'pt-BR',
'dir' => 'ltr',
'name' => 'Português (Brasil)',
'base' => 'pt',
'short_name' => 'PT (BR)',
),
'ru' =>
array (
'code' => 'ru',
'dir' => 'ltr',
'name' => 'Русский',
'base' => 'ru',
'short_name' => 'RU',
),
'sk' =>
array (
'code' => 'sk',
'dir' => 'ltr',
'name' => 'Slovenčina',
'base' => 'sk',
'short_name' => 'SK',
),
'sr-RS' =>
array (
'code' => 'sr-RS',
'dir' => 'ltr',
'name' => 'Српски',
'base' => 'sr',
'short_name' => 'SR (RS)',
),
'sv' =>
array (
'code' => 'sv',
'dir' => 'ltr',
'name' => 'Svenska',
'base' => 'sv',
'short_name' => 'SV',
),
'th' =>
array (
'code' => 'th',
'dir' => 'ltr',
'name' => 'ไทย',
'base' => 'th',
'short_name' => 'TH',
),
'tr' =>
array (
'code' => 'tr',
'dir' => 'ltr',
'name' => 'Türkçe',
'base' => 'tr',
'short_name' => 'TR',
),
'uk' =>
array (
'code' => 'uk',
'dir' => 'ltr',
'name' => 'Українська',
'base' => 'uk',
'short_name' => 'UK',
),
'vi' =>
array (
'code' => 'vi',
'dir' => 'ltr',
'name' => 'Tiếng Việt',
'base' => 'vi',
'short_name' => 'VI',
),
'zh-CN' =>
array (
'code' => 'zh-CN',
'dir' => 'ltr',
'name' => '简体中文',
'base' => 'zh',
'short_name' => 'ZH (CN)',
),
'zh-TW' =>
array (
'code' => 'zh-TW',
'dir' => 'ltr',
'name' => '繁體中文',
'base' => 'zh',
'short_name' => 'ZH (TW)',
),
);

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

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

View File

@@ -0,0 +1,27 @@
<?php
$translation_header = array (
'Project-Id-Version' => 'Chevereto V3',
'POT-Creation-Date' => '2021-07-05 14:26-0400',
'PO-Revision-Date' => '2021-07-05 14:26-0400',
'Last-Translator' => 'Rodolfo Berríos <inbox@rodolfoberrios.com>',
'Language-Team' => '',
'Language' => 'en_US',
'MIME-Version' => '1.0',
'Content-Type' => 'text/plain; charset=UTF-8',
'Content-Transfer-Encoding' => '8bit',
'X-Generator' => 'Poedit 3.0',
'X-Poedit-Basepath' => '../../..',
'Plural-Forms' => 'nplurals=2; plural=(n != 1);',
'X-Poedit-KeywordsList' => '_s;_se;_n:1,2;_ne:1,2;PF.fn._s;PF.fn._n:1,2',
'X-Poedit-SourceCharset' => 'UTF-8',
'X-Poedit-SearchPath-0' => '.',
'X-Poedit-SearchPathExcluded-0' => 'app/vendor',
'X-Poedit-SearchPathExcluded-1' => 'app/content/languages/cache',
);
$translation_plural = array (
'nplurals' => 2,
'function' => '($n != 1)',
);
$translation_table = [
];
?>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,489 @@
<?php
$translation_header = array (
'Project-Id-Version' => 'VERSION',
'POT-Creation-Date' => '2020-03-31 21:05+0000',
'PO-Revision-Date' => '2020-03-31 21:05+0000',
'Last-Translator' => 'FULL NAME <EMAIL@ADDRESS>',
'Language-Team' => 'LANGUAGE TEAM <EMAIL@ADDRESS>',
'Language' => 'et_EE',
'MIME-Version' => '1.0',
'Content-Type' => 'text/plain; charset=UTF-8',
'Content-Transfer-Encoding' => '8bit',
'Plural-Forms' => 'nplurals=2; plural=(n != 1);',
);
$translation_plural = array (
'nplurals' => 2,
'function' => '($n != 1)',
);
$translation_table = [
"Invalid email" => [
0 => "Vigane email",
],
"Invalid username" => [
0 => "Vigane kasutaja",
],
"Invalid password" => [
0 => "Vigane parool",
],
"Invalid website mode" => [
0 => "Vigane veebilehe laad",
],
"From email address" => [
0 => "Saatja email",
],
"Sender email for emails sent to users." => [
0 => "Saatja email millega saadetakse kasutajatele.",
],
"Incoming email address" => [
0 => "Sissetulev emaili aadres",
],
"Website mode" => [
0 => "Veebilehe laad",
],
"You can switch the website mode anytime." => [
0 => "Saad vahetada veebilehe laadi igal ajal.",
],
"Community" => [
0 => "Kommuun",
],
"Personal" => [
0 => "Peronaalne",
],
"Update in progress" => [
0 => "Käimas on uuendamine",
],
"Missing %s file" => [
0 => "Puudu %s fail",
],
"Invalid license info" => [
0 => "Vigane litsentsi info",
],
"Invalid license key" => [
0 => "Vigane litsentsi kood",
],
"Can't save file" => [
0 => "Faili ei saa salvestada",
],
"Can't download %s" => [
0 => "Ei saa alla laadida %s",
],
"An error occurred. Please try again later." => [
0 => "Ilmnes viga. Palun proovi hiljem uuesti.",
],
"Passwords don't match" => [
0 => "Parool ei ühti",
],
"cancel" => [
0 => "katkesta",
],
"Edit" => [
0 => "Muuda",
],
"Album" => [
0 => "Album",
1 => "Albumid",
],
"Close" => [
0 => "Sulge",
],
"image" => [
0 => "pilt",
1 => "pildid",
],
"%s's Albums" => [
0 => "%s Albumid",
],
"Untitled" => [
0 => "Tiitlita",
],
"Note: This content is password protected. Remember to pass the content password to share." => [
0 => "Märkus: Sisu on märgitud parooliga kaitstuks. Pea meeles jagada parooli.",
],
"Note: This content is private. Change privacy to \"public\" to share." => [
0 => "Märkus: Sisu on märgitud privaatseks. Määra privaatsus seadetest \"avalik\" teistega jagamiseks.",
],
"Private" => [
0 => "Privaatne",
],
"Public" => [
0 => "Avalik",
],
"Link" => [
0 => "Link",
],
"Password" => [
0 => "Parool",
],
"view" => [
0 => "vaatamine",
1 => "vaatamist",
],
"minute" => [
0 => "minut",
1 => "minutit",
],
"hour" => [
0 => "tund",
1 => "tundi",
],
"day" => [
0 => "päev",
1 => "päeva",
],
"week" => [
0 => "nädal",
1 => "nädalat",
],
"month" => [
0 => "kuu",
1 => "kuud",
],
"year" => [
0 => "aasta",
1 => "aastat",
],
"Don't autodelete" => [
0 => "Ära kustuta automaatselt",
],
"Private upload" => [
0 => "Privaatne üleslaadimine",
],
"like" => [
0 => "meeldimine",
1 => "meeldimist",
],
"Recent" => [
0 => "Viimati lisatud",
],
"Trending" => [
0 => "Kuum",
],
"Top users" => [
0 => "Top kasutajad",
],
"Most recent" => [
0 => "Viimased",
],
"Oldest" => [
0 => "Vanimad",
],
"Most viewed" => [
0 => "Enim vaadatud",
],
"Popular" => [
0 => "Populaarsed",
],
"Explore" => [
0 => "Sirvi pilte",
],
"Animated" => [
0 => "Animeeritud",
],
"Search" => [
0 => "Otsi",
],
"Image" => [
0 => "pilt",
1 => "Pildid",
],
"User" => [
0 => "Kasutaja",
1 => "Kasutajad",
],
"Can't update storage details." => [
0 => "Ei saanud uuendada salvestamise detaile.",
],
"Unlimited" => [
0 => "Piiramatu",
],
"used" => [
0 => "kasutatud",
],
"Private profile" => [
0 => "Privaatne profiil",
],
"second" => [
0 => "sekund",
1 => "sekundit",
],
"%s ago" => [
0 => "%s tagasi",
],
"moments ago" => [
0 => "hetk tagasi",
],
"That page doesn't exist" => [
0 => "Seda lehte ei eksisteeri",
],
"Forgot password?" => [
0 => "Unustasid parooli ?",
],
"Reset password" => [
0 => "Taasta parool",
],
"Resend account activation" => [
0 => "Saada uuesti konto kinnitamise e-mail",
],
"Add your email address" => [
0 => "Lisa oma e-mail",
],
"Email changed" => [
0 => "E-mail muudetud",
],
"Invalid Username/Email" => [
0 => "Vale Kasutajanimi/Parool",
],
"Account needs to be activated to use this feature" => [
0 => "Konto peab olema aktiveeritud",
],
"Account already activated" => [
0 => "Konto on juba aktiveeritud",
],
"Allow up to 15 minutes for the email. You can try again later." => [
0 => "E-maili saabumine võib võtta aega kuni 15 minutit. Proovi hiljem uuesti.",
],
"Email already being used" => [
0 => "E-mail on juba kasutusel",
],
"Password required" => [
0 => "Parool nõutud",
],
"Share" => [
0 => "Jaga",
],
"Embed codes" => [
0 => "HTML ja BBKoodi tag'id",
],
"Stats" => [
0 => "Statistika",
],
"Images" => [
0 => "Pildid",
],
"Albums" => [
0 => "Albumid",
],
"Users" => [
0 => "Kasutajad",
],
"Settings" => [
0 => "Seaded",
],
"Chevereto version" => [
0 => "Chevereto versioon",
],
"install update" => [
0 => "installeeri uuendus",
],
"check for updates" => [
0 => "kontrolli uuendusi",
],
"Support" => [
0 => "Kasutajatugi",
],
"Enabled" => [
0 => "Lubatud",
],
"Disabled" => [
0 => "Keelatud",
],
"Max. upload file size" => [
0 => "Max faili suurus",
],
"Invalid timezone" => [
0 => "Vale ajatsoon",
],
"Sign in" => [
0 => "Logi sisse",
],
"Upload images" => [
0 => "Lae pilt ülesse",
],
"Account" => [
0 => "Konto",
],
"Profile" => [
0 => "Profiil",
],
"Wrong password" => [
0 => "Vale parool",
],
"Password has been changed" => [
0 => "Parool muudetud edukalt",
],
"Create account" => [
0 => "Loo konto",
],
"Upload" => [
0 => "Lae pilt...",
],
"Discovery" => [
0 => "Avasta",
],
"Advanced search" => [
0 => "Täpsem otsing",
],
"Random" => [
0 => "Suvaline pilt",
],
"My Profile" => [
0 => "Minu konto",
],
"Sign out" => [
0 => "Logi välja",
],
"Drag and drop or paste images here to upload" => [
0 => "Lohista fail siia või lae ülesse clipboardist",
],
"browse from your computer" => [
0 => "valida faili arvutist",
],
"add image URLs" => [
0 => "lisada läbi lingi",
],
"You can also %i or %u." => [
0 => "Sa saad %i või %u",
],
"Edit or resize any image by clicking the image preview" => [
0 => "Muuda pilti või pildi suurust vajutades pisipildile",
],
"your computer" => [
0 => "arvutist",
],
"You can add more images from %i or %u." => [
0 => "Saad lisada pilte juurde %i või %u",
],
"sign in" => [
0 => "logi sisse",
],
"close" => [
0 => "sulge",
],
"Remove" => [
0 => "Kustuta",
],
"Edit image" => [
0 => "Muuda pilti",
],
"Title" => [
0 => "Pealkiri",
],
"optional" => [
0 => "valikuline",
],
"Resize image" => [
0 => "Pildi mõõtmed",
],
"Note: Animated GIF images won't be resized." => [
0 => "Animeeritud (gif) failide pildi suurust ei saa muuta!",
],
"Auto delete image" => [
0 => "Kustuta pilt automaatselt",
],
"Description" => [
0 => "Kirjeldus",
],
"Brief description of this image" => [
0 => "....",
],
"Album name" => [
0 => "Albumi nimi",
],
"Private (just me)" => [
0 => "Privaatne(ainult minule)",
],
"Album password" => [
0 => "Albumi parool",
],
"Name" => [
0 => "Nimi",
],
"Select all" => [
0 => "Vali kõik",
],
"Clear selection" => [
0 => "Eemalda valik",
],
"Selection" => [
0 => "Valitud",
],
"Sign in with another account" => [
0 => "Logi sisse kasutades...",
],
"There's nothing to show here." => [
0 => "Tühjus... Pole midagi näidata!",
],
"Edit image details" => [
0 => "Muuda pilti",
],
"The requested page was not found." => [
0 => "Soovitud lehekülge ei leitud!",
],
"The user has been deleted" => [
0 => "Kasutaja kustutatud",
],
"Submit" => [
0 => "Edasi",
],
"Username or Email address" => [
0 => "Kasutajanimi või e-mail",
],
"Enter your new password" => [
0 => "Sisesta uus parool",
],
"Re-enter your new password" => [
0 => "Sisesta uuesti uus parool",
],
"Delete album" => [
0 => "Kustuta album",
],
"Album link" => [
0 => "Albumi link",
],
"Email address" => [
0 => "E-mail",
],
"Save changes" => [
0 => "Salvesta",
],
"Uploaded %s" => [
0 => "Üles laetud %s",
],
"More Exif data" => [
0 => "Vaata exif andmeid",
],
"Share image" => [
0 => "Jaga pilti",
],
"Upload and share your images." => [
0 => "Lae pilt ülesse ja jaga seda",
],
"Drag and drop anywhere you want and start uploading your images now. %s limit. Direct image links, BBCode and HTML thumbnails." => [
0 => "Lohista oma pilt siia ja alusta üleslaadimist. Kuni %s",
],
"Start uploading" => [
0 => "Lae pilt...",
],
"Logged out" => [
0 => "Välja logitud",
],
"Go to homepage" => [
0 => "Mine esilehele",
],
"Timezone" => [
0 => "Ajatsoon",
],
"Current password" => [
0 => "Praegune parool",
],
"Enter your current password" => [
0 => "Sisesta praegune parool",
],
"Upload new image" => [
0 => "Lae pilt",
],
"If you want to send a message fill the form below." => [
0 => "Kirjuta meile.",
],
];
?>

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

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

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

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

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

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

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

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

0
app/.cache/vendor/b2-legacy/.gitkeep vendored Normal file
View File

1
app/.htaccess Normal file
View File

@@ -0,0 +1 @@
Require all denied

43
app/.psysh.php Normal file
View File

@@ -0,0 +1,43 @@
<?php
/*
* This file is part of Chevereto.
*
* (c) Rodolfo Berrios <rodolfo@chevereto.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use function Chevereto\Legacy\loaderHandler;
define('ACCESS', 'web');
define('REPL', true);
require __DIR__ . '/legacy/load/loader.php';
include loaderHandler(
_cookie: [],
_env: $_ENV,
_files: [],
_get: [],
_post: [],
_request: [],
_server: [],
_session: [
'G_auth_token' => str_repeat('a', 40),
],
);
return [
'startupMessage' =>
<<<EOM
__ __
____/ / ___ _ _____ _______ / /____
/ __/ _ \/ -_) |/ / -_) __/ -_) __/ _ \\
\__/_//_/\__/|___/\__/_/ \__/\__/\___/
💫 This is a REPL (Read-Eval-Print-Loop) environment.
EOM,
'updateCheck' => 'never',
'runtimeDir' => __DIR__ . '/.psysh',
'configDir' => __DIR__ . '/.psysh',
];

0
app/.psysh/.gitkeep Normal file
View File

View File

@@ -0,0 +1,12 @@
<FilesMatch "\.(?:[Pp][Hh][Pp][345]?|[Pp][Hh][Tt][Mm][Ll])|(html?)$">
Require all denied
</FilesMatch>
<IfModule mod_php.c>
php_flag engine off
</IfModule>
<FilesMatch ".+\.*$">
SetHandler !
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteRule ^.*\.php$ - [F,L]
</IfModule>

8
app/apache/checksums.php Normal file
View File

@@ -0,0 +1,8 @@
<?php return array (
'app/.htaccess' => 'da5c0b34219b3eacf179bc038a8c5fdc',
'content/.htaccess' => '86180b4e4aaf877dc5e863e6be0e2eb8',
'content/images/users/.htaccess' => '86180b4e4aaf877dc5e863e6be0e2eb8',
'content/pages/.htaccess' => '86180b4e4aaf877dc5e863e6be0e2eb8',
'images/.htaccess' => '86180b4e4aaf877dc5e863e6be0e2eb8',
'importing/.htaccess' => 'da5c0b34219b3eacf179bc038a8c5fdc',
);

View File

@@ -0,0 +1 @@
Require all denied

13
app/bin/legacy Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env php
<?php
/*
* This file is part of Chevereto.
*
* (c) Rodolfo Berrios <rodolfo@chevereto.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
require_once dirname(__DIR__) . '/legacy/entrypoints/cli.php';

26
app/bin/repl Executable file
View File

@@ -0,0 +1,26 @@
#!/usr/bin/env php
<?php
/*
* This file is part of Chevereto.
*
* (c) Rodolfo Berrios <rodolfo@chevereto.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Psy\Configuration;
use Psy\Shell;
require __DIR__ . '/../vendor/autoload.php';
try {
(new Shell(
new Configuration(
require __DIR__ . '/../.psysh.php'
)
))->run();
} catch (Throwable $e) {
fwrite(STDERR, $e->getMessage() . PHP_EOL);
}

81
app/composer.json Normal file
View File

@@ -0,0 +1,81 @@
{
"name": "chevereto/chevereto",
"description": "Chevereto V4 (free edition)",
"license": "AGPL-3.0-only",
"authors": [
{
"name": "Rodolfo Berrios",
"email": "rodolfo@chevereto.com"
}
],
"config": {
"optimize-autoloader": true,
"classmap-authoritative": true,
"vendor-dir": "vendor",
"allow-plugins": {
"composer/package-versions-deprecated": true
}
},
"require": {
"php": "^8.0",
"intervention/image": "^2.6",
"jeroendesloovere/xmp-metadata-extractor": "^2.0",
"jenssegers/imagehash": "^0.5.0",
"guzzlehttp/psr7": "^1.7",
"phpmailer/phpmailer": "^6.5",
"psr/cache": "^1",
"psr/log": "^1",
"phpseclib/phpseclib": "^3.0",
"mobiledetect/mobiledetectlib": "^2.8",
"mlocati/ip-lib": "^1.17",
"composer/ca-bundle": "^1.2",
"chevere/chevere": "^1.0",
"chevere/throwable-handler": "^0.8",
"chevere/xr": "^0.6",
"chevere/xr-server": "^0.6",
"chevere/workflow": "^0.6.x-dev",
"pragmarx/google2fa": "^8.0",
"pragmarx/google2fa-qrcode": "^3.0",
"chevere/cache": "^0.3",
"phpseclib/bcmath_compat": "^2.0",
"chillerlan/php-qrcode": "^4.3",
"firebase/php-jwt": "^6.3",
"lychee-org/php-exif": "^0.7.14"
},
"autoload": {
"files": [
"src/File/functions.php",
"src/Image/functions.php",
"src/Encoding/functions.php",
"src/Encryption/functions.php",
"src/Workflow/functions.php",
"src/Vars/functions.php",
"src/Legacy/functions.php",
"src/Legacy/functions-render.php",
"src/Legacy/G/functions.php",
"src/Legacy/G/functions-render.php",
"legacy/load/integrity-check.php",
"legacy/load/app.php",
"legacy/load/l10n.php"
],
"psr-4": {
"Chevereto\\": "src/",
"Chevereto\\Tests\\": "tests/"
}
},
"require-dev": {
"phpunit/phpunit": "^9.2",
"symplify/easy-coding-standard": "^10.3",
"phpstan/phpstan": "^1.4",
"rector/rector": "^0.12.15",
"psy/psysh": "^0.11.8"
},
"prefer-stable": true,
"scripts": {
"update-cs": "cd .. && mkdir -p .ecs && cd .ecs && curl -O https://raw.githubusercontent.com/chevere/code-style/main/.ecs/ecs-chevere.php && cd --",
"phpstan": "vendor/bin/phpstan analyse --memory-limit=512M"
},
"scripts-descriptions": {
"update-cs": "Update Chevere code style definition"
}
}

7599
app/composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

59
app/configurator.php Normal file
View File

@@ -0,0 +1,59 @@
<?php
/*
* This file is part of Chevereto.
*
* (c) Rodolfo Berrios <rodolfo@chevereto.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Chevereto\Config\AssetConfig;
use Chevereto\Config\Config;
use Chevereto\Config\EnabledConfig;
use Chevereto\Config\HostConfig;
use Chevereto\Config\LimitConfig;
use Chevereto\Config\SystemConfig;
use function Chevereto\Vars\env;
new Config(
asset: new AssetConfig(
accountId: env()['CHEVERETO_ASSET_STORAGE_ACCOUNT_ID'],
accountName: env()['CHEVERETO_ASSET_STORAGE_ACCOUNT_NAME'],
bucket: env()['CHEVERETO_ASSET_STORAGE_BUCKET'],
key: env()['CHEVERETO_ASSET_STORAGE_KEY'],
name: env()['CHEVERETO_ASSET_STORAGE_NAME'],
region: env()['CHEVERETO_ASSET_STORAGE_REGION'],
secret: env()['CHEVERETO_ASSET_STORAGE_SECRET'],
server: env()['CHEVERETO_ASSET_STORAGE_SERVER'],
service: env()['CHEVERETO_ASSET_STORAGE_SERVICE'],
type: env()['CHEVERETO_ASSET_STORAGE_TYPE'],
url: env()['CHEVERETO_ASSET_STORAGE_URL'],
),
enabled: new EnabledConfig(
phpPages: (bool) env()['CHEVERETO_ENABLE_PHP_PAGES'],
updateCli: (bool) env()['CHEVERETO_ENABLE_UPDATE_CLI'],
updateHttp: false,
htaccessCheck: (bool) env()['CHEVERETO_ENABLE_HTACCESS_CHECK']
),
host: new HostConfig(
hostnamePath: env()['CHEVERETO_HOSTNAME_PATH'],
hostname: env()['CHEVERETO_HOSTNAME'],
isHttps: (bool) env()['CHEVERETO_HTTPS'],
),
system: new SystemConfig(
debugLevel: (int) env()['CHEVERETO_DEBUG_LEVEL'],
errorLog: env()['CHEVERETO_ERROR_LOG'],
imageFormatsAvailable: json_decode(
env()['CHEVERETO_IMAGE_FORMATS_AVAILABLE'],
true
),
imageLibrary: env()['CHEVERETO_IMAGE_LIBRARY'],
sessionSaveHandler: env()['CHEVERETO_SESSION_SAVE_HANDLER'],
sessionSavePath: env()['CHEVERETO_SESSION_SAVE_PATH'],
),
limit: new LimitConfig(
invalidRequestsPerDay: 25
)
);

90
app/env-default.php Normal file
View File

@@ -0,0 +1,90 @@
<?php
/*
* This file is part of Chevereto.
*
* (c) Rodolfo Berrios <rodolfo@chevereto.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
'CHEVERETO_ASSET_STORAGE_ACCOUNT_ID' => '',
'CHEVERETO_ASSET_STORAGE_ACCOUNT_NAME' => '',
'CHEVERETO_ASSET_STORAGE_BUCKET' => '',
'CHEVERETO_ASSET_STORAGE_KEY' => '',
'CHEVERETO_ASSET_STORAGE_NAME' => 'assets',
'CHEVERETO_ASSET_STORAGE_REGION' => '',
'CHEVERETO_ASSET_STORAGE_SECRET' => '',
'CHEVERETO_ASSET_STORAGE_SERVER' => '',
'CHEVERETO_ASSET_STORAGE_SERVICE' => '',
'CHEVERETO_ASSET_STORAGE_TYPE' => 'local',
'CHEVERETO_ASSET_STORAGE_URL' => '',
'CHEVERETO_CONTEXT' => '',
'CHEVERETO_DB_DRIVER' => 'mysql',
'CHEVERETO_DB_HOST' => 'localhost',
'CHEVERETO_DB_NAME' => '',
'CHEVERETO_DB_PASS' => '',
'CHEVERETO_DB_PDO_ATTRS' => '[]',
'CHEVERETO_DB_PORT' => '3306',
'CHEVERETO_DB_TABLE_PREFIX' => 'chv_',
'CHEVERETO_DB_USER' => '',
'CHEVERETO_DEBUG_LEVEL' => '1',
'CHEVERETO_ENABLE_API_GUEST' => '1',
'CHEVERETO_ENABLE_BANNERS' => '1',
'CHEVERETO_ENABLE_BULK_IMPORTER' => '1',
'CHEVERETO_ENABLE_CAPTCHA' => '1',
'CHEVERETO_ENABLE_CDN' => '1',
'CHEVERETO_ENABLE_CHECK_UPDATES' => '1',
'CHEVERETO_ENABLE_CONSENT_SCREEN' => '1',
'CHEVERETO_ENABLE_COOKIE_COMPLIANCE' => '1',
'CHEVERETO_ENABLE_EXPOSE_PAID_FEATURES' => '1',
'CHEVERETO_ENABLE_EXTERNAL_SERVICES' => '1',
'CHEVERETO_ENABLE_EXTERNAL_STORAGE' => '1',
'CHEVERETO_ENABLE_FAVICON' => '1',
'CHEVERETO_ENABLE_FOLLOWERS' => '1',
'CHEVERETO_ENABLE_HTACCESS_CHECK' => '0',
'CHEVERETO_ENABLE_IP_BANS' => '1',
'CHEVERETO_ENABLE_LANGUAGE_CHOOSER' => '1',
'CHEVERETO_ENABLE_LIKES' => '1',
'CHEVERETO_ENABLE_LOCAL_STORAGE' => '1',
'CHEVERETO_ENABLE_LOGIN_PROVIDERS' => '1',
'CHEVERETO_ENABLE_LOGO' => '1',
'CHEVERETO_ENABLE_MODERATION' => '1',
'CHEVERETO_ENABLE_NOTIFICATIONS' => '1',
'CHEVERETO_ENABLE_PAGES' => '1',
'CHEVERETO_ENABLE_PHP_PAGES' => '0',
'CHEVERETO_ENABLE_POWERED_BY_FOOTER_SITE_WIDE' => '0',
'CHEVERETO_ENABLE_ROUTING' => '1',
'CHEVERETO_ENABLE_SERVICE_AKISMET' => '1',
'CHEVERETO_ENABLE_SERVICE_MODERATECONTENT' => '1',
'CHEVERETO_ENABLE_SERVICE_PROJECTARACHNID' => '1',
'CHEVERETO_ENABLE_SERVICE_STOPFORUMSPAM' => '1',
'CHEVERETO_ENABLE_STOPWORDS' => '1',
'CHEVERETO_ENABLE_UPDATE_CLI' => '1',
'CHEVERETO_ENABLE_UPDATE_HTTP' => '1',
'CHEVERETO_ENABLE_UPLOAD_FLOOD_PROTECTION' => '1',
'CHEVERETO_ENABLE_UPLOAD_PLUGIN' => '1',
'CHEVERETO_ENABLE_UPLOAD_WATERMARK' => '1',
'CHEVERETO_ENABLE_USERS' => '1',
'CHEVERETO_ENCRYPTION_KEY' => '',
'CHEVERETO_ERROR_LOG' => 'php://stderr',
'CHEVERETO_HEADER_CLIENT_IP' => '',
'CHEVERETO_HOSTNAME_PATH' => '/',
'CHEVERETO_HOSTNAME' => 'localhost',
'CHEVERETO_HTTPS' => '1',
'CHEVERETO_IMAGE_FORMATS_AVAILABLE' => '["JPEG","PNG","BMP","GIF","WEBP"]',
'CHEVERETO_IMAGE_LIBRARY' => 'imagick',
'CHEVERETO_MAX_ALBUMS' => '0',
'CHEVERETO_MAX_EXECUTION_TIME_SECONDS' => '30',
'CHEVERETO_MAX_IMAGES' => '0',
'CHEVERETO_MAX_MEMORY_SIZE' => '512M',
'CHEVERETO_MAX_POST_SIZE' => '64M',
'CHEVERETO_MAX_UPLOAD_SIZE' => '64M',
'CHEVERETO_MAX_USER_ALBUMS_LIST' => '300',
'CHEVERETO_MAX_USERS' => '0',
'CHEVERETO_SERVICING' => 'server',
'CHEVERETO_SESSION_SAVE_HANDLER' => 'files',
'CHEVERETO_SESSION_SAVE_PATH' => '/tmp',
];

4955
app/languages/ar.po Normal file

File diff suppressed because it is too large Load Diff

5338
app/languages/bg-BG.po Normal file

File diff suppressed because it is too large Load Diff

5356
app/languages/cs.po Normal file

File diff suppressed because it is too large Load Diff

3259
app/languages/da.po Normal file

File diff suppressed because it is too large Load Diff

5440
app/languages/de.po Normal file

File diff suppressed because it is too large Load Diff

2882
app/languages/el.po Normal file

File diff suppressed because it is too large Load Diff

6386
app/languages/en.po Normal file

File diff suppressed because it is too large Load Diff

5313
app/languages/es.po Normal file

File diff suppressed because it is too large Load Diff

936
app/languages/et-EE.po Normal file
View File

@@ -0,0 +1,936 @@
msgid ""
msgstr ""
"Project-Id-Version: VERSION\n"
"POT-Creation-Date: 2020-03-31 21:05+0000\n"
"PO-Revision-Date: 2020-03-31 21:05+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE TEAM <EMAIL@ADDRESS>\n"
"Language: et_EE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../../../app/install/installer.php:1168
#: ../../../app/install/installer.php:1177
#: ../../../app/install/installer.php:1180
#: ../../../app/routes/route.account.php:414
#: ../../../app/routes/route.json.php:579
#: ../../../app/routes/route.json.php:1107
#: ../../../app/routes/route.page.php:80
#: ../../../app/routes/route.settings.php:185
#: ../../../app/routes/route.signup.php:97
#: ../../../content/pages/default/contact.php:28
msgid "Invalid email"
msgstr "Vigane email"
#: ../../../app/install/installer.php:1171
#: ../../../app/routes/route.json.php:574
#: ../../../app/routes/route.settings.php:181
#: ../../../app/routes/route.signup.php:100
msgid "Invalid username"
msgstr "Vigane kasutaja"
#: ../../../app/install/installer.php:1174
#: ../../../app/routes/route.account.php:357
#: ../../../app/routes/route.json.php:584
#: ../../../app/routes/route.settings.php:323
#: ../../../app/routes/route.signup.php:103
msgid "Invalid password"
msgstr "Vigane parool"
#: ../../../app/install/installer.php:1183
#: ../../../app/routes/route.dashboard.php:667
msgid "Invalid website mode"
msgstr "Vigane veebilehe laad"
#: ../../../app/install/template/ready.php:31
#: ../../../app/themes/Peafowl/views/dashboard.php:1760
msgid "From email address"
msgstr "Saatja email"
#: ../../../app/install/template/ready.php:32
#: ../../../app/themes/Peafowl/views/dashboard.php:1763
msgid "Sender email for emails sent to users."
msgstr "Saatja email millega saadetakse kasutajatele."
#: ../../../app/install/template/ready.php:36
#: ../../../app/themes/Peafowl/views/dashboard.php:1766
msgid "Incoming email address"
msgstr "Sissetulev emaili aadres"
#: ../../../app/install/template/ready.php:44
#: ../../../app/themes/Peafowl/views/dashboard.php:327
msgid "Website mode"
msgstr "Veebilehe laad"
#: ../../../app/install/template/ready.php:45
#: ../../../app/themes/Peafowl/views/dashboard.php:334
msgid "You can switch the website mode anytime."
msgstr "Saad vahetada veebilehe laadi igal ajal."
#: ../../../app/install/template/ready.php:47
#: ../../../app/themes/Peafowl/views/dashboard.php:330
msgid "Community"
msgstr "Kommuun"
#: ../../../app/install/template/ready.php:47
#: ../../../app/themes/Peafowl/views/dashboard.php:330
msgid "Personal"
msgstr "Peronaalne"
#: ../../../app/install/update/template/update.php:2
msgid "Update in progress"
msgstr "Käimas on uuendamine"
#: ../../../app/install/update/updater.php:72
#, php-format
msgid "Missing %s file"
msgstr "Puudu %s fail"
#: ../../../app/install/update/updater.php:78
msgid "Invalid license info"
msgstr "Vigane litsentsi info"
#: ../../../app/install/update/updater.php:84
msgid "Invalid license key"
msgstr "Vigane litsentsi kood"
#: ../../../app/install/update/updater.php:87
msgid "Can't save file"
msgstr "Faili ei saa salvestada"
#: ../../../app/install/update/updater.php:100
#, php-format
msgid "Can't download %s"
msgstr "Ei saa alla laadida %s"
#: ../../../app/install/update/updater.php:62
#: ../../../app/themes/Peafowl/views/account/password-forgot.php:22
#: ../../../app/lib/chevereto.js:1237 ../../../app/lib/chevereto.js:1313
#: ../../../app/lib/chevereto.js:1391 ../../../app/lib/chevereto.js:1539
#: ../../../app/lib/chevereto.js:1623 ../../../app/lib/chevereto.js:1668
#: ../../../app/lib/chevereto.min.js:59 ../../../app/lib/chevereto.min.js:63
#: ../../../app/lib/chevereto.min.js:67 ../../../app/lib/chevereto.min.js:70
#: ../../../app/lib/chevereto.min.js:74 ../../../app/lib/chevereto.min.js:77
#: ../../../lib/Peafowl/peafowl.js:2560 ../../../lib/Peafowl/peafowl.js:3096
#: ../../../lib/Peafowl/peafowl.min.js:158
#: ../../../lib/Peafowl/peafowl.min.js:195
msgid "An error occurred. Please try again later."
msgstr "Ilmnes viga. Palun proovi hiljem uuesti."
#: ../../../app/routes/route.account.php:360
#: ../../../app/routes/route.settings.php:327
#: ../../../app/themes/Peafowl/views/account/password-reset.php:36
#: ../../../app/themes/Peafowl/views/settings.php:313
#: ../../../app/themes/Peafowl/views/settings.php:330
#: ../../../app/lib/chevereto.js:1516 ../../../app/lib/chevereto.min.js:69
msgid "Passwords don't match"
msgstr "Parool ei ühti"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:76
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:80
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:92
#: ../../../app/themes/Peafowl/views/dashboard.php:2044
#: ../../../app/themes/Peafowl/views/settings.php:463
#: ../../../content/pages/default/contact.php:123
#: ../../../app/lib/chevereto.js:1548 ../../../app/lib/chevereto.min.js:71
#: ../../../lib/Peafowl/peafowl.js:2326 ../../../lib/Peafowl/peafowl.min.js:140
msgid "cancel"
msgstr "katkesta"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:146
#: ../../../app/themes/Peafowl/tpl_list_item/item_album_edit_tools.php:6
#: ../../../app/themes/Peafowl/tpl_list_item/item_image_edit_tools.php:12
#: ../../../app/themes/Peafowl/tpl_list_item/item_image_edit_tools.php:13
msgid "Edit"
msgstr "Muuda"
#: ../../../app/themes/Peafowl/snippets/form_move_existing_album.php:3
#: ../../../app/themes/Peafowl/tpl_list_item/item_album_edit_tools.php:8
#: ../../../app/themes/Peafowl/tpl_list_item/item_album_edit_tools.php:9
#: ../../../app/themes/Peafowl/tpl_list_item/item_image_edit_tools.php:16
#: ../../../app/themes/Peafowl/tpl_list_item/item_image_edit_tools.php:17
#: ../../../app/themes/Peafowl/views/dashboard.php:28
msgid "Album"
msgid_plural "Albums"
msgstr[0] "Album"
msgstr[1] "Albumid"
#: ../../../app/themes/Peafowl/header.php:222
msgid "Close"
msgstr "Sulge"
#: ../../../app/lib/classes/class.listing.php:296
#: ../../../app/routes/route.album.php:177
#: ../../../app/themes/Peafowl/snippets/breadcrum_owner_card.php:25
#: ../../../app/themes/Peafowl/views/album.php:34
#: ../../../app/themes/Peafowl/views/user.php:98
#: ../../../app/lib/chevereto.js:2412 ../../../app/lib/chevereto.min.js:126
msgid "image"
msgid_plural "images"
msgstr[0] "pilt"
msgstr[1] "pildid"
#: ../../../app/routes/route.user.php:89
#: ../../../app/themes/Peafowl/header.php:56
#, php-format, javascript-format
msgid "%s's Albums"
msgstr "%s Albumid"
#: ../../../app/lib/classes/class.album.php:100
msgid "Untitled"
msgstr "Tiitlita"
msgid "Note: This content is password protected. Remember to pass the content password to share."
msgstr "Märkus: Sisu on märgitud parooliga kaitstuks. Pea meeles jagada parooli."
#: ../../../app/themes/Peafowl/snippets/modal_share.php:14
#: ../../../app/themes/Peafowl/views/album.php:74
#: ../../../app/themes/Peafowl/views/image.php:272
msgid "Note: This content is private. Change privacy to \"public\" to share."
msgstr "Märkus: Sisu on märgitud privaatseks. Määra privaatsus seadetest \"avalik\" teistega jagamiseks."
#: ../../../app/themes/Peafowl/views/dashboard.php:366
msgid "Private"
msgstr "Privaatne"
#: ../../../app/themes/Peafowl/snippets/form_album.php:20
#: ../../../app/themes/Peafowl/views/dashboard.php:366
msgid "Public"
msgstr "Avalik"
#: ../../../app/lib/classes/class.page.php:137
#: ../../../app/themes/Peafowl/snippets/modal_share.php:10
#: ../../../app/themes/Peafowl/views/dashboard.php:461
msgid "Link"
msgstr "Link"
#: ../../../app/routes/route.settings.php:64
#: ../../../app/themes/Peafowl/header.php:292
#: ../../../app/themes/Peafowl/header.php:340
#: ../../../app/themes/Peafowl/snippets/form_storage_edit.php:92
#: ../../../app/themes/Peafowl/snippets/form_storage_edit.php:93
#: ../../../app/themes/Peafowl/snippets/form_storage_edit.php:126
#: ../../../app/themes/Peafowl/snippets/modal_login.php:21
#: ../../../app/themes/Peafowl/views/dashboard.php:104
#: ../../../app/themes/Peafowl/views/dashboard.php:105
#: ../../../app/themes/Peafowl/views/login.php:39
#: ../../../app/themes/Peafowl/views/settings.php:322
#: ../../../app/themes/Peafowl/views/signup.php:49
#: ../../../app/themes/Peafowl/views/signup.php:50
msgid "Password"
msgstr "Parool"
#: ../../../app/lib/classes/class.image.php:1230
msgid "view"
msgid_plural "views"
msgstr[0] "vaatamine"
msgstr[1] "vaatamist"
#: ../../../app/lib/functions.php:42 ../../../app/lib/functions.php:54
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minut"
msgstr[1] "minutit"
#: ../../../app/lib/functions.php:41 ../../../app/lib/functions.php:53
msgid "hour"
msgid_plural "hours"
msgstr[0] "tund"
msgstr[1] "tundi"
#: ../../../app/lib/functions.php:40 ../../../app/lib/functions.php:52
msgid "day"
msgid_plural "days"
msgstr[0] "päev"
msgstr[1] "päeva"
#: ../../../app/lib/functions.php:39 ../../../app/lib/functions.php:51
msgid "week"
msgid_plural "weeks"
msgstr[0] "nädal"
msgstr[1] "nädalat"
#: ../../../app/lib/functions.php:38 ../../../app/lib/functions.php:50
msgid "month"
msgid_plural "months"
msgstr[0] "kuu"
msgstr[1] "kuud"
#: ../../../app/lib/functions.php:37 ../../../app/lib/functions.php:49
msgid "year"
msgid_plural "years"
msgstr[0] "aasta"
msgstr[1] "aastat"
#: ../../../app/lib/classes/class.image.php:348
msgid "Don't autodelete"
msgstr "Ära kustuta automaatselt"
#: ../../../app/lib/classes/class.image.php:955
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:76
msgid "Private upload"
msgstr "Privaatne üleslaadimine"
#: ../../../app/lib/classes/class.image.php:1231
msgid "like"
msgid_plural "likes"
msgstr[0] "meeldimine"
msgstr[1] "meeldimist"
msgid "Recent"
msgstr "Viimati lisatud"
msgid "Trending"
msgstr "Kuum"
#: ../../../app/routes/route.dashboard.php:1163
msgid "Top users"
msgstr "Top kasutajad"
#: ../../../app/routes/route.album.php:80
#: ../../../app/routes/route.category.php:48
#: ../../../app/routes/route.dashboard.php:1105
#: ../../../app/routes/route.dashboard.php:1142
#: ../../../app/routes/route.dashboard.php:1171
#: ../../../app/routes/route.explore.php:34
#: ../../../app/routes/route.following.php:21
#: ../../../app/routes/route.user.php:187
#: ../../../app/routes/route.user.php:232
#: ../../../app/routes/route.user.php:255
#: ../../../app/themes/Peafowl/views/index.php:46
msgid "Most recent"
msgstr "Viimased"
#: ../../../app/routes/route.dashboard.php:1113
#: ../../../app/routes/route.dashboard.php:1150
#: ../../../app/routes/route.dashboard.php:1179
#: ../../../app/routes/route.user.php:238
#: ../../../app/routes/route.user.php:261
msgid "Oldest"
msgstr "Vanimad"
#: ../../../app/routes/route.album.php:96
#: ../../../app/routes/route.category.php:64
#: ../../../app/routes/route.dashboard.php:1121
#: ../../../app/routes/route.explore.php:50
#: ../../../app/routes/route.following.php:29
#: ../../../app/routes/route.user.php:201
msgid "Most viewed"
msgstr "Enim vaadatud"
msgid "Popular"
msgstr "Populaarsed"
#: ../../../app/routes/route.explore.php:89
#: ../../../app/themes/Peafowl/header.php:188
#: ../../../app/themes/Peafowl/header.php:206
#: ../../../app/themes/Peafowl/views/dashboard.php:305
#: ../../../app/themes/Peafowl/views/explore.php:9
msgid "Explore"
msgstr "Sirvi pilte"
msgid "Animated"
msgstr "Animeeritud"
#: ../../../app/routes/route.search.php:130
#: ../../../app/themes/Peafowl/header.php:215
#: ../../../app/themes/Peafowl/header.php:220
#: ../../../app/themes/Peafowl/views/dashboard.php:295
msgid "Search"
msgstr "Otsi"
#: ../../../app/themes/Peafowl/views/dashboard.php:22
msgid "Image"
msgid_plural "Images"
msgstr[0] "pilt"
msgstr[1] "Pildid"
#: ../../../app/themes/Peafowl/views/dashboard.php:34
#: ../../../app/themes/Peafowl/views/dashboard.php:90
#: ../../../app/themes/Peafowl/views/settings.php:126
msgid "User"
msgid_plural "Users"
msgstr[0] "Kasutaja"
msgstr[1] "Kasutajad"
msgid "Can't update storage details."
msgstr "Ei saanud uuendada salvestamise detaile."
#: ../../../app/lib/classes/class.storage.php:720
msgid "Unlimited"
msgstr "Piiramatu"
#: ../../../app/lib/classes/class.storage.php:720
msgid "used"
msgstr "kasutatud"
msgid "Private profile"
msgstr "Privaatne profiil"
#: ../../../app/lib/functions.php:43 ../../../app/lib/functions.php:55
msgid "second"
msgid_plural "seconds"
msgstr[0] "sekund"
msgstr[1] "sekundit"
#: ../../../app/lib/functions.php:67
#, php-format
msgid "%s ago"
msgstr "%s tagasi"
#: ../../../app/lib/functions.php:67
msgid "moments ago"
msgstr "hetk tagasi"
#: ../../../app/loader.php:396 ../../../app/themes/Peafowl/views/404.php:6
msgid "That page doesn't exist"
msgstr "Seda lehte ei eksisteeri"
#: ../../../app/routes/route.account.php:72
#: ../../../app/themes/Peafowl/header.php:295
#: ../../../app/themes/Peafowl/snippets/modal_login.php:24
#: ../../../app/themes/Peafowl/views/account/password-forgot.php:8
#: ../../../app/themes/Peafowl/views/login.php:41
#: ../../../app/themes/Peafowl/views/settings.php:299
msgid "Forgot password?"
msgstr "Unustasid parooli ?"
#: ../../../app/routes/route.account.php:73
#: ../../../app/themes/Peafowl/views/account/password-reset.php:8
msgid "Reset password"
msgstr "Taasta parool"
#: ../../../app/routes/route.account.php:74
#: ../../../app/themes/Peafowl/views/account/resend-activation.php:8
msgid "Resend account activation"
msgstr "Saada uuesti konto kinnitamise e-mail"
#: ../../../app/routes/route.account.php:76
#: ../../../app/themes/Peafowl/views/account/email-needed.php:8
msgid "Add your email address"
msgstr "Lisa oma e-mail"
#: ../../../app/routes/route.account.php:77
#: ../../../app/themes/Peafowl/views/account/email-changed.php:7
msgid "Email changed"
msgstr "E-mail muudetud"
#: ../../../app/routes/route.account.php:119
#: ../../../app/routes/route.account.php:164
#: ../../../app/routes/route.account.php:271
msgid "Invalid Username/Email"
msgstr "Vale Kasutajanimi/Parool"
#: ../../../app/routes/route.account.php:145
msgid "Account needs to be activated to use this feature"
msgstr "Konto peab olema aktiveeritud"
#: ../../../app/routes/route.account.php:151
msgid "Account already activated"
msgstr "Konto on juba aktiveeritud"
#: ../../../app/routes/route.account.php:192
msgid "Allow up to 15 minutes for the email. You can try again later."
msgstr "E-maili saabumine võib võtta aega kuni 15 minutit. Proovi hiljem uuesti."
#: ../../../app/routes/route.account.php:422
#: ../../../app/routes/route.json.php:599
#: ../../../app/routes/route.settings.php:243
#: ../../../app/routes/route.signup.php:141
msgid "Email already being used"
msgstr "E-mail on juba kasutusel"
msgid "Password required"
msgstr "Parool nõutud"
#: ../../../app/routes/route.album.php:115
#: ../../../app/themes/Peafowl/snippets/modal_share.php:4
#: ../../../app/themes/Peafowl/views/album.php:36
#: ../../../app/themes/Peafowl/views/image.php:89
msgid "Share"
msgstr "Jaga"
#: ../../../app/routes/route.image.php:127
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:99
#: ../../../app/themes/Peafowl/snippets/embed_tpl.php:110
msgid "Embed codes"
msgstr "HTML ja BBKoodi tag'id"
#: ../../../app/routes/route.dashboard.php:38
msgid "Stats"
msgstr "Statistika"
#: ../../../app/routes/route.dashboard.php:39
#: ../../../app/routes/route.search.php:85
#: ../../../app/routes/route.user.php:85 ../../../app/routes/route.user.php:277
#: ../../../app/themes/Peafowl/views/settings.php:73
msgid "Images"
msgstr "Pildid"
#: ../../../app/routes/route.dashboard.php:40
#: ../../../app/routes/route.search.php:92
#: ../../../app/routes/route.user.php:90 ../../../app/routes/route.user.php:283
#: ../../../app/themes/Peafowl/header.php:403
#: ../../../app/themes/Peafowl/views/settings.php:77
msgid "Albums"
msgstr "Albumid"
#: ../../../app/routes/route.dashboard.php:41
#: ../../../app/routes/route.dashboard.php:233
#: ../../../app/routes/route.search.php:99
msgid "Users"
msgstr "Kasutajad"
#: ../../../app/routes/route.dashboard.php:42
#: ../../../app/routes/route.settings.php:498
#: ../../../app/themes/Peafowl/header.php:363
#: ../../../app/themes/Peafowl/header.php:405
msgid "Settings"
msgstr "Seaded"
#: ../../../app/routes/route.dashboard.php:161
msgid "Chevereto version"
msgstr "Chevereto versioon"
#: ../../../app/routes/route.dashboard.php:162
msgid "install update"
msgstr "installeeri uuendus"
#: ../../../app/routes/route.dashboard.php:162
msgid "check for updates"
msgstr "kontrolli uuendusi"
msgid "Support"
msgstr "Kasutajatugi"
#: ../../../app/routes/route.dashboard.php:190
#: ../../../app/themes/Peafowl/views/dashboard.php:298
#: ../../../app/themes/Peafowl/views/dashboard.php:308
#: ../../../app/themes/Peafowl/views/dashboard.php:318
#: ../../../app/themes/Peafowl/views/dashboard.php:633
#: ../../../app/themes/Peafowl/views/dashboard.php:642
#: ../../../app/themes/Peafowl/views/dashboard.php:652
#: ../../../app/themes/Peafowl/views/dashboard.php:678
#: ../../../app/themes/Peafowl/views/dashboard.php:750
#: ../../../app/themes/Peafowl/views/dashboard.php:962
#: ../../../app/themes/Peafowl/views/dashboard.php:975
#: ../../../app/themes/Peafowl/views/dashboard.php:986
#: ../../../app/themes/Peafowl/views/dashboard.php:995
#: ../../../app/themes/Peafowl/views/dashboard.php:1024
#: ../../../app/themes/Peafowl/views/dashboard.php:1034
#: ../../../app/themes/Peafowl/views/dashboard.php:1073
#: ../../../app/themes/Peafowl/views/dashboard.php:1082
#: ../../../app/themes/Peafowl/views/dashboard.php:1091
#: ../../../app/themes/Peafowl/views/dashboard.php:1101
#: ../../../app/themes/Peafowl/views/dashboard.php:1247
#: ../../../app/themes/Peafowl/views/dashboard.php:1302
#: ../../../app/themes/Peafowl/views/dashboard.php:1312
#: ../../../app/themes/Peafowl/views/dashboard.php:1324
#: ../../../app/themes/Peafowl/views/dashboard.php:1336
#: ../../../app/themes/Peafowl/views/dashboard.php:1346
#: ../../../app/themes/Peafowl/views/dashboard.php:1356
#: ../../../app/themes/Peafowl/views/dashboard.php:1368
#: ../../../app/themes/Peafowl/views/dashboard.php:1475
#: ../../../app/themes/Peafowl/views/dashboard.php:1573
#: ../../../app/themes/Peafowl/views/dashboard.php:1582
#: ../../../app/themes/Peafowl/views/dashboard.php:1592
#: ../../../app/themes/Peafowl/views/dashboard.php:1627
#: ../../../app/themes/Peafowl/views/dashboard.php:1637
#: ../../../app/themes/Peafowl/views/dashboard.php:1835
#: ../../../app/themes/Peafowl/views/dashboard.php:1861
#: ../../../app/themes/Peafowl/views/dashboard.php:1894
#: ../../../app/themes/Peafowl/views/dashboard.php:1920
#: ../../../app/themes/Peafowl/views/dashboard.php:1946
#: ../../../app/themes/Peafowl/views/dashboard.php:1965
#: ../../../app/themes/Peafowl/views/dashboard.php:2010
#: ../../../app/themes/Peafowl/views/dashboard.php:2031
msgid "Enabled"
msgstr "Lubatud"
#: ../../../app/routes/route.dashboard.php:190
#: ../../../app/themes/Peafowl/views/dashboard.php:298
#: ../../../app/themes/Peafowl/views/dashboard.php:308
#: ../../../app/themes/Peafowl/views/dashboard.php:318
#: ../../../app/themes/Peafowl/views/dashboard.php:633
#: ../../../app/themes/Peafowl/views/dashboard.php:642
#: ../../../app/themes/Peafowl/views/dashboard.php:652
#: ../../../app/themes/Peafowl/views/dashboard.php:679
#: ../../../app/themes/Peafowl/views/dashboard.php:750
#: ../../../app/themes/Peafowl/views/dashboard.php:962
#: ../../../app/themes/Peafowl/views/dashboard.php:975
#: ../../../app/themes/Peafowl/views/dashboard.php:986
#: ../../../app/themes/Peafowl/views/dashboard.php:995
#: ../../../app/themes/Peafowl/views/dashboard.php:1024
#: ../../../app/themes/Peafowl/views/dashboard.php:1034
#: ../../../app/themes/Peafowl/views/dashboard.php:1073
#: ../../../app/themes/Peafowl/views/dashboard.php:1082
#: ../../../app/themes/Peafowl/views/dashboard.php:1091
#: ../../../app/themes/Peafowl/views/dashboard.php:1101
#: ../../../app/themes/Peafowl/views/dashboard.php:1247
#: ../../../app/themes/Peafowl/views/dashboard.php:1302
#: ../../../app/themes/Peafowl/views/dashboard.php:1312
#: ../../../app/themes/Peafowl/views/dashboard.php:1324
#: ../../../app/themes/Peafowl/views/dashboard.php:1336
#: ../../../app/themes/Peafowl/views/dashboard.php:1346
#: ../../../app/themes/Peafowl/views/dashboard.php:1356
#: ../../../app/themes/Peafowl/views/dashboard.php:1368
#: ../../../app/themes/Peafowl/views/dashboard.php:1475
#: ../../../app/themes/Peafowl/views/dashboard.php:1573
#: ../../../app/themes/Peafowl/views/dashboard.php:1582
#: ../../../app/themes/Peafowl/views/dashboard.php:1592
#: ../../../app/themes/Peafowl/views/dashboard.php:1627
#: ../../../app/themes/Peafowl/views/dashboard.php:1637
#: ../../../app/themes/Peafowl/views/dashboard.php:1835
#: ../../../app/themes/Peafowl/views/dashboard.php:1861
#: ../../../app/themes/Peafowl/views/dashboard.php:1894
#: ../../../app/themes/Peafowl/views/dashboard.php:1920
#: ../../../app/themes/Peafowl/views/dashboard.php:1946
#: ../../../app/themes/Peafowl/views/dashboard.php:1965
#: ../../../app/themes/Peafowl/views/dashboard.php:2010
#: ../../../app/themes/Peafowl/views/dashboard.php:2031
msgid "Disabled"
msgstr "Keelatud"
msgid "Max. upload file size"
msgstr "Max faili suurus"
#: ../../../app/routes/route.dashboard.php:567
msgid "Invalid timezone"
msgstr "Vale ajatsoon"
#: ../../../app/routes/route.login.php:148
#: ../../../app/themes/Peafowl/header.php:269
#: ../../../app/themes/Peafowl/header.php:275
#: ../../../app/themes/Peafowl/views/login.php:8
#: ../../../app/themes/Peafowl/views/login.php:52
msgid "Sign in"
msgstr "Logi sisse"
msgid "Upload images"
msgstr "Lae pilt ülesse"
#: ../../../app/routes/route.settings.php:62
msgid "Account"
msgstr "Konto"
#: ../../../app/routes/route.settings.php:63
msgid "Profile"
msgstr "Profiil"
#: ../../../app/routes/route.settings.php:313
msgid "Wrong password"
msgstr "Vale parool"
#: ../../../app/routes/route.settings.php:435
msgid "Password has been changed"
msgstr "Parool muudetud edukalt"
#: ../../../app/routes/route.signup.php:251
#: ../../../app/themes/Peafowl/header.php:316
#: ../../../app/themes/Peafowl/header.php:322
#: ../../../app/themes/Peafowl/views/index.php:81
#: ../../../app/themes/Peafowl/views/signup.php:8
#: ../../../app/themes/Peafowl/views/signup.php:63
msgid "Create account"
msgstr "Loo konto"
#: ../../../app/themes/Peafowl/header.php:258
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:76
msgid "Upload"
msgstr "Lae pilt..."
msgid "Discovery"
msgstr "Avasta"
#: ../../../app/themes/Peafowl/header.php:222
#: ../../../app/themes/Peafowl/header.php:226
msgid "Advanced search"
msgstr "Täpsem otsing"
#: ../../../app/themes/Peafowl/header.php:233
#: ../../../app/themes/Peafowl/views/dashboard.php:315
#: ../../../app/themes/Peafowl/views/dashboard.php:713
msgid "Random"
msgstr "Suvaline pilt"
#: ../../../app/themes/Peafowl/header.php:402
msgid "My Profile"
msgstr "Minu konto"
#: ../../../app/themes/Peafowl/header.php:409
msgid "Sign out"
msgstr "Logi välja"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:13
msgid "Drag and drop or paste images here to upload"
msgstr "Lohista fail siia või lae ülesse clipboardist"
msgid "browse from your computer"
msgstr "valida faili arvutist"
msgid "add image URLs"
msgstr "lisada läbi lingi"
msgid "You can also %i or %u."
msgstr "Sa saad %i või %u"
msgid "Edit or resize any image by clicking the image preview"
msgstr "Muuda pilti või pildi suurust vajutades pisipildile"
msgid "your computer"
msgstr "arvutist"
msgid "You can add more images from %i or %u."
msgstr "Saad lisada pilte juurde %i või %u"
msgid "sign in"
msgstr "logi sisse"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:91
msgid "close"
msgstr "sulge"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:148
#: ../../../app/themes/Peafowl/views/dashboard.php:666
msgid "Remove"
msgstr "Kustuta"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:154
msgid "Edit image"
msgstr "Muuda pilti"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:158
#: ../../../app/themes/Peafowl/snippets/form_image.php:4
#: ../../../app/themes/Peafowl/views/dashboard.php:441
#: ../../../app/themes/Peafowl/views/dashboard.php:597
#: ../../../app/themes/Peafowl/views/dashboard.php:1440
#: ../../../app/themes/Peafowl/views/settings.php:434
msgid "Title"
msgstr "Pealkiri"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:158
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:200
#: ../../../app/themes/Peafowl/snippets/form_album.php:12
#: ../../../app/themes/Peafowl/snippets/form_category_edit.php:12
#: ../../../app/themes/Peafowl/snippets/form_image.php:4
#: ../../../app/themes/Peafowl/snippets/form_image.php:28
#: ../../../app/themes/Peafowl/snippets/form_ip_ban_edit.php:9
#: ../../../app/themes/Peafowl/snippets/form_ip_ban_edit.php:15
#: ../../../app/themes/Peafowl/snippets/form_storage_edit.php:104
#: ../../../app/themes/Peafowl/snippets/form_storage_edit.php:108
#: ../../../app/themes/Peafowl/views/dashboard.php:503
#: ../../../app/themes/Peafowl/views/dashboard.php:509
#: ../../../app/themes/Peafowl/views/dashboard.php:566
#: ../../../app/themes/Peafowl/views/dashboard.php:573
#: ../../../app/themes/Peafowl/views/dashboard.php:580
#: ../../../app/themes/Peafowl/views/dashboard.php:1418
#: ../../../app/themes/Peafowl/views/dashboard.php:1428
msgid "optional"
msgstr "valikuline"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:167
msgid "Resize image"
msgstr "Pildi mõõtmed"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:176
msgid "Note: Animated GIF images won't be resized."
msgstr "Animeeritud (gif) failide pildi suurust ei saa muuta!"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:180
msgid "Auto delete image"
msgstr "Kustuta pilt automaatselt"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:200
#: ../../../app/themes/Peafowl/snippets/form_category_edit.php:12
#: ../../../app/themes/Peafowl/snippets/form_image.php:28
#: ../../../app/themes/Peafowl/views/dashboard.php:877
msgid "Description"
msgstr "Kirjeldus"
#: ../../../app/themes/Peafowl/snippets/anywhere_upload.php:201
#: ../../../app/themes/Peafowl/snippets/form_image.php:29
msgid "Brief description of this image"
msgstr "...."
#: ../../../app/themes/Peafowl/snippets/form_album.php:7
#: ../../../app/themes/Peafowl/snippets/form_album.php:8
msgid "Album name"
msgstr "Albumi nimi"
#: ../../../app/themes/Peafowl/snippets/form_album.php:21
msgid "Private (just me)"
msgstr "Privaatne(ainult minule)"
msgid "Album password"
msgstr "Albumi parool"
#: ../../../app/themes/Peafowl/snippets/form_category_edit.php:4
#: ../../../app/themes/Peafowl/snippets/form_storage_edit.php:3
#: ../../../app/themes/Peafowl/views/dashboard.php:875
#: ../../../app/themes/Peafowl/views/dashboard.php:1693
#: ../../../app/themes/Peafowl/views/settings.php:364
#: ../../../content/pages/default/contact.php:87
msgid "Name"
msgstr "Nimi"
#: ../../../app/themes/Peafowl/snippets/listing_tools_editor.php:10
msgid "Select all"
msgstr "Vali kõik"
#: ../../../app/themes/Peafowl/snippets/listing_tools_editor.php:10
#: ../../../app/themes/Peafowl/snippets/listing_tools_editor.php:56
msgid "Clear selection"
msgstr "Eemalda valik"
#: ../../../app/themes/Peafowl/snippets/listing_tools_editor.php:13
msgid "Selection"
msgstr "Valitud"
#: ../../../app/themes/Peafowl/header.php:281
#: ../../../app/themes/Peafowl/snippets/modal_login.php:11
#: ../../../app/themes/Peafowl/snippets/modal_login.php:40
#: ../../../app/themes/Peafowl/views/login.php:18
#: ../../../app/themes/Peafowl/views/login.php:65
#: ../../../app/themes/Peafowl/views/signup.php:18
#: ../../../app/themes/Peafowl/views/signup.php:76
msgid "Sign in with another account"
msgstr "Logi sisse kasutades..."
#: ../../../app/themes/Peafowl/snippets/template_content_empty.php:5
#: ../../../app/themes/Peafowl/views/dashboard.php:618
#: ../../../app/themes/Peafowl/views/index.php:63
msgid "There's nothing to show here."
msgstr "Tühjus... Pole midagi näidata!"
#: ../../../app/themes/Peafowl/snippets/user_items_editor.php:16
#: ../../../app/themes/Peafowl/views/image.php:69
#: ../../../app/themes/Peafowl/views/image.php:457
msgid "Edit image details"
msgstr "Muuda pilti"
#: ../../../app/themes/Peafowl/views/404.php:7
msgid "The requested page was not found."
msgstr "Soovitud lehekülge ei leitud!"
#: ../../../app/themes/Peafowl/views/404.php:22
msgid "The user has been deleted"
msgstr "Kasutaja kustutatud"
#: ../../../app/themes/Peafowl/views/account/password-forgot.php:52
#: ../../../app/themes/Peafowl/views/account/password-reset.php:47
#: ../../../app/themes/Peafowl/views/account/resend-activation.php:37
#: ../../../lib/Peafowl/peafowl.js:417 ../../../lib/Peafowl/peafowl.js:2324
#: ../../../lib/Peafowl/peafowl.min.js:25
#: ../../../lib/Peafowl/peafowl.min.js:140
msgid "Submit"
msgstr "Edasi"
#: ../../../app/themes/Peafowl/header.php:291
#: ../../../app/themes/Peafowl/snippets/modal_login.php:20
#: ../../../app/themes/Peafowl/views/account/password-forgot.php:38
#: ../../../app/themes/Peafowl/views/account/password-forgot.php:39
#: ../../../app/themes/Peafowl/views/account/resend-activation.php:23
#: ../../../app/themes/Peafowl/views/login.php:34
#: ../../../app/themes/Peafowl/views/login.php:35
msgid "Username or Email address"
msgstr "Kasutajanimi või e-mail"
#: ../../../app/themes/Peafowl/views/account/password-reset.php:29
#: ../../../app/themes/Peafowl/views/settings.php:306
msgid "Enter your new password"
msgstr "Sisesta uus parool"
#: ../../../app/themes/Peafowl/views/account/password-reset.php:35
#: ../../../app/themes/Peafowl/views/settings.php:312
msgid "Re-enter your new password"
msgstr "Sisesta uuesti uus parool"
#: ../../../app/themes/Peafowl/views/album.php:25
msgid "Delete album"
msgstr "Kustuta album"
#: ../../../app/themes/Peafowl/views/album.php:86
msgid "Album link"
msgstr "Albumi link"
#: ../../../app/themes/Peafowl/header.php:338
#: ../../../app/themes/Peafowl/views/account/email-needed.php:15
#: ../../../app/themes/Peafowl/views/dashboard.php:100
#: ../../../app/themes/Peafowl/views/settings.php:155
#: ../../../app/themes/Peafowl/views/signup.php:34
#: ../../../app/themes/Peafowl/views/signup.php:35
#: ../../../content/pages/default/contact.php:92
msgid "Email address"
msgstr "E-mail"
#: ../../../app/themes/Peafowl/views/dashboard.php:2044
#: ../../../app/themes/Peafowl/views/settings.php:463
#: ../../../lib/Peafowl/peafowl.js:417 ../../../lib/Peafowl/peafowl.min.js:25
msgid "Save changes"
msgstr "Salvesta"
#: ../../../app/themes/Peafowl/views/image.php:145
#, php-format
msgid "Uploaded %s"
msgstr "Üles laetud %s"
#: ../../../app/themes/Peafowl/views/image.php:157
msgid "More Exif data"
msgstr "Vaata exif andmeid"
#: ../../../app/themes/Peafowl/views/image.php:182
#: ../../../app/themes/Peafowl/views/image.php:241
msgid "Share image"
msgstr "Jaga pilti"
#: ../../../app/themes/Peafowl/views/index.php:15
msgid "Upload and share your images."
msgstr "Lae pilt ülesse ja jaga seda"
#: ../../../app/themes/Peafowl/views/index.php:17
#, php-format
msgid "Drag and drop anywhere you want and start uploading your images now. %s limit. Direct image links, BBCode and HTML thumbnails."
msgstr "Lohista oma pilt siia ja alusta üleslaadimist. Kuni %s"
#: ../../../app/themes/Peafowl/views/index.php:25
msgid "Start uploading"
msgstr "Lae pilt..."
#: ../../../app/routes/route.logout.php:29
#: ../../../app/themes/Peafowl/views/logout.php:8
msgid "Logged out"
msgstr "Välja logitud"
#: ../../../app/themes/Peafowl/views/account/awaiting-confirmation.php:10
#: ../../../app/themes/Peafowl/views/account/email-changed.php:11
#: ../../../app/themes/Peafowl/views/account/password-forgot.php:16
#: ../../../app/themes/Peafowl/views/account/password-forgot.php:26
#: ../../../app/themes/Peafowl/views/account/password-reset.php:16
#: ../../../app/themes/Peafowl/views/account/resend-activation.php:13
#: ../../../app/themes/Peafowl/views/logout.php:13
#: ../../../app/themes/Peafowl/views/request-denied.php:13
msgid "Go to homepage"
msgstr "Mine esilehele"
#: ../../../app/themes/Peafowl/views/settings.php:245
msgid "Timezone"
msgstr "Ajatsoon"
#: ../../../app/themes/Peafowl/views/settings.php:296
msgid "Current password"
msgstr "Praegune parool"
#: ../../../app/themes/Peafowl/views/settings.php:297
msgid "Enter your current password"
msgstr "Sisesta praegune parool"
#: ../../../app/themes/Peafowl/views/settings.php:352
#: ../../../app/themes/Peafowl/views/user.php:21
msgid "Upload new image"
msgstr "Lae pilt"
msgid "If you want to send a message fill the form below."
msgstr "Kirjuta meile."

2813
app/languages/fa.po Normal file

File diff suppressed because it is too large Load Diff

5354
app/languages/fi.po Normal file

File diff suppressed because it is too large Load Diff

5040
app/languages/fr.po Normal file

File diff suppressed because it is too large Load Diff

3562
app/languages/he.po Normal file

File diff suppressed because it is too large Load Diff

2112
app/languages/hr.po Normal file

File diff suppressed because it is too large Load Diff

4528
app/languages/hu.po Normal file

File diff suppressed because it is too large Load Diff

4865
app/languages/id.po Normal file

File diff suppressed because it is too large Load Diff

5313
app/languages/it.po Normal file

File diff suppressed because it is too large Load Diff

5424
app/languages/ja.po Normal file

File diff suppressed because it is too large Load Diff

5388
app/languages/ko.po Normal file

File diff suppressed because it is too large Load Diff

2068
app/languages/lt-LT.po Normal file

File diff suppressed because it is too large Load Diff

5245
app/languages/nb.po Normal file

File diff suppressed because it is too large Load Diff

5313
app/languages/nl.po Normal file

File diff suppressed because it is too large Load Diff

3595
app/languages/pl.po Normal file

File diff suppressed because it is too large Load Diff

4974
app/languages/pt-BR.po Normal file

File diff suppressed because it is too large Load Diff

3361
app/languages/pt.po Normal file

File diff suppressed because it is too large Load Diff

5302
app/languages/ru.po Normal file

File diff suppressed because it is too large Load Diff

4038
app/languages/sk.po Normal file

File diff suppressed because it is too large Load Diff

2856
app/languages/sr-RS.po Normal file

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