mirror of
https://github.com/LinkStackOrg/LinkStack.git
synced 2025-03-09 16:10:12 +01:00
Merge pull request #468 from LinkStackOrg/translation
Made translation possible
This commit is contained in:
commit
37cfe4a915
2
.env
2
.env
@ -1,3 +1,5 @@
|
||||
LOCALE=en
|
||||
|
||||
#Email verification=Changes if users have to verify their email after registration.
|
||||
#=REGISTER_AUTH either auth or verified. If auth is selected, no verification is required. Default is verified.
|
||||
REGISTER_AUTH=auth
|
||||
|
358
app/Console/Commands/Translate.php
Normal file
358
app/Console/Commands/Translate.php
Normal file
@ -0,0 +1,358 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use JsonException;
|
||||
use Throwable;
|
||||
|
||||
interface TokenProviderInterface
|
||||
{
|
||||
|
||||
public function generateToken(string $source, string $target, string $text): string;
|
||||
}
|
||||
|
||||
class GoogleTokenGenerator implements TokenProviderInterface
|
||||
{
|
||||
|
||||
public function generateToken(string $source, string $target, string $text): string
|
||||
{
|
||||
$tkk = ['406398', 2087938574];
|
||||
|
||||
for ($d = [], $e = 0, $f = 0; $f < $this->length($text); $f++) {
|
||||
$g = $this->charCodeAt($text, $f);
|
||||
if ($g < 128) {
|
||||
$d[$e++] = $g;
|
||||
} else {
|
||||
if ($g < 2048) {
|
||||
$d[$e++] = $g >> 6 | 192;
|
||||
} else {
|
||||
if ($g & 64512 === 55296 && $f + 1 < $this->length($text) && ($this->charCodeAt($text, $f + 1) & 64512) === 56320) {
|
||||
$g = 65536 + (($g & 1023) << 10) + ($this->charCodeAt($text, ++$f) & 1023);
|
||||
$d[$e++] = $g >> 18 | 240;
|
||||
$d[$e++] = $g >> 12 & 63 | 128;
|
||||
} else {
|
||||
$d[$e++] = $g >> 12 | 224;
|
||||
}
|
||||
$d[$e++] = $g >> 6 & 63 | 128;
|
||||
}
|
||||
$d[$e++] = $g & 63 | 128;
|
||||
}
|
||||
}
|
||||
|
||||
$a = $tkk[0];
|
||||
foreach ($d as $value) {
|
||||
$a += $value;
|
||||
$a = $this->rl($a, '+-a^+6');
|
||||
}
|
||||
$a = $this->rl($a, '+-3^+b+-f');
|
||||
$a ^= $tkk[1];
|
||||
if ($a < 0) {
|
||||
$a = ($a & 2147483647) + 2147483648;
|
||||
}
|
||||
$a = fmod($a, 1000000);
|
||||
|
||||
return $a . '.' . ($a ^ $tkk[0]);
|
||||
}
|
||||
|
||||
private function rl(int $a, string $b): int
|
||||
{
|
||||
for ($c = 0; $c < strlen($b) - 2; $c += 3) {
|
||||
$d = $b[$c + 2];
|
||||
$d = $d >= 'a' ? ord($d[0]) - 87 : (int) $d;
|
||||
$d = $b[$c + 1] === '+' ? $this->unsignedRightShift($a, $d) : $a << $d;
|
||||
$a = $b[$c] === '+' ? ($a + $d & 4294967295) : $a ^ $d;
|
||||
}
|
||||
|
||||
return $a;
|
||||
}
|
||||
|
||||
private function unsignedRightShift(int $a, int $b): int
|
||||
{
|
||||
if ($b >= 32 || $b < -32) {
|
||||
$m = (int) ($b / 32);
|
||||
$b -= ($m * 32);
|
||||
}
|
||||
|
||||
if ($b < 0) {
|
||||
$b += 32;
|
||||
}
|
||||
|
||||
if ($b === 0) {
|
||||
return (($a >> 1) & 0x7fffffff) * 2 + (($a >> $b) & 1);
|
||||
}
|
||||
|
||||
if ($a < 0) {
|
||||
$a >>= 1;
|
||||
$a &= 2147483647;
|
||||
$a |= 0x40000000;
|
||||
$a >>= ($b - 1);
|
||||
} else {
|
||||
$a >>= $b;
|
||||
}
|
||||
|
||||
return $a;
|
||||
}
|
||||
|
||||
private function charCodeAt(string $string, int $index): int
|
||||
{
|
||||
return mb_ord(mb_substr($string, $index, 1));
|
||||
}
|
||||
|
||||
private function length(string $string): int
|
||||
{
|
||||
return mb_strlen($string);
|
||||
}
|
||||
}
|
||||
|
||||
class GoogleTranslate
|
||||
{
|
||||
|
||||
protected Client $client;
|
||||
|
||||
protected ?string $source;
|
||||
|
||||
protected ?string $target;
|
||||
|
||||
protected ?string $lastDetectedSource;
|
||||
|
||||
protected string $url = 'https://translate.google.com/translate_a/single';
|
||||
|
||||
protected array $options = [];
|
||||
|
||||
protected array $urlParams = [
|
||||
'client' => 'gtx',
|
||||
'hl' => 'en',
|
||||
'dt' => [
|
||||
't',
|
||||
'bd',
|
||||
'at',
|
||||
'ex',
|
||||
'ld',
|
||||
'md',
|
||||
'qca',
|
||||
'rw',
|
||||
'rm',
|
||||
'ss'
|
||||
],
|
||||
'sl' => null,
|
||||
'tl' => null,
|
||||
'q' => null,
|
||||
'ie' => 'UTF-8',
|
||||
'oe' => 'UTF-8',
|
||||
'multires' => 1,
|
||||
'otf' => 0,
|
||||
'pc' => 1,
|
||||
'trs' => 1,
|
||||
'ssel' => 0,
|
||||
'tsel' => 0,
|
||||
'kc' => 1,
|
||||
'tk' => null,
|
||||
];
|
||||
|
||||
protected array $resultRegexes = [
|
||||
'/,+/' => ',',
|
||||
'/\[,/' => '[',
|
||||
];
|
||||
|
||||
protected TokenProviderInterface $tokenProvider;
|
||||
|
||||
public function __construct(string $target = 'en', string $source = null, array $options = [], TokenProviderInterface $tokenProvider = null)
|
||||
{
|
||||
$this->client = new Client();
|
||||
$this->setTokenProvider($tokenProvider ?? new GoogleTokenGenerator)
|
||||
->setOptions($options)
|
||||
->setSource($source)
|
||||
->setTarget($target);
|
||||
}
|
||||
|
||||
public function setTarget(string $target): self
|
||||
{
|
||||
$this->target = $target;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setSource(string $source = null): self
|
||||
{
|
||||
$this->source = $source ?? 'auto';
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setUrl(string $url): self
|
||||
{
|
||||
$this->url = $url;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setClient(string $client): self
|
||||
{
|
||||
$this->urlParams['client'] = $client;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setOptions(array $options = []): self
|
||||
{
|
||||
$this->options = $options;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setTokenProvider(TokenProviderInterface $tokenProvider): self
|
||||
{
|
||||
$this->tokenProvider = $tokenProvider;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getLastDetectedSource(): ?string
|
||||
{
|
||||
return $this->lastDetectedSource;
|
||||
}
|
||||
|
||||
public static function trans(string $string, string $target = 'en', string $source = null, array $options = [], TokenProviderInterface $tokenProvider = null): ?string
|
||||
{
|
||||
return (new self)
|
||||
->setTokenProvider($tokenProvider ?? new GoogleTokenGenerator)
|
||||
->setOptions($options)
|
||||
->setSource($source)
|
||||
->setTarget($target)
|
||||
->translate($string);
|
||||
}
|
||||
|
||||
public function translate(string $string): ?string
|
||||
{
|
||||
|
||||
if ($this->source === $this->target) {
|
||||
return $string;
|
||||
}
|
||||
|
||||
$responseArray = $this->getResponse($string);
|
||||
|
||||
if (empty($responseArray[0])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$detectedLanguages = [];
|
||||
|
||||
foreach ($responseArray as $item) {
|
||||
if (is_string($item)) {
|
||||
$detectedLanguages[] = $item;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($responseArray[count($responseArray) - 2][0][0])) {
|
||||
$detectedLanguages[] = $responseArray[count($responseArray) - 2][0][0];
|
||||
}
|
||||
|
||||
$this->lastDetectedSource = null;
|
||||
|
||||
foreach ($detectedLanguages as $lang) {
|
||||
if ($this->isValidLocale($lang)) {
|
||||
$this->lastDetectedSource = $lang;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (is_string($responseArray)) {
|
||||
return $responseArray;
|
||||
}
|
||||
|
||||
if (is_array($responseArray[0])) {
|
||||
return (string) array_reduce($responseArray[0], static function ($carry, $item) {
|
||||
$carry .= $item[0];
|
||||
return $carry;
|
||||
});
|
||||
}
|
||||
|
||||
return (string) $responseArray[0];
|
||||
}
|
||||
|
||||
public function getResponse(string $string): array
|
||||
{
|
||||
$queryArray = array_merge($this->urlParams, [
|
||||
'sl' => $this->source,
|
||||
'tl' => $this->target,
|
||||
'tk' => $this->tokenProvider->generateToken($this->source, $this->target, $string),
|
||||
'q' => $string
|
||||
]);
|
||||
|
||||
$queryUrl = preg_replace('/%5B\d+%5D=/', '=', http_build_query($queryArray));
|
||||
|
||||
try {
|
||||
$response = $this->client->get($this->url, [
|
||||
'query' => $queryUrl,
|
||||
] + $this->options);
|
||||
} catch (GuzzleException $e) {
|
||||
match ($e->getCode()) {
|
||||
429, 503 => throw new RateLimitException($e->getMessage(), $e->getCode()),
|
||||
413 => throw new LargeTextException($e->getMessage(), $e->getCode()),
|
||||
default => throw new TranslationRequestException($e->getMessage(), $e->getCode()),
|
||||
};
|
||||
} catch (Throwable $e) {
|
||||
throw new TranslationRequestException($e->getMessage(), $e->getCode());
|
||||
}
|
||||
|
||||
$body = $response->getBody();
|
||||
|
||||
$bodyJson = preg_replace(array_keys($this->resultRegexes), array_values($this->resultRegexes), $body);
|
||||
|
||||
try {
|
||||
$bodyArray = json_decode($bodyJson, true, flags: JSON_THROW_ON_ERROR);
|
||||
} catch (JsonException) {
|
||||
throw new TranslationDecodingException('Data cannot be decoded or it is deeper than the recursion limit');
|
||||
}
|
||||
|
||||
return $bodyArray;
|
||||
}
|
||||
|
||||
protected function isValidLocale(string $lang): bool
|
||||
{
|
||||
return (bool) preg_match('/^([a-z]{2,3})(-[A-Za-z]{2,4})?$/', $lang);
|
||||
}
|
||||
}
|
||||
|
||||
class Translate extends Command
|
||||
{
|
||||
protected $signature = 'translate';
|
||||
|
||||
protected $description = 'Translate language files';
|
||||
|
||||
public function handle()
|
||||
{
|
||||
$locales = config('app.supported_locales');
|
||||
$sourceLocale = 'en';
|
||||
|
||||
foreach ($locales as $locale) {
|
||||
$langPath = resource_path("lang/{$locale}");
|
||||
if (!File::exists($langPath)) {
|
||||
File::makeDirectory($langPath, 0755, true);
|
||||
}
|
||||
}
|
||||
|
||||
$sourceFile = resource_path("lang/{$sourceLocale}/messages.php");
|
||||
$sourceTranslations = require($sourceFile);
|
||||
|
||||
foreach ($locales as $locale) {
|
||||
$targetFile = resource_path("lang/{$locale}/messages.php");
|
||||
$targetTranslations = File::exists($targetFile) ? require($targetFile) : [];
|
||||
|
||||
$tr = new GoogleTranslate();
|
||||
$tr->setSource($sourceLocale);
|
||||
$tr->setTarget($locale);
|
||||
|
||||
foreach ($sourceTranslations as $key => $value) {
|
||||
if (!array_key_exists($key, $targetTranslations)) {
|
||||
$translatedValue = $tr->translate($value);
|
||||
$targetTranslations[$key] = $translatedValue;
|
||||
}
|
||||
}
|
||||
|
||||
$content = '<?php' . PHP_EOL . PHP_EOL;
|
||||
$content .= 'return ' . var_export($targetTranslations, true) . ';' . PHP_EOL;
|
||||
|
||||
file_put_contents($targetFile, $content);
|
||||
|
||||
$this->info("Translations for '{$locale}' created successfully.");
|
||||
}
|
||||
}
|
||||
}
|
@ -156,4 +156,17 @@ class InstallerController extends Controller
|
||||
return redirect(url(''));
|
||||
}
|
||||
|
||||
public function editConfigInstaller(request $request)
|
||||
{
|
||||
|
||||
$type = $request->type;
|
||||
$entry = $request->entry;
|
||||
$value = $request->value;
|
||||
$value = '"' . $request->value . '"';
|
||||
|
||||
if(EnvEditor::keyExists($entry)){EnvEditor::editKey($entry, $value);}
|
||||
|
||||
return Redirect(url(''));
|
||||
}
|
||||
|
||||
}
|
||||
|
189
composer.lock
generated
189
composer.lock
generated
@ -727,25 +727,29 @@
|
||||
},
|
||||
{
|
||||
"name": "doctrine/deprecations",
|
||||
"version": "v1.1.0",
|
||||
"version": "v1.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/doctrine/deprecations.git",
|
||||
"reference": "8cffffb2218e01f3b370bf763e00e81697725259"
|
||||
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/8cffffb2218e01f3b370bf763e00e81697725259",
|
||||
"reference": "8cffffb2218e01f3b370bf763e00e81697725259",
|
||||
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
|
||||
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1|^8.0"
|
||||
"php": "^7.1 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/coding-standard": "^9",
|
||||
"phpunit/phpunit": "^7.5|^8.5|^9.5",
|
||||
"psr/log": "^1|^2|^3"
|
||||
"phpstan/phpstan": "1.4.10 || 1.10.15",
|
||||
"phpstan/phpstan-phpunit": "^1.0",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
||||
"psalm/plugin-phpunit": "0.18.4",
|
||||
"psr/log": "^1 || ^2 || ^3",
|
||||
"vimeo/psalm": "4.30.0 || 5.12.0"
|
||||
},
|
||||
"suggest": {
|
||||
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
|
||||
@ -764,9 +768,9 @@
|
||||
"homepage": "https://www.doctrine-project.org/",
|
||||
"support": {
|
||||
"issues": "https://github.com/doctrine/deprecations/issues",
|
||||
"source": "https://github.com/doctrine/deprecations/tree/v1.1.0"
|
||||
"source": "https://github.com/doctrine/deprecations/tree/v1.1.1"
|
||||
},
|
||||
"time": "2023-05-29T18:55:17+00:00"
|
||||
"time": "2023-06-03T09:27:29+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/event-manager",
|
||||
@ -1092,16 +1096,16 @@
|
||||
},
|
||||
{
|
||||
"name": "egulias/email-validator",
|
||||
"version": "3.2.5",
|
||||
"version": "3.2.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/egulias/EmailValidator.git",
|
||||
"reference": "b531a2311709443320c786feb4519cfaf94af796"
|
||||
"reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b531a2311709443320c786feb4519cfaf94af796",
|
||||
"reference": "b531a2311709443320c786feb4519cfaf94af796",
|
||||
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7",
|
||||
"reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1147,7 +1151,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/egulias/EmailValidator/issues",
|
||||
"source": "https://github.com/egulias/EmailValidator/tree/3.2.5"
|
||||
"source": "https://github.com/egulias/EmailValidator/tree/3.2.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1155,7 +1159,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-01-02T17:26:14+00:00"
|
||||
"time": "2023-06-01T07:04:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "fideloper/proxy",
|
||||
@ -3313,16 +3317,16 @@
|
||||
},
|
||||
{
|
||||
"name": "nikic/php-parser",
|
||||
"version": "v4.15.4",
|
||||
"version": "v4.15.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||
"reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290"
|
||||
"reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290",
|
||||
"reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e",
|
||||
"reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3363,9 +3367,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4"
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5"
|
||||
},
|
||||
"time": "2023-03-05T19:49:14+00:00"
|
||||
"time": "2023-05-19T20:20:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nunomaduro/termwind",
|
||||
@ -3530,22 +3534,22 @@
|
||||
},
|
||||
{
|
||||
"name": "phpstan/extension-installer",
|
||||
"version": "1.3.0",
|
||||
"version": "1.3.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/extension-installer.git",
|
||||
"reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a"
|
||||
"reference": "f45734bfb9984c6c56c4486b71230355f066a58a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f5e02d40f277d28513001976f444d9ff1dc15e9a",
|
||||
"reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a",
|
||||
"url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a",
|
||||
"reference": "f45734bfb9984c6c56c4486b71230355f066a58a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer-plugin-api": "^2.0",
|
||||
"php": "^7.2 || ^8.0",
|
||||
"phpstan/phpstan": "^1.8.0"
|
||||
"phpstan/phpstan": "^1.9.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"composer/composer": "^2.0",
|
||||
@ -3554,12 +3558,7 @@
|
||||
},
|
||||
"type": "composer-plugin",
|
||||
"extra": {
|
||||
"class": "PHPStan\\ExtensionInstaller\\Plugin",
|
||||
"phpstan/extension-installer": {
|
||||
"ignore": [
|
||||
"phpstan/phpstan-phpunit"
|
||||
]
|
||||
}
|
||||
"class": "PHPStan\\ExtensionInstaller\\Plugin"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
@ -3573,22 +3572,22 @@
|
||||
"description": "Composer plugin for automatic installation of PHPStan extensions",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/extension-installer/issues",
|
||||
"source": "https://github.com/phpstan/extension-installer/tree/1.3.0"
|
||||
"source": "https://github.com/phpstan/extension-installer/tree/1.3.1"
|
||||
},
|
||||
"time": "2023-04-18T13:08:02+00:00"
|
||||
"time": "2023-05-24T08:59:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpstan",
|
||||
"version": "1.10.14",
|
||||
"version": "1.10.15",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpstan.git",
|
||||
"reference": "d232901b09e67538e5c86a724be841bea5768a7c"
|
||||
"reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/d232901b09e67538e5c86a724be841bea5768a7c",
|
||||
"reference": "d232901b09e67538e5c86a724be841bea5768a7c",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/762c4dac4da6f8756eebb80e528c3a47855da9bd",
|
||||
"reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3637,20 +3636,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-04-19T13:47:27+00:00"
|
||||
"time": "2023-05-09T15:28:01+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpstan-phpunit",
|
||||
"version": "1.3.11",
|
||||
"version": "1.3.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpstan-phpunit.git",
|
||||
"reference": "9e1b9de6d260461f6e99b6a8f2dbb0bbb98b579c"
|
||||
"reference": "d8bdab0218c5eb0964338d24a8511b65e9c94fa5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/9e1b9de6d260461f6e99b6a8f2dbb0bbb98b579c",
|
||||
"reference": "9e1b9de6d260461f6e99b6a8f2dbb0bbb98b579c",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/d8bdab0218c5eb0964338d24a8511b65e9c94fa5",
|
||||
"reference": "d8bdab0218c5eb0964338d24a8511b65e9c94fa5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -3687,9 +3686,9 @@
|
||||
"description": "PHPUnit extensions and rules for PHPStan",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpstan-phpunit/issues",
|
||||
"source": "https://github.com/phpstan/phpstan-phpunit/tree/1.3.11"
|
||||
"source": "https://github.com/phpstan/phpstan-phpunit/tree/1.3.13"
|
||||
},
|
||||
"time": "2023-03-25T19:42:13+00:00"
|
||||
"time": "2023-05-26T11:05:59+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/cache",
|
||||
@ -4106,16 +4105,16 @@
|
||||
},
|
||||
{
|
||||
"name": "psy/psysh",
|
||||
"version": "v0.11.15",
|
||||
"version": "v0.11.18",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/bobthecow/psysh.git",
|
||||
"reference": "5350ce0ec8ecf2c5b5cf554cd2496f97b444af85"
|
||||
"reference": "4f00ee9e236fa6a48f4560d1300b9c961a70a7ec"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/5350ce0ec8ecf2c5b5cf554cd2496f97b444af85",
|
||||
"reference": "5350ce0ec8ecf2c5b5cf554cd2496f97b444af85",
|
||||
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/4f00ee9e236fa6a48f4560d1300b9c961a70a7ec",
|
||||
"reference": "4f00ee9e236fa6a48f4560d1300b9c961a70a7ec",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -4176,9 +4175,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/bobthecow/psysh/issues",
|
||||
"source": "https://github.com/bobthecow/psysh/tree/v0.11.15"
|
||||
"source": "https://github.com/bobthecow/psysh/tree/v0.11.18"
|
||||
},
|
||||
"time": "2023-04-07T21:57:09+00:00"
|
||||
"time": "2023-05-23T02:31:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ralouphie/getallheaders",
|
||||
@ -4408,16 +4407,16 @@
|
||||
},
|
||||
{
|
||||
"name": "spatie/db-dumper",
|
||||
"version": "3.3.0",
|
||||
"version": "3.3.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/db-dumper.git",
|
||||
"reference": "129b8254b2c9f10881a754a692bd9507b09a1893"
|
||||
"reference": "3b9fd47899bf6a59d3452392121c9ce675d55d34"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/db-dumper/zipball/129b8254b2c9f10881a754a692bd9507b09a1893",
|
||||
"reference": "129b8254b2c9f10881a754a692bd9507b09a1893",
|
||||
"url": "https://api.github.com/repos/spatie/db-dumper/zipball/3b9fd47899bf6a59d3452392121c9ce675d55d34",
|
||||
"reference": "3b9fd47899bf6a59d3452392121c9ce675d55d34",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -4425,7 +4424,7 @@
|
||||
"symfony/process": "^5.0|^6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.5"
|
||||
"pestphp/pest": "^1.22"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -4455,7 +4454,7 @@
|
||||
"spatie"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/spatie/db-dumper/tree/3.3.0"
|
||||
"source": "https://github.com/spatie/db-dumper/tree/3.3.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4467,7 +4466,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2022-09-01T20:20:26+00:00"
|
||||
"time": "2023-05-02T11:05:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/laravel-backup",
|
||||
@ -4566,16 +4565,16 @@
|
||||
},
|
||||
{
|
||||
"name": "spatie/laravel-package-tools",
|
||||
"version": "1.14.3",
|
||||
"version": "1.15.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/laravel-package-tools.git",
|
||||
"reference": "42737fa494578e539eeba59c27a6e23ea8ddda4d"
|
||||
"reference": "efab1844b8826443135201c4443690f032c3d533"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/42737fa494578e539eeba59c27a6e23ea8ddda4d",
|
||||
"reference": "42737fa494578e539eeba59c27a6e23ea8ddda4d",
|
||||
"url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/efab1844b8826443135201c4443690f032c3d533",
|
||||
"reference": "efab1844b8826443135201c4443690f032c3d533",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -4614,7 +4613,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/spatie/laravel-package-tools/issues",
|
||||
"source": "https://github.com/spatie/laravel-package-tools/tree/1.14.3"
|
||||
"source": "https://github.com/spatie/laravel-package-tools/tree/1.15.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4622,7 +4621,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-04-25T14:17:59+00:00"
|
||||
"time": "2023-04-27T08:09:01+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/laravel-referer",
|
||||
@ -4771,16 +4770,16 @@
|
||||
},
|
||||
{
|
||||
"name": "spatie/temporary-directory",
|
||||
"version": "2.1.1",
|
||||
"version": "2.1.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/temporary-directory.git",
|
||||
"reference": "e2818d871783d520b319c2d38dc37c10ecdcde20"
|
||||
"reference": "0c804873f6b4042aa8836839dca683c7d0f71831"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/temporary-directory/zipball/e2818d871783d520b319c2d38dc37c10ecdcde20",
|
||||
"reference": "e2818d871783d520b319c2d38dc37c10ecdcde20",
|
||||
"url": "https://api.github.com/repos/spatie/temporary-directory/zipball/0c804873f6b4042aa8836839dca683c7d0f71831",
|
||||
"reference": "0c804873f6b4042aa8836839dca683c7d0f71831",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -4816,7 +4815,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/spatie/temporary-directory/issues",
|
||||
"source": "https://github.com/spatie/temporary-directory/tree/2.1.1"
|
||||
"source": "https://github.com/spatie/temporary-directory/tree/2.1.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4828,7 +4827,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2022-08-23T07:15:15+00:00"
|
||||
"time": "2023-04-28T07:47:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
@ -5353,16 +5352,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-client",
|
||||
"version": "v5.4.22",
|
||||
"version": "v5.4.24",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-client.git",
|
||||
"reference": "4cd1b7e7ee846c8b22cb47cbc435344af9b2a8bf"
|
||||
"reference": "9e89ac4c9dfe29f4ed2b10a36e62720286632ad6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-client/zipball/4cd1b7e7ee846c8b22cb47cbc435344af9b2a8bf",
|
||||
"reference": "4cd1b7e7ee846c8b22cb47cbc435344af9b2a8bf",
|
||||
"url": "https://api.github.com/repos/symfony/http-client/zipball/9e89ac4c9dfe29f4ed2b10a36e62720286632ad6",
|
||||
"reference": "9e89ac4c9dfe29f4ed2b10a36e62720286632ad6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -5388,6 +5387,7 @@
|
||||
"guzzlehttp/promises": "^1.4",
|
||||
"nyholm/psr7": "^1.0",
|
||||
"php-http/httplug": "^1.0|^2.0",
|
||||
"php-http/message-factory": "^1.0",
|
||||
"psr/http-client": "^1.0",
|
||||
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-kernel": "^4.4.13|^5.1.5|^6.0",
|
||||
@ -5423,7 +5423,7 @@
|
||||
"http"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-client/tree/v5.4.22"
|
||||
"source": "https://github.com/symfony/http-client/tree/v5.4.24"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5439,7 +5439,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-24T15:16:26+00:00"
|
||||
"time": "2023-05-07T13:11:28+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-client-contracts",
|
||||
@ -8738,16 +8738,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/type-resolver",
|
||||
"version": "1.7.1",
|
||||
"version": "1.7.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
||||
"reference": "dfc078e8af9c99210337325ff5aa152872c98714"
|
||||
"reference": "b2fe4d22a5426f38e014855322200b97b5362c0d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/dfc078e8af9c99210337325ff5aa152872c98714",
|
||||
"reference": "dfc078e8af9c99210337325ff5aa152872c98714",
|
||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d",
|
||||
"reference": "b2fe4d22a5426f38e014855322200b97b5362c0d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -8790,28 +8790,29 @@
|
||||
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
|
||||
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.1"
|
||||
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2"
|
||||
},
|
||||
"time": "2023-03-27T19:02:04+00:00"
|
||||
"time": "2023-05-30T18:13:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpdoc-parser",
|
||||
"version": "1.21.3",
|
||||
"version": "1.22.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||
"reference": "b0c366dd2cea79407d635839d25423ba07c55dd6"
|
||||
"reference": "ec58baf7b3c7f1c81b3b00617c953249fb8cf30c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/b0c366dd2cea79407d635839d25423ba07c55dd6",
|
||||
"reference": "b0c366dd2cea79407d635839d25423ba07c55dd6",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ec58baf7b3c7f1c81b3b00617c953249fb8cf30c",
|
||||
"reference": "ec58baf7b3c7f1c81b3b00617c953249fb8cf30c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^2.0",
|
||||
"nikic/php-parser": "^4.15",
|
||||
"php-parallel-lint/php-parallel-lint": "^1.2",
|
||||
"phpstan/extension-installer": "^1.0",
|
||||
@ -8836,9 +8837,9 @@
|
||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.21.3"
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.22.0"
|
||||
},
|
||||
"time": "2023-05-29T19:31:28+00:00"
|
||||
"time": "2023-06-01T12:35:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
@ -10358,16 +10359,16 @@
|
||||
},
|
||||
{
|
||||
"name": "spatie/ignition",
|
||||
"version": "1.5.0",
|
||||
"version": "1.8.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/ignition.git",
|
||||
"reference": "4db9c9626e4d7745efbe0b512157326190b41b65"
|
||||
"reference": "ad13a6792992411e05d3d3b293e26bdf9f9a7321"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/ignition/zipball/4db9c9626e4d7745efbe0b512157326190b41b65",
|
||||
"reference": "4db9c9626e4d7745efbe0b512157326190b41b65",
|
||||
"url": "https://api.github.com/repos/spatie/ignition/zipball/ad13a6792992411e05d3d3b293e26bdf9f9a7321",
|
||||
"reference": "ad13a6792992411e05d3d3b293e26bdf9f9a7321",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -10398,7 +10399,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.4.x-dev"
|
||||
"dev-main": "1.5.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -10437,7 +10438,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-04-12T09:07:50+00:00"
|
||||
"time": "2023-05-25T10:19:32+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/laravel-ignition",
|
||||
|
@ -1,7 +1,26 @@
|
||||
<?php
|
||||
|
||||
function locales($key, $default)
|
||||
{
|
||||
$value = env($key, $default);
|
||||
$array = explode(',', $value);
|
||||
$trimmedArray = array_map('trim', $array);
|
||||
return $trimmedArray;
|
||||
}
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Officially supported languages
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Officially supported languages moderated by volunteer translators.
|
||||
|
|
||||
*/
|
||||
|
||||
'supported_locales' => locales('LOCALES', 'de, es, pt, zh, ms'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Application Name
|
||||
@ -80,7 +99,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'locale' => 'en',
|
||||
'locale' => env('LOCALE', 'en'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
1082
resources/lang/en/messages.php
Normal file
1082
resources/lang/en/messages.php
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'رسالة استثناء: :message',
|
||||
'exception_trace' => 'تتبع الإستثناء: :trace',
|
||||
'exception_message_title' => 'رسالة استثناء',
|
||||
'exception_trace_title' => 'تتبع الإستثناء',
|
||||
|
||||
'backup_failed_subject' => 'أخفق النسخ الاحتياطي لل :application_name',
|
||||
'backup_failed_body' => 'مهم: حدث خطأ أثناء النسخ الاحتياطي :application_name',
|
||||
|
||||
'backup_successful_subject' => 'نسخ احتياطي جديد ناجح ل :application_name',
|
||||
'backup_successful_subject_title' => 'نجاح النسخ الاحتياطي الجديد!',
|
||||
'backup_successful_body' => 'أخبار عظيمة، نسخة احتياطية جديدة ل :application_name تم إنشاؤها بنجاح على القرص المسمى :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'فشل تنظيف النسخ الاحتياطي للتطبيق :application_name .',
|
||||
'cleanup_failed_body' => 'حدث خطأ أثناء تنظيف النسخ الاحتياطية ل :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'تنظيف النسخ الاحتياطية ل :application_name تمت بنجاح',
|
||||
'cleanup_successful_subject_title' => 'تنظيف النسخ الاحتياطية تم بنجاح!',
|
||||
'cleanup_successful_body' => 'تنظيف النسخ الاحتياطية ل :application_name على القرص المسمى :disk_name تم بنجاح.',
|
||||
|
||||
'healthy_backup_found_subject' => 'النسخ الاحتياطية ل :application_name على القرص :disk_name صحية',
|
||||
'healthy_backup_found_subject_title' => 'النسخ الاحتياطية ل :application_name صحية',
|
||||
'healthy_backup_found_body' => 'تعتبر النسخ الاحتياطية ل :application_name صحية. عمل جيد!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'مهم: النسخ الاحتياطية ل :application_name غير صحية',
|
||||
'unhealthy_backup_found_subject_title' => 'مهم: النسخ الاحتياطية ل :application_name غير صحية. :problem',
|
||||
'unhealthy_backup_found_body' => 'النسخ الاحتياطية ل :application_name على القرص :disk_name غير صحية.',
|
||||
'unhealthy_backup_found_not_reachable' => 'لا يمكن الوصول إلى وجهة النسخ الاحتياطي. :error',
|
||||
'unhealthy_backup_found_empty' => 'لا توجد نسخ احتياطية لهذا التطبيق على الإطلاق.',
|
||||
'unhealthy_backup_found_old' => 'تم إنشاء أحدث النسخ الاحتياطية في :date وتعتبر قديمة جدا.',
|
||||
'unhealthy_backup_found_unknown' => 'عذرا، لا يمكن تحديد سبب دقيق.',
|
||||
'unhealthy_backup_found_full' => 'النسخ الاحتياطية تستخدم الكثير من التخزين. الاستخدام الحالي هو :disk_usage وهو أعلى من الحد المسموح به من :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Zpráva výjimky: :message',
|
||||
'exception_trace' => 'Stopa výjimky: :trace',
|
||||
'exception_message_title' => 'Zpráva výjimky',
|
||||
'exception_trace_title' => 'Stopa výjimky',
|
||||
|
||||
'backup_failed_subject' => 'Záloha :application_name neuspěla',
|
||||
'backup_failed_body' => 'Důležité: Při záloze :application_name se vyskytla chyba',
|
||||
|
||||
'backup_successful_subject' => 'Úspěšná nová záloha :application_name',
|
||||
'backup_successful_subject_title' => 'Úspěšná nová záloha!',
|
||||
'backup_successful_body' => 'Dobrá zpráva, na disku jménem :disk_name byla úspěšně vytvořena nová záloha :application_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Vyčištění záloh :application_name neuspělo.',
|
||||
'cleanup_failed_body' => 'Při vyčištění záloh :application_name se vyskytla chyba',
|
||||
|
||||
'cleanup_successful_subject' => 'Vyčištění záloh :application_name úspěšné',
|
||||
'cleanup_successful_subject_title' => 'Vyčištění záloh bylo úspěšné!',
|
||||
'cleanup_successful_body' => 'Vyčištění záloh :application_name na disku jménem :disk_name bylo úspěšné.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Zálohy pro :application_name na disku :disk_name jsou zdravé',
|
||||
'healthy_backup_found_subject_title' => 'Zálohy pro :application_name jsou zdravé',
|
||||
'healthy_backup_found_body' => 'Zálohy pro :application_name jsou považovány za zdravé. Dobrá práce!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Důležité: Zálohy pro :application_name jsou nezdravé',
|
||||
'unhealthy_backup_found_subject_title' => 'Důležité: Zálohy pro :application_name jsou nezdravé. :problem',
|
||||
'unhealthy_backup_found_body' => 'Zálohy pro :application_name na disku :disk_name Jsou nezdravé.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Nelze se dostat k cíli zálohy. :error',
|
||||
'unhealthy_backup_found_empty' => 'Tato aplikace nemá vůbec žádné zálohy.',
|
||||
'unhealthy_backup_found_old' => 'Poslední záloha vytvořená dne :date je považována za příliš starou.',
|
||||
'unhealthy_backup_found_unknown' => 'Omlouváme se, nemůžeme určit přesný důvod.',
|
||||
'unhealthy_backup_found_full' => 'Zálohy zabírají příliš mnoho místa na disku. Aktuální využití disku je :disk_usage, což je vyšší než povolený limit :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Fejlbesked: :message',
|
||||
'exception_trace' => 'Fejl trace: :trace',
|
||||
'exception_message_title' => 'Fejlbesked',
|
||||
'exception_trace_title' => 'Fejl trace',
|
||||
|
||||
'backup_failed_subject' => 'Backup af :application_name fejlede',
|
||||
'backup_failed_body' => 'Vigtigt: Der skete en fejl under backup af :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Ny backup af :application_name oprettet',
|
||||
'backup_successful_subject_title' => 'Ny backup!',
|
||||
'backup_successful_body' => 'Gode nyheder - der blev oprettet en ny backup af :application_name på disken :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Oprydning af backups for :application_name fejlede.',
|
||||
'cleanup_failed_body' => 'Der skete en fejl under oprydning af backups for :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Oprydning af backups for :application_name gennemført',
|
||||
'cleanup_successful_subject_title' => 'Backup oprydning gennemført!',
|
||||
'cleanup_successful_body' => 'Oprydningen af backups for :application_name på disken :disk_name er gennemført.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Alle backups for :application_name på disken :disk_name er OK',
|
||||
'healthy_backup_found_subject_title' => 'Alle backups for :application_name er OK',
|
||||
'healthy_backup_found_body' => 'Alle backups for :application_name er ok. Godt gået!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Vigtigt: Backups for :application_name fejlbehæftede',
|
||||
'unhealthy_backup_found_subject_title' => 'Vigtigt: Backups for :application_name er fejlbehæftede. :problem',
|
||||
'unhealthy_backup_found_body' => 'Backups for :application_name på disken :disk_name er fejlbehæftede.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Backup destinationen kunne ikke findes. :error',
|
||||
'unhealthy_backup_found_empty' => 'Denne applikation har ingen backups overhovedet.',
|
||||
'unhealthy_backup_found_old' => 'Den seneste backup fra :date er for gammel.',
|
||||
'unhealthy_backup_found_unknown' => 'Beklager, en præcis årsag kunne ikke findes.',
|
||||
'unhealthy_backup_found_full' => 'Backups bruger for meget plads. Nuværende disk forbrug er :disk_usage, hvilket er mere end den tilladte grænse på :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Fehlermeldung: :message',
|
||||
'exception_trace' => 'Fehlerverfolgung: :trace',
|
||||
'exception_message_title' => 'Fehlermeldung',
|
||||
'exception_trace_title' => 'Fehlerverfolgung',
|
||||
|
||||
'backup_failed_subject' => 'Backup von :application_name konnte nicht erstellt werden',
|
||||
'backup_failed_body' => 'Wichtig: Beim Backup von :application_name ist ein Fehler aufgetreten',
|
||||
|
||||
'backup_successful_subject' => 'Erfolgreiches neues Backup von :application_name',
|
||||
'backup_successful_subject_title' => 'Erfolgreiches neues Backup!',
|
||||
'backup_successful_body' => 'Gute Nachrichten, ein neues Backup von :application_name wurde erfolgreich erstellt und in :disk_name gepeichert.',
|
||||
|
||||
'cleanup_failed_subject' => 'Aufräumen der Backups von :application_name schlug fehl.',
|
||||
'cleanup_failed_body' => 'Beim aufräumen der Backups von :application_name ist ein Fehler aufgetreten',
|
||||
|
||||
'cleanup_successful_subject' => 'Aufräumen der Backups von :application_name backups erfolgreich',
|
||||
'cleanup_successful_subject_title' => 'Aufräumen der Backups erfolgreich!',
|
||||
'cleanup_successful_body' => 'Aufräumen der Backups von :application_name in :disk_name war erfolgreich.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Die Backups von :application_name in :disk_name sind gesund',
|
||||
'healthy_backup_found_subject_title' => 'Die Backups von :application_name sind Gesund',
|
||||
'healthy_backup_found_body' => 'Die Backups von :application_name wurden als gesund eingestuft. Gute Arbeit!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Wichtig: Die Backups für :application_name sind nicht gesund',
|
||||
'unhealthy_backup_found_subject_title' => 'Wichtig: Die Backups für :application_name sind ungesund. :problem',
|
||||
'unhealthy_backup_found_body' => 'Die Backups für :application_name in :disk_name sind ungesund.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Das Backup Ziel konnte nicht erreicht werden. :error',
|
||||
'unhealthy_backup_found_empty' => 'Es gibt für die Anwendung noch gar keine Backups.',
|
||||
'unhealthy_backup_found_old' => 'Das letzte Backup am :date ist zu lange her.',
|
||||
'unhealthy_backup_found_unknown' => 'Sorry, ein genauer Grund konnte nicht gefunden werden.',
|
||||
'unhealthy_backup_found_full' => 'Die Backups verbrauchen zu viel Platz. Aktuell wird :disk_usage belegt, dass ist höher als das erlaubte Limit von :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Exception message: :message',
|
||||
'exception_trace' => 'Exception trace: :trace',
|
||||
'exception_message_title' => 'Exception message',
|
||||
'exception_trace_title' => 'Exception trace',
|
||||
|
||||
'backup_failed_subject' => 'Failed backup of :application_name',
|
||||
'backup_failed_body' => 'Important: An error occurred while backing up :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Successful new backup of :application_name',
|
||||
'backup_successful_subject_title' => 'Successful new backup!',
|
||||
'backup_successful_body' => 'Great news, a new backup of :application_name was successfully created on the disk named :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Cleaning up the backups of :application_name failed.',
|
||||
'cleanup_failed_body' => 'An error occurred while cleaning up the backups of :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Clean up of :application_name backups successful',
|
||||
'cleanup_successful_subject_title' => 'Clean up of backups successful!',
|
||||
'cleanup_successful_body' => 'The clean up of the :application_name backups on the disk named :disk_name was successful.',
|
||||
|
||||
'healthy_backup_found_subject' => 'The backups for :application_name on disk :disk_name are healthy',
|
||||
'healthy_backup_found_subject_title' => 'The backups for :application_name are healthy',
|
||||
'healthy_backup_found_body' => 'The backups for :application_name are considered healthy. Good job!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Important: The backups for :application_name are unhealthy',
|
||||
'unhealthy_backup_found_subject_title' => 'Important: The backups for :application_name are unhealthy. :problem',
|
||||
'unhealthy_backup_found_body' => 'The backups for :application_name on disk :disk_name are unhealthy.',
|
||||
'unhealthy_backup_found_not_reachable' => 'The backup destination cannot be reached. :error',
|
||||
'unhealthy_backup_found_empty' => 'There are no backups of this application at all.',
|
||||
'unhealthy_backup_found_old' => 'The latest backup made on :date is considered too old.',
|
||||
'unhealthy_backup_found_unknown' => 'Sorry, an exact reason cannot be determined.',
|
||||
'unhealthy_backup_found_full' => 'The backups are using too much storage. Current usage is :disk_usage which is higher than the allowed limit of :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Mensaje de la excepción: :message',
|
||||
'exception_trace' => 'Traza de la excepción: :trace',
|
||||
'exception_message_title' => 'Mensaje de la excepción',
|
||||
'exception_trace_title' => 'Traza de la excepción',
|
||||
|
||||
'backup_failed_subject' => 'Copia de seguridad de :application_name fallida',
|
||||
'backup_failed_body' => 'Importante: Ocurrió un error al realizar la copia de seguridad de :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Se completó con éxito la copia de seguridad de :application_name',
|
||||
'backup_successful_subject_title' => '¡Nueva copia de seguridad creada con éxito!',
|
||||
'backup_successful_body' => 'Buenas noticias, una nueva copia de seguridad de :application_name fue creada con éxito en el disco llamado :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'La limpieza de copias de seguridad de :application_name falló.',
|
||||
'cleanup_failed_body' => 'Ocurrió un error mientras se realizaba la limpieza de copias de seguridad de :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'La limpieza de copias de seguridad de :application_name se completó con éxito',
|
||||
'cleanup_successful_subject_title' => '!Limpieza de copias de seguridad completada con éxito!',
|
||||
'cleanup_successful_body' => 'La limpieza de copias de seguridad de :application_name en el disco llamado :disk_name se completo con éxito.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Las copias de seguridad de :application_name en el disco :disk_name están en buen estado',
|
||||
'healthy_backup_found_subject_title' => 'Las copias de seguridad de :application_name están en buen estado',
|
||||
'healthy_backup_found_body' => 'Las copias de seguridad de :application_name se consideran en buen estado. ¡Buen trabajo!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Importante: Las copias de seguridad de :application_name están en mal estado',
|
||||
'unhealthy_backup_found_subject_title' => 'Importante: Las copias de seguridad de :application_name están en mal estado. :problem',
|
||||
'unhealthy_backup_found_body' => 'Las copias de seguridad de :application_name en el disco :disk_name están en mal estado.',
|
||||
'unhealthy_backup_found_not_reachable' => 'No se puede acceder al destino de la copia de seguridad. :error',
|
||||
'unhealthy_backup_found_empty' => 'No existe ninguna copia de seguridad de esta aplicación.',
|
||||
'unhealthy_backup_found_old' => 'La última copia de seguriad hecha en :date es demasiado antigua.',
|
||||
'unhealthy_backup_found_unknown' => 'Lo siento, no es posible determinar la razón exacta.',
|
||||
'unhealthy_backup_found_full' => 'Las copias de seguridad están ocupando demasiado espacio. El espacio utilizado actualmente es :disk_usage el cual es mayor que el límite permitido de :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'پیغام خطا: :message',
|
||||
'exception_trace' => 'جزییات خطا: :trace',
|
||||
'exception_message_title' => 'پیغام خطا',
|
||||
'exception_trace_title' => 'جزییات خطا',
|
||||
|
||||
'backup_failed_subject' => 'پشتیبانگیری :application_name با خطا مواجه شد.',
|
||||
'backup_failed_body' => 'پیغام مهم: هنگام پشتیبانگیری از :application_name خطایی رخ داده است. ',
|
||||
|
||||
'backup_successful_subject' => 'نسخه پشتیبان جدید :application_name با موفقیت ساخته شد.',
|
||||
'backup_successful_subject_title' => 'پشتیبانگیری موفق!',
|
||||
'backup_successful_body' => 'خبر خوب, به تازگی نسخه پشتیبان :application_name بر روی دیسک :disk_name با موفقیت ساخته شد. ',
|
||||
|
||||
'cleanup_failed_subject' => 'پاکسازی نسخه پشتیبان :application_name انجام نشد.',
|
||||
'cleanup_failed_body' => 'هنگام پاکسازی نسخه پشتیبان :application_name خطایی رخ داده است.',
|
||||
|
||||
'cleanup_successful_subject' => 'پاکسازی نسخه پشتیبان :application_name با موفقیت انجام شد.',
|
||||
'cleanup_successful_subject_title' => 'پاکسازی نسخه پشتیبان!',
|
||||
'cleanup_successful_body' => 'پاکسازی نسخه پشتیبان :application_name بر روی دیسک :disk_name با موفقیت انجام شد.',
|
||||
|
||||
'healthy_backup_found_subject' => 'نسخه پشتیبان :application_name بر روی دیسک :disk_name سالم بود.',
|
||||
'healthy_backup_found_subject_title' => 'نسخه پشتیبان :application_name سالم بود.',
|
||||
'healthy_backup_found_body' => 'نسخه پشتیبان :application_name به نظر سالم میاد. دمت گرم!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'خبر مهم: نسخه پشتیبان :application_name سالم نبود.',
|
||||
'unhealthy_backup_found_subject_title' => 'خبر مهم: نسخه پشتیبان :application_name سالم نبود. :problem',
|
||||
'unhealthy_backup_found_body' => 'نسخه پشتیبان :application_name بر روی دیسک :disk_name سالم نبود.',
|
||||
'unhealthy_backup_found_not_reachable' => 'مقصد پشتیبانگیری در دسترس نبود. :error',
|
||||
'unhealthy_backup_found_empty' => 'برای این برنامه هیچ نسخه پشتیبانی وجود ندارد.',
|
||||
'unhealthy_backup_found_old' => 'آخرین نسخه پشتیبان برای تاریخ :date است. که به نظر خیلی قدیمی میاد. ',
|
||||
'unhealthy_backup_found_unknown' => 'متاسفانه دلیل دقیق مشخص نشده است.',
|
||||
'unhealthy_backup_found_full' => 'نسخههای پشتیبانی که تهیه کرده اید حجم زیادی اشغال کرده اند. میزان دیسک استفاده شده :disk_usage است که از میزان مجاز :disk_limit فراتر رفته است. ',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Virheilmoitus: :message',
|
||||
'exception_trace' => 'Virhe, jäljitys: :trace',
|
||||
'exception_message_title' => 'Virheilmoitus',
|
||||
'exception_trace_title' => 'Virheen jäljitys',
|
||||
|
||||
'backup_failed_subject' => ':application_name varmuuskopiointi epäonnistui',
|
||||
'backup_failed_body' => 'HUOM!: :application_name varmuuskoipionnissa tapahtui virhe',
|
||||
|
||||
'backup_successful_subject' => ':application_name varmuuskopioitu onnistuneesti',
|
||||
'backup_successful_subject_title' => 'Uusi varmuuskopio!',
|
||||
'backup_successful_body' => 'Hyviä uutisia! :application_name on varmuuskopioitu levylle :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => ':application_name varmuuskopioiden poistaminen epäonnistui.',
|
||||
'cleanup_failed_body' => ':application_name varmuuskopioiden poistamisessa tapahtui virhe.',
|
||||
|
||||
'cleanup_successful_subject' => ':application_name varmuuskopiot poistettu onnistuneesti',
|
||||
'cleanup_successful_subject_title' => 'Varmuuskopiot poistettu onnistuneesti!',
|
||||
'cleanup_successful_body' => ':application_name varmuuskopiot poistettu onnistuneesti levyltä :disk_name.',
|
||||
|
||||
'healthy_backup_found_subject' => ':application_name varmuuskopiot levyllä :disk_name ovat kunnossa',
|
||||
'healthy_backup_found_subject_title' => ':application_name varmuuskopiot ovat kunnossa',
|
||||
'healthy_backup_found_body' => ':application_name varmuuskopiot ovat kunnossa. Hieno homma!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'HUOM!: :application_name varmuuskopiot ovat vialliset',
|
||||
'unhealthy_backup_found_subject_title' => 'HUOM!: :application_name varmuuskopiot ovat vialliset. :problem',
|
||||
'unhealthy_backup_found_body' => ':application_name varmuuskopiot levyllä :disk_name ovat vialliset.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Varmuuskopioiden kohdekansio ei ole saatavilla. :error',
|
||||
'unhealthy_backup_found_empty' => 'Tästä sovelluksesta ei ole varmuuskopioita.',
|
||||
'unhealthy_backup_found_old' => 'Viimeisin varmuuskopio, luotu :date, on liian vanha.',
|
||||
'unhealthy_backup_found_unknown' => 'Virhe, tarkempaa tietoa syystä ei valitettavasti ole saatavilla.',
|
||||
'unhealthy_backup_found_full' => 'Varmuuskopiot vievät liikaa levytilaa. Tällä hetkellä käytössä :disk_usage, mikä on suurempi kuin sallittu tilavuus (:disk_limit).',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Message de l\'exception : :message',
|
||||
'exception_trace' => 'Trace de l\'exception : :trace',
|
||||
'exception_message_title' => 'Message de l\'exception',
|
||||
'exception_trace_title' => 'Trace de l\'exception',
|
||||
|
||||
'backup_failed_subject' => 'Échec de la sauvegarde de :application_name',
|
||||
'backup_failed_body' => 'Important : Une erreur est survenue lors de la sauvegarde de :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Succès de la sauvegarde de :application_name',
|
||||
'backup_successful_subject_title' => 'Sauvegarde créée avec succès !',
|
||||
'backup_successful_body' => 'Bonne nouvelle, une nouvelle sauvegarde de :application_name a été créée avec succès sur le disque nommé :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Le nettoyage des sauvegardes de :application_name a echoué.',
|
||||
'cleanup_failed_body' => 'Une erreur est survenue lors du nettoyage des sauvegardes de :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Succès du nettoyage des sauvegardes de :application_name',
|
||||
'cleanup_successful_subject_title' => 'Sauvegardes nettoyées avec succès !',
|
||||
'cleanup_successful_body' => 'Le nettoyage des sauvegardes de :application_name sur le disque nommé :disk_name a été effectué avec succès.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Les sauvegardes pour :application_name sur le disque :disk_name sont saines',
|
||||
'healthy_backup_found_subject_title' => 'Les sauvegardes pour :application_name sont saines',
|
||||
'healthy_backup_found_body' => 'Les sauvegardes pour :application_name sont considérées saines. Bon travail !',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Important : Les sauvegardes pour :application_name sont corrompues',
|
||||
'unhealthy_backup_found_subject_title' => 'Important : Les sauvegardes pour :application_name sont corrompues. :problem',
|
||||
'unhealthy_backup_found_body' => 'Les sauvegardes pour :application_name sur le disque :disk_name sont corrompues.',
|
||||
'unhealthy_backup_found_not_reachable' => 'La destination de la sauvegarde n\'est pas accessible. :error',
|
||||
'unhealthy_backup_found_empty' => 'Il n\'y a aucune sauvegarde pour cette application.',
|
||||
'unhealthy_backup_found_old' => 'La dernière sauvegarde du :date est considérée trop vieille.',
|
||||
'unhealthy_backup_found_unknown' => 'Désolé, une raison exacte ne peut être déterminée.',
|
||||
'unhealthy_backup_found_full' => 'Les sauvegardes utilisent trop d\'espace disque. L\'utilisation actuelle est de :disk_usage alors que la limite autorisée est de :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'गलती संदेश: :message',
|
||||
'exception_trace' => 'गलती निशान: :trace',
|
||||
'exception_message_title' => 'गलती संदेश',
|
||||
'exception_trace_title' => 'गलती निशान',
|
||||
|
||||
'backup_failed_subject' => ':application_name का बैकअप असफल रहा',
|
||||
'backup_failed_body' => 'जरूरी सुचना: :application_name का बैकअप लेते समय असफल रहे',
|
||||
|
||||
'backup_successful_subject' => ':application_name का बैकअप सफल रहा',
|
||||
'backup_successful_subject_title' => 'बैकअप सफल रहा!',
|
||||
'backup_successful_body' => 'खुशखबरी, :application_name का बैकअप :disk_name पर संग्रहित करने मे सफल रहे.',
|
||||
|
||||
'cleanup_failed_subject' => ':application_name के बैकअप की सफाई असफल रही.',
|
||||
'cleanup_failed_body' => ':application_name के बैकअप की सफाई करते समय कुछ बाधा आयी है.',
|
||||
|
||||
'cleanup_successful_subject' => ':application_name के बैकअप की सफाई सफल रही',
|
||||
'cleanup_successful_subject_title' => 'बैकअप की सफाई सफल रही!',
|
||||
'cleanup_successful_body' => ':application_name का बैकअप जो :disk_name नाम की डिस्क पर संग्रहित है, उसकी सफाई सफल रही.',
|
||||
|
||||
'healthy_backup_found_subject' => ':disk_name नाम की डिस्क पर संग्रहित :application_name के बैकअप स्वस्थ है',
|
||||
'healthy_backup_found_subject_title' => ':application_name के सभी बैकअप स्वस्थ है',
|
||||
'healthy_backup_found_body' => 'बहुत बढ़िया! :application_name के सभी बैकअप स्वस्थ है.',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'जरूरी सुचना : :application_name के बैकअप अस्वस्थ है',
|
||||
'unhealthy_backup_found_subject_title' => 'जरूरी सुचना : :application_name के बैकअप :problem के बजेसे अस्वस्थ है',
|
||||
'unhealthy_backup_found_body' => ':disk_name नाम की डिस्क पर संग्रहित :application_name के बैकअप अस्वस्थ है',
|
||||
'unhealthy_backup_found_not_reachable' => ':error के बजेसे बैकअप की मंजिल तक पोहोच नहीं सकते.',
|
||||
'unhealthy_backup_found_empty' => 'इस एप्लीकेशन का कोई भी बैकअप नहीं है.',
|
||||
'unhealthy_backup_found_old' => 'हालहीमें :date को लिया हुआ बैकअप बहुत पुराना है.',
|
||||
'unhealthy_backup_found_unknown' => 'माफ़ कीजिये, सही कारण निर्धारित नहीं कर सकते.',
|
||||
'unhealthy_backup_found_full' => 'सभी बैकअप बहुत ज्यादा जगह का उपयोग कर रहे है. फ़िलहाल सभी बैकअप :disk_usage जगह का उपयोग कर रहे है, जो की :disk_limit अनुमति सीमा से अधिक का है.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Pesan pengecualian: :message',
|
||||
'exception_trace' => 'Jejak pengecualian: :trace',
|
||||
'exception_message_title' => 'Pesan pengecualian',
|
||||
'exception_trace_title' => 'Jejak pengecualian',
|
||||
|
||||
'backup_failed_subject' => 'Gagal backup :application_name',
|
||||
'backup_failed_body' => 'Penting: Sebuah error terjadi ketika membackup :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Backup baru sukses dari :application_name',
|
||||
'backup_successful_subject_title' => 'Backup baru sukses!',
|
||||
'backup_successful_body' => 'Kabar baik, sebuah backup baru dari :application_name sukses dibuat pada disk bernama :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Membersihkan backup dari :application_name yang gagal.',
|
||||
'cleanup_failed_body' => 'Sebuah error teradi ketika membersihkan backup dari :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Sukses membersihkan backup :application_name',
|
||||
'cleanup_successful_subject_title' => 'Sukses membersihkan backup!',
|
||||
'cleanup_successful_body' => 'Pembersihan backup :application_name pada disk bernama :disk_name telah sukses.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Backup untuk :application_name pada disk :disk_name sehat',
|
||||
'healthy_backup_found_subject_title' => 'Backup untuk :application_name sehat',
|
||||
'healthy_backup_found_body' => 'Backup untuk :application_name dipertimbangkan sehat. Kerja bagus!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Penting: Backup untuk :application_name tidak sehat',
|
||||
'unhealthy_backup_found_subject_title' => 'Penting: Backup untuk :application_name tidak sehat. :problem',
|
||||
'unhealthy_backup_found_body' => 'Backup untuk :application_name pada disk :disk_name tidak sehat.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Tujuan backup tidak dapat terjangkau. :error',
|
||||
'unhealthy_backup_found_empty' => 'Tidak ada backup pada aplikasi ini sama sekali.',
|
||||
'unhealthy_backup_found_old' => 'Backup terakhir dibuat pada :date dimana dipertimbahkan sudah sangat lama.',
|
||||
'unhealthy_backup_found_unknown' => 'Maaf, sebuah alasan persisnya tidak dapat ditentukan.',
|
||||
'unhealthy_backup_found_full' => 'Backup menggunakan terlalu banyak kapasitas penyimpanan. Penggunaan terkini adalah :disk_usage dimana lebih besar dari batas yang diperbolehkan yaitu :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Messaggio dell\'eccezione: :message',
|
||||
'exception_trace' => 'Traccia dell\'eccezione: :trace',
|
||||
'exception_message_title' => 'Messaggio dell\'eccezione',
|
||||
'exception_trace_title' => 'Traccia dell\'eccezione',
|
||||
|
||||
'backup_failed_subject' => 'Fallito il backup di :application_name',
|
||||
'backup_failed_body' => 'Importante: Si è verificato un errore durante il backup di :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Creato nuovo backup di :application_name',
|
||||
'backup_successful_subject_title' => 'Nuovo backup creato!',
|
||||
'backup_successful_body' => 'Grande notizia, un nuovo backup di :application_name è stato creato con successo sul disco :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Pulizia dei backup di :application_name fallita.',
|
||||
'cleanup_failed_body' => 'Si è verificato un errore durante la pulizia dei backup di :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Pulizia dei backup di :application_name avvenuta con successo',
|
||||
'cleanup_successful_subject_title' => 'Pulizia dei backup avvenuta con successo!',
|
||||
'cleanup_successful_body' => 'La pulizia dei backup di :application_name sul disco :disk_name è avvenuta con successo.',
|
||||
|
||||
'healthy_backup_found_subject' => 'I backup per :application_name sul disco :disk_name sono sani',
|
||||
'healthy_backup_found_subject_title' => 'I backup per :application_name sono sani',
|
||||
'healthy_backup_found_body' => 'I backup per :application_name sono considerati sani. Bel Lavoro!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Importante: i backup per :application_name sono corrotti',
|
||||
'unhealthy_backup_found_subject_title' => 'Importante: i backup per :application_name sono corrotti. :problem',
|
||||
'unhealthy_backup_found_body' => 'I backup per :application_name sul disco :disk_name sono corrotti.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Impossibile raggiungere la destinazione di backup. :error',
|
||||
'unhealthy_backup_found_empty' => 'Non esiste alcun backup di questa applicazione.',
|
||||
'unhealthy_backup_found_old' => 'L\'ultimo backup fatto il :date è considerato troppo vecchio.',
|
||||
'unhealthy_backup_found_unknown' => 'Spiacenti, non è possibile determinare una ragione esatta.',
|
||||
'unhealthy_backup_found_full' => 'I backup utilizzano troppa memoria. L\'utilizzo corrente è :disk_usage che è superiore al limite consentito di :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => '例外のメッセージ: :message',
|
||||
'exception_trace' => '例外の追跡: :trace',
|
||||
'exception_message_title' => '例外のメッセージ',
|
||||
'exception_trace_title' => '例外の追跡',
|
||||
|
||||
'backup_failed_subject' => ':application_name のバックアップに失敗しました。',
|
||||
'backup_failed_body' => '重要: :application_name のバックアップ中にエラーが発生しました。',
|
||||
|
||||
'backup_successful_subject' => ':application_name のバックアップに成功しました。',
|
||||
'backup_successful_subject_title' => 'バックアップに成功しました!',
|
||||
'backup_successful_body' => '朗報です。ディスク :disk_name へ :application_name のバックアップが成功しました。',
|
||||
|
||||
'cleanup_failed_subject' => ':application_name のバックアップ削除に失敗しました。',
|
||||
'cleanup_failed_body' => ':application_name のバックアップ削除中にエラーが発生しました。',
|
||||
|
||||
'cleanup_successful_subject' => ':application_name のバックアップ削除に成功しました。',
|
||||
'cleanup_successful_subject_title' => 'バックアップ削除に成功しました!',
|
||||
'cleanup_successful_body' => 'ディスク :disk_name に保存された :application_name のバックアップ削除に成功しました。',
|
||||
|
||||
'healthy_backup_found_subject' => 'ディスク :disk_name への :application_name のバックアップは正常です。',
|
||||
'healthy_backup_found_subject_title' => ':application_name のバックアップは正常です。',
|
||||
'healthy_backup_found_body' => ':application_name へのバックアップは正常です。いい仕事してますね!',
|
||||
|
||||
'unhealthy_backup_found_subject' => '重要: :application_name のバックアップに異常があります。',
|
||||
'unhealthy_backup_found_subject_title' => '重要: :application_name のバックアップに異常があります。 :problem',
|
||||
'unhealthy_backup_found_body' => ':disk_name への :application_name のバックアップに異常があります。',
|
||||
'unhealthy_backup_found_not_reachable' => 'バックアップ先にアクセスできませんでした。 :error',
|
||||
'unhealthy_backup_found_empty' => 'このアプリケーションのバックアップは見つかりませんでした。',
|
||||
'unhealthy_backup_found_old' => ':date に保存された直近のバックアップが古すぎます。',
|
||||
'unhealthy_backup_found_unknown' => '申し訳ございません。予期せぬエラーです。',
|
||||
'unhealthy_backup_found_full' => 'バックアップがディスク容量を圧迫しています。現在の使用量 :disk_usage は、許可された限界値 :disk_limit を超えています。',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Fout bericht: :message',
|
||||
'exception_trace' => 'Fout trace: :trace',
|
||||
'exception_message_title' => 'Fout bericht',
|
||||
'exception_trace_title' => 'Fout trace',
|
||||
|
||||
'backup_failed_subject' => 'Back-up van :application_name mislukt',
|
||||
'backup_failed_body' => 'Belangrijk: Er ging iets fout tijdens het maken van een back-up van :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Succesvolle nieuwe back-up van :application_name',
|
||||
'backup_successful_subject_title' => 'Succesvolle nieuwe back-up!',
|
||||
'backup_successful_body' => 'Goed nieuws, een nieuwe back-up van :application_name was succesvol aangemaakt op de schijf genaamd :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Het opschonen van de back-ups van :application_name is mislukt.',
|
||||
'cleanup_failed_body' => 'Er ging iets fout tijdens het opschonen van de back-ups van :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Opschonen van :application_name back-ups was succesvol.',
|
||||
'cleanup_successful_subject_title' => 'Opschonen van back-ups was succesvol!',
|
||||
'cleanup_successful_body' => 'Het opschonen van de :application_name back-ups op de schijf genaamd :disk_name was succesvol.',
|
||||
|
||||
'healthy_backup_found_subject' => 'De back-ups voor :application_name op schijf :disk_name zijn gezond',
|
||||
'healthy_backup_found_subject_title' => 'De back-ups voor :application_name zijn gezond',
|
||||
'healthy_backup_found_body' => 'De back-ups voor :application_name worden als gezond beschouwd. Goed gedaan!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Belangrijk: De back-ups voor :application_name zijn niet meer gezond',
|
||||
'unhealthy_backup_found_subject_title' => 'Belangrijk: De back-ups voor :application_name zijn niet gezond. :problem',
|
||||
'unhealthy_backup_found_body' => 'De back-ups voor :application_name op schijf :disk_name zijn niet gezond.',
|
||||
'unhealthy_backup_found_not_reachable' => 'De back-upbestemming kon niet worden bereikt. :error',
|
||||
'unhealthy_backup_found_empty' => 'Er zijn geen back-ups van deze applicatie beschikbaar.',
|
||||
'unhealthy_backup_found_old' => 'De laatste back-up gemaakt op :date is te oud.',
|
||||
'unhealthy_backup_found_unknown' => 'Sorry, een exacte reden kon niet worden bepaald.',
|
||||
'unhealthy_backup_found_full' => 'De back-ups gebruiken te veel opslagruimte. Momenteel wordt er :disk_usage gebruikt wat hoger is dan de toegestane limiet van :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Exception: :message',
|
||||
'exception_trace' => 'Exception trace: :trace',
|
||||
'exception_message_title' => 'Exception',
|
||||
'exception_trace_title' => 'Exception trace',
|
||||
|
||||
'backup_failed_subject' => 'Backup feilet for :application_name',
|
||||
'backup_failed_body' => 'Viktg: En feil oppstod under backing av :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Gjennomført backup av :application_name',
|
||||
'backup_successful_subject_title' => 'Gjennomført backup!',
|
||||
'backup_successful_body' => 'Gode nyheter, en ny backup av :application_name ble opprettet på disken :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Opprydding av backup for :application_name feilet.',
|
||||
'cleanup_failed_body' => 'En feil oppstod under opprydding av backups for :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Opprydding av backup for :application_name gjennomført',
|
||||
'cleanup_successful_subject_title' => 'Opprydding av backup gjennomført!',
|
||||
'cleanup_successful_body' => 'Oppryddingen av backup for :application_name på disken :disk_name har blitt gjennomført.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Alle backups for :application_name på disken :disk_name er OK',
|
||||
'healthy_backup_found_subject_title' => 'Alle backups for :application_name er OK',
|
||||
'healthy_backup_found_body' => 'Alle backups for :application_name er ok. Godt jobba!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Viktig: Backups for :application_name ikke OK',
|
||||
'unhealthy_backup_found_subject_title' => 'Viktig: Backups for :application_name er ikke OK. :problem',
|
||||
'unhealthy_backup_found_body' => 'Backups for :application_name på disken :disk_name er ikke OK.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Kunne ikke finne backup-destinasjonen. :error',
|
||||
'unhealthy_backup_found_empty' => 'Denne applikasjonen mangler backups.',
|
||||
'unhealthy_backup_found_old' => 'Den siste backupem fra :date er for gammel.',
|
||||
'unhealthy_backup_found_unknown' => 'Beklager, kunne ikke finne nøyaktig årsak.',
|
||||
'unhealthy_backup_found_full' => 'Backups bruker for mye lagringsplass. Nåværende diskbruk er :disk_usage, som er mer enn den tillatte grensen på :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Błąd: :message',
|
||||
'exception_trace' => 'Zrzut błędu: :trace',
|
||||
'exception_message_title' => 'Błąd',
|
||||
'exception_trace_title' => 'Zrzut błędu',
|
||||
|
||||
'backup_failed_subject' => 'Tworzenie kopii zapasowej aplikacji :application_name nie powiodło się',
|
||||
'backup_failed_body' => 'Ważne: Wystąpił błąd podczas tworzenia kopii zapasowej aplikacji :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Pomyślnie utworzono kopię zapasową aplikacji :application_name',
|
||||
'backup_successful_subject_title' => 'Nowa kopia zapasowa!',
|
||||
'backup_successful_body' => 'Wspaniała wiadomość, nowa kopia zapasowa aplikacji :application_name została pomyślnie utworzona na dysku o nazwie :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Czyszczenie kopii zapasowych aplikacji :application_name nie powiodło się.',
|
||||
'cleanup_failed_body' => 'Wystąpił błąd podczas czyszczenia kopii zapasowej aplikacji :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Kopie zapasowe aplikacji :application_name zostały pomyślnie wyczyszczone',
|
||||
'cleanup_successful_subject_title' => 'Kopie zapasowe zostały pomyślnie wyczyszczone!',
|
||||
'cleanup_successful_body' => 'Czyszczenie kopii zapasowych aplikacji :application_name na dysku :disk_name zakończone sukcesem.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Kopie zapasowe aplikacji :application_name na dysku :disk_name są poprawne',
|
||||
'healthy_backup_found_subject_title' => 'Kopie zapasowe aplikacji :application_name są poprawne',
|
||||
'healthy_backup_found_body' => 'Kopie zapasowe aplikacji :application_name są poprawne. Dobra robota!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Ważne: Kopie zapasowe aplikacji :application_name są niepoprawne',
|
||||
'unhealthy_backup_found_subject_title' => 'Ważne: Kopie zapasowe aplikacji :application_name są niepoprawne. :problem',
|
||||
'unhealthy_backup_found_body' => 'Kopie zapasowe aplikacji :application_name na dysku :disk_name są niepoprawne.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Miejsce docelowe kopii zapasowej nie jest osiągalne. :error',
|
||||
'unhealthy_backup_found_empty' => 'W aplikacji nie ma żadnej kopii zapasowych tej aplikacji.',
|
||||
'unhealthy_backup_found_old' => 'Ostatnia kopia zapasowa wykonania dnia :date jest zbyt stara.',
|
||||
'unhealthy_backup_found_unknown' => 'Niestety, nie można ustalić dokładnego błędu.',
|
||||
'unhealthy_backup_found_full' => 'Kopie zapasowe zajmują zbyt dużo miejsca. Obecne użycie dysku :disk_usage jest większe od ustalonego limitu :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Exception message: :message',
|
||||
'exception_trace' => 'Exception trace: :trace',
|
||||
'exception_message_title' => 'Exception message',
|
||||
'exception_trace_title' => 'Exception trace',
|
||||
|
||||
'backup_failed_subject' => 'Falha no backup da aplicação :application_name',
|
||||
'backup_failed_body' => 'Importante: Ocorreu um erro ao fazer o backup da aplicação :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Backup realizado com sucesso: :application_name',
|
||||
'backup_successful_subject_title' => 'Backup Realizado com sucesso!',
|
||||
'backup_successful_body' => 'Boas notícias, um novo backup da aplicação :application_name foi criado no disco :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Falha na limpeza dos backups da aplicação :application_name.',
|
||||
'cleanup_failed_body' => 'Um erro ocorreu ao fazer a limpeza dos backups da aplicação :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Limpeza dos backups da aplicação :application_name concluída!',
|
||||
'cleanup_successful_subject_title' => 'Limpeza dos backups concluída!',
|
||||
'cleanup_successful_body' => 'A limpeza dos backups da aplicação :application_name no disco :disk_name foi concluída.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Os backups da aplicação :application_name no disco :disk_name estão em dia',
|
||||
'healthy_backup_found_subject_title' => 'Os backups da aplicação :application_name estão em dia',
|
||||
'healthy_backup_found_body' => 'Os backups da aplicação :application_name estão em dia. Bom trabalho!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Importante: Os backups da aplicação :application_name não estão em dia',
|
||||
'unhealthy_backup_found_subject_title' => 'Importante: Os backups da aplicação :application_name não estão em dia. :problem',
|
||||
'unhealthy_backup_found_body' => 'Os backups da aplicação :application_name no disco :disk_name não estão em dia.',
|
||||
'unhealthy_backup_found_not_reachable' => 'O destino dos backups não pode ser alcançado. :error',
|
||||
'unhealthy_backup_found_empty' => 'Não existem backups para essa aplicação.',
|
||||
'unhealthy_backup_found_old' => 'O último backup realizado em :date é considerado muito antigo.',
|
||||
'unhealthy_backup_found_unknown' => 'Desculpe, a exata razão não pode ser encontrada.',
|
||||
'unhealthy_backup_found_full' => 'Os backups estão usando muito espaço de armazenamento. A utilização atual é de :disk_usage, o que é maior que o limite permitido de :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Exception message: :message',
|
||||
'exception_trace' => 'Exception trace: :trace',
|
||||
'exception_message_title' => 'Exception message',
|
||||
'exception_trace_title' => 'Exception trace',
|
||||
|
||||
'backup_failed_subject' => 'Falha no backup da aplicação :application_name',
|
||||
'backup_failed_body' => 'Importante: Ocorreu um erro ao executar o backup da aplicação :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Backup realizado com sucesso: :application_name',
|
||||
'backup_successful_subject_title' => 'Backup Realizado com Sucesso!',
|
||||
'backup_successful_body' => 'Boas notícias, foi criado um novo backup no disco :disk_name referente à aplicação :application_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Falha na limpeza dos backups da aplicação :application_name.',
|
||||
'cleanup_failed_body' => 'Ocorreu um erro ao executar a limpeza dos backups da aplicação :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Limpeza dos backups da aplicação :application_name concluída!',
|
||||
'cleanup_successful_subject_title' => 'Limpeza dos backups concluída!',
|
||||
'cleanup_successful_body' => 'Concluída a limpeza dos backups da aplicação :application_name no disco :disk_name.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Os backups da aplicação :application_name no disco :disk_name estão em dia',
|
||||
'healthy_backup_found_subject_title' => 'Os backups da aplicação :application_name estão em dia',
|
||||
'healthy_backup_found_body' => 'Os backups da aplicação :application_name estão em dia. Bom trabalho!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Importante: Os backups da aplicação :application_name não estão em dia',
|
||||
'unhealthy_backup_found_subject_title' => 'Importante: Os backups da aplicação :application_name não estão em dia. :problem',
|
||||
'unhealthy_backup_found_body' => 'Os backups da aplicação :application_name no disco :disk_name não estão em dia.',
|
||||
'unhealthy_backup_found_not_reachable' => 'O destino dos backups não pode ser alcançado. :error',
|
||||
'unhealthy_backup_found_empty' => 'Não existem backups para essa aplicação.',
|
||||
'unhealthy_backup_found_old' => 'O último backup realizado em :date é demasiado antigo.',
|
||||
'unhealthy_backup_found_unknown' => 'Desculpe, impossível determinar a razão exata.',
|
||||
'unhealthy_backup_found_full' => 'Os backups estão a utilizar demasiado espaço de armazenamento. A utilização atual é de :disk_usage, o que é maior que o limite permitido de :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Cu excepția mesajului: :message',
|
||||
'exception_trace' => 'Urmă excepţie: :trace',
|
||||
'exception_message_title' => 'Mesaj de excepție',
|
||||
'exception_trace_title' => 'Urmă excepţie',
|
||||
|
||||
'backup_failed_subject' => 'Nu s-a putut face copie de rezervă pentru :application_name',
|
||||
'backup_failed_body' => 'Important: A apărut o eroare în timpul generării copiei de rezervă pentru :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Copie de rezervă efectuată cu succes pentru :application_name',
|
||||
'backup_successful_subject_title' => 'O nouă copie de rezervă a fost efectuată cu succes!',
|
||||
'backup_successful_body' => 'Vești bune, o nouă copie de rezervă pentru :application_name a fost creată cu succes pe discul cu numele :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Curățarea copiilor de rezervă pentru :application_name nu a reușit.',
|
||||
'cleanup_failed_body' => 'A apărut o eroare în timpul curățirii copiilor de rezervă pentru :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Curățarea copiilor de rezervă pentru :application_name a fost făcută cu succes',
|
||||
'cleanup_successful_subject_title' => 'Curățarea copiilor de rezervă a fost făcută cu succes!',
|
||||
'cleanup_successful_body' => 'Curățarea copiilor de rezervă pentru :application_name de pe discul cu numele :disk_name a fost făcută cu succes.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Copiile de rezervă pentru :application_name de pe discul :disk_name sunt în regulă',
|
||||
'healthy_backup_found_subject_title' => 'Copiile de rezervă pentru :application_name sunt în regulă',
|
||||
'healthy_backup_found_body' => 'Copiile de rezervă pentru :application_name sunt considerate în regulă. Bună treabă!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Important: Copiile de rezervă pentru :application_name nu sunt în regulă',
|
||||
'unhealthy_backup_found_subject_title' => 'Important: Copiile de rezervă pentru :application_name nu sunt în regulă. :problem',
|
||||
'unhealthy_backup_found_body' => 'Copiile de rezervă pentru :application_name de pe discul :disk_name nu sunt în regulă.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Nu se poate ajunge la destinația copiilor de rezervă. :error',
|
||||
'unhealthy_backup_found_empty' => 'Nu există copii de rezervă ale acestei aplicații.',
|
||||
'unhealthy_backup_found_old' => 'Cea mai recentă copie de rezervă făcută la :date este considerată prea veche.',
|
||||
'unhealthy_backup_found_unknown' => 'Ne pare rău, un motiv exact nu poate fi determinat.',
|
||||
'unhealthy_backup_found_full' => 'Copiile de rezervă folosesc prea mult spațiu de stocare. Utilizarea curentă este de :disk_usage care este mai mare decât limita permisă de :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Сообщение об ошибке: :message',
|
||||
'exception_trace' => 'Сведения об ошибке: :trace',
|
||||
'exception_message_title' => 'Сообщение об ошибке',
|
||||
'exception_trace_title' => 'Сведения об ошибке',
|
||||
|
||||
'backup_failed_subject' => 'Не удалось сделать резервную копию :application_name',
|
||||
'backup_failed_body' => 'Внимание: Произошла ошибка во время резервного копирования :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Успешно создана новая резервная копия :application_name',
|
||||
'backup_successful_subject_title' => 'Успешно создана новая резервная копия!',
|
||||
'backup_successful_body' => 'Отличная новость, новая резервная копия :application_name успешно создана и сохранена на диск :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Не удалось очистить резервные копии :application_name',
|
||||
'cleanup_failed_body' => 'Произошла ошибка при очистке резервных копий :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Очистка от резервных копий :application_name прошла успешно',
|
||||
'cleanup_successful_subject_title' => 'Очистка резервных копий прошла удачно!',
|
||||
'cleanup_successful_body' => 'Очистка от старых резервных копий :application_name на диске :disk_name прошла удачно.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Резервная копия :application_name с диска :disk_name установлена',
|
||||
'healthy_backup_found_subject_title' => 'Резервная копия :application_name установлена',
|
||||
'healthy_backup_found_body' => 'Резервная копия :application_name успешно установлена. Хорошая работа!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Внимание: резервная копия :application_name не установилась',
|
||||
'unhealthy_backup_found_subject_title' => 'Внимание: резервная копия для :application_name не установилась. :problem',
|
||||
'unhealthy_backup_found_body' => 'Резервная копия для :application_name на диске :disk_name не установилась.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Резервная копия не смогла установиться. :error',
|
||||
'unhealthy_backup_found_empty' => 'Резервные копии для этого приложения отсутствуют.',
|
||||
'unhealthy_backup_found_old' => 'Последнее резервное копирование создано :date является устаревшим.',
|
||||
'unhealthy_backup_found_unknown' => 'Извините, точная причина не может быть определена.',
|
||||
'unhealthy_backup_found_full' => 'Резервные копии используют слишком много памяти. Используется :disk_usage что выше допустимого предела: :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Hata mesajı: :message',
|
||||
'exception_trace' => 'Hata izleri: :trace',
|
||||
'exception_message_title' => 'Hata mesajı',
|
||||
'exception_trace_title' => 'Hata izleri',
|
||||
|
||||
'backup_failed_subject' => 'Yedeklenemedi :application_name',
|
||||
'backup_failed_body' => 'Önemli: Yedeklenirken bir hata oluştu :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Başarılı :application_name yeni yedeklemesi',
|
||||
'backup_successful_subject_title' => 'Başarılı bir yeni yedekleme!',
|
||||
'backup_successful_body' => 'Harika bir haber, :application_name âit yeni bir yedekleme :disk_name adlı diskte başarıyla oluşturuldu.',
|
||||
|
||||
'cleanup_failed_subject' => ':application_name yedeklemeleri temizlenmesi başarısız.',
|
||||
'cleanup_failed_body' => ':application_name yedeklerini temizlerken bir hata oluştu ',
|
||||
|
||||
'cleanup_successful_subject' => ':application_name yedeklemeleri temizlenmesi başarılı.',
|
||||
'cleanup_successful_subject_title' => 'Yedeklerin temizlenmesi başarılı!',
|
||||
'cleanup_successful_body' => ':application_name yedeklemeleri temizlenmesi ,:disk_name diskinden silindi',
|
||||
|
||||
'healthy_backup_found_subject' => ':application_name yedeklenmesi ,:disk_name adlı diskte sağlıklı',
|
||||
'healthy_backup_found_subject_title' => ':application_name yedeklenmesi sağlıklı',
|
||||
'healthy_backup_found_body' => ':application_name için yapılan yedeklemeler sağlıklı sayılır. Aferin!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Önemli: :application_name için yedeklemeler sağlıksız',
|
||||
'unhealthy_backup_found_subject_title' => 'Önemli: :application_name için yedeklemeler sağlıksız. :problem',
|
||||
'unhealthy_backup_found_body' => 'Yedeklemeler: :application_name disk: :disk_name sağlıksız.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Yedekleme hedefine ulaşılamıyor. :error',
|
||||
'unhealthy_backup_found_empty' => 'Bu uygulamanın yedekleri yok.',
|
||||
'unhealthy_backup_found_old' => ':date tarihinde yapılan en son yedekleme çok eski kabul ediliyor.',
|
||||
'unhealthy_backup_found_unknown' => 'Üzgünüm, kesin bir sebep belirlenemiyor.',
|
||||
'unhealthy_backup_found_full' => 'Yedeklemeler çok fazla depolama alanı kullanıyor. Şu anki kullanım: :disk_usage, izin verilen sınırdan yüksek: :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => 'Повідомлення про помилку: :message',
|
||||
'exception_trace' => 'Деталі помилки: :trace',
|
||||
'exception_message_title' => 'Повідомлення помилки',
|
||||
'exception_trace_title' => 'Деталі помилки',
|
||||
|
||||
'backup_failed_subject' => 'Не вдалось зробити резервну копію :application_name',
|
||||
'backup_failed_body' => 'Увага: Трапилась помилка під час резервного копіювання :application_name',
|
||||
|
||||
'backup_successful_subject' => 'Успішне резервне копіювання :application_name',
|
||||
'backup_successful_subject_title' => 'Успішно створена резервна копія!',
|
||||
'backup_successful_body' => 'Чудова новина, нова резервна копія :application_name успішно створена і збережена на диск :disk_name.',
|
||||
|
||||
'cleanup_failed_subject' => 'Не вдалось очистити резервні копії :application_name',
|
||||
'cleanup_failed_body' => 'Сталася помилка під час очищення резервних копій :application_name',
|
||||
|
||||
'cleanup_successful_subject' => 'Успішне очищення від резервних копій :application_name',
|
||||
'cleanup_successful_subject_title' => 'Очищення резервних копій пройшло вдало!',
|
||||
'cleanup_successful_body' => 'Очищенно від старих резервних копій :application_name на диску :disk_name пойшло успішно.',
|
||||
|
||||
'healthy_backup_found_subject' => 'Резервна копія :application_name з диску :disk_name установлена',
|
||||
'healthy_backup_found_subject_title' => 'Резервна копія :application_name установлена',
|
||||
'healthy_backup_found_body' => 'Резервна копія :application_name успішно установлена. Хороша робота!',
|
||||
|
||||
'unhealthy_backup_found_subject' => 'Увага: резервна копія :application_name не установилась',
|
||||
'unhealthy_backup_found_subject_title' => 'Увага: резервна копія для :application_name не установилась. :problem',
|
||||
'unhealthy_backup_found_body' => 'Резервна копія для :application_name на диску :disk_name не установилась.',
|
||||
'unhealthy_backup_found_not_reachable' => 'Резервна копія не змогла установитись. :error',
|
||||
'unhealthy_backup_found_empty' => 'Резервні копії для цього додатку відсутні.',
|
||||
'unhealthy_backup_found_old' => 'Останнє резервне копіювання створено :date є застарілим.',
|
||||
'unhealthy_backup_found_unknown' => 'Вибачте, але ми не змогли визначити точну причину.',
|
||||
'unhealthy_backup_found_full' => 'Резервні копії використовують занадто багато пам`яті. Використовується :disk_usage що вище за допустиму межу :disk_limit.',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => '异常信息: :message',
|
||||
'exception_trace' => '异常跟踪: :trace',
|
||||
'exception_message_title' => '异常信息',
|
||||
'exception_trace_title' => '异常跟踪',
|
||||
|
||||
'backup_failed_subject' => ':application_name 备份失败',
|
||||
'backup_failed_body' => '重要说明:备份 :application_name 时发生错误',
|
||||
|
||||
'backup_successful_subject' => ':application_name 备份成功',
|
||||
'backup_successful_subject_title' => '备份成功!',
|
||||
'backup_successful_body' => '好消息, :application_name 备份成功,位于磁盘 :disk_name 中。',
|
||||
|
||||
'cleanup_failed_subject' => '清除 :application_name 的备份失败。',
|
||||
'cleanup_failed_body' => '清除备份 :application_name 时发生错误',
|
||||
|
||||
'cleanup_successful_subject' => '成功清除 :application_name 的备份',
|
||||
'cleanup_successful_subject_title' => '成功清除备份!',
|
||||
'cleanup_successful_body' => '成功清除 :disk_name 磁盘上 :application_name 的备份。',
|
||||
|
||||
'healthy_backup_found_subject' => ':disk_name 磁盘上 :application_name 的备份是健康的',
|
||||
'healthy_backup_found_subject_title' => ':application_name 的备份是健康的',
|
||||
'healthy_backup_found_body' => ':application_name 的备份是健康的。干的好!',
|
||||
|
||||
'unhealthy_backup_found_subject' => '重要说明::application_name 的备份不健康',
|
||||
'unhealthy_backup_found_subject_title' => '重要说明::application_name 备份不健康。 :problem',
|
||||
'unhealthy_backup_found_body' => ':disk_name 磁盘上 :application_name 的备份不健康。',
|
||||
'unhealthy_backup_found_not_reachable' => '无法访问备份目标。 :error',
|
||||
'unhealthy_backup_found_empty' => '根本没有此应用程序的备份。',
|
||||
'unhealthy_backup_found_old' => '最近的备份创建于 :date ,太旧了。',
|
||||
'unhealthy_backup_found_unknown' => '对不起,确切原因无法确定。',
|
||||
'unhealthy_backup_found_full' => '备份占用了太多存储空间。当前占用了 :disk_usage ,高于允许的限制 :disk_limit。',
|
||||
];
|
@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'exception_message' => '異常訊息: :message',
|
||||
'exception_trace' => '異常追蹤: :trace',
|
||||
'exception_message_title' => '異常訊息',
|
||||
'exception_trace_title' => '異常追蹤',
|
||||
|
||||
'backup_failed_subject' => ':application_name 備份失敗',
|
||||
'backup_failed_body' => '重要說明:備份 :application_name 時發生錯誤',
|
||||
|
||||
'backup_successful_subject' => ':application_name 備份成功',
|
||||
'backup_successful_subject_title' => '備份成功!',
|
||||
'backup_successful_body' => '好消息, :application_name 備份成功,位於磁盤 :disk_name 中。',
|
||||
|
||||
'cleanup_failed_subject' => '清除 :application_name 的備份失敗。',
|
||||
'cleanup_failed_body' => '清除備份 :application_name 時發生錯誤',
|
||||
|
||||
'cleanup_successful_subject' => '成功清除 :application_name 的備份',
|
||||
'cleanup_successful_subject_title' => '成功清除備份!',
|
||||
'cleanup_successful_body' => '成功清除 :disk_name 磁盤上 :application_name 的備份。',
|
||||
|
||||
'healthy_backup_found_subject' => ':disk_name 磁盤上 :application_name 的備份是健康的',
|
||||
'healthy_backup_found_subject_title' => ':application_name 的備份是健康的',
|
||||
'healthy_backup_found_body' => ':application_name 的備份是健康的。幹的好!',
|
||||
|
||||
'unhealthy_backup_found_subject' => '重要說明::application_name 的備份不健康',
|
||||
'unhealthy_backup_found_subject_title' => '重要說明::application_name 備份不健康。 :problem',
|
||||
'unhealthy_backup_found_body' => ':disk_name 磁盤上 :application_name 的備份不健康。',
|
||||
'unhealthy_backup_found_not_reachable' => '無法訪問備份目標。 :error',
|
||||
'unhealthy_backup_found_empty' => '根本沒有此應用程序的備份。',
|
||||
'unhealthy_backup_found_old' => '最近的備份創建於 :date ,太舊了。',
|
||||
'unhealthy_backup_found_unknown' => '對不起,確切原因無法確定。',
|
||||
'unhealthy_backup_found_full' => '備份佔用了太多存儲空間。當前佔用了 :disk_usage ,高於允許的限制 :disk_limit。',
|
||||
];
|
@ -1,92 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'menuTitle' => '.env Editor',
|
||||
'controllerMessages' => [
|
||||
'backupWasCreated' => 'A new backup was created',
|
||||
'fileWasRestored' => 'The backup file ":name", was restored as default .env',
|
||||
'fileWasDeleted' => 'The backup file ":name", was deleted',
|
||||
'currentEnvWasReplacedByTheUploadedFile' => 'File was uploaded and become the new .env file',
|
||||
'uploadedFileSavedAsBackup' => 'File was uploaded as backup with the name ":name"',
|
||||
'keyWasAdded' => 'Key ":name" was added',
|
||||
'keyWasEdited' => 'Key ":name" has ben updated',
|
||||
'keyWasDeleted' => 'Key ":name" was Deleted',
|
||||
],
|
||||
'views' => [
|
||||
'tabTitles' => [
|
||||
'upload' => 'Upload',
|
||||
'backup' => 'Backups',
|
||||
'currentEnv' => 'Current .env',
|
||||
],
|
||||
'currentEnv' => [
|
||||
'title' => '
|
||||
To be able to save values you see here PHP needs to be able to write to your current directory.
|
||||
Strings with a # in front of them are comments and wont affect anything.
|
||||
',
|
||||
'tableTitles' => [
|
||||
'key' => 'Key',
|
||||
'value' => 'Value',
|
||||
'actions' => 'Actions',
|
||||
],
|
||||
'btn' => [
|
||||
'edit' => 'Edit File',
|
||||
'delete' => 'Delete Key',
|
||||
'addAfterKey' => 'Add new key after this key',
|
||||
'addNewKey' => 'Add New key',
|
||||
'deleteConfigCache' => 'Clear config cache',
|
||||
'deleteConfigCacheDesc' => 'On production environments changed values may not applied immediately cause of cached config. So you may try to un-cache it',
|
||||
],
|
||||
'modal' => [
|
||||
'title' => [
|
||||
'new' => 'New Key',
|
||||
'edit' => 'Edit Key',
|
||||
'delete' => 'Delete Key',
|
||||
],
|
||||
'input' => [
|
||||
'key' => 'Key',
|
||||
'value' => 'Value',
|
||||
],
|
||||
'btn' => [
|
||||
'close' => 'Close',
|
||||
'new' => 'Add Key',
|
||||
'edit' => 'Update Key',
|
||||
'delete' => 'Delete Key',
|
||||
],
|
||||
],
|
||||
|
||||
],
|
||||
'upload' => [
|
||||
'title' => 'Here You can upload a new ".env" file as a backup or to replace the current ".env"',
|
||||
'selectFilePrompt' => 'Select File',
|
||||
'btn' => [
|
||||
'clearFile' => 'Cancel',
|
||||
'uploadAsBackup' => 'Upload as backup',
|
||||
'uploadAndReplace' => 'Upload and replace current .env',
|
||||
],
|
||||
],
|
||||
'backup' => [
|
||||
'title' => 'Here you can see a list of saved backup files (if you have), you can create a new one, or download the .env file',
|
||||
'tableTitles' => [
|
||||
'filename' => 'File Name',
|
||||
'created_at' => 'Creation Date',
|
||||
'actions' => 'Actions',
|
||||
],
|
||||
'noBackUpItems' => 'There are no backups on your chosen directory. <br> You can make your first backup by pressing the "Get a new BackUp" button',
|
||||
'btn' => [
|
||||
'backUpCurrentEnv' => 'Get a new BackUp',
|
||||
'downloadCurrentEnv' => 'Download current .env',
|
||||
'download' => 'Download File',
|
||||
'delete' => 'Delete File',
|
||||
'restore' => 'Restore File',
|
||||
'viewContent' => 'View file Contents',
|
||||
],
|
||||
],
|
||||
],
|
||||
'exceptions' => [
|
||||
'fileNotExists' => 'File ":name" does not Exists !!!',
|
||||
'keyAlreadyExists' => 'Key ":name" already Exists !!!',
|
||||
'keyNotExists' => 'Key ":name" does not Exists !!!',
|
||||
'provideFileName' => 'You have to provide a FileName !!!',
|
||||
],
|
||||
|
||||
];
|
@ -27,15 +27,15 @@
|
||||
<!--logo End-->
|
||||
<h4 class="logo-title ms-3">{{env('APP_NAME')}}</h4>
|
||||
</a>
|
||||
<h2 class="mb-2 text-center mt-4">Verification Status</h2>
|
||||
<p class="text-center"><b>Your account is still pending verification</b></p>
|
||||
<p class="text-center mb-4">Your account is currently unverified and requires manual verification by an administrator.</p>
|
||||
<h2 class="mb-2 text-center mt-4">{{__('messages.Verification Status')}}</h2>
|
||||
<p class="text-center"><b>{{__('messages.auth_pending')}}</b></p>
|
||||
<p class="text-center mb-4">{{__('messages.auth_unverified')}}</p>
|
||||
|
||||
<form method="POST" action="{{ route('logout') }}">
|
||||
@csrf
|
||||
|
||||
<button type="submit" class="btn btn-primary mt-2">
|
||||
{{ __('Log out') }}
|
||||
{{ __('messages.Log out') }}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -7,7 +7,7 @@
|
||||
</x-slot>
|
||||
|
||||
<div class="mb-4 text-sm text-gray-600">
|
||||
{{ __('This is a secure area of the application. Please confirm your password before continuing.') }}
|
||||
{{__('messages.auth_password')}}
|
||||
</div>
|
||||
|
||||
<!-- Validation Errors -->
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
<div class="flex justify-end mt-4">
|
||||
<x-button>
|
||||
{{ __('Confirm') }}
|
||||
{{__('messages.Confirm')}}
|
||||
</x-button>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -36,8 +36,8 @@ foreach($pages as $page)
|
||||
<!--logo End-->
|
||||
<h4 class="logo-title ms-3">{{env('APP_NAME')}}</h4>
|
||||
</a>
|
||||
<h2 class="mb-2 text-center">Forgot your password?</h2>
|
||||
<p class="text-center">No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.</p>
|
||||
<h2 class="mb-2 text-center">{{__('messages.Forgot your password?')}}</h2>
|
||||
<p class="text-center">{{__('messages.No problem')}}</p>
|
||||
<form method="POST" action="{{ route('password.email') }}" class="row">
|
||||
@csrf
|
||||
|
||||
@ -49,13 +49,13 @@ foreach($pages as $page)
|
||||
|
||||
<!-- Email Address -->
|
||||
<div class="col-lg-12 form-group pb-2">
|
||||
<label for="email" class="form-label">Email</label>
|
||||
<label for="email" class="form-label">{{__('messages.Email')}}</label>
|
||||
|
||||
<input id="email" class="form-control" type="email" name="email" :value="old('email')" placeholder=" " required autofocus />
|
||||
</div>
|
||||
|
||||
<div class="col-lg-12 d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-primary">{{ __('Email Password Reset Link') }}</button>
|
||||
<button type="submit" class="btn btn-primary">{{__('messages.Email Password Reset Link')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -42,36 +42,36 @@ foreach($pages as $page)
|
||||
<!--logo End-->
|
||||
<h4 class="logo-title ms-3">{{env('APP_NAME')}}</h4>
|
||||
</a>
|
||||
<h2 class="mb-2 text-center">Sign In</h2>
|
||||
<p class="text-center">Login to stay connected.</p>
|
||||
<h2 class="mb-2 text-center">{{__('messages.Sign In')}}</h2>
|
||||
<p class="text-center">{{__('messages.Login to stay connected')}}.</p>
|
||||
<form method="POST" action="{{ route('login') }}">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="email" class="form-label">Email</label>
|
||||
<label for="email" class="form-label">{{__('messages.Email')}}</label>
|
||||
<input type="email" class="form-control" id="email" name="email" aria-describedby="email" placeholder=" " :value="old('email')" required autofocus >
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="password" class="form-label">Password</label>
|
||||
<label for="password" class="form-label">{{__('messages.Password')}}</label>
|
||||
<input type="password" class="form-control" id="password" aria-describedby="password" placeholder=" " name="password" required autocomplete="current-password" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12 d-flex justify-content-between">
|
||||
<div class="form-check mb-3">
|
||||
<input type="checkbox" class="form-check-input" name="remember" id="remember_me">
|
||||
<label class="form-check-label" for="remember_me">Remember Me</label>
|
||||
<label class="form-check-label" for="remember_me">{{__('messages.Remember Me')}}</label>
|
||||
</div>
|
||||
<a href="{{ route('password.request') }}">Forgot Password?</a>
|
||||
<a href="{{ route('password.request') }}">{{__('messages.Forgot Password?')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-content-center">
|
||||
<button type="submit" class="btn btn-primary">Sign In</button>
|
||||
<button type="submit" class="btn btn-primary">{{__('messages.Sign In')}}</button>
|
||||
</div>
|
||||
@if(env('ENABLE_SOCIAL_LOGIN') == 'true')
|
||||
<p class="text-center my-3">or sign in with other accounts?</p>
|
||||
<p class="text-center my-3">{{__('messages.or sign in with other accounts?')}}</p>
|
||||
<div class="d-flex justify-content-center">
|
||||
<ul class="list-group list-group-horizontal list-group-flush">
|
||||
@if(!empty(env('FACEBOOK_CLIENT_ID')))
|
||||
@ -109,7 +109,7 @@ foreach($pages as $page)
|
||||
@endif
|
||||
@if ((env('ALLOW_REGISTRATION')) and !config('linkstack.single_user_mode'))
|
||||
<p class="mt-3 text-center">
|
||||
Don’t have an account? <a href="{{ route('register') }}" class="text-underline">Click here to sign up.</a>
|
||||
{{__('messages.Don’t have an account?')}} <a href="{{ route('register') }}" class="text-underline">{{__('messages.Click here to sign up')}}.</a>
|
||||
</p>
|
||||
@endif
|
||||
</form>
|
||||
|
@ -42,47 +42,47 @@ foreach($pages as $page)
|
||||
<!--logo End-->
|
||||
<h4 class="logo-title ms-3">{{env('APP_NAME')}}</h4>
|
||||
</a>
|
||||
<h2 class="mb-2 text-center">Sign Up</h2>
|
||||
<p class="text-center">Register to stay connected.</p>
|
||||
<h2 class="mb-2 text-center">{{__('messages.Sign Up')}}</h2>
|
||||
<p class="text-center">{{__('messages.Register to stay connected')}}.</p>
|
||||
<form method="POST" action="{{ route('register') }}">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="name" class="form-label">Display Name</label>
|
||||
<label for="name" class="form-label">{{__('messages.Display Name')}}</label>
|
||||
<input type="text" class="form-control" id="name" name="name" aria-describedby="name" placeholder=" " :value="old('name')" required autofocus >
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="email" class="form-label">Email</label>
|
||||
<label for="email" class="form-label">{{__('messages.Email')}}</label>
|
||||
<input type="email" class="form-control" id="email" name="email" aria-describedby="email" placeholder=" " :value="old('email')" required autofocus >
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="password" class="form-label">Password</label>
|
||||
<label for="password" class="form-label">{{__('messages.Password')}}</label>
|
||||
<input type="password" class="form-control" id="password" aria-describedby="password" placeholder=" " name="password" required autocomplete="new-password" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="password_confirmation" class="form-label">Confirm Password</label>
|
||||
<label for="password_confirmation" class="form-label">{{__('messages.Confirm Password')}}</label>
|
||||
<input type="password" class="form-control" id="password_confirmation" aria-describedby="password_confirmation" placeholder=" " name="password_confirmation" required />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12 d-flex justify-content-between">
|
||||
<div class="form-check mb-3">
|
||||
<input type="checkbox" class="form-check-input" name="remember" id="remember_me">
|
||||
<label class="form-check-label" for="remember_me">Remember Me</label>
|
||||
<label class="form-check-label" for="remember_me">{{__('messages.Remember Me')}}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-content-center">
|
||||
<button type="submit" class="btn btn-primary">Sign Up</button>
|
||||
<button type="submit" class="btn btn-primary">{{__('messages.Sign Up')}}</button>
|
||||
</div>
|
||||
@if(env('ENABLE_SOCIAL_LOGIN') == 'true')
|
||||
<p class="text-center my-3">or sign in with other accounts?</p>
|
||||
<p class="text-center my-3">{{__('messages.or sign in with other accounts?')}}</p>
|
||||
<div class="d-flex justify-content-center">
|
||||
<ul class="list-group list-group-horizontal list-group-flush">
|
||||
@if(!empty(env('FACEBOOK_CLIENT_ID')))
|
||||
@ -119,7 +119,7 @@ foreach($pages as $page)
|
||||
<br>
|
||||
@endif
|
||||
<p class="mt-3 text-center">
|
||||
Already have an account? <a href="{{ route('login') }}" class="text-underline">Click here to sign in.</a>
|
||||
{{__('messages.Already have an account?')}} <a href="{{ route('login') }}" class="text-underline">{{__('messages.Click here to sign in')}}.</a>
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -30,8 +30,8 @@
|
||||
<!--logo End-->
|
||||
<h4 class="logo-title ms-3">{{env('APP_NAME')}}</h4>
|
||||
</a>
|
||||
<h2 class="mb-2 text-center">Reset Password</h2>
|
||||
<p class="text-center">Enter a new password</p>
|
||||
<h2 class="mb-2 text-center">{{__('messages.Reset Password')}}</h2>
|
||||
<p class="text-center">{{__('messages.Enter a new password')}}</p>
|
||||
<form method="POST" action="{{ route('password.update') }}">
|
||||
@csrf
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
<!-- Email Address -->
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="email" class="form-label">{{ __('Email') }}</label>
|
||||
<label for="email" class="form-label">{{ __('messages.Email') }}</label>
|
||||
<input id="email" class="form-control" type="email" name="email" value="{{ old('email', $request->email) }}" required autofocus>
|
||||
</div>
|
||||
</div>
|
||||
@ -50,7 +50,7 @@
|
||||
<!-- Password -->
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="password" class="form-label">{{ __('Password') }}</label>
|
||||
<label for="password" class="form-label">{{ __('messages.Password') }}</label>
|
||||
<input id="password" class="form-control" type="password" name="password" required>
|
||||
</div>
|
||||
</div>
|
||||
@ -58,7 +58,7 @@
|
||||
<!-- Confirm Password -->
|
||||
<div class="col-lg-12">
|
||||
<div class="form-group">
|
||||
<label for="password_confirmation" class="form-label">{{ __('Confirm Password') }}</label>
|
||||
<label for="password_confirmation" class="form-label">{{ __('messages.Confirm Password') }}</label>
|
||||
<input id="password_confirmation" class="form-control" type="password" name="password_confirmation" required>
|
||||
</div>
|
||||
</div>
|
||||
@ -67,14 +67,14 @@
|
||||
<div class="col-lg-12 d-flex justify-content-between">
|
||||
<div class="form-check mb-3">
|
||||
<input id="remember_me" class="form-check-input" type="checkbox" name="remember">
|
||||
<label for="remember_me" class="form-check-label">{{ __('Remember Me') }}</label>
|
||||
<label for="remember_me" class="form-check-label">{{ __('messages.Remember Me') }}</label>
|
||||
</div>
|
||||
<a href="{{ route('password.request') }}">{{ __('Forgot Password?') }}</a>
|
||||
<a href="{{ route('password.request') }}">{{ __('messages.Forgot Password?') }}</a>
|
||||
</div>
|
||||
|
||||
<!-- Reset Password Button -->
|
||||
<div class="col-lg-12 d-flex justify-content-end">
|
||||
<button class="btn btn-primary">{{ __('Reset Password') }}</button>
|
||||
<button class="btn btn-primary">{{ __('messages.Reset Password') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<x-guest-layout>
|
||||
<div class="mb-4 text-sm text-gray-600">
|
||||
{{ __('Test E-Mail') }}
|
||||
</div>
|
||||
<br><br>
|
||||
<div class="mb-4 text-sm text-gray-600">
|
||||
{{ __('messages.Test E-Mail') }}
|
||||
</div>
|
||||
<br><br>
|
||||
</x-guest-layout>
|
||||
|
@ -1,8 +1,8 @@
|
||||
<x-guest-layout>
|
||||
<div class="mb-4 text-sm text-gray-600">
|
||||
<h2>A new user has registered on {{ str_replace(['http://', 'https://'], '', url('')) }} and is awaiting verification</h2>
|
||||
<p>The user <i>{{$user}}</i> with the email <i>{{$email}}</i> has registered a new account on {{ url('') }} and is awaiting confirmation by an admin. Click <a href="{{ url('admin/users/all') }}">here</a> to verify the user.</p>
|
||||
<h2>{{__('messages.A new user has registered on')}} {{ str_replace(['http://', 'https://'], '', url('')) }} {{__('messages.and is awaiting verification')}}</h2>
|
||||
<p>{{__('messages.The user')}} <i>{{$user}}</i> {{__('messages.with the email')}} <i>{{$email}}</i> {{__('messages.has registered a new account on')}} {{ url('') }} {{__('messages.and is awaiting confirmation by an admin')}} {{__('messages.Click')}} <a href="{{ url('admin/users/all') }}">{{__('messages.here')}}</a> {{__('messages.to verify the user')}}</p>
|
||||
</div>
|
||||
<a href="{{ url('admin/users/all') }}"><button>Manage users</button></a>
|
||||
<a href="{{ url('admin/users/all') }}"><button>{{__('messages.Manage users')}}</button></a>
|
||||
<br><br>
|
||||
</x-guest-layout>
|
||||
|
@ -28,12 +28,12 @@
|
||||
<h4 class="logo-title ms-3">{{env('APP_NAME')}}</h4>
|
||||
</a>
|
||||
<div class="mb-4 text-sm text-gray-600">
|
||||
{{ __('Thanks for signing up! Before getting started, could you verify your email address by clicking on the link we just emailed to you? If you didn\'t receive the email, we will gladly send you another. If you do not see the email in a few minutes, check your junk mail or spam folder.') }}
|
||||
{{__('messages.auth_thanks')}}
|
||||
</div>
|
||||
|
||||
@if (session('status') == 'verification-link-sent')
|
||||
<div class="font-medium text-sm text-green-600">
|
||||
{{ __('A new verification link has been sent to the email address you provided during registration.') }}
|
||||
{{__('messages.auth_verification')}}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
|
||||
<div>
|
||||
<button type="submit" class="btn btn-gray mb-2">
|
||||
{{ __('Resend Verification Email') }}
|
||||
{{__('messages.Resend Verification Email')}}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
@ -54,7 +54,7 @@
|
||||
@csrf
|
||||
|
||||
<button type="submit" class="btn btn-primary mt-2">
|
||||
{{ __('Log out') }}
|
||||
{{ __('messages.Log out') }}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<title>Backup</title>
|
||||
<title>{{__('messages.Backup.title')}}</title>
|
||||
@extends('layouts.updater')
|
||||
|
||||
@Push('updater-body')
|
||||
@ -12,12 +12,12 @@
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
<div class="logo-centered">l</div>
|
||||
</div>
|
||||
<h1>Backup</h1>
|
||||
<h4 class="">You can back up your entire instance:</h4>
|
||||
<h5 class="">The backup system won't save more than two backups at a time.</h5>
|
||||
<h1>{{__('messages.Backup')}}</h1>
|
||||
<h4 class="">{{__('messages.You can back up your entire instance:')}}</h4>
|
||||
<h5 class="">{{__('messages.The backup system won’t save more than two backups at a time')}}</h5>
|
||||
<br><div class="row">
|
||||
 <a class="btn" href="{{url()->current()}}/?backup"><button><i class="fa-solid fa-floppy-disk"></i> Backup Instance</button></a> 
|
||||
 <a class="btn" href="{{ route('showBackups') }}"><button><i class="fa-solid fa-box-archive"></i> All Backups</button></a> 
|
||||
 <a class="btn" href="{{url()->current()}}/?backup"><button><i class="fa-solid fa-floppy-disk"></i> {{__('messages.Backup Instance')}}</button></a> 
|
||||
 <a class="btn" href="{{ route('showBackups') }}"><button><i class="fa-solid fa-box-archive"></i> {{__('messages.All Backups')}}</button></a> 
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo-loading.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1 class="loadingtxt">Creating backup</h1>
|
||||
<h1 class="loadingtxt">{{__('messages.Creating backup')}}</h1>
|
||||
@endif
|
||||
|
||||
@if($_SERVER['QUERY_STRING'] === 'backups')
|
||||
@ -51,11 +51,11 @@ exit(); ?>
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>Success!</h1>
|
||||
<h4 class="">The backup was successful, you can now return to the Admin Panel or see all your backups.</h4>
|
||||
<h1>{{__('messages.Success!')}}</h1>
|
||||
<h4 class="">{{__('messages.The backup was successful')}}</h4>
|
||||
<br><div class="row">
|
||||
 <a class="btn" href="{{ url('dashboard') }}"><button><i class="fa-solid fa-house-laptop btn"></i> Admin Panel</button></a> 
|
||||
 <a class="btn" href="{{ url('admin/config#4') }}"><button><i class="fa-solid fa-box-archive"></i> All Backups</button></a> 
|
||||
 <a class="btn" href="{{ url('dashboard') }}"><button><i class="fa-solid fa-house-laptop btn"></i> {{__('messages.Admin Panel')}}</button></a> 
|
||||
 <a class="btn" href="{{ url('admin/config#4') }}"><button><i class="fa-solid fa-box-archive"></i> {{__('messages.All Backups')}}</button></a> 
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
@ -1,24 +1,23 @@
|
||||
<p>Allows editing the frontend of your site. Amongst other things, this file allows customization of:<br>
|
||||
Home Page, links, titles, Google Analytics and meta tags.</p>
|
||||
<form action="{{ route('editAC') }}" method="post">
|
||||
@csrf
|
||||
<div class="form-group">
|
||||
<label>Advanced Configuration file.</label>
|
||||
<textarea style="width:100%;display:none;" class="form-control" name="AdvancedConfig" rows="280">{{ file_get_contents('config/advanced-config.php') }}</textarea>
|
||||
<div id="editor" style="width:100%; height:<?php echo count(file('config/advanced-config.php')) * 24 + 15;?>px; background-color:transparent !important;" class="form-control border-1 border-light" name="AdvancedConfig" rows="280">{{ file_get_contents('config/advanced-config.php') }}</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Save</button>
|
||||
<a class="btn btn-danger confirmation" href="{{url('/admin/advanced-config?restore-defaults')}}">Restore defaults</a>
|
||||
<script type="text/javascript">
|
||||
var elems = document.getElementsByClassName('confirmation');
|
||||
var confirmIt = function (e) {
|
||||
if (!confirm('Are you sure?')) e.preventDefault();
|
||||
};
|
||||
for (var i = 0, l = elems.length; i < l; i++) {
|
||||
elems[i].addEventListener('click', confirmIt, false);
|
||||
}
|
||||
</script>
|
||||
</form>
|
||||
<p>{{__('messages.AC.description')}}</p>
|
||||
<form action="{{ route('editAC') }}" method="post">
|
||||
@csrf
|
||||
<div class="form-group">
|
||||
<label>{{__('messages.Advanced Configuration file.')}}</label>
|
||||
<textarea style="width:100%;display:none;" class="form-control" name="AdvancedConfig" rows="280">{{ file_get_contents('config/advanced-config.php') }}</textarea>
|
||||
<div id="editor" style="width:100%; height:<?php echo count(file('config/advanced-config.php')) * 24 + 15;?>px; background-color:transparent !important;" class="form-control border-1 border-light" name="AdvancedConfig" rows="280">{{ file_get_contents('config/advanced-config.php') }}</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">{{__('messages.Save')}}</button>
|
||||
<a class="btn btn-danger confirmation" href="{{url('/admin/advanced-config?restore-defaults')}}">{{__('messages.Restore defaults')}}</a>
|
||||
<script type="text/javascript">
|
||||
var elems = document.getElementsByClassName('confirmation');
|
||||
var confirmIt = function (e) {
|
||||
if (!confirm('Are you sure?')) e.preventDefault();
|
||||
};
|
||||
for (var i = 0, l = elems.length; i < l; i++) {
|
||||
elems[i].addEventListener('click', confirmIt, false);
|
||||
}
|
||||
</script>
|
||||
</form>
|
||||
|
||||
|
||||
<script src="{{ asset('assets/external-dependencies/ace.js') }}" type="text/javascript" charset="utf-8"></script>
|
||||
@ -26,10 +25,10 @@ Home Page, links, titles, Google Analytics and meta tags.</p>
|
||||
var editor = ace.edit("editor");
|
||||
//if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
if(!$('#toggle-switch').is(':checked')){
|
||||
// dark mode
|
||||
editor.setTheme("ace/theme/tomorrow_night");
|
||||
// dark mode
|
||||
editor.setTheme("ace/theme/tomorrow_night");
|
||||
} else {
|
||||
editor.setTheme("ace/theme/xcode");
|
||||
editor.setTheme("ace/theme/xcode");
|
||||
}
|
||||
editor.getSession().setMode("ace/mode/javascript");
|
||||
editor.session.setUseWorker(false);
|
||||
|
@ -1,48 +1,48 @@
|
||||
<section class="shadow text-gray-400">
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-pencil-square"> .ENV</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
|
||||
|
||||
<form action="{{ route('editENV') }}" method="post">
|
||||
@csrf
|
||||
<div class="form-group">
|
||||
<label>Strings with a # in front of them are comments and wont affect anything.</label>
|
||||
<textarea style="width:100%!important;display:none;" class="form-control" name="altConfig" rows="{{count(file('.env'))}}">{{ file_get_contents('.env') }}</textarea>
|
||||
<div id="editor2" style="width:100%; height:<?php echo count(file('.env')) * 24 + 50;?>px;" class="form-control" name="altConfig" rows="280">{{ file_get_contents('.env') }}</div>
|
||||
</div>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">Save</button>
|
||||
</form>
|
||||
|
||||
<script src="{{ asset('assets/external-dependencies/ace.js') }}" type="text/javascript" charset="utf-8"></script>
|
||||
<script>
|
||||
var editor = ace.edit("editor2");
|
||||
editor.setTheme("ace/theme/xcode");
|
||||
editor.getSession().setMode("ace/mode/ruby");
|
||||
</script>
|
||||
<script>
|
||||
editor.getSession().on('change', function(e) {
|
||||
$('textarea[name=altConfig]').val(editor.getSession().getValue());
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{{-- <style>
|
||||
.float{
|
||||
position:fixed;
|
||||
width:60px;
|
||||
height:60px;
|
||||
bottom:40px;
|
||||
right:40px;
|
||||
background-color:#0C9;
|
||||
color:#FFF;
|
||||
border-radius:5px;
|
||||
text-align:center;
|
||||
align-items: middle;
|
||||
box-shadow: 2px 2px 3px #999;
|
||||
display: flex;
|
||||
}
|
||||
</style>
|
||||
<a href="#" class="float">back</a> --}}
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-pencil-square"> .ENV</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
|
||||
|
||||
<form action="{{ route('editENV') }}" method="post">
|
||||
@csrf
|
||||
<div class="form-group">
|
||||
<label>{{__('messages.Strings with a # in front of them are comments and wont affect anything')}}</label>
|
||||
<textarea style="width:100%!important;display:none;" class="form-control" name="altConfig" rows="{{count(file('.env'))}}">{{ file_get_contents('.env') }}</textarea>
|
||||
<div id="editor2" style="width:100%; height:<?php echo count(file('.env')) * 24 + 50;?>px;" class="form-control" name="altConfig" rows="280">{{ file_get_contents('.env') }}</div>
|
||||
</div>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">{{__('messages.Save')}}</button>
|
||||
</form>
|
||||
|
||||
<script src="{{ asset('assets/external-dependencies/ace.js') }}" type="text/javascript" charset="utf-8"></script>
|
||||
<script>
|
||||
var editor = ace.edit("editor2");
|
||||
editor.setTheme("ace/theme/xcode");
|
||||
editor.getSession().setMode("ace/mode/ruby");
|
||||
</script>
|
||||
<script>
|
||||
editor.getSession().on('change', function(e) {
|
||||
$('textarea[name=altConfig]').val(editor.getSession().getValue());
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{{-- <style>
|
||||
.float{
|
||||
position:fixed;
|
||||
width:60px;
|
||||
height:60px;
|
||||
bottom:40px;
|
||||
right:40px;
|
||||
background-color:#0C9;
|
||||
color:#FFF;
|
||||
border-radius:5px;
|
||||
text-align:center;
|
||||
align-items: middle;
|
||||
box-shadow: 2px 2px 3px #999;
|
||||
display: flex;
|
||||
}
|
||||
</style>
|
||||
<a href="#" class="float">back</a> --}}
|
@ -1,70 +1,70 @@
|
||||
<style>
|
||||
.label-container{
|
||||
position:fixed;
|
||||
bottom:48px;
|
||||
right:105px;
|
||||
display:table;
|
||||
visibility: hidden;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
.label-text{
|
||||
color:#FFF;
|
||||
background:rgba(51,51,51,0.5);
|
||||
display:table-cell;
|
||||
vertical-align:middle;
|
||||
padding:10px;
|
||||
border-radius:3px;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
.label-arrow{
|
||||
display:table-cell;
|
||||
vertical-align:middle;
|
||||
color:#333;
|
||||
opacity:0.5;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
.float{
|
||||
position:fixed;
|
||||
width:60px;
|
||||
height:60px;
|
||||
bottom:40px;
|
||||
right:40px;
|
||||
background-color:#17a2b8;
|
||||
color:#FFF;
|
||||
border-radius:50px;
|
||||
text-align:center;
|
||||
box-shadow: 2px 2px 3px #111;
|
||||
z-index: 2000;
|
||||
}
|
||||
.float:hover{
|
||||
color: white;
|
||||
-webkit-filter: brightness(90%);
|
||||
}
|
||||
|
||||
.my-float{
|
||||
font-size:35px;
|
||||
margin-top:15px;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
a.float + div.label-container {
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
transition: visibility 0s, opacity 0.5s ease;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
a.float:hover + div.label-container{
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
</style>
|
||||
<a href="{{url('admin/config')}}" class="float">
|
||||
<i class="bi bi-arrow-left-short my-float"></i>
|
||||
</a>
|
||||
<div class="label-container">
|
||||
<div class="label-text">Go back</div>
|
||||
</div>
|
||||
.label-container{
|
||||
position:fixed;
|
||||
bottom:48px;
|
||||
right:105px;
|
||||
display:table;
|
||||
visibility: hidden;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
.label-text{
|
||||
color:#FFF;
|
||||
background:rgba(51,51,51,0.5);
|
||||
display:table-cell;
|
||||
vertical-align:middle;
|
||||
padding:10px;
|
||||
border-radius:3px;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
.label-arrow{
|
||||
display:table-cell;
|
||||
vertical-align:middle;
|
||||
color:#333;
|
||||
opacity:0.5;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
.float{
|
||||
position:fixed;
|
||||
width:60px;
|
||||
height:60px;
|
||||
bottom:40px;
|
||||
right:40px;
|
||||
background-color:#17a2b8;
|
||||
color:#FFF;
|
||||
border-radius:50px;
|
||||
text-align:center;
|
||||
box-shadow: 2px 2px 3px #111;
|
||||
z-index: 2000;
|
||||
}
|
||||
.float:hover{
|
||||
color: white;
|
||||
-webkit-filter: brightness(90%);
|
||||
}
|
||||
|
||||
.my-float{
|
||||
font-size:35px;
|
||||
margin-top:15px;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
a.float + div.label-container {
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
transition: visibility 0s, opacity 0.5s ease;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
a.float:hover + div.label-container{
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
</style>
|
||||
<a href="{{url('admin/config')}}" class="float">
|
||||
<i class="bi bi-arrow-left-short my-float"></i>
|
||||
</a>
|
||||
<div class="label-container">
|
||||
<div class="label-text">{{__('messages.Go back')}}</div>
|
||||
</div>
|
@ -1,129 +1,130 @@
|
||||
|
||||
<style>
|
||||
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.container {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (min-width:700px) {
|
||||
.row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
|
||||
.logo-centered {
|
||||
/* top: 44vh; */
|
||||
font-size: 130px;
|
||||
}
|
||||
|
||||
.logo-img{
|
||||
/* position: relative; */
|
||||
width: 250px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.loading {
|
||||
animation: loading 3s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes loading {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
to {
|
||||
transform: rotate(359deg);
|
||||
.container {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.generic {
|
||||
margin: auto;
|
||||
width: 2.5em;
|
||||
height: 2.5em;
|
||||
border: 0.4em solid transparent;
|
||||
border-color: #eee;
|
||||
border-top-color: #333;
|
||||
border-radius: 50%;
|
||||
animation: loadingspin 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes loadingspin {
|
||||
100% {
|
||||
transform: rotate(360deg)
|
||||
}
|
||||
}
|
||||
|
||||
.loadingtxt:after {
|
||||
content: '.';
|
||||
animation: dots 1.5s steps(5, end) infinite;}
|
||||
|
||||
@keyframes dots {
|
||||
0%, 20% {
|
||||
color: rgba(0,0,0,0);
|
||||
text-shadow:
|
||||
.25em 0 0 rgba(0,0,0,0),
|
||||
.5em 0 0 rgba(0,0,0,0);}
|
||||
40% {
|
||||
color: white;
|
||||
text-shadow:
|
||||
.25em 0 0 rgba(0,0,0,0),
|
||||
.5em 0 0 rgba(0,0,0,0);}
|
||||
60% {
|
||||
text-shadow:
|
||||
.25em 0 0 white,
|
||||
.5em 0 0 rgba(0,0,0,0);}
|
||||
80%, 100% {
|
||||
text-shadow:
|
||||
.25em 0 0 white,
|
||||
.5em 0 0 white;}}
|
||||
</style>
|
||||
@push('sidebar-stylesheets')
|
||||
<link rel="stylesheet" href="{{ asset('assets/linkstack/css/animate.css') }}">
|
||||
<style>@font-face{font-family:'ll';src:url({{ asset('assets/linkstack/fonts/littlelink-custom.otf') }}) format("opentype")}</style>
|
||||
@endpush
|
||||
|
||||
<div class="container">
|
||||
|
||||
|
||||
<?php //landing page ?>
|
||||
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/just-gear.svg') }}" alt="Logo">
|
||||
<div class="logo-centered">l</div>
|
||||
</div>
|
||||
<h1 class="text-center">Backup</h1>
|
||||
<h4 class="text-center">You can back up your entire instance:</h4>
|
||||
<h5 class="text-center">The backup system won't save more than two backups at a time.</h5>
|
||||
<div class="d-flex justify-content-center">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-auto">
|
||||
<a href="{{url('backup/?backup')}}">
|
||||
<button class="btn btn-primary mt-3">
|
||||
<i class="fa-solid fa-floppy-disk me-2"></i> Backup Instance
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-12 col-md-auto">
|
||||
<a href="#4" data-toggle="tab">
|
||||
<button class="btn btn-primary mt-3">
|
||||
<i class="fa-solid fa-box-archive me-2"></i> All Backups
|
||||
</button>
|
||||
</a>
|
||||
|
||||
@media (min-width:700px) {
|
||||
.row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
|
||||
.logo-centered {
|
||||
/* top: 44vh; */
|
||||
font-size: 130px;
|
||||
}
|
||||
|
||||
.logo-img{
|
||||
/* position: relative; */
|
||||
width: 250px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.loading {
|
||||
animation: loading 3s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes loading {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
|
||||
.generic {
|
||||
margin: auto;
|
||||
width: 2.5em;
|
||||
height: 2.5em;
|
||||
border: 0.4em solid transparent;
|
||||
border-color: #eee;
|
||||
border-top-color: #333;
|
||||
border-radius: 50%;
|
||||
animation: loadingspin 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes loadingspin {
|
||||
100% {
|
||||
transform: rotate(360deg)
|
||||
}
|
||||
}
|
||||
|
||||
.loadingtxt:after {
|
||||
content: '.';
|
||||
animation: dots 1.5s steps(5, end) infinite;}
|
||||
|
||||
@keyframes dots {
|
||||
0%, 20% {
|
||||
color: rgba(0,0,0,0);
|
||||
text-shadow:
|
||||
.25em 0 0 rgba(0,0,0,0),
|
||||
.5em 0 0 rgba(0,0,0,0);}
|
||||
40% {
|
||||
color: white;
|
||||
text-shadow:
|
||||
.25em 0 0 rgba(0,0,0,0),
|
||||
.5em 0 0 rgba(0,0,0,0);}
|
||||
60% {
|
||||
text-shadow:
|
||||
.25em 0 0 white,
|
||||
.5em 0 0 rgba(0,0,0,0);}
|
||||
80%, 100% {
|
||||
text-shadow:
|
||||
.25em 0 0 white,
|
||||
.5em 0 0 white;}}
|
||||
</style>
|
||||
@push('sidebar-stylesheets')
|
||||
<link rel="stylesheet" href="{{ asset('assets/linkstack/css/animate.css') }}">
|
||||
<style>@font-face{font-family:'ll';src:url({{ asset('assets/linkstack/fonts/littlelink-custom.otf') }}) format("opentype")}</style>
|
||||
@endpush
|
||||
|
||||
<div class="container">
|
||||
|
||||
|
||||
<?php //landing page ?>
|
||||
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/just-gear.svg') }}" alt="Logo">
|
||||
<div class="logo-centered">l</div>
|
||||
</div>
|
||||
<h1 class="text-center">{{__('messages.Backup')}}</h1>
|
||||
<h4 class="text-center">{{__('messages.You can back up your entire instance:')}}</h4>
|
||||
<h5 class="text-center">{{__('messages.The backup system won’t save more than two backups at a time')}}</h5>
|
||||
<div class="d-flex justify-content-center">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-auto">
|
||||
<a href="{{url('backup/?backup')}}">
|
||||
<button class="btn btn-primary mt-3">
|
||||
<i class="fa-solid fa-floppy-disk me-2"></i> {{__('messages.Backup Instance')}}
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-12 col-md-auto">
|
||||
<a href="#4" data-toggle="tab">
|
||||
<button class="btn btn-primary mt-3">
|
||||
<i class="fa-solid fa-box-archive me-2"></i> {{__('messages.All Backups')}}
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -25,8 +25,8 @@
|
||||
@endif
|
||||
|
||||
<div class="container">
|
||||
<br><br><h3>Download your updater backups:</h3>
|
||||
<hp>The server will never store more that two backups at a time.</hp><br><br><br>
|
||||
<br><br><h3>{{__('messages.Download your updater backups:')}}</h3>
|
||||
<hp>{{__('messages.The server will never store more that two backups at a time')}}</hp><br><br><br>
|
||||
<?php
|
||||
$test="test";
|
||||
if ($handle = opendir('backups/updater-backups')) {
|
||||
@ -38,6 +38,6 @@
|
||||
|
||||
@else
|
||||
<div class="container">
|
||||
<h3>No backups found</h3></div>
|
||||
<h3>{{__('messages.No backups found')}}</h3></div>
|
||||
@endif
|
||||
<center><a data-toggle="tab" href="#3"><button class="btn btn-primary" style="padding:10px"><i class="fa-solid fa-floppy-disk"></i> Backup your instance</button></a></center>
|
||||
<center><a data-toggle="tab" href="#3"><button class="btn btn-primary" style="padding:10px"><i class="fa-solid fa-floppy-disk"></i> {{__('messages.Backup your instance')}}</button></a></center>
|
||||
|
@ -163,10 +163,10 @@ function toggle($key){
|
||||
<div class="form-group col-lg-8">
|
||||
<input value="toggle" name="type" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<input value="'.$key.'" name="entry" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<h5 style="margin-top:50px">'; foreach($configNames as $obj){if($obj->value == $key){echo $obj->title;}}; echo '</h5>
|
||||
<p class="text-muted">'; foreach($configNames as $obj){if($obj->value == $key){echo $obj->description;}}; echo '</p>
|
||||
<h5 style="margin-top:50px">'; echo __('messages.'.$key.'.title'); echo '</h5>
|
||||
<p class="text-muted">'; echo __('messages.'.$key.'.description'); echo '</p>
|
||||
<div class="input-group">
|
||||
<div class="mb-3 form-check form-switch toggle-btn"><input name="toggle" class="switch toggle-btn" type="checkbox" id="'.$key.'"'; if(EnvEditor::getKey($key) == 'false'){echo '/>';}else{echo 'checked>';} echo '<label for="'.$key.'" class="form-check-label">Enable</label></div>
|
||||
<div class="mb-3 form-check form-switch toggle-btn"><input name="toggle" class="switch toggle-btn" type="checkbox" id="'.$key.'"'; if(EnvEditor::getKey($key) == 'false'){echo '/>';}else{echo 'checked>';} echo '<label for="'.$key.'" class="form-check-label">'.__('messages.Enable').'</label></div>
|
||||
</div></div>
|
||||
<input type="hidden" name="_token" value="'.csrf_token().'">
|
||||
<script type="text/javascript">
|
||||
@ -188,10 +188,10 @@ function toggle2($key){
|
||||
<div class="form-group col-lg-8">
|
||||
<input value="toggle2" name="type" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<input value="'.$key.'" name="entry" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<h5 style="margin-top:50px">'; foreach($configNames as $obj){if($obj->value == $key){echo $obj->title;}}; echo '</h5>
|
||||
<p class="text-muted">'; foreach($configNames as $obj){if($obj->value == $key){echo $obj->description;}}; echo '</p>
|
||||
<h5 style="margin-top:50px">'; echo __('messages.'.$key.'.title'); echo '</h5>
|
||||
<p class="text-muted">'; echo __('messages.'.$key.'.description'); echo '</p>
|
||||
<div class="input-group">
|
||||
<div class="mb-3 form-check form-switch toggle-btn"><input name="toggle" class="switch toggle-btn" type="checkbox" id="'.$key.'"'; if(EnvEditor::getKey($key) == 'auth'){echo '/>';}else{echo 'checked>';} echo '<label for="'.$key.'" class="form-check-label">Enable</label></div>
|
||||
<div class="mb-3 form-check form-switch toggle-btn"><input name="toggle" class="switch toggle-btn" type="checkbox" id="'.$key.'"'; if(EnvEditor::getKey($key) == 'auth'){echo '/>';}else{echo 'checked>';} echo '<label for="'.$key.'" class="form-check-label">'.__('messages.Enable').'</label></div>
|
||||
</div></div>
|
||||
<input type="hidden" name="_token" value="'.csrf_token().'">
|
||||
<script type="text/javascript">
|
||||
@ -214,12 +214,12 @@ function text($key){
|
||||
<div class="form-group col-lg-8">
|
||||
<input value="text" name="type" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<input value="'.$key.'" name="entry" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<h5 style="margin-top:50px">'; foreach($configNames as $obj){if($obj->value == $key){echo $obj->title;}}; echo '</h5>
|
||||
<p class="text-muted">'; foreach($configNames as $obj){if($obj->value == $key){echo $obj->description;}}; echo '</p>
|
||||
<h5 style="margin-top:50px">'; echo __('messages.'.$key.'.title'); echo '</h5>
|
||||
<p class="text-muted">'; echo __('messages.'.$key.'.description'); echo '</p>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control form-control-lg" style="border-radius:.25rem;max-width:600px" class="form-control" name="value" value="'.$configValue.'" required>'; echo '
|
||||
<input type="hidden" name="_token" value="'.csrf_token().'">
|
||||
<button type="submit" class="btn btn-primary">Apply</button>
|
||||
<button type="submit" class="btn btn-primary">'.__('messages.Apply').'</button>
|
||||
</div></div>
|
||||
</form>
|
||||
';
|
||||
@ -227,7 +227,7 @@ function text($key){
|
||||
?>
|
||||
|
||||
|
||||
<a name="Application"><h2 class="ch2">Application</h2></a>
|
||||
<a name="Application"><h2 class="ch2">{{__('messages.Application')}}</h2></a>
|
||||
|
||||
@if(!config('linkstack.single_user_mode'))
|
||||
{{toggle('ALLOW_REGISTRATION')}}
|
||||
@ -247,13 +247,13 @@ function text($key){
|
||||
<div class="form-group col-lg-8">
|
||||
<input value="homeurl" name="type" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<input value="HOME_URL" name="entry" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<h5 style="margin-top:50px">Set user page as Home Page</h5>
|
||||
<p class="text-muted">Set a user page as the home page. This will move the previous home page to example.com/home.</p>
|
||||
<h5 style="margin-top:50px">{{__('messages.HOME_URL.title')}}</h5>
|
||||
<p class="text-muted">{{__('messages.HOME_URL.description')}}</p>
|
||||
<div class="input-group">
|
||||
|
||||
<select style="max-width:600px" class="form-control" name="value">
|
||||
@if($configValue2 != '')<option>{{$configValue2}}</option>@endif
|
||||
@if($configValue2 != 'default')<option>default</option>@endif
|
||||
@if($configValue2 != 'default')<option value="default">{{__('messages.default')}}</option>@endif
|
||||
<?php $users = DB::table('users')->where('littlelink_name', '!=', '')->get();
|
||||
foreach($users as $user){if($user->littlelink_name != $configValue2){echo '<option>' . $user->littlelink_name . '</option>';}} ?>
|
||||
</select>
|
||||
@ -274,7 +274,7 @@ foreach($users as $user){if($user->littlelink_name != $configValue2){echo '<opti
|
||||
{{toggle('HIDE_VERIFICATION_CHECKMARK')}}
|
||||
|
||||
|
||||
<a name="Panel-settings"><h2 class="ch2">Panel settings</h2></a>
|
||||
<a name="Panel-settings"><h2 class="ch2">{{__('messages.Panel settings')}}</h2></a>
|
||||
|
||||
{{toggle('NOTIFY_EVENTS')}}
|
||||
|
||||
@ -291,7 +291,7 @@ foreach($users as $user){if($user->littlelink_name != $configValue2){echo '<opti
|
||||
{{toggle('ALLOW_CUSTOM_BACKGROUNDS')}}
|
||||
|
||||
|
||||
<a name="Security"><h2 class="ch2">Security</h2></a>
|
||||
<a name="Security"><h2 class="ch2">{{__('messages.Security')}}</h2></a>
|
||||
|
||||
|
||||
{{toggle('ALLOW_USER_HTML')}}
|
||||
@ -310,7 +310,7 @@ foreach($users as $user){if($user->littlelink_name != $configValue2){echo '<opti
|
||||
|
||||
|
||||
|
||||
<a name="Advanced"><h2 class="ch2">Advanced</h2></a>
|
||||
<a name="Advanced"><h2 class="ch2">{{__('messages.Advanced')}}</h2></a>
|
||||
|
||||
{{toggle('JOIN_BETA')}}
|
||||
|
||||
@ -319,10 +319,10 @@ foreach($users as $user){if($user->littlelink_name != $configValue2){echo '<opti
|
||||
<div class="form-group col-lg-8">
|
||||
<input value="maintenance" name="type" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<input value="MAINTENANCE_MODE" name="entry" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<h5 style="margin-top:50px">Enable Maintenance Mode</h5>
|
||||
<p class="text-muted">Displays a maintenance message on all public pages. This will disable the login pages.</p>
|
||||
<h5 style="margin-top:50px">{{__('messages.MAINTENANCE_MODE.title')}}</h5>
|
||||
<p class="text-muted">{{__('messages.MAINTENANCE_MODE.description')}}</p>
|
||||
<div class="input-group">
|
||||
<div class="mb-3 form-check form-switch toggle-btn"><input name="toggle" class="switch toggle-btn" type="checkbox" id="MAINTENANCE_MODE" <?php if(EnvEditor::getKey('MAINTENANCE_MODE') == 'true' or file_exists(base_path("storage/MAINTENANCE"))){echo 'checked>';}else{echo '/>';} ?><label for="MAINTENANCE_MODE" class="form-check-label">Enable</label></div>
|
||||
<div class="mb-3 form-check form-switch toggle-btn"><input name="toggle" class="switch toggle-btn" type="checkbox" id="MAINTENANCE_MODE" <?php if(EnvEditor::getKey('MAINTENANCE_MODE') == 'true' or file_exists(base_path("storage/MAINTENANCE"))){echo 'checked>';}else{echo '/>';} ?><label for="MAINTENANCE_MODE" class="form-check-label">{{__('messages.Enable')}}</label></div>
|
||||
</div></div>
|
||||
<input type="hidden" name="_token" value="{{csrf_token()}}">
|
||||
<script type="text/javascript">
|
||||
@ -349,37 +349,37 @@ document.getElementById("MAINTENANCE_MODE-form").addEventListener("change", func
|
||||
|
||||
|
||||
{{-- start SMTP settings --}}
|
||||
<a name="SMTP"><h2 class="ch2">SMTP</h2></a>
|
||||
<a name="SMTP"><h2 class="ch2">{{__('messages.SMTP')}}</h2></a>
|
||||
<form id="smtp-form" action="{{route('editConfig')}}" enctype="multipart/form-data" method="post">
|
||||
<div class="form-group col-lg-8">
|
||||
<input value="smtp" name="type" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<input value="smtp" name="entry" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<h5 style="margin-top:50px">Use built in SMTP server</h5>
|
||||
<p class="text-muted">Uses SMTP server provided by LinkStack. Might not be 100% reliable. Has to be disabled in order to user a custom SMTP server.<br>(Save changes with 'Apply changes' below)</p>
|
||||
<h5 style="margin-top:50px">{{__('messages.SMTP.title')}}</h5>
|
||||
<p class="text-muted">{{__('messages.SMTP.description')}}<br>{{__('messages.SMTP.description.alt')}}</p>
|
||||
<div class="input-group">
|
||||
<div class="mb-3 form-check form-switch toggle-btn"><input name="toggle" class="switch toggle-btn" type="checkbox" id="toggle-smtp" <?php if(env('MAIL_MAILER') != 'built-in'){echo '/>';}else{echo 'checked>';} ?> <label for="toggle-smtp" class="form-check-label">Enable</label></div>
|
||||
<div class="mb-3 form-check form-switch toggle-btn"><input name="toggle" class="switch toggle-btn" type="checkbox" id="toggle-smtp" <?php if(env('MAIL_MAILER') != 'built-in'){echo '/>';}else{echo 'checked>';} ?> <label for="toggle-smtp" class="form-check-label">{{__('messages.Enable')}}</label></div>
|
||||
</div></div>
|
||||
<input type="hidden" name="_token" value="{{csrf_token()}}">
|
||||
<div style="max-width: 600px; padding-left: 20px;">
|
||||
<br><h5>Custom SMTP server:</h5>
|
||||
<label style="margin-top:15px">Host</label>
|
||||
<br><h5>{{__('messages.Custom SMTP server:')}}</h5>
|
||||
<label style="margin-top:15px">{{__('messages.Host')}}</label>
|
||||
<input type="text" class="form-control form-control-lg" class="form-control form-control-lg" name="MAIL_HOST" value="{{env('MAIL_HOST')}}" />
|
||||
<label style="margin-top:15px">Port</label>
|
||||
<label style="margin-top:15px">{{__('messages.Port')}}</label>
|
||||
<input type="text" class="form-control form-control-lg" class="form-control form-control-lg" name="MAIL_PORT" value="{{env('MAIL_PORT')}}" />
|
||||
<label style="margin-top:15px">Username</label>
|
||||
<label style="margin-top:15px">{{__('messages.Username')}}</label>
|
||||
<input type="text" class="form-control form-control-lg" class="form-control form-control-lg" name="MAIL_USERNAME" value="{{env('MAIL_USERNAME')}}" />
|
||||
<label style="margin-top:15px">Password</label>
|
||||
<label style="margin-top:15px">{{__('messages.Password')}}</label>
|
||||
<input type="password" class="form-control" name="MAIL_PASSWORD" value="{{env('MAIL_PASSWORD')}}" />
|
||||
<label style="margin-top:15px">Encryption type</label>
|
||||
<label style="margin-top:15px">{{__('messages.Encryption type')}}</label>
|
||||
<input type="text" class="form-control form-control-lg" class="form-control form-control-lg" name="MAIL_ENCRYPTION" value="{{env('MAIL_ENCRYPTION')}}" />
|
||||
<label style="margin-top:15px">From address</label>
|
||||
<label style="margin-top:15px">{{__('messages.From address')}}</label>
|
||||
<input type="text" class="form-control form-control-lg" class="form-control form-control-lg" name="MAIL_FROM_ADDRESS" value="{{env('MAIL_FROM_ADDRESS')}}" />
|
||||
<button type="submit" class="btn btn-primary mt-4">Apply changes</button>
|
||||
<button type="submit" class="btn btn-primary mt-4">{{__('messages.Apply changes')}}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="form-group col-lg-8">
|
||||
<br><br><h5>Test E-Mail setup:</h5>
|
||||
<br><br><h5>{{__('messages.Test E-Mail setup:')}}</h5>
|
||||
@if (session('success'))
|
||||
<div class="alert alert-success">
|
||||
{{ session('success') }}
|
||||
@ -390,12 +390,12 @@ document.getElementById("MAINTENANCE_MODE-form").addEventListener("change", func
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<a href="{{route('SendTestMail')}}"><button class="btn btn-gray">Send Test E-Mail</button></a>
|
||||
<a href="{{route('SendTestMail')}}"><button class="btn btn-gray">{{__('messages.Send Test E-Mail')}}</button></a>
|
||||
{{-- end SMTP settings --}}
|
||||
|
||||
|
||||
{{-- start footer settings --}}
|
||||
<a name="Footer"><h2 class="ch2">Footer links</h2></a>
|
||||
<a name="Footer"><h2 class="ch2">{{__('messages.Footer links')}}</h2></a>
|
||||
|
||||
{{toggle('DISPLAY_FOOTER')}}
|
||||
|
||||
@ -414,12 +414,12 @@ document.getElementById("MAINTENANCE_MODE-form").addEventListener("change", func
|
||||
<div class="form-group col-lg-8">
|
||||
<input value="text" name="type" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<input value="HOME_FOOTER_LINK" name="entry" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<h5 style="margin-top:50px">@php foreach($configNames as $obj){if($obj->value == 'HOME_FOOTER_LINK'){echo $obj->title;}}; @endphp</h5>
|
||||
<p class="text-muted">@php foreach($configNames as $obj){if($obj->value == 'HOME_FOOTER_LINK'){echo $obj->description;}}; @endphp</p>
|
||||
<h5 style="margin-top:50px">@php echo __('messages.HOME_FOOTER_LINK.title'); @endphp</h5>
|
||||
<p class="text-muted">@php echo __('messages.HOME_FOOTER_LINK.description'); @endphp</p>
|
||||
<div class="input-group">
|
||||
<input type="url" style="border-radius:.25rem;max-width:600px" class="form-control" name="value" value="{{$configValue}}">
|
||||
<input type="hidden" name="_token" value="{{csrf_token()}}">
|
||||
<button type="submit" class="btn btn-primary">Apply</button>
|
||||
<button type="submit" class="btn btn-primary">{{__('messages.Apply')}}</button>
|
||||
</div></div>
|
||||
</form>
|
||||
|
||||
@ -435,21 +435,62 @@ document.getElementById("MAINTENANCE_MODE-form").addEventListener("change", func
|
||||
|
||||
|
||||
{{-- start debug settings --}}
|
||||
<a name="Debug"><h2 class="ch2">Debug</h2></a>
|
||||
<a name="Debug"><h2 class="ch2">{{__('messages.Debug')}}</h2></a>
|
||||
<form id="debug-form" action="{{route('editConfig')}}" enctype="multipart/form-data" method="post">
|
||||
<div class="form-group col-lg-8">
|
||||
<input value="debug" name="type" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<input value="debug" name="entry" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<h5 style="margin-top:50px">Debug mode</h5>
|
||||
<p class="text-muted">Should be disabled in a production environment. Useful for debugging during setup.</p>
|
||||
<h5 style="margin-top:50px">{{__('messages.Debug.title')}}</h5>
|
||||
<p class="text-muted">{{__('messages.Debug.description')}}</p>
|
||||
<div class="input-group">
|
||||
<div class="mb-3 form-check form-switch toggle-btn"><input name="toggle" class="switch toggle-btn" type="checkbox" id="toggle-debug" <?php if(EnvEditor::getKey('APP_DEBUG') == 'false'){echo '/>';}else{echo 'checked>';} ?> <label for="toggle-debug" class="form-check-label">Enable</label></div>
|
||||
<div class="mb-3 form-check form-switch toggle-btn"><input name="toggle" class="switch toggle-btn" type="checkbox" id="toggle-debug" <?php if(EnvEditor::getKey('APP_DEBUG') == 'false'){echo '/>';}else{echo 'checked>';} ?> <label for="toggle-debug" class="form-check-label">{{__('messages.Enable')}}</label></div>
|
||||
</div></div>
|
||||
<input type="hidden" name="_token" value="{{csrf_token()}}">
|
||||
<script type="text/javascript">document.getElementById("debug-form").addEventListener("change", function() { this.submit(); });</script>
|
||||
</form>
|
||||
{{-- end debug settings --}}
|
||||
|
||||
{{-- start language --}}
|
||||
<a name="Language"><h2 class="ch2">{{__('messages.Language')}}</h2></a>
|
||||
<?php $configValue2 = str_replace('"', "", EnvEditor::getKey('LOCALE')); ?>
|
||||
<form id="language-form" action="{{route('editConfig')}}" enctype="multipart/form-data" method="post">
|
||||
<div class="form-group col-lg-8">
|
||||
<input value="homeurl" name="type" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<input value="LOCALE" name="entry" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<h5 style="margin-top:50px">{{__('messages.LOCALE.title')}}</h5>
|
||||
<p class="text-muted">{{__('messages.LOCALE.description')}}</p>
|
||||
<div class="input-group">
|
||||
<select style="max-width:600px" class="form-control" name="value">
|
||||
@if($configValue2 != '')
|
||||
<option>{{$configValue2}}</option>
|
||||
@endif
|
||||
<?php
|
||||
try {
|
||||
$langFolders = array_filter(glob(base_path('resources/lang') . '/*'), 'is_dir');
|
||||
} catch (\Exception $e) {
|
||||
$langFolders = [];
|
||||
}
|
||||
|
||||
foreach($langFolders as $folder) {
|
||||
$folderName = basename($folder);
|
||||
if ($folderName != $configValue2) {
|
||||
echo '<option>' . $folderName . '</option>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="_token" value="{{csrf_token()}}">
|
||||
<script type="text/javascript">
|
||||
document.getElementById("language-form").addEventListener("change", function() {
|
||||
this.submit();
|
||||
});
|
||||
</script>
|
||||
</form>
|
||||
{{-- end language --}}
|
||||
|
||||
|
||||
<br><br><br><br><br>
|
||||
|
||||
<script src="{{ asset('assets/external-dependencies/jquery-3.4.1.min.js') }}"></script>
|
||||
|
@ -2,12 +2,12 @@
|
||||
<?php
|
||||
use Illuminate\Support\Facades\Http;
|
||||
|
||||
$wtrue = "<td style=\"text-align: center; cursor: help;\" title=\"Everything is working as expected!\"><i class='bi bi-check-lg'></i></td>";
|
||||
$wfalse = "<td style=\"text-align: center; cursor: help;\" title=\"This file cannot be written to. This may impede proper operation.\"><i class='bi bi-x'></i></td>";
|
||||
$wtrue = "<td style=\"text-align: center; cursor: help;\" title=\"".__('messages.wtrue')."\"><i class='bi bi-check-lg'></i></td>";
|
||||
$wfalse = "<td style=\"text-align: center; cursor: help;\" title=\"".__('messages.wfalse')."\"><i class='bi bi-x'></i></td>";
|
||||
|
||||
$utrue = "<td style=\"text-align: center; cursor: help;\" title=\"Your security is at risk. This file can be accessed by everyone. Immediate action is required!\"><i class='bi bi-exclamation-lg'></i></td>";
|
||||
$ufalse = "<td style=\"text-align: center; cursor: help;\" title=\"Everything is working as expected!\"><i class='bi bi-check-lg'></i></td>";
|
||||
$unull = "<td style=\"text-align: center; cursor: help;\" title=\"Something went wrong. This might be normal if you're running behind a proxy or docker container.\">➖</td>";
|
||||
$utrue = "<td style=\"text-align: center; cursor: help;\" title=\"".__('messages.utrue')."\"><i class='bi bi-exclamation-lg'></i></td>";
|
||||
$ufalse = "<td style=\"text-align: center; cursor: help;\" title=\"".__('messages.ufalse')."\"><i class='bi bi-check-lg'></i></td>";
|
||||
$unull = "<td style=\"text-align: center; cursor: help;\" title=\"".__('messages.unull')."\">➖</td>";
|
||||
|
||||
function getUrlSatusCode($url, $timeout = 3)
|
||||
{
|
||||
@ -34,17 +34,17 @@ $url2 = getUrlSatusCode(url('database/database.sqlite'));
|
||||
?>
|
||||
|
||||
@if($url1 == '200' or $url2 == '200')
|
||||
<a href="https://docs.linkstack.org/d/installation-requirements/" target="_blank"><h4 style="color:tomato;">Your security is at risk. Some files can be accessed by everyone. Immediate action is required! <br> Click this message to learn more.</h4></a>
|
||||
<a href="https://docs.linkstack.org/installation-requirements/" target="_blank"><h4 style="color:tomato;">{{__('messages.security.risk')}}</h4></a>
|
||||
@endif
|
||||
|
||||
<h3 class="mb-4">Security</h3>
|
||||
<p>Here, you can easily verify if critical system files can be accessed externally. It is important that these files cannot be accessed, otherwise user data like passwords could get leaked. Entries marked with a '<i class='bi bi-check-lg'></i>' cannot be accessed externally, entries marked with a '<i class='bi bi-exclamation-lg'></i>' can be accessed by anyone and require immediate action to protect your data.</p>
|
||||
<h3 class="mb-4">{{__('messages.Security')}}</h3>
|
||||
<p>{{__('messages.security.risk.1-3')}} '<i class='bi bi-check-lg'></i>' {{__('messages.security.risk.1-3')}} '<i class='bi bi-exclamation-lg'></i>' {{__('messages.security.risk.1-3')}}</p>
|
||||
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" style="width: 90%;">Link</th>
|
||||
<th title="You can hover over entries to learn more about their current status" style="cursor: help;" scope="col">Hover for more</th>
|
||||
<th title="You can hover over entries to learn more about their current status" style="cursor: help;" scope="col">{{__('messages.Hover for more')}}</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
@ -60,14 +60,14 @@ $url2 = getUrlSatusCode(url('database/database.sqlite'));
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br><h3 class="mb-4">Write access</h3>
|
||||
<p>Here, you can easily verify if important system files can be written to. This is important for every function to work properly. Entries marked with a '<i class='bi bi-check-lg'></i>' work as expected, entries marked with a '<i class='bi bi-x'></i>' do not.</p>
|
||||
<br><h3 class="mb-4">{{__('messages.Write access')}}</h3>
|
||||
<p>{{__('messages.Write access.description.1-3')}} '<i class='bi bi-check-lg'></i>' {{__('messages.Write access.description.2-3')}} '<i class='bi bi-x'></i>' {{__('messages.Write access.description.3-3')}}</p>
|
||||
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" style="width: 90%;">File</th>
|
||||
<th title="You can hover over entries to learn more about their current status" style="cursor: help;" scope="col">Hover for more</th>
|
||||
<th title="You can hover over entries to learn more about their current status" style="cursor: help;" scope="col">{{__('messages.Hover for more')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -82,24 +82,24 @@ $url2 = getUrlSatusCode(url('database/database.sqlite'));
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br><h3 class="mb-4">Dependencies</h3>
|
||||
<p>Required PHP modules.</p>
|
||||
<br><h3 class="mb-4">{{__('messages.Dependencies')}}</h3>
|
||||
<p>{{__('messages.Required PHP modules')}}</p>
|
||||
|
||||
<style>#dp{width:10%!important;text-align:center;}</style>
|
||||
<table class="table table-bordered">
|
||||
<style>.bi-x-lg{color:tomato}</style>
|
||||
<tr><td>BCMath PHP Extension</td><td id="dp">@if(extension_loaded('bcmath'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>Ctype PHP Extension</td><td id="dp">@if(extension_loaded('Ctype'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>cURL PHP Extension</td><td id="dp">@if(extension_loaded('cURL'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>DOM PHP Extension</td><td id="dp">@if(extension_loaded('DOM'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>Fileinfo PHP Extension</td><td id="dp">@if(extension_loaded('Fileinfo'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>JSON PHP Extension</td><td id="dp">@if(extension_loaded('JSON'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>Mbstring PHP Extension</td><td id="dp">@if(extension_loaded('Mbstring'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>OpenSSL PHP Extension</td><td id="dp">@if(extension_loaded('OpenSSL'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>PCRE PHP Extension</td><td id="dp">@if(extension_loaded('PCRE'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>PDO PHP Extension</td><td id="dp">@if(extension_loaded('PDO'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>Tokenizer PHP Extension</td><td id="dp">@if(extension_loaded('Tokenizer'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>XML PHP Extension</td><td id="dp">@if(extension_loaded('XML'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>SQLite PHP Extension</td><td id="dp">@if(extension_loaded('PDO_SQLite'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>MySQL PHP Extension</td><td id="dp">@if(extension_loaded('PDO_MySQL'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>BCMath {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('bcmath'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>Ctype {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('Ctype'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>cURL {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('cURL'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>DOM {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('DOM'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>Fileinfo {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('Fileinfo'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>JSON {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('JSON'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>Mbstring {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('Mbstring'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>OpenSSL {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('OpenSSL'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>PCRE {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('PCRE'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>PDO {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('PDO'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>Tokenizer {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('Tokenizer'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>XML {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('XML'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>SQLite {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('PDO_SQLite'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
<tr><td>MySQL {{__('messages.PHP Extension')}}</td><td id="dp">@if(extension_loaded('PDO_MySQL'))<i class='bi bi-check-lg'></i>@else<i class='bi bi-x'></i>@endif</td></tr>
|
||||
</table>
|
@ -57,6 +57,9 @@ use App\Models\Page;
|
||||
if(EnvEditor::keyExists('DISPLAY_CREDIT_FOOTER')){ /* Do nothing if key already exists */
|
||||
} else {EnvEditor::addKey('DISPLAY_CREDIT_FOOTER', 'true');}
|
||||
|
||||
if(EnvEditor::keyExists('LOCALE')){ /* Do nothing if key already exists */
|
||||
} else {EnvEditor::addKey('LOCALE', 'en');}
|
||||
|
||||
if(EnvEditor::keyExists('ADMIN_EMAIL')){} else
|
||||
{if(Auth::user()->id == 1){EnvEditor::addKey('ADMIN_EMAIL', App\Models\User::find(1)->email);}
|
||||
else{EnvEditor::addKey('ADMIN_EMAIL', '');}}
|
||||
|
@ -1,12 +1,12 @@
|
||||
<?php use App\Models\Button; $button = Button::find($button_id); if(isset($button->name)){$buttonName = $button->name;}else{$buttonName = 0;} ?>
|
||||
|
||||
<select style="display:none" name="button" class="form-control"><option class="button button-default email" value="default email">Default Email</option></select>
|
||||
<select style="display:none" name="button" class="form-control"><option class="button button-default email" value="default email">{{__('messages.Default Email')}}</option></select>
|
||||
|
||||
<label for='title' class='form-label'>Custom Title</label>
|
||||
<label for='title' class='form-label'>{{__('messages.Custom Title')}}</label>
|
||||
<input type='text' name='title' value='{{$link_title}}' class='form-control' />
|
||||
<span class='small text-muted'>Leave blank for default title</span><br>
|
||||
<span class='small text-muted'>{{__('messages.Leave blank for default title')}}</span><br>
|
||||
|
||||
<label for='link' class='form-label'>E-Mail address</label>
|
||||
<label for='link' class='form-label'>{{__('messages.E-Mail address')}}</label>
|
||||
<input type='email' name='link' value='{{str_replace("mailto:", "", $link_url)}}' class='form-control' required />
|
||||
<span class='small text-muted'>Enter your E-Mail</span>
|
||||
<span class='small text-muted'>{{__('messages.Enter your E-Mail')}}</span>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<label for='title' class='form-label'>Heading Text:</label>
|
||||
<label for='title' class='form-label'>{{__('messages.Heading Text:')}}</label>
|
||||
<input type='text' name='title' value='{{$link_title}}' class='form-control' />
|
||||
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
<label for='title' class='form-label'>Title</label>
|
||||
<label for='title' class='form-label'>{{__('messages.Title')}}</label>
|
||||
<input type='text' name='title' value='{{$link_title}}' class='form-control' required />
|
||||
|
||||
<label for='title' class='form-label'>URL</label>
|
||||
<label for='title' class='form-label'>{{__('messages.URL')}}</label>
|
||||
<input type='url' name='link' value='{{$link_url}}' class='form-control' required />
|
||||
|
||||
<div class="custom-control custom-checkbox m-2">
|
||||
<input type="checkbox" class="custom-control-input" value='1' {{((isset($params->GetSiteIcon) ? boolval($params->GetSiteIcon) : false) ? 'checked': '') }} name='GetSiteIcon' id="GetSiteIcon" @if($button_id == 2)checked @endif>
|
||||
|
||||
<label class="custom-control-label" for="GetSiteIcon">Show website icon on button</label>
|
||||
<label class="custom-control-label" for="GetSiteIcon">{{__('messages.Show website icon on button')}}</label>
|
||||
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<label for='button' class='form-label'>Select a predefined site</label>
|
||||
<label for='button' class='form-label'>{{__('messages.Select a predefined site')}}</label>
|
||||
<?php use App\Models\Button; $button = Button::find($button_id); if(isset($button->name)){$buttonName = $button->name;}else{$buttonName = 0;} ?>
|
||||
|
||||
<select name='button' class='form-control'>
|
||||
@ -10,11 +10,11 @@
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<label for='title' class='form-label'>Custom Title</label>
|
||||
<label for='title' class='form-label'>{{__('messages.Custom Title')}}</label>
|
||||
<input type='text' name='title' value='{{$link_title}}' class='form-control' />
|
||||
<span class='small text-muted'>Leave blank for default title</span><br>
|
||||
<span class='small text-muted'>{{__('messages.Leave blank for default title')}}</span><br>
|
||||
|
||||
<label for='link' class='form-label'>URL</label>
|
||||
<label for='link' class='form-label'>{{__('messages.URL')}}</label>
|
||||
<input type='url' name='link' value='{{$link_url}}' class='form-control' required />
|
||||
<span class='small text-muted'>Enter the link URL</span>
|
||||
<span class='small text-muted'>{{__('messages.Enter the link URL')}}</span>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<label for='title' class='form-label'>Spacing height</label>
|
||||
<label for='title' class='form-label'>{{__('messages.Spacing height')}}</label>
|
||||
{{-- <input type='number' name='height' value="{{$params->height ?? ''}}" class='form-control w-25' /> --}}
|
||||
|
||||
<input type="range" class="custom-range" id="height" name='height' value={{$params->height??5}} oninput="this.nextElementSibling.value = this.value"><output class='font-weight-bold'>{{$params->height??5}}</output>
|
||||
|
@ -1,12 +1,12 @@
|
||||
<?php use App\Models\Button; $button = Button::find($button_id); if(isset($button->name)){$buttonName = $button->name;}else{$buttonName = 0;} ?>
|
||||
|
||||
<select style="display:none" name="button" class="form-control"><option class="button button-default email" value="phone">Phone</option></select>
|
||||
<select style="display:none" name="button" class="form-control"><option class="button button-default email" value="phone">{{__('messages.Phone')}}</option></select>
|
||||
|
||||
<label for='title' class='form-label'>Custom Title</label>
|
||||
<label for='title' class='form-label'>{{__('messages.Custom Title')}}</label>
|
||||
<input type='text' name='title' value='{{$link_title}}' class='form-control' />
|
||||
<span class='small text-muted'>Leave blank for default title</span><br>
|
||||
<span class='small text-muted'>{{__('messages.Leave blank for default title')}}</span><br>
|
||||
|
||||
<label for='link' class='form-label'>Telephone number</label>
|
||||
<label for='link' class='form-label'>{{__('messages.Telephone number')}}</label>
|
||||
<input type='tel' name='link' value='{{str_replace("tel:", "", $link_url)}}' class='form-control' required />
|
||||
<span class='small text-muted'>Enter your telephone number</span>
|
||||
<span class='small text-muted'>{{__('messages.Enter your telephone number')}}</span>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<label for='text' class='form-label'>Text to display</label>
|
||||
<label for='text' class='form-label'>{{__('messages.Text to display')}}</label>
|
||||
<textarea class="form-control @if(env('ALLOW_USER_HTML') === true) ckeditor @endif" name="text" rows="6">{{ $link_title ?? '' }}</textarea>
|
||||
@if(env('ALLOW_USER_HTML') === true)
|
||||
<script src="{{ asset('assets/external-dependencies/ckeditor.js') }}"></script>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php use JeroenDesloovere\VCard\VCard; use App\Models\Button; $button = Button::find($button_id); if(isset($button->name)){$buttonName = $button->name;}else{$buttonName = 0;} ?>
|
||||
|
||||
<select style="display:none" name="button" class="form-control"><option class="button button-default email" value="vcard">Vcard</option></select>
|
||||
<select style="display:none" name="button" class="form-control"><option class="button button-default email" value="vcard">{{__('messages.Vcard')}}</option></select>
|
||||
|
||||
@php
|
||||
try {
|
||||
@ -37,9 +37,9 @@ $workAddressCountry = $data->work_address_country;
|
||||
catch (exception $e) {}
|
||||
@endphp
|
||||
|
||||
<label for='title' class='form-label'>Custom Title</label>
|
||||
<label for='title' class='form-label'>{{__('messages.Custom Title')}}</label>
|
||||
<input type='text' name='link_title' value='{{ $link_title }}' class='form-control' />
|
||||
<span class='small text-muted'>Leave blank for default title</span><br>
|
||||
<span class='small text-muted'>{{__('messages.Leave blank for default title')}}</span><br>
|
||||
|
||||
{{-- <br><h5>Upload existing file</h5>
|
||||
<div class="form-group col-lg-8">
|
||||
@ -47,97 +47,97 @@ catch (exception $e) {}
|
||||
<input type="file" accept="text/vcard" class="form-control-file" name="vcard">
|
||||
</div> --}}
|
||||
|
||||
<br><br><h4>Name</h4>
|
||||
<label for='prefix' class='form-label'>Prefix</label>
|
||||
<br><br><h4>{{__('messages.Name')}}</h4>
|
||||
<label for='prefix' class='form-label'>{{__('messages.Prefix')}}</label>
|
||||
<input type='text' name='prefix' value='{{$prefix ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='first_name' class='form-label'>First Name</label>
|
||||
<label for='first_name' class='form-label'>{{__('messages.First Name')}}</label>
|
||||
<input type='text' name='first_name' value='{{$firstName ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='middle_name' class='form-label'>Middle Name</label>
|
||||
<label for='middle_name' class='form-label'>{{__('messages.Middle Name')}}</label>
|
||||
<input type='text' name='middle_name' value='{{$middleName ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='last_name' class='form-label'>Last Name</label>
|
||||
<label for='last_name' class='form-label'>{{__('messages.Last Name')}}</label>
|
||||
<input type='text' name='last_name' value='{{$lastName ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='suffix' class='form-label'>Suffix</label>
|
||||
<label for='suffix' class='form-label'>{{__('messages.Suffix')}}</label>
|
||||
<input type='text' name='suffix' value='{{$suffix ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
{{-- <label for='nickname' class='form-label'>Nickname</label>
|
||||
<input type='text' name='nickname' value='{{ ?? ''}}' class='form-control'/>
|
||||
<br> --}}
|
||||
|
||||
<br><h4>Work</h4>
|
||||
<label for='organization' class='form-label'>Organization</label>
|
||||
<br><h4>{{__('messages.Work')}}</h4>
|
||||
<label for='organization' class='form-label'>{{__('messages.Organization')}}</label>
|
||||
<input type='text' name='organization' value='{{$organization ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='vtitle' class='form-label'>Title</label>
|
||||
<label for='vtitle' class='form-label'>{{__('messages.Title')}}</label>
|
||||
<input type='text' name='vtitle' value='{{$vtitle ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='role' class='form-label'>Role</label>
|
||||
<label for='role' class='form-label'>{{__('messages.Role')}}</label>
|
||||
<input type='text' name='role' value='{{$role ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='work_url' class='form-label'>Work URL</label>
|
||||
<label for='work_url' class='form-label'>{{__('messages.Work URL')}}</label>
|
||||
<input type='url' name='work_url' value='{{$workUrl ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
|
||||
<br><h4>Emails</h4>
|
||||
<label for='email' class='form-label'>Email</label>
|
||||
<br><h4>{{__('messages.Emails')}}</h4>
|
||||
<label for='email' class='form-label'>{{__('messages.Email')}}</label>
|
||||
<input type='email' name='email' value='{{$email ?? ''}}' class='form-control'/>
|
||||
<span class='small text-muted'>Enter your personal email</span>
|
||||
<span class='small text-muted'>{{__('messages.Enter your personal email')}}</span>
|
||||
<br>
|
||||
<label for='work_email' class='form-label'>Work Email</label>
|
||||
<label for='work_email' class='form-label'>{{__('messages.Work Email')}}</label>
|
||||
<input type='email' name='work_email' value='{{$workEmail ?? ''}}' class='form-control'/>
|
||||
<span class='small text-muted'>Enter your work email</span>
|
||||
<span class='small text-muted'>{{__('messages.Enter your work email')}}</span>
|
||||
<br>
|
||||
|
||||
<br><h4>Phones</h4>
|
||||
<label for='home_phone' class='form-label'>Home Phone</label>
|
||||
<br><h4>{{__('messages.Phones')}}</h4>
|
||||
<label for='home_phone' class='form-label'>{{__('messages.Home Phone')}}</label>
|
||||
<input type='tel' name='home_phone' value='{{$homePhone ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='work_phone' class='form-label'>Work Phone</label>
|
||||
<label for='work_phone' class='form-label'>{{__('messages.Work Phone')}}</label>
|
||||
<input type='tel' name='work_phone' value='{{$workPhone ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='cell_phone' class='form-label'>Cell Phone</label>
|
||||
<label for='cell_phone' class='form-label'>{{__('messages.Cell Phone')}}</label>
|
||||
<input type='tel' name='cell_phone' value='{{$cellPhone ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
|
||||
<br><h4>Home Address</h4>
|
||||
<label for='home_address_label' class='form-label'>Label</label>
|
||||
<label for='home_address_label' class='form-label'>{{__('messages.Label')}}</label>
|
||||
<input type='text' name='home_address_label' value='{{$homeAddressLabel ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='home_address_street' class='form-label'>Street</label>
|
||||
<label for='home_address_street' class='form-label'>{{__('messages.Street')}}</label>
|
||||
<input type='text' name='home_address_street' value='{{$homeAddressStreet ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='home_address_city' class='form-label'>City</label>
|
||||
<label for='home_address_city' class='form-label'>{{__('messages.City')}}</label>
|
||||
<input type='text' name='home_address_city' value='{{$homeAddressCity ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='home_address_state' class='form-label'>State/Province</label>
|
||||
<label for='home_address_state' class='form-label'>{{__('messages.State/Province')}}</label>
|
||||
<input type='text' name='home_address_state' value='{{$homeAddressState ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='home_address_zip' class='form-label'>Zip/Postal Code</label>
|
||||
<label for='home_address_zip' class='form-label'>{{__('messages.Zip/Postal Code')}}</label>
|
||||
<input type='text' name='home_address_zip' value='{{$homeAddressZip ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='home_address_country' class='form-label'>Country</label>
|
||||
<label for='home_address_country' class='form-label'>{{__('messages.Country')}}</label>
|
||||
<input type='text' name='home_address_country' value='{{$homeAddressCountry ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<br><h4>Work Address</h4>
|
||||
<label for='work_address_label' class='form-label'>Label</label>
|
||||
<br><h4>{{__('messages.Work Address')}}</h4>
|
||||
<label for='work_address_label' class='form-label'>{{__('messages.Label')}}</label>
|
||||
<input type='text' name='work_address_label' value='{{$workAddressLabel ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='work_address_street' class='form-label'>Street</label>
|
||||
<label for='work_address_street' class='form-label'>{{__('messages.Street')}}</label>
|
||||
<input type='text' name='work_address_street' value='{{$workAddressStreet ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='work_address_city' class='form-label'>City</label>
|
||||
<label for='work_address_city' class='form-label'>{{__('messages.City')}}</label>
|
||||
<input type='text' name='work_address_city' value='{{$workAddressCity ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='work_address_state' class='form-label'>State/Province</label>
|
||||
<label for='work_address_state' class='form-label'>{{__('messages.State/Province')}}</label>
|
||||
<input type='text' name='work_address_state' value='{{$workAddressState ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='work_address_zip' class='form-label'>Zip/Postal Code</label>
|
||||
<label for='work_address_zip' class='form-label'>{{__('messages.Zip/Postal Code')}}</label>
|
||||
<input type='text' name='work_address_zip' value='{{$workAddressZip ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
<label for='work_address_country' class='form-label'>Country</label>
|
||||
<label for='work_address_country' class='form-label'>{{__('messages.Country')}}</label>
|
||||
<input type='text' name='work_address_country' value='{{$workAddressCountry ?? ''}}' class='form-control'/>
|
||||
<br>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
<label for='title' class='form-label'>Title</label>
|
||||
<label for='title' class='form-label'>{{__('messages.Title')}}</label>
|
||||
<input type='text' name='title' value='{{$link_title}}' placeholder="Leave blank for default video title" class='form-control' />
|
||||
|
||||
<label for='link' class='form-label'>URL</label>
|
||||
<label for='link' class='form-label'>{{__('messages.URL')}}</label>
|
||||
<input type='url' name='link' value='{{$link_url}}' class='form-control' />
|
||||
<span class='small text-muted'>URL to the video</span>
|
||||
<span class='small text-muted'>{{__('messages.URL to the video')}}</span>
|
||||
|
||||
|
@ -99,7 +99,7 @@
|
||||
|
||||
|
||||
<style>.description-parent * {margin-bottom: 1em;}.description-parent {padding-bottom: 30px;}</style>
|
||||
<center><div class="fadein description-parent"><p class="fadein">Example page</p></div></center>
|
||||
<center><div class="fadein description-parent"><p class="fadein">{{__('messages.Example page')}}</p></div></center>
|
||||
|
||||
{{-- <!-- Icons -->
|
||||
@php $icons = DB::table('links')->where('user_id', $userinfo->id)->where('button_id', 94)->get(); @endphp
|
||||
|
@ -125,14 +125,14 @@
|
||||
@auth
|
||||
<li class="me-0 me-xl-2">
|
||||
<a class="btn btn-primary btn-sm d-flex gap-2 align-items-center" aria-current="page" href="{{ url('dashboard') }}">
|
||||
Dashboard
|
||||
{{__('messages.Dashboard')}}
|
||||
</a>
|
||||
</li>
|
||||
@else
|
||||
@if (Route::has('login'))
|
||||
<li class="me-0 me-xl-2">
|
||||
<a class="btn btn-primary btn-sm d-flex gap-2 align-items-center" aria-current="page" href="{{ route('login') }}">
|
||||
Log in
|
||||
{{__('messages.Log in')}}
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
@ -140,7 +140,7 @@
|
||||
@if ((env('ALLOW_REGISTRATION')) and !config('linkstack.single_user_mode'))
|
||||
<li class="me-0 me-xl-2">
|
||||
<a class="btn btn-secondary btn-sm d-flex gap-2 align-items-center" aria-current="page" href="{{ route('register') }}">
|
||||
Register
|
||||
{{__('messages.Register')}}
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
@ -183,14 +183,14 @@
|
||||
<div class="d-flex justify-content-center align-items-center pt-4">
|
||||
@if (Route::has('login'))
|
||||
@auth
|
||||
<a class="btn btn-primary me-3" href="{{ url('dashboard') }}">Dashboard</a>
|
||||
<a class="btn btn-primary me-3" href="{{ url('dashboard') }}">{{__('messages.Dashboard')}}</a>
|
||||
@else
|
||||
@if (Route::has('login'))
|
||||
<a class="btn btn-primary me-3" href="{{ route('login') }}">Log in</a>
|
||||
<a class="btn btn-primary me-3" href="{{ route('login') }}">{{__('messages.Log in')}}</a>
|
||||
@endif
|
||||
|
||||
@if ((env('ALLOW_REGISTRATION')) and !config('linkstack.single_user_mode'))
|
||||
<a class="btn btn-secondary me-3" href="{{ route('register') }}">Register</a>
|
||||
<a class="btn btn-secondary me-3" href="{{ route('register') }}">{{__('messages.Register')}}</a>
|
||||
@endif
|
||||
@endauth
|
||||
@endif
|
||||
@ -222,14 +222,14 @@
|
||||
@endif
|
||||
</ul>
|
||||
<div class="right-panel">
|
||||
Copyright © @php echo date('Y'); @endphp {{ config('app.name') }}
|
||||
{{__('messages.Copyright')}} © @php echo date('Y'); @endphp {{ config('app.name') }}
|
||||
@if(env('DISPLAY_CREDIT_FOOTER') === true)
|
||||
<span class="">
|
||||
- Made with
|
||||
- {{__('messages.Made with')}}
|
||||
<svg class="icon-15" width="15" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.85 2.50065C16.481 2.50065 17.111 2.58965 17.71 2.79065C21.401 3.99065 22.731 8.04065 21.62 11.5806C20.99 13.3896 19.96 15.0406 18.611 16.3896C16.68 18.2596 14.561 19.9196 12.28 21.3496L12.03 21.5006L11.77 21.3396C9.48102 19.9196 7.35002 18.2596 5.40102 16.3796C4.06102 15.0306 3.03002 13.3896 2.39002 11.5806C1.26002 8.04065 2.59002 3.99065 6.32102 2.76965C6.61102 2.66965 6.91002 2.59965 7.21002 2.56065H7.33002C7.61102 2.51965 7.89002 2.50065 8.17002 2.50065H8.28002C8.91002 2.51965 9.52002 2.62965 10.111 2.83065H10.17C10.21 2.84965 10.24 2.87065 10.26 2.88965C10.481 2.96065 10.69 3.04065 10.89 3.15065L11.27 3.32065C11.3618 3.36962 11.4649 3.44445 11.554 3.50912C11.6104 3.55009 11.6612 3.58699 11.7 3.61065C11.7163 3.62028 11.7329 3.62996 11.7496 3.63972C11.8354 3.68977 11.9247 3.74191 12 3.79965C13.111 2.95065 14.46 2.49065 15.85 2.50065ZM18.51 9.70065C18.92 9.68965 19.27 9.36065 19.3 8.93965V8.82065C19.33 7.41965 18.481 6.15065 17.19 5.66065C16.78 5.51965 16.33 5.74065 16.18 6.16065C16.04 6.58065 16.26 7.04065 16.68 7.18965C17.321 7.42965 17.75 8.06065 17.75 8.75965V8.79065C17.731 9.01965 17.8 9.24065 17.94 9.41065C18.08 9.58065 18.29 9.67965 18.51 9.70065Z" fill="currentColor"></path>
|
||||
</svg>
|
||||
</span> by <a href="https://linkstack.org/" target="_blank">LinkStack</a>.
|
||||
</span> {{__('messages.by')}} <a href="https://linkstack.org/" target="_blank">LinkStack</a>.
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
@ -16,17 +16,56 @@
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>Setup LinkStack</h1>
|
||||
<h1>{{__('messages.Setup LinkStack')}}</h1>
|
||||
<p class="inst-txt">
|
||||
<div class="left-txt glass-container">
|
||||
Welcome to the setup for LinkStack!<br><br>
|
||||
<b>This setup will:</b><br>
|
||||
1. Check the server dependencies<br>
|
||||
2. Setup the database<br>
|
||||
3. Create the admin user<br>
|
||||
4. Configure the app<br>
|
||||
{{__('messages.Welcome to the setup for LinkStack!')}}<br><br>
|
||||
<b>{{__('messages.This setup will:')}}</b><br>
|
||||
{{__('messages.Check the server dependencies')}}<br>
|
||||
{{__('messages.Setup the database')}}<br>
|
||||
{{__('messages.Create the admin user')}}<br>
|
||||
{{__('messages.Configure the app')}}<br>
|
||||
</div></p>
|
||||
 <a class="btn" href="{{url('?2')}}"><button>Next</button></a> 
|
||||
|
||||
{{-- start language --}}
|
||||
<?php $configValue2 = str_replace('"', "", EnvEditor::getKey('LOCALE')); ?>
|
||||
<form id="language-form" action="{{route('editConfigInstaller')}}" enctype="multipart/form-data" method="post">
|
||||
<div class="form-group col-lg-8">
|
||||
<input value="homeurl" name="type" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<input value="LOCALE" name="entry" style="display:none;" type="text" class="form-control form-control-lg" required>
|
||||
<p class="text-muted">{{__('messages.Choose a language')}}</p>
|
||||
<div class="input-group">
|
||||
<select style="max-width:600px;min-width:300px;" class="form-control" name="value">
|
||||
@if($configValue2 != '')
|
||||
<option>{{$configValue2}}</option>
|
||||
@endif
|
||||
<?php
|
||||
try {
|
||||
$langFolders = array_filter(glob(base_path('resources/lang') . '/*'), 'is_dir');
|
||||
} catch (\Exception $e) {
|
||||
$langFolders = [];
|
||||
}
|
||||
|
||||
foreach($langFolders as $folder) {
|
||||
$folderName = basename($folder);
|
||||
if ($folderName != $configValue2) {
|
||||
echo '<option>' . $folderName . '</option>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="_token" value="{{csrf_token()}}">
|
||||
<script type="text/javascript">
|
||||
document.getElementById("language-form").addEventListener("change", function() {
|
||||
this.submit();
|
||||
});
|
||||
</script>
|
||||
</form>
|
||||
{{-- end language --}}
|
||||
|
||||
 <a class="btn" href="{{url('?2')}}"><button>{{__('messages.Next')}}</button></a> 
|
||||
@endif
|
||||
|
||||
@endif
|
||||
@ -37,10 +76,10 @@
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>Setup failed</h1>
|
||||
<p class="inst-txt">An error has occured. Please try again.</p>
|
||||
<h1>{{__('messages.Setup failed')}}</h1>
|
||||
<p class="inst-txt">{{__('messages.An error has occured. Please try again')}}</p>
|
||||
<div class="row">
|
||||
 <a class="btn" href="{{url('')}}"><button>Try again</button></a> 
|
||||
 <a class="btn" href="{{url('')}}"><button>{{__('messages.Try again')}}</button></a> 
|
||||
</div>
|
||||
|
||||
@endif
|
||||
@ -51,8 +90,8 @@
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>Dependency check</h1>
|
||||
<p class="inst-txt">Required PHP modules:</p>
|
||||
<h1>{{__('messages.Dependency check')}}</h1>
|
||||
<p class="inst-txt">{{__('messages.Required PHP modules:')}}</p>
|
||||
<div class="left-txt glass-container">
|
||||
<table style="width:115%">
|
||||
<style>.bi-x-lg{color:tomato}</style>
|
||||
@ -71,14 +110,14 @@
|
||||
<tr><td>XML: </td><td>@if(extension_loaded('XML'))<i class="bi bi-check-lg"></i>@else<i class="bi bi-x-lg"></i>@endif</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
<b style="font-size:90%;margin-bottom:5px;display:flex;">Depending on your database type:</b>
|
||||
<b style="font-size:90%;margin-bottom:5px;display:flex;">{{__('messages.Depending on your database type:')}}</b>
|
||||
<table style="width:123%">
|
||||
<tr><td>SQLite: </td><td>@if(extension_loaded('PDO_SQLite'))<i class="bi bi-check-lg"></i>@else<i class="bi bi-x-lg"></i>@endif</td></tr>
|
||||
<tr><td>MySQL: </td><td>@if(extension_loaded('PDO_MySQL'))<i class="bi bi-check-lg"></i>@else<i class="bi bi-x-lg"></i>@endif</td></tr>
|
||||
</table>
|
||||
</div><br>
|
||||
<div class="row">
|
||||
 <a class="btn" href="?3"><button>Next</button></a> 
|
||||
 <a class="btn" href="?3"><button>{{__('messages.Next')}}</button></a> 
|
||||
</div>
|
||||
|
||||
@endif
|
||||
@ -89,20 +128,22 @@
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>Setup LinkStack</h1>
|
||||
<p class="inst-txt">Select a database type</p>
|
||||
<p>Under most circumstances, we recommend using SQLite.<br>MySQL requires a separate, empty MySQL database.</p><br>
|
||||
<h1>{{__('messages.Setup LinkStack')}}</h1>
|
||||
<p class="inst-txt">{{__('messages.Select a database type')}}</p>
|
||||
<p>{{__('messages.Under most circumstances, we recommend using SQLite')}}
|
||||
<br>
|
||||
{{__('messages.MySQL requires a separate, empty MySQL database')}}</p><br>
|
||||
<form id="home-url-form" action="{{route('db')}}" enctype="multipart/form-data" method="post">
|
||||
<div class="form-group col-lg-8">
|
||||
<div class="input-group">
|
||||
<label>Database type:</label>
|
||||
<label>{{__('messages.Database type:')}}</label>
|
||||
<select style="max-width:300px" class="form-control" name="database">
|
||||
<option>SQLite</option>
|
||||
<option>MySQL</option>
|
||||
</select>
|
||||
</div></div><br><br>
|
||||
<input type="hidden" name="_token" value="{{csrf_token()}}">
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">Next</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">{{__('messages.Next')}}</button>
|
||||
</form>
|
||||
|
||||
@endif
|
||||
@ -113,25 +154,25 @@
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>Setup LinkStack</h1>
|
||||
<h1>{{__('messages.Setup LinkStack')}}</h1>
|
||||
<p class="inst-txt">MySQL</p>
|
||||
|
||||
<form id="home-url-form" action="{{route('mysql')}}" enctype="multipart/form-data" method="post">
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Database host:</label>
|
||||
<label>{{__('messages.Database host:')}}</label>
|
||||
<input style="max-width:275px;" class="form-control" name="host" type="text" required>
|
||||
<label>Database port:</label>
|
||||
<label>{{__('messages.Database port:')}}</label>
|
||||
<input style="max-width:275px;" class="form-control" name="port" type="text" required>
|
||||
<label>Database name:</label>
|
||||
<label>{{__('messages.Database name:')}}</label>
|
||||
<input style="max-width:275px;" class="form-control" name="name" type="text" required>
|
||||
<label>Database username:</label>
|
||||
<label>{{__('messages.Database username:')}}</label>
|
||||
<input style="max-width:275px;" class="form-control" name="username" type="text" required>
|
||||
<label>Database password:</label>
|
||||
<label>{{__('messages.Database password:')}}</label>
|
||||
<input style="max-width:275px;" class="form-control" name="password" type="password" />
|
||||
<div class="input-group">
|
||||
</div></div><br>
|
||||
<input type="hidden" name="_token" value="{{csrf_token()}}">
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">Next</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">{{__('messages.Next')}}</button>
|
||||
</form>
|
||||
|
||||
<div class="row">
|
||||
@ -145,26 +186,26 @@
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>Setup LinkStack</h1>
|
||||
<p class="inst-txt">Create an admin account.</p>
|
||||
<h1>{{__('messages.Setup LinkStack')}}</h1>
|
||||
<p class="inst-txt">{{__('messages.Create an admin account')}}</p>
|
||||
|
||||
<form id="home-url-form" action="{{route('createAdmin')}}" enctype="multipart/form-data" method="post">
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Admin email:</label>
|
||||
<label>{{__('messages.Admin email:')}}</label>
|
||||
<input style="max-width:275px;" class="form-control" placeholder="admin@admin.com" name="email" type="email" required>
|
||||
<label>Admin password:</label>
|
||||
<label>{{__('messages.Admin password:')}}</label>
|
||||
<input style="max-width:275px;" class="form-control" placeholder="12345678" name="password" type="password" required>
|
||||
<label>Handle:</label>
|
||||
<label>{{__('messages.Handle:')}}</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend"><div class="input-group-text">@</div></div>
|
||||
<input style="max-width:237px; padding-left:50px;" class="form-control" name="handle" type="text" required>
|
||||
</div>
|
||||
<label>Name:</label>
|
||||
<label>{{__('messages.Name:')}}</label>
|
||||
<input style="max-width:275px;" class="form-control" name="name" type="text" required>
|
||||
<div class="input-group">
|
||||
</div></div><br>
|
||||
<input type="hidden" name="_token" value="{{csrf_token()}}">
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">Next</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">{{__('messages.Next')}}</button>
|
||||
</form>
|
||||
|
||||
@endif
|
||||
@ -175,31 +216,31 @@
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>Setup LinkStack</h1>
|
||||
<p class="inst-txt">Configure your page</p>
|
||||
<h1>{{__('messages.Setup LinkStack')}}</h1>
|
||||
<p class="inst-txt">{{__('messages.Configure your page')}}</p>
|
||||
<form id="home-url-form" action="{{route('options')}}" enctype="multipart/form-data" method="post">
|
||||
<div class="form-group col-lg-8">
|
||||
<div class="input-group">
|
||||
|
||||
<label>Enable registration:</label>
|
||||
<label>{{__('messages.Enable registration:')}}</label>
|
||||
<select style="max-width:300px" class="form-control" name="register">
|
||||
<option>Yes</option>
|
||||
<option>No</option>
|
||||
<option value="Yes">{{__('messages.Yes')}}</option>
|
||||
<option value="No">{{__('messages.No')}}</option>
|
||||
</select>
|
||||
|
||||
<label>Enable email verification:</label>
|
||||
<label>{{__('messages.Enable email verification:')}}</label>
|
||||
<select style="max-width:300px" class="form-control" name="verify">
|
||||
<option>Yes</option>
|
||||
<option>No</option>
|
||||
<option value="Yes">{{__('messages.Yes')}}</option>
|
||||
<option value="No">{{__('messages.No')}}</option>
|
||||
</select>
|
||||
|
||||
<label>Set your page as Home Page</label>
|
||||
<label>{{__('messages.Set your page as Home Page')}}</label>
|
||||
<select id="select" style="max-width:300px" class="form-control" name="page">
|
||||
<option>No</option>
|
||||
<option>Yes</option>
|
||||
<option value="No">{{__('messages.No')}}</option>
|
||||
<option value="Yes">{{__('messages.Yes')}}</option>
|
||||
</select>
|
||||
<style>.hidden{display:flex!important;}</style>
|
||||
<span class="" id="hidden" style="display:none;margin-top:-22px;margin-bottom:10px;color:#6c757d;font-size:90%;">This will move the Home Page to /home</span>
|
||||
<span class="" id="hidden" style="display:none;margin-top:-22px;margin-bottom:10px;color:#6c757d;font-size:90%;">{{__('messages.This will move the Home Page to /home')}}</span>
|
||||
<script src="{{ asset('assets/external-dependencies/jquery-3.4.1.min.js') }}"></script>
|
||||
<script>
|
||||
$("#select").change(function(){
|
||||
@ -211,12 +252,12 @@ $("#select").change(function(){
|
||||
});
|
||||
</script>
|
||||
|
||||
<label>App Name:</label>
|
||||
<label>{{__('messages.App Name:')}}</label>
|
||||
<input style="max-width:275px;" class="form-control" value="LinkStack" name="app" type="text" required>
|
||||
|
||||
</div></div><br>
|
||||
<input type="hidden" name="_token" value="{{csrf_token()}}">
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">Finish setup</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">{{__('messages.Finish setup')}}</button>
|
||||
</form>
|
||||
|
||||
@endif
|
||||
|
@ -10,10 +10,10 @@
|
||||
|
||||
@if(env('DISPLAY_CREDIT') === true)
|
||||
{{-- Removed class spacing --}}
|
||||
<div class="credit-footer"><a style="text-decoration: none;" class="" href="https://linkstack.org" target="_blank" title="Learn more about LinkStack">
|
||||
<div class="credit-footer"><a style="text-decoration: none;" class="" href="https://linkstack.org" target="_blank" title="{{__('messages.Learn more about LinkStack')}}">
|
||||
<div style="vertical-align: middle;display: inline-block;padding-bottom:50px;" class="credit-hover hvr-grow fadein">
|
||||
<img style="top:9px;" class="credit-icon image-footer1 generic" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="LinkStack">
|
||||
<a href="https://linkstack.org" target="_blank" title="Learn more" class="credit-txt credit-txt-clr credit-text">Powered by LinkStack</a>
|
||||
<a href="https://linkstack.org" target="_blank" title="{{__('messages.Learn more')}}" class="credit-txt credit-txt-clr credit-text">Powered by LinkStack</a>
|
||||
</div>
|
||||
</a></div>
|
||||
@endif
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
@stack('installer-head')
|
||||
|
||||
<title>LinkStack setup</title>
|
||||
<title>{{__('messages.LinkStack setup')}}</title>
|
||||
@include('layouts.fonts')
|
||||
<link rel="stylesheet" href="{{ asset('assets/external-dependencies/bootstrap-icons.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/linkstack/css/normalize.css') }}">
|
||||
|
@ -1,9 +1,5 @@
|
||||
@if(env('FORCE_HTTPS') == 'true')<?php URL::forceScheme('https'); header("Content-Security-Policy: upgrade-insecure-requests"); ?>@endif
|
||||
@if(env('CUSTOM_META_TAGS') == 'true' and config('advanced-config.lang') != '')
|
||||
<html lang="{{ config('advanced-config.lang') }}">
|
||||
@else
|
||||
<html lang="en">
|
||||
@endif
|
||||
<html lang="{{ config('app.locale') }}">
|
||||
|
||||
{{-- Redirects to https if enabled in the advanced-config --}}
|
||||
@if(env('FORCE_ROUTE_HTTPS') == 'true')
|
||||
|
@ -3,9 +3,11 @@ use App\Models\UserData;
|
||||
$GLOBALS['activenotify'] = true;
|
||||
$compromised = false;
|
||||
function notification($dismiss = '', $ntid, $heading, $body) {
|
||||
$closeMSG = __('messages.Close');
|
||||
$dismissMSG = __('messages.Dismiss');
|
||||
$dismissBtn = '';
|
||||
if ($dismiss) {
|
||||
$dismissBtn = '<a href="' . url()->current() . '?dismiss=' . $dismiss . '" class="btn btn-danger">Dismiss</a>';
|
||||
$dismissBtn = '<a href="' . url()->current() . '?dismiss=' . $dismiss . '" class="btn btn-danger">'.$dismissMSG.'</a>';
|
||||
}
|
||||
echo <<<MODAL
|
||||
<div class="modal fade" id="$ntid" data-bs-backdrop="true" data-bs-keyboard="false" tabindex="-1" aria-labelledby="${ntid}-label" aria-hidden="true">
|
||||
@ -22,7 +24,7 @@ function notification($dismiss = '', $ntid, $heading, $body) {
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
$dismissBtn
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">$closeMSG</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -84,19 +86,19 @@ $notifyID = Auth::user()->id;
|
||||
[
|
||||
'id' => 'modal-1',
|
||||
'icon' => 'bi bi-exclamation-triangle-fill text-danger',
|
||||
'title' => 'Your security is at risk!',
|
||||
'message' => 'Immediate action is required!',
|
||||
'title' => __('messages.Your security is at risk!'),
|
||||
'message' => __('messages.Immediate action is required!'),
|
||||
'condition' => $compromised,
|
||||
'dismiss' => 'Dismiss this notification',
|
||||
'dismiss' => '',
|
||||
'adminonly' => true,
|
||||
],
|
||||
[
|
||||
'id' => 'modal-star',
|
||||
'icon' => 'bi bi-heart-fill',
|
||||
'title' => 'Enjoying Linkstack?',
|
||||
'message' => 'Help Us Out',
|
||||
'title' => __('messages.Enjoying Linkstack?'),
|
||||
'message' => __('messages.Help Us Out'),
|
||||
'condition' => UserData::getData($notifyID, 'hide-star-notification') !== true,
|
||||
'dismiss' => 'Hide this notification',
|
||||
'dismiss' => __('messages.Hide this notification'),
|
||||
'adminonly' => true,
|
||||
],
|
||||
];
|
||||
@ -115,7 +117,7 @@ $notifyID = Auth::user()->id;
|
||||
@else
|
||||
@php $GLOBALS['activenotify'] = false; @endphp
|
||||
@push('notifications')
|
||||
<center class='p-2'><i>No notifications</i></center>
|
||||
<center class='p-2'><i>{{__('messages.No notifications')}}</i></center>
|
||||
@endpush
|
||||
@endif
|
||||
|
||||
@ -123,8 +125,8 @@ $notifyID = Auth::user()->id;
|
||||
|
||||
{{-- Notification Modals --}}
|
||||
@push('sidebar-scripts') @php
|
||||
notification('', 'modal-1', 'Your security is at risk!', '<b>Your security is at risk.</b> Some files can be accessed by everyone. Immediate action is required!<br><br>Some important files, are publicly accessible, putting your security at risk. Please take immediate action to revoke public access to these files to prevent unauthorized access to your sensitive information.<br><a href="'.url('admin/config#5').'">Learn more</a>.');
|
||||
notification('hide-star-notification', 'modal-star', 'Support Linkstack', 'If you\'re enjoying using Linkstack, we would greatly appreciate it if you could take a moment to <a target="_blank" href="https://github.com/linkstackorg/linkstack">give our project a star on GitHub</a>. Your support will help us reach a wider audience and improve the quality of our project.<br><br>If you\'re able to <a target="_blank" href="https://linkstack.org/donate">make a financial contribution</a>, even a small amount would help us cover the costs of maintaining and improving Linkstack.<br><br>Thank you for your support and for being a part of the LinkStack community!');
|
||||
notification('', 'modal-1', __('messages.Your security is at risk!'), '<b>'.__('messages.security.msg1').'</b> '.__('messages.security.msg2').'<br><br>'.__('messages.security.msg3').'<br><a href="'.url('admin/config#5').'">'.__('messages.security.msg3').'</a>.');
|
||||
notification('hide-star-notification', 'modal-star', __('messages.Support Linkstack'), ''.__('messages.support.msg1').' <a target="_blank" href="https://github.com/linkstackorg/linkstack">'.__('messages.support.msg2').'</a>. '.__('messages.support.msg3').'<br><br>'.__('messages.support.msg4').' <a target="_blank" href="https://linkstack.org/donate">'.__('messages.support.msg5').'<br><br>'.__('messages.support.msg6').'');
|
||||
@endphp @endpush
|
||||
|
||||
@php
|
||||
|
@ -118,7 +118,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<ul class="navbar-nav iq-main-menu" id="sidebar-menu">
|
||||
<li class="nav-item static-item">
|
||||
<a class="nav-link static-item disabled" href="#" tabindex="-1">
|
||||
<span class="default-icon">Home</span>
|
||||
<span class="default-icon">{{__('messages.Home')}}</span>
|
||||
<span class="mini-icon">-</span>
|
||||
</a>
|
||||
</li>
|
||||
@ -129,7 +129,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.33049 2.00049H16.6695C20.0705 2.00049 21.9905 3.92949 22.0005 7.33049V16.6705C22.0005 20.0705 20.0705 22.0005 16.6695 22.0005H7.33049C3.92949 22.0005 2.00049 20.0705 2.00049 16.6705V7.33049C2.00049 3.92949 3.92949 2.00049 7.33049 2.00049ZM12.0495 17.8605C12.4805 17.8605 12.8395 17.5405 12.8795 17.1105V6.92049C12.9195 6.61049 12.7705 6.29949 12.5005 6.13049C12.2195 5.96049 11.8795 5.96049 11.6105 6.13049C11.3395 6.29949 11.1905 6.61049 11.2195 6.92049V17.1105C11.2705 17.5405 11.6295 17.8605 12.0495 17.8605ZM16.6505 17.8605C17.0705 17.8605 17.4295 17.5405 17.4805 17.1105V13.8305C17.5095 13.5095 17.3605 13.2105 17.0895 13.0405C16.8205 12.8705 16.4805 12.8705 16.2005 13.0405C15.9295 13.2105 15.7805 13.5095 15.8205 13.8305V17.1105C15.8605 17.5405 16.2195 17.8605 16.6505 17.8605ZM8.21949 17.1105C8.17949 17.5405 7.82049 17.8605 7.38949 17.8605C6.95949 17.8605 6.59949 17.5405 6.56049 17.1105V10.2005C6.53049 9.88949 6.67949 9.58049 6.95049 9.41049C7.21949 9.24049 7.56049 9.24049 7.83049 9.41049C8.09949 9.58049 8.25049 9.88949 8.21949 10.2005V17.1105Z" fill="currentColor"></path>
|
||||
</svg>
|
||||
</i>
|
||||
<span class="item-name">Dashboard</span>
|
||||
<span class="item-name">{{__('messages.Dashboard')}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
@ -141,13 +141,13 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
</svg>
|
||||
|
||||
</i>
|
||||
<span class="item-name">Add Link</span>
|
||||
<span class="item-name">{{__('messages.Add Link')}}</span>
|
||||
</a>
|
||||
</li>
|
||||
@if(auth()->user()->role == 'admin')
|
||||
<li class="nav-item static-item">
|
||||
<a class="nav-link static-item disabled" href="#" tabindex="-1">
|
||||
<span class="default-icon">Administration</span>
|
||||
<span class="default-icon">{{__('messages.Administration')}}</span>
|
||||
<span class="mini-icon">-</span>
|
||||
</a>
|
||||
</li>
|
||||
@ -158,7 +158,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.4023 13.58C20.76 13.77 21.036 14.07 21.2301 14.37C21.6083 14.99 21.5776 15.75 21.2097 16.42L20.4943 17.62C20.1162 18.26 19.411 18.66 18.6855 18.66C18.3278 18.66 17.9292 18.56 17.6022 18.36C17.3365 18.19 17.0299 18.13 16.7029 18.13C15.6911 18.13 14.8429 18.96 14.8122 19.95C14.8122 21.1 13.872 22 12.6968 22H11.3069C10.1215 22 9.18125 21.1 9.18125 19.95C9.16081 18.96 8.31259 18.13 7.30085 18.13C6.96361 18.13 6.65702 18.19 6.40153 18.36C6.0745 18.56 5.66572 18.66 5.31825 18.66C4.58245 18.66 3.87729 18.26 3.49917 17.62L2.79402 16.42C2.4159 15.77 2.39546 14.99 2.77358 14.37C2.93709 14.07 3.24368 13.77 3.59115 13.58C3.87729 13.44 4.06125 13.21 4.23498 12.94C4.74596 12.08 4.43937 10.95 3.57071 10.44C2.55897 9.87 2.23194 8.6 2.81446 7.61L3.49917 6.43C4.09191 5.44 5.35913 5.09 6.38109 5.67C7.27019 6.15 8.425 5.83 8.9462 4.98C9.10972 4.7 9.20169 4.4 9.18125 4.1C9.16081 3.71 9.27323 3.34 9.4674 3.04C9.84553 2.42 10.5302 2.02 11.2763 2H12.7172C13.4735 2 14.1582 2.42 14.5363 3.04C14.7203 3.34 14.8429 3.71 14.8122 4.1C14.7918 4.4 14.8838 4.7 15.0473 4.98C15.5685 5.83 16.7233 6.15 17.6226 5.67C18.6344 5.09 19.9118 5.44 20.4943 6.43L21.179 7.61C21.7718 8.6 21.4447 9.87 20.4228 10.44C19.5541 10.95 19.2475 12.08 19.7687 12.94C19.9322 13.21 20.1162 13.44 20.4023 13.58ZM9.10972 12.01C9.10972 13.58 10.4076 14.83 12.0121 14.83C13.6165 14.83 14.8838 13.58 14.8838 12.01C14.8838 10.44 13.6165 9.18 12.0121 9.18C10.4076 9.18 9.10972 10.44 9.10972 12.01Z" fill="currentColor"></path>
|
||||
</svg>
|
||||
</i>
|
||||
<span class="item-name">Admin</span>
|
||||
<span class="item-name">{{__('messages.Admin')}}</span>
|
||||
<i class="right-icon">
|
||||
<svg class="icon-18" xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
|
||||
@ -169,25 +169,25 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {{ Request::segment(2) == 'config' ? 'active' : ''}}" href="{{ url('admin/config') }}">
|
||||
<i class="bi bi-wrench-adjustable-circle-fill"></i>
|
||||
<span class="item-name">Config</span>
|
||||
<span class="item-name">{{__('messages.Config')}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {{ Request::segment(2) == 'users' ? 'active' : ''}}" href="{{ url('admin/users/all') }}">
|
||||
<i class="bi bi-people-fill"></i>
|
||||
<span class="item-name">Manage Users</span>
|
||||
<span class="item-name">{{__('messages.Manage Users')}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {{ Request::segment(2) == 'pages' ? 'active' : ''}}" href="{{ url('admin/pages') }}">
|
||||
<i class="bi bi-collection-fill"></i>
|
||||
<span class="item-name">Footer Pages</span>
|
||||
<span class="item-name">{{__('messages.Footer Pages')}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {{ Request::segment(2) == 'site' ? 'active' : ''}}" href="{{ url('admin/site') }}">
|
||||
<i class="bi bi-palette-fill"></i>
|
||||
<span class="item-name">Site Customization</span>
|
||||
<span class="item-name">{{__('messages.Site Customization')}}</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
@ -195,7 +195,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
@endif
|
||||
<li class="nav-item static-item">
|
||||
<a class="nav-link static-item disabled" href="#" tabindex="-1">
|
||||
<span class="default-icon">Personalization</span>
|
||||
<span class="default-icon">{{__('messages.Personalization')}}</span>
|
||||
<span class="mini-icon">-</span>
|
||||
</a>
|
||||
</li>
|
||||
@ -205,7 +205,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.54 2H7.92C9.33 2 10.46 3.15 10.46 4.561V7.97C10.46 9.39 9.33 10.53 7.92 10.53H4.54C3.14 10.53 2 9.39 2 7.97V4.561C2 3.15 3.14 2 4.54 2ZM4.54 13.4697H7.92C9.33 13.4697 10.46 14.6107 10.46 16.0307V19.4397C10.46 20.8497 9.33 21.9997 7.92 21.9997H4.54C3.14 21.9997 2 20.8497 2 19.4397V16.0307C2 14.6107 3.14 13.4697 4.54 13.4697ZM19.4601 2H16.0801C14.6701 2 13.5401 3.15 13.5401 4.561V7.97C13.5401 9.39 14.6701 10.53 16.0801 10.53H19.4601C20.8601 10.53 22.0001 9.39 22.0001 7.97V4.561C22.0001 3.15 20.8601 2 19.4601 2ZM16.0801 13.4697H19.4601C20.8601 13.4697 22.0001 14.6107 22.0001 16.0307V19.4397C22.0001 20.8497 20.8601 21.9997 19.4601 21.9997H16.0801C14.6701 21.9997 13.5401 20.8497 13.5401 19.4397V16.0307C13.5401 14.6107 14.6701 13.4697 16.0801 13.4697Z" fill="currentColor"></path></svg>
|
||||
</i>
|
||||
<span class="item-name">Links</span>
|
||||
<span class="item-name">{{__('messages.Links')}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
@ -214,7 +214,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.6653 2.01034C18.1038 1.92043 19.5224 2.41991 20.5913 3.3989C21.5703 4.46779 22.0697 5.88633 21.9898 7.33483V16.6652C22.0797 18.1137 21.5703 19.5322 20.6013 20.6011C19.5323 21.5801 18.1038 22.0796 16.6653 21.9897H7.33487C5.88636 22.0796 4.46781 21.5801 3.39891 20.6011C2.41991 19.5322 1.92043 18.1137 2.01034 16.6652V7.33483C1.92043 5.88633 2.41991 4.46779 3.39891 3.3989C4.46781 2.41991 5.88636 1.92043 7.33487 2.01034H16.6653ZM10.9811 16.845L17.7042 10.102C18.3136 9.4826 18.3136 8.48364 17.7042 7.87427L16.4056 6.57561C15.7862 5.95625 14.7872 5.95625 14.1679 6.57561L13.4985 7.25491C13.3986 7.35481 13.3986 7.52463 13.4985 7.62453C13.4985 7.62453 15.0869 9.20289 15.1169 9.24285C15.2268 9.36273 15.2967 9.52256 15.2967 9.70238C15.2967 10.062 15.007 10.3617 14.6374 10.3617C14.4675 10.3617 14.3077 10.2918 14.1978 10.1819L12.5295 8.5236C12.4496 8.44368 12.3098 8.44368 12.2298 8.5236L7.46474 13.2887C7.13507 13.6183 6.94527 14.0579 6.93528 14.5274L6.87534 16.8949C6.87534 17.0248 6.9153 17.1447 7.00521 17.2346C7.09512 17.3245 7.21499 17.3744 7.34486 17.3744H9.69245C10.172 17.3744 10.6315 17.1846 10.9811 16.845Z" fill="currentColor"></path></svg>
|
||||
</i>
|
||||
<span class="item-name">Appearance</span>
|
||||
<span class="item-name">{{__('messages.Appearance')}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
@ -223,7 +223,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.63751 3.39549C5.06051 3.39549 3.39551 5.16249 3.39551 7.88849V16.1025C3.39551 16.8675 3.53751 17.5505 3.78051 18.1415C3.791 18.129 4.01986 17.8501 4.3184 17.4863C4.90188 16.7752 5.75156 15.7398 5.75751 15.7345C6.44951 14.9445 7.74851 13.7665 9.45351 14.4795C9.82712 14.6344 10.1592 14.8466 10.4649 15.042C10.4947 15.061 10.5242 15.0799 10.5535 15.0985C11.1265 15.4815 11.4635 15.6615 11.8135 15.6315C11.9585 15.6115 12.0945 15.5685 12.2235 15.4885C12.7101 15.1885 13.9718 13.4009 14.3496 12.8656C14.405 12.7871 14.4414 12.7355 14.4535 12.7195C15.5435 11.2995 17.2235 10.9195 18.6235 11.7595C18.8115 11.8715 20.1585 12.8125 20.6045 13.1905V7.88849C20.6045 5.16249 18.9395 3.39549 16.3535 3.39549H7.63751ZM16.3535 2.00049C19.7305 2.00049 21.9995 4.36249 21.9995 7.88849V16.1025C21.9995 16.1912 21.9902 16.2743 21.9809 16.3574C21.9744 16.4159 21.9678 16.4742 21.9645 16.5345C21.9624 16.5709 21.9613 16.6073 21.9603 16.6438C21.9589 16.6923 21.9575 16.7409 21.9535 16.7895C21.9515 16.8085 21.9478 16.8267 21.944 16.845C21.9403 16.8632 21.9365 16.8815 21.9345 16.9005C21.9015 17.2145 21.8505 17.5145 21.7795 17.8055C21.7627 17.8782 21.7433 17.9483 21.7238 18.0191L21.7195 18.0345C21.6395 18.3165 21.5455 18.5855 21.4325 18.8425C21.4127 18.8857 21.3918 18.9278 21.3709 18.9699C21.357 18.998 21.3431 19.0261 21.3295 19.0545C21.2075 19.2995 21.0755 19.5345 20.9225 19.7525C20.8942 19.7928 20.8641 19.8307 20.8339 19.8685C20.814 19.8936 20.794 19.9186 20.7745 19.9445C20.6155 20.1505 20.4495 20.3475 20.2615 20.5265C20.224 20.5622 20.1834 20.5948 20.1428 20.6275C20.1175 20.6479 20.0921 20.6683 20.0675 20.6895C19.8745 20.8555 19.6775 21.0145 19.4605 21.1505C19.4132 21.1802 19.3628 21.2052 19.3127 21.2301C19.2803 21.2462 19.2479 21.2622 19.2165 21.2795C18.9955 21.4015 18.7725 21.5205 18.5295 21.6125C18.4711 21.6347 18.4088 21.6508 18.3465 21.6669C18.3021 21.6783 18.2577 21.6898 18.2145 21.7035C18.1929 21.7102 18.1713 21.7169 18.1497 21.7236C17.9326 21.7912 17.7162 21.8585 17.4825 21.8985C17.3471 21.9222 17.2034 21.9313 17.0596 21.9405C16.9974 21.9444 16.9351 21.9484 16.8735 21.9535C16.8073 21.9584 16.7423 21.9664 16.6773 21.9744C16.5716 21.9874 16.4656 22.0005 16.3535 22.0005H7.63751C7.26151 22.0005 6.90251 21.9625 6.55551 21.9055C6.54251 21.9035 6.53051 21.9015 6.51851 21.8995C5.16551 21.6665 4.04251 21.0135 3.25551 20.0285C3.25005 20.0285 3.2479 20.0248 3.24504 20.0199C3.24319 20.0167 3.24105 20.013 3.23751 20.0095C2.44651 19.0135 1.99951 17.6745 1.99951 16.1025V7.88849C1.99951 4.36249 4.27051 2.00049 7.63751 2.00049H16.3535ZM11.0001 8.51505C11.0001 9.87 9.86639 11.0001 8.50496 11.0001C7.30825 11.0001 6.2879 10.1257 6.05922 8.99372C6.02143 8.82387 6.00011 8.64919 6.00011 8.46872C6.00011 7.10412 7.10864 6.00009 8.47879 6.00009C9.17647 6.00009 9.80825 6.29347 10.2608 6.76152C10.7152 7.21317 11.0001 7.83564 11.0001 8.51505Z" fill="currentColor"></path></svg>
|
||||
</i>
|
||||
<span class="item-name">Themes</span>
|
||||
<span class="item-name">{{__('messages.Themes')}}</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
@ -290,13 +290,13 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<li class="me-0 me-xl-2">
|
||||
<div class="dropdown d-flex flex-row align-items-center">
|
||||
<a target="_blank" href="{{url('/@'.Auth::user()->littlelink_name)}}">
|
||||
<button style="border-bottom-right-radius:0;border-top-right-radius:0;" type="button" class="btn btn-primary btn-sm pe-2">View Page</button>
|
||||
<button style="border-bottom-right-radius:0;border-top-right-radius:0;" type="button" class="btn btn-primary btn-sm pe-2">{{__('messages.View Page')}}</button>
|
||||
</a>
|
||||
<button style="border-bottom-left-radius:0;border-top-left-radius:0;" class="btn btn-primary btn-sm dropdown-toggle ms-auto px-1" type="button" id="dropdownMenuButtonSM" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<i class="btn-seg-ico bi bi-share-fill"></i>
|
||||
</button>
|
||||
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonSM">
|
||||
<li><h6 class="dropdown-header">Share your profile:</h6></li>
|
||||
<li><h6 class="dropdown-header">{{__('messages.Share your profile:')}}</h6></li>
|
||||
@if(env('SUPPORTED_DOMAINS') !== '' and env('SUPPORTED_DOMAINS') !== null)
|
||||
@php $sDomains = str_replace(' ', '', env('SUPPORTED_DOMAINS')); $sDomains = explode(',', $sDomains); @endphp
|
||||
@foreach ($sDomains as $myvar)
|
||||
@ -310,7 +310,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<li><a class="dropdown-item share-button" style="cursor:pointer!important;" data-share="{{url('').'/@'.Auth::user()->littlelink_name}}"><i class="bi bi-files"></i> {{ str_replace(['http://', 'https://'], '', url('')) }} </a></li>
|
||||
@endif
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><a class="dropdown-item" data-bs-toggle="modal" style="cursor:pointer!important;" data-bs-target="#staticBackdrop"><i class="bi bi-qr-code-scan"></i> QR Code</a></li>
|
||||
<li><a class="dropdown-item" data-bs-toggle="modal" style="cursor:pointer!important;" data-bs-target="#staticBackdrop"><i class="bi bi-qr-code-scan"></i> {{__('messages.QR Code')}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
@ -328,7 +328,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<div class="m-0 shadow-none card">
|
||||
<div class="py-3 card-header d-flex justify-content-between bg-primary">
|
||||
<div class="header-title">
|
||||
<h5 class="mb-0 text-white">All Notifications</h5>
|
||||
<h5 class="mb-0 text-white">{{__('messages.All Notifications')}}</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-0 card-body">
|
||||
@ -373,7 +373,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
@if(env('JOIN_BETA') == true)
|
||||
<div class="py-3 card-header d-flex justify-content-between bg-primary">
|
||||
<div class="header-title">
|
||||
<h5 class="mb-0 text-white">Updater <span style="background-color:orange;" class="badge">Beta Mode</span></h5>
|
||||
<h5 class="mb-0 text-white">{{__('messages.Updater')}} <span style="background-color:orange;" class="badge">{{__('messages.Beta Mode')}}</span></h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-0 card-body rounded-bottom">
|
||||
@ -382,8 +382,8 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<table class="m-0 table table-bordered table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Local version</th>
|
||||
<th>Latest beta</th>
|
||||
<th>{{__('messages.Local version')}}</th>
|
||||
<th>{{__('messages.Latest beta')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -394,13 +394,13 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<center><button class="btn btn-primary rounded-pill mt-2">Run updater</button></center>
|
||||
<center><button class="btn btn-primary rounded-pill mt-2">{{__('messages.Run updater')}}</button></center>
|
||||
</a>
|
||||
</div>
|
||||
@else
|
||||
<div class="py-3 card-header d-flex justify-content-between bg-primary">
|
||||
<div class="header-title">
|
||||
<h5 class="mb-0 text-white">Updater</h5>
|
||||
<h5 class="mb-0 text-white">{{__('messages.Updater')}}</h5>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-0 card-body rounded-bottom">
|
||||
@ -408,9 +408,9 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<div class="d-flex align-items-center">
|
||||
<svg class="icon-32" width="32" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12.0122 14.8299C10.4077 14.8299 9.10986 13.5799 9.10986 12.0099C9.10986 10.4399 10.4077 9.17993 12.0122 9.17993C13.6167 9.17993 14.8839 10.4399 14.8839 12.0099C14.8839 13.5799 13.6167 14.8299 12.0122 14.8299Z" fill="currentColor"></path> <path opacity="0.4" d="M21.2301 14.37C21.036 14.07 20.76 13.77 20.4023 13.58C20.1162 13.44 19.9322 13.21 19.7687 12.94C19.2475 12.08 19.5541 10.95 20.4228 10.44C21.4447 9.87 21.7718 8.6 21.179 7.61L20.4943 6.43C19.9118 5.44 18.6344 5.09 17.6226 5.67C16.7233 6.15 15.5685 5.83 15.0473 4.98C14.8838 4.7 14.7918 4.4 14.8122 4.1C14.8429 3.71 14.7203 3.34 14.5363 3.04C14.1582 2.42 13.4735 2 12.7172 2H11.2763C10.5302 2.02 9.84553 2.42 9.4674 3.04C9.27323 3.34 9.16081 3.71 9.18125 4.1C9.20169 4.4 9.10972 4.7 8.9462 4.98C8.425 5.83 7.27019 6.15 6.38109 5.67C5.35913 5.09 4.09191 5.44 3.49917 6.43L2.81446 7.61C2.23194 8.6 2.55897 9.87 3.57071 10.44C4.43937 10.95 4.74596 12.08 4.23498 12.94C4.06125 13.21 3.87729 13.44 3.59115 13.58C3.24368 13.77 2.93709 14.07 2.77358 14.37C2.39546 14.99 2.4159 15.77 2.79402 16.42L3.49917 17.62C3.87729 18.26 4.58245 18.66 5.31825 18.66C5.66572 18.66 6.0745 18.56 6.40153 18.36C6.65702 18.19 6.96361 18.13 7.30085 18.13C8.31259 18.13 9.16081 18.96 9.18125 19.95C9.18125 21.1 10.1215 22 11.3069 22H12.6968C13.872 22 14.8122 21.1 14.8122 19.95C14.8429 18.96 15.6911 18.13 16.7029 18.13C17.0299 18.13 17.3365 18.19 17.6022 18.36C17.9292 18.56 18.3278 18.66 18.6855 18.66C19.411 18.66 20.1162 18.26 20.4943 17.62L21.2097 16.42C21.5776 15.75 21.6083 14.99 21.2301 14.37Z" fill="currentColor"></path> </svg>
|
||||
<div class="ms-3 w-100">
|
||||
<h6 class="mb-0 ">@if($Vgit > $Vlocal) Update available @else Up to date @endif</h6>
|
||||
<h6 class="mb-0 ">@if($Vgit > $Vlocal) {{__('messages.Update available')}} @else {{__('messages.Up to date')}} @endif</h6>
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<p class="mb-0"><i>@if($Vgit > $Vlocal) Run updater @else Check again @endif</i></p>
|
||||
<p class="mb-0"><i>@if($Vgit > $Vlocal) {{__('messages.Run updater')}} @else {{__('messages.Check again')}} @endif</i></p>
|
||||
<small class="float-end font-size-12">v{{$Vlocal}}</small>
|
||||
</div>
|
||||
</div>
|
||||
@ -439,24 +439,24 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<h6 class="mb-0 caption-title">{{Auth::user()->name}}</h6>
|
||||
<p class="mb-0 caption-sub-title">
|
||||
@if(Auth::user()->role == "admin")
|
||||
Administrator
|
||||
{{__('messages.Administrator')}}
|
||||
@elseif(Auth::user()->role == "vip")
|
||||
Verified user
|
||||
{{__('messages.Verified user')}}
|
||||
@else
|
||||
User
|
||||
{{__('messages.User')}}
|
||||
@endif
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
|
||||
<li><a class="dropdown-item" href="{{ url('/studio/page') }}"><i class="bi bi-person-fill"></i> Profile</a></li>
|
||||
<li><a class="dropdown-item" href="{{ url('/studio/profile') }}"><i class="bi bi-gear-fill"></i> Settings</a></li>
|
||||
<li><a class="dropdown-item" data-bs-toggle="offcanvas" data-bs-target="#offcanvasExample" role="button" aria-controls="offcanvasExample"><i class="bi bi-brush-fill"></i> Styling</a></li>
|
||||
<li><a class="dropdown-item" href="{{ url('/studio/page') }}"><i class="bi bi-person-fill"></i> {{__('messages.Profile')}}</a></li>
|
||||
<li><a class="dropdown-item" href="{{ url('/studio/profile') }}"><i class="bi bi-gear-fill"></i> {{__('messages.Settings')}}</a></li>
|
||||
<li><a class="dropdown-item" data-bs-toggle="offcanvas" data-bs-target="#offcanvasExample" role="button" aria-controls="offcanvasExample"><i class="bi bi-brush-fill"></i> {{__('messages.Styling')}}</a></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li>
|
||||
<form action="{{ route('logout') }}" method="post">
|
||||
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||
<button type="submit" class="dropdown-item" href="{{ route('logout') }}"><i class="bi bi-box-arrow-in-left"></i> Logout</button>
|
||||
<button type="submit" class="dropdown-item" href="{{ route('logout') }}"><i class="bi bi-box-arrow-in-left"></i> {{__('messages.Logout')}}</button>
|
||||
</form>
|
||||
</li>
|
||||
</ul>
|
||||
@ -473,18 +473,18 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<div style="z-index:5;position:relative;" class="flex-wrap d-flex justify-content-between align-items-center">
|
||||
<div>
|
||||
@if(!isset($usrhandl))
|
||||
<h1>👋 Hi, stranger</h1>
|
||||
<h1>👋 {{__('messages.Hi')}}, {{__('messages.stranger')}}</h1>
|
||||
@else
|
||||
<h1>👋 Hi, {{'@'.$usrhandl}}</h1>
|
||||
<h1>👋 {{__('messages.Hi')}}, {{'@'.$usrhandl}}</h1>
|
||||
@endif
|
||||
|
||||
<h5>Welcome to {{ config('app.name') }}!</h5>
|
||||
<h5>{{__('messages.welcome', ['appName' => config('app.name')])}}</h5>
|
||||
</div>
|
||||
<div>
|
||||
@if(!isset($usrhandl))
|
||||
<a href="{{ url('/studio/page') }}" class="btn btn-link btn-soft-light">
|
||||
<i style="top:3px;position:relative;font-size:2.5vh;" class="bi bi-at"></i>
|
||||
Set a handle
|
||||
{{__('messages.Set a handle')}}
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
@ -518,14 +518,14 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
@endif
|
||||
</ul>
|
||||
<div class="right-panel">
|
||||
Copyright © @php echo date('Y'); @endphp {{ config('app.name') }}
|
||||
{{__('messages.Copyright')}} © @php echo date('Y'); @endphp {{ config('app.name') }}
|
||||
@if(env('DISPLAY_CREDIT_FOOTER') === true)
|
||||
<span class="">
|
||||
- Made with
|
||||
- {{__('messages.Made with')}}
|
||||
<svg class="icon-15" width="15" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.85 2.50065C16.481 2.50065 17.111 2.58965 17.71 2.79065C21.401 3.99065 22.731 8.04065 21.62 11.5806C20.99 13.3896 19.96 15.0406 18.611 16.3896C16.68 18.2596 14.561 19.9196 12.28 21.3496L12.03 21.5006L11.77 21.3396C9.48102 19.9196 7.35002 18.2596 5.40102 16.3796C4.06102 15.0306 3.03002 13.3896 2.39002 11.5806C1.26002 8.04065 2.59002 3.99065 6.32102 2.76965C6.61102 2.66965 6.91002 2.59965 7.21002 2.56065H7.33002C7.61102 2.51965 7.89002 2.50065 8.17002 2.50065H8.28002C8.91002 2.51965 9.52002 2.62965 10.111 2.83065H10.17C10.21 2.84965 10.24 2.87065 10.26 2.88965C10.481 2.96065 10.69 3.04065 10.89 3.15065L11.27 3.32065C11.3618 3.36962 11.4649 3.44445 11.554 3.50912C11.6104 3.55009 11.6612 3.58699 11.7 3.61065C11.7163 3.62028 11.7329 3.62996 11.7496 3.63972C11.8354 3.68977 11.9247 3.74191 12 3.79965C13.111 2.95065 14.46 2.49065 15.85 2.50065ZM18.51 9.70065C18.92 9.68965 19.27 9.36065 19.3 8.93965V8.82065C19.33 7.41965 18.481 6.15065 17.19 5.66065C16.78 5.51965 16.33 5.74065 16.18 6.16065C16.04 6.58065 16.26 7.04065 16.68 7.18965C17.321 7.42965 17.75 8.06065 17.75 8.75965V8.79065C17.731 9.01965 17.8 9.24065 17.94 9.41065C18.08 9.58065 18.29 9.67965 18.51 9.70065Z" fill="currentColor"></path>
|
||||
</svg>
|
||||
</span> by <a href="https://linkstack.org/" target="_blank">LinkStack</a>.
|
||||
</span> {{__('messages.by')}} <a href="https://linkstack.org/" target="_blank">LinkStack</a>.
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@ -536,38 +536,38 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasExample" data-bs-scroll="true" data-bs-backdrop="true" aria-labelledby="offcanvasExampleLabel">
|
||||
<div class="offcanvas-header">
|
||||
<div class="d-flex align-items-center">
|
||||
<h3 class="offcanvas-title me-3" id="offcanvasExampleLabel">Settings</h3>
|
||||
<h3 class="offcanvas-title me-3" id="offcanvasExampleLabel">{{__('messages.Settings')}}</h3>
|
||||
</div>
|
||||
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="offcanvas-body data-scrollbar">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h5 class="mb-3">Scheme</h5>
|
||||
<h5 class="mb-3">{{__('messages.Scheme')}}</h5>
|
||||
<div class="d-grid gap-3 grid-cols-3 mb-4">
|
||||
<div class="btn btn-border" data-setting="color-mode" data-name="color" data-value="auto">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="currentColor" d="M7,2V13H10V22L17,10H13L17,2H7Z" />
|
||||
</svg>
|
||||
<span class="ms-2 "> Auto </span>
|
||||
<span class="ms-2 "> {{__('messages.Auto')}} </span>
|
||||
</div>
|
||||
|
||||
<div class="btn btn-border" data-setting="color-mode" data-name="color" data-value="dark">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="currentColor" d="M9,2C7.95,2 6.95,2.16 6,2.46C10.06,3.73 13,7.5 13,12C13,16.5 10.06,20.27 6,21.54C6.95,21.84 7.95,22 9,22A10,10 0 0,0 19,12A10,10 0 0,0 9,2Z" />
|
||||
</svg>
|
||||
<span class="ms-2 "> Dark </span>
|
||||
<span class="ms-2 "> {{__('messages.Dark')}} </span>
|
||||
</div>
|
||||
<div class="btn btn-border active" data-setting="color-mode" data-name="color" data-value="light">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="currentColor" d="M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z" />
|
||||
</svg>
|
||||
<span class="ms-2 "> Light</span>
|
||||
<span class="ms-2 "> {{__('messages.Light')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="hr-horizontal">
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<h5 class="mt-4 mb-3">Color Customizer</h5>
|
||||
<h5 class="mt-4 mb-3">{{__('messages.Color Customizer')}}</h5>
|
||||
<button class="btn btn-transparent p-0 border-0" data-value="theme-color-default" data-info="#079aa2" data-setting="color-mode1" data-name="color" data-bs-toggle="tooltip" data-bs-placement="top" title="" data-bs-original-title="Default">
|
||||
<svg class="icon-18" width="18" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M21.4799 12.2424C21.7557 12.2326 21.9886 12.4482 21.9852 12.7241C21.9595 14.8075 21.2975 16.8392 20.0799 18.5506C18.7652 20.3986 16.8748 21.7718 14.6964 22.4612C12.518 23.1505 10.1711 23.1183 8.01299 22.3694C5.85488 21.6205 4.00382 20.196 2.74167 18.3126C1.47952 16.4293 0.875433 14.1905 1.02139 11.937C1.16734 9.68346 2.05534 7.53876 3.55018 5.82945C5.04501 4.12014 7.06478 2.93987 9.30193 2.46835C11.5391 1.99683 13.8711 2.2599 15.9428 3.2175L16.7558 1.91838C16.9822 1.55679 17.5282 1.62643 17.6565 2.03324L18.8635 5.85986C18.945 6.11851 18.8055 6.39505 18.549 6.48314L14.6564 7.82007C14.2314 7.96603 13.8445 7.52091 14.0483 7.12042L14.6828 5.87345C13.1977 5.18699 11.526 4.9984 9.92231 5.33642C8.31859 5.67443 6.8707 6.52052 5.79911 7.74586C4.72753 8.97119 4.09095 10.5086 3.98633 12.1241C3.8817 13.7395 4.31474 15.3445 5.21953 16.6945C6.12431 18.0446 7.45126 19.0658 8.99832 19.6027C10.5454 20.1395 12.2278 20.1626 13.7894 19.6684C15.351 19.1743 16.7062 18.1899 17.6486 16.8652C18.4937 15.6773 18.9654 14.2742 19.0113 12.8307C19.0201 12.5545 19.2341 12.3223 19.5103 12.3125L21.4799 12.2424Z" fill="#31BAF1"/>
|
||||
@ -608,63 +608,63 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
</div>
|
||||
</div> --}}
|
||||
<hr class="hr-horizontal">
|
||||
<h5 class="mt-4 mb-3">Sidebar Color</h5>
|
||||
<h5 class="mt-4 mb-3">{{__('messages.Sidebar Color')}}</h5>
|
||||
<div class="d-grid gap-3 grid-cols-2 mb-4">
|
||||
<div class="btn btn-border d-block" data-setting="sidebar" data-name="sidebar-color" data-value="sidebar-white">
|
||||
<span class=""> Default </span>
|
||||
<span class=""> {{__('messages.Default')}} </span>
|
||||
</div>
|
||||
<div class="btn btn-border d-block" data-setting="sidebar" data-name="sidebar-color" data-value="sidebar-dark">
|
||||
<span class=""> Dark </span>
|
||||
<span class=""> {{__('messages.Dark')}} </span>
|
||||
</div>
|
||||
<div class="btn btn-border d-block" data-setting="sidebar" data-name="sidebar-color" data-value="sidebar-color">
|
||||
<span class=""> Color </span>
|
||||
<span class=""> {{__('messages.Color')}} </span>
|
||||
</div>
|
||||
|
||||
<div class="btn btn-border d-block" data-setting="sidebar" data-name="sidebar-color" data-value="sidebar-transparent">
|
||||
<span class=""> Transparent </span>
|
||||
<span class=""> {{__('messages.Transparent')}} </span>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="hr-horizontal">
|
||||
<h5 class="mt-4 mb-3">Sidebar Types</h5>
|
||||
<h5 class="mt-4 mb-3">{{__('messages.Sidebar Types')}}</h5>
|
||||
<div class="d-grid gap-3 grid-cols-3 mb-4">
|
||||
<div class="text-center">
|
||||
<img src="{{asset('assets/images/settings/dark/03.png')}}" alt="mini" class="mode dark-img img-fluid btn-border p-0 flex-column mb-2" data-setting="sidebar" data-name="sidebar-type" data-value="sidebar-mini">
|
||||
<img src="{{asset('assets/images/settings/light/03.png')}}" alt="mini" class="mode light-img img-fluid btn-border p-0 flex-column mb-2" data-setting="sidebar" data-name="sidebar-type" data-value="sidebar-mini">
|
||||
<span class="mt-2">Mini</span>
|
||||
<span class="mt-2">{{__('messages.Mini')}}</span>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<img src="{{asset('assets/images/settings/dark/04.png')}}" alt="hover" class="mode dark-img img-fluid btn-border p-0 flex-column mb-2" data-setting="sidebar" data-name="sidebar-type" data-value="sidebar-hover" data-extra-value="sidebar-mini">
|
||||
<img src="{{asset('assets/images/settings/light/04.png')}}" alt="hover" class="mode light-img img-fluid btn-border p-0 flex-column mb-2" data-setting="sidebar" data-name="sidebar-type" data-value="sidebar-hover" data-extra-value="sidebar-mini">
|
||||
<span class="mt-2">Hover</span>
|
||||
<span class="mt-2">{{__('messages.Hover')}}</span>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<img src="{{asset('assets/images/settings/dark/05.png')}}" alt="boxed" class="mode dark-img img-fluid btn-border p-0 flex-column mb-2" data-setting="sidebar" data-name="sidebar-type" data-value="sidebar-boxed">
|
||||
<img src="{{asset('assets/images/settings/light/05.png')}}" alt="boxed" class="mode light-img img-fluid btn-border p-0 flex-column mb-2" data-setting="sidebar" data-name="sidebar-type" data-value="sidebar-boxed">
|
||||
<span class="mt-2">Boxed</span>
|
||||
<span class="mt-2">{{__('messages.Boxed')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="hr-horizontal">
|
||||
<h5 class="mt-4 mb-3">Sidebar Active Style</h5>
|
||||
<h5 class="mt-4 mb-3">{{__('messages.Sidebar Active Style')}}</h5>
|
||||
<div class="d-grid gap-3 grid-cols-2 mb-4">
|
||||
<div class="text-center">
|
||||
<img src="{{asset('assets/images/settings/dark/06.png')}}" alt="rounded-one-side" class="mode dark-img img-fluid btn-border p-0 flex-column mb-2" data-setting="sidebar" data-name="sidebar-item" data-value="navs-rounded">
|
||||
<img src="{{asset('assets/images/settings/light/06.png')}}" alt="rounded-one-side" class="mode light-img img-fluid btn-border p-0 flex-column mb-2" data-setting="sidebar" data-name="sidebar-item" data-value="navs-rounded">
|
||||
<span class="mt-2">Rounded One Side</span>
|
||||
<span class="mt-2">{{__('messages.Rounded One Side')}}</span>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<img src="{{asset('assets/images/settings/dark/07.png')}}" alt="rounded-all" class="mode dark-img img-fluid btn-border p-0 flex-column active mb-2" data-setting="sidebar" data-name="sidebar-item" data-value="navs-rounded-all">
|
||||
<img src="{{asset('assets/images/settings/light/07.png')}}" alt="rounded-all" class="mode light-img img-fluid btn-border p-0 flex-column active mb-2" data-setting="sidebar" data-name="sidebar-item" data-value="navs-rounded-all">
|
||||
<span class="mt-2">Rounded All</span>
|
||||
<span class="mt-2">{{__('messages.Rounded All')}}</span>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<img src="{{asset('assets/images/settings/dark/08.png')}}" alt="pill-one-side" class="mode dark-img img-fluid btn-border p-0 flex-column mb-2" data-setting="sidebar" data-name="sidebar-item" data-value="navs-pill">
|
||||
<img src="{{asset('assets/images/settings/light/09.png')}}" alt="pill-one-side" class="mode light-img img-fluid btn-border p-0 flex-column mb-2" data-setting="sidebar" data-name="sidebar-item" data-value="navs-pill">
|
||||
<span class="mt-2">Pill One Side</span>
|
||||
<span class="mt-2">{{__('messages.Pill One Side')}}</span>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<img src="{{asset('assets/images/settings/dark/09.png')}}" alt="pill-all" class="mode dark-img img-fluid btn-border p-0 flex-column" data-setting="sidebar" data-name="sidebar-item" data-value="navs-pill-all">
|
||||
<img src="{{asset('assets/images/settings/light/08.png')}}" alt="pill-all" class="mode light-img img-fluid btn-border p-0 flex-column" data-setting="sidebar" data-name="sidebar-item" data-value="navs-pill-all">
|
||||
<span class="mt-2">Pill All</span>
|
||||
<span class="mt-2">{{__('messages.Pill All')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="hr-horizontal">
|
||||
@ -678,7 +678,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="staticBackdropLabel">Scan QR Code</h5>
|
||||
<h5 class="modal-title" id="staticBackdropLabel">{{__('messages.Scan QR Code')}}</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
@php
|
||||
@ -696,7 +696,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
$svgImageBase64 = base64_encode($svgImageData);
|
||||
|
||||
$imgSrc = 'data:image/svg+xml;base64,' . $svgImageBase64;
|
||||
} catch(exception $e) {echo '<p class="text-center pt-5">QR code could not be generated</p>'; if(auth()->user()->role == 'admin'){echo "<p class='ps-3'>Reason: <pre class='ps-4'>".$e->getMessage()."</pre></p>";}}
|
||||
} catch(exception $e) {echo '<p class="text-center pt-5">{{__("messages.QR code could not be generated")}}</p>'; if(auth()->user()->role == 'admin'){echo "<p class='ps-3'>{{__('messages.Reason:')}} <pre class='ps-4'>".$e->getMessage()."</pre></p>";}}
|
||||
@endphp
|
||||
<div class="modal-body">
|
||||
<div class="bd-example">
|
||||
@ -704,7 +704,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{__('messages.Close')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -762,21 +762,21 @@ $usrhandl = Auth::user()->littlelink_name;
|
||||
if (navigator.share) {
|
||||
// Call the Web Share API to open the native share dialog
|
||||
navigator.share({
|
||||
title: 'Share your profile',
|
||||
title: '{{__("messages.Share your profile")}}',
|
||||
text: valueToShare,
|
||||
url: valueToShare,
|
||||
})
|
||||
.catch(err => console.error('Error sharing:', err));
|
||||
.catch(err => console.error('{{__("messages.Error sharing:")}}', err));
|
||||
} else {
|
||||
// If the Web Share API is not supported, copy the value to the clipboard
|
||||
navigator.clipboard.writeText(valueToShare)
|
||||
.then(() => {
|
||||
// If copying was successful, alert the user
|
||||
alert('Text copied to clipboard!');
|
||||
alert('{{__("messages.Text copied to clipboard!")}}');
|
||||
})
|
||||
.catch(err => {
|
||||
// If copying failed, alert the user
|
||||
alert('Error copying text:', err);
|
||||
alert('{{__("messages.Error copying text:")}}', err);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
@stack('updater-head')
|
||||
|
||||
<title>Update</title>
|
||||
<title>{{__('messages.Update LinkStack')}}</title>
|
||||
@include('layouts.fonts')
|
||||
<link rel="stylesheet" href="{{ asset('assets/linkstack/css/normalize.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('assets/linkstack/css/brands.css') }}">
|
||||
|
@ -199,13 +199,13 @@ if($customBackgroundExists == true){
|
||||
<script>{!! file_get_contents(base_path("assets/linkstack/js/jquery.min.js")) !!}</script>
|
||||
<div align="right" class="sharediv">
|
||||
<div>
|
||||
<span class="sharebutton button-hover icon-hover share-button" data-share="{{url()->current()}}" tabindex="0" role="button" aria-label="Share this page">
|
||||
<span class="sharebutton button-hover icon-hover share-button" data-share="{{url()->current()}}" tabindex="0" role="button" aria-label="{{__('messages.Share this page')}}">
|
||||
<i style="color: black;" class="fa-solid fa-share sharebutton-img share-icon hvr-icon"></i>
|
||||
<span class="sharebutton-mb">Share</span>
|
||||
<span class="sharebutton-mb">{{__('messages.Share')}}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="copy-icon" tabindex="0" role="button" aria-label="Copy URL to clipboard">
|
||||
<span class="copy-icon" tabindex="0" role="button" aria-label="{{__('messages.Copy URL to clipboard')}}">
|
||||
</span>
|
||||
|
||||
<script>
|
||||
@ -215,17 +215,17 @@ if($customBackgroundExists == true){
|
||||
const valueToShare = button.dataset.share;
|
||||
if (navigator.share) {
|
||||
navigator.share({
|
||||
title: 'Share this page',
|
||||
title: "{{__('messages.Share this page')}}",
|
||||
url: valueToShare
|
||||
})
|
||||
.catch(err => console.error('Error sharing:', err));
|
||||
.catch(err => console.error('Error:', err));
|
||||
} else {
|
||||
navigator.clipboard.writeText(valueToShare)
|
||||
.then(() => {
|
||||
alert('URL has been copied to your clipboard!');
|
||||
alert("{{__('messages.URL has been copied to your clipboard!')}}");
|
||||
})
|
||||
.catch(err => {
|
||||
alert('Error copying URL:', err);
|
||||
alert('Error', err);
|
||||
});
|
||||
}
|
||||
});
|
||||
@ -249,7 +249,7 @@ if($customBackgroundExists == true){
|
||||
@endif
|
||||
|
||||
<!-- Your Name -->
|
||||
<h1 class="fadein">{{ $info->name }}@if(($userinfo->role == 'vip' or $userinfo->role == 'admin') and theme('disable_verification_badge') != "true" and env('HIDE_VERIFICATION_CHECKMARK') != true and UserData::getData($userinfo->id, 'checkmark') != false)<span title="Verified user">@include('components.verify-svg')@endif</span></h1>
|
||||
<h1 class="fadein">{{ $info->name }}@if(($userinfo->role == 'vip' or $userinfo->role == 'admin') and theme('disable_verification_badge') != "true" and env('HIDE_VERIFICATION_CHECKMARK') != true and UserData::getData($userinfo->id, 'checkmark') != false)<span title="{{__('messages.Verified user')}}">@include('components.verify-svg')@endif</span></h1>
|
||||
|
||||
<!-- Short Bio -->
|
||||
<style>.description-parent * {margin-bottom: 1em;}.description-parent {padding-bottom: 30px;}</style>
|
||||
|
@ -90,12 +90,12 @@ body {
|
||||
@endif
|
||||
|
||||
<div style="padding-bottom:5%;">
|
||||
<h1 style="font-size: 300%;"><i class="fa-solid fa-screwdriver-wrench"></i> Maintenance Mode <i class="fa-solid fa-screwdriver-wrench"></i></h1>
|
||||
<h2>We are performing scheduled site maintenance at this time.</h2>
|
||||
<h3>Please check back with us later.</h3>
|
||||
<h1 style="font-size: 300%;"><i class="fa-solid fa-screwdriver-wrench"></i> {{__('messages.Maintenance Mode')}} <i class="fa-solid fa-screwdriver-wrench"></i></h1>
|
||||
<h2>{{__('messages.We are performing scheduled site maintenance at this time')}}</h2>
|
||||
<h3>{{__('messages.Please check back with us later')}}</h3>
|
||||
@if(auth()->user() && auth()->user()->role == 'admin')
|
||||
<br><center><i>Admin options:</i></center>
|
||||
<a href="{{url('dashboard')}}">Dashboard</a> | <a href="{{url('?maintenance=off')}}" onclick="return confirm('You are about to disable Maintenance Mode. Are you sure?');">Turn off</a>
|
||||
<br><center><i>{{__('messages.Admin options:')}}</i></center>
|
||||
<a href="{{url('dashboard')}}">{{__('messages.Dashboard')}}</a> | <a href="{{url('?maintenance=off')}}" onclick="return confirm('{{__('messages.Warn.Disable.Maintenance')}}');">{{__('messages.Turn off')}}</a>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
|
@ -1,46 +0,0 @@
|
||||
@extends('layouts.sidebar')
|
||||
|
||||
@section('content')
|
||||
<style>button{border-style: none;background-color: #0085ff;color: #fff;border-radius: 5px;}button:hover {background-color:#0065c1;color: #FFF;box-shadow: 0 10px 20px -10px rgba(0,0,0, 0.6);}.btn {color: #FFF !important;}.buttondm{display:inline-block;text-decoration:none;height:48px;text-align:center;vertical-align:middle;font-size:18px;width:300px;font-weight:700;line-height:48px;letter-spacing:.1px;white-space:wrap;border-radius:8px;cursor:pointer}.button-hover,.credit-hover{display:inline-block;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px rgba(0,0,0,0);-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:transform;transition-property:transform}.button-hover:active,.credit-hover:active,.button-hover:focus,.credit-hover:focus,.button-hover:hover,.credit-hover:hover{-webkit-transform:scale(1.06);transform:scale(1.06)}.container{align-items:center;display:flex;flex-direction:column;justify-content:center;height:50%;width:100%}</style>
|
||||
<!-- Custom icons font-awesome -->
|
||||
<script src="{{ asset('assets/external-dependencies/fontawesome.js') }}" crossorigin="anonymous"></script>
|
||||
@if (file_exists(base_path('backups/updater-backups/')) and is_dir(base_path('backups/updater-backups/')))
|
||||
@if($_SERVER['QUERY_STRING'] != '')
|
||||
<?php
|
||||
$filename = $_SERVER['QUERY_STRING'];
|
||||
|
||||
$filepath = base_path('backups/updater-backups/') . $filename;
|
||||
|
||||
$strFile = file_get_contents($filepath);
|
||||
|
||||
header("Content-type: application/force-download");
|
||||
header('Content-Disposition: attachment; filename="'.$filename.'"');
|
||||
|
||||
header('Content-Length: ' . filesize($filepath));
|
||||
echo $strFile;
|
||||
while (ob_get_level()) {
|
||||
ob_end_clean();
|
||||
}
|
||||
readfile($filepath);
|
||||
exit;
|
||||
?>
|
||||
@endif
|
||||
|
||||
<div class="container">
|
||||
<br><br><h3>Download your updater backups:</h3>
|
||||
<hp>The server will never store more that two backups at a time.</hp><br><br><br>
|
||||
<?php
|
||||
$test="test";
|
||||
if ($handle = opendir('backups/updater-backups')) {
|
||||
while (false !== ($entry = readdir($handle))) {
|
||||
if ($entry != "." && $entry != "..") {
|
||||
echo '<div class="button-entrance"><a class="buttondm button-hover icon-hover" style="color:#ffffff; background-color:#000;" href="' . url()->current() . '/?' . $entry . '"><i style="color: " class="icon hvr-icon fa fa-download"></i> '; print_r($entry); echo '</a></div><br>';
|
||||
}}} ?>
|
||||
</div>
|
||||
|
||||
@else
|
||||
<div class="container">
|
||||
<h3>No backups found</h3></div>
|
||||
@endif
|
||||
<center><a class="btn" href="{{ url('backup') }}"><button><i class="fa-solid fa-floppy-disk"></i> Backup your instance</button></a></center>
|
||||
@endsection
|
@ -15,11 +15,11 @@
|
||||
|
||||
<div id="exTab2" class="">
|
||||
<ul id="myTab" class="nav nav-tabs">
|
||||
<li class="nav-item"><a class="nav-link active" href="#1" data-toggle="tab" id="home-tab">Config</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#2" data-toggle="tab" id="advanced-tab">Advanced Config</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#3" data-toggle="tab" id="backup-tab">Take Backup</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#4" data-toggle="tab" id="backups4-tab">All Backups</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#5" data-toggle="tab" id="diagnose5-tab">Diagnosis</a></li>
|
||||
<li class="nav-item"><a class="nav-link active" href="#1" data-toggle="tab" id="home-tab">{{__('messages.Config')}}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#2" data-toggle="tab" id="advanced-tab">{{__('messages.Advanced Config')}}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#3" data-toggle="tab" id="backup-tab">{{__('messages.Take Backup')}}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#4" data-toggle="tab" id="backups4-tab">{{__('messages.All Backups')}}</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#5" data-toggle="tab" id="diagnose5-tab">{{__('messages.Diagnosis')}}</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content ">
|
||||
@ -27,7 +27,7 @@
|
||||
|
||||
<div class="tab-pane fade show active" role="tabpanel" style="scroll-margin-top: 1000px;" aria-labelledby="home-tab" id="1">
|
||||
<section class="text-gray-400">
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-pencil-square"> Config</i></h2>
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-pencil-square"> {{__('messages.Config')}}</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
|
||||
<style>
|
||||
@ -64,8 +64,8 @@
|
||||
<div class="d-flex align-items-center text-body">
|
||||
<i class="bi bi-pencil-square opt-img mr-3"></i>
|
||||
<div>
|
||||
<h3 class="counter mb-2 text-body" style="visibility: visible;">Alternative Config Editor</h3>
|
||||
<p class="mb-0">Use the Alternative Config Editor to edit the config directly</p>
|
||||
<h3 class="counter mb-2 text-body" style="visibility: visible;">{{__('messages.Alternative Config Editor')}}</h3>
|
||||
<p class="mb-0">{{__('messages.Use the Alternative Config Editor to edit the config directly')}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -77,8 +77,8 @@
|
||||
<div class="d-flex align-items-center text-body">
|
||||
<i class="bi bi-filetype-php opt-img mr-3"></i>
|
||||
<div>
|
||||
<h3 class="counter mb-2 text-body" style="visibility: visible;">PHP info</h3>
|
||||
<p class="mb-0">Display debugging information about your PHP setup</p>
|
||||
<h3 class="counter mb-2 text-body" style="visibility: visible;">{{__('messages.PHP info')}}</h3>
|
||||
<p class="mb-0">{{__('messages.Display debugging information about your PHP setup')}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -90,31 +90,34 @@
|
||||
|
||||
@endif
|
||||
|
||||
<label class="mb-2">Jump directly to:</label>
|
||||
<label class="mb-2">{{__('messages.Jump directly to:')}}</label>
|
||||
<div class="col-md-12 col-lg-12">
|
||||
<div class="row row-cols-1">
|
||||
<div class="overflow-hidden d-slider1 swiper-container-initialized swiper-container-horizontal swiper-container-pointer-events">
|
||||
<ul class="p-0 m-0 mb-2 swiper-wrapper list-inline" id="swiper-wrapper-a3b63471782f110100" aria-live="polite" style="transition-duration: 0ms; transform: translate3d(0px, 0px, 0px);">
|
||||
<li class="swiper-slide card card-slide aos-init aos-animate swiper-slide-active">
|
||||
<a href="#Application" class="btn btn-primary">Application</a>
|
||||
<a href="#Application" class="btn btn-primary">{{__('messages.Application')}}</a>
|
||||
</li>
|
||||
<li class="swiper-slide card card-slide aos-init aos-animate swiper-slide-next">
|
||||
<a href="#Panel-settings" class="btn btn-primary">Panel settings</a>
|
||||
<a href="#Panel-settings" class="btn btn-primary">{{__('messages.Panel settings')}}</a>
|
||||
</li>
|
||||
<li class="swiper-slide card card-slide aos-init aos-animate swiper-slide-next">
|
||||
<a href="#Security" class="btn btn-primary">Security</a>
|
||||
<a href="#Security" class="btn btn-primary">{{__('messages.Security')}}</a>
|
||||
</li>
|
||||
<li class="swiper-slide card card-slide aos-init aos-animate swiper-slide-next">
|
||||
<a href="#Advanced" class="btn btn-primary">Advanced</a>
|
||||
<a href="#Advanced" class="btn btn-primary">{{__('messages.Advanced')}}</a>
|
||||
</li>
|
||||
<li class="swiper-slide card card-slide aos-init aos-animate swiper-slide-next">
|
||||
<a href="#SMTP" class="btn btn-primary">SMTP</a>
|
||||
<a href="#SMTP" class="btn btn-primary">{{__('messages.SMTP')}}</a>
|
||||
</li>
|
||||
<li class="swiper-slide card card-slide aos-init aos-animate swiper-slide-next">
|
||||
<a href="#Footer" class="btn btn-primary">Footer links</a>
|
||||
<a href="#Footer" class="btn btn-primary">{{__('messages.Footer links')}}</a>
|
||||
</li>
|
||||
<li class="swiper-slide card card-slide aos-init aos-animate swiper-slide-next">
|
||||
<a href="#Debug" class="btn btn-primary">Debug</a>
|
||||
<a href="#Debug" class="btn btn-primary">{{__('messages.Debug')}}</a>
|
||||
</li>
|
||||
<li class="swiper-slide card card-slide aos-init aos-animate swiper-slide-next">
|
||||
<a href="#Debug" class="btn btn-primary">{{__('messages.Language')}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="swiper-button swiper-button-next" tabindex="0" role="button" aria-label="Next slide" aria-controls="swiper-wrapper-a3b63471782f110100" aria-disabled="false"></div>
|
||||
@ -133,7 +136,7 @@
|
||||
|
||||
<div class="tab-pane" role="tabpanel" style="scroll-margin-top: 1000px;" aria-labelledby="advanced-tab" id="2">
|
||||
<section class="text-gray-400">
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-pencil-square"> Advanced config</i></h2>
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-pencil-square"> {{__('messages.Advanced Config')}}</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
@include('components.config.advanced-config')
|
||||
</div>
|
||||
@ -143,7 +146,7 @@
|
||||
|
||||
<div class="tab-pane" role="tabpanel" style="scroll-margin-top: 1000px;" aria-labelledby="backup-tab" id="3">
|
||||
<section class="text-gray-400">
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-link-45deg"> Backup</i></h2>
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-link-45deg"> {{__('messages.Backup')}}</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
@include('components.config.backup')
|
||||
</div>
|
||||
@ -153,7 +156,7 @@
|
||||
|
||||
<div class="tab-pane" role="tabpanel" style="scroll-margin-top: 1000px;" aria-labelledby="backups4-tab" id="4">
|
||||
<section class="text-gray-400">
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-link-45deg"> Backups</i></h2>
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-link-45deg"> {{__('messages.Backups')}}</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
@include('components.config.backups')
|
||||
</div>
|
||||
@ -163,7 +166,7 @@
|
||||
|
||||
<div class="tab-pane" role="tabpanel" style="scroll-margin-top: 1000px;" aria-labelledby="diagnose5-tab" id="5">
|
||||
<section class="text-gray-400">
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-braces-asterisk"> Debugging information</i> <span class="text-muted" style="font-size:60%;vertical-align: middle;">v{{file_get_contents(base_path("version.json"))}}</span></h2>
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-braces-asterisk"> {{__('messages.Debugging information')}}</i> <span class="text-muted" style="font-size:60%;vertical-align: middle;">v{{file_get_contents(base_path("version.json"))}}</span></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
@include('components.config.diagnose')
|
||||
</div>
|
||||
|
@ -1,51 +0,0 @@
|
||||
@extends( ($_SERVER['QUERY_STRING'] === 'restore-defaults') ? 'layouts.lang' : 'layouts.sidebar')
|
||||
|
||||
@if($_SERVER['QUERY_STRING'] === 'restore-defaults')
|
||||
<?php
|
||||
copy(base_path('storage/templates/advanced-config.php'), base_path('config/advanced-config.php'));
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; " . url()->current() . "/../../admin/config#2\" />";
|
||||
?>
|
||||
@else
|
||||
|
||||
@section('content')
|
||||
|
||||
|
||||
@if(str_ends_with($_SERVER['REQUEST_URI'], 'advanced-config'))
|
||||
<h2 class="mb-4"><i class="bi bi-pencil-square"> Advanced config</i></h2>
|
||||
<p>Allows editing the frontend of your site. Amongst other things, this file allows customization of:<br>
|
||||
Home Page, links, titles, Google Analytics and meta tags.</p>
|
||||
<form action="{{ route('editAC') }}" method="post">
|
||||
@csrf
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Advanced Configuration file.</label>
|
||||
<pre><textarea class="form-control" name="AdvancedConfig" rows="280">{{ file_get_contents('config/advanced-config.php') }}</textarea></pre>
|
||||
</div>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">Save</button>
|
||||
<a class="mt-3 ml-3 btn btn-primary confirmation" href="{{url('/panel/advanced-config?restore-defaults')}}">Restore defaults</a>
|
||||
<script type="text/javascript">
|
||||
var elems = document.getElementsByClassName('confirmation');
|
||||
var confirmIt = function (e) {
|
||||
if (!confirm('Are you sure?')) e.preventDefault();
|
||||
};
|
||||
for (var i = 0, l = elems.length; i < l; i++) {
|
||||
elems[i].addEventListener('click', confirmIt, false);
|
||||
}
|
||||
</script>
|
||||
</form>
|
||||
@elseif(str_ends_with($_SERVER['REQUEST_URI'], 'env'))
|
||||
<h2 class="mb-4"><i class="bi bi-pencil-square"> ENV</i></h2>
|
||||
|
||||
<form action="{{ route('editENV') }}" method="post">
|
||||
@csrf
|
||||
<div class="form-group col-lg-8">
|
||||
<label>.env</label>
|
||||
<pre><textarea class="form-control" name="AdvancedConfig" rows="80">{{ file_get_contents('.env') }}</textarea></pre>
|
||||
</div>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">Save</button>
|
||||
</form>
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
@endsection
|
||||
@endif
|
@ -1,110 +0,0 @@
|
||||
@extends('layouts.sidebar')
|
||||
|
||||
@section('content')
|
||||
|
||||
<?php
|
||||
use Illuminate\Support\Facades\Http;
|
||||
|
||||
$wtrue = "<td style=\"text-align: center; cursor: help;\" title=\"Everything is working as expected!\">✔️</td>";
|
||||
$wfalse = "<td style=\"text-align: center; cursor: help;\" title=\"This file cannot be written to. This may impede proper operation.\">❌</td>";
|
||||
|
||||
$utrue = "<td style=\"text-align: center; cursor: help;\" title=\"Your security is at risk. This file can be accessed by everyone. Immediate action is required!\">❗</td>";
|
||||
$ufalse = "<td style=\"text-align: center; cursor: help;\" title=\"Everything is working as expected!\">✔️</td>";
|
||||
$unull = "<td style=\"text-align: center; cursor: help;\" title=\"Something went wrong. This might be normal if you're running behind a proxy or docker container.\">➖</td>";
|
||||
|
||||
|
||||
$server = $_SERVER['SERVER_NAME'];
|
||||
$uri = $_SERVER['REQUEST_URI'];
|
||||
|
||||
// Tests if a URL has a valid SSL certificate
|
||||
function has_ssl( $domain ) {
|
||||
$ssl_check = @fsockopen( 'ssl://' . $domain, 443, $errno, $errstr, 30 );
|
||||
$res = !! $ssl_check;
|
||||
if ( $ssl_check ) { fclose( $ssl_check ); }
|
||||
return $res;
|
||||
}
|
||||
|
||||
// Changes probed URL to HTTP if no valid SSL certificate is present, otherwise an error would be thrown
|
||||
if (has_ssl($server)) {
|
||||
$actual_link = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
|
||||
} else {
|
||||
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
|
||||
}
|
||||
|
||||
function getUrlSatusCode($url, $timeout = 3)
|
||||
{
|
||||
$ch = curl_init();
|
||||
$opts = array(CURLOPT_RETURNTRANSFER => true, // do not output to browser
|
||||
CURLOPT_URL => $url,
|
||||
CURLOPT_NOBODY => true, // do a HEAD request only
|
||||
CURLOPT_TIMEOUT => $timeout);
|
||||
curl_setopt_array($ch, $opts);
|
||||
curl_exec($ch);
|
||||
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
curl_close($ch);
|
||||
return $status;
|
||||
}
|
||||
|
||||
//Files or directories to test if writable
|
||||
$wrt1 = is_writable('.env');
|
||||
$wrt2 = is_writable('database/database.sqlite');
|
||||
|
||||
//Files or directories to test if accessible externally
|
||||
$url1 = getUrlSatusCode($actual_link . '/../../.env');
|
||||
$url2 = getUrlSatusCode($actual_link . '/../../database/database.sqlite');
|
||||
|
||||
?>
|
||||
|
||||
<h2 class="mb-4"><i class="bi bi-braces-asterisk"> Debugging information</i></h2>
|
||||
|
||||
@if($url1 == '200' or $url2 == '200')
|
||||
<a href="https://docs.linkstack.org/d/installation-requirements/" target="_blank"><h4 style="color:tomato;">Your security is at risk. Some files can be accessed by everyone. Immediate action is required! <br> Click this message to learn more.</h4></a>
|
||||
@endif
|
||||
|
||||
<h3 class="mb-4">Write access</h3>
|
||||
<p>Here, you can easily verify if important system files can be written to. This is important for every function to work properly. Entries marked with a '✔️' work as expected, entries marked with a '❌' do not.</p>
|
||||
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" style="width: 90%;">File</th>
|
||||
<th title="You can hover over entries to learn more about their current status" style="cursor: help;" scope="col">Hover for more</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td title="">{{ base_path(".env") }}</td>
|
||||
<?php if ($wrt1 > 0) {echo "$wtrue";} else {echo "$wfalse";} ?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td title="">{{ base_path("database/database.sqlite") }}</td>
|
||||
<?php if ($wrt2 > 0) {echo "$wtrue";} else {echo "$wfalse";} ?>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<br><h3 class="mb-4">Security</h3>
|
||||
<p>Here, you can easily verify if critical system files can be accessed externally. It is important that these files cannot be accessed, otherwise user data like passwords could get leaked. Entries marked with a '✔️' cannot be accessed externally, entries marked with a '❗' can be accessed by anyone and require immediate action to protect your data.</p>
|
||||
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" style="width: 90%;">Link</th>
|
||||
<th title="You can hover over entries to learn more about their current status" style="cursor: help;" scope="col">Hover for more</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td title="">{{ url('/.env') }}</td>
|
||||
<?php if($url1 == '200'){echo "$utrue";} elseif($url1 == '0'){echo "$unull";} else{echo "$ufalse";} ?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td title="">{{ url('/database/database.sqlite') }}</td>
|
||||
<?php if($url2 == '200'){echo "$utrue";} elseif($url2 == '0'){echo "$unull";} else{echo "$ufalse";} ?>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
@endsection
|
@ -13,27 +13,27 @@
|
||||
<div class="col-sm-12">
|
||||
|
||||
<section class="text-gray-400">
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-person"> Edit User</i></h2>
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-person"> {{__('messages.Edit User')}}</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
|
||||
@foreach($user as $user)
|
||||
<form action="{{ route('editUser', $user->id) }}" enctype="multipart/form-data" method="post">
|
||||
@csrf
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Name</label>
|
||||
<label>{{__('messages.Name')}}</label>
|
||||
<input type="text" class="form-control" name="name" value="{{ $user->name }}">
|
||||
</div>
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Email</label>
|
||||
<label>{{__('messages.Email')}}</label>
|
||||
<input type="email" class="form-control" name="email" value="{{ $user->email }}">
|
||||
</div>
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Password</label>
|
||||
<label>{{__('messages.Password')}}</label>
|
||||
<input type="password" class="form-control" name="password" placeholder="Leave empty for no change">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Logo</label>
|
||||
<label>{{__('messages.Logo')}}</label>
|
||||
<div class="mb-3">
|
||||
<input type="file" class="form-control form-control-lg" name="image">
|
||||
</div>
|
||||
@ -45,20 +45,20 @@
|
||||
@else
|
||||
<img src="{{ asset('assets/linkstack/images/logo.svg') }}" class="bd-placeholder-img img-thumbnail" width="100" height="100" draggable="false">
|
||||
@endif
|
||||
@if(file_exists(base_path(findAvatar($user->id))))<br><a title="Remove icon" class="hvr-grow p-1 text-danger" style="padding-left:5px;" href="?delete"><i class="bi bi-trash-fill"></i> Delete</a>@endif
|
||||
@if(file_exists(base_path(findAvatar($user->id))))<br><a title="Remove icon" class="hvr-grow p-1 text-danger" style="padding-left:5px;" href="?delete"><i class="bi bi-trash-fill"></i> {{__('messages.Delete')}}</a>@endif
|
||||
@if($_SERVER['QUERY_STRING'] === 'delete' and File::exists(base_path(findAvatar($user->id))))@php File::delete(base_path(findAvatar($user->id))); header("Location: ".url()->current()); die(); @endphp @endif
|
||||
</div><br>
|
||||
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Custom background</label>
|
||||
<label>{{__('messages.Custom background')}}</label>
|
||||
<div class="mb-3">
|
||||
<input type="file" class="form-control form-control-lg" name="background">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-lg-8">
|
||||
@if(!file_exists(base_path('assets/img/background-img/'.findBackground($user->id))))<p><i>No image selected</i></p>@endif
|
||||
@if(!file_exists(base_path('assets/img/background-img/'.findBackground($user->id))))<p><i>{{__('messages.No image selected')}}</i></p>@endif
|
||||
<img style="width:95%;max-width:400px;argin-left:1rem!important;border-radius:5px;" src="@if(file_exists(base_path('assets/img/background-img/'.findBackground($user->id)))){{url('assets/img/background-img/'.findBackground($user->id))}}@else{{url('/assets/linkstack/images/themes/no-preview.png')}}@endif">
|
||||
@if(file_exists(base_path('assets/img/background-img/'.findBackground($user->id))))<br><a title="Remove icon" class="hvr-grow p-1 text-danger" style="padding-left:5px;" href="?deleteB"><i class="bi bi-trash-fill"></i> Delete</a>@endif
|
||||
@if(file_exists(base_path('assets/img/background-img/'.findBackground($user->id))))<br><a title="Remove icon" class="hvr-grow p-1 text-danger" style="padding-left:5px;" href="?deleteB"><i class="bi bi-trash-fill"></i> {{__('messages.Delete')}}</a>@endif
|
||||
@if($_SERVER['QUERY_STRING'] === 'deleteB' and File::exists(base_path('assets/img/background-img/'.findBackground($user->id))))@php File::delete(base_path('assets/img/background-img/'.findBackground($user->id))); header("Location: ".url()->current()); die(); @endphp @endif
|
||||
<br>
|
||||
</div><br>
|
||||
@ -69,7 +69,7 @@
|
||||
</div>-->
|
||||
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Page URL</label>
|
||||
<label>{{__('messages.Page URL')}}</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">{{ url('') }}/@</div>
|
||||
@ -79,11 +79,11 @@
|
||||
</div>
|
||||
|
||||
<div class="form-group col-lg-8">
|
||||
<label> Page description</label>
|
||||
<label> {{__('messages.Page description')}}</label>
|
||||
<textarea class="form-control" name="littlelink_description" rows="3">{{ $user->littlelink_description }}</textarea>
|
||||
</div>
|
||||
<div class="form-group col-lg-8">
|
||||
<label for="exampleFormControlSelect1">Role</label>
|
||||
<label for="exampleFormControlSelect1">{{__('messages.Role')}}</label>
|
||||
<select class="form-control" name="role">
|
||||
<option <?= ($user->role === strtolower('user')) ? 'selected' : '' ?>>user</option>
|
||||
<option <?= ($user->role === strtolower('vip')) ? 'selected' : '' ?>>vip</option>
|
||||
@ -91,7 +91,7 @@
|
||||
</select>
|
||||
</div>
|
||||
@endforeach
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">Save</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">{{__('messages.Save')}}</button>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
@ -11,21 +11,21 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
|
||||
<h3 class="mb-4"><i class="bi bi-menu-up"></i> Dashboard</h3>
|
||||
<h3 class="mb-4"><i class="bi bi-menu-up"></i> {{__('messages.Dashboard')}}</h3>
|
||||
|
||||
<section class="mb-3 text-center p-4 w-full">
|
||||
<div class=" d-flex">
|
||||
|
||||
<div class='p-2 h6'><i class="bi bi-link"></i> Total Links: <span class='text-primary'>{{ $links }} </span></div>
|
||||
<div class='p-2 h6'><i class="bi bi-link"></i> {{__('messages.Total Links:')}} <span class='text-primary'>{{ $links }} </span></div>
|
||||
|
||||
<div class='p-2 h6'><i class="bi bi-eye"></i> Link Clicks: <span class='text-primary'>{{ $clicks }}</span></div>
|
||||
<div class='p-2 h6'><i class="bi bi-eye"></i> {{__('messages.Link Clicks:')}} <span class='text-primary'>{{ $clicks }}</span></div>
|
||||
</div>
|
||||
<div class='text-center w-100'>
|
||||
<a href="{{ url('/studio/links') }}">View/Edit Links</a>
|
||||
<a href="{{ url('/studio/links') }}">{{__('messages.View/Edit Links')}}</a>
|
||||
|
||||
</div>
|
||||
<div class='w-100 text-left'>
|
||||
<h6><i class="bi bi-sort-up"></i> Top Links:</h6>
|
||||
<h6><i class="bi bi-sort-up"></i> {{__('messages.Top Links:')}}</h6>
|
||||
|
||||
@php $i = 0; @endphp
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
<div class="container">
|
||||
<div class="row justify-content-center mt-3">
|
||||
<div class="col-6 text-center">
|
||||
<p class="p-2">You haven't added any links yet.</p>
|
||||
<p class="p-2">{{__('messages.You haven’t added any links yet')}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -51,7 +51,7 @@
|
||||
<div class="fw-bold text-truncate">{{ $link->title }}</div>
|
||||
{{ $link->link }}
|
||||
</div>
|
||||
<span class="badge bg-primary rounded-pill p-2">{{ $link->click_number }} - clicks</span>
|
||||
<span class="badge bg-primary rounded-pill p-2">{{ $link->click_number }} - {{__('messages.clicks')}}</span>
|
||||
</li>
|
||||
@endif
|
||||
@endforeach
|
||||
@ -76,22 +76,22 @@
|
||||
@if(auth()->user()->role == 'admin' && !config('linkstack.single_user_mode'))
|
||||
<!-- Section: Design Block -->
|
||||
<section class="mb-3 text-gray-800 text-center p-4 w-full">
|
||||
<div class='font-weight-bold text-left h3'>Site statistics:</div><br>
|
||||
<div class='font-weight-bold text-left h3'>{{__('messages.Site statistics:')}}</div><br>
|
||||
<div class="d-flex flex-wrap justify-content-around">
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong><i class="bi bi-share-fill"> {{ $siteLinks }} </i></strong></h3>
|
||||
<span class="text-muted">Total links</span>
|
||||
<span class="text-muted">{{__('messages.Total links')}}</span>
|
||||
</div>
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong><i class="bi bi-eye-fill"> {{ $siteClicks }} </i></strong></h3>
|
||||
<span class="text-muted">Total clicks</span>
|
||||
<span class="text-muted">{{__('messages.Total clicks')}}</span>
|
||||
</div>
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong><i class="bi bi bi-person-fill"> {{ $userNumber }}</i></strong></h3>
|
||||
<span class="text-muted">Total users</span>
|
||||
<span class="text-muted">{{__('messages.Total users')}}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -111,22 +111,22 @@
|
||||
|
||||
<!-- Section: Design Block -->
|
||||
<section class="mb-3 text-gray-800 text-center p-4 w-full">
|
||||
<div class='font-weight-bold text-left h3'>Registrations:</div><br>
|
||||
<div class='font-weight-bold text-left h3'>{{__('messages.Registrations:')}}</div><br>
|
||||
<div class="d-flex flex-wrap justify-content-around">
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong> {{ $lastMonthCount }} </i></strong></h3>
|
||||
<span class="text-muted">Last 30 days</span>
|
||||
<span class="text-muted">{{__('messages.Last 30 days')}}</span>
|
||||
</div>
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong> {{ $lastWeekCount }} </i></strong></h3>
|
||||
<span class="text-muted">Last 7 days</span>
|
||||
<span class="text-muted">{{__('messages.Last 7 days')}}</span>
|
||||
</div>
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong> {{ $last24HrsCount }}</i></strong></h3>
|
||||
<span class="text-muted">Last 24 hours</span>
|
||||
<span class="text-muted">{{__('messages.Last 24 hours')}}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -147,22 +147,22 @@
|
||||
|
||||
<!-- Section: Design Block -->
|
||||
<section class="mb-3 text-gray-800 text-center p-4 w-full">
|
||||
<div class='font-weight-bold text-left h3'>Active users:</div><br>
|
||||
<div class='font-weight-bold text-left h3'>{{__('messages.Active users:')}}</div><br>
|
||||
<div class="d-flex flex-wrap justify-content-around">
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong> {{ $updatedLast30DaysCount }} </i></strong></h3>
|
||||
<span class="text-muted">Last 30 days</span>
|
||||
<span class="text-muted">{{__('messages.Last 30 days')}}</span>
|
||||
</div>
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong> {{ $updatedLast7DaysCount }} </i></strong></h3>
|
||||
<span class="text-muted">Last 7 days</span>
|
||||
<span class="text-muted">{{__('messages.Last 7 days')}}</span>
|
||||
</div>
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong> {{ $updatedLast24HrsCount }}</i></strong></h3>
|
||||
<span class="text-muted">Last 24 hours</span>
|
||||
<span class="text-muted">{{__('messages.Last 24 hours')}}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -13,17 +13,17 @@
|
||||
<div class="col-sm-12">
|
||||
|
||||
<section class="text-gray-400">
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-link-45deg"> Links</i></h2>
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-link-45deg"> {{__('messages.Links')}}</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Link</th>
|
||||
<th scope="col">Title</th>
|
||||
<th scope="col">Clicks</th>
|
||||
<th scope="col">Delete</th>
|
||||
<th scope="col">{{__('messages.Link')}}</th>
|
||||
<th scope="col">{{__('messages.Title')}}</th>
|
||||
<th scope="col">{{__('messages.Clicks')}}</th>
|
||||
<th scope="col">{{__('messages.Delete')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -32,7 +32,7 @@
|
||||
<td title="{{ $link->link }}"><a style="color:#3985ff;text-decoration:underline;" href="{{ $link->link }}" target="_blank">{{ Str::limit($link->link, 50) }}</a></td>
|
||||
<td title="{{ $link->title }}">{{ Str::limit($link->title, 30) }}</td>
|
||||
<td class="text-right">{{ $link->click_number }}</td>
|
||||
<td><a href="{{ route('deleteLinkUser', $link->id ) }}" class="text-danger">Delete</a></td>
|
||||
<td><a href="{{ route('deleteLinkUser', $link->id ) }}" class="text-danger">{{__('messages.Delete')}}</a></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
@ -43,7 +43,7 @@
|
||||
{!! $links ?? ''->links() !!}
|
||||
</ul>
|
||||
|
||||
<a class="btn btn-primary" href="{{ url('/admin/users/all') }}"><i class="bi bi-arrow-left-short"></i> Back</a>
|
||||
<a class="btn btn-primary" href="{{ url('/admin/users/all') }}"><i class="bi bi-arrow-left-short"></i> {{__('messages.Back')}}</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
@ -22,7 +22,7 @@
|
||||
<textarea class="form-control ckeditor" name="terms" rows="3">{{ $page->terms }}</textarea>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">Save</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">{{__('messages.Save')}}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@ -41,7 +41,7 @@
|
||||
<textarea class="form-control ckeditor" name="privacy" rows="3">{{ $page->privacy }}</textarea>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">Save</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">{{__('messages.Save')}}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@ -60,7 +60,7 @@
|
||||
<textarea class="form-control ckeditor" name="contact" rows="3">{{ $page->contact }}</textarea>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">Save</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">{{__('messages.Save')}}</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
@ -84,8 +84,8 @@
|
||||
<div style="position: relative; top: 50px; z-index: 2;"><a href="{{ url('admin/config') }}" style="font-size: 40px;" > Back</a></div>
|
||||
<div style="position: relative; bottom: 60px; right: 15px; z-index: 1;" align="right"><a onclick="this.href='data:text/html;charset=UTF-8,'+encodeURIComponent(document.documentElement.outerHTML)" href="#" download="phpinfo.html"><button class="btn btn-primary">Download</button></a></div>
|
||||
<div id='presentation'>
|
||||
<h1>Information about PHP's configuration</h1>
|
||||
<h2>Outputs information about the current state of PHP</h2>
|
||||
<h1>{{__('messages.Information about PHP’s configuration')}}</h1>
|
||||
<h2>{{__('messages.Outputs information about the current state of PHP')}}</h2>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
@ -12,13 +12,13 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
|
||||
<h2 class="mb-4"><i class="bi bi-brush"> Delete a theme</i></h2>
|
||||
<h2 class="mb-4"><i class="bi bi-brush"> {{__('messages.Delete a theme')}}</i></h2>
|
||||
|
||||
<form action="{{ route('deleteTheme') }}" enctype="multipart/form-data" method="post">
|
||||
@csrf
|
||||
|
||||
<div class="form-group col-lg-8">
|
||||
<h3>Delete theme</h3>
|
||||
<h3>{{__('messages.Delete theme')}}</h3>
|
||||
<select class="form-control" name="deltheme">
|
||||
<?php if ($handle = opendir('themes')) {
|
||||
while (false !== ($entry = readdir($handle))) {
|
||||
@ -27,11 +27,11 @@
|
||||
</select>
|
||||
|
||||
</div>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-danger">Delete theme</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-danger">{{__('messages.Delete theme')}}</button>
|
||||
</form>
|
||||
</details>
|
||||
|
||||
<br><br><a class="btn btn-primary" href="{{ url('/studio/theme') }}"><i class="bi bi-arrow-left-short"></i> Back</a>
|
||||
<br><br><a class="btn btn-primary" href="{{ url('/studio/theme') }}"><i class="bi bi-arrow-left-short"></i> {{__('messages.Back')}}</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<div class="col-sm-12">
|
||||
|
||||
<section class="text-gray-400">
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-person"> Manage Users</i></h2>
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-person"> {{__('messages.Manage Users')}}</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
|
||||
<form action="{{ route('searchUser') }}" method="post">
|
||||
@ -23,7 +23,7 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<div class="input-group mb-3">
|
||||
<input type="text" name="name" placeholder="search user" class="form-control">
|
||||
<input type="text" name="name" placeholder="{{__('messages.Search user')}}" class="form-control">
|
||||
<div class="input-group-append">
|
||||
<button type="submit" class="btn btn-primary"><i class="bi bi-search"></i></button>
|
||||
</div>
|
||||
@ -41,27 +41,27 @@
|
||||
<table class="table table-stripped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th id="cs" scope="col" data-sort="id" data-order="asc">ID</th>
|
||||
<th id="cs" scope="col" data-sort="name" data-order="asc">Name</th>
|
||||
<th id="cs" scope="col" data-sort="email" data-order="asc">E-Mail</th>
|
||||
<th id="cs" scope="col" data-sort="page" data-order="asc">Page</th>
|
||||
<th id="cs" scope="col" data-sort="role" data-order="asc">Role</th>
|
||||
<th id="cs" scope="col" data-sort="links" data-order="asc">Links</th>
|
||||
<th id="cs" scope="col" data-sort="clicks" data-order="asc">Clicks</th>
|
||||
<th id="cs" scope="col" data-sort="created" data-order="asc">Created at</th>
|
||||
<th id="cs" scope="col" data-sort="last" data-order="asc">Last seen</th>
|
||||
@if(env('REGISTER_AUTH') !== 'auth')<th id="cs" scope="col">E-Mail</th>@endif
|
||||
<th id="cs" scope="col" data-sort="block" data-order="asc">Status</th>
|
||||
<th scope="col" data-sortable="false">Action</th>
|
||||
<th id="cs" scope="col" data-sort="id" data-order="asc">{{__('messages.ID')}}</th>
|
||||
<th id="cs" scope="col" data-sort="name" data-order="asc">{{__('messages.Name')}}</th>
|
||||
<th id="cs" scope="col" data-sort="email" data-order="asc">{{__('messages.E-Mail')}}</th>
|
||||
<th id="cs" scope="col" data-sort="page" data-order="asc">{{__('messages.Page')}}</th>
|
||||
<th id="cs" scope="col" data-sort="role" data-order="asc">{{__('messages.Role')}}</th>
|
||||
<th id="cs" scope="col" data-sort="links" data-order="asc">{{__('messages.Links')}}</th>
|
||||
<th id="cs" scope="col" data-sort="clicks" data-order="asc">{{__('messages.Clicks')}}</th>
|
||||
<th id="cs" scope="col" data-sort="created" data-order="asc">{{__('messages.Created at')}}</th>
|
||||
<th id="cs" scope="col" data-sort="last" data-order="asc">{{__('messages.Last seen')}}</th>
|
||||
@if(env('REGISTER_AUTH') !== 'auth')<th id="cs" scope="col">{{__('messages.E-Mail')}}</th>@endif
|
||||
<th id="cs" scope="col" data-sort="block" data-order="asc">{{__('messages.Status')}}</th>
|
||||
<th scope="col" data-sortable="false">{{__('messages.Action')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($users as $user)
|
||||
@php
|
||||
$dateFormat = 'd/m/Y';
|
||||
$dateFormat = __('messages.date.format');
|
||||
|
||||
$date = date($dateFormat, strtotime($user->created_at));
|
||||
if(!isset($user->created_at)){$date = "N/A";}
|
||||
if(!isset($user->created_at)){$date = __('messages.N/A');}
|
||||
|
||||
$lastSeen = $user->updated_at;
|
||||
$lastSeenDate = date($dateFormat, strtotime($lastSeen));
|
||||
@ -69,22 +69,22 @@
|
||||
$datetime = new DateTime($lastSeen, $timezone);
|
||||
$now = new DateTime(null, $timezone);
|
||||
$interval = $now->diff($datetime);
|
||||
$daysAgo = $interval->days." days ago";
|
||||
if($interval->days == 1) $daysAgo = "1 day ago";
|
||||
if($interval->days == 0) $daysAgo = "Today";
|
||||
$daysAgo = $interval->days." ".__('messages.days ago');
|
||||
if($interval->days == 1) $daysAgo = __('messages.1 day ago');
|
||||
if($interval->days == 0) $daysAgo = __('messages.Today');
|
||||
if ($interval->days >= 365) {
|
||||
$yearsAgo = floor($interval->days / 365);
|
||||
if ($yearsAgo == 1) {
|
||||
$daysAgo = "1 year ago";
|
||||
$daysAgo = __('messages.1 year ago');
|
||||
} else {
|
||||
$daysAgo = "$yearsAgo years ago";
|
||||
$daysAgo = $yearsAgo . __('messages.years ago');
|
||||
}}
|
||||
@endphp
|
||||
<tr>
|
||||
<td data-id>{{ $user->id }}</td>
|
||||
<td class="shorten" title="{{ $user->name }}" data-name> {{ $user->name }} </td>
|
||||
<td class="shorten" title="{{ $user->email }}" data-email> {{ $user->email }} </td>
|
||||
<td class="shorten" title="{{ $user->littlelink_name }}" data-page>@if(isset($user->littlelink_name))<a href="{{ url('') }}/@<?= $user->littlelink_name ?>" target="_blank" class="text-info"><i class="bi bi-box-arrow-up-right"></i> {{ $user->littlelink_name }} </a>@else N/A @endif</td>
|
||||
<td class="shorten" title="{{ $user->littlelink_name }}" data-page>@if(isset($user->littlelink_name))<a href="{{ url('') }}/@<?= $user->littlelink_name ?>" target="_blank" class="text-info"><i class="bi bi-box-arrow-up-right"></i> {{ $user->littlelink_name }} </a>@else {{__('messages.N/A')}} @endif</td>
|
||||
<td data-role>{{ $user->role }}</td>
|
||||
<td data-links>{{$user->links}}</td>
|
||||
<td data-clicks>{{$user->clicks}}</td>
|
||||
@ -92,15 +92,15 @@
|
||||
<td class="shorten" data-last title="{{ $lastSeenDate }}">{{$daysAgo}}</td>
|
||||
@if(env('REGISTER_AUTH') !== 'auth')
|
||||
<td>@if($user->find($user->id)->role == 'admin' and $user->email_verified_at != '')<center>-</center> @else
|
||||
<a href="{{ route('verifyUser', ['verify' => '-' . $user->email_verified_at, 'id' => $user->id] ) }}" class="text-danger">@if($user->email_verified_at == '')<span class="badge bg-danger">Pending</span>@else<span class="badge bg-success">Verified</span></a>@endif</td>
|
||||
<a href="{{ route('verifyUser', ['verify' => '-' . $user->email_verified_at, 'id' => $user->id] ) }}" class="text-danger">@if($user->email_verified_at == '')<span class="badge bg-danger">{{__('messages.Pending')}}</span>@else<span class="badge bg-success">{{__('messages.Verified')}}</span></a>@endif</td>
|
||||
@endif
|
||||
@endif
|
||||
<td>@if($user->find($user->id)->role == 'admin' and $user->id == 1)<center>-</center>@else<a href="{{ route('blockUser', ['block' => $user->block, 'id' => $user->id] ) }}">@if($user->block == 'yes') <span class="badge bg-danger">Pending</span> @elseif($user->block == 'no') <span class="badge bg-success">Approved</span> @endif</a>@endif</td>
|
||||
<td>@if($user->find($user->id)->role == 'admin' and $user->id == 1)<center>-</center>@else<a href="{{ route('blockUser', ['block' => $user->block, 'id' => $user->id] ) }}">@if($user->block == 'yes') <span class="badge bg-danger">{{__('messages.Pending')}}</span> @elseif($user->block == 'no') <span class="badge bg-success">{{__('messages.Approved')}}</span> @endif</a>@endif</td>
|
||||
<td>
|
||||
@if($user->find($user->id)->role == 'admin' and $user->id == 1)<center>-</center>
|
||||
@else
|
||||
<div class="flex align-items-center list-user-action">
|
||||
<a class="btn btn-sm btn-icon btn-success" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="All links" href="{{ route('showLinksUser', $user->id ) }}" aria-label="All links" data-bs-original-title="All links">
|
||||
<a class="btn btn-sm btn-icon btn-success" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="{{__('messages.tt.All links')}}" href="{{ route('showLinksUser', $user->id ) }}" aria-label="All links" data-bs-original-title="All links">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="11.7669" cy="11.7666" r="8.98856" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></circle>
|
||||
@ -108,7 +108,7 @@
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
<a class="btn btn-sm btn-icon btn-warning" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="Edit" href="{{ route('editUser', $user->id ) }}" aria-label="Edit" data-bs-original-title="Edit">
|
||||
<a class="btn btn-sm btn-icon btn-warning" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="{{__('messages.tt.Edit')}}" href="{{ route('editUser', $user->id ) }}" aria-label="Edit" data-bs-original-title="Edit">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.4925 2.78906H7.75349C4.67849 2.78906 2.75049 4.96606 2.75049 8.04806V16.3621C2.75049 19.4441 4.66949 21.6211 7.75349 21.6211H16.5775C19.6625 21.6211 21.5815 19.4441 21.5815 16.3621V12.3341" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
@ -117,7 +117,7 @@
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
<a class="btn btn-sm btn-icon btn-danger confirmation" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="Delete" href="{{ route('deleteUser', ['id' => $user->id] ) }}" aria-label="Delete" data-bs-original-title="Delete">
|
||||
<a class="btn btn-sm btn-icon btn-danger confirmation" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="{{__('messages.tt.Delete')}}" href="{{ route('deleteUser', ['id' => $user->id] ) }}" aria-label="Delete" data-bs-original-title="Delete">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="currentColor">
|
||||
<path d="M19.3248 9.46826C19.3248 9.46826 18.7818 16.2033 18.4668 19.0403C18.3168 20.3953 17.4798 21.1893 16.1088 21.2143C13.4998 21.2613 10.8878 21.2643 8.27979 21.2093C6.96079 21.1823 6.13779 20.3783 5.99079 19.0473C5.67379 16.1853 5.13379 9.46826 5.13379 9.46826" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
@ -134,12 +134,12 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div>
|
||||
<a href="{{ url('') }}/admin/new-user">+ Add new user</a>
|
||||
<a href="{{ url('') }}/admin/new-user">+ {{__('messages.Add new user')}}</a>
|
||||
|
||||
<script type="text/javascript">
|
||||
var elems = document.getElementsByClassName('confirmation');
|
||||
var confirmIt = function (e) {
|
||||
if (!confirm('Are you sure you want to delete this user? \nThis action cannot be undone!')) e.preventDefault();
|
||||
if (!confirm("{{__('messages.confirm.delete.user')}}")) e.preventDefault();
|
||||
};
|
||||
for (var i = 0, l = elems.length; i < l; i++) {
|
||||
elems[i].addEventListener('click', confirmIt, false);
|
||||
|
@ -1,47 +0,0 @@
|
||||
@extends('layouts.sidebar')
|
||||
|
||||
@section('content')
|
||||
|
||||
<h2 class="mb-4"><i class="bi bi-plus"> Add Link</i></h2>
|
||||
|
||||
<form action="{{ route('addLink') }}" method="post">
|
||||
@csrf
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Link*</label>
|
||||
<input type="text" name="link" class="form-control" placeholder="https://example.com" required>
|
||||
</div>
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Title</label>
|
||||
<input type="text" name="title" class="form-control" placeholder="Internal name (optional)">
|
||||
</div>
|
||||
<div class="form-group col-lg-8">
|
||||
<label for="exampleFormControlSelect1">Button*</label>
|
||||
<select class="form-control" name="button">
|
||||
<option style="background-color:#ffe8e4;"> custom </option>
|
||||
<option style="background-color:#ffe8e4;"> custom_website </option>
|
||||
@foreach($buttons as $button)
|
||||
@if (!in_array($button->name, ['custom', 'custom_website', 'heading', 'space']))
|
||||
<option> {{ $button->name }} </option>
|
||||
@endif
|
||||
@endforeach
|
||||
<option style="background-color:#ebebeb;"> heading </option>
|
||||
<option style="background-color:#ebebeb;"> space </option>
|
||||
</select>
|
||||
<br>
|
||||
<label>* Required fields</label><br>
|
||||
</div>
|
||||
<div class="row"><button type="submit" class="mt-3 ml-3 btn btn-info">Submit</button><a style="color:white;background-color:#f8b739;" class="mt-3 ml-3 btn" href="{{ url('/studio/links') }}">See all links</a></div>
|
||||
</form>
|
||||
|
||||
<br><br><details>
|
||||
<summary>More information</summary>
|
||||
<pre style="color: grey;">
|
||||
The 'Custom' button allows you to add a custom link, where the text on the button is determined with the link title set above.
|
||||
The 'Custom_website' button functions similar to the Custom button, with the addition of a function that requests the favicon from the chosen URL and uses it as the button icon.
|
||||
|
||||
The 'Space' button will be replaced with an empty space, so buttons could be visually separated into groups. Entering a number between 1-10 in the title section will change the empty space's distance.
|
||||
The 'Heading' button will be replaced with a sub-heading, where the title defines the text on that heading.
|
||||
</pre>
|
||||
</details>
|
||||
|
||||
@endsection
|
@ -88,20 +88,20 @@
|
||||
<!-- end button editor -->
|
||||
@endpush
|
||||
<script src="{{ asset('assets/external-dependencies/fontawesome.js') }}" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
<div>
|
||||
<section class="shadow text-gray-400">
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-pen"> Button Editor</i></h2>
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-pen">{{__('messages.Button Editor')}}</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
|
||||
<a class="btn btn-primary" href="{{ url('/studio/links') }}"><i class="bi bi-arrow-left-short"></i> Back</a><br><br>
|
||||
<a class="btn btn-primary" href="{{ url('/studio/links') }}"><i class="bi bi-arrow-left-short"></i>{{__('messages.Back')}}</a><br><br>
|
||||
|
||||
<h2>Custom Button</h2><br>
|
||||
<h2>{{__('messages.Custom Button')}}</h2><br>
|
||||
|
||||
<!-- start button editor -->
|
||||
<div style="left: 10px;">
|
||||
<div class="modal-profile">
|
||||
<h2>CSS</h2>
|
||||
<h2>{{__('messages.CSS')}}</h2>
|
||||
<a class="modal-close-profile" title="Close profile window" href="#"><img href="{{asset('assets/button-editor/images/close.png')}}" alt="Close profile window" /></a>
|
||||
<div id="output">
|
||||
</div>
|
||||
@ -122,7 +122,7 @@
|
||||
|
||||
|
||||
<div class="tool">
|
||||
<heading>Color <span>Text</span></heading>
|
||||
<heading>{{__('messages.Color')}} <span>{{__('messages.Text')}}</span></heading>
|
||||
</br>
|
||||
<input type="button" id="color" style="background-color:#FFFFFF; border:thin solid white;height:50px;width:50px;margin-left:5px;">
|
||||
|
||||
@ -134,7 +134,7 @@
|
||||
|
||||
|
||||
<div class="tool">
|
||||
<heading>background <span>gradient</span></heading>
|
||||
<heading>{{__('messages.background')}} <span>{{__('messages.gradient')}}</span></heading>
|
||||
</br>
|
||||
<div class="grad_ex" id="ex1"></div>
|
||||
</div>
|
||||
@ -160,18 +160,18 @@
|
||||
|
||||
<br>
|
||||
<details>
|
||||
<summary>Show CSS</summary>
|
||||
<summary>{{__('messages.Show CSS')}}</summary>
|
||||
<div style="padding-left: 15px;">
|
||||
<form action="{{ route('editCSS', $id) }}" method="post">
|
||||
@csrf
|
||||
<div class="form-group col-lg-8"><br>
|
||||
<p>Custom CSS</p>
|
||||
<p>{{__('messages.Custom CSS')}}</p>
|
||||
|
||||
<textarea name="custom_css" rows="9" id="sCode" type="text" value="{{ $custom_css }}" class="form-control" required>{{ $custom_css }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
<br><button id="code" class="btn btn-primary">Save</button><br>
|
||||
<br><button id="code" class="btn btn-primary">{{__('messages.Save')}}</button><br>
|
||||
</form>
|
||||
|
||||
<form action="{{ route('editCSS', $id) }}" method="post">
|
||||
@ -181,12 +181,12 @@
|
||||
NULL
|
||||
</textarea>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-danger">Reset to default</button>
|
||||
<button type="submit" class="btn btn-danger">{{__('messages.Reset to default')}}</button>
|
||||
</form>
|
||||
|
||||
<br><br><div id="result" style="left: 1%; position: relative; background-color:#2c2d3a; border-radius: 25px; min-width:300px; max-width:950px; height:300px; box-shadow: 0 10px 20px -10px rgba(0,0,0, 0.6);">
|
||||
<div style="position: relative; top: 50%; transform: translateY(-50%);">
|
||||
<h2 align="center" style="color:white">Result:</h2>
|
||||
<h2 align="center" style="color:white">{{__('messages.Result')}}</h2>
|
||||
@if($custom_css === "" or $custom_css === "NULL" and $buttonId == 1)
|
||||
<center><div style="--delay: 1s" class="button-entrance"><div class="button-demo button-custom button hvr-grow hvr-icon-wobble-vertical"><img class="icon-btn hvr-icon fa {{$custom_icon}}">{{ $title }}</div></div></center>
|
||||
@elseif($custom_css === "" or $custom_css === "NULL" and $buttonId == 2)
|
||||
@ -203,7 +203,7 @@
|
||||
<form action="{{ route('editCSS', $id) }}" method="post">
|
||||
@csrf
|
||||
<div class="form-group col-lg-8">
|
||||
<h2>Custom Icon</h2>
|
||||
<h2>{{__('messages.Custom Icon')}}</h2>
|
||||
<textarea id="textareabox" type="text" name="custom_icon" value="{{ $custom_icon }}" class="form-control" required>{{ $custom_icon }}</textarea>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
@ -213,51 +213,50 @@
|
||||
var textValue=textarea.value;
|
||||
if (textValue.indexOf(word)==-1)
|
||||
{
|
||||
alert('Your custom icon\'s short code does not contain the string "fa-" always use icons in the format: fa-ghost, for example.')
|
||||
alert({{__('messages.Custom Alert')}})
|
||||
}
|
||||
</script>
|
||||
|
||||
<details>
|
||||
<p>Custom icons can be added to buttons via Font Awesome. You can use any icon from the list below, you can access this list by clicking the 'See all icons' button. Each icon on that list has a short code, which you can copy and enter in the custom icon field.</p>
|
||||
<p>Every icon short code consists of a prefix and main part. If the short code is not a brand icon, you can simply enter the code in the format: fa-icon-name. The 'fa-...' formatting is important here. For example 'fa-code'.</p>
|
||||
<p>If the short code is a brand icon, it is important to include a 'fab' before the short code part. Again, The 'fa-...' formatting still applies here. For example, 'fab fa-github'</p>
|
||||
<p>To apply color to your icons, you can simply write out the color name or just write the HEX value before the icon, followed by a ';'. Here it is important to put the color before the icon short code and the color code must be ended with a semicolon.<br>
|
||||
You can find a list of available colors <a href="https://www.w3schools.com/cssref/css_colors.asp" target="_blank">here</a>.</p>
|
||||
<p>{{__('messages.cb.description.1-4')}}</p>
|
||||
<p>{{__('messages.cb.description.2-4')}}</p>
|
||||
<p>{{__('messages.cb.description.3-4')}}</p>
|
||||
<p>{{__('messages.cb.description.4-4')}}</p>
|
||||
<br>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Style</th>
|
||||
<th scope="col">Prefix</th>
|
||||
<th scope="col" style="max-width: 1%">Icon</th>
|
||||
<th scope="col">Short Code</th>
|
||||
<th scope="col">{{__('messages.Style')}}</th>
|
||||
<th scope="col">{{__('messages.Prefix')}}</th>
|
||||
<th scope="col" style="max-width: 1%">{{__('messages.Icon')}}</th>
|
||||
<th scope="col">{{__('messages.Short Code')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Regular</td>
|
||||
<td>{{__('messages.Regular')}}</td>
|
||||
<td></td>
|
||||
<td><i class="fa fa-user"></i></td>
|
||||
<td><p>fa-user</p></td>
|
||||
<td><p>{{__('messages.Fa-user')}}</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brands</td>
|
||||
<td>fab</td>
|
||||
<td>{{__('messages.Brands')}}</td>
|
||||
<td>{{__('messages.Fab')}}</td>
|
||||
<td><i class="fab fa-github"></i></td>
|
||||
<td><p>fab fa-github</p></td>
|
||||
<td><p>{{__('messages.Fab fa-github')}}</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Color</td>
|
||||
<td>color_name;</td>
|
||||
<td>{{__('messages.Color')}}</td>
|
||||
<td>{{__('messages.Color name')}};</td>
|
||||
<td><i style="color: red;" class="fa fa-ghost"></i></td>
|
||||
<td><p style="color: red;">red; fa-ghost</p></td>
|
||||
<td><p style="color: red;">{{__('messages.Red fa')}};{{__('messages.Fa ghost')}}</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Color HEX</td>
|
||||
<td>color_HEX;</td>
|
||||
<td>{{__('messages.Color HEX')}}</td>
|
||||
<td>{{__('messages.Color HEX1')}};</td>
|
||||
<td><i style="color: #1DA1F2;" class="fab fa-twitter"></i></td>
|
||||
<td><p style="color: #1DA1F2;">#1DA1F2; fab fa-twitter</p></td>
|
||||
<td><p style="color: #1DA1F2;">#1DA1F2; {{__('messages.Hex fab fa-twitter')}}</p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -265,15 +264,15 @@
|
||||
</details>
|
||||
|
||||
<br>
|
||||
<button type="submit" class="btn btn-primary">Update icon</button>
|
||||
<a class="btn btn-primary" href="https://fontawesome.com/search?m=free" target="_blank">See all icons</a>
|
||||
<button type="submit" class="btn btn-primary">{{__('messages.Update icon')}}</button>
|
||||
<a class="btn btn-primary" href="https://fontawesome.com/search?m=free" target="_blank">{{__('messages.See all icons')}}</a>
|
||||
|
||||
</form><br><br><br><br>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
|
||||
<a class="btn btn-primary" href="{{ url('/studio/links') }}"><i class="bi bi-arrow-left-short"></i> Back</a>
|
||||
<a class="btn btn-primary" href="{{ url('/studio/links') }}"><i class="bi bi-arrow-left-short"></i>{{__('messages.Back')}}</a>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
<section class='text-gray-400'>
|
||||
|
||||
<h3 class="card-header"><i class="bi bi-journal-plus"> @if($LinkID !== 0) Edit @else Add @endif Block</i></h3>
|
||||
<h3 class="card-header"><i class="bi bi-journal-plus"> @if($LinkID !== 0) {{__('messages.Submit')}} @else {{__('messages.Add')}} @endif {{__('messages.Block')}}</i></h3>
|
||||
|
||||
<div class='card-body'>
|
||||
<form action="{{ route('addLink') }}" method="post" id="my-form">
|
||||
@ -26,23 +26,23 @@
|
||||
<input type='hidden' name='linkid' value="{{ $LinkID }}" />
|
||||
|
||||
<div class="form-group col-lg-8 flex justify-around">
|
||||
{{-- <label class='font-weight-bold'>Blocks: </label> --}}
|
||||
{{-- <label class='font-weight-bold'>{{__('messages.Blocks')}}</label> --}}
|
||||
<div class="btn-group shadow m-2">
|
||||
<button type="button" id='btnLinkType' class="btn btn-primary rounded-pill" title='Click to change link blocks' data-toggle="modal" data-target="#SelectLinkType">Select Block
|
||||
<button type="button" id='btnLinkType' class="btn btn-primary rounded-pill" title='{{__('messages.Click to change link blocks')}}' data-toggle="modal" data-target="#SelectLinkType">{{__('messages.Select Block')}}
|
||||
<span class="btn-inner">
|
||||
<i class="bi bi-window-plus"></i>
|
||||
</span>
|
||||
</button>{{infoIcon('Click for a list of available link blocks')}}
|
||||
</button>{{infoIcon(__('messages.Click for a list of available link blocks'))}}
|
||||
|
||||
|
||||
|
||||
{{-- <button type="button" class="dropdown-toggle border-0 border-left-1 px-2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
<span class="sr-only">{{__('messages.Toggle Dropdown')}}</span>
|
||||
</button> --}}
|
||||
{{-- <div class="dropdown-menu">
|
||||
@foreach ( $LinkTypes as $lt )
|
||||
<a data-typeid='{{$lt['id']}}' data-typename='{{$lt['title']}}' class="dropdown-item doSelectLinkType" href="#">
|
||||
<i class="{{$lt['icon']}}"></i> {{$lt['title']}}
|
||||
<a data-typeid='{{$lt['id']}}' data-typename='{{__('messages.title.'.$ltt)}}' class="dropdown-item doSelectLinkType" href="#">
|
||||
<i class="{{$lt['icon']}}"></i> {{__('messages.title.'.$ltt)}}
|
||||
</a>
|
||||
|
||||
@endforeach
|
||||
@ -59,9 +59,9 @@
|
||||
|
||||
|
||||
<div class="d-flex align-items-center pt-4">
|
||||
<a class="btn btn-danger me-3" href="{{ url('studio/links') }}">Cancel</a>
|
||||
<button type="submit" class="btn btn-primary me-3">Save</button>
|
||||
<button type="button" class="btn btn-soft-primary me-3" onclick="submitFormWithParam('add_more')">Save and Add More</button>
|
||||
<a class="btn btn-danger me-3" href="{{ url('studio/links') }}">{{__('messages.Cancel')}}</a>
|
||||
<button type="submit" class="btn btn-primary me-3">{{__('messages.Save')}}</button>
|
||||
<button type="button" class="btn btn-soft-primary me-3" onclick="submitFormWithParam('add_more')">{{__('messages.Save and Add More')}}</button>
|
||||
<script>
|
||||
function submitFormWithParam(paramValue) {
|
||||
// get the form element
|
||||
@ -94,13 +94,13 @@
|
||||
</section>
|
||||
<br><br>
|
||||
{{-- <details>
|
||||
<summary>More information</summary>
|
||||
<summary>{{__('messages.More information')}}</summary>
|
||||
<pre style="color: grey;">
|
||||
The 'Custom' button allows you to add a custom link, where the text on the button is determined with the link title set above.
|
||||
The 'Custom_website' button functions similar to the Custom button, with the addition of a function that requests the favicon from the chosen URL and uses it as the button icon.
|
||||
|
||||
The 'Space' button will be replaced with an empty space, so buttons could be visually separated into groups. Entering a number between 1-10 in the title section will change the empty space's distance.
|
||||
The 'Heading' button will be replaced with a sub-heading, where the title defines the text on that heading.
|
||||
{{__('messages.editlink.description.1-5')}}
|
||||
{{__('messages.editlink.description.2-5')}}
|
||||
{{__('messages.editlink.description.3-5')}}
|
||||
{{__('messages.editlink.description.4-5')}}
|
||||
{{__('messages.editlink.description.5-5')}}
|
||||
</pre>
|
||||
</details> --}}
|
||||
|
||||
@ -108,7 +108,7 @@
|
||||
|
||||
<!-- Modal -->
|
||||
<style>.modal-title{color:#000!important;}</style>
|
||||
<x-modal title="Select Block" id="SelectLinkType">
|
||||
<x-modal title="{{__('messages.Select Block')}}" id="SelectLinkType">
|
||||
|
||||
<div class="d-flex flex-row flex-wrap p-3">
|
||||
|
||||
@ -120,7 +120,11 @@
|
||||
@endphp
|
||||
|
||||
@foreach ($sorted as $lt)
|
||||
<a href="#" data-dismiss="modal" data-typeid="{{$lt['id']}}" data-typename="{{$lt['title']}}" class="hvr-grow m-2 w-100 d-block doSelectLinkType">
|
||||
@php
|
||||
$title = __('messages.block.title.'.$lt['typename']);
|
||||
$description = __('messages.block.description.'.$lt['typename']);
|
||||
@endphp
|
||||
<a href="#" data-dismiss="modal" data-typeid="{{$lt['id']}}" data-typename="{{$title}}" class="hvr-grow m-2 w-100 d-block doSelectLinkType">
|
||||
<div class="rounded mb-3 shadow-lg">
|
||||
<div class="row g-0">
|
||||
<div class="col-auto bg-light d-flex align-items-center justify-content-center p-3">
|
||||
@ -128,19 +132,19 @@
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-dark mb-0">{{$lt['title']}}</h5>
|
||||
<p class="card-text text-muted">{{$lt['description']}}</p>
|
||||
<h5 class="card-title text-dark mb-0">{{$title}}</h5>
|
||||
<p class="card-text text-muted">{{$description}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</a>
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
|
||||
<x-slot name="buttons">
|
||||
<button type="button" class="btn btn-gray" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-gray" data-dismiss="modal">{{__('messages.Close')}}</button>
|
||||
</x-slot>
|
||||
|
||||
</x-modal>
|
||||
|
@ -1,45 +0,0 @@
|
||||
@extends('layouts.sidebar')
|
||||
|
||||
@section('content')
|
||||
|
||||
<h2 class="mb-4"><i class="bi bi-pen"> Edit Link</i></h2>
|
||||
|
||||
<form action="{{ route('editLink', $id) }}" method="post">
|
||||
@csrf
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Link</label>
|
||||
<input type="text" name="link" value="{{ $link }}" class="form-control" placeholder="https://example.com" required>
|
||||
</div>
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Title</label>
|
||||
<input type="text" name="title" value="{{ $title }}" class="form-control" placeholder="Example">
|
||||
</div>
|
||||
<div class="form-group col-lg-8">
|
||||
<label for="exampleFormControlSelect1">Button</label>
|
||||
<select class="form-control" name="button">
|
||||
<option style="background-color:#1e90ff;color:#fff"> {{ $buttonName }} </option>
|
||||
|
||||
@if ($buttonName != "custom")<option style="background-color:#ffe8e4;"> custom </option>@endif
|
||||
@if ($buttonName != "custom_website")<option style="background-color:#ffe8e4;"> custom_website </option>@endif
|
||||
@foreach($buttons as $button)
|
||||
@if (!in_array($button->name, ['custom', 'custom_website', 'heading', 'space']))
|
||||
@if ($button->name != $buttonName)
|
||||
<option> {{ $button->name }} </option>
|
||||
@endif
|
||||
@endif
|
||||
@endforeach
|
||||
@if ($buttonName != "heading")<option style="background-color:#ebebeb;"> heading </option>@endif
|
||||
@if ($buttonName != "space")<option style="background-color:#ebebeb;"> space </option>@endif
|
||||
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Order</label>
|
||||
<input type="number" name="order" value="{{ $order }}" class="form-control" placeholder="use for ordering links">
|
||||
</div>
|
||||
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-info">Submit</button>
|
||||
</form>
|
||||
|
||||
@endsection
|
@ -1,95 +0,0 @@
|
||||
@extends('layouts.sidebar')
|
||||
|
||||
|
||||
@section('content')
|
||||
@if($greeting == '')
|
||||
<h3 class="mb-3"> 👋 Hi, stranger</h2>
|
||||
<h5>You do not have a Page URL set, yet you can change that on the <a href="{{ url('/studio/page') }}">Page section</a></h5>
|
||||
@else
|
||||
<h3 class="mb-3"> 👋 Hi, <?= $greeting ?></h2>
|
||||
@endif
|
||||
<p>
|
||||
Welcome to {{ config('app.name') }}!
|
||||
</p>
|
||||
|
||||
|
||||
{{-- <!-- Section: Design Block -->
|
||||
<section class="mb-3 text-gray-800 text-center shadow p-4 w-full">
|
||||
<div class='font-weight-bold text-left'>Visitor analytics:</div>
|
||||
<div class="d-flex flex-wrap justify-content-around">
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong>{{ $pageStats['visitors']['day']}}</strong></h3>
|
||||
<span class="text-muted">Today</span>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong>{{ $pageStats['visitors']['week']}}</strong></h3>
|
||||
<span class="text-muted">Week</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong>{{ $pageStats['visitors']['month']}}</strong></h3>
|
||||
<span class="text-muted">Month</span>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong>{{ $pageStats['visitors']['year']}}</strong></h3>
|
||||
<span class="text-muted">Year</span>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="p-2">
|
||||
<h3 class="text-primary"><strong>{{ $pageStats['visitors']['all']}}</strong></h3>
|
||||
<span class="text-muted">All Time</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section> --}}
|
||||
|
||||
|
||||
|
||||
<section class="mb-3 text-center shadow p-4 w-full">
|
||||
<div class=" d-flex">
|
||||
|
||||
<div class='p-2 h6'><i class="bi bi-link"></i> Total Links: <span class='text-primary'>{{ $links }} </span></div>
|
||||
|
||||
<div class='p-2 h6'><i class="bi bi-eye"></i> Link Clicks: <span class='text-primary'>{{ $clicks }}</span></div>
|
||||
</div>
|
||||
<div class='text-center w-100'>
|
||||
<a href="{{ url('/studio/links') }}">View/Edit Links</a>
|
||||
|
||||
</div>
|
||||
<div class='w-100 text-left'>
|
||||
<h6><i class="bi bi-sort-up"></i> Top Links:</h6>
|
||||
|
||||
@php $i = 0; @endphp
|
||||
|
||||
|
||||
@foreach($toplinks as $link)
|
||||
@php $linkName = str_replace('default ','',$link->name) @endphp
|
||||
@php $i++; @endphp
|
||||
<ol class='list-group list-group-flush bg-transparent'>
|
||||
|
||||
@if($link->name !== "phone" && $link->name !== 'heading' && $link->button_id !== 96)
|
||||
<li class="list-group-item bg-transparent">
|
||||
{{ $i }}.) {{$link->title}} -- <span class='text-primary' title='Click Count'>{{$link->click_number}} </span> <br />
|
||||
|
||||
|
||||
<a href="{{$link->link}}" class='small ml-3' title='{{$link->link}}' target="_blank">{{$link->link}}</a></li>
|
||||
|
||||
@endif
|
||||
</ol>
|
||||
|
||||
@endforeach
|
||||
</section>
|
||||
|
||||
{{-- <pre>{{ print_r($pageStats) }}</pre> --}}
|
||||
|
||||
@endsection
|
@ -58,8 +58,8 @@ if (isset($_COOKIE['LinkCount'])) {
|
||||
|
||||
<div class="row">
|
||||
<section class='pre-left text-gray-400'>
|
||||
<h3 class="card-header mb-3"><i class="bi bi-link-45deg">My Links</i>
|
||||
<a class="btn btn-primary float-end" href="{{ url('/studio/add-link') }}">Add new <span class='d-none d-md-inline'>link</span></a>
|
||||
<h3 class="card-header mb-3"><i class="bi bi-link-45deg">{{__('messages.My Links')}}</i>
|
||||
<a class="btn btn-primary float-end" href="{{ url('/studio/add-link') }}">{{__('messages.Add new Link')}}</a>
|
||||
</h3>
|
||||
|
||||
<div>
|
||||
@ -71,7 +71,7 @@ if (isset($_COOKIE['LinkCount'])) {
|
||||
<div id="links-table-body" data-page="{{request('page', 1)}}" data-per-page="{{$pagePage ? $pagePage : 0}}">
|
||||
@if($links->total() == 0)
|
||||
<div class="col-6 text-center">
|
||||
<p class="mt-5">You haven't added any links yet.</p>
|
||||
<p class="mt-5">{{__('messages.No Link Added')}}</p>
|
||||
</div>
|
||||
@else
|
||||
@foreach($links as $link)
|
||||
@ -114,7 +114,7 @@ if (isset($_COOKIE['LinkCount'])) {
|
||||
<a title='{{$link->link}}' href="{{ $link->link}}" target="_blank" class="d-none d-md-block ml-4 text-muted small">{{Str::limit($link->link, 75 )}}</a>
|
||||
<a title='{{$link->link}}' href="{{ $link->link}}" target="_blank" class="d-md-none ml-4 text-muted small">{{Str::limit($link->link, 25 )}}</a>
|
||||
@elseif(!empty($link->link) and $button->name == "vcard")
|
||||
<br><a href="{{ url('vcard/'.$link->id) }}" target="_blank" class="ml-4 small">Download</a>
|
||||
<br><a href="{{ url('vcard/'.$link->id) }}" target="_blank" class="ml-4 small">{{__('messages.Download')}}</a>
|
||||
|
||||
@endif
|
||||
|
||||
@ -139,7 +139,7 @@ if (isset($_COOKIE['LinkCount'])) {
|
||||
<div class='col-12 py-1 px-3 m-0 mt-2'>
|
||||
|
||||
@if(!empty($link->link))
|
||||
<span><i class="bi bi-bar-chart-line"></i> {{ $link->click_number }} Clicks</span>
|
||||
<span><i class="bi bi-bar-chart-line"></i> {{ $link->click_number }} {{__('messages.Clicks')}}</span>
|
||||
|
||||
@endif
|
||||
|
||||
@ -198,29 +198,29 @@ if (isset($_COOKIE['LinkCount'])) {
|
||||
{!! $links ?? ''->links() !!}
|
||||
</ul>
|
||||
|
||||
@if(count($links) > 3)<a class="btn btn-primary" href="{{ url('/studio/add-link') }}">Add new link</a>@endif
|
||||
@if(count($links) > 3)<a class="btn btn-primary" href="{{ url('/studio/add-link') }}">{{__('messages.Add new link')}}</a>@endif
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class='pre-right text-gray-400 pre-side'>
|
||||
<h3 class="card-header"><i class="bi bi-window-fullscreen" style="font-style:normal!important;"> Preview:</i></h3>
|
||||
<h3 class="card-header"><i class="bi bi-window-fullscreen" style="font-style:normal!important;">{{__('messages.Preview')}}</i></h3>
|
||||
<div class='card-body p-0 p-md-3'>
|
||||
<center><iframe allowtransparency="true" id="frPreview1" style=" border-radius:0.25rem !important; background: #FFFFFF; min-height:600px; height:100%; max-width:500px !important;" class='w-100' src="{{ url('') }}/@<?= Auth::user()->littlelink_name ?>">Your browser isn't compatible</iframe></center>
|
||||
<center><iframe allowtransparency="true" id="frPreview1" style=" border-radius:0.25rem !important; background: #FFFFFF; min-height:600px; height:100%; max-width:500px !important;" class='w-100' src="{{ url('') }}/@<?= Auth::user()->littlelink_name ?>">{{__('messages.No compatible browser')}}</iframe></center>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<section style="margin-left:-15px;margin-right:-15px;" style="width:100%!important;" class='pre-bottom text-gray-400 pre-side'>
|
||||
<h3 class="card-header"><i class="bi bi-window-fullscreen" style="font-style:normal!important;"> Preview:</i></h3>
|
||||
<h3 class="card-header"><i class="bi bi-window-fullscreen" style="font-style:normal!important;">{{__('messages.Preview')}}</i></h3>
|
||||
<div class='card-body p-0 p-md-3'>
|
||||
<center><iframe allowtransparency="true" id="frPreview2" style=" border-radius:0.25rem !important; background: #FFFFFF; min-height:600px; height:100%; width:100% !important;" class='w-100' src="{{ url('') }}/@<?= Auth::user()->littlelink_name ?>">Your browser isn't compatible</iframe></center>
|
||||
<center><iframe allowtransparency="true" id="frPreview2" style=" border-radius:0.25rem !important; background: #FFFFFF; min-height:600px; height:100%; width:100% !important;" class='w-100' src="{{ url('') }}/@<?= Auth::user()->littlelink_name ?>">{{__('messages.No compatible browser')}}</iframe></center>
|
||||
</div>
|
||||
</section><br>
|
||||
|
||||
<section style="margin-left:-15px;margin-right:-15px;" class='text-gray-400'>
|
||||
<a name="icons"></a>
|
||||
<h3 class="mb-4 card-header"><i class="fa-solid fa-icons"></i> Page Icons</i></h3>
|
||||
<h3 class="mb-4 card-header"><i class="fa-solid fa-icons"></i>{{__('messages.Page Icons')}}</i></h3>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
|
||||
<form action="{{ route('editIcons') }}" enctype="multipart/form-data" method="post">
|
||||
@ -297,7 +297,7 @@ if (isset($_COOKIE['LinkCount'])) {
|
||||
{!!icon('whatsapp', 'WhatsApp')!!} --}}
|
||||
|
||||
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">Save links</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">{{__('messages.Save links')}}</button>
|
||||
</form>
|
||||
|
||||
|
||||
|
@ -193,7 +193,7 @@
|
||||
@endif
|
||||
</div>
|
||||
<section class='text-gray-400'>
|
||||
<h3 class="mb-4 card-header"><i class="bi bi-file-earmark-break"> My Profile</i></h3>
|
||||
<h3 class="mb-4 card-header"><i class="bi bi-file-earmark-break">{{__('messages.My Profile')}}</i></h3>
|
||||
<div>
|
||||
|
||||
<div></div>
|
||||
@ -202,7 +202,7 @@
|
||||
@csrf
|
||||
@if($page->littlelink_name != '')
|
||||
<div class="form-group col-lg-8">
|
||||
<label class="form-label" for="customFile">Profile Picture</label>
|
||||
<label class="form-label" for="customFile">{{__('messages.Profile Picture')}}</label>
|
||||
<input type="file" accept="image/jpeg,image/jpg,image/png" name="image" class="form-control" id="customFile">
|
||||
</div>
|
||||
@endif
|
||||
@ -217,7 +217,7 @@
|
||||
$url = $_SERVER['REQUEST_URI'];
|
||||
if( strpos( $url, "no_page_name" ) == true ) echo '<span style="color:#FF0000; font-size:120%;">You do not have a Page URL</span>'; ?>
|
||||
<br>
|
||||
<label>Page URL</label>
|
||||
<label>{{__('messages.Page URL')}}</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="d-none d-md-block input-group-text">{{ url('') }}/@</div>
|
||||
@ -226,41 +226,41 @@
|
||||
<input type="text" class="form-control" name="littlelink_name" value="{{ $page->littlelink_name ?? '' }}" required>
|
||||
</div>
|
||||
|
||||
<label style="margin-top:15px">Display name</label>
|
||||
<label style="margin-top:15px">{{__('messages.Display name')}}</label>
|
||||
<div class="input-group">
|
||||
{{-- <div class="input-group-prepend">
|
||||
<div class="input-group-text">Name:</div>
|
||||
<div class="input-group-text">{{__('messages.Name')}}</div>
|
||||
</div> --}}
|
||||
<input type="text" class="form-control" name="name" value="{{ $page->name }}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-lg-8">
|
||||
<label>Page Description</label>
|
||||
<label>{{__('messages.Page Description')}}</label>
|
||||
<textarea class="form-control @if(env('ALLOW_USER_HTML') === true) ckeditor @endif" name="pageDescription" rows="3">{{ $page->littlelink_description ?? '' }}</textarea>
|
||||
</div>
|
||||
|
||||
@if(auth()->user()->role == 'admin' || auth()->user()->role == 'vip')
|
||||
<div class="form-group col-lg-8">
|
||||
<h5 style="margin-top:50px">Show checkmark</h5>
|
||||
<p class="text-muted">You are a verified user. This setting allows you to hide your checkmark on your page.</p>
|
||||
<h5 style="margin-top:50px"> {{__('messages.Show checkmark')}}</h5>
|
||||
<p class="text-muted">{{__('messages.disableverified')}}</p>
|
||||
<div class="mb-3 form-check form-switch">
|
||||
<input name="checkmark" class="switch toggle-btn" type="checkbox" id="checkmark" <?php if(UserData::getData(Auth::user()->id, 'checkmark') == true){echo 'checked';} ?> />
|
||||
<label class="form-check-label" for="checkmark">Enable</label>
|
||||
<label class="form-check-label" for="checkmark">{{__('messages.Enable')}}</label>
|
||||
</div>
|
||||
<input type="hidden" name="_token" value="{{csrf_token()}}">
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
<div class="form-group col-lg-8">
|
||||
<h5 style="margin-top:50px">Show share button</h5>
|
||||
<p class="text-muted">This setting allows you to hide the share button on your page.</p>
|
||||
<h5 style="margin-top:50px">{{__('messages.Show share button')}}</h5>
|
||||
<p class="text-muted">{{__('messages.disablesharebutton')}}</p>
|
||||
<div class="mb-3 form-check form-switch">
|
||||
<input name="sharebtn" class="switch toggle-btn" type="checkbox" id="sharebtn" <?php if(UserData::getData(Auth::user()->id, 'disable-sharebtn') != "true"){echo 'checked';} ?> />
|
||||
<label class="form-check-label" for="sharebtn">Enable</label>
|
||||
<label class="form-check-label" for="sharebtn">{{__('messages.Enable')}}</label>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">Save</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary">{{__('messages.Save')}}</button>
|
||||
</form>
|
||||
|
||||
@if(env('ALLOW_USER_HTML') === true)
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
@if($_SERVER['QUERY_STRING'] === '')
|
||||
<section class="text-gray-400">
|
||||
<h3 class="mb-4 card-header"><i class="bi bi-person"> Account Settings</i></h3>
|
||||
<h3 class="mb-4 card-header"><i class="bi bi-person">{{__('messages.Account Settings')}}</i></h3>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
|
||||
@foreach($profile as $profile)
|
||||
@ -37,17 +37,17 @@
|
||||
<h4>Email</h4>
|
||||
<input type="email" class="form-control" name="email" value="{{ $profile->email }}" required>
|
||||
</div>
|
||||
<button type="Change " class="mt-3 ml-3 btn btn-primary">Change email</button>
|
||||
<button type="Change " class="mt-3 ml-3 btn btn-primary">{{__('messages.Change email')}}</button>
|
||||
</form>
|
||||
@endif
|
||||
|
||||
<br><br><form action="{{ route('editProfile') }}" method="post">
|
||||
@csrf
|
||||
<div class="form-group col-lg-8">
|
||||
<h4>Password</h4>
|
||||
<h4>{{__('messages.Password')}}</h4>
|
||||
<input type="password" name="password" class="form-control" placeholder="At least 8 characters" required>
|
||||
</div>
|
||||
<button type="Change " class="mt-3 ml-3 btn btn-primary">Change password</button>
|
||||
<button type="Change " class="mt-3 ml-3 btn btn-primary">{{__('messages.Change password')}}</button>
|
||||
</form>
|
||||
|
||||
@csrf
|
||||
@ -58,18 +58,18 @@
|
||||
|
||||
@if(env('ALLOW_USER_EXPORT') != false)
|
||||
<div class="mt-3"><br><br><br>
|
||||
<h4>Export user data</h4>
|
||||
<p>Export your user data to transfer to a different instance.</p>
|
||||
<h4>{{__('messages.Export user data')}}</h4>
|
||||
<p>{{__('messages.Export your user data')}}</p>
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<button class="btn btn-outline-secondary">
|
||||
<a href="{{ route('exportAll') }}">
|
||||
<i class="bi bi-layer-backward"></i> Export all data
|
||||
<i class="bi bi-layer-backward"></i>{{__('messages.Export all data')}}
|
||||
</a>
|
||||
</button>
|
||||
<button class="btn btn-outline-secondary">
|
||||
<a href="{{ route('exportLinks') }}">
|
||||
<i class="bi bi-layer-backward"></i> Export links only
|
||||
<i class="bi bi-layer-backward"></i>{{__('messages.Export links only')}}
|
||||
</a>
|
||||
</button>
|
||||
</div>
|
||||
@ -81,12 +81,12 @@
|
||||
<form action="{{ route('importData') }}" enctype="multipart/form-data" method="post">
|
||||
@csrf
|
||||
<div class="form-group col-lg-8"><br><br><br>
|
||||
<h4>Import user data</h4>
|
||||
<label>Import your user data from another instance.</label>
|
||||
<h4>{{__('messages.Import user data')}}</h4>
|
||||
<label>{{__('messages.Import your user data from another instance.')}}</label>
|
||||
<input type="file" accept="application/JSON" class="form-control" id="customFile" name="import">
|
||||
</div>
|
||||
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary" onclick="return confirm('Are you sure you want to import this file? This action will replace all your current data, including links!')">Import</button>
|
||||
<button type="submit" class="mt-3 ml-3 btn btn-primary" onclick="return confirm('Are you sure you want to import this file? This action will replace all your current data, including links!')">{{__('messages.Import')}}</button>
|
||||
</form>
|
||||
@endif
|
||||
|
||||
@ -94,7 +94,7 @@
|
||||
|
||||
<br><button class="btn btn-danger"><a
|
||||
href="{{ url('/studio/profile/?delete') }}" style="color:#FFFFFF;"><i class="bi bi-exclamation-octagon-fill"></i>
|
||||
Delete your account</a></button>
|
||||
{{__('messages.Delete your account')}}</a></button>
|
||||
</div>
|
||||
</section>
|
||||
@endforeach
|
||||
@ -103,11 +103,11 @@
|
||||
@if($_SERVER['QUERY_STRING'] === 'delete')
|
||||
<div class="d-flex justify-content-center align-items-center" style="height:100vh;">
|
||||
<div class="text-center">
|
||||
<h2 class="text-decoration-underline">You are about to delete your account!</h2>
|
||||
<p>You are about to delete your account! This action cannot be undone.</p>
|
||||
<h2 class="text-decoration-underline">{{__('messages.You are about to delete')}}</h2>
|
||||
<p>{{__('messages.You are about to delete This action cannot be undone')}}</p>
|
||||
<div>
|
||||
<button class="redButton btn btn-danger" style="filter: grayscale(100%);" disabled onclick="window.location.href = '{{ url('/studio/delete-user/') . "/" . Auth::id() }}';"><i class="bi bi-exclamation-diamond-fill"></i></button>
|
||||
<button type="submit" class="btn btn-primary"><a style="color:#fff;" href="{{ url('/studio/profile') }}">Cancel</a></button>
|
||||
<button type="submit" class="btn btn-primary"><a style="color:#fff;" href="{{ url('/studio/profile') }}">{{__('messages.Cancel')}}</a></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -6,16 +6,16 @@
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="details-header">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#details-collapse" aria-controls="details-collapse">
|
||||
Theme Updater
|
||||
{{__('messages.Theme Updater')}}
|
||||
</button>
|
||||
</h2>
|
||||
<div id="details-collapse" class="accordion-collapse collapse" aria-labelledby="details-header">
|
||||
<div class="accordion-body table-responsive">
|
||||
<table class="table table-striped table-responsive">
|
||||
<tr>
|
||||
<th>Theme name:</th>
|
||||
<th>Update status:</th>
|
||||
<th>Version: </th>
|
||||
<th>{{__('messages.Theme name')}}</th>
|
||||
<th>{{__('messages.Update status')}}</th>
|
||||
<th>{{__('messages.Version')}} </th>
|
||||
</tr>
|
||||
<?php
|
||||
if ($handle = opendir('themes')) {
|
||||
@ -68,29 +68,29 @@
|
||||
}
|
||||
}
|
||||
if ($themeVe == "error") {
|
||||
echo '<span class="badge bg-danger">Error!</span>';
|
||||
echo '<span class="badge bg-danger">'.__('messages.Error').'</span>';
|
||||
} elseif ($hasSource == false) {
|
||||
echo '<a href="https://linkstack.org/themes.php" target="_blank"><span class="badge bg-danger">Update manually</span></a>';
|
||||
echo '<a href="https://linkstack.org/themes.php" target="_blank"><span class="badge bg-danger">'.__('messages.Update manually').'</span></a>';
|
||||
} elseif($updateAv == true) {
|
||||
echo '<span class="badge bg-warning">Update available</span>';
|
||||
echo '<span class="badge bg-warning">'.__('messages.Update available').'</span>';
|
||||
} else {
|
||||
echo '<span class="badge bg-success">Up to date</span>';
|
||||
echo '<span class="badge bg-success">'.__('messages.Up to date').'</span>';
|
||||
}
|
||||
echo '</center></th>';
|
||||
echo '<th>' . $verNr . '</th>';
|
||||
echo '</tr>';}
|
||||
}} ?>
|
||||
} } ?>
|
||||
</table>
|
||||
</div>
|
||||
<a href="{{ url('update/theme') }}" onclick="updateicon()" class="btn btn-gray ms-3 mb-4">
|
||||
<span id="updateicon"><i class="bi bi-arrow-repeat"></i></span> Update all themes
|
||||
<a href="'. url('update/theme') .'" onclick="updateicon()" class="btn btn-gray ms-3 mb-4">
|
||||
<span id="updateicon"><i class="bi bi-arrow-repeat"></i></span> {{__('messages.Update all themes')}}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
try{ if($GLOBALS['updateAv'] == true) echo '<p class="mt-3 ml-3 h2""><span class="badge bg-success">Update available</span></p>';
|
||||
try{ if($GLOBALS['updateAv'] == true) echo '<p class="mt-3 ml-3 h2""><span class="badge bg-success">'.__('messages.Update available').'</span></p>';
|
||||
}catch(Exception $ex){}
|
||||
?>
|
||||
|
||||
|
@ -14,11 +14,11 @@
|
||||
@foreach($pages as $page)
|
||||
|
||||
<section class='text-gray-400'>
|
||||
<h3 class="mb-4 card-header"><i class="bi bi-brush"> Select a theme</i></h3>
|
||||
<h3 class="mb-4 card-header"><i class="bi bi-brush">{{__('messages.Select a theme')}}</i></h3>
|
||||
<div>
|
||||
|
||||
<button type="button" class="btn btn-primary mb-5" data-bs-toggle="modal" data-bs-target="#exampleModal">
|
||||
Select theme
|
||||
{{__('messages.Select theme')}}
|
||||
</button>
|
||||
|
||||
<section class="text-gray-400"></section>
|
||||
@ -28,14 +28,14 @@
|
||||
<div class="card rounded shadow-lg bg-light aos-init aos-animate" data-aos="fade-up" data-aos-delay="800">
|
||||
<div class="flex-wrap card-header d-flex justify-content-between align-items-center bg-light">
|
||||
<div class="header-title">
|
||||
<h4 class="card-title">Preview</h4>
|
||||
<h4 class="card-title">{{__('messages.Preview')}}</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if(env('USE_THEME_PREVIEW_IFRAME') === false or $page->littlelink_name == '')
|
||||
<center><img style="width:95%;max-width:700px;argin-left:1rem!important;" src="@if(file_exists(base_path() . '/themes/' . $page->theme . '/preview.png')){{url('/themes/' . $page->theme . '/preview.png')}}@elseif($page->theme === 'default' or empty($page->theme)){{url('/assets/linkstack/images/themes/default.png')}}@else{{url('/assets/linkstack/images/themes/no-preview.png')}}@endif"></img></center>
|
||||
@else
|
||||
<iframe frameborder="0" allowtransparency="true" id="frPreview" style="background: #FFFFFF;height:400px;" class='w-100' src="{{ url('') }}/@<?= Auth::user()->littlelink_name ?>">Your browser isn't compatible</iframe>
|
||||
<iframe frameborder="0" allowtransparency="true" id="frPreview" style="background: #FFFFFF;height:400px;" class='w-100' src="{{ url('') }}/@<?= Auth::user()->littlelink_name ?>">{{__('messages.No compatible browser')}}</iframe>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@ -57,7 +57,7 @@
|
||||
@if(env('ALLOW_CUSTOM_BACKGROUNDS') == true)
|
||||
<form action="{{ route('themeBackground') }}" enctype="multipart/form-data" method="post">
|
||||
@csrf
|
||||
<h3 class="mb-4 card-header">Custom background</h3>
|
||||
<h3 class="mb-4 card-header">{{__('messages.Custom background')}}</h3>
|
||||
<div style="display: none;" class="form-group col-lg-8">
|
||||
<select class="form-control" name="theme">
|
||||
<option>{{ $page->theme }}</option>
|
||||
@ -66,9 +66,9 @@
|
||||
</div>
|
||||
<div class="form-group col-lg-8">
|
||||
<figure style="max-width:1000px;max-height:562.5px;" class="figure">
|
||||
@if(!file_exists(base_path('assets/img/background-img/'.findBackground(Auth::user()->id))))<p><i>No image selected</i></p>@endif
|
||||
@if(!file_exists(base_path('assets/img/background-img/'.findBackground(Auth::user()->id))))<p><i>{{__('messages.No image selected')}}</i></p>@endif
|
||||
<img class="bd-placeholder-img figure-img img-fluid rounded" src="@if(file_exists(base_path('assets/img/background-img/'.findBackground(Auth::user()->id)))){{url('assets//img/background-img/'.findBackground(Auth::user()->id))}}@else{{url('/assets/linkstack/images/themes/no-preview.png')}}@endif"><br>
|
||||
@if(file_exists(base_path('assets/img/background-img/'.findBackground(Auth::user()->id))))<button class="mt-3 ml-3 btn btn-primary" style="background-color:tomato!important;border-color:tomato!important;transform: scale(.9);" title="Delete background image"><a href="{{ url('/studio/rem-background') }}" style="color:#FFFFFF;"><i class="bi bi-trash-fill"></i> Remove background</a></button><br>@endif
|
||||
@if(file_exists(base_path('assets/img/background-img/'.findBackground(Auth::user()->id))))<button class="mt-3 ml-3 btn btn-primary" style="background-color:tomato!important;border-color:tomato!important;transform: scale(.9);" title="Delete background image"><a href="{{ url('/studio/rem-background') }}" style="color:#FFFFFF;"><i class="bi bi-trash-fill"></i>{{__('messages.Remove background')}}</a></button><br>@endif
|
||||
{{-- <figcaption class="figure-caption">A caption for the above image.</figcaption> --}}
|
||||
</figure>
|
||||
<br>
|
||||
@ -77,7 +77,7 @@
|
||||
<input type="file" accept="image/jpeg,image/jpg,image/png" class="form-control form-control-lg" name="image"><br>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Apply</button>
|
||||
<button type="submit" class="btn btn-primary">{{__('messages.Apply')}}</button>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
@ -92,7 +92,7 @@
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h3 class="mb-4 card-header">Manage themes</h3>
|
||||
<h3 class="mb-4 card-header">{{__('messages.Manage themes')}}</h3>
|
||||
@if(env('ENABLE_THEME_UPDATER') == 'true')
|
||||
|
||||
<div id="ajax-container">
|
||||
@ -103,7 +103,7 @@
|
||||
<h2 class="accordion-header" id="details-header">
|
||||
<button class="accordion-button collapsed disabled" type="button" aria-expanded="false" aria-controls="details-collapse">
|
||||
<div style="max-height:20px;max-width:20px;" class="spinner-border text-primary" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
<span class="visually-hidden">{{__('messages.Loading...')}}</span>
|
||||
</div>
|
||||
</button>
|
||||
</h2>
|
||||
@ -120,7 +120,7 @@
|
||||
<br><br><br>
|
||||
<form action="{{ route('editTheme') }}" enctype="multipart/form-data" method="post">
|
||||
@csrf
|
||||
{{-- <h3>Upload themes</h3> --}}
|
||||
{{-- <h3>{{__('messages.Upload themes')}}</h3> --}}
|
||||
<div style="display: none;" class="form-group col-lg-8">
|
||||
<select class="form-control" name="theme">
|
||||
<option>{{ $page->theme }}</option>
|
||||
@ -128,13 +128,13 @@
|
||||
<br>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label>Upload theme</label>
|
||||
<label>{{__('messages.Upload themes')}}</label>
|
||||
<input type="file" accept=".zip" name="zip" class="form-control form-control-lg">
|
||||
</div><br><br>
|
||||
<div class="d-flex flex-column flex-md-row align-items-md-center">
|
||||
<button type="submit" class="btn btn-primary me-md-3 mb-3 mb-md-0">Upload theme</button>
|
||||
<button class="btn btn-danger me-md-3 mb-3 mb-md-0 delete-themes" title="Delete themes"><a href="{{ url('/admin/theme') }}" class="text-white">Delete themes</a></button>
|
||||
<button class="btn btn-info download-themes" title="Download more themes"><a href="https://linkstack.org/themes/" target="_blank" class="text-white">Download themes</a></button>
|
||||
<button type="submit" class="btn btn-primary me-md-3 mb-3 mb-md-0">{{__('messages.Upload themes')}}</button>
|
||||
<button class="btn btn-danger me-md-3 mb-3 mb-md-0 delete-themes" title="Delete themes"><a href="{{ url('/admin/theme') }}" class="text-white">{{__('messages.Delete themes')}}</a></button>
|
||||
<button class="btn btn-info download-themes" title="Download more themes"><a href="https://linkstack.org/themes/" target="_blank" class="text-white">{{__('messages.Download themes')}}</a></button>
|
||||
</div>
|
||||
</form>
|
||||
</details>
|
||||
@ -244,7 +244,7 @@ $(window).on('load', function() {
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{__('messages.Close')}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -17,36 +17,36 @@
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>Updater</h1>
|
||||
<h1>{{__('message.Updater')}}</h1>
|
||||
@if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
|
||||
@if(env('JOIN_BETA') === true)
|
||||
<p><?php echo "latest beta version= " . external_file_get_contents("https://beta.linkstack.org/vbeta.json"); ?></p>
|
||||
<p><?php if(file_exists(base_path("vbeta.json"))) {echo "Installed beta version= " . file_get_contents(base_path("vbeta.json"));} else {echo "Installed beta version= none";} ?></p>
|
||||
<p><?php if($Vgit > $Vlocal) {echo "You need to update to the latest mainline release";} else {echo "You're running the latest mainline release";} ?></p>
|
||||
<p><?php echo __('message.latest beta version')."= " . external_file_get_contents("https://beta.linkstack.org/vbeta.json"); ?></p>
|
||||
<p><?php if(file_exists(base_path("vbeta.json"))) {echo __('messages.Installed beta version')."= " . file_get_contents(base_path("vbeta.json"));} else {echo __('messages.Installed beta version')."= ".__('messages.none');} ?></p>
|
||||
<p><?php if($Vgit > $Vlocal) {echo __('messages.You need to update to the latest mainline release');} else {echo __("messages.You’re running the latest mainline release");} ?></p>
|
||||
@else
|
||||
<h4 class="">You can update your installation automatically or download the update and install it manually:</h4>
|
||||
<h5 class="">Windows users can use the alternative updater. This updater won't create a backup. Use at your own discretion.</h5>
|
||||
<h4>{{__('messages.update.manually')}}</h4>
|
||||
<h5>{{__('messages.update.windows')}}</h5>
|
||||
@endif
|
||||
<br><div class="row">
|
||||
 <a class="btn" href="{{url()->current()}}/?updating-windows"><button><i class="fa-solid fa-user-gear btn"></i> Update automatically</button></a> 
|
||||
 <a class="btn" href="https://linkstack.org/update" target="_blank"><button><i class="fa-solid fa-download btn"></i> Update manually</button></a> 
|
||||
 <a class="btn" href="{{url()->current()}}/?updating-windows"><button><i class="fa-solid fa-user-gear btn"></i> {{__('messages.Update automatically')}}</button></a> 
|
||||
 <a class="btn" href="https://linkstack.org/update" target="_blank"><button><i class="fa-solid fa-download btn"></i> {{__('messages.Update manually')}}</button></a> 
|
||||
</div>
|
||||
@else
|
||||
@if(env('JOIN_BETA') === true)
|
||||
<p><?php echo "latest beta version= " . external_file_get_contents("https://beta.linkstack.org/vbeta.json"); ?></p>
|
||||
<p><?php if(file_exists(base_path("vbeta.json"))) {echo "Installed beta version= " . file_get_contents(base_path("vbeta.json"));} else {echo "Installed beta version= none";} ?></p>
|
||||
<p><?php if($Vgit > $Vlocal) {echo "You need to update to the latest mainline release";} else {echo "You're running the latest mainline release";} ?></p>
|
||||
<p><?php echo __('message.latest beta version')."= " . external_file_get_contents("https://beta.linkstack.org/vbeta.json"); ?></p>
|
||||
<p><?php if(file_exists(base_path("vbeta.json"))) {echo __('messages.Installed beta version')."= " . file_get_contents(base_path("vbeta.json"));} else {echo __('messages.Installed beta version')."= ".__('messages.none');} ?></p>
|
||||
<p><?php if($Vgit > $Vlocal) {echo __('messages.You need to update to the latest mainline release');} else {echo __("messages.You’re running the latest mainline release");} ?></p>
|
||||
@else
|
||||
<a target="_blank" href="https://github.com/linkstackorg/linkstack/releases"><code style="color:#222;transform:scale(.9);">{{$Vlocal}} -> {{$Vgit}}</code></a>
|
||||
<h4 class="">You can update your installation automatically or download the update and install it manually:</h4>
|
||||
<h4>{{__('messages.update.manually')}}</h4>
|
||||
@endif
|
||||
<br><div class="row">
|
||||
@if(env('SKIP_UPDATE_BACKUP') == true)
|
||||
 <a class="btn" href="{{url()->current()}}/?preparing"><button><i class="fa-solid fa-user-gear btn"></i> Update automatically</button></a> 
|
||||
 <a class="btn" href="{{url()->current()}}/?preparing"><button><i class="fa-solid fa-user-gear btn"></i> {{__('messages.Update automatically')}}</button></a> 
|
||||
@else
|
||||
 <a class="btn" href="{{url()->current()}}/?backup"><button><i class="fa-solid fa-user-gear btn"></i> Update automatically</button></a> 
|
||||
 <a class="btn" href="{{url()->current()}}/?backup"><button><i class="fa-solid fa-user-gear btn"></i> {{__('messages.Update automatically')}}</button></a> 
|
||||
@endif
|
||||
 <a class="btn" href="https://linkstack.org/update" target="_blank"><button><i class="fa-solid fa-download btn"></i> Update manually</button></a> 
|
||||
 <a class="btn" href="https://linkstack.org/update" target="_blank"><button><i class="fa-solid fa-download btn"></i> {{__('messages.Update manually')}}</button></a> 
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo-loading.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1 class="loadingtxt">Updating</h1>
|
||||
<h1 class="loadingtxt">{{__('messages.Updating')}}</h1>
|
||||
@Push('updater-head')
|
||||
<meta http-equiv="refresh" content="2; URL={{url()->current()}}/?preparing" />
|
||||
@endpush
|
||||
@ -110,7 +110,7 @@ echo "<meta http-equiv=\"refresh\" content=\"0; " . url()->current() . "/?finish
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo-loading.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1 class="loadingtxt">Creating backup</h1>
|
||||
<h1 class="loadingtxt">{{__('messages.Creating backup')}}</h1>
|
||||
@endif
|
||||
|
||||
@if($_SERVER['QUERY_STRING'] === 'backups')
|
||||
@ -130,7 +130,7 @@ exit(); ?>
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo-loading.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1 class="loadingtxt">Preparing update</h1>
|
||||
<h1 class="loadingtxt">{{__('messages.Preparing update')}}</h1>
|
||||
|
||||
<?php // Get update preperation script from GitHub
|
||||
try {
|
||||
@ -154,7 +154,7 @@ exit(); ?>
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo-loading.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1 class="loadingtxt">Updating</h1>
|
||||
<h1 class="loadingtxt">{{__('messages.Updating')}}</h1>
|
||||
@Push('updater-head')
|
||||
<meta http-equiv="refresh" content="2; URL={{url()->current()}}/../updating" />
|
||||
@endpush
|
||||
@ -166,10 +166,10 @@ exit(); ?>
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>No new version</h1>
|
||||
<h4 class="">There is no new version available</h4>
|
||||
<h1>{{__('messages.No new version')}}</h1>
|
||||
<h4>{{__('messages.There is no new version available')}}</h4>
|
||||
<br><div class="row">
|
||||
 <a class="btn" href="{{ url('dashboard') }}"><button><i class="fa-solid fa-house-laptop btn"></i> Admin Panel</button></a> 
|
||||
 <a class="btn" href="{{ url('dashboard') }}"><button><i class="fa-solid fa-house-laptop btn"></i> {{__('messages.Admin Panel')}}</button></a> 
|
||||
</div>
|
||||
|
||||
@endif
|
||||
@ -188,7 +188,7 @@ if(EnvEditor::getKey('APP_DEBUG') == 'false'){
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo-loading.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1 class="loadingtxt">Finishing up</h1>
|
||||
<h1 class="loadingtxt">{{__('messages.Finishing up')}}</h1>
|
||||
|
||||
@include('components.finishing')
|
||||
|
||||
@ -210,22 +210,22 @@ if($debug === true){
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>Success!</h1>
|
||||
<h1>{{__('messages.Success!')}}</h1>
|
||||
@if(env('JOIN_BETA') === true)
|
||||
<p><?php echo "latest beta version= " . external_file_get_contents("https://beta.linkstack.org/vbeta.json"); ?></p>
|
||||
<p><?php if(file_exists(base_path("vbeta.json"))) {echo "Installed beta version= " . file_get_contents(base_path("vbeta.json"));} else {echo "Installed beta version= none";} ?></p>
|
||||
<p><?php if($Vgit > $Vlocal) {echo "You need to update to the latest mainline release";} else {echo "You're running the latest mainline release";} ?></p>
|
||||
<p><?php echo __('message.latest beta version')."= " . external_file_get_contents("https://beta.linkstack.org/vbeta.json"); ?></p>
|
||||
<p><?php if(file_exists(base_path("vbeta.json"))) {echo __('messages.Installed beta version')."= " . file_get_contents(base_path("vbeta.json"));} else {echo __('messages.Installed beta version')."= ".__('messages.none');} ?></p>
|
||||
<p><?php if($Vgit > $Vlocal) {echo __('messages.You need to update to the latest mainline release');} else {echo __("messages.You’re running the latest mainline release");} ?></p>
|
||||
@else
|
||||
<h4 class="">The update was successful, you can now return to the Admin Panel.</h4>
|
||||
<h4>{{__('messages.The update was successful')}}</h4>
|
||||
<style>.noteslink:hover{color:#006fd5;text-shadow:0px 6px 7px rgba(23,10,6,0.66);}</style>
|
||||
<a class="noteslink" href="https://github.com/linkstackorg/linkstack/releases/latest" target="_blank"><i class="fa-solid fa-up-right-from-square"></i> View the release notes</a>
|
||||
<a class="noteslink" href="https://github.com/linkstackorg/linkstack/releases/latest" target="_blank"><i class="fa-solid fa-up-right-from-square"></i> {{__('messages.View the release notes')}}</a>
|
||||
<br>
|
||||
@endif
|
||||
<br><div class="row">
|
||||
 <a class="btn" href="{{ url('dashboard') }}"><button><i class="fa-solid fa-house-laptop btn"></i> Admin Panel</button></a> 
|
||||
 <a class="btn" href="{{ url('dashboard') }}"><button><i class="fa-solid fa-house-laptop btn"></i> {{__('messages.Admin Panel')}}</button></a> 
|
||||
|
||||
@if(env('JOIN_BETA') === true)
|
||||
 <a class="btn" href="{{url()->current()}}/"><button><i class="fa-solid fa-arrow-rotate-right btn"></i> Run again</button></a> 
|
||||
 <a class="btn" href="{{url()->current()}}/"><button><i class="fa-solid fa-arrow-rotate-right btn"></i> {{__('messages.Run again')}}</button></a> 
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@ -239,15 +239,13 @@ if($debug === true){
|
||||
<div class="logo-container fadein">
|
||||
<img class="logo-img" src="{{ asset('assets/linkstack/images/logo.svg') }}" alt="Logo">
|
||||
</div>
|
||||
<h1>Error</h1>
|
||||
<h4 class="">Something went wrong with the update :(</h4>
|
||||
<h1>{{__('messages.Error')}}</h1>
|
||||
<h4>{{__('messages.Something went wrong with the update')}} :(</h4>
|
||||
<br><div class="row">
|
||||
 <a class="btn" href="{{ url('dashboard') }}"><button><i class="fa-solid fa-house-laptop btn"></i> Admin Panel</button></a> 
|
||||
 <a class="btn" href="{{ url('dashboard') }}"><button><i class="fa-solid fa-house-laptop btn"></i> {{__('messages.Admin Panel')}}</button></a> 
|
||||
</div>
|
||||
|
||||
@endif
|
||||
|
||||
@if("8" > phpversion()) <br><br><a style="background-color:tomato;color:#fff;border-radius:5px;" class="nav-link" href="{{ url('/studio/profile') }}" target=""><i class="bi bi-exclamation-circle-fill"></i> <strong>You are using an outdated version of PHP! Official support for this version will end soon.</strong></a> @endif
|
||||
|
||||
</div>
|
||||
@endpush
|
@ -39,6 +39,7 @@ if(file_exists(base_path('INSTALLING')) or file_exists(base_path('INSTALLERLOCK'
|
||||
Route::post('/options', [InstallerController::class, 'options'])->name('options');
|
||||
Route::get('/mysql-test', [InstallerController::class, 'mysqlTest'])->name('mysqlTest');
|
||||
Route::get('/skip', function () {Artisan::call('db:seed', ['--class' => 'AdminSeeder',]); return redirect(url(''));});
|
||||
Route::post('/editConfigInstaller', [InstallerController::class, 'editConfigInstaller'])->name('editConfigInstaller');
|
||||
|
||||
Route::get('{any}', function() {
|
||||
if(!DB::table('users')->get()->isEmpty()){
|
||||
|
@ -41,7 +41,6 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'lang' => 'en', // Sets <html lang="en">
|
||||
'title' => '', // Overrides the default meta page title. Leave empty to use your LinkStack page title as the title.
|
||||
'description' => '', // Overrides the default meta page description. Leave empty to use your LinkStack page description as the description.
|
||||
'robots' => 'index,follow',
|
||||
|
Loading…
x
Reference in New Issue
Block a user