Compare commits

...

118 commits

Author SHA1 Message Date
Sergio Brighenti
a00fd5a5e2
Merge pull request #579 from weblate/weblate-xbackbone-xbackbone
Translations update from Hosted Weblate
2024-08-15 15:10:15 +02:00
Oğuz Ersen
0fe1748077
Translated using Weblate (Turkish)
Currently translated at 100.0% (162 of 162 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/tr/
2024-08-04 20:28:59 +00:00
Hani Rouatbi
c58a114ac9
Translated using Weblate (Arabic)
Currently translated at 100.0% (162 of 162 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/ar/
2024-08-04 20:28:58 +00:00
Sectly
23f6b18ffe
Translated using Weblate (Dutch)
Currently translated at 100.0% (162 of 162 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/nl/
2024-08-04 20:28:58 +00:00
bittin1ddc447d824349b2
4ad4b20762
Translated using Weblate (Swedish)
Currently translated at 100.0% (162 of 162 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/sv/
2024-08-04 20:28:57 +00:00
gallegonovato
1c2801e2f0
Translated using Weblate (Spanish)
Currently translated at 100.0% (162 of 162 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/es/
2024-08-04 20:28:56 +00:00
Sergio Brighenti
a918c95a56
Merge pull request #578 from sergix44/dependabot/npm_and_yarn/braces-3.0.3
Bump braces from 3.0.2 to 3.0.3
2024-08-04 22:28:51 +02:00
Sergio Brighenti
fa85310d1d
Merge pull request #586 from samrzhevsky/master
Fix page count calculation
2024-08-04 22:28:21 +02:00
samrzhevsky
8fabc57f04
Fix page count calculation 2024-07-27 23:39:38 +03:00
dependabot[bot]
cd28fe11af
Bump braces from 3.0.2 to 3.0.3
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-16 14:57:30 +00:00
Sergio Brighenti
687c503efd
Merge pull request #561 from weblate/weblate-xbackbone-xbackbone
Translations update from Hosted Weblate
2024-06-15 21:59:26 +02:00
Vin
c6f087e092
Translated using Weblate (Russian)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/ru/
2024-06-15 21:57:04 +02:00
tabby
4718d8a0b1
Translated using Weblate (Korean)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/ko/
2024-06-15 21:57:04 +02:00
ssantos
bb97621041
Translated using Weblate (Portuguese)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/pt/
2024-06-15 21:57:04 +02:00
Eryk Michalak
49e3110273
Translated using Weblate (Polish)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/pl/
2024-06-15 21:57:04 +02:00
Mikachu
41b26f45b7
Translated using Weblate (Dutch)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/nl/
2024-06-15 21:57:04 +02:00
Gaming Tibor
f2ae33bcd7
Translated using Weblate (Hungarian)
Currently translated at 99.3% (160 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/hu/
2024-06-15 21:57:04 +02:00
LeonMtn05
96972b8222
Translated using Weblate (German)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/de/
2024-06-15 21:57:04 +02:00
Sergio Brighenti
06562d194b
Merge pull request #572 from lsgd/master
Enable upload from clipboard
2024-06-15 21:57:01 +02:00
Lukas Schulze
a600a21753 Add link to remove tags filter 2024-04-30 16:15:41 +02:00
lsgd
1193c96966
Merge branch 'sergix44:master' into master 2024-04-30 15:49:54 +02:00
Lukas Schulze
4946750beb enable upload via clipboard paste 2024-04-30 15:49:01 +02:00
Sergio Brighenti
cc8ed75ec6 Update changelog 2024-01-14 14:24:40 +01:00
Sergio Brighenti
9dbf1400f6 Update lock 2024-01-14 14:16:56 +01:00
Sergio Brighenti
dd5e30abe2 Update list preview icon color 2024-01-14 14:15:16 +01:00
Sergio Brighenti
59c6691585
Merge pull request #553 from lsgd/master
Add link to file preview which opens the file itself
2024-01-14 14:04:28 +01:00
Sergio Brighenti
bd3ca55e20
Merge pull request #556 from sergix44/dependabot/composer/aws/aws-sdk-php-3.294.5
Bump aws/aws-sdk-php from 3.271.3 to 3.294.5
2024-01-04 00:06:30 +01:00
Sergio Brighenti
04a6770f19
Merge pull request #546 from weblate/weblate-xbackbone-xbackbone
Translations update from Hosted Weblate
2024-01-04 00:05:25 +01:00
ssantos
a8f26558a6
Translated using Weblate (Portuguese)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/pt/
2024-01-04 00:04:44 +01:00
Oğuz Ersen
853ed10e1c
Translated using Weblate (Turkish)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/tr/
2024-01-04 00:04:44 +01:00
Xin Mu
25ed553ed1
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/zh_Hans/
2024-01-04 00:04:44 +01:00
Kalle Laine
ab211c571a
Translated using Weblate (Finnish)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/fi/
2024-01-04 00:04:44 +01:00
Reza Almanda
3f9bc8ae7c
Translated using Weblate (Indonesian)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/id/
2024-01-04 00:04:44 +01:00
Caspar Coen Graafstal
2c33f19785
Translated using Weblate (Dutch)
Currently translated at 98.7% (159 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/nl/
2024-01-04 00:04:44 +01:00
春末丶冬初
57a66f83bd
Translated using Weblate (Chinese (Simplified))
Currently translated at 98.1% (158 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/zh_Hans/
2024-01-04 00:04:44 +01:00
J. Lavoie
41870dce76
Translated using Weblate (French (Canada))
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/fr_CA/
2024-01-04 00:04:44 +01:00
J. Lavoie
f5fba276fd
Translated using Weblate (French)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/fr/
2024-01-04 00:04:44 +01:00
J. Lavoie
b2403baf0b
Translated using Weblate (German)
Currently translated at 99.3% (160 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/de/
2024-01-04 00:04:44 +01:00
J. Lavoie
634d301e80
Translated using Weblate (Italian)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/it/
2024-01-04 00:04:44 +01:00
a
a0f82ae4ab
Translated using Weblate (Russian)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/ru/
2024-01-04 00:04:44 +01:00
Luna Jernberg
a5e63dcd33
Translated using Weblate (Swedish)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/sv/
2024-01-04 00:04:44 +01:00
gallegonovato
8cda536340
Translated using Weblate (Spanish)
Currently translated at 100.0% (161 of 161 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/es/
2024-01-04 00:04:44 +01:00
Sergio Brighenti
5d99a96f84
Merge pull request #554 from SrS2225a/master
Add support for kde integration
2024-01-04 00:04:40 +01:00
dependabot[bot]
68a428b33f
Bump aws/aws-sdk-php from 3.271.3 to 3.294.5
Bumps [aws/aws-sdk-php](https://github.com/aws/aws-sdk-php) from 3.271.3 to 3.294.5.
- [Release notes](https://github.com/aws/aws-sdk-php/releases)
- [Commits](https://github.com/aws/aws-sdk-php/compare/3.271.3...3.294.5)

---
updated-dependencies:
- dependency-name: aws/aws-sdk-php
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-22 00:11:25 +00:00
SrS2225a
76eecb298b added support for kde intergration 2023-12-17 13:44:29 -08:00
Sergio Brighenti
903f87e693
Merge pull request #547 from samrzhevsky/master
LDAP fixes
2023-12-17 10:45:49 +01:00
Lukas Schulze
eee497669e Add link to file preview which opens the file itself 2023-12-10 20:22:49 +01:00
samrzhevsky
e7a0a99fe6
LDAP fixes
1. Changed `ldap_connect` error handling. `ldap_error` expects `LDAP\Connection`, and `ldap_connect` returns `false` if the syntax check fails
2. Fixed deprecation: passing null to parameter (`$ignore`) of type string
3. Fixed PHPDoc types for compatibility with PHP 8.1+
2023-08-28 00:31:22 +03:00
Sergio Brighenti
ee55a9ea3a
Merge pull request #539 from weblate/weblate-xbackbone-xbackbone
Translations update from Hosted Weblate
2023-08-14 22:46:06 +02:00
Sergio Brighenti
7f07ecdfad
Merge pull request #507 from SrS2225a/master
Support For Vanity Urls
2023-08-14 22:45:48 +02:00
SrS2225a
a11a9307ea corrected styleCI issues for sql querys 2023-08-13 23:40:06 -07:00
SrS2225a
32b8a16c40 readded missing function createVanity 2023-08-13 23:29:41 -07:00
SrS2225a
c8c540ff50 fixed grunt conflicts and corrected the lang key 2023-08-13 22:45:37 -07:00
SrS2225a
c8fac0a578 Merge branch 'master' of https://github.com/SergiX44/XBackBone
# Conflicts:
#	app/Controllers/MediaController.php
2023-08-13 22:00:19 -07:00
J. Lavoie
35a2e59c6c
Translated using Weblate (French (Canada))
Currently translated at 100.0% (160 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/fr_CA/
2023-06-29 23:49:23 +02:00
J. Lavoie
95b4435e6f
Translated using Weblate (Italian)
Currently translated at 100.0% (160 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/it/
2023-06-29 23:49:22 +02:00
Sergio Brighenti
0951638dc8
Merge pull request #533 from cursey/feature/upload-response-raw-url 2023-05-31 09:54:11 +02:00
cursey
d3fde3e298
Upload: Response now includes raw_url as well 2023-05-29 21:57:55 -07:00
Sergio Brighenti
c7a6dd1c16 update version 2023-05-27 17:09:22 +02:00
Sergio Brighenti
327005833c update changelog 2023-05-27 17:06:28 +02:00
Sergio Brighenti
49c7b60137
Merge pull request #532 from nebulade/patch-1 2023-05-25 10:39:29 +02:00
Johannes Zellner
4d791aad06
Make AuthController.php compatible with php8.1+
php api changed https://www.php.net/manual/en/class.ldap-result.php
2023-05-25 10:12:42 +02:00
Sergio Brighenti
9c85698c28 drop azure blob storage 2023-05-24 00:50:57 +02:00
Sergio Brighenti
91d05884b9
Merge pull request #513 from SergiX44/support_php_82 2023-05-23 23:03:21 +02:00
Sergio Brighenti
707d32ff25
Merge pull request #522 from weblate/weblate-xbackbone-xbackbone 2023-05-23 23:00:32 +02:00
Sergio Brighenti
3702753ade
Merge pull request #529 from SergiX44/analysis-JG7k4o 2023-05-23 23:00:17 +02:00
StyleCI Bot
5e6ba5a0b3
Apply fixes from StyleCI
[ci skip] [skip ci]
2023-05-23 21:00:00 +00:00
Sergio Brighenti
7a4be04917 fix failing test 2023-05-23 22:59:55 +02:00
Reza Almanda
4cf84fdafe
Translated using Weblate (Indonesian)
Currently translated at 100.0% (160 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/id/
2023-05-23 21:42:28 +02:00
Daniel Benyšek
d86d3826d5
Translated using Weblate (Czech)
Currently translated at 100.0% (160 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/cs/
2023-05-23 21:42:28 +02:00
Alexey Gudym
04e42bd456
Translated using Weblate (Russian)
Currently translated at 100.0% (160 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/ru/
2023-05-23 21:42:28 +02:00
Sergio Brighenti
c3ebf4d39b
Merge pull request #526 from SergiX44/dependabot/composer/guzzlehttp/psr7-1.9.1 2023-05-23 21:42:23 +02:00
Sergio Brighenti
e05600ec26
Merge pull request #527 from SergiX44/analysis-a60gDB 2023-04-19 23:52:54 +02:00
StyleCI Bot
ae5e2cffb3
Apply fixes from StyleCI
[ci skip] [skip ci]
2023-04-19 21:23:06 +00:00
dependabot[bot]
45dc6ff87b
Bump guzzlehttp/psr7 from 1.9.0 to 1.9.1
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 1.9.0 to 1.9.1.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/1.9.1/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/1.9.0...1.9.1)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-19 21:22:57 +00:00
SrS2225a
69d6ae298e style ci fix 2023-01-17 21:39:40 -08:00
SrS2225a
acaceea3f1 added fixes per request by author 2023-01-17 21:17:52 -08:00
Sergio Brighenti
589720d81b update lock file 2023-01-16 21:06:05 +01:00
Sergio Brighenti
46502074a0 swap implementation psr7
drop direct impl call
2023-01-16 21:03:36 +01:00
Sergio Brighenti
020ad75238 update deps 2023-01-16 18:41:26 +01:00
Sergio Brighenti
02be446c2e
Merge pull request #503 from weblate/weblate-xbackbone-xbackbone 2022-12-31 16:54:35 +01:00
SrS2225a
58744bd092 fixed code styling issues 2022-12-30 21:44:51 -08:00
Özgür
2a789d0f8a
Translated using Weblate (Turkish)
Currently translated at 100.0% (160 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/tr/
2022-12-29 01:14:02 +01:00
Oğuz Ersen
e8c3b75b99
Translated using Weblate (Turkish)
Currently translated at 100.0% (160 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/tr/
2022-12-29 01:14:02 +01:00
Sergio Brighenti
b790d21e01
Merge pull request #502 from SergiX44/dependabot/npm_and_yarn/qs-6.11.0 2022-12-29 01:13:58 +01:00
Sergio Brighenti
237e2f7a57
Merge pull request #501 from samrzhevsky/master 2022-12-29 00:58:19 +01:00
SrS2225a
4deedda3b6 bug fixes for vanity links 2022-12-19 19:42:08 -08:00
SrS2225a
d6dce885d2 added support for vanity links 2022-12-18 21:54:18 -08:00
SrS2225a
d823230c35 Merge branch 'master' of https://github.com/SrS2225a/XBackBone 2022-12-18 21:53:08 -08:00
SrS2225a
634956cb2d added support for vanity links 2022-12-18 21:22:15 -08:00
dependabot[bot]
6a05a5dac8
Bump qs from 6.10.1 to 6.11.0
Bumps [qs](https://github.com/ljharb/qs) from 6.10.1 to 6.11.0.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.10.1...v6.11.0)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-06 14:36:59 +00:00
Sam Rzhevsky
9bddf5940b
Fix filter by tag
Fixed filter by non-existent tag
2022-11-30 21:13:58 +03:00
Sergio Brighenti
b4f720cf21 update changelog 2022-11-27 22:44:17 +01:00
Sergio Brighenti
2bce85ea6a upgraded phpunit 2022-11-27 22:37:22 +01:00
Sergio Brighenti
e2c3aaf89a update deps 2022-11-27 22:34:42 +01:00
Sergio Brighenti
a9c492c99d
Merge pull request #499 from samrzhevsky/master 2022-11-27 22:31:43 +01:00
Sam Rzhevsky
3bb2b7b4ea
Logging fix
PHP Notice: Undefined property: stdClass::$name in app/Controllers/ExportController.php on line 28
2022-11-27 21:37:37 +03:00
Sergio Brighenti
2ddaac8e5a
Merge pull request #496 from FingerlessGlov3s/patch-2
remove duplicate lines
2022-11-08 10:39:27 +01:00
FingerlessGloves
e4e67657d8
remove duplicate lines
meta tags are oddly repeated
2022-11-02 23:18:01 +00:00
Sergio Brighenti
1e0e549938
Merge pull request #495 from FingerlessGlov3s/patch-1
Fixes redirect bug for reverse proxy
2022-11-02 21:04:50 +01:00
FingerlessGloves
9caee0dc5b
Fixes redirect bug for reverse proxy
If you are logged out of XBackbone, and browse to `/upload` for example the direction holds the request URI, which isn't an issue unless you've got a reverse proxy in front of it.
For example, if the app is running in a container on port 8080, and Traefik is doing the reverse proxying, when you try login after being redirected to the login page, the redirectTo session contains the internal port number, which causes you to be redirected to `https://mydomain.com:8080/upload` instead of the correct `https://mydomain.com/upload`
2022-10-31 22:39:32 +00:00
Sergio Brighenti
99c9f50294
Merge pull request #480 from weblate/weblate-xbackbone-xbackbone
Translations update from Hosted Weblate
2022-10-26 10:05:38 +02:00
Ho_ Tsuyosi (스넾)
48ba6f009e
Translated using Weblate (Japanese)
Currently translated at 66.2% (106 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/ja/
2022-10-26 10:05:28 +02:00
Zsolt Nagy
8379eb41ef
Translated using Weblate (Hungarian)
Currently translated at 100.0% (160 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/hu/
2022-10-26 10:05:28 +02:00
PVPMaster0001
90ac32621a
Translated using Weblate (Finnish)
Currently translated at 100.0% (160 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/fi/
2022-10-26 10:05:28 +02:00
PVPMaster0001
80152ac31a
Translated using Weblate (Japanese)
Currently translated at 53.1% (85 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/ja/
2022-10-26 10:05:28 +02:00
Denis Branisteanu
3aac808525
Translated using Weblate (Romanian)
Currently translated at 100.0% (160 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/ro/
2022-10-26 10:05:28 +02:00
Denis Branisteanu
57122a8f96
Translated using Weblate (Romanian)
Currently translated at 6.2% (10 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/ro/
2022-10-26 10:05:28 +02:00
Denis Branisteanu
e155a33f86
Added translation using Weblate (Romanian) 2022-10-26 10:05:28 +02:00
Hien
46341b4e03
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (160 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/vi/
2022-10-26 10:05:28 +02:00
Özgür
a1b3ab47ab
Translated using Weblate (Turkish)
Currently translated at 91.2% (146 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/tr/
2022-10-26 10:05:28 +02:00
Özgür
904795029c
Translated using Weblate (Turkish)
Currently translated at 41.8% (67 of 160 strings)

Translation: XBackBone/XBackBone
Translate-URL: https://hosted.weblate.org/projects/xbackbone/xbackbone/tr/
2022-10-26 10:05:28 +02:00
Sergio Brighenti
1eebc961ab
Merge pull request #479 from SergiX44/dependabot/composer/guzzlehttp/guzzle-7.4.5
Bump guzzlehttp/guzzle from 7.4.4 to 7.4.5
2022-10-26 10:05:24 +02:00
Sergio Brighenti
0f6cc027f7
Merge pull request #490 from SergiX44/dependabot/composer/twig/twig-2.15.3
Bump twig/twig from 2.15.1 to 2.15.3
2022-10-26 10:05:16 +02:00
dependabot[bot]
c83539245b
Bump twig/twig from 2.15.1 to 2.15.3
Bumps [twig/twig](https://github.com/twigphp/Twig) from 2.15.1 to 2.15.3.
- [Release notes](https://github.com/twigphp/Twig/releases)
- [Changelog](https://github.com/twigphp/Twig/blob/v2.15.3/CHANGELOG)
- [Commits](https://github.com/twigphp/Twig/compare/v2.15.1...v2.15.3)

---
updated-dependencies:
- dependency-name: twig/twig
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-30 20:25:52 +00:00
Sergio Brighenti
7af93ae136
Merge pull request #484 from FunctionDJ/patch-1
Update minimum PHP version in docs
2022-08-04 14:44:00 +02:00
Function
96b61b5834
Update minimum PHP version in docs 2022-08-04 13:45:04 +02:00
dependabot[bot]
d6d4fbcf94
Bump guzzlehttp/guzzle from 7.4.4 to 7.4.5
Bumps [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) from 7.4.4 to 7.4.5.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/master/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/7.4.4...7.4.5)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-21 21:00:12 +00:00
53 changed files with 2341 additions and 1413 deletions

View file

@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
operating-system: [ubuntu-latest]
php-versions: ["7.3", "7.4", "8.0"]
php-versions: ["7.3", "7.4", "8.0", "8.1", "8.2"]
steps:
- uses: actions/checkout@v2

View file

@ -5,6 +5,39 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## Unreleased
## [3.7.0] - 2024-01-14
### Added
- Added support for vanity urls.
- Added KDE integration for linux script.
### Changed
- Updated translations.
- File preview is now clickable to open the file.
### Fixed
- Fixes for LDAP authentication.
## [3.6.3] - 2023-05-27
### Fixed
- Fix LDAP for php >= 8.1
## [3.6.2] - 2023-05-24
### Changed
- Support for PHP 8.2
### Removed
- Azure blob storage driver
## [3.6.1] - 2022-11-27
### Changed
- Upgraded dependencies
- Updated translations
### Fixed
- Fixed error in export data (#499)
- Fixed issues with reverse proxies (#495)
- Fixed duplicated twitter tags
## [3.6.0] - 2022-06-20
### Changed
- Improved embedding on discord of large videos.

View file

@ -27,7 +27,7 @@ abstract class AuthController extends Controller
/**
* Connects to LDAP server and logs in with service account (if configured)
* @return resource|false
* @return \LDAP\Connection|resource|false
*/
public function ldapConnect()
{
@ -39,7 +39,7 @@ abstract class AuthController extends Controller
$ldapSchema=(@is_string($this->config['ldap']['schema'])) ?
strtolower($this->config['ldap']['schema']) : 'ldap';
$ldapURI="$ldapSchema://".$this->config['ldap']['host'].':'.$this->config['ldap']['port'];
// Connecting to LDAP server
$this->logger->debug("Connecting to $ldapURI");
$server = ldap_connect($ldapURI);
@ -48,18 +48,18 @@ abstract class AuthController extends Controller
ldap_set_option($server, LDAP_OPT_REFERRALS, 0);
ldap_set_option($server, LDAP_OPT_NETWORK_TIMEOUT, 10);
} else {
$this->logger->error(ldap_error($server));
$this->logger->error('LDAP-URI was not parseable');
return false;
}
// Upgrade to StartTLS
$useStartTLS = @is_bool($this->config['ldap']['useStartTLS']) ? $this->config['ldap']['useStartTLS'] : false;
if (($useStartTLS === true) && (ldap_start_tls($server) === false)) {
$this->logger-debug(ldap_error($server));
$this->logger->debug(ldap_error($server));
$this->logger->error("Failed to establish secure LDAP swith StartTLS");
return false;
}
// Authenticating LDAP service account (if configured)
$serviceAccountFQDN= (@is_string($this->config['ldap']['service_account_dn'])) ?
$this->config['ldap']['service_account_dn'] : null;
@ -77,7 +77,7 @@ abstract class AuthController extends Controller
/**
* Returns User's LDAP DN
* @param string $username
* @param resource $server LDAP Server Resource
* @param \LDAP\Connection|resource $server LDAP Server Resource
* @return string|null
*/
protected function getLdapRdn(string $username, $server)
@ -85,7 +85,7 @@ abstract class AuthController extends Controller
//Dynamic LDAP User Binding
if (@is_string($this->config['ldap']['search_filter'])) {
//Replace ???? with username
$searchFilter = str_replace('????', ldap_escape($username, null, LDAP_ESCAPE_FILTER), $this->config['ldap']['search_filter']);
$searchFilter = str_replace('????', ldap_escape($username, '', LDAP_ESCAPE_FILTER), $this->config['ldap']['search_filter']);
$ldapAddributes = array('dn');
$this->logger->debug("LDAP Search filter: $searchFilter");
$ldapSearchResp = ldap_search(
@ -94,7 +94,7 @@ abstract class AuthController extends Controller
$searchFilter,
$ldapAddributes
);
if (!is_resource($ldapSearchResp)) {
if (!$ldapSearchResp) {
$this->logger->debug(ldap_error($server));
$this->logger->error("User LDAP search for user $username failed");
return null;
@ -112,7 +112,7 @@ abstract class AuthController extends Controller
if ($this->config['ldap']['user_domain'] !== null) {
$bindString .= ','.$this->config['ldap']['user_domain'];
}
if ($this->config['ldap']['base_domain'] !== null) {
$bindString .= ','.$this->config['ldap']['base_domain'];
}

View file

@ -11,7 +11,6 @@ use Slim\Exception\HttpNotFoundException;
class PasswordRecoveryController extends AuthController
{
/**
* @param Response $response
* @return Response

View file

@ -13,7 +13,6 @@ use Slim\Exception\HttpNotFoundException;
class RegisterController extends AuthController
{
/**
* @param Request $request
* @param Response $response

View file

@ -114,4 +114,35 @@ class ClientController extends Controller
]
);
}
/**
* @param Request $request
* @param Response $response
* @param int $id
*
* @return Response
* @throws \Twig\Error\LoaderError
* @throws \Twig\Error\RuntimeError
* @throws \Twig\Error\SyntaxError
*/
public function getKDEScript(Request $request, Response $response, int $id): Response
{
$user = make(UserRepository::class)->get($request, $id, true);
if (!$user->token) {
$this->session->alert(lang('no_upload_token'), 'danger');
return redirect($response, $request->getHeaderLine('Referer'));
}
return view()->render(
$response->withHeader('Content-Disposition', 'attachment;filename="xbackbone_uploader_'.$user->username.'.sh"'),
'scripts/xbackbone_kde_uploader.sh.twig',
[
'username' => $user->username,
'upload_url' => route('upload'),
'token' => $user->token,
]
);
}
}

View file

@ -25,7 +25,7 @@ class ExportController extends Controller
$medias = $this->database->query('SELECT `uploads`.`filename`, `uploads`.`storage_path` FROM `uploads` WHERE `user_id` = ?', $user->id);
$this->logger->info("User $user->id, $user->name, exporting data...");
$this->logger->info("User $user->id, $user->username, exporting data...");
set_time_limit(0);
ob_end_clean();

View file

@ -4,7 +4,6 @@ namespace App\Controllers;
use App\Database\Repositories\UserRepository;
use App\Web\UA;
use GuzzleHttp\Psr7\Stream;
use Intervention\Image\Constraint;
use Intervention\Image\ImageManagerStatic as Image;
use League\Flysystem\FileNotFoundException;
@ -14,6 +13,7 @@ use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Exception\HttpBadRequestException;
use Slim\Exception\HttpNotFoundException;
use Slim\Exception\HttpUnauthorizedException;
use Slim\Psr7\Stream;
class MediaController extends Controller
{
@ -188,6 +188,43 @@ class MediaController extends Controller
return $this->streamMedia($request, $response, $this->storage, $media, 'attachment');
}
/**
* @param Request $request
* @param Response $response
* @param string $vanity
* @param string $id
*
* @return Response
* @throws HttpNotFoundException
* @throws HttpBadRequestException
*/
public function createVanity(Request $request, Response $response, int $id): Response
{
$media = $this->database->query('SELECT * FROM `uploads` WHERE `id` = ? LIMIT 1', $id)->fetch();
$vanity = param($request, 'vanity');
$vanity = preg_replace('/[^a-z0-9]+/', '-', strtolower($vanity));
//handle collisions
$collision = $this->database->query('SELECT * FROM `uploads` WHERE `code` = ? AND `id` != ? LIMIT 1', [$vanity, $id])->fetch();
if (!$media) {
throw new HttpNotFoundException($request);
}
if ($vanity === '' || $collision) {
throw new HttpBadRequestException($request);
}
$this->database->query('UPDATE `uploads` SET `code` = ? WHERE `id` = ?', [$vanity, $media->id]);
$media->code = $vanity;
$response->getBody()->write(json_encode($media));
$this->logger->info('User '.$this->session->get('username').' created a vanity link for media '.$media->id);
return $response;
}
/**
* @param Request $request
* @param Response $response

View file

@ -12,7 +12,6 @@ use Slim\Exception\HttpNotFoundException;
class TagController extends Controller
{
/**
* @param Request $request
* @param Response $response

View file

@ -208,6 +208,7 @@ class UploadController extends Controller
$this->json['message'] = 'OK';
$this->json['url'] = urlFor("/{$user->user_code}/{$code}.{$fileInfo['extension']}");
$this->json['raw_url'] = urlFor("/{$user->user_code}/{$code}/raw.{$fileInfo['extension']}");
$this->logger->info("User $user->username uploaded new media.", [$mediaId]);

View file

@ -208,21 +208,38 @@ class MediaRepository
array_multisort(array_column($files, 'size'), $this->buildOrderBy(), SORT_NUMERIC, $files);
$params = [];
$queryPagesParams = [];
if ($this->text !== null) {
if ($this->isAdmin) {
[$queryMedia,] = $this->buildAdminQueries();
[$queryMedia, $queryPages] = $this->buildAdminQueries();
} else {
[$queryMedia,] = $this->buildUserQueries();
[$queryMedia, $queryPages] = $this->buildUserQueries();
$params[] = $this->userId;
}
$params[] = '%'.htmlentities($this->text).'%';
$queryPagesParams = $params;
$paths = array_column($files, 'path');
} elseif ($this->tagId !== null) {
if ($this->isAdmin) {
[, $queryPages] = $this->buildAdminQueries();
} else {
[, $queryPages] = $this->buildUserQueries();
$queryPagesParams[] = $this->userId;
}
$paths = array_column($files, 'path');
$ids = $this->getMediaIdsByTagId($this->tagId);
$queryMedia = 'SELECT `uploads`.*, `users`.`user_code`, `users`.`username` FROM `uploads` LEFT JOIN `users` ON `uploads`.`user_id` = `users`.`id` WHERE `uploads`.`storage_path` IN ("'.implode('","', $paths).'") AND `uploads`.`id` IN ('.implode(',', $ids).')';
} else {
if ($this->isAdmin) {
[, $queryPages] = $this->buildAdminQueries();
} else {
[, $queryPages] = $this->buildUserQueries();
$queryPagesParams[] = $this->userId;
}
$files = array_slice($files, $offset, $limit, true);
$paths = array_column($files, 'path');
$queryMedia = 'SELECT `uploads`.*, `users`.`user_code`, `users`.`username` FROM `uploads` LEFT JOIN `users` ON `uploads`.`user_id` = `users`.`id` WHERE `uploads`.`storage_path` IN ("'.implode('","', $paths).'")';
@ -253,7 +270,7 @@ class MediaRepository
}
}
$this->pages = count($this->media) / $limit;
$this->pages = $this->db->query($queryPages, $queryPagesParams)->fetch()->count / $limit;
if ($this->text !== null || $this->tagId !== null) {
$this->media = array_slice($this->media, $offset, $limit, true);
@ -345,7 +362,7 @@ class MediaRepository
protected function getMediaIdsByTagId($tagId)
{
$mediaIds = $this->db->query('SELECT `upload_id` FROM `uploads_tags` WHERE `tag_id` = ?', $tagId)->fetchAll();
$ids = [];
$ids = [-1];
foreach ($mediaIds as $pivot) {
$ids[] = $pivot->upload_id;
}

View file

@ -2,7 +2,6 @@
namespace App\Middleware;
use GuzzleHttp\Psr7\Response;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
@ -16,7 +15,7 @@ class AdminMiddleware extends Middleware
*
* @throws HttpUnauthorizedException
*
* @return Response
* @return ResponseInterface
*/
public function __invoke(Request $request, RequestHandler $handler): ResponseInterface
{

View file

@ -2,10 +2,10 @@
namespace App\Middleware;
use GuzzleHttp\Psr7\Response;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
use Slim\Psr7\Factory\ResponseFactory;
class AuthMiddleware extends Middleware
{
@ -18,16 +18,16 @@ class AuthMiddleware extends Middleware
public function __invoke(Request $request, RequestHandler $handler): ResponseInterface
{
if (!$this->session->get('logged', false)) {
$this->session->set('redirectTo', (string) $request->getUri());
$this->session->set('redirectTo', (string) $request->getUri()->getPath());
return redirect(new Response(), route('login.show'));
return redirect((new ResponseFactory())->createResponse(), route('login.show'));
}
if (!$this->database->query('SELECT `id`, `active` FROM `users` WHERE `id` = ? LIMIT 1', [$this->session->get('user_id')])->fetch()->active) {
$this->session->alert(lang('account_disabled'), 'danger');
$this->session->set('logged', false);
return redirect(new Response(), route('login.show'));
return redirect((new ResponseFactory())->createResponse(), route('login.show'));
}
return $handler->handle($request);

View file

@ -4,7 +4,6 @@ namespace App\Web;
class UA
{
/**
* bot user agent => perform link embed
* @var string[]

View file

@ -117,13 +117,13 @@ if (!function_exists('stringToBytes')) {
switch ($last) {
case 't':
$val *= 1024;
// no break
// no break
case 'g':
$val *= 1024;
// no break
// no break
case 'm':
$val *= 1024;
// no break
// no break
case 'k':
$val *= 1024;
}

2
app/routes.php Normal file → Executable file
View file

@ -57,11 +57,13 @@ $app->group('', function (RouteCollectorProxy $group) {
$group->post('/user/{id}/refreshToken', [UserController::class, 'refreshToken'])->setName('refreshToken');
$group->get('/user/{id}/config/sharex', [ClientController::class, 'getShareXConfig'])->setName('config.sharex');
$group->get('/user/{id}/config/script', [ClientController::class, 'getBashScript'])->setName('config.script');
$group->get('/user/{id}/config/kde_script', [ClientController::class, 'getKDEScript'])->setName('kde_config.script');
$group->get('/user/{id}/export', [ExportController::class, 'downloadData'])->setName('export.data');
$group->post('/upload/{id}/publish', [MediaController::class, 'togglePublish'])->setName('upload.publish');
$group->post('/upload/{id}/unpublish', [MediaController::class, 'togglePublish'])->setName('upload.unpublish');
$group->post('/upload/{id}/vanity', [MediaController::class, 'createVanity'])->setName('upload.vanity');
$group->get('/upload/{id}/raw', [MediaController::class, 'getRawById'])->add(AdminMiddleware::class)->setName('upload.raw');
$group->map(['GET', 'POST'], '/upload/{id}/delete', [MediaController::class, 'delete'])->setName('upload.delete');

View file

@ -1,11 +1,11 @@
{
"name": "sergix44/xbackbone",
"license": "AGPL-3.0-only",
"version": "3.6.0",
"version": "3.7.0",
"description": "A lightweight ShareX PHP backend",
"type": "project",
"require": {
"php": ">=7.2",
"php": ">=7.3",
"ext-filter": "*",
"ext-gd": "*",
"ext-intl": "*",
@ -13,16 +13,15 @@
"ext-pdo": "*",
"ext-zip": "*",
"erusev/parsedown": "^1.7",
"guzzlehttp/psr7": "^1.8",
"intervention/image": "^2.6",
"league/flysystem": "^1.1.4",
"league/flysystem-aws-s3-v3": "^1.0",
"league/flysystem-azure-blob-storage": "^0.1.6",
"league/flysystem-cached-adapter": "^1.1",
"maennchen/zipstream-php": "^2.0",
"monolog/monolog": "^1.23",
"php-di/slim-bridge": "^3.0",
"sapphirecat/slim4-http-interop-adapter": "^1.0",
"slim/psr7": "^1.5",
"slim/slim": "^4.0",
"spatie/flysystem-dropbox": "^1.0",
"superbalist/flysystem-google-storage": "^7.2",
@ -49,10 +48,12 @@
"Tests\\": "tests/"
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"require-dev": {
"roave/security-advisories": "dev-latest",
"phpstan/phpstan": "^0.11.5",
"phpunit/phpunit": "^8.5",
"phpunit/phpunit": "^9.0",
"symfony/dom-crawler": "^4.4"
}
}

2779
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -5,6 +5,39 @@ nav_order: 9
---
# Changelog
## [3.7.0] - 2024-01-14
### Added
- Added support for vanity urls.
- Added KDE integration for linux script.
### Changed
- Updated translations.
- File preview is now clickable to open the file.
### Fixed
- Fixes for LDAP authentication.
## [3.6.3] - 2023-05-27
### Fixed
- Fix LDAP for php >= 8.1
## [3.6.2] - 2023-05-24
### Changed
- Support for PHP 8.2
### Removed
- Azure blob storage driver
## [3.6.1] - 2022-11-27
### Changed
- Upgraded dependencies
- Updated translations
### Fixed
- Fixed error in export data (#499)
- Fixed issues with reverse proxies (#495)
- Fixed duplicated twitter tags (#496)
## [3.6.0] - 2022-06-20
### Changed
- Improved embedding on discord of large videos.

View file

@ -191,19 +191,6 @@ return array(
);
```
+ Azure Blob Storage
```php
return array(
...
'storage' => array (
'driver' => 'azure',
'account_name' => 'the-storage-account-name',
'account_key' => 'the-account-key',
'container_name' => 'container-name',
),
);
```
## Changing themes
XBackBone supports all [bootswatch.com](https://bootswatch.com/) themes.

View file

@ -7,7 +7,7 @@ nav_order: 2
# Installation
### Prerequisites
XBackBone require PHP >= `7.2`, with installed the required extensions:
XBackBone require PHP >= `7.3`, with installed the required extensions:
+ `php-sqlite3` for SQLite.
+ `php-mysql` for MariaDB/MySQL.
+ `php-gd` image manipualtion library.

55
package-lock.json generated
View file

@ -339,12 +339,12 @@
}
},
"node_modules/braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
"fill-range": "^7.0.1"
"fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@ -805,9 +805,9 @@
"dev": true
},
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@ -2148,9 +2148,9 @@
}
},
"node_modules/minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
"integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
@ -2493,15 +2493,18 @@
"dev": true
},
"node_modules/qs": {
"version": "6.10.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
"integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"dev": true,
"dependencies": {
"side-channel": "^1.0.4"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/rangetouch": {
@ -3213,12 +3216,12 @@
}
},
"braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"requires": {
"fill-range": "^7.0.1"
"fill-range": "^7.1.1"
}
},
"buffer": {
@ -3606,9 +3609,9 @@
"dev": true
},
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"requires": {
"to-regex-range": "^5.0.1"
@ -4688,9 +4691,9 @@
}
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
"integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
@ -4952,9 +4955,9 @@
"dev": true
},
"qs": {
"version": "6.10.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
"integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
"integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
"dev": true,
"requires": {
"side-channel": "^1.0.4"

View file

@ -17,9 +17,9 @@ return [
'pager.next' => 'التالي',
'pager.previous' => 'السابق',
'copy_link' => 'نسخ الرابط',
'public.telegram' => 'مشاركة عبر تلغرام',
'public.delete_text' => 'هل تريد بالتأكيد حذف هذا العنصر؟ سيحذف نهائيا!',
'preview' => 'السابق',
'public.telegram' => 'شارك على تيليجرام',
'public.delete_text' => 'هل أنت متأكد من أنك تريد حذف هذا العنصر؟ لن تتمكن من استعادته',
'preview' => 'استعراض',
'filename' => 'اسم الملف',
'size' => 'حجم',
'public' => 'عام',
@ -59,13 +59,13 @@ return [
'account_disabled' => 'حسابك معطل.',
'welcome' => 'مرحبا، %s!',
'goodbye' => 'وداعا!',
'email_required' => 'البريد الإلكتروني مطلوب.',
'email_taken' => 'البريد الإلكتروني قيد الاستخدام.',
'email_required' => 'عنوان البريد الإلكتروني مطلوب.',
'email_taken' => 'عنوان البريد الإلكتروني قيد الاستخدام بالفعل.',
'username_required' => 'اسم المستخدم مطلوب.',
'username_taken' => 'اسم المستخدم قيد الاستخدام.',
'password_required' => 'كلمة المرور مطلوبة.',
'user_created' => 'المستخدم "%s" أنشئ!',
'user_updated' => 'المستخدم "%s" تم تحديثه!',
'user_created' => 'تم إنشاء المستخدم "٪s"!',
'user_updated' => 'تم تحديث المستخدم "%s"!',
'profile_updated' => 'تم تحديث الملف الشخصي بنجاح!',
'user_deleted' => 'تم حذف المستخدم.',
'cannot_delete' => 'لا يمكنك حذف نفسك.',
@ -73,8 +73,8 @@ return [
'switch_to' => 'تبديل إلى',
'gallery' => 'معرض',
'table' => 'جدول',
'dotted_search' => 'بحث...',
'order_by' => 'ترتيب حسب...',
'dotted_search' => 'بحث',
'order_by' => 'ترتيب حسب',
'time' => 'وقت',
'name' => 'اسم',
'maintenance' => 'صيانة',
@ -88,7 +88,7 @@ return [
'updates' => 'تحديثات',
'cancel' => 'إلغاء',
'auto_set' => 'حدد تلقائيا',
'prerelease_channel' => 'قناة إصدار تجريبي',
'prerelease_channel' => 'قناة ما قبل الإصدار',
'drop_to_upload' => 'انقر أو اسحب ملفاتك هنا للرفع.',
'donation' => 'تبرع',
'remember_me' => 'تذكرني',
@ -101,7 +101,7 @@ return [
'password_recovery' => 'استعادة كلمة المرور',
'no_account' => 'لا تملك حسابا؟',
'register' => 'تسجيل',
'register_success' => 'تم إنشاء الحساب، تم إرسال رسالة تأكيد إلكترونية.',
'register_success' => 'تم إنشاء الحساب، تم إرسال رسالة تأكيد عبر البريد الإلكتروني.',
'mail.activate_account' => '%s - تفعيل الحساب',
'mail.recover_password' => '%s - استعادة كلمة المرور',
'recover_email_sent' => 'إن وجد، سيتم إرسال رسالة إلكترونية لاستعادة كلمة المرور إلى الحساب المحدد.',
@ -115,8 +115,51 @@ return [
'clear_account' => 'مسح الحساب',
'account_media_deleted' => 'كل الوسائط في الحساب تم حذفها.',
'danger_zone' => 'منطقة خطرة',
'send_notification' => 'إرسال رسالة إشعار إلكترونية',
'send_notification' => 'إرسال إشعار بالبريد الإلكتروني',
'mail.new_account' => '%s - إنشاء حساب جديد',
'php_info' => 'معلومات PHP',
'enforce_language' => 'اللغة الافتراضية',
'php_info' => 'معلومات الPHP',
'enforce_language' => 'فرض اللغة',
'image_embeds' => 'تضمين الصور',
'token_not_found' => 'لم يتم العثور على الرمز المميز المحدد.',
'clean_orphaned_uploads' => 'تنظيف التحميلات المعزولة',
'show_all_tags' => 'إظهار جميع العلامات',
'cannot_demote' => 'لا يمكنك تخفيض رتبتك.',
'recaptcha_secret_key' => 'المفتاح السري reCAPTCHA',
'recaptcha_failed' => 'فشل reCAPTCHA',
'recaptcha_enabled' => 'تم تفعيل reCAPTCHA',
'default_user_quota' => 'الحصة الافتراضية للمستخدم',
'invalid_quota' => 'قيم غير صالحة كحصة مستخدم افتراضية.',
'copy_url_behavior' => 'نسخ وضع الرابط',
'token' => 'الرمز المميز',
'vanity_url' => 'رابط مخصص',
'orphaned_files' => 'الملفات المعزولة',
'copied' => 'تم النسخ إلى الحافظة!',
'client_config' => 'إعدادات العميل',
'deleted_orphans' => 'تم حذف %d من الملفات المعزولة بنجاح.',
'maintenance_in_progress' => 'المنصة تحت الصيانة، حاول مرة أخرى لاحقاً…',
'default_lang_behavior' => 'سيحاول XBackBone مطابقة لغة المتصفح افتراضيا (الاحتياطي هو الإنجليزية).',
'no_upload_token' => 'ليس لديك رمز مميز شخصي للتحميل. (قم بإنشاء واحد وحاول مرة أخرى.)',
'donate_text' => 'إذا كنت تحب XBackBone، ففكر في التبرع لدعم التطوير!',
'custom_head_html' => 'محتوى رأس HTML مخصص',
'custom_head_html_hint' => 'ستتم إضافة هذا المحتوى عند علامة <head> في كل صفحة.',
'custom_head_set' => 'تم تطبيق رأس HTML المخصص.',
'max_user_quota' => 'الحد الأقصى لحصة المستخدم',
'quota_enabled' => 'تفعيل حصة المستخدم',
'recalculate_user_quota' => 'إعادة حساب حصة المستخدم من القرص',
'mail.activate_text' => 'مرحبًا %s!<br>شكرًا لك على إنشاء حسابك على %s (<a href="%s">%s</a>)، انقر على الرابط التالي لتفعيله:<br><br><a href="%s">%s</a>',
'quota_recalculated' => 'تمت إعادة حساب حصة المستخدم من القرص بنجاح.',
'only_recaptcha_v3' => 'يتم دعم reCAPTCHA v3 فقط.',
'recaptcha_site_key' => 'مفتاح موقع reCAPTCHA',
'ldap_cant_connect' => 'لا يمكن الاتصال بخادم مصادقة LDAP.',
'upload_max_file_size' => 'الحد الأقصى لحجم الملف حاليًا هو %s.',
'zip_ext_not_loaded' => 'لم يتم تحميل الامتداد "zip" المطلوب',
'no_tags' => 'لم تتم إضافة أي علامات',
'changelog' => 'سجل التغيير',
'show_changelog' => 'عرض سجل التغيير',
'auto_tagging' => 'تحميل العلامات تلقائيًا',
'recaptcha_keys_required' => 'جميع مفاتيح reCAPTCHA مطلوبة.',
'user_create_password' => 'إذا تركت فارغة، فقد تحتاج إلى إرسال إعلام إلى عنوان البريد الإلكتروني للمستخدم.',
'mail.recover_text' => 'مرحبًا %s،<br>لقد تم طلب إعادة تعيين كلمة المرور لحسابك. لإكمال الإجراء انقر على الرابط التالي:<br><br><a href="%s">%s</a><br><br>إذا لم تكن أنت من طلب إعادة تعيين كلمة المرور، فما عليك سوى تجاهل هذا البريد الإلكتروني.',
'mail.new_account_text_with_reset' => 'مرحبًا %s!<br>تم إنشاء حساب جديد لك على %s (<a href="%s">%s</a>)، انقر على الرابط التالي لتعيين كلمة مرور وتنشيطها:<br ><br><a href="%s">%s</a>',
'mail.new_account_text_with_pw' => 'مرحبًا %s!<br>تم إنشاء حساب جديد لك على %s (<a href="%s">%s</a>)، باستخدام بيانات الاعتماد التالية:<br><br>اسم المستخدم: %s <br>كلمة المرور: %s<br><br>انقر على الرابط التالي للانتقال إلى صفحة تسجيل الدخول:<br><a href="%s">%s</a>',
];

View file

@ -113,8 +113,8 @@ return [
'mail.new_account_text_with_reset' => 'Zdravíme, %s!<br>Byl pro vás vytvořen nový účet na %s (<a href="%s">%s</a>). Klikněte na následující odkaz pro nastavení hesla a aktivaci účtu:<br><br><a href="%s">%s</a>',
'mail.new_account' => '%s - tvorba nového účtu',
'send_notification' => 'Poslat e-mailové oznámení',
'recaptcha_secret_key' => 'reCAPTCHA Secret Key',
'recaptcha_site_key' => 'reCAPTCHA Site Key',
'recaptcha_secret_key' => 'reCAPTCHA Tajný klíč',
'recaptcha_site_key' => 'reCAPTCHA Webový Klíč',
'only_recaptcha_v3' => 'Je podporována pouze reCAPTCHA v3.',
'recaptcha_keys_required' => 'Jsou vyžadovány všechny klíče reCAPTCHA.',
'recaptcha_enabled' => 'reCAPTCHA povolena',
@ -159,4 +159,5 @@ return [
'donation' => 'Přispět',
'drop_to_upload' => 'Klikněte nebo sem přetáhněte soubory pro nahrání.',
'no_upload_token' => 'Nemáte osobní nahrávací token. (Vygenerujte si jej a zkuste to znovu.)',
'image_embeds' => 'Vložené obrázky',
];

View file

@ -54,7 +54,7 @@ return [
'reg_date' => 'Registrierungsdatum',
'none' => 'keine',
'open' => 'Öffnen',
'confirm' => 'Bestätigung',
'confirm' => 'Bestätigen',
'confirm_string' => 'Bist du sicher?',
'installed' => 'Installation erfolgreich abgeschlossen!',
'bad_login' => 'Falsche Anmeldeinformationen.',
@ -153,6 +153,7 @@ return [
'mail.new_account' => '%s Erstellung von Konto',
'user_create_password' => 'Wenn das leer bleibt, wollen Sie vielleicht eine Benachrichtigung an die Benutzer per E-Mail senden.',
'no_tags' => 'Keine Tags hinzugefügt',
'show_all_tags' => 'Alle Tags anzeigen',
'upload_max_file_size' => 'Die maximale Dateigröße beträgt derzeit %s.',
'ldap_cant_connect' => 'Es kann keine Verbindung zum LDAP-Auth-Server hergestellt werden.',
'zip_ext_not_loaded' => 'Die zip-Erweiterung ist erforderlich',
@ -165,4 +166,5 @@ return [
'changelog' => 'Änderungsprotokoll',
'copied' => 'In Zwischenablage kopiert!',
'image_embeds' => 'Bilder einbetten',
'vanity_url' => 'Benutzerdefinierte URL',
];

4
resources/lang/en.lang.php Normal file → Executable file
View file

@ -30,6 +30,8 @@ return [
'download' => 'Download',
'upload' => 'Upload',
'delete' => 'Delete',
'confirm' => 'Confirm',
'vanity_url' => 'Custom URL',
'publish' => 'Publish',
'hide' => 'Hide',
'files' => 'Files',
@ -58,7 +60,6 @@ return [
'reg_date' => 'Registration Date',
'none' => 'None',
'open' => 'Open',
'confirm' => 'Confirmation',
'confirm_string' => 'Are you sure?',
'installed' => 'Installation completed successfully!',
'bad_login' => 'Wrong credentials.',
@ -155,6 +156,7 @@ return [
'ldap_cant_connect' => 'Can\'t connect to the LDAP auth server.',
'upload_max_file_size' => 'The max file size is currently %s.',
'no_tags' => 'No tags added',
'show_all_tags' => 'Show all tags',
'auto_tagging' => 'Auto upload tagging',
'zip_ext_not_loaded' => 'The required "zip" extension is not loaded',
'changelog' => 'Changelog',

View file

@ -54,7 +54,7 @@ return [
'reg_date' => 'Fecha de Registración',
'none' => 'Ninguno',
'open' => 'Abrir',
'confirm' => 'Confirmación',
'confirm' => 'Confirmar',
'confirm_string' => '¿Está seguro?',
'installed' => '¡Instalación completa!',
'bad_login' => 'Credenciales incorrectas.',
@ -129,8 +129,8 @@ return [
'upload_max_file_size' => 'El tamaño máximo del archivo es actualmente %s.',
'ldap_cant_connect' => 'No se puede conectar con el servidor de autentificación LDAP.',
'user_create_password' => 'Si se deja vacío, es posible que desee enviar una notificación a la dirección de correo electrónico del usuario.',
'mail.new_account_text_with_pw' => 'Hola %s!<br>se ha creado una nueva cuenta para ti en %s (<a href="%s">%s</a>), haz clic en el siguiente enlace para establecer una contraseña y activarla:<br><br><a href="%s">%s</a>',
'mail.new_account_text_with_reset' => 'Hola %s!<br>se ha creado una nueva cuenta para ti en %s (<a href="%s">%s</a>), haz clic en el siguiente enlace para establecer una contraseña y activarla:<br><br><a href="%s">%s</a>',
'mail.new_account_text_with_pw' => '¡Hola %s!<br>se ha creado una nueva cuenta para ti en %s (<a href="%s">%s</a>), haz clic en el siguiente enlace para establecer una contraseña y activarla:<br><br><a href="%s">%s</a>',
'mail.new_account_text_with_reset' => '¡Hola, %s!<br>Se creó una nueva cuenta para ti en %s (<a href="%s">%s</a>), haz clic en el siguiente enlace para establecer una contraseña y activarla:<br ><br><a href="%s">%s</a>',
'recaptcha_enabled' => 'reCAPTCHA activado',
'account_media_deleted' => 'Se han eliminado todos los archivos de la cuenta.',
'clear_account' => 'Limpiar cuenta',
@ -165,4 +165,6 @@ return [
'recaptcha_site_key' => 'Clave del sitio reCAPTCHA',
'only_recaptcha_v3' => 'Solo reCAPTCHA v3 está soportado.',
'custom_head_set' => 'Cabecera HTML personalizada aplicada.',
'vanity_url' => 'URL personalizada',
'show_all_tags' => 'Mostrar todas las etiquetas',
];

View file

@ -35,7 +35,7 @@ return [
'bad_login' => 'Väärät kirjautumistiedot.',
'installed' => 'Asennus suoritettu loppuun onnistuneesti!',
'confirm_string' => 'Oletko varma?',
'confirm' => 'Vahvistus',
'confirm' => 'Vahvista',
'open' => 'Auki',
'none' => 'Ei mitään',
'reg_date' => 'Rekisteröitymis päivä',
@ -126,4 +126,39 @@ return [
'password_repeat' => 'Toista salasana',
'password_match' => 'Salasanan ja uudelleenkirjoitetun salasanan täytyy olla sama.',
'password_restored' => 'Salana nollattu.',
'image_embeds' => 'Kuvien upottaminen',
'recalculate_user_quota' => 'Käyttäjäkiintiön laskeminen uudelleen levyltä',
'quota_recalculated' => 'Käyttäjäkiintiö lasketaan uudelleen levyltä onnistuneesti.',
'recaptcha_secret_key' => 'reCAPTCHA:n salainen avain',
'recaptcha_keys_required' => 'Kaikki reCAPTCHA-näppäimet ovat pakollisia.',
'mail.new_account' => '%s - Uuden tilin luominen',
'no_tags' => 'Tunnisteita ei ole lisätty',
'auto_tagging' => 'Automaattisen latauksen taggaus',
'zip_ext_not_loaded' => 'Vaadittua "zip" -laajennusta ei ladata',
'remember_me' => 'Muista minut',
'copy_url_behavior' => 'Kopioi URL-osoite -tila',
'register_enabled' => 'Rekisteröinnit käytössä',
'no_upload_token' => 'Sinulla ei ole henkilökohtaista lataustunnusta. (Luo sellainen ja yritä uudelleen.)',
'custom_head_html_hint' => 'Tämä sisältö lisätään <head> jokaisen sivun tunnisteeseen.',
'custom_head_set' => 'Mukautettu HTML-pää käytössä.',
'file_size_no_match' => 'Ladattu tiedosto ei vastaa oikeaa tiedostokokoa.',
'prerelease_channel' => 'Ennakkojulkaisukanava',
'default_user_quota' => 'Käyttäjän oletuskiintiö',
'max_user_quota' => 'Käyttäjän enimmäiskiintiö',
'mail.activate_account' => '%s - Tilin aktivointi',
'recover_email_sent' => 'Jos sellainen on, tietylle tilille lähetettiin palautussähköpostiviesti.',
'clear_account' => 'Tyhjennä tili',
'user_create_password' => 'Jos sinut jätetään tyhjäksi, sinun kannattaa ehkä lähettää ilmoitus käyttäjän sähköpostiosoitteeseen.',
'default_lang_behavior' => 'XBackBone yrittää oletusarvoisesti vastata selaimen kieltä (vara on englanti).',
'mail.activate_text' => 'Hei %s! <br>kiitos, että loit tilisi %s(<a href="%s":lle">%s</a>), napsauta seuraavaa linkkiä aktivoidaksesi sen:<br><br><a href="%s">%s</a>',
'account_media_deleted' => 'Kaikki tilin mediat on poistettu.',
'mail.new_account_text_with_reset' => 'Hei %s! <br>sinulle luotiin uusi tili %s(<a href="%s">%s</a>), napsauta seuraavaa linkkiä asettaaksesi salasanan ja aktivoidaksesi sen:<br><br><a href="%s">%s</a>',
'mail.new_account_text_with_pw' => 'Hei %s! <br>sinulle luotiin uusi tili %s(<a href="%s">%s</a>), jolla on seuraavat tunnistetiedot:<br><br>Käyttäjänimi: %s<br>Salasana: %s<br><br>Napsauta seuraavaa linkkiä siirtyäksesi kirjautumissivulle:<br><a href="%s">%s</a>',
'ldap_cant_connect' => 'Yhteyden muodostaminen LDAP-todennuspalvelimeen ei onnistu.',
'recaptcha_site_key' => 'reCAPTCHA-sivuston avain',
'custom_head_html' => 'Mukautettu HTML Head -sisältö',
'invalid_quota' => 'Virheelliset arvot oletuskäyttäjäkiintiönä.',
'mail.recover_text' => 'Hei %s, <br>tilillesi on pyydetty salasanan palautusta. Suorita toimenpide napsauttamalla seuraavaa linkkiä:<br><br><a href="%s">%s</a><br><br>Jos et ollut sinä, joka pyysit salasanan vaihtamista, ohita tämä sähköposti.',
'quota_enabled' => 'Käyttäjäkiintiön ottaminen käyttöön',
'vanity_url' => 'Mukautettu URL',
];

View file

@ -54,7 +54,7 @@ return [
'reg_date' => 'Date d\'inscription',
'none' => 'Aucun',
'open' => 'Ouvrir',
'confirm' => 'Confirmation',
'confirm' => 'Confirmer',
'confirm_string' => 'Êtes-vous sûr·e ?',
'installed' => 'L\'installation s\'est déroulée avec succès!',
'bad_login' => 'Identifiant ou mot de passe incorrect.',
@ -162,4 +162,5 @@ return [
'zip_ext_not_loaded' => 'L\'extension zip requise n\'est pas chargée',
'copied' => 'Copié dans le presse-papier !',
'image_embeds' => 'Intégrer des images',
'vanity_url' => 'URL personnalisée',
];

View file

@ -64,7 +64,7 @@ return [
'cancel' => 'Annuler',
'maintenance_in_progress' => 'Plateforme en maintenance, réessayez plus tard…',
'updates' => 'Mises à jour',
'upgrade' => 'Mettre à jour',
'upgrade' => 'Mettre à niveau',
'check_for_updates' => 'Vérifier les mises à jour',
'file_size_no_match' => 'Le fichier téléchargé n\'a pas la taille correcte.',
'cannot_retrieve_file' => 'Impossible de retrouver le fichier.',
@ -107,7 +107,7 @@ return [
'lang' => 'Français (Canada)',
'mail.new_account_text_with_pw' => 'Bonjour %s! <br> un nouveau compte a été créé pour vous sur %s (<a href="%s">% s</a>), avec les informations d\'identification suivantes : <br> <br> Nom d\'utilisateur :%s <br> Mot de passe :%s <br> <br> Cliquez sur le lien suivant pour accéder à la page de connexion : <br> <a href="%s">%s </a>',
'maintenance' => 'Maintenance',
'confirm' => 'Confirmation',
'confirm' => 'Confirmer',
'user_create_password' => 'Si laissé vide, vous souhaiterez peut-être envoyer une notification à l\'utilisateur par courriel.',
'mail.new_account' => '%s Création d\'un nouveau compte',
'mail.recover_password' => '%s Récupération de mot de passe',
@ -160,4 +160,5 @@ return [
'enforce_language' => 'Forcer la langue',
'copied' => 'Copié dans le presse-papier!',
'image_embeds' => 'Intégrer des images',
'vanity_url' => 'URL personnalisée',
];

View file

@ -158,5 +158,7 @@ return [
'no' => 'Nem',
'yes' => 'Igen',
'enforce_language' => 'A nyelv érvényesítése',
'lang' => 'Angol',
'lang' => 'Magyar',
'image_embeds' => 'Képek beágyazása',
'vanity_url' => 'Egyedi URL',
];

View file

@ -159,4 +159,6 @@ return [
'password_match' => 'Kata sandi harus sama.',
'custom_head_set' => 'Head HTML khusus diterapkan.',
'path_not_writable' => 'Destinasi berkas tidak dapat ditulis.',
'image_embeds' => 'Sematkan gambar',
'vanity_url' => 'URL kostum',
];

View file

@ -39,10 +39,10 @@ return [
'save' => 'Salva',
'used' => 'Usato',
'system_info' => 'Informazioni di Sistema',
'user.create' => 'Crea Utente',
'user.edit' => 'Modifica Utente',
'is_active' => 'Attivo',
'is_admin' => 'Amministratore',
'user.create' => 'Crea utente',
'user.edit' => 'Modifica utente',
'is_active' => 'È attivo',
'is_admin' => 'È amministratore',
'your_profile' => 'Il tuo profilo',
'token' => 'Token',
'copy' => 'Copia',
@ -162,4 +162,5 @@ return [
'show_changelog' => 'Mostra registro dei cambiamenti',
'copied' => 'Copiato negli appunti!',
'image_embeds' => 'Incorpora immagini',
'vanity_url' => 'URL personalizzato',
];

View file

@ -35,7 +35,7 @@ return [
'files' => 'ファイル',
'orphaned_files' => '所有者のいないファイル',
'theme' => 'テーマ',
'click_to_load' => 'クリックしてロード...',
'click_to_load' => 'クリックしてロード',
'apply' => '適用',
'save' => '保存',
'system_info' => 'システム情報',
@ -90,4 +90,25 @@ return [
'system_settings' => 'システム設定',
'php_info' => 'PHPの情報',
'used' => '使用済み',
'switch_to' => '転換する:',
'table' => 'テーブル形',
'name' => 'ファイル名順',
'clean_orphaned_uploads' => '所有者のないファイルを削除',
'already_latest_version' => 'もうすでに最新のXbackboneを使っています。',
'check_for_updates' => '更新を確認',
'updates' => '更新内容',
'cancel' => 'キャンセル',
'default_lang_behavior' => 'Xbackboneで使用者のブラウザの言語を自動的に検索Defaultは英語.',
'donation' => '支援',
'donate_text' => '支援も受け入れていますので、Xbackboneが気に入った場合、よろしくお願いいたします',
'custom_head_html' => 'HTML Headのコンテンツをカスタマイズ',
'register_enabled' => '登録を活性化',
'order_by' => '…順',
'custom_head_set' => 'HTML Headのカスタマイズが適用されました。',
'copied' => 'コピーしました!',
'custom_head_html_hint' => 'この部分に入力した内容は全てのページの<head></head>の中に入ります.',
'remember_me' => 'ログイン情報を保存',
'please_wait' => '少々お待ちください…',
'dont_close' => '作業を完了する前にはこのタブを閉じないでください。',
'no_upload_token' => 'アップロードのための個人トークンがありません。(まず新しく生成してもう一度試してください)',
];

View file

@ -101,7 +101,7 @@ return [
'account_disabled' => '당신의 계정은 비활성 상태입니다.',
'bad_login' => '잘못된 자격증명입니다.',
'installed' => '설치가 완료되었어요!',
'confirm' => '확인',
'confirm' => '확인',
'confirm_string' => '확실한가요?',
'open' => '열기',
'none' => '없음',
@ -160,4 +160,5 @@ return [
'yes' => '확인',
'enforce_language' => '언어 설정',
'lang' => 'Korean',
'vanity_url' => '사용자 정의 URL',
];

View file

@ -54,7 +54,7 @@ return [
'reg_date' => 'Registratiedatum',
'none' => 'Geen',
'open' => 'Open',
'confirm' => 'Bevestiging',
'confirm' => 'Bevestig',
'confirm_string' => 'Weet je het zeker?',
'installed' => 'Installatie succesvol voltooid!',
'bad_login' => 'Verkeerde verificatiegegevens.',
@ -101,9 +101,9 @@ return [
'lang_name' => 'Taal',
'default_lang_behavior' => 'XBackBone probeert standaard de taal van de browser te matchen (fallback is Engels).',
'lang_set' => 'Systeemtaal "%s" afgedwongen',
'show_changelog' => 'Changelog weergeven',
'changelog' => 'Changelog',
'zip_ext_not_loaded' => 'De vereiste zip extensie is niet geladen',
'show_changelog' => 'Wijzigingslog weergeven',
'changelog' => 'Wijzigingslog',
'zip_ext_not_loaded' => 'De vereiste "zip" extensie is niet geladen',
'auto_tagging' => 'Automatisch tags aanmaken',
'no_tags' => 'Geen tags toegevoegd',
'upload_max_file_size' => 'De maximale bestandsgrootte is momenteel %s.',
@ -164,4 +164,7 @@ return [
'php_info' => 'PHP Informatie',
'upload' => 'Uploaden',
'copied' => 'Gekopieerd naar klembord!',
'vanity_url' => 'Eigen URL',
'image_embeds' => 'Afbeeldingen insluiten',
'show_all_tags' => 'Toon alle tags',
];

View file

@ -38,7 +38,7 @@ return [
'admin' => 'Admin',
'reg_date' => 'Data rejestracji',
'open' => 'Otwórz',
'confirm' => 'Potwierdzenie',
'confirm' => 'Potwierdź',
'confirm_string' => 'Jesteś pewien?',
'installed' => 'Instalacja zakończona pomyślnie!',
'welcome' => 'Witaj, %s!',
@ -162,4 +162,5 @@ return [
'mail.activate_text' => 'Cześć %s!<br>dziękuję za utworzenie konta na %s (<a href="%s">%s</a>), kliknij w poniższy link, aby je aktywować:<br><br><a href="%s">%s</a>',
'image_embeds' => 'Osadź obrazy',
'copied' => 'Skopiowano!',
'vanity_url' => 'Niestandardowy adres URL',
];

View file

@ -26,7 +26,7 @@ return [
'owner' => 'Dono',
'date' => 'Data',
'raw' => 'Mostrar raw',
'download' => 'Transferir',
'download' => 'Descarregar',
'delete' => 'Apagar',
'publish' => 'Publicar',
'hide' => 'Esconder',
@ -54,7 +54,7 @@ return [
'reg_date' => 'Data de registo',
'none' => 'Nenhum',
'open' => 'Abrir',
'confirm' => 'Confirmação',
'confirm' => 'Confirmar',
'confirm_string' => 'Tem a certeza?',
'installed' => 'Instalação completa com sucesso!',
'bad_login' => 'Login inválido.',
@ -161,4 +161,5 @@ return [
'register' => 'Registar',
'settings_saved' => 'Definições de sistema guardadas!',
'image_embeds' => 'Embutir imagens',
'vanity_url' => 'URL personalizado',
];

163
resources/lang/ro.lang.php Normal file
View file

@ -0,0 +1,163 @@
<?php
return [
'login' => 'Autentificare',
'password' => 'Parola',
'lang' => 'Română',
'enforce_language' => 'Aplică limba',
'yes' => 'Da',
'username' => 'Utilizator',
'send' => 'Trimite',
'no_media' => 'Nu s-a gasit media.',
'login.username' => 'Utilizator sau E-Mail',
'no' => 'Nu',
'users' => 'Utilizatori',
'system' => 'Sistem',
'profile' => 'Profil',
'pager.previous' => 'Anterior',
'public.telegram' => 'Distribuie pe Telegram',
'home' => 'Acasa',
'logout' => 'Iesire',
'pager.next' => 'Urmatorul',
'copy_link' => 'Copiaza link-ul',
'public.delete_text' => 'Esti sigur ca doresti sa stergi acest element? Nu il vei putea recupera',
'preview' => 'Previzualizeaza',
'filename' => 'Numele fisierului',
'size' => 'Dimensiune',
'public' => 'Public',
'delete' => 'Elimina',
'publish' => 'Publica',
'hide' => 'Ascunde',
'files' => 'Fisiere',
'orphaned_files' => 'Fisiere Orfane',
'theme' => 'Tema',
'click_to_load' => 'Apasa pentru a incarca…',
'apply' => 'Aplica',
'save' => 'Salveaza',
'used' => 'Folosit',
'php_info' => 'Informatii PHP',
'system_settings' => 'Setari de Sistem',
'user.create' => 'Creaza Utilizator',
'is_active' => 'Este activ',
'is_admin' => 'Este administrator',
'your_profile' => 'Profilul Tau',
'token' => 'Token',
'copy' => 'Copiaza',
'copied' => 'Copiat in clipboard!',
'update' => 'Actualizare',
'edit' => 'Editare',
'client_config' => 'Configuratie Client',
'user_code' => 'Cod Utilizator',
'active' => 'Activ',
'admin' => 'Admin',
'reg_date' => 'Data de Inregistrare',
'none' => 'Nimic',
'open' => 'Deschis',
'confirm' => 'Confirmare',
'bad_login' => 'Date gresite.',
'account_disabled' => 'Contul tau este dezactivat.',
'welcome' => 'Bine ai venit, %s!',
'goodbye' => 'La revedere!',
'email_required' => 'Adresa de e-mail este necesara.',
'email_taken' => 'Adresa de e-mail este deja folosita.',
'username_required' => 'Numele de utilizator este necesar.',
'username_taken' => 'Numele de utilizator este deja folosit.',
'cannot_demote' => 'Nu te poti retrograda.',
'cannot_write_file' => 'Nu se poate scrie in calea de destinatie.',
'deleted_orphans' => 'S-au sters cu succes %d fisiere orfane.',
'switch_to' => 'Comuta la',
'gallery' => 'Galerie',
'order_by' => 'Comanda dupa…',
'time' => 'Timp',
'name' => 'Nume',
'maintenance' => 'Mentenanta',
'clean_orphaned_uploads' => 'Curata Incarcarile Orfane',
'path_not_writable' => 'Nu se poate scrie in calea de iesire.',
'already_latest_version' => 'Ai deja ultima versiune.',
'new_version_available' => 'Versiune noua %s valabila!',
'cannot_retrieve_file' => 'Nu se poate recupera fisierul.',
'file_size_no_match' => 'Fisierul descarcat nu se potriveste cu dimensiunea corecta a fisierului.',
'check_for_updates' => 'Verifica actualizari',
'upgrade' => 'Actualizare',
'updates' => 'Actualizari',
'cancel' => 'Anuleaza',
'auto_set' => 'Seteaza automat',
'default_lang_behavior' => 'XBackBone va incerca in mod implicit sa foloseasca limba browser-ului (limba de rezerva este Engleza).',
'prerelease_channel' => 'Canal Pre-Lansari',
'no_upload_token' => 'Nu ai un token personal de incarcare. (Genereaza unul si incearca din nou.)',
'drop_to_upload' => 'Apasa sau lasa fisierele aici pentru a le incarca.',
'donation' => 'Donatie',
'donate_text' => 'Daca-ti place XBackBone, ia in considerare o donatie pentru a sprijini dezvoltarea lui!',
'custom_head_html' => 'Continut personalizat HTML Head',
'custom_head_html_hint' => 'Acest continut va fi adaugat in tagul <head> pe fiecare pagina.',
'custom_head_set' => 'HTML head personalizat aplicat.',
'remember_me' => 'Nu ma uita',
'please_wait' => 'Te rog sa astepti…',
'dont_close' => 'Nu inchide acest tab inainte de finalizare.',
'register_enabled' => 'Inregistrari active',
'hide_by_default' => 'Ascunde media in mod implicit',
'copy_url_behavior' => 'Modul Copiere URL',
'settings_saved' => 'Setari de sistem salvate!',
'export_data' => 'Exporta data',
'password_recovery' => 'Recupereaza parola',
'no_account' => 'Nu ai un cont?',
'register' => 'Inregistrare',
'register_success' => 'Contul a fost creat, un e-mail de confirmare a fost trimis.',
'default_user_quota' => 'Quota User Implicit',
'max_user_quota' => 'Quota User Maxim',
'invalid_quota' => 'Valori invalide ca si user quota in mod implicit.',
'mail.recover_password' => '%s - Recuperare Parola',
'recover_email_sent' => 'Daca exista, un e-mail pentru recuperare a fost trimis catre contul specificat.',
'account_activated' => 'Cont activat, acum te poti autentifica!',
'quota_enabled' => 'Activeaza user quota',
'password_repeat' => 'Repeta Parola',
'password_match' => 'Parola si parola repetata trebuie sa fie identice.',
'password_restored' => 'Parola resetata.',
'recalculate_user_quota' => 'Recalculeaza user quota de pe disc',
'quota_recalculated' => 'User quota recalculata de pe disc cu succes.',
'used_space' => 'Spatiu Utilizat',
'delete_selected' => 'Sterge cele Selectate',
'delete_all' => 'Sterge Tot',
'clear_account' => 'Curata Contul',
'recaptcha_failed' => 'reCAPTCHA Esuat',
'recaptcha_enabled' => 'reCAPTCHA Activat',
'recaptcha_keys_required' => 'Toate cheile reCAPTCHA sunt necesare.',
'only_recaptcha_v3' => 'Doar reCAPTCHA v3 este suportat.',
'recaptcha_site_key' => 'reCAPTCHA Cheie Site',
'recaptcha_secret_key' => 'reCAPTCHA Cheie Secreta',
'send_notification' => 'Trimite Notificare prin E-mail',
'mail.new_account' => '%s - Crearea Unui Cont Nou',
'mail.new_account_text_with_reset' => 'Hey %s!<br>un nou cont a fost creat pentru tine pe %s (<a href="%s">%s</a>), apasa pe urmatorul link pentru a-ti seta o parola si a-ti activa contul:<br><br><a href="%s">%s</a>',
'user_create_password' => 'Daca este lasat gol, este posibil sa doresti sa trimiti o notificare la adresa de e-mail a utilizatorului.',
'ldap_cant_connect' => 'Nu se poate conecta la serverul de autentificare LDAP.',
'upload_max_file_size' => 'In acest moment dimensiunea maxima pentru un fisier este %s.',
'no_tags' => 'Nu s-au adaugat etichete',
'auto_tagging' => 'Incarcare automata a etichetarii',
'zip_ext_not_loaded' => 'Extensia "zip" necesara nu este incarcata',
'show_changelog' => 'Afiseaza jurnalul cu schimbari',
'image_embeds' => 'Incorporeaza imagini',
'user_updated' => 'Utilizator "%s" actualizat!',
'user_deleted' => 'Utilizator eliminat.',
'owner' => 'Proprietar',
'date' => 'Data',
'upload' => 'Incarca',
'user.edit' => 'Editeaza Utilizator',
'confirm_string' => 'Esti sigur?',
'raw' => 'Afiseaza brut',
'download' => 'Descarca',
'password_required' => 'Parola este necesara.',
'user_created' => 'Utilizator "%s" creat!',
'table' => 'Tabel',
'dotted_search' => 'Cauta…',
'installed' => 'Instalarea s-a completat cu succes!',
'profile_updated' => 'Profil actualizat cu succes!',
'mail.recover_text' => 'Hey %s,<br>o resetare de parola a fost ceruta pentru contul tau. Pentru a completa procedura, apasa pe urmatorul link:<br><br><a href="%s">%s</a><br><br>Daca nu ai fost tu cel care a cerut resetarea, te rog sa ignori acest e-mail.',
'token_not_found' => 'Token-ul specificat nu a fost gasit.',
'cannot_delete' => 'Nu te poti elimina pe tine.',
'maintenance_in_progress' => 'Platforma este in mentenanta, incearca mai tarziu…',
'mail.activate_text' => 'Hey %s!<br>iti multumesc ca ti-ai creat cont pe %s (<a href="%s">%s</a>), apasa pe urmatorul link pentru a-ti activa contul:<br><br><a href="%s">%s</a>',
'danger_zone' => 'Zona Periculoasa',
'mail.activate_account' => '%s - Activare Cont',
'account_media_deleted' => 'Toata media de pe cont a fost eliminata.',
'changelog' => 'Schimbari',
'mail.new_account_text_with_pw' => 'Hey %s!<br>un nou cont a fost creat pentru tine pe %s (<a href="%s">%s</a>), cu urmatoarele date:<br><br>Nume de utilizator: %s<br>Parola: %s<br><br>Apasa pe urmatorul link pentru a te autentifica:<br><a href="%s">%s</a>',
];

View file

@ -45,16 +45,16 @@ return [
'your_profile' => 'Ваш профиль',
'token' => 'Ключ',
'copy' => 'Копировать',
'update' => 'Обновить',
'update' => 'Обновление',
'edit' => 'Редактировать',
'client_config' => 'Конфигурация клиента',
'user_code' => 'Код пользователя',
'active' => 'Активен',
'active' => 'Активный',
'admin' => 'Админ',
'reg_date' => 'Дата регистрации',
'none' => 'Нет',
'none' => 'Никак',
'open' => 'Открыть',
'confirm' => 'Подтверждение',
'confirm' => 'Потвердить',
'confirm_string' => 'Вы уверены?',
'installed' => 'Установка успешно завершена!',
'bad_login' => 'Неверные учетные данные.',
@ -163,5 +163,7 @@ return [
'copied' => 'Скопировано!',
'system_settings' => 'Системные настройки',
'upload' => 'Выгрузить',
'php_info' => 'Инфо о PHP',
'php_info' => 'Информация о PHP',
'image_embeds' => 'Встроенные изображения',
'vanity_url' => 'Пользовательский URL',
];

View file

@ -155,9 +155,11 @@ return [
'cannot_write_file' => 'Destinationens sökväg är ej skrivbar.',
'cannot_demote' => 'Du kan inte degradera dig själv.',
'token_not_found' => 'Den token som angavs hittades inte.',
'confirm' => 'Bekräftelse',
'confirm' => 'Bekräfta',
'copied' => 'Kopierat till urklipp!',
'token' => 'Token',
'orphaned_files' => 'Föräldralösa Filer',
'image_embeds' => 'Inbäddade bilder',
'vanity_url' => 'Anpassad URL',
'show_all_tags' => 'Visa alla taggar',
];

View file

@ -1,51 +1,165 @@
<?php
return [
'orphaned_files' => 'Çöp dosyalar',
'orphaned_files' => 'Sahipsiz Dosyalar',
'files' => 'Dosyalar',
'hide' => 'Gizle',
'publish' => 'yayınla',
'publish' => 'Yayınla',
'delete' => 'Sil',
'upload' => 'yükle',
'download' => 'indir',
'raw' => 'kaynak göster',
'upload' => 'Yükle',
'download' => 'İndir',
'raw' => 'Kaynak göster',
'date' => 'Tarih',
'owner' => 'Sahip',
'public' => 'Herkese açık',
'size' => 'boyut',
'size' => 'Boyut',
'filename' => 'Dosya adı',
'preview' => 'Önizle',
'public.delete_text' => 'Bu öğeyi silmek istediğinizden emin misiniz? geri dönüşü olmayacaktır',
'public.telegram' => 'Telegram\'da paylaş !',
'preview' => 'Ön izleme',
'public.delete_text' => 'Bu ögeyi silmek istediğinizden emin misiniz? Geri dönüşü olmayacaktır',
'public.telegram' => 'Telegram\'da paylaş',
'copy_link' => 'Bağlantıyı kopyala',
'pager.previous' => 'Önceki',
'pager.next' => 'Sonraki',
'logout' => 'Çıkış yap',
'logout' => 'Oturumu kapat',
'profile' => 'Profil',
'system' => 'Sistem',
'users' => 'Kullanıcılar',
'home' => 'Anasayfa',
'home' => 'Ana sayfa',
'username' => 'Kullanıcı adı',
'login' => 'Giriş',
'password' => 'Şifre',
'login' => 'Oturum aç',
'password' => 'Parola',
'login.username' => 'Kullanıcı adı veya e-posta',
'no_media' => 'Medya ortamı bulunamadı.',
'send' => 'Gönder',
'no' => 'Hayır',
'yes' => 'Evet',
'enforce_language' => 'Mevcut dile zorla',
'lang' => 'ingilizce',
'enforce_language' => 'Dili uygula',
'lang' => 'Türkçe',
'copy' => 'Kopyala',
'token' => 'Token',
'token' => 'Belirteç',
'your_profile' => 'Profiliniz',
'is_admin' => 'Yönetici mi',
'is_active' => 'Aktif mi',
'user.edit' => 'Kullanıcı bilgilerini değiştir',
'is_active' => 'Etkin mi',
'user.edit' => 'Kullanıcıyı düzenle',
'user.create' => 'Kullanıcı oluştur',
'system_settings' => 'Sistem Ayarları',
'php_info' => 'PHP Bilgileri',
'used' => 'Kullanılan',
'save' => 'Kaydet',
'apply' => 'Uygula',
'click_to_load' => 'Yüklemek için tıklayınız…',
'click_to_load' => 'Yüklemek için tıklayın…',
'theme' => 'Tema',
'username_taken' => 'Kullanıcı adı zaten alınmış.',
'password_required' => 'Parola gerekli.',
'reg_date' => 'Kayıt Tarihi',
'active' => 'Etkin',
'none' => 'Yok',
'open' => 'Açık',
'admin' => 'Yönetici',
'copied' => 'Panoya kopyalandı!',
'update' => 'Güncelle',
'edit' => 'Düzenle',
'client_config' => 'İstemci Yapılandırması',
'user_code' => 'Kullanıcı kodu',
'confirm_string' => 'Emin misiniz?',
'installed' => 'Kurulum başarıyla tamamlandı!',
'bad_login' => 'Yanlış kimlik bilgileri.',
'account_disabled' => 'Hesabınız devre dışı bırakıldı.',
'welcome' => 'Hoş geldiniz, %s!',
'goodbye' => 'Hoşça kal!',
'token_not_found' => 'Belirtilen belirteç bulunamadı.',
'email_required' => 'E-posta adresi gerekli.',
'email_taken' => 'Bu e-posta adresi zaten kullanılıyor.',
'username_required' => 'Kullanıcı adı gerekli.',
'image_embeds' => 'Gömülü görüntü',
'default_lang_behavior' => 'XBackBone varsayılan olarak tarayıcı diliyle eşleşmeye çalışacaktır (yedek dil İngilizce\'dir).',
'no_upload_token' => 'Kişisel bir yükleme belirteciniz yok. (Bir tane oluşturun ve tekrar deneyin.)',
'copy_url_behavior' => 'URL\'i kopyalama modu',
'delete_all' => 'Hepsini Sil',
'max_user_quota' => 'Azami Kullanıcı Kotası',
'mail.recover_text' => 'Merhaba %s,<br>hesabınız için bir parola sıfırlama istendi. İşlemleri tamamlamak için aşağıdaki bağlantıya tıklayın:<br><br><a href="%s">%s</a><br><br>Parola sıfırlamayı isteyen siz değilseniz bu e-postayı dikkate almayın.',
'clear_account' => 'Hesabı Temizle',
'mail.new_account_text_with_pw' => 'Merhaba %s!<br>, %s (<a href="%s">%s</a>) tarihinde sizin için aşağıdaki kimlik bilgileriyle yeni bir hesap oluşturuldu:<br><br>Kullanıcı adı: %s<br>Parola: %s<br><br>Oturum açma sayfasına gitmek için aşağıdaki bağlantıya tıklayın:<br><a href="%s">%s</a>',
'upload_max_file_size' => 'Azami dosya boyutu şu anda %s.',
'recover_email_sent' => 'Varsa, belirtilen hesaba bir kurtarma e-postası gönderildi.',
'cannot_demote' => 'Kendinizi rütbenizi indiremezsiniz.',
'cannot_write_file' => 'Hedef yol yazılabilir değil.',
'deleted_orphans' => '%d sahipsiz dosya başarıyla silindi.',
'gallery' => 'Galeri',
'table' => 'Tablo',
'dotted_search' => 'Ara…',
'time' => 'Zaman',
'name' => 'Ad',
'maintenance' => 'Bakım',
'path_not_writable' => ıkış yolu yazılabilir değil.',
'already_latest_version' => 'Zaten son sürüme sahipsiniz.',
'new_version_available' => 'Yeni %s sürümü var!',
'cannot_retrieve_file' => 'Dosya alınamıyor.',
'file_size_no_match' => 'İndirilen dosya doğru dosya boyutu ile eşleşmiyor.',
'check_for_updates' => 'Güncellemeleri denetle',
'upgrade' => 'Güncelle',
'updates' => 'Güncellemeler',
'maintenance_in_progress' => 'Platform bakımda, daha sonra tekrar deneyin…',
'cancel' => 'İptal',
'auto_set' => 'Otomatik olarak ayarla',
'prerelease_channel' => 'Ön Yayın Kanalı',
'drop_to_upload' => 'Yüklemek için dosyalarınızı buraya bırakın veya tıklayın.',
'donation' => 'Bağış',
'donate_text' => 'XBackBone\'u beğendiyseniz, geliştirmeyi desteklemek için bir bağış yapmayı düşünün!',
'custom_head_html_hint' => 'Bu içerik her sayfanın <head> etiketine eklenecek.',
'remember_me' => 'Beni hatırla',
'please_wait' => 'Lütfen bekleyin…',
'dont_close' => 'Tamamlanana kadar bu sekmeyi kapatmayın.',
'register_enabled' => 'Kayıtlar etkinleştirildi',
'hide_by_default' => 'Varsayılan olarak medyayı gizle',
'settings_saved' => 'Sistem ayarları kaydedildi!',
'export_data' => 'Veriyi dışarı çıkar',
'password_recovery' => 'Parolayı kurtar',
'no_account' => 'Hesabınız yok mu?',
'register' => 'Kaydol',
'register_success' => 'Hesap oluşturuldu, bir onay e-postası gönderildi.',
'default_user_quota' => 'Varsayılan Kullanıcı Kotası',
'invalid_quota' => 'Varsayılan kullanıcı kotası geçersiz değer.',
'mail.activate_account' => '%s - Hesap Etkinleştirme',
'mail.recover_password' => '%s - Parola Kurtarma',
'account_activated' => 'Hesap etkinleştirildi, artık oturum açabilirsiniz!',
'quota_enabled' => 'Kullanıcı kotasını etkinleştir',
'password_repeat' => 'Parolayı Tekrarla',
'password_match' => 'Parola ve tekrarlanan parola aynı olmalıdır.',
'password_restored' => 'Parola sıfırlandı.',
'recalculate_user_quota' => 'Diskten kullanıcı kotasını yeniden hesapla',
'quota_recalculated' => 'Diskten kullanıcı kotası başarıyla yeniden hesaplandı.',
'used_space' => 'Kullanılan Alan',
'delete_selected' => 'Seçilenleri Sil',
'account_media_deleted' => 'Hesaptaki tüm medya silindi.',
'danger_zone' => 'Tehlike Bölgesi',
'recaptcha_failed' => 'reCAPTCHA Başarısız oldu',
'recaptcha_enabled' => 'reCAPTCHA etkinleştirildi',
'recaptcha_keys_required' => 'Bütün reCAPTCHA anahtarları gerekli.',
'only_recaptcha_v3' => 'Yalnızca reCAPTCHA v3 desteklenmektedir.',
'recaptcha_site_key' => 'reCAPTCHA Site Anahtarı',
'recaptcha_secret_key' => 'reCAPTCHA Gizli Anahtarı',
'send_notification' => 'E-posta Bildirimi Gönder',
'mail.new_account' => '%s - Yeni Hesap Oluşturma',
'mail.new_account_text_with_reset' => 'Merhaba %s!<br>, %s (<a href="%s">%s</a>) tarihinde sizin için yeni bir hesap oluşturuldu, bir parola belirlemek ve etkinleştirmek için aşağıdaki bağlantıya tıklayın:<br><br><a href="%s">%s</a>',
'user_create_password' => 'Boş bırakılırsa, kullanıcı e-posta adresine bir bildirim göndermek isteyebilirsiniz.',
'ldap_cant_connect' => 'LDAP kimlik doğrulama sunucusuna bağlanılamıyor.',
'no_tags' => 'Etiket eklenmedi',
'auto_tagging' => 'Otomatik yükleme etiketleme',
'zip_ext_not_loaded' => 'Gereken "zip" eklentisi yüklenmedi',
'changelog' => 'Değişiklik Günlüğü (Yama Notları)',
'show_changelog' => 'Değişiklik günlüğünü göster',
'confirm' => 'Onayla',
'user_created' => '"%s" kullanıcısı oluşturuldu!',
'user_updated' => '"%s" kullanıcısı güncellendi!',
'profile_updated' => 'Profil başarıyla güncellendi!',
'user_deleted' => 'Kullanıcı silindi.',
'cannot_delete' => 'Kendi kullanıcınızı silemezsiniz.',
'order_by' => 'Sıralama ölçütü…',
'clean_orphaned_uploads' => 'Sahipsiz Yüklemeleri Temizle',
'custom_head_html' => 'Özel HTML başlık içeriği',
'custom_head_set' => 'Özel HTML başlığı uygulandı.',
'mail.activate_text' => 'Merhaba %s!<br>%s (<a href="%s">%s</a>) hesabınızı oluşturduğunuz için teşekkür ederiz, etkinleştirmek için aşağıdaki bağlantıya tıklayın:<br><br><a href="%s">%s</a>',
'switch_to' => 'Şuna geç',
'vanity_url' => 'Özel URL',
'show_all_tags' => 'Tüm etiketleri göster',
];

View file

@ -2,7 +2,7 @@
return [
'yes' => 'Có',
'reg_date' => 'Ngày đăng ký',
'lang' => 'Tiếng Anh',
'lang' => 'Tiếng Việt',
'enforce_language' => 'Cài đặt ngôn ngữ',
'send' => 'Gửi',
'login.username' => 'Tên đăng nhập hoặc Email',
@ -48,7 +48,7 @@ return [
'confirm_string' => 'Bạn có chắc chứ?',
'installed' => 'Đã hoàn thành cài đặt thành công!',
'welcome' => 'Chào mừng vào XBackBone, %s!',
'goodbye' => 'Tạm biệt nhé!',
'goodbye' => 'Gặp lại lần sau nhé!',
'token_not_found' => 'Mã token nhập vào không được tìm thấy.',
'email_taken' => 'Địa chỉ email đã được sử dụng.',
'username_taken' => 'Tên đăng nhập này đã có người sử dụng rồi.',
@ -59,8 +59,8 @@ return [
'cannot_demote' => 'Bạn không thể tự giáng cấp tài khoản người dùng của mình.',
'cannot_write_file' => 'Đường dẫn đích không thể ghi dữ liệu vào được.',
'switch_to' => 'Chuyển về',
'gallery' => 'Chế độ hiển thị theo ô',
'table' => 'Bảng',
'gallery' => 'Xem theo ô',
'table' => 'Xem dạng bảng',
'path_not_writable' => 'Đường dẫn xuất ra không ghi dữ liệu vào được.',
'already_latest_version' => 'Bạn đang dùng phiên bản mới nhất.',
'cannot_retrieve_file' => 'Không thể trích xuất tập tin.',
@ -73,7 +73,7 @@ return [
'no_upload_token' => 'Bạn chưa có một mã tải lên cá nhân. (Hãy tạo một mã và thử lại nhé.)',
'drop_to_upload' => 'Bấm vào hoặc bỏ tập tin của bạn vào đây để tải lên.',
'donate_text' => 'Nếu bạn thích XBackBone, xin hãy quyên góp để hỗ trợ việc phát triển phần mềm cho người dùng!',
'custom_head_html' => 'Nội dng phần đầu dạng HTML tuỳ chỉnh',
'custom_head_html' => 'Nội dung phần đầu dạng HTML tuỳ chỉnh',
'remember_me' => 'Nhớ tên đăng nhập',
'please_wait' => 'Xin chờ một chút…',
'settings_saved' => 'Cài đặt hệ thống đã được lưu!',
@ -133,7 +133,7 @@ return [
'deleted_orphans' => 'Đã xoá %d tập tin không còn thư mục chính thành công.',
'dotted_search' => 'Tìm kiếm…',
'time' => 'Thời gian',
'order_by' => 'Sắp xếp bằng cách…',
'order_by' => 'Sắp xếp theo…',
'new_version_available' => 'Đã có phiên bản %s mới!',
'custom_head_html_hint' => 'Nội dung này sẽ được thêm vào phần thẻ <head> trên mỗi trang.',
'clean_orphaned_uploads' => 'Xoá những phần tải lên với thư mục chính đã bị xoá',

View file

@ -5,7 +5,7 @@ return [
'yes' => '是',
'enforce_language' => '默认语言',
'no' => '否',
'lang' => '英语',
'lang' => '中文(简体)',
'copy_link' => '复制链接',
'size' => '大小',
'download' => '下载',
@ -152,4 +152,13 @@ return [
'no_tags' => '未添加标签',
'mail.recover_text' => 'Hi %s,<br>已为您的帐户请求重置密码。要完成该过程,请单击以下链接:<br><br><a href="%s">%s</a><br><br>如果不是您要求重置密码,请忽略此电子邮件。',
'used' => '使用中',
'recaptcha_site_key' => 'reCAPTCHA 站点密钥',
'only_recaptcha_v3' => '只支持reCAPTCHA v3.',
'vanity_url' => '自定义网址',
'mail.new_account' => '新帐户创建',
'recaptcha_failed' => '验证失败',
'recaptcha_enabled' => '验证码启用',
'recaptcha_secret_key' => 'reCAPTCHA 密钥',
'prerelease_channel' => '预发布渠道',
'recaptcha_keys_required' => '所有 reCAPTCHA 密钥都是必需的。',
];

View file

@ -0,0 +1,19 @@
<div class="modal fade" id="modalVanity" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{ lang('vanity_url') }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<input type="text" class="form-control" id="modalVanity-input" maxlength="64">
</div>
<div class="modal-footer">
<button class="btn btn-primary media-vanity" id="modalVanity-link"><i class="fas fa-check fa-fw"></i> {{ lang('confirm') }}</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">{{ lang('no') }}</button>
</div>
</div>
</div>
</div>

2
resources/templates/dashboard/grid.twig Normal file → Executable file
View file

@ -28,6 +28,7 @@
{% else %}
<a class="btn btn-sm btn-info publish-toggle" data-toggle="tooltip" title="{{ lang('publish') }}" data-id="{{ media.id }}" data-published="{{ media.published }}"><i class="fas fa-check-circle"></i></a>
{% endif %}
<button class="btn btn-info btn-sm public-vanity" data-id="{{ media.id }}" data-toggle="tooltip" title="{{ lang('vanity_url') }}"><i class="fas fa-star"></i></button>
<button type="button" class="btn btn-sm btn-danger media-delete" data-link="{{ route('upload.delete', {'id': media.id}) }}" data-id="{{ media.id }}" data-toggle="tooltip" title="{{ lang('delete') }}">
<i class="fas fa-trash"></i>
</button>
@ -68,4 +69,5 @@
<div class="text-center text-muted"><i>{{ lang('no_media') }}</i></div>
{% endif %}
</div>
{% include 'comp/modal_vanity.twig' %}
{% endblock %}

4
resources/templates/dashboard/list.twig Normal file → Executable file
View file

@ -6,6 +6,7 @@
{% include 'comp/navbar.twig' %}
<div class="container">
{% include 'comp/alert.twig' %}
{% include 'comp/modal_vanity.twig' %}
<div class="card shadow-sm">
<div class="card-body">
@ -32,6 +33,7 @@
{% for media in medias %}
<tr id="media_{{ media.id }}" class="bulk-selector" data-id="{{ media.id }}">
<td class="text-center">
<a href="{{ urlFor('/' ~ media.user_code ~ '/' ~ media.code ~ '.' ~ media.extension) }}" target="_blank" class="text-dark">
{% if isDisplayableImage(media.mimetype) %}
{% if media.username is not null %}
<img src="{{ urlFor('/' ~ media.user_code ~ '/' ~ media.code ~ '.' ~ media.extension ~ '/raw?width=84&height=42') }}" class="img-fluid rounded">
@ -41,6 +43,7 @@
{% else %}
<i class="far {{ mime2font(media.mimetype) }} fa-2x"></i>
{% endif %}
</a>
</td>
<td>
<span class="text-maxlen">{{ media.filename }}</span>
@ -77,6 +80,7 @@
{% else %}
<a href="javascript:void(0)" class="btn btn-sm btn-outline-info publish-toggle" data-toggle="tooltip" title="{{ lang('publish') }}" data-id="{{ media.id }}" data-published="{{ media.published }}"><i class="fas fa-check-circle"></i></a>
{% endif %}
<a href="javascript:void(0)" class="btn btn-sm btn-outline-info public-vanity" data-id="{{ media.id }}" data-toggle="tooltip" title="{{ lang('vanity_url') }}"><i class="fas fa-star"></i></a>
<a href="javascript:void(0)" class="btn btn-sm btn-outline-danger media-delete" data-link="{{ route('upload.delete', {'id': media.id}) }}" data-id="{{ media.id }}" data-toggle="tooltip" title="{{ lang('delete') }}"><i class="fas fa-trash"></i></a>
</div>
</td>

View file

@ -16,6 +16,7 @@
{% if tags is empty %}
<h6 class="dropdown-header">{{ lang('no_tags') }}</h6>
{% else %}
<a class="dropdown-item" href="{{ route('home') }}">{{ lang('show_all_tags') }}</a>
{% for tag in tags %}
<a class="dropdown-item {{ request.queryParams['tag'] == tag.id ? 'active' }}" href="{{ queryParams({'tag': tag.id}) }}" data-id="{{ tag.id }}">{{ tag.name }}</a>
{% endfor %}

View file

@ -0,0 +1,52 @@
#!/bin/bash
create_desktop_entry() {
cat << "EOF" > "$HOME/.local/share/kio/servicemenus/xbackbone-uploader.desktop"
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
Icon=imaga
X-KDE-StartupNotify=false
X-KDE-Priority=TopLevel
MimeType=image/*;
Actions=xbackbone_upload
[Desktop Action xbackbone_upload]
Name=Upload with XBackBone
Exec=sh -c 'RESPONSE="$(curl -s -F "token={{ token }}" -F "upload=@%u" {{ upload_url }})"; if [ "$(echo "${RESPONSE}" | jq -r ".message")" = "OK" ]; then URL="$(echo "${RESPONSE}" | jq -r ".url")"; if [ "${DESKTOP_SESSION}" != "" ]; then echo "${URL}" | xclip -selection c; notify-send "Upload completed!" "${URL}"; else echo "${URL}"; fi; exit 0; else MESSAGE="$(echo "${RESPONSE}" | jq -r ".message")"; if [ $? -ne 0 ]; then echo "Unexpected response:"; echo "${RESPONSE}"; exit 1; fi; if [ "${DESKTOP_SESSION}" != "" ]; then notify-send "Error!" "${MESSAGE}"; else echo "Error! ${MESSAGE}"; fi; exit 1; fi'
Icon=image
EOF
echo "Service menu created!";
}
check() {
ERRORS=0;
if [ ! -x "$(command -v jq)" ]; then
echo "jq command not found.";
ERRORS=1;
fi
if [ ! -x "$(command -v curl)" ]; then
echo "curl command not found.";
ERRORS=1;
fi
if [ ! -x "$(command -v xclip)" ] && [ "${DESKTOP_SESSION}" != "" ]; then
echo "xclip command not found.";
ERRORS=1;
fi
if [ ! -x "$(command -v notify-send)" ] && [ "${DESKTOP_SESSION}" != "" ]; then
echo "notify-send command not found.";
ERRORS=1;
fi
if [ "${ERRORS}" -eq 1 ]; then
exit 1;
fi
}
check
create_desktop_entry

4
resources/templates/upload/public.twig Normal file → Executable file
View file

@ -17,8 +17,6 @@
<meta id="embed-image" property="og:image" content="{{ url }}/raw">
<meta id="discord" name="twitter:image" content="{{ url }}/raw">
<meta id="image-src" name="twitter:image:src" content="{{ url }}/raw">
<meta id="discord" name="twitter:image" content="{{ url }}/raw">
<meta id="image-src" name="twitter:image:src" content="{{ url }}/raw">
{% elseif type == 'video' %}
<meta name="twitter:card" content="player" />
<meta name="twitter:title" content="{{ media.filename }} ({{ media.size }})" />
@ -51,6 +49,7 @@
<a href="{{ url }}/raw" class="btn btn-secondary my-2 my-sm-0" data-toggle="tooltip" title="{{ lang('raw') }}"><i class="fas fa-file-alt fa-lg fa-fw"></i></a>
<a href="{{ url }}/download" class="btn btn-warning my-2 my-sm-0" data-toggle="tooltip" title="{{ lang('download') }}"><i class="fas fa-cloud-download-alt fa-lg fa-fw"></i></a>
{% if session.get('logged') %}
<a href="javascript:void(0)" class="btn btn-info my-2 my-sm-0 public-vanity" data-link="{{ route('upload.vanity', {'id': media.mediaId}) }}" data-id="{{ media.mediaId }}" data-toggle="tooltip" title="{{ lang('vanity') }}"><i class="fas fa-star fa-lg fa-fw"></i></a>
<a href="javascript:void(0)" class="btn btn-danger my-2 my-sm-0 public-delete" data-link="{{ route('upload.delete', {'id': media.mediaId}) }}" data-toggle="tooltip" title="{{ lang('delete') }}"><i class="fas fa-trash fa-lg fa-fw"></i></a>
{% endif %}
</div>
@ -164,4 +163,5 @@
</div>
</div>
{% include 'comp/modal_delete.twig' %}
{% include 'comp/modal_vanity.twig' %}
{% endblock %}

View file

@ -66,7 +66,11 @@
<div class="btn-group">
<a href="{{ route('config.sharex', {'id': user.id}) }}" class="btn btn-lg btn-outline-dark"><i class="fas fa-fw fa-download"></i> ShareX</a>
<a href="javascript:alert('{{ lang('copied') }}')" data-clipboard-text="{{ route('config.screencloud', {'token': user.token}) }}" class="btn btn-lg btn-outline-info btn-clipboard"><i class="fas fa-fw fa-download"></i> Screencloud</a>
<a href="{{ route('config.script', {'id': user.id}) }}" class="btn btn-lg btn-outline-danger"><i class="fas fa-fw fa-download"></i> Linux Script</a>
<a href="{{ route('config.script', {'id': user.id}) }}" type="button" class="btn btn-lg btn-outline-danger"><i class="fas fa-fw fa-download"></i> Linux Script</a>
<button type="button" class="btn btn-outline-danger dropdown-toggle dropdown-toggle-split" id="userDropdown" data-toggle="dropdown" aria-expanded="false"></button>
<ul class="dropdown-menu">
<li><a class="dropdown-item text-danger" href="{{ route('kde_config.script', {'id': user.id}) }}"><i class="fas fa-fw fa-download"></i> KDE Linux Script</a></li>
</ul>
</div>
</div>
</div>

45
src/js/app.js Normal file → Executable file
View file

@ -29,8 +29,10 @@ var app = {
$('.user-delete').click(app.modalDelete);
$('.public-delete').click(app.modalDelete);
$('.public-vanity').click(app.modalVanity);
$('.media-delete').click(app.mediaDelete);
$('.publish-toggle').click(app.publishToggle);
$('.refresh-token').click(app.refreshToken);
$('#themes').mousedown(app.loadThemes);
$('.checkForUpdatesButton').click(app.checkForUpdates);
@ -46,6 +48,10 @@ var app = {
$('.alert').slideUp(500);
});
if ($('.dropzone').length > 0) {
app.initClipboardPasteToUpload();
}
new ClipboardJS('.btn-clipboard');
new Plyr($('#player'), {ratio: '16:9'});
@ -57,6 +63,30 @@ var app = {
$('#modalDelete-link').attr('href', $(this).data('link'));
$('#modalDelete').modal('show');
},
modalVanity: function () {
var id = $(this).data('id');
$('#modalVanity').modal('show');
$('#modalVanity-link').click(function () {
var $callerButton = $(this);
$.post(window.AppConfig.base_url + '/upload/' + id + '/vanity', {vanity: $('#modalVanity-input').val()}, function (responseData, status) {
$callerButton.tooltip('dispose');
$('#modalVanity').modal('hide');
$('#modalVanity-input').val('');
var parsedData = JSON.parse(responseData);
if ($('#media_' + id).find('.btn-group').length > 0) {
$('#media_' + id).find('.btn-group').find('a').each(function (item) {
var oldUrl = $(this).attr('href');
var newUrl = oldUrl.replace(oldUrl.substr(oldUrl.lastIndexOf('/') + 1), parsedData.code.code);
$(this).attr('href', newUrl);
});
} else {
var oldUrl = window.location.href;
var newUrl = oldUrl.replace(oldUrl.substr(oldUrl.lastIndexOf('/') + 1), parsedData.code.code);
window.location.href = newUrl;
}
});
});
},
publishToggle: function () {
var id = $(this).data('id');
var $callerButton = $(this);
@ -226,7 +256,20 @@ var app = {
$('#dropdown-tag-list > a[data-id="' + $tag.data('id') + '"]').remove();
}
});
}
},
initClipboardPasteToUpload: function() {
document.onpaste = function(event){
if (event.clipboardData || event.originalEvent.clipboardData) {
const items = (event.clipboardData || event.originalEvent.clipboardData).items;
items.forEach((item) => {
if (item.kind === 'file') {
// Add the file to the dropzone instance.
Dropzone.forElement('.dropzone').addFile(item.getAsFile());
}
});
}
}
},
};
app.init();

View file

@ -7,7 +7,6 @@ use Tests\TestCase;
class LoginControllerTest extends TestCase
{
/** @test */
public function it_loads_the_login_page()
{