2 Commits

Author SHA1 Message Date
Prasath Mani
5738e8c164 Merge branch 'master' of https://github.com/prasathmani/tinyfilemanager into offline 2023-02-22 07:21:08 +05:30
Prasath Mani
6ae693b1fb Add 0FFL1NE support 2023-02-22 07:18:44 +05:30
22 changed files with 4176 additions and 275 deletions

2
.gitattributes vendored
View File

@@ -1,2 +0,0 @@
*.php text eol=lf
*.json text eol=lf

View File

@@ -13,7 +13,7 @@ jobs:
steps: steps:
- name: Docker meta - name: Docker meta
id: meta id: meta
uses: docker/metadata-action@v4 uses: docker/metadata-action@v3
with: with:
images: | images: |
${{ secrets.DOCKERHUB_USERNAME }}/tinyfilemanager ${{ secrets.DOCKERHUB_USERNAME }}/tinyfilemanager
@@ -21,8 +21,6 @@ jobs:
type=ref,event=branch type=ref,event=branch
type=ref,event=pr type=ref,event=pr
type=semver,pattern={{version}} type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v1 uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx - name: Set up Docker Buildx
@@ -38,4 +36,3 @@ jobs:
with: with:
push: true push: true
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

File diff suppressed because one or more lines are too long

7
assets/css/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

1
assets/css/dropzone.min.css vendored Normal file

File diff suppressed because one or more lines are too long

4
assets/css/font-awesome.min.css vendored Normal file

File diff suppressed because one or more lines are too long

1
assets/css/vs.min.css vendored Normal file
View File

@@ -0,0 +1 @@
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.hljs-comment,.hljs-quote,.hljs-variable{color:green}.hljs-built_in,.hljs-keyword,.hljs-name,.hljs-selector-tag,.hljs-tag{color:#00f}.hljs-addition,.hljs-attribute,.hljs-literal,.hljs-section,.hljs-string,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type{color:#a31515}.hljs-deletion,.hljs-meta,.hljs-selector-attr,.hljs-selector-pseudo{color:#2b91af}.hljs-doctag{color:grey}.hljs-attr{color:red}.hljs-bullet,.hljs-link,.hljs-symbol{color:#00b0e8}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

17
assets/js/ace.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

7
assets/js/bootstrap.bundle.min.js vendored Normal file

File diff suppressed because one or more lines are too long

22
assets/js/datatables.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
assets/js/dropzone.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1361
assets/js/highlight.min.js vendored Normal file

File diff suppressed because one or more lines are too long

2
assets/js/jquery-3.6.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@ $CONFIG = '{"lang":"en","error_reporting":false,"show_hidden":false,"hide_Cols":
/** /**
* H3K | Tiny File Manager V2.5.3 * H3K | Tiny File Manager V2.5.3
* @author CCP Programmers * @author Prasath Mani | CCP Programmers
* @email ccpprogrammers@gmail.com * @email ccpprogrammers@gmail.com
* @github https://github.com/prasathmani/tinyfilemanager * @github https://github.com/prasathmani/tinyfilemanager
* @link https://tinyfilemanager.github.io * @link https://tinyfilemanager.github.io
@@ -77,12 +77,6 @@ $iconv_input_encoding = 'UTF-8';
// Doc - https://www.php.net/manual/en/function.date.php // Doc - https://www.php.net/manual/en/function.date.php
$datetime_format = 'm/d/Y g:i A'; $datetime_format = 'm/d/Y g:i A';
// Path display mode when viewing file information
// 'full' => show full path
// 'relative' => show path relative to root_path
// 'host' => show path on the host
$path_display_mode = 'full';
// Allowed file extensions for create and rename files // Allowed file extensions for create and rename files
// e.g. 'txt,html,css,js' // e.g. 'txt,html,css,js'
$allowed_file_extensions = ''; $allowed_file_extensions = '';
@@ -142,6 +136,20 @@ $ip_blacklist = array(
'::' // non-routable meta ipv6 '::' // non-routable meta ipv6
); );
// External CDN resources that can be used in the HTML (replace for GDPR compliance)
$external = array(
'css-bootstrap' => '<link href="assets/css/bootstrap.min.css" rel="stylesheet">',
'css-dropzone' => '<link href="assets/css/dropzone.min.css" rel="stylesheet">',
'css-font-awesome' => '<link rel="stylesheet" href="assets/css/font-awesome.min.css" crossorigin="anonymous">',
'css-highlightjs' => '<link rel="stylesheet" href="assets/css/' . $highlightjs_style . '.min.css">',
'js-ace' => '<script src="assets/js/ace.js"></script>',
'js-bootstrap' => '<script src="assets/js/bootstrap.bundle.min.js"></script>',
'js-dropzone' => '<script src="assets/js/dropzone.min.js"></script>',
'js-jquery' => '<script src="assets/js/jquery-3.6.1.min.js"></script>',
'js-jquery-datatables' => '<script src="assets/js/dataTables.min.js"></script>',
'js-highlightjs' => '<script src="assets/js/highlight.min.js"></script>',
);
// if User has the external config file, try to use it to override the default config above [config.php] // if User has the external config file, try to use it to override the default config above [config.php]
// sample config - https://tinyfilemanager.github.io/config-sample.txt // sample config - https://tinyfilemanager.github.io/config-sample.txt
$config_file = __DIR__.'/config.php'; $config_file = __DIR__.'/config.php';
@@ -149,22 +157,6 @@ if (is_readable($config_file)) {
@include($config_file); @include($config_file);
} }
// External CDN resources that can be used in the HTML (replace for GDPR compliance)
$external = array(
'css-bootstrap' => '<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">',
'css-dropzone' => '<link href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/min/dropzone.min.css" rel="stylesheet">',
'css-font-awesome' => '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">',
'css-highlightjs' => '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/' . $highlightjs_style . '.min.css">',
'js-ace' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.13.1/ace.js"></script>',
'js-bootstrap' => '<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script>',
'js-dropzone' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.9.3/min/dropzone.min.js"></script>',
'js-jquery' => '<script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>',
'js-jquery-datatables' => '<script src="https://cdn.datatables.net/1.13.1/js/jquery.dataTables.min.js" crossorigin="anonymous" defer></script>',
'js-highlightjs' => '<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"></script>',
'pre-jsdelivr' => '<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin/><link rel="dns-prefetch" href="https://cdn.jsdelivr.net"/>',
'pre-cloudflare' => '<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin/><link rel="dns-prefetch" href="https://cdnjs.cloudflare.com"/>'
);
// --- EDIT BELOW CAREFULLY OR DO NOT EDIT AT ALL --- // --- EDIT BELOW CAREFULLY OR DO NOT EDIT AT ALL ---
// max upload file size // max upload file size
@@ -228,7 +220,7 @@ if (defined('FM_EMBED')) {
mb_regex_encoding('UTF-8'); mb_regex_encoding('UTF-8');
} }
session_cache_limiter('nocache'); // Prevent logout issue after page was cached session_cache_limiter('');
session_name(FM_SESSION_ID ); session_name(FM_SESSION_ID );
function session_error_handling_function($code, $msg, $file, $line) { function session_error_handling_function($code, $msg, $file, $line) {
// Permission denied for default session, try to create a new one // Permission denied for default session, try to create a new one
@@ -243,13 +235,9 @@ if (defined('FM_EMBED')) {
restore_error_handler(); restore_error_handler();
} }
//Generating CSRF Token //Genrating CSRF Token
if (empty($_SESSION['token'])) { if (empty($_SESSION['token'])) {
if (function_exists('random_bytes')) { $_SESSION['token'] = bin2hex(random_bytes(32));
$_SESSION['token'] = bin2hex(random_bytes(32));
} else {
$_SESSION['token'] = bin2hex(openssl_random_pseudo_bytes(32));
}
} }
if (empty($auth_users)) { if (empty($auth_users)) {
@@ -332,11 +320,11 @@ if ($use_auth) {
if (isset($auth_users[$_POST['fm_usr']]) && isset($_POST['fm_pwd']) && password_verify($_POST['fm_pwd'], $auth_users[$_POST['fm_usr']]) && verifyToken($_POST['token'])) { if (isset($auth_users[$_POST['fm_usr']]) && isset($_POST['fm_pwd']) && password_verify($_POST['fm_pwd'], $auth_users[$_POST['fm_usr']]) && verifyToken($_POST['token'])) {
$_SESSION[FM_SESSION_ID]['logged'] = $_POST['fm_usr']; $_SESSION[FM_SESSION_ID]['logged'] = $_POST['fm_usr'];
fm_set_msg(lng('You are logged in')); fm_set_msg(lng('You are logged in'));
fm_redirect(FM_SELF_URL); fm_redirect(FM_ROOT_URL);
} else { } else {
unset($_SESSION[FM_SESSION_ID]['logged']); unset($_SESSION[FM_SESSION_ID]['logged']);
fm_set_msg(lng('Login failed. Invalid username or password'), 'error'); fm_set_msg(lng('Login failed. Invalid username or password'), 'error');
fm_redirect(FM_SELF_URL); fm_redirect(FM_ROOT_URL);
} }
} else { } else {
fm_set_msg(lng('password_hash not supported, Upgrade PHP version'), 'error');; fm_set_msg(lng('password_hash not supported, Upgrade PHP version'), 'error');;
@@ -780,7 +768,7 @@ if (isset($_GET['copy'], $_GET['finish']) && !FM_READONLY) {
$loop_count++; $loop_count++;
} }
if (fm_rcopy($from, $fn_duplicate, False)) { if (fm_rcopy($from, $fn_duplicate, False)) {
fm_set_msg(sprintf('Copied from <b>%s</b> to <b>%s</b>', fm_enc($copy), fm_enc($fn_duplicate))); fm_set_msg(sprintf('Copyied from <b>%s</b> to <b>%s</b>', fm_enc($copy), fm_enc($fn_duplicate)));
} else { } else {
fm_set_msg(sprintf('Error while copying from <b>%s</b> to <b>%s</b>', fm_enc($copy), fm_enc($fn_duplicate)), 'error'); fm_set_msg(sprintf('Error while copying from <b>%s</b> to <b>%s</b>', fm_enc($copy), fm_enc($fn_duplicate)), 'error');
} }
@@ -924,6 +912,7 @@ if (!empty($_FILES) && !FM_READONLY) {
echo json_encode($response); exit(); echo json_encode($response); exit();
} }
$override_file_name = false;
$chunkIndex = $_POST['dzchunkindex']; $chunkIndex = $_POST['dzchunkindex'];
$chunkTotal = $_POST['dztotalchunkcount']; $chunkTotal = $_POST['dztotalchunkcount'];
$fullPathInput = fm_clean_path($_REQUEST['fullpath']); $fullPathInput = fm_clean_path($_REQUEST['fullpath']);
@@ -961,6 +950,11 @@ if (!empty($_FILES) && !FM_READONLY) {
$fullPath = $path . '/' . basename($fullPathInput); $fullPath = $path . '/' . basename($fullPathInput);
$folder = substr($fullPath, 0, strrpos($fullPath, "/")); $folder = substr($fullPath, 0, strrpos($fullPath, "/"));
if(file_exists ($fullPath) && !$override_file_name && !$chunks) {
$ext_1 = $ext ? '.'.$ext : '';
$fullPath = $path . '/' . basename($fullPathInput, $ext_1) .'_'. date('ymdHis'). $ext_1;
}
if (!is_dir($folder)) { if (!is_dir($folder)) {
$old = umask(0); $old = umask(0);
mkdir($folder, 0777, true); mkdir($folder, 0777, true);
@@ -973,20 +967,7 @@ if (!empty($_FILES) && !FM_READONLY) {
if ($out) { if ($out) {
$in = @fopen($tmp_name, "rb"); $in = @fopen($tmp_name, "rb");
if ($in) { if ($in) {
if (PHP_VERSION_ID < 80009) { while ($buff = fread($in, 4096)) { fwrite($out, $buff); }
// workaround https://bugs.php.net/bug.php?id=81145
do {
for (;;) {
$buff = fread($in, 4096);
if ($buff === false || $buff === '') {
break;
}
fwrite($out, $buff);
}
} while (!feof($in));
} else {
stream_copy_to_stream($in, $out);
}
$response = array ( $response = array (
'status' => 'success', 'status' => 'success',
'info' => "file upload successful" 'info' => "file upload successful"
@@ -1014,13 +995,7 @@ if (!empty($_FILES) && !FM_READONLY) {
} }
if ($chunkIndex == $chunkTotal - 1) { if ($chunkIndex == $chunkTotal - 1) {
if (file_exists ($fullPath)) { rename("{$fullPath}.part", $fullPath);
$ext_1 = $ext ? '.'.$ext : '';
$fullPathTarget = $path . '/' . basename($fullPathInput, $ext_1) .'_'. date('ymdHis'). $ext_1;
} else {
$fullPathTarget = $fullPath;
}
rename("{$fullPath}.part", $fullPathTarget);
} }
} else if (move_uploaded_file($tmp_name, $fullPath)) { } else if (move_uploaded_file($tmp_name, $fullPath)) {
@@ -1702,8 +1677,7 @@ if (isset($_GET['view'])) {
<div class="col-12"> <div class="col-12">
<p class="break-word"><b><?php echo lng($view_title) ?> "<?php echo fm_enc(fm_convert_win($file)) ?>"</b></p> <p class="break-word"><b><?php echo lng($view_title) ?> "<?php echo fm_enc(fm_convert_win($file)) ?>"</b></p>
<p class="break-word"> <p class="break-word">
<?php $display_path = fm_get_display_path($file_path); ?> <strong>Full path:</strong> <?php echo fm_enc(fm_convert_win($file_path)) ?><br>
<strong><?php echo $display_path['label']; ?>:</strong> <?php echo $display_path['path']; ?><br>
<strong>File size:</strong> <?php echo ($filesize_raw <= 1000) ? "$filesize_raw bytes" : $filesize; ?><br> <strong>File size:</strong> <?php echo ($filesize_raw <= 1000) ? "$filesize_raw bytes" : $filesize; ?><br>
<strong>MIME-type:</strong> <?php echo $mime_type ?><br> <strong>MIME-type:</strong> <?php echo $mime_type ?><br>
<?php <?php
@@ -1729,7 +1703,7 @@ if (isset($_GET['view'])) {
// Image info // Image info
if ($is_image) { if ($is_image) {
$image_size = getimagesize($file_path); $image_size = getimagesize($file_path);
echo '<strong>'.lng('Image size').':</strong> ' . (isset($image_size[0]) ? $image_size[0] : '0') . ' x ' . (isset($image_size[1]) ? $image_size[1] : '0') . '<br>'; echo lng('Image sizes').': ' . (isset($image_size[0]) ? $image_size[0] : '0') . ' x ' . (isset($image_size[1]) ? $image_size[1] : '0') . '<br>';
} }
// Text info // Text info
if ($is_text) { if ($is_text) {
@@ -1802,7 +1776,7 @@ if (isset($_GET['view'])) {
} elseif ($is_image) { } elseif ($is_image) {
// Image content // Image content
if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg', 'webp', 'avif'))) { if (in_array($ext, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', 'svg', 'webp', 'avif'))) {
echo '<p><input type="checkbox" id="preview-img-zoomCheck"><label for="preview-img-zoomCheck"><img src="' . fm_enc($file_url) . '" alt="image" class="preview-img"></label></p>'; echo '<p><img src="' . fm_enc($file_url) . '" alt="image" class="preview-img-container" class="preview-img"></p>';
} }
} elseif ($is_audio) { } elseif ($is_audio) {
// Audio content // Audio content
@@ -1962,8 +1936,7 @@ if (isset($_GET['chmod']) && !FM_READONLY && !FM_IS_WIN) {
</h6> </h6>
<div class="card-body"> <div class="card-body">
<p class="card-text"> <p class="card-text">
<?php $display_path = fm_get_display_path($file_path); ?> Full path: <?php echo $file_path ?><br>
<?php echo $display_path['label']; ?>: <?php echo $display_path['path']; ?><br>
</p> </p>
<form action="" method="post"> <form action="" method="post">
<input type="hidden" name="p" value="<?php echo fm_enc(FM_PATH) ?>"> <input type="hidden" name="p" value="<?php echo fm_enc(FM_PATH) ?>">
@@ -2076,12 +2049,6 @@ $tableTheme = (FM_THEME == "dark") ? "text-white bg-dark table-dark" : "bg-white
if (function_exists('posix_getpwuid') && function_exists('posix_getgrgid')) { if (function_exists('posix_getpwuid') && function_exists('posix_getgrgid')) {
$owner = posix_getpwuid(fileowner($path . '/' . $f)); $owner = posix_getpwuid(fileowner($path . '/' . $f));
$group = posix_getgrgid(filegroup($path . '/' . $f)); $group = posix_getgrgid(filegroup($path . '/' . $f));
if ($owner === false) {
$owner = array('name' => '?');
}
if ($group === false) {
$group = array('name' => '?');
}
} else { } else {
$owner = array('name' => '?'); $owner = array('name' => '?');
$group = array('name' => '?'); $group = array('name' => '?');
@@ -2135,12 +2102,6 @@ $tableTheme = (FM_THEME == "dark") ? "text-white bg-dark table-dark" : "bg-white
if (function_exists('posix_getpwuid') && function_exists('posix_getgrgid')) { if (function_exists('posix_getpwuid') && function_exists('posix_getgrgid')) {
$owner = posix_getpwuid(fileowner($path . '/' . $f)); $owner = posix_getpwuid(fileowner($path . '/' . $f));
$group = posix_getgrgid(filegroup($path . '/' . $f)); $group = posix_getgrgid(filegroup($path . '/' . $f));
if ($owner === false) {
$owner = array('name' => '?');
}
if ($group === false) {
$group = array('name' => '?');
}
} else { } else {
$owner = array('name' => '?'); $owner = array('name' => '?');
$group = array('name' => '?'); $group = array('name' => '?');
@@ -2249,6 +2210,7 @@ fm_show_footer();
/** /**
* It prints the css/js files into html * It prints the css/js files into html
* @param key The key of the external file to print. * @param key The key of the external file to print.
* @return The value of the key in the array.
*/ */
function print_external($key) { function print_external($key) {
global $external; global $external;
@@ -2533,30 +2495,6 @@ function fm_get_parent_path($path)
return false; return false;
} }
function fm_get_display_path($file_path)
{
global $path_display_mode, $root_path, $root_url;
switch ($path_display_mode) {
case 'relative':
return array(
'label' => 'Path',
'path' => fm_enc(fm_convert_win(str_replace($root_path, '', $file_path)))
);
case 'host':
$relative_path = str_replace($root_path, '', $file_path);
return array(
'label' => 'Host Path',
'path' => fm_enc(fm_convert_win('/' . $root_url . '/' . ltrim(str_replace('\\', '/', $relative_path), '/')))
);
case 'full':
default:
return array(
'label' => 'Full Path',
'path' => fm_enc(fm_convert_win($file_path))
);
}
}
/** /**
* Check file is in exclude list * Check file is in exclude list
* @param string $file * @param string $file
@@ -3567,7 +3505,7 @@ function fm_show_nav_path($path)
<ul class="navbar-nav justify-content-end <?php echo fm_get_theme(); ?>"> <ul class="navbar-nav justify-content-end <?php echo fm_get_theme(); ?>">
<li class="nav-item mr-2"> <li class="nav-item mr-2">
<div class="input-group input-group-sm mr-1" style="margin-top:4px;"> <div class="input-group input-group-sm mr-1" style="margin-top:4px;">
<input type="text" class="form-control" placeholder="<?php echo lng('Search') ?>" aria-label="<?php echo lng('Search') ?>" aria-describedby="search-addon2" id="search-addon"> <input type="text" class="form-control" placeholder="<?php echo lng('Filter') ?>" aria-label="<?php echo lng('Search') ?>" aria-describedby="search-addon2" id="search-addon">
<div class="input-group-append"> <div class="input-group-append">
<span class="input-group-text brl-0 brr-0" id="search-addon2"><i class="fa fa-search"></i></span> <span class="input-group-text brl-0 brr-0" id="search-addon2"><i class="fa fa-search"></i></span>
</div> </div>
@@ -3765,9 +3703,7 @@ $isStickyNavBar = $sticky_navbar ? 'navbar-fixed' : 'navbar-normal';
.message.ok { border-color:green;color:green } .message.ok { border-color:green;color:green }
.message.error { border-color:red;color:red } .message.error { border-color:red;color:red }
.message.alert { border-color:orange;color:orange } .message.alert { border-color:orange;color:orange }
.preview-img { max-width:100%;max-height:80vh;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAKklEQVR42mL5//8/Azbw+PFjrOJMDCSCUQ3EABZc4S0rKzsaSvTTABBgAMyfCMsY4B9iAAAAAElFTkSuQmCC);cursor:zoom-in } .preview-img { max-width:100%;max-height:80vh;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAKklEQVR42mL5//8/Azbw+PFjrOJMDCSCUQ3EABZc4S0rKzsaSvTTABBgAMyfCMsY4B9iAAAAAElFTkSuQmCC) }
input#preview-img-zoomCheck[type=checkbox] { display:none }
input#preview-img-zoomCheck[type=checkbox]:checked ~ label > img { max-width:none;max-height:none;cursor:zoom-out }
.inline-actions > a > i { font-size:1em;margin-left:5px;background:#3785c1;color:#fff;padding:3px 4px;border-radius:3px; } .inline-actions > a > i { font-size:1em;margin-left:5px;background:#3785c1;color:#fff;padding:3px 4px;border-radius:3px; }
.preview-video { position:relative;max-width:100%;height:0;padding-bottom:62.5%;margin-bottom:10px } .preview-video { position:relative;max-width:100%;height:0;padding-bottom:62.5%;margin-bottom:10px }
.preview-video video { position:absolute;width:100%;height:100%;left:0;top:0;background:#000 } .preview-video video { position:absolute;width:100%;height:100%;left:0;top:0;background:#000 }

View File

@@ -8,79 +8,79 @@
"translation": { "translation": {
"AppName": "Tiny File Manager", "AppName": "Tiny File Manager",
"AppTitle": "Titlu aplicație", "AppTitle": "Titlu aplicație",
"Login": "Autentificare", "Login": "Logare",
"Username": "Nume utilizator", "Username": "Nume utilizator",
"Password": "Parolă", "Password": "Parola",
"Logout": "Ieșire", "Logout": "Delogare",
"Move": "Mută", "Move": "Mută",
"Copy": "Copiază", "Copy": "Copiază",
"Save": "Salvează", "Save": "Salvează",
"SelectAll": "Selectează tot", "SelectAll": "Selectează Tot",
"UnSelectAll": "Deselectează tot", "UnSelectAll": "Deselectează Tot",
"File": "Fișier", "File": "Fișier",
"Back": "Înapoi", "Back": "Înapoi",
"Size": "Dimensiune", "Size": "Mărime",
"Perms": "Permisiuni", "Perms": "Permisiuni",
"Modified": "Modificat", "Modified": "Modificat",
"Owner": "Proprietar", "Owner": "Titular",
"Search": "Caută", "Search": "Caută",
"NewItem": "Nou", "NewItem": "Nou",
"Folder": "Dosar", "Folder": "Dosar",
"Delete": "Șterge", "Delete": "Șterge",
"Rename": "Redenumește", "Rename": "Redenumește",
"CopyTo": "Copiază în", "CopyTo": "Copiază În",
"DirectLink": "Legătură directă", "DirectLink": "Link Direct",
"UploadingFiles": "Se încarcă fișiere", "UploadingFiles": "Încarcă Fișiere",
"ChangePermissions": "Schimbă permisiunile", "ChangePermissions": "Schimbă Permisiuni",
"Copying": "Se copiază", "Copying": "Copiază",
"CreateNewItem": "Creează element nou", "CreateNewItem": "Creează Obiect Nou",
"Name": "Denumire", "Name": "Nume",
"AdvancedEditor": "Redactor avansat", "AdvancedEditor": "Editor Avansat",
"RememberMe": "Ține-mă minte", "RememberMe": "Ține-mă Minte",
"Actions": "Acțiuni", "Actions": "Acțiuni",
"Upload": "Încarcă", "Upload": "Încarcă",
"Cancel": "Anulează", "Cancel": "Anulează",
"InvertSelection": "Inversează selecția", "InvertSelection": "Selectare Inversă",
"DestinationFolder": "Dosar destinație", "DestinationFolder": "Dosar Destinație",
"ItemType": "Tip element", "ItemType": "Tip Obiect",
"ItemName": "Denumire element", "ItemName": "Nume obiect",
"CreateNow": "Creează acum", "CreateNow": "Creează Acum",
"Download": "Descarcă", "Download": "Descarcă",
"Open": "Deschide", "Open": "Deschide",
"UnZip": "Decomprimă", "UnZip": "Decomprimă",
"UnZipToFolder": "Decomprimă în dosar", "UnZipToFolder": "Decomprimă în Dosar",
"Edit": "Modifică", "Edit": "Editează",
"NormalEditor": "Redactor standard", "NormalEditor": "Editor Standard",
"BackUp": "Copie de rezervă", "BackUp": "Copie de Siguranță",
"SourceFolder": "Dosar sursă", "SourceFolder": "Dosar Sursă",
"Files": "Fișiere", "Files": "Fișiere",
"Change": "Schimbă", "Change": "Schimbă",
"Settings": "Configurări", "Settings": "Setari",
"Language": "Limba", "Language": "Limba",
"MemoryUsed": "Memorie utilizată", "MemoryUsed": "Memorie Utilizată",
"PartitionSize": "Dimensiune partiție", "PartitionSize": "Dimensiune Partiție",
"ErrorReporting": "Raportare erori", "ErrorReporting": "Raportare de Erori",
"ShowHiddenFiles": "Arată fișiere ascunse", "ShowHiddenFiles": "Arată Fișiere Ascunse",
"Full size": "Dimensiune totală", "Full size": "Dimensiune Totală",
"Help": "Ajutor", "Help": "Ajutor",
"Free of": "Liber din", "Free of": "Liber din",
"Preview": "Previzualizează", "Preview": "Previzualizează",
"Help Documents": "Documentație", "Help Documents": "Documentație",
"Report Issue": "Raportează defect", "Report Issue": "Raportează o Problemă",
"Generate": "Generează", "Generate": "Generează",
"FullSize": "Dimensiune completă", "FullSize": "Mărime Maximă",
"FreeOf": "Liber din", "FreeOf": "Liber din",
"CalculateFolderSize": "Calculează dimensiunea dosarului", "CalculateFolderSize": "Calculează spațiul acupat de dosar",
"ProcessID": "Id. proces", "ProcessID": "Id instanță",
"Created": "Creat", "Created": "Creat",
"HideColumns": "Ascunde coloanele", "HideColumns": "Ascunde Coloanele",
"Folder is empty": "Dosarul este gol", "Folder is empty": "Dosarul este gol",
"Check Latest Version": "Verifică ultima versiune", "Check Latest Version": "Verifică ultima versiune",
"Generate new password hash": "Generează hash nou parolă", "Generate new password hash": "Generează hash nou parolă",
"You are logged in": "Sunteți autentificat", "You are logged in": "Sunteti logat/ă",
"Login failed. Invalid username or password": "Autentificare eșuată. Utilizator sau parolă incorecte", "Login failed. Invalid username or password": "Autentificare eșuată. Credențialele nu sunt valide (utilizator/parolă)",
"password_hash not supported, Upgrade PHP version": "Generare hash parolă nesuportată, actualizați versiunea de PHP", "password_hash not supported, Upgrade PHP version": "Generare hash parolă nesuportată, actualizați interpretorul PHP de pe server",
"Theme": "Tematică", "Theme": "Tema",
"dark": "Întunecată", "dark": "Întunecată",
"light": "Luminoasă" "light": "Luminoasă"
} }
@@ -2556,9 +2556,7 @@
"Select Theme": "Kies thema", "Select Theme": "Kies thema",
"Select Font Size": "Kies fontgrootte", "Select Font Size": "Kies fontgrootte",
"Are you sure want to rename?": "Weet u zeker dat u de naam wilt wijzigen?", "Are you sure want to rename?": "Weet u zeker dat u de naam wilt wijzigen?",
"Are you sure want to": "Verder gaan met", "Are you sure want to": "Verder gaan met"
"dark": "donker",
"light": "licht"
} }
}, },
{ {
@@ -2684,130 +2682,6 @@
"password_hash not supported, Upgrade PHP version": "password_hash er ikke understøttet, opgrader PHP-versionen", "password_hash not supported, Upgrade PHP version": "password_hash er ikke understøttet, opgrader PHP-versionen",
"to": "til" "to": "til"
} }
},
{
"name": "Bengali",
"code": "bn",
"translation": {
"Access denied. IP restriction applicable": "অ্যাক্সেস অস্বীকার করা হয়েছে৷ আইপি সীমাবদ্ধতা প্রযোজ্য",
"Actions": "একশন্স",
"Advanced Search": "উন্নত অনুসন্ধান",
"AdvancedEditor": "উন্নত এডিটর",
"AppTitle": "ফাইল ম্যানেজার",
"Archive not created": "আর্কাইভ তৈরি করা হয়নি",
"Archive not unpacked": "আর্কাইভ প্যাক করা হয়নি",
"Archive unpacked": "আর্কাইভ আনপ্যাক",
"Archive": "আর্কাইভ",
"Back": "পেছনে",
"BackUp": "ব্যাকআপ",
"CalculateFolderSize": "ফোল্ডার সাইজ গণনা করুন",
"Cancel": "বাতিল করুন",
"Change": "পরিবর্তন",
"ChangePermissions": "অনুমতি পরিবর্তন করুন",
"Check Latest Version": "সর্বশেষ সংস্করণ পরীক্ষা করুন",
"Copied from": "থেকে কপি করা হয়েছে",
"Copy": "কপি",
"CopyTo": "কপি করুন",
"Copying": "কপি করা হচ্ছে",
"Create archive?": "নতুন আর্কাইভ তৈরি করুন",
"CreateNewItem": "নতুন আইটেম তৈরি করুন",
"CreateNow": "এখন তৈরি করুন",
"Created": "তৈরি করা হয়েছে",
"Delete selected files and folders?": "নির্বাচিত ফাইল এবং ফোল্ডার মুছবেন?",
"Delete": "মুছে ফেলা",
"Deleted": "মুছে ফেলা হয়েছে",
"DestinationFolder": "গন্তব্য ফোল্ডার",
"DirectLink": "সরাসরি লিঙ্ক",
"Download": "ডাউনলোড",
"Edit": "এডিট",
"Error while copying from": "থেকে কপি করার সময় ত্রুটি",
"Error while deleting items": "থেকে মুছে ফেলার সময় ত্রুটি",
"Error while fetching archive info": "আর্কাইভ তথ্য আনার সময় ত্রুটি",
"Error while moving from": "থেকে সরানোর সময় ত্রুটি",
"Error while renaming from": "থেকে নাম পরিবর্তন করার সময় ত্রুটি",
"ErrorReporting": "এরর রিপোর্টিং",
"Execute": "এক্সিকিউট",
"FILE EXTENSION HAS NOT SUPPORTED": "ফাইল এক্সটেনশন সমর্থিত নয়",
"File Saved Successfully": "ফাইল সফলভাবে সংরক্ষিত হয়েছে৷",
"File extension is not allowed": "ফাইল এক্সটেনশন অনুমোদিত নয়",
"File not found": "ফাইল পাওয়া যায়নি",
"File or folder with this path already exists": "এই পথ সহ ফাইল বা ফোল্ডার ইতিমধ্যেই বিদ্যমান",
"File": "ফাইল",
"Files": "ফাইলস",
"Folder is empty": "ফোল্ডার খালি",
"Folder": "ফোল্ডার",
"FreeOf": "মুক্ত",
"FullSize": "ফুল সাইজ",
"Generate new password hash": "নতুন পাসওয়ার্ড হ্যাশ তৈরি করুন",
"Generate": "উৎপন্ন",
"Group": "গ্রুপ",
"Help Documents": "হেল্প ডকুমেন্টস",
"Help": "সাহায্য",
"HideColumns": "কলাম লুকান",
"Invalid characters in file name": "ফাইলের নামে অবৈধ অক্ষর",
"Invalid characters in file or folder name": "ফাইল বা ফোল্ডার নামের অবৈধ অক্ষর",
"Invalid file or folder name": "অবৈধ ফাইল বা ফোল্ডারের নাম",
"InvertSelection": "উল্টে নির্বাচন করুন",
"ItemName": "আইটেম নাম",
"ItemType": "আইটেম ধরন",
"Language": "ভাষা",
"Login failed. Invalid username or password": "লগইন ব্যর্থ. অবৈধ ব্যবহারকারীর নাম বা পাসওয়ার্ড",
"Login": "লগইন",
"Logout": "লগআউট",
"Modified": "পরিবর্তিত",
"Move": "সরান",
"Moved from": "থেকে সরানো",
"Name": "নাম",
"NewItem": "নতুন আইটেম",
"NormalEditor": "সাধারণ এডিটর",
"Nothing selected": "কিছুই নির্বাচিত নয়",
"Open": "খোলা",
"Operations with archives are not available": "আর্কাইভ সহ অপারেশন পাওয়া যায়নি",
"Other": "অন্যান্য",
"Owner": "মালিক",
"PartitionSize": "পার্টিশনের মাপ",
"Password": "পাসওয়ার্ড",
"Paths must be not equal": "পথ সমান হতে হবে না",
"Permissions changed": "অনুমতি পরিবর্তন",
"Permissions not changed": "অনুমতি পরিবর্তন করা হয়নি",
"Perms": "পারমস",
"Preview": "পূর্বরূপ",
"Read": "পড়ুন",
"Rename": "নাম পরিবর্তন করা হয়েছে",
"Renamed from": "থেকে নাম পরিবর্তন করা হয়েছে",
"Report Issue": "ইস্যুস রিপোর্ট করুন",
"Root path": "রুট পথ",
"Save": "সংরক্ষণ",
"Search file in folder and subfolders...": "ফোল্ডার এবং সাবফোল্ডারে ফাইল অনুসন্ধান করুন...",
"Search": "অনুসন্ধান করুন",
"Select folder": "ফোল্ডার নির্বাচন করুন",
"SelectAll": "সব নির্বাচন করুন",
"Selected files and folder deleted": "নির্বাচিত ফাইল এবং ফোল্ডার মুছে ফেলা হয়েছে",
"Settings": "সেটিংস",
"ShowHiddenFiles": "গোপন ফাইলগুলো দেখুন",
"Size": "সাইজ",
"Source path not defined": "সোর্স পথ সংজ্ঞায়িত করা হয়নি",
"SourceFolder": "সোর্স ফোল্ডার",
"Tar": "টার",
"Theme": "থিম",
"UnSelectAll": "সরিয়ে ফেলুন সব",
"UnZip": "আনজিপ করুন",
"UnZipToFolder": "ফোল্ডারে আনজিপ",
"Upload": "আপলোড",
"UploadingFiles": "ফাইল আপলোড করা হচ্ছে",
"Username": "ব্যবহারকারীর নাম",
"Write": "লিখুন",
"You are logged in": "আপনি লগ ইন করছেন",
"Zip": "জিপ",
"already exists": "আগে থেকেই আছে",
"dark": "ডার্ক",
"light": "লাইট",
"not created": "তৈরি করা হয়নি",
"not deleted": "মুছে ফেলা হয়নি",
"not found!": "পাওয়া যায় নি!",
"password_hash not supported, Upgrade PHP version": "পাসওয়ার্ড_হ্যাশ সমর্থিত নয়, পিএইচপি ভার্সন আপগ্রেড করুন",
"to": "to"
}
} }
] ]
} }