Laravel version update

Laravel version update
This commit is contained in:
Manish Verma
2018-08-06 18:48:58 +05:30
parent d143048413
commit 126fbb0255
13678 changed files with 1031482 additions and 778530 deletions

View File

@@ -0,0 +1,17 @@
<?php
namespace UniSharp\LaravelFilemanager\Controllers;
/**
* Class DemoController.
*/
class DemoController extends LfmController
{
/**
* @return mixed
*/
public function index()
{
return view('laravel-filemanager::demo');
}
}

View File

@@ -0,0 +1,65 @@
<?php
namespace UniSharp\LaravelFilemanager\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Response;
/**
* Class RedirectController.
*/
class RedirectController extends LfmController
{
private $file_path;
public function __construct()
{
$delimiter = config('lfm.url_prefix', config('lfm.prefix')). '/';
$url = urldecode(request()->url());
$external_path = substr($url, strpos($url, $delimiter) + strlen($delimiter));
$this->file_path = base_path(config('lfm.base_directory', 'public') . '/' . $external_path);
}
/**
* Get image from custom directory by route.
*
* @param string $image_path
* @return string
*/
public function getImage($base_path, $image_name)
{
return $this->responseImageOrFile();
}
/**
* Get file from custom directory by route.
*
* @param string $file_name
* @return string
*/
public function getFile(Request $request, $base_path, $file_name)
{
$request->request->add(['type' => 'Files']);
return $this->responseImageOrFile();
}
private function responseImageOrFile()
{
$file_path = $this->file_path;
if (! File::exists($file_path)) {
abort(404);
}
$file = File::get($file_path);
$type = parent::getFileType($file_path);
$response = Response::make($file);
$response->header('Content-Type', $type);
return $response;
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace UniSharp\LaravelFilemanager\Events;
class FolderIsRenaming
{
private $old_path;
private $new_path;
public function __construct($old_path, $new_path)
{
$this->old_path = $old_path;
$this->new_path = $new_path;
}
/**
* @return string
*/
public function oldPath()
{
return $this->old_path;
}
public function newPath()
{
return $this->new_path;
}
}

View File

@@ -1,10 +1,11 @@
<?php
namespace Unisharp\Laravelfilemanager\Events;
namespace UniSharp\LaravelFilemanager\Events;
class FolderWasRenamed
{
private $path;
private $old_path;
private $new_path;
public function __construct($old_path, $new_path)
{
@@ -15,14 +16,13 @@ class FolderWasRenamed
/**
* @return string
*/
public function old_path()
public function oldPath()
{
return $this->old_path;
}
public function new_path()
public function newPath()
{
return $this->new_path;
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace UniSharp\LaravelFilemanager\Events;
class ImageIsCropping
{
private $path;
public function __construct($path)
{
$this->path = $path;
}
/**
* @return string
*/
public function path()
{
return $this->path;
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace UniSharp\LaravelFilemanager\Events;
class ImageIsDeleting
{
private $path;
public function __construct($path)
{
$this->path = $path;
}
/**
* @return string
*/
public function path()
{
return $this->path;
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace UniSharp\LaravelFilemanager\Events;
class ImageIsRenaming
{
private $old_path;
private $new_path;
public function __construct($old_path, $new_path)
{
$this->old_path = $old_path;
$this->new_path = $new_path;
}
/**
* @return string
*/
public function oldPath()
{
return $this->old_path;
}
public function newPath()
{
return $this->new_path;
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace UniSharp\LaravelFilemanager\Events;
class ImageIsResizing
{
private $path;
public function __construct($path)
{
$this->path = $path;
}
/**
* @return string
*/
public function path()
{
return $this->path;
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace UniSharp\LaravelFilemanager\Events;
class ImageIsUploading
{
private $path;
public function __construct($path)
{
$this->path = $path;
}
/**
* @return string
*/
public function path()
{
return $this->path;
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace UniSharp\LaravelFilemanager\Events;
class ImageWasCropped
{
private $path;
public function __construct($path)
{
$this->path = $path;
}
/**
* @return string
*/
public function path()
{
return $this->path;
}
}

View File

@@ -1,6 +1,6 @@
<?php
namespace Unisharp\Laravelfilemanager\Events;
namespace UniSharp\LaravelFilemanager\Events;
class ImageWasDeleted
{
@@ -18,5 +18,4 @@ class ImageWasDeleted
{
return $this->path;
}
}

View File

@@ -1,10 +1,11 @@
<?php
namespace Unisharp\Laravelfilemanager\Events;
namespace UniSharp\LaravelFilemanager\Events;
class ImageWasRenamed
{
private $path;
private $old_path;
private $new_path;
public function __construct($old_path, $new_path)
{
@@ -15,14 +16,13 @@ class ImageWasRenamed
/**
* @return string
*/
public function old_path()
public function oldPath()
{
return $this->old_path;
}
public function new_path()
public function newPath()
{
return $this->new_path;
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace UniSharp\LaravelFilemanager\Events;
class ImageWasResized
{
private $path;
public function __construct($path)
{
$this->path = $path;
}
/**
* @return string
*/
public function path()
{
return $this->path;
}
}

View File

@@ -1,6 +1,6 @@
<?php
namespace Unisharp\Laravelfilemanager\Events;
namespace UniSharp\LaravelFilemanager\Events;
class ImageWasUploaded
{
@@ -18,5 +18,4 @@ class ImageWasUploaded
{
return $this->path;
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace UniSharp\LaravelFilemanager\Handlers;
class ConfigHandler
{
public function userField()
{
return auth()->user()->id;
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Handlers;
class LfmConfigHandler extends \UniSharp\LaravelFilemanager\Handlers\ConfigHandler
{
public function userField()
{
return parent::userField();
}
}

View File

@@ -1,15 +1,15 @@
<?php namespace Unisharp\Laravelfilemanager;
<?php
namespace UniSharp\LaravelFilemanager;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\ServiceProvider;
/**
* Class LaravelFilemanagerServiceProvider
* @package Unisharp\Laravelfilemanager
* Class LaravelFilemanagerServiceProvider.
*/
class LaravelFilemanagerServiceProvider extends ServiceProvider {
class LaravelFilemanagerServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
@@ -17,8 +17,9 @@ class LaravelFilemanagerServiceProvider extends ServiceProvider {
*/
public function boot()
{
if (Config::get('lfm.use_package_routes'))
if (Config::get('lfm.use_package_routes')) {
include __DIR__ . '/routes.php';
}
$this->loadTranslationsFrom(__DIR__.'/lang', 'laravel-filemanager');
@@ -28,13 +29,17 @@ class LaravelFilemanagerServiceProvider extends ServiceProvider {
__DIR__ . '/config/lfm.php' => base_path('config/lfm.php'),
], 'lfm_config');
$this->publishes([
__DIR__.'/../public' => public_path('vendor/laravel-filemanager'),
$this->publishes([
__DIR__.'/../public' => public_path('vendor/laravel-filemanager'),
], 'lfm_public');
$this->publishes([
__DIR__.'/views' => base_path('resources/views/vendor/laravel-filemanager'),
], 'lfm_view');
$this->publishes([
__DIR__.'/Handlers/LfmConfigHandler.php' => base_path('app/Handlers/LfmConfigHandler.php'),
], 'lfm_handler');
}
/**
@@ -44,10 +49,8 @@ class LaravelFilemanagerServiceProvider extends ServiceProvider {
*/
public function register()
{
$this->app['laravel-filemanager'] = $this->app->share(function ()
{
$this->app->singleton('laravel-filemanager', function () {
return true;
});
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace UniSharp\LaravelFilemanager\Middlewares;
use Closure;
use UniSharp\LaravelFilemanager\Traits\LfmHelpers;
class CreateDefaultFolder
{
use LfmHelpers;
public function handle($request, Closure $next)
{
$this->checkDefaultFolderExists('user');
$this->checkDefaultFolderExists('share');
return $next($request);
}
private function checkDefaultFolderExists($type = 'share')
{
if ($type === 'user' && ! $this->allowMultiUser()) {
return;
}
if ($type === 'share' && ! $this->allowShareFolder()) {
return;
}
$path = $this->getRootFolderPath($type);
$this->createFolderByPath($path);
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace UniSharp\LaravelFilemanager\Middlewares;
use Closure;
use UniSharp\LaravelFilemanager\Traits\LfmHelpers;
class MultiUser
{
use LfmHelpers;
public function handle($request, Closure $next)
{
if ($this->allowMultiUser()) {
$previous_dir = $request->input('working_dir');
$working_dir = $this->rootFolder('user');
if ($previous_dir == null) {
$request->merge(compact('working_dir'));
} elseif (! $this->validDir($previous_dir)) {
$request->replace(compact('working_dir'));
}
}
return $next($request);
}
private function validDir($previous_dir)
{
if (starts_with($previous_dir, $this->rootFolder('share'))) {
return true;
}
if (starts_with($previous_dir, $this->rootFolder('user'))) {
return true;
}
return false;
}
}

View File

@@ -0,0 +1,645 @@
<?php
namespace UniSharp\LaravelFilemanager\Traits;
use Illuminate\Support\Facades\File;
use Symfony\Component\HttpFoundation\File\UploadedFile;
trait LfmHelpers
{
/*****************************
*** Path / Url ***
*****************************/
/**
* Directory separator for url.
*
* @var string|null
*/
private $ds = '/';
/**
* Get real path of a thumbnail on the operating system.
*
* @param string|null $image_name File name of original image
* @return string|null
*/
public function getThumbPath($image_name = null)
{
return $this->getCurrentPath($image_name, 'thumb');
}
/**
* Get real path of a file, image, or current working directory on the operating system.
*
* @param string|null $file_name File name of image or file
* @return string|null
*/
public function getCurrentPath($file_name = null, $is_thumb = null)
{
$path = $this->composeSegments('dir', $is_thumb, $file_name);
$path = $this->translateToOsPath($path);
return base_path($path);
}
/**
* Get url of a thumbnail.
*
* @param string|null $image_name File name of original image
* @return string|null
*/
public function getThumbUrl($image_name = null)
{
return $this->getFileUrl($image_name, 'thumb');
}
/**
* Get url of a original image.
*
* @param string|null $image_name File name of original image
* @return string|null
*/
public function getFileUrl($image_name = null, $is_thumb = null)
{
return url($this->composeSegments('url', $is_thumb, $image_name));
}
/**
* Assemble needed config or input to form url or real path of a file, image, or current working directory.
*
* @param string $type Url or dir
* @param bollean $is_thumb Image is a thumbnail or not
* @param string|null $file_name File name of image or file
* @return string|null
*/
private function composeSegments($type, $is_thumb, $file_name)
{
$full_path = implode($this->ds, [
$this->getPathPrefix($type),
$this->getFormatedWorkingDir(),
$this->appendThumbFolderPath($is_thumb),
$file_name,
]);
$full_path = $this->removeDuplicateSlash($full_path);
$full_path = $this->translateToLfmPath($full_path);
return $this->removeLastSlash($full_path);
}
/**
* Assemble base_directory and route prefix config.
*
* @param string $type Url or dir
* @return string
*/
public function getPathPrefix($type)
{
$default_folder_name = 'files';
if ($this->isProcessingImages()) {
$default_folder_name = 'photos';
}
$prefix = config('lfm.' . $this->currentLfmType() . 's_folder_name', $default_folder_name);
$base_directory = config('lfm.base_directory', 'public');
if ($type === 'dir') {
$prefix = $base_directory . '/' . $prefix;
}
if ($type === 'url' && $base_directory !== 'public') {
$prefix = config('lfm.url_prefix', config('lfm.prefix', 'laravel-filemanager')) . '/' . $prefix;
}
return $prefix;
}
/**
* Get current or default working directory.
*
* @return string
*/
private function getFormatedWorkingDir()
{
$working_dir = request('working_dir');
if (empty($working_dir)) {
$default_folder_type = 'share';
if ($this->allowMultiUser()) {
$default_folder_type = 'user';
}
$working_dir = $this->rootFolder($default_folder_type);
}
return $this->removeFirstSlash($working_dir);
}
/**
* Get thumbnail folder name.
*
* @return string|null
*/
private function appendThumbFolderPath($is_thumb)
{
if (! $is_thumb) {
return;
}
$thumb_folder_name = config('lfm.thumb_folder_name');
// if user is inside thumbs folder, there is no need
// to add thumbs substring to the end of url
$in_thumb_folder = str_contains($this->getFormatedWorkingDir(), $this->ds . $thumb_folder_name);
if (! $in_thumb_folder) {
return $thumb_folder_name . $this->ds;
}
}
/**
* Get root working directory.
*
* @param string $type User or share.
* @return string
*/
public function rootFolder($type)
{
if ($type === 'user') {
$folder_name = $this->getUserSlug();
} else {
$folder_name = config('lfm.shared_folder_name');
}
return $this->ds . $folder_name;
}
/**
* Get real path of root working directory on the operating system.
*
* @param string|null $type User or share
* @return string|null
*/
public function getRootFolderPath($type)
{
return base_path($this->getPathPrefix('dir') . $this->rootFolder($type));
}
/**
* Get only the file name.
*
* @param string $file Real path of a file.
* @return string
*/
public function getName($file)
{
$lfm_file_path = $this->getInternalPath($file);
$arr_dir = explode($this->ds, $lfm_file_path);
$file_name = end($arr_dir);
return $file_name;
}
/**
* Get url with only working directory and file name.
*
* @param string $full_path Real path of a file.
* @return string
*/
public function getInternalPath($full_path)
{
$full_path = $this->translateToLfmPath($full_path);
$full_path = $this->translateToUtf8($full_path);
$lfm_dir_start = strpos($full_path, $this->getPathPrefix('dir'));
$working_dir_start = $lfm_dir_start + strlen($this->getPathPrefix('dir'));
$lfm_file_path = $this->ds . substr($full_path, $working_dir_start);
return $this->removeDuplicateSlash($lfm_file_path);
}
/**
* Change directiry separator, from url one to one on current operating system.
*
* @param string $path Url of a file.
* @return string
*/
private function translateToOsPath($path)
{
if ($this->isRunningOnWindows()) {
$path = str_replace($this->ds, '\\', $path);
}
return $path;
}
/**
* Change directiry separator, from one on current operating system to url one.
*
* @param string $path Real path of a file.
* @return string
*/
private function translateToLfmPath($path)
{
if ($this->isRunningOnWindows()) {
$path = str_replace('\\', $this->ds, $path);
}
return $path;
}
/**
* Strip duplicate slashes from url.
*
* @param string $path Any url.
* @return string
*/
private function removeDuplicateSlash($path)
{
return preg_replace('/\\'.$this->ds.'{2,}/', $this->ds, $path);
}
/**
* Strip first slash from url.
*
* @param string $path Any url.
* @return string
*/
private function removeFirstSlash($path)
{
if (starts_with($path, $this->ds)) {
$path = substr($path, 1);
}
return $path;
}
/**
* Strip last slash from url.
*
* @param string $path Any url.
* @return string
*/
private function removeLastSlash($path)
{
// remove last slash
if (ends_with($path, $this->ds)) {
$path = substr($path, 0, -1);
}
return $path;
}
/**
* Translate file name to make it compatible on Windows.
*
* @param string $input Any string.
* @return string
*/
public function translateFromUtf8($input)
{
if ($this->isRunningOnWindows()) {
$input = iconv('UTF-8', mb_detect_encoding($input), $input);
}
return $input;
}
/**
* Translate file name from Windows.
*
* @param string $input Any string.
* @return string
*/
public function translateToUtf8($input)
{
if ($this->isRunningOnWindows()) {
$input = iconv(mb_detect_encoding($input), 'UTF-8', $input);
}
return $input;
}
/****************************
*** Config / Settings ***
****************************/
/**
* Check current lfm type is image or not.
*
* @return bool
*/
public function isProcessingImages()
{
return lcfirst(str_singular(request('type', '') ?: '')) === 'image';
}
/**
* Check current lfm type is file or not.
*
* @return bool
*/
public function isProcessingFiles()
{
return ! $this->isProcessingImages();
}
/**
* Get current lfm type..
*
* @return string
*/
public function currentLfmType()
{
$file_type = 'file';
if ($this->isProcessingImages()) {
$file_type = 'image';
}
return $file_type;
}
/**
* Check if users are allowed to use their private folders.
*
* @return bool
*/
public function allowMultiUser()
{
return config('lfm.allow_multi_user') === true;
}
/**
* Check if users are allowed to use the shared folder.
* This can be disabled only when allowMultiUser() is true.
*
* @return bool
*/
public function allowShareFolder()
{
if (! $this->allowMultiUser()) {
return true;
}
return config('lfm.allow_share_folder') === true;
}
/**
* Overrides settings in php.ini.
*
* @return null
*/
public function applyIniOverrides()
{
if (count(config('lfm.php_ini_overrides')) == 0) {
return;
}
foreach (config('lfm.php_ini_overrides') as $key => $value) {
if ($value && $value != 'false') {
ini_set($key, $value);
}
}
}
/****************************
*** File System ***
****************************/
/**
* Get folders by the given directory.
*
* @param string $path Real path of a directory.
* @return array of objects
*/
public function getDirectories($path)
{
return array_map(function ($directory) {
return $this->objectPresenter($directory);
}, array_filter(File::directories($path), function ($directory) {
return $this->getName($directory) !== config('lfm.thumb_folder_name');
}));
}
/**
* Get files by the given directory.
*
* @param string $path Real path of a directory.
* @return array of objects
*/
public function getFilesWithInfo($path)
{
return array_map(function ($file) {
return $this->objectPresenter($file);
}, File::files($path));
}
/**
* Format a file or folder to object.
*
* @param string $item Real path of a file or directory.
* @return object
*/
public function objectPresenter($item)
{
$item_name = $this->getName($item);
$is_file = is_file($item);
if (! $is_file) {
$file_type = trans('laravel-filemanager::lfm.type-folder');
$icon = 'fa-folder-o';
$thumb_url = asset('vendor/laravel-filemanager/img/folder.png');
} elseif ($this->fileIsImage($item)) {
$file_type = $this->getFileType($item);
$icon = 'fa-image';
$thumb_path = $this->getThumbPath($item_name);
$file_path = $this->getCurrentPath($item_name);
if (! $this->imageShouldHaveThumb($file_path)) {
$thumb_url = $this->getFileUrl($item_name) . '?timestamp=' . filemtime($file_path);
} elseif (File::exists($thumb_path)) {
$thumb_url = $this->getThumbUrl($item_name) . '?timestamp=' . filemtime($thumb_path);
} else {
$thumb_url = $this->getFileUrl($item_name) . '?timestamp=' . filemtime($file_path);
}
} else {
$extension = strtolower(File::extension($item_name));
$file_type = config('lfm.file_type_array.' . $extension) ?: 'File';
$icon = config('lfm.file_icon_array.' . $extension) ?: 'fa-file';
$thumb_url = null;
}
return (object) [
'name' => $item_name,
'url' => $is_file ? $this->getFileUrl($item_name) : '',
'size' => $is_file ? $this->humanFilesize(File::size($item)) : '',
'updated' => filemtime($item),
'path' => $is_file ? '' : $this->getInternalPath($item),
'time' => date('Y-m-d h:i', filemtime($item)),
'type' => $file_type,
'icon' => $icon,
'thumb' => $thumb_url,
'is_file' => $is_file,
];
}
/**
* Create folder if not exist.
*
* @param string $path Real path of a directory.
* @return null
*/
public function createFolderByPath($path)
{
if (! File::exists($path)) {
File::makeDirectory($path, config('lfm.create_folder_mode', 0755), true, true);
}
}
/**
* Check a folder and its subfolders is empty or not.
*
* @param string $directory_path Real path of a directory.
* @return bool
*/
public function directoryIsEmpty($directory_path)
{
return count(File::allFiles($directory_path)) == 0;
}
/**
* Check a file is image or not.
*
* @param mixed $file Real path of a file or instance of UploadedFile.
* @return bool
*/
public function fileIsImage($file)
{
$mime_type = $this->getFileType($file);
return starts_with($mime_type, 'image');
}
/**
* Check thumbnail should be created when the file is uploading.
*
* @param mixed $file Real path of a file or instance of UploadedFile.
* @return bool
*/
public function imageShouldHaveThumb($file)
{
if (! config('lfm.should_create_thumbnails', true)) {
return false;
}
$mime_type = $this->getFileType($file);
return in_array(
$mime_type,
config('lfm.raster_mimetypes', ['image/jpeg', 'image/pjpeg', 'image/png'])
);
}
/**
* Get mime type of a file.
*
* @param mixed $file Real path of a file or instance of UploadedFile.
* @return string
*/
public function getFileType($file)
{
if ($file instanceof UploadedFile) {
$mime_type = $file->getMimeType();
} else {
$mime_type = File::mimeType($file);
}
return $mime_type;
}
/**
* Sort files and directories.
*
* @param mixed $arr_items Array of files or folders or both.
* @param mixed $sort_type Alphabetic or time.
* @return array of object
*/
public function sortFilesAndDirectories($arr_items, $sort_type)
{
if ($sort_type == 'time') {
$key_to_sort = 'updated';
} elseif ($sort_type == 'alphabetic') {
$key_to_sort = 'name';
} else {
$key_to_sort = 'updated';
}
uasort($arr_items, function ($a, $b) use ($key_to_sort) {
return strcmp($a->{$key_to_sort}, $b->{$key_to_sort});
});
return $arr_items;
}
/****************************
*** Miscellaneouses ***
****************************/
/**
* Get the name of private folder of current user.
*
* @return string
*/
public function getUserSlug()
{
if (is_callable(config('lfm.user_field'))) {
$slug_of_user = call_user_func(config('lfm.user_field'));
} elseif (class_exists(config('lfm.user_field'))) {
$config_handler = config('lfm.user_field');
$slug_of_user = app()->make($config_handler)->userField();
} else {
$old_slug_of_user = config('lfm.user_field');
$slug_of_user = empty(auth()->user()) ? '' : auth()->user()->$old_slug_of_user;
}
return $slug_of_user;
}
/**
* Shorter function of getting localized error message..
*
* @param mixed $error_type Key of message in lang file.
* @param mixed $variables Variables the message needs.
* @return string
*/
public function error($error_type, $variables = [])
{
return trans('laravel-filemanager::lfm.error-' . $error_type, $variables);
}
/**
* Make file size readable.
*
* @param int $bytes File size in bytes.
* @param int $decimals Decimals.
* @return string
*/
public function humanFilesize($bytes, $decimals = 2)
{
$size = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
$factor = floor((strlen($bytes) - 1) / 3);
return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . ' ' . @$size[$factor];
}
/**
* Check current operating system is Windows or not.
*
* @return bool
*/
public function isRunningOnWindows()
{
return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
}
}

View File

@@ -1,48 +1,119 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Routing
|--------------------------------------------------------------------------
*/
// Include to pre-defined routes from package or not. Middlewares
'use_package_routes' => true,
// Middlewares which should be applied to all package routes.
// For laravel 5.1 and before, remove 'web' from the array.
'middlewares' => ['web', 'auth'],
// The url to this package. Change it if necessary.
'url_prefix' => 'laravel-filemanager',
/*
|--------------------------------------------------------------------------
| Multi-User Mode
|--------------------------------------------------------------------------
*/
// If true, private folders will be created for each signed-in user.
'allow_multi_user' => true,
// If true, share folder will be created when allow_multi_user is true.
'allow_share_folder' => true,
// Flexible way to customize client folders accessibility
// If you want to customize client folders, publish tag="lfm_handler"
// Then you can rewrite userField function in App\Handler\ConfigHander class
// And set 'user_field' to App\Handler\ConfigHander::class
// Ex: The private folder of user will be named as the user id.
'user_field' => UniSharp\LaravelFilemanager\Handlers\ConfigHandler::class,
/*
|--------------------------------------------------------------------------
| Working Directory
|--------------------------------------------------------------------------
*/
// Which folder to store files in project, fill in 'public', 'resources', 'storage' and so on.
// You should create routes to serve images if it is not set to public.
'base_directory' => 'public',
'images_folder_name' => 'photos',
'files_folder_name' => 'files',
'shared_folder_name' => 'shares',
'thumb_folder_name' => 'thumbs',
/*
|--------------------------------------------------------------------------
| Startup Views
|--------------------------------------------------------------------------
*/
// The default display type for items.
// Supported: "grid", "list"
'images_startup_view' => 'grid',
'files_startup_view' => 'list',
/*
|--------------------------------------------------------------------------
| Upload / Validation
|--------------------------------------------------------------------------
*/
// If true, the uploaded file will be renamed to uniqid() + file extension.
'rename_file' => true,
'rename_file' => false,
// If rename_file set to false and this set to true, then non-alphanumeric characters in filename will be replaced.
'alphanumeric_filename' => true,
// If true, non-alphanumeric folder name will not be allowed.
'alphanumeric_filename' => false,
// If true, non-alphanumeric folder name will be rejected.
'alphanumeric_directory' => false,
'use_package_routes' => true,
// If true, the uploading file's size will be verified for over than max_image_size/max_file_size.
'should_validate_size' => false,
// For laravel 5.2, please set to ['web', 'auth']
'middlewares' => ['auth'],
'max_image_size' => 50000,
'max_file_size' => 50000,
// Add prefix for routes
'prefix' => 'laravel-filemanager',
// Allow multi_user mode or not.
// If true, laravel-filemanager create private folders for each signed-in user.
'allow_multi_user' => true,
// The database field to identify a user.
// When set to 'id', the private folder will be named as the user id.
// NOTE: make sure to use an unique field.
'user_field' => 'id',
'shared_folder_name' => 'shares',
'thumb_folder_name' => 'thumbs',
'images_dir' => 'public/photos/',
'images_url' => '/photos/',
'files_dir' => 'public/files/',
'files_url' => '/files/',
// If true, the uploading file's mime type will be valid in valid_image_mimetypes/valid_file_mimetypes.
'should_validate_mime' => false,
// available since v1.3.0
'valid_image_mimetypes' => [
'image/jpeg',
'image/pjpeg',
'image/png',
'image/gif'
'image/gif',
'image/svg+xml',
],
// If true, image thumbnails would be created during upload
'should_create_thumbnails' => true,
// Create thumbnails automatically only for listed types.
'raster_mimetypes' => [
'image/jpeg',
'image/pjpeg',
'image/png',
],
// permissions to be set when create a new folder or when it creates automatically with thumbnails
'create_folder_mode' => 0755,
// permissions to be set on file upload.
'create_file_mode' => 0644,
// If true, it will attempt to chmod the file after upload
'should_change_file_mode' => true,
// available since v1.3.0
// only when '/laravel-filemanager?type=Files'
'valid_file_mimetypes' => [
@@ -50,12 +121,27 @@ return [
'image/pjpeg',
'image/png',
'image/gif',
'image/svg+xml',
'application/pdf',
'text/plain',
],
// file extensions array, only for showing file information, it won't affect the upload process.
'file_type_array' => [
/*
|--------------------------------------------------------------------------
| Image / Folder Setting
|--------------------------------------------------------------------------
*/
'thumb_img_width' => 200,
'thumb_img_height' => 200,
/*
|--------------------------------------------------------------------------
| File Extension Information
|--------------------------------------------------------------------------
*/
'file_type_array' => [
'pdf' => 'Adobe Acrobat',
'doc' => 'Microsoft Word',
'docx' => 'Microsoft Word',
@@ -70,8 +156,7 @@ return [
'pptx' => 'Microsoft PowerPoint',
],
// file extensions array, only for showing icons, it won't affect the upload process.
'file_icon_array' => [
'file_icon_array' => [
'pdf' => 'fa-file-pdf-o',
'doc' => 'fa-file-word-o',
'docx' => 'fa-file-word-o',
@@ -85,4 +170,20 @@ return [
'ppt' => 'fa-file-powerpoint-o',
'pptx' => 'fa-file-powerpoint-o',
],
/*
|--------------------------------------------------------------------------
| php.ini override
|--------------------------------------------------------------------------
|
| These values override your php.ini settings before uploading files
| Set these to false to ingnore and apply your php.ini settings
|
| Please note that the 'upload_max_filesize' & 'post_max_size'
| directives are not supported.
*/
'php_ini_overrides' => [
'memory_limit' => '256M',
],
];

View File

@@ -1,4 +1,6 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
<?php
namespace UniSharp\LaravelFilemanager\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;

View File

@@ -1,52 +1,69 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
<?php
namespace UniSharp\LaravelFilemanager\Controllers;
use Unisharp\Laravelfilemanager\controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\View;
use Intervention\Image\Facades\Image;
use UniSharp\LaravelFilemanager\Events\ImageIsCropping;
use UniSharp\LaravelFilemanager\Events\ImageWasCropped;
/**
* Class CropController
* @package Unisharp\Laravelfilemanager\controllers
* Class CropController.
*/
class CropController extends LfmController {
class CropController extends LfmController
{
/**
* Show crop page
* Show crop page.
*
* @return mixed
*/
public function getCrop()
{
$working_dir = Input::get('working_dir');
$img = parent::getUrl('directory') . Input::get('img');
$working_dir = request('working_dir');
$img = parent::objectPresenter(parent::getCurrentPath(request('img')));
return View::make('laravel-filemanager::crop')
return view('laravel-filemanager::crop')
->with(compact('working_dir', 'img'));
}
/**
* Crop the image (called via ajax)
* Crop the image (called via ajax).
*/
public function getCropimage()
public function getCropimage($overWrite = true)
{
$image = Input::get('img');
$dataX = Input::get('dataX');
$dataY = Input::get('dataY');
$dataHeight = Input::get('dataHeight');
$dataWidth = Input::get('dataWidth');
$dataX = request('dataX');
$dataY = request('dataY');
$dataHeight = request('dataHeight');
$dataWidth = request('dataWidth');
$image_path = parent::getCurrentPath(request('img'));
$crop_path = $image_path;
if (! $overWrite) {
$fileParts = explode('.', request('img'));
$fileParts[count($fileParts) - 2] = $fileParts[count($fileParts) - 2] . '_cropped_' . time();
$crop_path = parent::getCurrentPath(implode('.', $fileParts));
}
event(new ImageIsCropping($image_path));
// crop image
$tmp_img = Image::make(public_path() . $image);
$tmp_img->crop($dataWidth, $dataHeight, $dataX, $dataY)
->save(public_path() . $image);
Image::make($image_path)
->crop($dataWidth, $dataHeight, $dataX, $dataY)
->save($crop_path);
// make new thumbnail
$thumb_img = Image::make(public_path() . $image);
$thumb_img->fit(200, 200)
->save(parent::getPath('thumb') . parent::getFileName($image)['short']);
if (config('lfm.should_create_thumbnails', true)) {
// create thumb folder
parent::createFolderByPath(parent::getThumbPath());
// make new thumbnail
Image::make($crop_path)
->fit(config('lfm.thumb_img_width', 200), config('lfm.thumb_img_height', 200))
->save(parent::getThumbPath(parent::getName($crop_path)));
}
event(new ImageWasCropped($image_path));
}
public function getNewCropimage()
{
$this->getCropimage(false);
}
}

View File

@@ -1,55 +1,56 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
<?php
namespace UniSharp\LaravelFilemanager\Controllers;
use Illuminate\Support\Facades\Event;
use Unisharp\Laravelfilemanager\controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
use Lang;
use Unisharp\Laravelfilemanager\Events\ImageWasDeleted;
use UniSharp\LaravelFilemanager\Events\ImageIsDeleting;
use UniSharp\LaravelFilemanager\Events\ImageWasDeleted;
/**
* Class CropController
* @package Unisharp\Laravelfilemanager\controllers
* Class CropController.
*/
class DeleteController extends LfmController {
class DeleteController extends LfmController
{
/**
* Delete image and associated thumbnail
* Delete image and associated thumbnail.
*
* @return mixed
*/
public function getDelete()
{
$name_to_delete = Input::get('items');
$name_to_delete = request('items');
$file_path = parent::getPath('directory');
$file_to_delete = parent::getCurrentPath($name_to_delete);
$thumb_to_delete = parent::getThumbPath($name_to_delete);
$file_to_delete = $file_path . $name_to_delete;
$thumb_to_delete = parent::getPath('thumb') . $name_to_delete;
event(new ImageIsDeleting($file_to_delete));
if (!File::exists($file_to_delete)) {
return $file_to_delete . ' not found!';
if (is_null($name_to_delete)) {
return parent::error('folder-name');
}
if (! File::exists($file_to_delete)) {
return parent::error('folder-not-found', ['folder' => $file_to_delete]);
}
if (File::isDirectory($file_to_delete)) {
if (sizeof(File::files($file_to_delete)) != 0) {
return Lang::get('laravel-filemanager::lfm.error-delete');
if (! parent::directoryIsEmpty($file_to_delete)) {
return parent::error('delete-folder');
}
File::deleteDirectory($file_to_delete);
return 'OK';
return parent::$success_response;
}
File::delete($file_to_delete);
Event::fire(new ImageWasDeleted($file_to_delete));
if ('Images' === $this->file_type) {
if (parent::fileIsImage($file_to_delete)) {
File::delete($thumb_to_delete);
}
return 'OK';
}
File::delete($file_to_delete);
event(new ImageWasDeleted($file_to_delete));
return parent::$success_response;
}
}

View File

@@ -1,24 +1,19 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
<?php
use Unisharp\Laravelfilemanager\controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Response;
namespace UniSharp\LaravelFilemanager\Controllers;
/**
* Class DownloadController
* @package Unisharp\Laravelfilemanager\controllers
* Class DownloadController.
*/
class DownloadController extends LfmController {
class DownloadController extends LfmController
{
/**
* Download a file
* Download a file.
*
* @return mixed
*/
public function getDownload()
{
return Response::download(parent::getPath('directory') . Input::get('file'));
return response()->download(parent::getCurrentPath(request('file')));
}
}

View File

@@ -1,61 +1,75 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
<?php
namespace UniSharp\LaravelFilemanager\Controllers;
use Unisharp\Laravelfilemanager\controllers\Controller;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Config;
use Lang;
/**
* Class FolderController
* @package Unisharp\Laravelfilemanager\controllers
* Class FolderController.
*/
class FolderController extends LfmController {
class FolderController extends LfmController
{
/**
* Get list of folders as json to populate treeview
* Get list of folders as json to populate treeview.
*
* @return mixed
*/
public function getFolders()
{
$user_path = parent::getPath('user');
$lfm_user_path = parent::getFileName($user_path);
$user_folders = parent::getDirectories($user_path);
$folder_types = [];
$root_folders = [];
$share_path = parent::getPath('share');
$lfm_share_path = parent::getFileName($share_path);
$shared_folders = parent::getDirectories($share_path);
if (parent::allowMultiUser()) {
$folder_types['user'] = 'root';
}
if (parent::allowShareFolder()) {
$folder_types['share'] = 'shares';
}
foreach ($folder_types as $folder_type => $lang_key) {
$root_folder_path = parent::getRootFolderPath($folder_type);
$children = parent::getDirectories($root_folder_path);
usort($children, function ($a, $b) {
return strcmp($a->name, $b->name);
});
array_push($root_folders, (object) [
'name' => trans('laravel-filemanager::lfm.title-' . $lang_key),
'path' => parent::getInternalPath($root_folder_path),
'children' => $children,
'has_next' => ! ($lang_key == end($folder_types)),
]);
}
return view('laravel-filemanager::tree')
->with('user_dir', $lfm_user_path['long'])
->with('dirs', $user_folders)
->with('share_dir', $lfm_share_path['long'])
->with('shares', $shared_folders);
->with(compact('root_folders'));
}
/**
* Add a new folder
* Add a new folder.
*
* @return mixed
*/
public function getAddfolder()
{
$folder_name = trim(Input::get('name'));
$folder_name = parent::translateFromUtf8(trim(request('name')));
$path = parent::getCurrentPath($folder_name);
$path = parent::getPath('directory') . $folder_name;
if (empty($folder_name)) {
return parent::error('folder-name');
}
if (File::exists($path)) {
return Lang::get('laravel-filemanager::lfm.error-folder-exist');
} elseif (empty($folder_name)) {
return Lang::get('laravel-filemanager::lfm.error-folder-name');
} elseif (Config::get('lfm.alphanumeric_directory') && preg_match('/[^\w-]/i', $folder_name)) {
return Lang::get('laravel-filemanager::lfm.error-folder-alnum');
} else {
File::makeDirectory($path, $mode = 0777, true, true);
return 'OK';
return parent::error('folder-exist');
}
}
if (config('lfm.alphanumeric_directory') && preg_match('/[^\w-]/i', $folder_name)) {
return parent::error('folder-alnum');
}
parent::createFolderByPath($path);
return parent::$success_response;
}
}

View File

@@ -1,90 +1,60 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
<?php
use Unisharp\Laravelfilemanager\controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
namespace UniSharp\LaravelFilemanager\Controllers;
/**
* Class ItemsController
* @package Unisharp\Laravelfilemanager\controllers
* Class ItemsController.
*/
class ItemsController extends LfmController {
class ItemsController extends LfmController
{
/**
* Get the images to load for a selected folder
* Get the images to load for a selected folder.
*
* @return mixed
*/
public function getItems()
{
$type = Input::get('type');
$view = $this->getView();
$path = parent::getPath();
$path = parent::getCurrentPath();
$sort_type = request('sort_type');
$files = File::files($path);
$file_info = $this->getFileInfos($files, $type);
$directories = parent::getDirectories($path);
$thumb_url = parent::getUrl('thumb');
$files = parent::sortFilesAndDirectories(parent::getFilesWithInfo($path), $sort_type);
$directories = parent::sortFilesAndDirectories(parent::getDirectories($path), $sort_type);
return view($view)
->with(compact('type', 'file_info', 'directories', 'thumb_url'));
return [
'html' => (string) view($this->getView())->with([
'files' => $files,
'directories' => $directories,
'items' => array_merge($directories, $files),
]),
'working_dir' => parent::getInternalPath($path),
];
}
private function getFileInfos($files, $type = 'Images')
{
$file_info = [];
foreach ($files as $key => $file) {
$file_name = parent::getFileName($file)['short'];
$file_created = filemtime($file);
$file_size = number_format((File::size($file) / 1024), 2, ".", "");
if ($file_size > 1024) {
$file_size = number_format(($file_size / 1024), 2, ".", "") . " Mb";
} else {
$file_size = $file_size . " Kb";
}
if ($type === 'Images') {
$file_type = File::mimeType($file);
$icon = '';
} else {
$extension = strtolower(File::extension($file_name));
$icon_array = Config::get('lfm.file_icon_array');
$type_array = Config::get('lfm.file_type_array');
if (array_key_exists($extension, $icon_array)) {
$icon = $icon_array[$extension];
$file_type = $type_array[$extension];
} else {
$icon = "fa-file";
$file_type = "File";
}
}
$file_info[$key] = [
'name' => $file_name,
'size' => $file_size,
'created' => $file_created,
'type' => $file_type,
'icon' => $icon,
];
}
return $file_info;
}
private function getView()
{
if (Input::get('show_list') == 1) {
return 'laravel-filemanager::list-view';
} else {
return 'laravel-filemanager::grid-view';
$view_type = request('show_list');
if (null === $view_type) {
return $this->composeViewName($this->getStartupViewFromConfig());
}
$view_mapping = [
'0' => 'grid',
'1' => 'list'
];
return $this->composeViewName($view_mapping[$view_type]);
}
private function composeViewName($view_type = 'grid')
{
return "laravel-filemanager::$view_type-view";
}
private function getStartupViewFromConfig($default = 'grid')
{
$type_key = parent::currentLfmType();
$startup_view = config('lfm.' . $type_key . 's_startup_view', $default);
return $startup_view;
}
}

View File

@@ -1,180 +1,49 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
<?php
use Unisharp\Laravelfilemanager\controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
namespace UniSharp\LaravelFilemanager\Controllers;
use UniSharp\LaravelFilemanager\Traits\LfmHelpers;
/**
* Class LfmController
* @package Unisharp\Laravelfilemanager\controllers
* Class LfmController.
*/
class LfmController extends Controller {
class LfmController extends Controller
{
use LfmHelpers;
/**
* @var
*/
public $file_location = null;
public $dir_location = null;
public $file_type = null;
protected static $success_response = 'OK';
/**
* Constructor
*/
public function __construct()
{
$this->file_type = Input::get('type', 'Images'); // default set to Images.
if ('Images' === $this->file_type) {
$this->dir_location = Config::get('lfm.images_url');
$this->file_location = Config::get('lfm.images_dir');
} elseif ('Files' === $this->file_type) {
$this->dir_location = Config::get('lfm.files_url');
$this->file_location = Config::get('lfm.files_dir');
} else {
throw new \Exception('unexpected type parameter');
}
$this->checkDefaultFolderExists('user');
$this->checkDefaultFolderExists('share');
$this->applyIniOverrides();
}
/**
* Show the filemanager
* Show the filemanager.
*
* @return mixed
*/
public function show()
{
$working_dir = '/';
$working_dir .= (Config::get('lfm.allow_multi_user')) ? $this->getUserSlug() : Config::get('lfm.shared_folder_name');
$extension_not_found = ! extension_loaded('gd') && ! extension_loaded('imagick');
return view('laravel-filemanager::index')
->with('working_dir', $working_dir)
->with('file_type', $this->file_type)
->with('extension_not_found', $extension_not_found);
return view('laravel-filemanager::index');
}
/*****************************
*** Private Functions ***
*****************************/
private function checkDefaultFolderExists($type = 'share')
public function getErrors()
{
if ($type === 'user' && \Config::get('lfm.allow_multi_user') !== true) {
return;
$arr_errors = [];
if (! extension_loaded('gd') && ! extension_loaded('imagick')) {
array_push($arr_errors, trans('laravel-filemanager::lfm.message-extension_not_found'));
}
$path = $this->getPath($type);
$type_key = $this->currentLfmType();
$mine_config = 'lfm.valid_' . $type_key . '_mimetypes';
$config_error = null;
if (!File::exists($path)) {
File::makeDirectory($path, $mode = 0777, true, true);
}
}
private function formatLocation($location, $type = null, $get_thumb = false)
{
if ($type === 'share') {
return $location . Config::get('lfm.shared_folder_name');
} elseif ($type === 'user') {
return $location . $this->getUserSlug();
if (! is_array(config($mine_config))) {
array_push($arr_errors, 'Config : ' . $mine_config . ' is not a valid array.');
}
$working_dir = Input::get('working_dir');
// remove first slash
if (substr($working_dir, 0, 1) === '/') {
$working_dir = substr($working_dir, 1);
}
$location .= $working_dir;
if ($type === 'directory' || $type === 'thumb') {
$location .= '/';
}
//if user is inside thumbs folder there is no need
// to add thumbs substring to the end of $location
$in_thumb_folder = preg_match('/'.Config::get('lfm.thumb_folder_name').'$/i',$working_dir);
if ($type === 'thumb' && !$in_thumb_folder) {
$location .= Config::get('lfm.thumb_folder_name') . '/';
}
return $location;
}
/****************************
*** Shared Functions ***
****************************/
public function getUserSlug()
{
return empty(auth()->user()) ? '' : \Auth::user()->user_field;
}
public function getPath($type = null, $get_thumb = false)
{
$path = base_path() . '/' . $this->file_location;
$path = $this->formatLocation($path, $type);
return $path;
}
public function getUrl($type = null)
{
$url = $this->dir_location;
$url = $this->formatLocation($url, $type);
$url = str_replace('\\','/',$url);
return $url;
}
public function getDirectories($path)
{
$thumb_folder_name = Config::get('lfm.thumb_folder_name');
$all_directories = File::directories($path);
$arr_dir = [];
foreach ($all_directories as $directory) {
$dir_name = $this->getFileName($directory);
if ($dir_name['short'] !== $thumb_folder_name) {
$arr_dir[] = $dir_name;
}
}
return $arr_dir;
}
public function getFileName($file)
{
$lfm_dir_start = strpos($file, $this->file_location);
$working_dir_start = $lfm_dir_start + strlen($this->file_location);
$lfm_file_path = substr($file, $working_dir_start);
$arr_dir = explode('/', $lfm_file_path);
$arr_filename['short'] = end($arr_dir);
$arr_filename['long'] = '/' . $lfm_file_path;
return $arr_filename;
return $arr_errors;
}
}

View File

@@ -1,61 +1,88 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
<?php
namespace UniSharp\LaravelFilemanager\Controllers;
use Illuminate\Support\Facades\Event;
use Unisharp\Laravelfilemanager\controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Str;
use Lang;
use Unisharp\Laravelfilemanager\Events\ImageWasRenamed;
use Unisharp\Laravelfilemanager\Events\FolderWasRenamed;
use UniSharp\LaravelFilemanager\Events\ImageIsRenaming;
use UniSharp\LaravelFilemanager\Events\ImageWasRenamed;
use UniSharp\LaravelFilemanager\Events\FolderIsRenaming;
use UniSharp\LaravelFilemanager\Events\FolderWasRenamed;
/**
* Class RenameController
* @package Unisharp\Laravelfilemanager\controllers
* Class RenameController.
*/
class RenameController extends LfmController {
class RenameController extends LfmController
{
/**
* @return string
*/
public function getRename()
{
$old_name = Input::get('file');
$new_name = trim(Input::get('new_name'));
$file_path = parent::getPath('directory');
$thumb_path = parent::getPath('thumb');
$old_file = $file_path . $old_name;
if (!File::isDirectory($old_file)) {
$extension = File::extension($old_file);
$new_name = str_replace('.' . $extension, '', $new_name) . '.' . $extension;
}
$new_file = $file_path . $new_name;
if (Config::get('lfm.alphanumeric_directory') && preg_match('/[^\w-]/i', $new_name)) {
return Lang::get('laravel-filemanager::lfm.error-folder-alnum');
} elseif (File::exists($new_file)) {
return Lang::get('laravel-filemanager::lfm.error-rename');
}
$old_name = parent::translateFromUtf8(request('file'));
$new_name = parent::translateFromUtf8(trim(request('new_name')));
$old_file = parent::getCurrentPath($old_name);
if (File::isDirectory($old_file)) {
File::move($old_file, $new_file);
Event::fire(new FolderWasRenamed($old_file, $new_file));
return 'OK';
return $this->renameDirectory($old_name, $new_name);
} else {
return $this->renameFile($old_name, $new_name);
}
}
protected function renameDirectory($old_name, $new_name)
{
if (empty($new_name)) {
return parent::error('folder-name');
}
$old_file = parent::getCurrentPath($old_name);
$new_file = parent::getCurrentPath($new_name);
event(new FolderIsRenaming($old_file, $new_file));
if (config('lfm.alphanumeric_directory') && preg_match('/[^\w-]/i', $new_name)) {
return parent::error('folder-alnum');
}
if (File::exists($new_file)) {
return parent::error('rename');
}
File::move($old_file, $new_file);
event(new FolderWasRenamed($old_file, $new_file));
if ('Images' === $this->file_type) {
File::move($thumb_path . $old_name, $thumb_path . $new_name);
return parent::$success_response;
}
protected function renameFile($old_name, $new_name)
{
if (empty($new_name)) {
return parent::error('file-name');
}
Event::fire(new ImageWasRenamed($old_file, $new_file));
$old_file = parent::getCurrentPath($old_name);
$extension = File::extension($old_file);
$new_file = parent::getCurrentPath(basename($new_name, ".$extension") . ".$extension");
return 'OK';
if (config('lfm.alphanumeric_filename') && preg_match('/[^\w-.]/i', $new_name)) {
return parent::error('file-alnum');
}
// TODO Should be "FileIsRenaming"
event(new ImageIsRenaming($old_file, $new_file));
if (File::exists($new_file)) {
return parent::error('rename');
}
if (parent::fileIsImage($old_file) && File::exists(parent::getThumbPath($old_name))) {
File::move(parent::getThumbPath($old_name), parent::getThumbPath($new_name));
}
File::move($old_file, $new_file);
// TODO Should be "FileWasRenamed"
event(new ImageWasRenamed($old_file, $new_file));
return parent::$success_response;
}
}

View File

@@ -1,52 +1,52 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
<?php
namespace UniSharp\LaravelFilemanager\Controllers;
use Unisharp\Laravelfilemanager\controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\View;
use Intervention\Image\Facades\Image;
use UniSharp\LaravelFilemanager\Events\ImageIsResizing;
use UniSharp\LaravelFilemanager\Events\ImageWasResized;
/**
* Class ResizeController
* @package Unisharp\Laravelfilemanager\controllers
* Class ResizeController.
*/
class ResizeController extends LfmController {
class ResizeController extends LfmController
{
/**
* Dipsplay image for resizing
* Dipsplay image for resizing.
*
* @return mixed
*/
public function getResize()
{
$ratio = 1.0;
$image = Input::get('img');
$image = request('img');
$path_to_image = parent::getPath('directory') . $image;
$original_width = Image::make($path_to_image)->width();
$original_height = Image::make($path_to_image)->height();
$original_image = Image::make(parent::getCurrentPath($image));
$original_width = $original_image->width();
$original_height = $original_image->height();
$scaled = false;
// FIXME size should be configurable
if ($original_width > 600) {
$ratio = 600 / $original_width;
$width = $original_width * $ratio;
$ratio = 600 / $original_width;
$width = $original_width * $ratio;
$height = $original_height * $ratio;
$scaled = true;
} else {
$width = $original_width;
$width = $original_width;
$height = $original_height;
}
if ($height > 400) {
$ratio = 400 / $original_height;
$width = $original_width * $ratio;
$ratio = 400 / $original_height;
$width = $original_width * $ratio;
$height = $original_height * $ratio;
$scaled = true;
}
return View::make('laravel-filemanager::resize')
->with('img', parent::getUrl('directory') . $image)
return view('laravel-filemanager::resize')
->with('img', parent::objectPresenter(parent::getCurrentPath($image)))
->with('height', number_format($height, 0))
->with('width', $width)
->with('original_height', $original_height)
@@ -55,23 +55,18 @@ class ResizeController extends LfmController {
->with('ratio', $ratio);
}
public function performResize()
{
$img = Input::get('img');
$dataX = Input::get('dataX');
$dataY = Input::get('dataY');
$height = Input::get('dataHeight');
$width = Input::get('dataWidth');
$dataX = request('dataX');
$dataY = request('dataY');
$height = request('dataHeight');
$width = request('dataWidth');
$image_path = parent::getCurrentPath(request('img'));
try {
Image::make(public_path() . $img)->resize($width, $height)->save();
return "OK";
} catch (Exception $e) {
return "width : " . $width . " height: " . $height;
return $e;
}
event(new ImageIsResizing($image_path));
Image::make($image_path)->resize($width, $height)->save();
event(new ImageWasResized($image_path));
return parent::$success_response;
}
}

View File

@@ -1,144 +1,204 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
<?php
namespace UniSharp\LaravelFilemanager\Controllers;
use Illuminate\Support\Facades\Event;
use Unisharp\Laravelfilemanager\controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Str;
use Lang;
use Illuminate\Support\Facades\Log;
use Intervention\Image\Facades\Image;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Unisharp\Laravelfilemanager\Events\ImageWasUploaded;
use UniSharp\LaravelFilemanager\Events\ImageIsUploading;
use UniSharp\LaravelFilemanager\Events\ImageWasUploaded;
/**
* Class UploadController
* @package Unisharp\Laravelfilemanager\controllers
* Class UploadController.
*/
class UploadController extends LfmController {
class UploadController extends LfmController
{
protected $errors;
private $default_file_types = ['application/pdf'];
private $default_image_types = ['image/jpeg', 'image/png', 'image/gif'];
public function __construct()
{
parent::__construct();
$this->errors = [];
}
/**
* Upload an image/file and (for images) create thumbnail
* Upload files
*
* @param UploadRequest $request
* @param void
* @return string
*/
public function upload()
{
$files = request()->file('upload');
// single file
if (!is_array($files)) {
$file = $files;
if (!$this->fileIsValid($file)) {
return $this->errors;
}
$filename = $this->proceedSingleUpload($file);
if ($filename === false) {
return $this->errors;
}
// upload via ckeditor 'Upload' tab
return $this->useFile($filename);
}
// Multiple files
foreach ($files as $file) {
if (!$this->fileIsValid($file)) {
continue;
}
$this->proceedSingleUpload($file);
}
return count($this->errors) > 0 ? $this->errors : parent::$success_response;
}
private function proceedSingleUpload($file)
{
$new_filename = $this->getNewName($file);
$new_file_path = parent::getCurrentPath($new_filename);
event(new ImageIsUploading($new_file_path));
try {
$res = $this->uploadValidator();
if (true !== $res) {
return Lang::get('laravel-filemanager::lfm.error-invalid');
if (parent::fileIsImage($file) && !in_array($file->getMimeType(), ['image/gif', 'image/svg+xml'])) {
// Handle image rotation
Image::make($file->getRealPath())
->orientate() //Apply orientation from exif data
->save($new_file_path);
// Generate a thumbnail
if (parent::imageShouldHaveThumb($file)) {
$this->makeThumb($new_filename);
}
} else {
// Create (move) the file
File::move($file->getRealPath(), $new_file_path);
}
if (config('lfm.should_change_file_mode', true)) {
chmod($new_file_path, config('lfm.create_file_mode', 0644));
}
} catch (\Exception $e) {
return $e->getMessage();
array_push($this->errors, parent::error('invalid'));
Log::error($e->getMessage(), [
'file' => $e->getFile(),
'line' => $e->getLine(),
'trace' => $e->getTraceAsString()
]);
return false;
}
$file = Input::file('upload');
$new_filename = $this->getNewName($file);
$dest_path = parent::getPath('directory');
if (File::exists($dest_path . $new_filename)) {
return Lang::get('laravel-filemanager::lfm.error-file-exist');
}
$file->move($dest_path, $new_filename);
if ('Images' === $this->file_type) {
$this->makeThumb($dest_path, $new_filename);
}
Event::fire(new ImageWasUploaded(realpath($dest_path.'/'.$new_filename)));
// upload via ckeditor 'Upload' tab
if (!Input::has('show_list')) {
return $this->useFile($new_filename);
}
return 'OK';
}
private function uploadValidator()
{
// when uploading a file with the POST named "upload"
$expected_file_type = $this->file_type;
$is_valid = false;
$file = Input::file('upload');
if (empty($file)) {
throw new \Exception(Lang::get('laravel-filemanager::lfm.error-file-empty'));
} elseif (!$file instanceof UploadedFile) {
throw new \Exception(Lang::get('laravel-filemanager::lfm.error-instance'));
} elseif ($file->getError() == UPLOAD_ERR_INI_SIZE) {
$max_size = ini_get('upload_max_filesize');
throw new \Exception(Lang::get('laravel-filemanager::lfm.error-file-size', ['max' => $max_size]));
} elseif ($file->getError() != UPLOAD_ERR_OK) {
dd('File failed to upload. Error code: ' . $file->getError());
}
$mimetype = $file->getMimeType();
if ($expected_file_type === 'Files') {
$config_name = 'lfm.valid_file_mimetypes';
$valid_mimetypes = Config::get($config_name, $this->default_file_types);
} else {
$config_name = 'lfm.valid_image_mimetypes';
$valid_mimetypes = Config::get($config_name, $this->default_image_types);
}
if (!is_array($valid_mimetypes)) {
throw new \Exception('Config : ' . $config_name . ' is not set correctly');
}
if (in_array($mimetype, $valid_mimetypes)) {
$is_valid = true;
}
if (false === $is_valid) {
throw new \Exception(Lang::get('laravel-filemanager::lfm.error-mime') . $mimetype);
}
return $is_valid;
}
private function getNewName($file)
{
$new_filename = trim(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME));
if (Config::get('lfm.rename_file') === true) {
$new_filename = uniqid();
} elseif (Config::get('lfm.alphanumeric_filename') === true) {
$new_filename = preg_replace('/[^A-Za-z0-9\-\']/', '_', $new_filename);
}
$new_filename = $new_filename . '.' . $file->getClientOriginalExtension();
// TODO should be "FileWasUploaded"
event(new ImageWasUploaded(realpath($new_file_path)));
return $new_filename;
}
private function makeThumb($dest_path, $new_filename)
private function fileIsValid($file)
{
$thumb_folder_name = Config::get('lfm.thumb_folder_name');
if (!File::exists($dest_path . $thumb_folder_name)) {
File::makeDirectory($dest_path . $thumb_folder_name);
if (empty($file)) {
array_push($this->errors, parent::error('file-empty'));
return false;
}
$thumb_img = Image::make($dest_path . $new_filename);
$thumb_img->fit(200, 200)
->save($dest_path . $thumb_folder_name . '/' . $new_filename);
unset($thumb_img);
if (! $file instanceof UploadedFile) {
array_push($this->errors, parent::error('instance'));
return false;
}
if ($file->getError() == UPLOAD_ERR_INI_SIZE) {
$max_size = ini_get('upload_max_filesize');
array_push($this->errors, parent::error('file-size', ['max' => $max_size]));
return false;
}
if ($file->getError() != UPLOAD_ERR_OK) {
$msg = 'File failed to upload. Error code: ' . $file->getError();
array_push($this->errors, $msg);
return false;
}
$new_filename = $this->getNewName($file);
if (File::exists(parent::getCurrentPath($new_filename))) {
array_push($this->errors, parent::error('file-exist'));
return false;
}
$mimetype = $file->getMimeType();
// Bytes to KB
$file_size = $file->getSize() / 1024;
$type_key = parent::currentLfmType();
if (config('lfm.should_validate_mime', false)) {
$mine_config = 'lfm.valid_' . $type_key . '_mimetypes';
$valid_mimetypes = config($mine_config, []);
if (false === in_array($mimetype, $valid_mimetypes)) {
array_push($this->errors, parent::error('mime') . $mimetype);
return false;
}
}
if (config('lfm.should_validate_size', false)) {
$max_size = config('lfm.max_' . $type_key . '_size', 0);
if ($file_size > $max_size) {
array_push($this->errors, parent::error('size'));
return false;
}
}
return true;
}
protected function replaceInsecureSuffix($name)
{
return preg_replace("/\.php$/i", '', $name);
}
private function getNewName($file)
{
$new_filename = parent::translateFromUtf8(trim($this->pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME)));
if (config('lfm.rename_file') === true) {
$new_filename = uniqid();
} elseif (config('lfm.alphanumeric_filename') === true) {
$new_filename = preg_replace('/[^A-Za-z0-9\-\']/', '_', $new_filename);
}
return $new_filename . $this->replaceInsecureSuffix('.' . $file->getClientOriginalExtension());
}
private function makeThumb($new_filename)
{
// create thumb folder
parent::createFolderByPath(parent::getThumbPath());
// create thumb image
Image::make(parent::getCurrentPath($new_filename))
->fit(config('lfm.thumb_img_width', 200), config('lfm.thumb_img_height', 200))
->save(parent::getThumbPath($new_filename));
}
private function useFile($new_filename)
{
$file = parent::getUrl('directory') . $new_filename;
$file = parent::getFileUrl($new_filename);
$responseType = request()->input('responseType');
if ($responseType && $responseType == 'json') {
return [
"uploaded" => 1,
"fileName" => $new_filename,
"url" => $file,
];
}
return "<script type='text/javascript'>
@@ -159,4 +219,18 @@ class UploadController extends LfmController {
</script>";
}
private function pathinfo($path, $options = null)
{
$path = urlencode($path);
$parts = is_null($options) ? pathinfo($path) : pathinfo($path, $options);
if (is_array($parts)) {
foreach ($parts as $field => $value) {
$parts[$field] = urldecode($value);
}
} else {
$parts = urldecode($parts);
}
return $parts;
}
}

View File

@@ -39,7 +39,7 @@ return [
'error-file-empty' => 'يجب اختيارملف!',
'error-file-exist' => 'يوجد ملف سابق بنفس الاسم!',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-delete' => 'لا يمكن حذف هذا المجلد لانه غير فارغ!',
'error-delete-folder'=> 'لا يمكن حذف هذا المجلد لانه غير فارغ!',
'error-folder-name' => 'اسم المجلد لا يمكن ان يكون فاغ!',
'error-folder-exist'=> 'اسم المجلد مستخدما مسبقا!',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',

View File

@@ -39,7 +39,7 @@ return [
'error-file-empty' => 'Трябва да изберете файл !',
'error-file-exist' => 'Файл с това име вече съществува!',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-delete' => 'Не можете да изтриете тази папка, защото не е празна!',
'error-delete-folder'=> 'Не можете да изтриете тази папка, защото не е празна!',
'error-folder-name' => 'Моля изберете име на папката',
'error-folder-exist'=> 'Папка с това име вече съществува!',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',

View File

@@ -0,0 +1,72 @@
<?php
return [
'nav-back' => 'Zurück',
'nav-new' => 'Neuer Ordner',
'nav-upload' => 'Hochladen',
'nav-thumbnails' => 'Thumbnails',
'nav-list' => 'List',
'menu-rename' => 'Umbenennen',
'menu-delete' => 'Löschen',
'menu-view' => 'Ansehen',
'menu-download' => 'Download',
'menu-resize' => 'Größe Ändern',
'menu-crop' => 'Zuschneiden',
'title-page' => 'File Manager',
'title-panel' => 'FileManager',
'title-upload' => 'Datei hochladen',
'title-view' => 'Datei ansehen',
'title-root' => 'Dateien',
'title-shares' => 'Gemeinsame Dateien',
'title-item' => 'Item',
'title-size' => 'Größe',
'title-type' => 'Typ',
'title-modified' => 'Geändert',
'title-action' => 'Aktion',
'type-folder' => 'Ordner',
'message-empty' => 'Ordner ist leer.',
'message-choose' => 'Datei wählen',
'message-delete' => 'Sind Sie sicher, dass Sie dieses Einzelteil löschen möchten?',
'message-name' => 'Ordnernamen:',
'message-rename' => 'Umbenennen in:',
'message-extension_not_found' => 'Installieren Sie gd oder imagick Erweiterung um Bilder zuzuschneiden, Größe ändern und Thumbnails zu erstellen.',
'error-rename' => 'Dateiname wird bereits verwendet!',
'error-file-empty' => 'Sie müssen eine Datei auswählen!',
'error-file-exist' => 'Eine Datei mit diesem Namen existiert bereits!',
'error-file-size' => 'Dateigröße überschreitet das Serverlimit! (Maximale Größe: :max)',
'error-delete-folder' => 'Sie können diesen Ordner nicht löschen, da er nicht leer ist!',
'error-folder-name' => 'Der Ordnername darf nicht leer sein!',
'error-folder-exist' => 'Ein Ordner mit diesem Namen ist bereits vorhanden!',
'error-folder-alnum' => 'Nur alphanumerische Ordnernamen sind erlaubt!',
'error-mime' => 'Unerwarteter Mimetyp:',
'error-instance' => 'Die hochgeladene Datei sollte eine Instanz von UploadedFile sein',
'error-invalid' => 'Ungültige Upload-Anfrage',
'error-other' => 'Ein Fehler ist aufgetreten: ',
'error-too-large' => 'Angeforderter Wert zu groß!',
'error-cannotupload' => 'Sie sind nicht berechtigt, die Datei hochzuladen.',
'error-cannotdelete' => 'Sie sind nicht berechtigt, neue Ordner / Dateien zu löschen',
'error-cannotnewdirectory' => 'Sie sind nicht berechtigt, neue Ordner zu erstellen',
'error-cannotrename' => 'Sie sind nicht berechtigt, Ordner / Dateien umzubenennen',
'error-cannotresize' => 'Sie sind nicht berechtigt, die Dateigröße zu ändern',
'btn-upload' => 'Datei hochladen',
'btn-uploading' => 'Hochladen...',
'btn-close' => 'Schließen',
'btn-crop' => 'Zuschneiden',
'btn-cancel' => 'Stornieren',
'btn-resize' => 'Größe ändern',
'resize-ratio' => 'Verhältnis:',
'resize-scaled' => 'Bild skaliert:',
'resize-true' => 'Ja',
'resize-old-height' => 'Original Höhe:',
'resize-old-width' => 'Original Breite:',
'resize-new-height' => 'Höhe:',
'resize-new-width' => 'Breite:',
'locale-bootbox' => 'de',
];

View File

@@ -0,0 +1,69 @@
<?php
return [
'nav-back' => 'Επιστροφή',
'nav-new' => 'Νέος φάκελος',
'nav-upload' => 'Ανέβασμα',
'nav-thumbnails' => 'Εικονίδια',
'nav-list' => 'Λίστα',
'menu-rename' => 'Μετονομασία',
'menu-delete' => 'Διαγραφή',
'menu-view' => 'Επισκόπηση',
'menu-download' => 'Κατέβασμα',
'menu-resize' => 'Αλλαγή μεγέθους',
'menu-crop' => 'Κόψιμο',
'title-page' => 'Διαχείριση αρχείων',
'title-panel' => 'Laravel FileManager',
'title-upload' => 'Ανέβασμα αρχείου',
'title-view' => 'Επισκόπηση αρχείου',
'title-root' => 'Αρχεία',
'title-shares' => 'Κοινόχρηστα αρχεία',
'title-item' => 'Αντικείμενο',
'title-size' => 'Μέγεθος',
'title-type' => 'Τύπος',
'title-modified' => 'Ανανεώθηκε',
'title-action' => 'Ενέργεια',
'type-folder' => 'Φάκελος',
'message-empty' => 'Ο φάκελος είναι άδειος',
'message-choose' => 'Επιλογή αρχείων',
'message-delete' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το αντικείμενο?',
'message-name' => 'Όνομα φακέλου:',
'message-rename' => 'Μετονομασία σε:',
'message-extension_not_found' => 'Παρακαλούμε κάντε εγκατάσταση του gd ή imagick php προσθετου προκειμένου να μπορείτε να κόψετε, αλλάξετε το μέγεθος και δημιουργήσετε εικονίδια των εικόνων.',
'error-rename' => 'Αυτό το όνομα αρχείου χρησιμοποιείται ήδη',
'error-file-empty' => 'Πρέπει να επιλέξετε ένα αρχείο!',
'error-file-exist' => 'Υπάρχει ήδη αρχείο με αυτό το όνομα!',
'error-file-size' => 'Το μέγεθος του αρχείου ξεπερνά το επιτρεπόμενο όριο σε μέγεθος (μέγιστο μέγεθος: :max)',
'error-delete-folder'=> 'Δεν μπορείτε να διαγράψετε τον φάκελο γιατί περιέχει αρχεία!',
'error-folder-name' => 'Ο φάκελος δεν γίνεται να είναι άδειος',
'error-folder-exist'=> 'Υπάρχει ήδη φάκελος με αυτό το όνομα!',
'error-folder-alnum'=> 'Επιτρέπονται μόνο γράμματα και αριθμοί για το όνομα των φακέλων!',
'error-mime' => 'Λανθασμένος τύπος αρχείου: ',
'error-size' => 'Μέγιστο μέγεθος αρχείου:',
'error-instance' => 'Το ανεβασμένο αρχείο έπρεπε να είναι του τύπου UploadedFile',
'error-invalid' => 'Λάθος αίτημα ανεβάσματος',
'error-other' => 'Παρουσιάστηκε ένα σφάλμα: ',
'error-too-large' => 'Το μέγεθος του αιτήματος είναι πολύ μεγάλο!',
'btn-upload' => 'Ανέβασματα αρχείων',
'btn-uploading' => 'Ανεβασμα...',
'btn-close' => 'Κλείσιμο',
'btn-crop' => 'Κόψιμο',
'btn-cancel' => 'Ακύρωση',
'btn-resize' => 'Αλλαγή μεγέθους',
'resize-ratio' => 'Αναλογία:',
'resize-scaled' => 'Η εικόνα άλλαξε μέγεθος:',
'resize-true' => 'Ναι',
'resize-old-height' => 'Πρωτότυπο ύψος:',
'resize-old-width' => 'Πρωτότυπο πλάτος:',
'resize-new-height' => 'Ύψος:',
'resize-new-width' => 'Μπλάτος:',
'locale-bootbox' => 'el',
];

View File

@@ -6,17 +6,20 @@ return [
'nav-upload' => 'Upload',
'nav-thumbnails' => 'Thumbnails',
'nav-list' => 'List',
'nav-sort' => 'Sort',
'nav-sort-alphabetic'=> 'Sort By Alphabets',
'nav-sort-time' => 'Sort By Time',
'menu-rename' => 'Rename',
'menu-delete' => 'Delete',
'menu-view' => 'View',
'menu-view' => 'Preview',
'menu-download' => 'Download',
'menu-resize' => 'Resize',
'menu-crop' => 'Crop',
'title-page' => 'File Manager',
'title-panel' => 'Laravel FileManager',
'title-upload' => 'Upload File',
'title-upload' => 'Upload File(s)',
'title-view' => 'View File',
'title-root' => 'Files',
'title-shares' => 'Shared Files',
@@ -29,30 +32,34 @@ return [
'type-folder' => 'Folder',
'message-empty' => 'Folder is empty.',
'message-choose' => 'Choose File',
'message-choose' => 'Choose File(s)',
'message-delete' => 'Are you sure you want to delete this item?',
'message-name' => 'Folder name:',
'message-rename' => 'Rename to:',
'message-extension_not_found' => 'Please install gd or imagick extension to crop, resize, and make thumbnails of images.',
'error-rename' => 'File name already in use!',
'error-file-name' => 'File name cannot be empty!',
'error-file-empty' => 'You must choose a file!',
'error-file-exist' => 'A file with this name already exists!',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-delete' => 'You cannot delete this folder because it is not empty!',
'error-delete-folder'=> 'You cannot delete this folder because it is not empty!',
'error-folder-name' => 'Folder name cannot be empty!',
'error-folder-exist'=> 'A folder with this name already exists!',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',
'error-folder-not-found'=> 'Folder not found! (:folder)',
'error-mime' => 'Unexpected MimeType: ',
'error-size' => 'Over limit size:',
'error-instance' => 'The uploaded file should be an instance of UploadedFile',
'error-invalid' => 'Invalid upload request',
'error-other' => 'An error has occured: ',
'error-too-large' => 'Request entity too large!',
'btn-upload' => 'Upload File',
'btn-upload' => 'Upload File(s)',
'btn-uploading' => 'Uploading...',
'btn-close' => 'Close',
'btn-crop' => 'Crop',
'btn-copy-crop' => 'Copy & Crop',
'btn-cancel' => 'Cancel',
'btn-resize' => 'Resize',
@@ -65,5 +72,4 @@ return [
'resize-new-width' => 'Width:',
'locale-bootbox' => 'en',
'menu-new'=>'New',
];

View File

@@ -40,7 +40,7 @@ return [
'error-file-exist' => '¡Ya existe un archivo con este nombre!',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',
'error-delete' => '¡No puedes eliminar esta carpeta porque no está vacía!',
'error-delete-folder'=> '¡No puedes eliminar esta carpeta porque no está vacía!',
'error-folder-name' => '¡Nombre de carpeta no puede ser vacío!',
'error-folder-exist'=> '¡Ya existe una carpeta con este nombre!',

View File

@@ -0,0 +1,75 @@
<?php
return [
'nav-back' => 'Atzera',
'nav-new' => 'Karpeta berria',
'nav-upload' => 'Kargatu',
'nav-thumbnails' => 'Koadro txikiak',
'nav-list' => 'Zerrenda',
'nav-sort' => 'Ordenatu',
'nav-sort-alphabetic'=> 'Ordenatu alfabetikoki',
'nav-sort-time' => 'Ordenatu denboraren arabera',
'menu-rename' => 'Aldatu izena',
'menu-delete' => 'Ezabatu',
'menu-view' => 'Aurrebista',
'menu-download' => 'Deskargatu',
'menu-resize' => 'Aldatu tamaina',
'menu-crop' => 'Moztu',
'title-page' => 'Fitxategi-kudeatzailea',
'title-panel' => 'Laravel fitxategi-kudeatzailea',
'title-upload' => 'Kargatu fitxategia(k)',
'title-view' => 'Ikusi fitxategia',
'title-root' => 'Fitxategiak',
'title-shares' => 'Partekatutako fitxategiak',
'title-item' => 'Elementua',
'title-size' => 'Tamaina',
'title-type' => 'Mota',
'title-modified' => 'Aldatua',
'title-action' => 'Ekintza',
'type-folder' => 'Karpeta',
'message-empty' => 'Karpeta hutsik dago.',
'message-choose' => 'Aukeratu fitxategia(k)',
'message-delete' => 'Ziur zaude elementu hau ezabatu nahi duzula?',
'message-name' => 'Karpetaren izena:',
'message-rename' => 'Izen berria:',
'message-extension_not_found' => 'Mesedez, instalatu gd edo imagick hedapena irudiak moztu, tamainaz aldatu eta koadro txikiak sortzeko.',
'error-rename' => 'Fitxategi-izena lehendik badago!',
'error-file-name' => 'Fitxategi-izenak ezin du hutsik egon!',
'error-file-empty' => 'Fitxategi bat aukeratu behar duzu!',
'error-file-exist' => 'Izen hau duen fitxategi bat existitzen da dagoeneko!',
'error-file-size' => 'Fitxategi-tamainak zerbitzariaren muga gainditzen du! (gehienezko tamaina: :max)',
'error-delete-folder'=> 'Ezin duzu karpeta hau ezabatu, ez baitago hutsik!',
'error-folder-name' => 'Karpeta-izenak ezin du hutsik egon!',
'error-folder-exist'=> 'Izen hau duen karpeta bat existitzen da dagoeneko!',
'error-folder-alnum'=> 'Karpeta-izen alfanumerikoak soilik onartzen dira!',
'error-folder-not-found'=> 'Ez da karpeta aurkitu! (:folder)',
'error-mime' => 'Ustekabeko MIME mota: ',
'error-size' => 'Muga gainditzen duen tamaina:',
'error-instance' => 'Kargatutako fitxategiak UploadedFile-en instantzia bat izan behar luke',
'error-invalid' => 'Kargatzeko eskaera baliogabea',
'error-other' => 'Errore bat gertatu da: ',
'error-too-large' => 'Eskaera entitatea handiegia da!',
'btn-upload' => 'Kargatu fitxategia(k)',
'btn-uploading' => 'Kargatzen...',
'btn-close' => 'Itxi',
'btn-crop' => 'Moztu',
'btn-copy-crop' => 'Kopiatu eta moztu',
'btn-cancel' => 'Utzi',
'btn-resize' => 'Aldatu tamainaz',
'resize-ratio' => 'Erlazioa:',
'resize-scaled' => 'Eskalatutako irudia:',
'resize-true' => 'Bai',
'resize-old-height' => 'Jatorrizko altuera:',
'resize-old-width' => 'Jatorrizko zabalera:',
'resize-new-height' => 'Altuera:',
'resize-new-width' => 'Zabalera:',
'locale-bootbox' => 'eu',
];

View File

@@ -6,6 +6,9 @@ return [
'nav-upload' => 'آپلود',
'nav-thumbnails' => 'تصویرک ها',
'nav-list' => 'لیست',
'nav-sort' => 'مرتب سازی',
'nav-sort-alphabetic'=> 'مرتب سازی الفبایی',
'nav-sort-time' => 'مرتب سازی زمانی',
'menu-rename' => 'تغییر نام',
'menu-delete' => 'حذف',
@@ -36,16 +39,21 @@ return [
'message-extension_not_found' => '(translation wanted)',
'error-rename' => 'این نام قبلا استفاده شده!',
'error-file-name' => 'نام فایل نباید خالی باشد!',
'error-file-empty' => 'شما باید یک فایل را انتخاب کنید!',
'error-file-exist' => 'یک فایل دیگر با این نام قبلا ایجاد شده است!',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-delete' => 'به دلیل خالی نبودن پوشه امکان حذف آن وجود ندارد!',
'error-file-size' => 'محدودیت حجم فایل سرور! (حداکثر حجم: :max)',
'error-delete-folder'=> 'به دلیل خالی نبودن پوشه امکان حذف آن وجود ندارد!',
'error-folder-name' => 'نام پوشه نمی تواند خالی باشد!',
'error-folder-exist'=> 'یک پوشه با این نام قبلا ایجاد شده است!',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',
'error-folder-alnum'=> 'فقط اسامی الفبایی برای پوشه مجاز است!',
'error-folder-not-found'=> 'پوشه‌ای یافت نشد! (:folder)',
'error-mime' => 'پسوند غیرمجاز: ',
'error-size' => 'سایز بیش از حد:',
'error-instance' => 'فایل آپلود شده باید نمونه ای از UploadedFile باشد',
'error-invalid' => 'درخواست آپلود غیرمعتبر',
'error-other' => 'خطایی رخ داد: ',
'error-too-large' => 'درخواست موجودیت خیلی طولانیست!',
'btn-upload' => 'آپلود فایل',
'btn-uploading' => 'در حال آپلود',

View File

@@ -1,53 +1,56 @@
<?php
return [
'nav-back' => 'Back',
'nav-back' => 'Retour',
'nav-new' => 'Nouveau dossier',
'nav-upload' => 'Charger',
'nav-upload' => 'Envoyer',
'nav-thumbnails' => 'Vignettes',
'nav-list' => 'Liste',
'nav-sort' => 'Trier',
'nav-sort-alphabetic'=> 'Trier par ordre alphabétique',
'nav-sort-time' => 'Trier par date',
'menu-rename' => 'Renommez',
'menu-rename' => 'Renommer',
'menu-delete' => 'Effacer',
'menu-view' => 'Voir le',
'menu-view' => 'Voir',
'menu-download' => 'Télécharger',
'menu-resize' => 'Redimensionner',
'menu-crop' => 'Récolte',
'menu-crop' => 'Rogner',
'title-page' => 'Gestionnaire de fichiers',
'title-panel' => 'Laravel FileManager',
'title-upload' => 'Envoyer un fichier',
'title-upload' => 'Envoyer un/des fichier(s)',
'title-view' => 'Voir le fichier',
'title-root' => 'Fichiers',
'title-shares' => 'Shared Files',
'title-item' => 'Article',
'title-shares' => 'Fichiers partagés',
'title-item' => 'Élement',
'title-size' => 'Taille du fichier',
'title-type' => 'Type de fichier',
'title-modified' => 'Date modifiée',
'title-action' => 'Exécuter laction',
'title-modified' => 'Date de modification',
'title-action' => 'Exécuter',
'type-folder' => 'Dossier',
'message-empty' => 'Dossier est vide',
'message-choose' => 'Choisir un fichier',
'message-choose' => 'Choisir un/des fichier(s)',
'message-delete' => 'Êtes-vous sûr de vouloir supprimer ce fichier ?',
'message-name' => 'Nom du dossier:',
'message-rename' => 'Renommer le dossier:',
'message-extension_not_found' => '(translation wanted)',
'message-name' => 'Nom du dossier :',
'message-rename' => 'Renommer le dossier :',
'message-extension_not_found' => 'Extension inconnue',
'error-rename' => 'Ce nom est déjà pris !',
'error-rename' => 'Nom déjà utilisé',
'error-file-empty' => 'Veuillez choisir un fichier',
'error-file-exist' => 'Un fichier avec ce nom existe déjà !',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-delete' => "Vous ne pouvez pas supprimer ce dossier car il n'est pas vide",
'error-file-exist' => 'Un fichier avec ce nom existe déjà',
'error-file-size' => 'Le fichier dépasse la taille maximale autorisée de :max',
'error-delete-folder'=> "Vous ne pouvez pas supprimer ce dossier car il n'est pas vide",
'error-folder-name' => 'Le nom du dossier ne peut pas être vide',
'error-folder-exist'=> 'Un dossier avec ce nom existe déjà !',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',
'error-mime' => 'Unexpected MimeType: ',
'error-instance' => 'The uploaded file should be an instance of UploadedFile',
'error-invalid' => 'Invalid upload request',
'error-folder-exist'=> 'Un dossier avec ce nom existe déjà',
'error-folder-alnum'=> 'Seuls les caractéres alphanumériques sont autorisés',
'error-mime' => 'Type de fichier MIME non autorisé: ',
'error-instance' => 'Le fichier doit être une instance de UploadedFile',
'error-invalid' => "Requête d'upload invalide",
'btn-upload' => 'Envoyer le fichier',
'btn-upload' => 'Envoyer le/les fichier(s)',
'btn-uploading' => 'Envoi...',
'btn-close' => 'Fermer',
'btn-crop' => 'Rogner',

View File

@@ -38,7 +38,7 @@ return [
'error-file-empty' => 'עליך לבחור קובץ!',
'error-file-exist' => 'קובץ עם שם זה כבר קיים!',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-delete' => 'לא ניתן למחוק תייקיה זו מכיוון שהיא לא ריקה!',
'error-delete-folder'=> 'לא ניתן למחוק תייקיה זו מכיוון שהיא לא ריקה!',
'error-folder-name' => 'נא להזין שם תיקייה!',
'error-folder-exist'=> 'תיקייה עם שם זהה כבר קיימת!',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',

View File

@@ -6,6 +6,9 @@ return [
'nav-upload' => 'Feltöltés',
'nav-thumbnails' => 'Miniatűrök',
'nav-list' => 'Lista',
'nav-sort' => 'Rendezés',
'nav-sort-alphabetic'=> 'ABC szerint',
'nav-sort-time' => 'Idő szerint',
'menu-rename' => 'Átnevezés',
'menu-delete' => 'Törlés',
@@ -15,7 +18,7 @@ return [
'menu-crop' => 'Vágás',
'title-page' => 'Fájlkezelő',
'title-panel' => 'Laravel Fájlkezelő',
'title-panel' => 'Fájlkezelő',
'title-upload' => 'Fájl feltöltés',
'title-view' => 'Fájl megtekintés',
'title-root' => 'Fájlok',
@@ -36,21 +39,27 @@ return [
'message-extension_not_found' => 'Kérlek telepítsd a gd vagy az imagick kiterjesztést a vágáshoz, átméretezéshez, és a képek miniatűr elemeinek elkészítéséhez.',
'error-rename' => 'A fájl neve használatban!',
'error-file-name' => 'A fájlnév nem lehet üres!',
'error-file-empty' => 'Ki kell választanod egy fájlt!',
'error-file-exist' => 'Egy fájl már létezik ezzel a névvel.',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-delete' => 'Nem tudod törölni ezt a mappát, mert nem üres!',
'error-file-size' => 'A fájl mérete túl nagy a szerverre nem lehet feltölteni! (Maximális megengedett méret: :max)',
'error-delete-folder'=> 'Nem tudod törölni ezt a mappát, mert nem üres!',
'error-folder-name' => 'A mappa neve nem lehet üres!',
'error-folder-exist'=> 'Egy mappa már létezik ezzel a névvel!',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',
'error-folder-alnum'=> 'Csak alfanumerikus karakterek lehetnek a mappa nevében!',
'error-folder-not-found'=> 'Nem található a(z) (:folder) nevű mappa!',
'error-mime' => 'Váratlan fájltípusok (MimeType): ',
'error-size' => 'Túl nagy méretű:',
'error-instance' => 'A feltöltött fájlnak egy UploadedFile kérelemnek kellene lennie',
'error-invalid' => 'Érvénytelen kérés a feltöltéssel kapcsolatban.',
'error-other' => 'Hiba történt: ',
'error-too-large' => 'Túl nagyméretű a fájl!',
'btn-upload' => 'Fájl feltöltés',
'btn-uploading' => 'Feltöltés folyamatban...',
'btn-close' => 'Bezárás',
'btn-crop' => 'Vágás',
'btn-copy-crop' => 'Másolás és vágás',
'btn-cancel' => 'Mégse',
'btn-resize' => 'Átméretezés',

View File

@@ -0,0 +1,75 @@
<?php
return [
'nav-back' => 'უკან',
'nav-new' => 'ახალი საქაღალდე',
'nav-upload' => 'ატვირთვა',
'nav-thumbnails' => 'ესკიზები',
'nav-list' => 'სია',
'nav-sort' => 'სორტირება',
'nav-sort-alphabetic' => 'სორტირება ანბანის მიხედვით',
'nav-sort-time' => 'სორტირება დროის მიხედვით',
'menu-rename' => 'სახელის შეცვლა',
'menu-delete' => 'წაშლა',
'menu-view' => 'ნახვა',
'menu-download' => 'გადმოწერა',
'menu-resize' => 'ზომის შეცვლა',
'menu-crop' => 'ამოჭრა',
'title-page' => 'ფაილების მენეჯერი',
'title-panel' => 'ფაილების მენეჯერი',
'title-upload' => 'ფაილ(ებ)ის ატვირთვა',
'title-view' => 'ფაილის ნახვა',
'title-root' => 'ფაილები',
'title-shares' => 'გაზიარებული ფაილები',
'title-item' => 'Item',
'title-size' => 'ზომა',
'title-type' => 'ტიპი',
'title-modified' => 'დარედაქტირდა',
'title-action' => 'ქმედება',
'type-folder' => 'საქაღალდე',
'message-empty' => 'საქაღალდე ცარიელია.',
'message-choose' => 'ფაილ(ებ)ის არჩევა',
'message-delete' => 'ნამდვილად გსურთ აღნიშნულის წაშლა?',
'message-name' => 'საქაღალდის დასახელება:',
'message-rename' => 'სახელის შეცვლა:',
'message-extension_not_found' => 'გთხოვთ დააყენოთ gd ან imagick გაფართოებები რათა ამოჭრათ, ზომა შეუცვალოთ და გააკეთოთ გამოსახულების ესკიზი.',
'error-rename' => 'ფაილი იდენტური დასახელებით უკვე არსებობს!',
'error-file-name' => 'ფაილის დასახელება არ შეიძლება იყოს ცარიელი!',
'error-file-empty' => 'თქვენ უნდა აირჩიოთ ფაილი!',
'error-file-exist' => 'ფაილი იდენტური სახელით უკვე არსებობს!',
'error-file-size' => 'ფაილის ზომა მეტია დასაშვებზე! (მაქსიმალური ზომა: :max)',
'error-delete-folder' => 'საქაღალდის წაშლა შეუძლებელია, რადგან არ არის ცარიელი!',
'error-folder-name' => 'საქაღალდის დასახელება არ შეიძლება იყოს ცარიელი!',
'error-folder-exist' => 'საქაღალდე იდენტური დასახელებით უკვე არსებობს!',
'error-folder-alnum' => 'დასაშვებია მხოლოდ ციფრები და ასოები!',
'error-folder-not-found' => 'საქაღალდე ვერ მოიძებნა! (:folder)',
'error-mime' => 'არასწორი MimeType: ',
'error-size' => 'ლიმიტის გადაჭარბება:',
'error-instance' => 'აღნიშნული ფაილი უნდა იყოს UploadedFile-ის ინსტანსი',
'error-invalid' => 'არასწორი ატვირთვის მოთხოვნა',
'error-other' => 'შეცდომაა: ',
'error-too-large' => 'აღნიშნული ფაილი ძალიან დიდია!',
'btn-upload' => 'ფაილ(ებ)ის ატვირთვა',
'btn-uploading' => 'იტვირთება...',
'btn-close' => 'დახურვა',
'btn-crop' => 'ამოჭრა',
'btn-copy-crop' => 'დაკოპირება & ამოჭრა',
'btn-cancel' => 'გაუქმება',
'btn-resize' => 'ზომის შეცვლა',
'resize-ratio' => 'პროპორცია:',
'resize-scaled' => 'სკალირებული გამოსახულება:',
'resize-true' => 'კი',
'resize-old-height' => 'ორიგინალის სიმაღლე:',
'resize-old-width' => 'ორიგინალის სიგანე:',
'resize-new-height' => 'სიმაღლე:',
'resize-new-width' => 'სიგანე:',
'locale-bootbox' => 'ka',
];

View File

@@ -1,68 +1,73 @@
<?php
return [
'nav-back' => 'Terug',
'nav-new' => 'Nieuwe Map',
'nav-upload' => 'Upload',
'nav-thumbnails' => 'Thumbnails',
'nav-list' => 'Lijst',
'nav-back' => 'Terug',
'nav-new' => 'Nieuwe Map',
'nav-upload' => 'Upload',
'nav-thumbnails' => 'Thumbnails',
'nav-list' => 'Lijst',
'nav-sort' => 'Sorteren',
'nav-sort-alphabetic' => 'Sorteer op naam',
'nav-sort-time' => 'Sorteer op tijd',
'menu-rename' => 'Hernoemen',
'menu-delete' => 'Verwijderen',
'menu-view' => 'View',
'menu-download' => 'Download',
'menu-resize' => 'Formaat Aanpassen',
'menu-crop' => 'Bijsnijden',
'menu-rename' => 'Hernoemen',
'menu-delete' => 'Verwijderen',
'menu-view' => 'Bekijken',
'menu-download' => 'Download',
'menu-resize' => 'Formaat aanpassen',
'menu-crop' => 'Bijsnijden',
'title-page' => 'File Manager',
'title-panel' => 'Laravel FileManager',
'title-upload' => 'Bestand Uploaden',
'title-view' => 'Bestand Bekijken',
'title-root' => 'Bestanden',
'title-shares' => 'Openbare Map',
'title-item' => 'Item',
'title-size' => 'Grootte',
'title-type' => 'Type',
'title-modified' => 'Gemodificeerd',
'title-action' => 'Actie',
'title-page' => 'File Manager',
'title-panel' => 'Laravel FileManager',
'title-upload' => 'Bestand uploaden',
'title-view' => 'Bestand bekijken',
'title-root' => 'Bestanden',
'title-shares' => 'Openbare map',
'title-item' => 'Item',
'title-size' => 'Grootte',
'title-type' => 'Type',
'title-modified' => 'Gewijzigd',
'title-action' => 'Actie',
'type-folder' => 'Map',
'type-folder' => 'Map',
'message-empty' => 'De map is leeg.',
'message-choose' => 'Kies bestand',
'message-delete' => 'Weet u zeker dat u dit bestand wilt verwijderen?',
'message-name' => 'Mapnaam:',
'message-rename' => 'Hernoemen naar:',
'message-extension_not_found' => 'Please install gd or imagick extension to crop, resize, and make thumbnails of images.',
'message-empty' => 'De map is leeg.',
'message-choose' => 'Kies bestand',
'message-delete' => 'Weet u zeker dat u dit bestand wilt verwijderen?',
'message-name' => 'Mapnaam:',
'message-rename' => 'Hernoemen naar:',
'message-extension_not_found' => 'Installeer de GD of Imagick extensie om afbeeldingen te kunnen bewerken.',
'error-rename' => 'Bestandsnaam is al in gebruik!',
'error-file-empty' => 'U dient een bestand te kiezen!',
'error-file-exist' => 'Een bestand met deze naam bestaat al!',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-delete' => 'U kunt deze map niet verwijderen omdat deze nog bestanden bevat!',
'error-folder-name' => 'Mapnaam mag niet leeg zijn!',
'error-folder-exist'=> 'Een map met deze naam bestaat al!',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',
'error-mime' => 'Onverwacht MimeType: ',
'error-instance' => 'Het geuploade bestand moet een instantie zijn van UploadedFile',
'error-invalid' => 'Ongeldig upload verzoek',
'error-other' => 'Er heeft een fout opgetreden: ',
'error-too-large' => 'De verzoek entiteit is te groot!',
'error-rename' => 'Bestandsnaam is al in gebruik!',
'error-file-empty' => 'U dient een bestand te kiezen!',
'error-file-exist' => 'Een bestand met deze naam bestaat al!',
'error-file-size' => 'Bestandsgrootte overschrijdt de server limiet! (maximale grootte: :max)',
'error-delete-folder' => 'U kunt deze map niet verwijderen omdat deze nog bestanden bevat!',
'error-folder-name' => 'Mapnaam mag niet leeg zijn!',
'error-folder-exist' => 'Een map met deze naam bestaat al!',
'error-folder-alnum' => 'Alleen alfanumerieke map namen zijn toegestaan!',
'error-mime' => 'Onverwacht MimeType: ',
'error-instance' => 'Het geuploade bestand moet een instantie zijn van UploadedFile',
'error-invalid' => 'Ongeldig upload verzoek',
'error-other' => 'Er is een fout opgetreden: ',
'error-size' => 'U heeft de maximale bestandsgrootte overschreden:',
'error-too-large' => 'De verzoek entiteit is te groot!',
'btn-upload' => 'Bestand uploaden',
'btn-uploading' => 'Uploaden...',
'btn-close' => 'Sluiten',
'btn-crop' => 'Bijsnijden',
'btn-cancel' => 'Annuleren',
'btn-resize' => 'Formaat aanpassen',
'btn-upload' => 'Bestand uploaden',
'btn-uploading' => 'Uploaden...',
'btn-close' => 'Sluiten',
'btn-crop' => 'Bijsnijden',
'btn-copy-crop' => 'Kopiëren & Bijsnijden',
'btn-cancel' => 'Annuleren',
'btn-resize' => 'Formaat aanpassen',
'resize-ratio' => 'Ratio:',
'resize-scaled' => 'Afbeelding geschaald:',
'resize-true' => 'Ja',
'resize-old-height' => 'Originele Hoogte:',
'resize-old-width' => 'Originele Breedte:',
'resize-new-height' => 'Hoogte:',
'resize-new-width' => 'Breedte:',
'resize-ratio' => 'Ratio:',
'resize-scaled' => 'Afbeelding geschaald:',
'resize-true' => 'Ja',
'resize-old-height' => 'Originele hoogte:',
'resize-old-width' => 'Originele breedte:',
'resize-new-height' => 'Hoogte:',
'resize-new-width' => 'Breedte:',
'locale-bootbox' => 'nl',
'locale-bootbox' => 'nl',
];

View File

@@ -0,0 +1,68 @@
<?php
return [
'nav-back' => 'Powrót',
'nav-new' => 'Nowy Folder',
'nav-upload' => 'Wgraj plik',
'nav-thumbnails' => 'Miniaturki',
'nav-list' => 'Lista',
'menu-rename' => 'Zmień nazwę',
'menu-delete' => 'Usuń',
'menu-view' => 'Wyświetl',
'menu-download' => 'Pobierz',
'menu-resize' => 'Zmień rozmiar',
'menu-crop' => 'Przytnij',
'title-page' => 'Menedżer plików',
'title-panel' => 'Laravel FileManager',
'title-upload' => 'Wgraj plik',
'title-view' => 'Podgląd',
'title-root' => 'Pliki',
'title-shares' => 'Udostępnione pliki',
'title-item' => 'Nazwa',
'title-size' => 'Rozmiar',
'title-type' => 'Typ',
'title-modified' => 'Utworzono',
'title-action' => 'Akcje',
'type-folder' => 'Folder',
'message-empty' => 'Przepraszamy, ten folder jest pusty.',
'message-choose' => 'Wybierz plik',
'message-delete' => 'Czy na pewno chcesz usunąć ten plik?',
'message-name' => 'Nazwa folderu:',
'message-rename' => 'Zmień nazwę:',
'message-extension_not_found' => 'Niestety, nie znaleziono wymaganych rozszerzeń. Zainstaluj gd lub imagick aby manipulować grafiką',
'error-rename' => 'Niestety, istnieje już plik o takiej nazwie!',
'error-file-empty' => 'You must choose a file!',
'error-file-exist' => 'Niestety, istnieje już plik o takiej nazwie!',
'error-file-size' => 'Przekroczono maksymalny rozmiar wgrywanych plików! (maximum size: :max)',
'error-delete-folder'=> 'Nie możesz usunąć tego folderu, ponieważ nie jest pusty!',
'error-folder-name' => 'Nazwa folderu nie może być pusta!',
'error-folder-exist'=> 'Folder o tej nazwie już istnieje!',
'error-folder-alnum'=> 'Dozwolone są jedynie nazwy alfanumeryczne!',
'error-mime' => 'Nierozpoznawany MimeType: ',
'error-instance' => 'Wgrywany obiekt powinien być instanją UploadedFile',
'error-invalid' => 'Nieprawidłowe zapytanie',
'error-other' => 'Napotkano następujący błąd: ',
'error-too-large' => 'Przekroczono dozwolony czas operacji!',
'btn-upload' => 'Wgraj plik',
'btn-uploading' => 'Wgrywanie...',
'btn-close' => 'Zamknij',
'btn-crop' => 'Przytnij',
'btn-cancel' => 'Anuluj',
'btn-resize' => 'Zmień rozmiar',
'resize-ratio' => 'Stosunek:',
'resize-scaled' => 'Zmieniono rozmiar:',
'resize-true' => 'tak',
'resize-old-height' => 'Orginalna wysokość:',
'resize-old-width' => 'Orginalna szerokość:',
'resize-new-height' => 'Wysokość:',
'resize-new-width' => 'Szerokość:',
'locale-bootbox' => 'pl',
];

View File

@@ -1,7 +1,7 @@
<?php
return [
'nav-back' => 'Back',
'nav-back' => 'Voltar',
'nav-new' => 'Nova Pasta',
'nav-upload' => 'Enviar',
'nav-thumbnails' => 'Miniatura',
@@ -33,17 +33,17 @@ return [
'message-delete' => 'Você está certo que quer deletar este arquivo?',
'message-name' => 'Nome da pasta:',
'message-rename' => 'Renomear para:',
'message-extension_not_found' => '(translation wanted)',
'message-extension_not_found' => 'Por favor instale a extenção gd ou imagick para recortar, redimensionar e criar miniaturas das imagens.',
'error-rename' => 'Nome de arquivo já está em uso!',
'error-file-empty' => 'Você deve escolher um arquivo!',
'error-file-exist' => 'Um arquivo com este nome já existe!',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-delete' => 'Você não pode deletar esta pasta, pois ela não está vazia!',
'error-file-size' => 'Tamanho do arquivo excedeu o limite permitido pelo servidor! (Tamanho máximo: :max)',
'error-delete-folder'=> 'Você não pode deletar esta pasta, pois ela não está vazia!',
'error-folder-name' => 'Nome da pasta não pode ser vazio!',
'error-folder-exist'=> 'Uma pasta com este nome já existe!',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',
'error-mime' => 'Unexpected MimeType: ',
'error-folder-alnum'=> 'Permitido somente caracteres alfanuméricos para nomes de pastas!',
'error-mime' => 'MimeType inesperado: ',
'error-instance' => 'The uploaded file should be an instance of UploadedFile',
'error-invalid' => 'Invalid upload request',

View File

@@ -0,0 +1,66 @@
<?php
return [
'nav-back' => 'Voltar',
'nav-new' => 'Nova Pasta',
'nav-upload' => 'Upload',
'nav-thumbnails' => 'Miniatura',
'nav-list' => 'Lista',
'menu-rename' => 'Renomear',
'menu-delete' => 'Apagar',
'menu-view' => 'Ver',
'menu-download' => 'Download',
'menu-resize' => 'Redimensionar',
'menu-crop' => 'Cortar',
'title-page' => 'Gestor de Arquivos',
'title-panel' => 'Gestor de Arquivos',
'title-upload' => 'Envio de Arquivo',
'title-view' => 'Ver Arquivo',
'title-root' => 'Arquivos',
'title-shares' => 'Arquivos Partilhados',
'title-item' => 'Item',
'title-size' => 'Tamanho',
'title-type' => 'Tipo',
'title-modified' => 'Modificado',
'title-action' => 'Ação',
'type-folder' => 'Pasta',
'message-empty' => 'A pasta está vazia.',
'message-choose' => 'Escolha um arquivo',
'message-delete' => 'Tem a certeza que quer pagar este arquivo?',
'message-name' => 'Nome da pasta:',
'message-rename' => 'Renomear para:',
'message-extension_not_found' => '(translation wanted)',
'error-rename' => 'Nome de arquivo já está em uso!',
'error-file-empty' => 'Deve escolher um arquivo!',
'error-file-exist' => 'Um arquivo com este nome já existe!',
'error-file-size' => 'O tamanho do ficheiro excede o limite permitido! (tamanho máximo: :max)',
'error-delete' => 'Não pode apagar esta pasta, não está vazia!',
'error-folder-name' => 'Nome da pasta não pode ser vazio!',
'error-folder-exist'=> 'Uma pasta com este nome já existe!',
'error-folder-alnum'=> 'Apenas valores alfanuméricos são permitidos para o nome da pasta!',
'error-mime' => 'Tipo de ficheiro não suportado: ',
'error-instance' => 'O ficheiro carregado deve ser uma instância de UploadedFile',
'error-invalid' => 'Pedido de upload inválido',
'btn-upload' => 'Enviar Arquivo',
'btn-uploading' => 'A enviar...',
'btn-close' => 'Fechar',
'btn-crop' => 'Cortar',
'btn-cancel' => 'Cancelar',
'btn-resize' => 'Redimensionar',
'resize-ratio' => 'Proporção:',
'resize-scaled' => 'Imagem dimensionada:',
'resize-true' => 'Sim',
'resize-old-height' => 'Altura Original:',
'resize-old-width' => 'Largura Original:',
'resize-new-height' => 'Altura:',
'resize-new-width' => 'Largura:',
'locale-bootbox' => 'pt',
];

View File

@@ -0,0 +1,71 @@
<?php
return [
'nav-back' => 'Înapoi',
'nav-new' => 'Folder Nou',
'nav-upload' => 'Încarcă',
'nav-thumbnails' => 'Miniatură',
'nav-list' => 'Listă',
'menu-rename' => 'Redenumește',
'menu-delete' => 'Șterge',
'menu-view' => 'Previzualizează',
'menu-download' => 'Descarcă',
'menu-resize' => 'Redimensionează',
'menu-crop' => 'Taie',
'title-page' => 'Manager fișiere',
'title-panel' => 'Laravel FileManager',
'title-upload' => 'Încarcă fișier(e)',
'title-view' => 'Vezi fișier',
'title-root' => 'Fișiere',
'title-shares' => 'Fișiere distribuite',
'title-item' => 'Element',
'title-size' => 'Dimensiune',
'title-type' => 'Tip',
'title-modified' => 'Modificat',
'title-action' => 'Acțiune',
'type-folder' => 'Folder',
'message-empty' => 'Folderul este gol.',
'message-choose' => 'Alege fișier(e)',
'message-delete' => 'Ești sigur că vrei să ștergi acest element?',
'message-name' => 'Nume folder:',
'message-rename' => 'Redenumește în:',
'message-extension_not_found' => 'Te rog instalează extensia gd sau imagick ca să poți tăia, redimensiona sau genera miniaturi ale imaginilor.',
'error-rename' => 'Nume fișier este deja folosit!',
'error-file-name' => 'Numele fișierului nu poate fi gol!',
'error-file-empty' => 'Trebuie să alegi un fișier!',
'error-file-exist' => 'Există deja un fișier cu acest nume!',
'error-file-size' => 'Dimeniunea fișierului depășeste limita maximă a serverului! (limită maximă: :max)',
'error-delete-folder'=> 'Nu poți șterge acest folder pentru că nu este gol!',
'error-folder-name' => 'Numele folderului nu poate fi gol!',
'error-folder-exist'=> 'Există deja un folder cu acest nume!',
'error-folder-alnum'=> 'Sunt permise doar nume alfanumerice pentru foldere!',
'error-folder-not-found'=> 'Folderul nu a fost gasit! (:folder)',
'error-mime' => 'Unexpected MimeType: ',
'error-size' => 'Dimensiune peste limită:',
'error-instance' => 'Fișierul încărcat trebuie să fie o instanță a UploadedFile',
'error-invalid' => 'Cerere invalidă de upload',
'error-other' => 'A apărut o eroare: ',
'error-too-large' => 'Entitate request prea mare!',
'btn-upload' => 'Încarcă fișier(e)',
'btn-uploading' => 'Încarcare...',
'btn-close' => 'Închide',
'btn-crop' => 'Taie',
'btn-cancel' => 'Anulează',
'btn-resize' => 'Redimensionează',
'resize-ratio' => 'Rație:',
'resize-scaled' => 'Imagine scalată:',
'resize-true' => 'Da',
'resize-old-height' => 'Înălțime originală:',
'resize-old-width' => 'Lățime originală:',
'resize-new-height' => 'Înălțime:',
'resize-new-width' => 'Lățime:',
'locale-bootbox' => 'ro',
];

View File

@@ -37,11 +37,11 @@ return [
'error-rename' => 'Имя файла уже используется!',
'error-file-empty' => 'Вы должны выбрать файл!',
'error-file-exist' => 'Файл с этим именем уже существует!',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-delete' => 'Вы не можете удалить эту папку, потому что она не пустая!',
'error-file-size' => 'Размер файла превышает разрешенный сервером размер! (максимальный размер: :max)',
'error-delete-folder'=> 'Вы не можете удалить эту папку, потому что она не пустая!',
'error-folder-name' => 'Имя папки не может быть пустым!',
'error-folder-exist'=> 'Папка с таким названием уже существует!',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',
'error-folder-alnum'=> 'Название папки должно содержать только цифры и латинские буквы!',
'error-mime' => 'Неподдерживаемый MimeType: ',
'error-instance' => 'Загруженный файл должен быть экземпляром UploadedFile',
'error-invalid' => 'Неверный запрос загрузки',

View File

@@ -1,11 +1,14 @@
<?php
return [
'nav-back' => 'Back',
'nav-back' => 'Geri',
'nav-new' => 'Yeni Klasör',
'nav-upload' => 'Yükle',
'nav-thumbnails' => 'Küçük Resim',
'nav-list' => 'Liste',
'nav-sort' => 'Sırala',
'nav-sort-alphabetic'=> 'A-Z Sırala',
'nav-sort-time' => 'Zamana Göre Sırala',
'menu-rename' => 'Ad değiştir',
'menu-delete' => 'Sil',
@@ -33,29 +36,35 @@ return [
'message-delete' => 'Bu dosyayı silmek istediğinizden emin misiniz?',
'message-name' => 'Klasör adı:',
'message-rename' => 'Yeni ad:',
'message-extension_not_found' => '(translation wanted)',
'message-extension_not_found' => 'Lütfen resimleri kesmek, yeniden boyutlandırmak ve küçük resimler oluşturmak için gd veya imagick eklentisini yükleyin',
'error-rename' => 'Dosya adı kullanımda!',
'error-file-name' => 'Dosya adı boş bırakılamaz!',
'error-file-empty' => 'Bir dosya seçmelisiniz!',
'error-file-exist' => 'Bu adda bir dosya zaten var!',
'error-file-size' => 'File size exceeds server limit! (maximum size: :max)',
'error-delete' => 'Klasör boş olmadığından, klasörü silemezsiniz!',
'error-file-size' => 'Dosya boyutu sunucu limitini aşıyor! (maximum boyut: :max)',
'error-delete-folder'=> 'Klasör boş olmadığından, klasörü silemezsiniz!',
'error-folder-name' => 'Klasör adı yazılmalıdır!',
'error-folder-exist'=> 'Bu adda bir klasör zaten var!',
'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!',
'error-mime' => 'Unexpected MimeType: ',
'error-instance' => 'The uploaded file should be an instance of UploadedFile',
'error-invalid' => 'Invalid upload request',
'error-folder-alnum'=> 'Yalnızca alfasayısal klasör adlarına izin verilir!',
'error-folder-not-found'=> 'Klasör bulunamadı! (:folder)',
'error-mime' => 'Beklenmeyen Mime Türü: ',
'error-size' => 'Boyut sınırın üstünde:',
'error-instance' => 'Yüklenen dosya, UploadedFile örneğinde olmalıdır',
'error-invalid' => 'Geçersiz yükleme isteği',
'error-other' => 'Bir hata oluştu: ',
'error-too-large' => 'Girilen veri çok fazla!',
'btn-upload' => 'Yükle',
'btn-uploading' => 'Yükleniyor...',
'btn-close' => 'Kapat',
'btn-crop' => 'Kırp',
'btn-copy-crop' => 'Kopyala & Kes',
'btn-cancel' => 'İptal',
'btn-resize' => 'Boyutlandır',
'resize-ratio' => 'Oran:',
'resize-scaled' => 'Boyutlandırıldı mı:',
'resize-scaled' => 'Boyutlandırıldı:',
'resize-true' => 'Evet',
'resize-old-height' => 'Orijinal Yükseklik:',
'resize-old-width' => 'Orijinal Genişlik:',

View File

@@ -0,0 +1,71 @@
<?php
return [
'nav-back' => 'Назад',
'nav-new' => 'Нова папка',
'nav-upload' => 'Завантажити',
'nav-thumbnails' => 'Мініатюри',
'nav-list' => 'Список',
'menu-rename' => 'Перейменувати',
'menu-delete' => 'Вилучити',
'menu-view' => 'Перегляд',
'menu-download' => 'Завантажити',
'menu-resize' => 'Змінити розмір',
'menu-crop' => 'Обрізати',
'title-page' => 'Менеджер файлів',
'title-panel' => 'Laravel FileManager',
'title-upload' => 'Завантаження файлу',
'title-view' => 'Перегляд файлу',
'title-root' => 'Файли',
'title-shares' => 'Спільні файли',
'title-item' => 'Номер',
'title-size' => 'Розмір',
'title-type' => 'Тип',
'title-modified' => 'Змінений',
'title-action' => 'Дія',
'type-folder' => 'Папка',
'message-empty' => 'Папка порожня.',
'message-choose' => 'Виберіть файл(-и)',
'message-delete' => 'Ви впевнені, що хочете вилучити цей елемент?',
'message-name' => 'Назва папки:',
'message-rename' => 'Перейменувати в:',
'message-extension_not_found' => 'Інсталюйте, будь ласка, розширення GD чи ImageMagick щоб мати можливість кадрувати, змінювати розміри чи створювати ескізи зображень.',
'error-rename' => 'Ім\'я файлу вже використовується!',
'error-file-name' => 'Ім\'я файлу не може бути порожнім!',
'error-file-empty' => 'Ви повинні вибрати файл!',
'error-file-exist' => 'Файл з таким ім\'ям вже існує!',
'error-file-size' => 'Розмір файлу перевищує обмеження сервера! (максимальний розмір: :max)',
'error-delete-folder'=> 'Ви не можете вилучити цю папку, оскільки вона не порожня!',
'error-folder-name' => 'Ім\'я папки не може бути порожнім!',
'error-folder-exist'=> 'Папка з тиким ім\'ям вже існує!',
'error-folder-alnum'=> 'Дозволені лише буквено-цифрові імена папок!',
'error-folder-not-found'=> 'Папку не знайдено! (:folder)',
'error-mime' => 'Недозволений MimeType: ',
'error-size' => 'Розмір перевищує дозволений:',
'error-instance' => 'Завантажений файл має бути екземпляром UploadedFile',
'error-invalid' => 'Неправильний запит на завантаження',
'error-other' => 'Сталася помилка: ',
'error-too-large' => 'Занадто великий об\'єкт запиту!',
'btn-upload' => 'Завантажити файл',
'btn-uploading' => 'Завантаження...',
'btn-close' => 'Закрити',
'btn-crop' => 'Обрізати',
'btn-cancel' => 'Скасувати',
'btn-resize' => 'Змінити розмір',
'resize-ratio' => 'Співвідношення:',
'resize-scaled' => 'Масштабоване зображення:',
'resize-true' => 'Так',
'resize-old-height' => 'Оригінальна висота:',
'resize-old-width' => 'Оригінальна ширина:',
'resize-new-height' => 'Висота:',
'resize-new-width' => 'Ширина:',
'locale-bootbox' => 'uk',
];

View File

@@ -0,0 +1,75 @@
<?php
return [
'nav-back' => 'Quay lại',
'nav-new' => 'Tạo thư mục mới',
'nav-upload' => 'Tải lên',
'nav-thumbnails' => 'Ảnh đại diện',
'nav-list' => 'Danh sách',
'nav-sort' => 'Sắp xếp',
'nav-sort-alphabetic'=> 'Sắp xếp theo thứ tự Alphabet',
'nav-sort-time' => 'Sắp xếp theo thời gian',
'menu-rename' => 'Đổi tên',
'menu-delete' => 'Xoá',
'menu-view' => 'Xem trước',
'menu-download' => 'Tải xuống',
'menu-resize' => 'Thay đổi kích thước',
'menu-crop' => 'Cắt hình',
'title-page' => 'Trình quản lý tập tin',
'title-panel' => 'Trình quản lý tập tin Laravel',
'title-upload' => 'Tải lên',
'title-view' => 'Xem tập tin',
'title-root' => 'Các tập tin',
'title-shares' => 'Các tập tin được chia sẽ',
'title-item' => 'Mục',
'title-size' => 'Kích thước',
'title-type' => 'Loại',
'title-modified' => 'Đã chỉnh sửa',
'title-action' => 'Hành động',
'type-folder' => 'Thư mục',
'message-empty' => 'Thư mục trống.',
'message-choose' => 'Chọn tập tin',
'message-delete' => 'Bạn có chắc chắn muốn xoá mục này?',
'message-name' => 'Tên thư mục:',
'message-rename' => 'Đổi tên thành:',
'message-extension_not_found' => 'Vui lòng cài đặt gói mở rộng gd hoặc imagick để cắt, thay đổi kích thước và tạo ảnh đại điện cho các hình ảnh.',
'error-rename' => 'Tên tập tin đã được chọn!',
'error-file-name' => 'Tên tập tin không được trống!',
'error-file-empty' => 'Bạn phải lựa chọn 1 tập tin!',
'error-file-exist' => 'Cùng tên với tập tin khác!',
'error-file-size' => 'Kích thước tập tin đạt tối đa! (kích thước tối đa: :max)',
'error-delete-folder'=> 'Bạn không thể xoá thư mục này bởi vì nó không trống!',
'error-folder-name' => 'Tên thư mục không được trống!',
'error-folder-exist'=> 'Tên thư mục đã được sử dụng!',
'error-folder-alnum'=> 'Tên thư mục chỉ được sử dụng chữ hoặc số!',
'error-folder-not-found'=> 'Không tìm thấy thư mục! (:folder)',
'error-mime' => 'Không hỗ trợ MimeType: ',
'error-size' => 'Kích thước quá lớn:',
'error-instance' => 'Tập tin được tải lên phải là một kiểu UploadedFile',
'error-invalid' => 'Yêu cầu tải lên không hợp lệ',
'error-other' => 'Có lỗi xảy ra: ',
'error-too-large' => 'Kích thước yêu cầu quá lơn!',
'btn-upload' => 'Tải tập tin',
'btn-uploading' => 'Đang tải lên...',
'btn-close' => 'Đóng',
'btn-crop' => 'Cắt',
'btn-copy-crop' => 'Sao chép và Cắt',
'btn-cancel' => 'Huỷ bỏ',
'btn-resize' => 'Thay đổi kích thước',
'resize-ratio' => 'Tỷ lệ:',
'resize-scaled' => 'Hình ảnh thu nhỏ:',
'resize-true' => 'Đồng ý',
'resize-old-height' => 'Chiều cao ban đầu:',
'resize-old-width' => 'Chiều rộng ban đầu:',
'resize-new-height' => 'Chiều cao:',
'resize-new-width' => 'Chiều rộng:',
'locale-bootbox' => 'vi',
];

View File

@@ -6,6 +6,9 @@ return [
'nav-upload' => '上传档案',
'nav-thumbnails' => '缩略图显示',
'nav-list' => '列表显示',
'nav-sort' => '排序',
'nav-sort-alphabetic'=> '按字母排序',
'nav-sort-time' => '按时间排序',
'menu-rename' => '重命名',
'menu-delete' => '删除',
@@ -36,21 +39,27 @@ return [
'message-extension_not_found' => '请安装 gd 或 imagick 以使用缩放、裁剪、及缩图功能',
'error-rename' => '名称重复,请重新输入!',
'error-file-name' => '文件名不能为空!',
'error-file-empty' => '请选择档案!',
'error-file-exist' => '相同档名的档案已存在!',
'error-file-size' => '档案过大,无法上传! (档案大小上限: :max)',
'error-delete' => '文件夹未清空,无法删除!',
'error-delete-folder'=> '文件夹未清空,无法删除!',
'error-folder-name' => '请输入文件夹名称!',
'error-folder-exist'=> '相同名称的文件夹已存在!',
'error-folder-alnum'=> '文件夹名称只能包含英数字',
'error-folder-not-found'=> '找不到文件夹 :folder',
'error-mime' => 'Mime 格式错误 : ',
'error-size' => '大小超出限制:',
'error-instance' => '上传档案的 instance 应为 UploadedFile',
'error-invalid' => '验证失败,上传未成功',
'error-other' => '发生错误: ',
'error-too-large' => '请求内容太大!',
'btn-upload' => '上传',
'btn-uploading' => '上传中...',
'btn-close' => '关闭',
'btn-crop' => '裁剪',
'btn-copy-crop' => '复制并裁剪',
'btn-cancel' => '取消',
'btn-resize' => '缩放',

View File

@@ -6,6 +6,9 @@ return [
'nav-upload' => '上傳檔案',
'nav-thumbnails' => '縮圖顯示',
'nav-list' => '列表顯示',
'nav-sort' => '排序',
'nav-sort-alphabetic'=> '依字母排序',
'nav-sort-time' => '依時間排序',
'menu-rename' => '重新命名',
'menu-delete' => '刪除',
@@ -36,16 +39,20 @@ return [
'message-extension_not_found' => '請安裝 gd 或 imagick 以使用縮放、裁剪、及縮圖功能',
'error-rename' => '名稱重複,請重新輸入!',
'error-file-name' => '請輸入檔案名稱!',
'error-file-empty' => '請選擇檔案!',
'error-file-exist' => '相同檔名的檔案已存在!',
'error-file-size' => '檔案過大,無法上傳! (檔案大小上限: :max)',
'error-delete' => '資料夾未清空,無法刪除!',
'error-delete-folder'=> '資料夾未清空,無法刪除!',
'error-folder-name' => '請輸入資料夾名稱!',
'error-folder-exist'=> '相同名稱的資料夾已存在!',
'error-folder-alnum'=> '資料夾名稱只能包含英數字!',
'error-folder-not-found'=> '找不到資料夾: :folder',
'error-mime' => 'Mime 格式錯誤 : ',
'error-instance' => '上傳檔案的 instance 應為 UploadedFile',
'error-invalid' => '驗證失敗,上傳未成功',
'error-other' => '發生錯誤: ',
'error-too-large' => '請求內容太大!',
'btn-upload' => '上傳',
'btn-uploading' => '上傳中...',

View File

@@ -1,41 +0,0 @@
<?php
namespace Unisharp\Laravelfilemanager\middleware;
use Closure;
class MultiUser
{
public function handle($request, Closure $next)
{
if (\Config::get('lfm.allow_multi_user') === true) {
$slug = \Config::get('lfm.user_field');
\Auth::user()->user_field = \Auth::user()->$slug;
$new_working_dir = '/' . \Auth::user()->user_field;
$previous_dir = $request->input('working_dir');
if ($previous_dir == null) {
$request->merge(['working_dir' => $new_working_dir]);
} elseif (! $this->validDir($previous_dir)) {
$request->replace(['working_dir' => $new_working_dir]);
}
}
return $next($request);
}
private function validDir($previous_dir)
{
if (starts_with($previous_dir, '/' . \Config::get('lfm.shared_folder_name'))) {
return true;
}
if (starts_with($previous_dir, '/' . (string)\Auth::user()->user_field)) {
return true;
}
return false;
}
}

View File

@@ -1,8 +1,12 @@
<?php
$middleware = array_merge(\Config::get('lfm.middlewares'), ['\Unisharp\Laravelfilemanager\middleware\MultiUser']);
$prefix = \Config::get('lfm.prefix', 'laravel-filemanager');
$middleware = array_merge(\Config::get('lfm.middlewares'), [
'\UniSharp\LaravelFilemanager\Middlewares\MultiUser',
'\UniSharp\LaravelFilemanager\Middlewares\CreateDefaultFolder',
]);
$prefix = \Config::get('lfm.url_prefix', \Config::get('lfm.prefix', 'laravel-filemanager'));
$as = 'unisharp.lfm.';
$namespace = '\Unisharp\Laravelfilemanager\controllers';
$namespace = '\UniSharp\LaravelFilemanager\Controllers';
// make sure authenticated
Route::group(compact('middleware', 'prefix', 'as', 'namespace'), function () {
@@ -10,74 +14,92 @@ Route::group(compact('middleware', 'prefix', 'as', 'namespace'), function () {
// Show LFM
Route::get('/', [
'uses' => 'LfmController@show',
'as' => 'show'
'as' => 'show',
]);
// Show integration error messages
Route::get('/errors', [
'uses' => 'LfmController@getErrors',
'as' => 'getErrors',
]);
// upload
Route::any('/upload', [
'uses' => 'UploadController@upload',
'as' => 'upload'
'as' => 'upload',
]);
// list images & files
Route::get('/jsonitems', [
'uses' => 'ItemsController@getItems',
'as' => 'getItems'
'as' => 'getItems',
]);
// folders
Route::get('/newfolder', [
'uses' => 'FolderController@getAddfolder',
'as' => 'getAddfolder'
'as' => 'getAddfolder',
]);
Route::get('/deletefolder', [
'uses' => 'FolderController@getDeletefolder',
'as' => 'getDeletefolder'
'as' => 'getDeletefolder',
]);
Route::get('/folders', [
'uses' => 'FolderController@getFolders',
'as' => 'getFolders'
'as' => 'getFolders',
]);
// crop
Route::get('/crop', [
'uses' => 'CropController@getCrop',
'as' => 'getCrop'
'as' => 'getCrop',
]);
Route::get('/cropimage', [
'uses' => 'CropController@getCropimage',
'as' => 'getCropimage'
'as' => 'getCropimage',
]);
Route::get('/cropnewimage', [
'uses' => 'CropController@getNewCropimage',
'as' => 'getCropimage',
]);
// rename
Route::get('/rename', [
'uses' => 'RenameController@getRename',
'as' => 'getRename'
'as' => 'getRename',
]);
// scale/resize
Route::get('/resize', [
'uses' => 'ResizeController@getResize',
'as' => 'getResize'
'as' => 'getResize',
]);
Route::get('/doresize', [
'uses' => 'ResizeController@performResize',
'as' => 'performResize'
'as' => 'performResize',
]);
// download
Route::get('/download', [
'uses' => 'DownloadController@getDownload',
'as' => 'getDownload'
'as' => 'getDownload',
]);
// delete
Route::get('/delete', [
'uses' => 'DeleteController@getDelete',
'as' => 'getDelete'
'as' => 'getDelete',
]);
Route::get('/demo', function () {
return view('laravel-filemanager::demo');
});
// Route::get('/demo', 'DemoController@index');
});
Route::group(compact('prefix', 'as', 'namespace'), function () {
// Get file when base_directory isn't public
$images_url = '/' . \Config::get('lfm.images_folder_name') . '/{base_path}/{image_name}';
$files_url = '/' . \Config::get('lfm.files_folder_name') . '/{base_path}/{file_name}';
Route::get($images_url, 'RedirectController@getImage')
->where('image_name', '.*');
Route::get($files_url, 'RedirectController@getFile')
->where('file_name', '.*');
});

View File

@@ -1,18 +1,40 @@
<div class="row fill">
<div class="col-md-8 fill">
<div class="row">
<div class="col-md-8">
<div class="crop-container">
<img src="{{ asset($img) }}" class="img img-responsive">
<img src="{{ $img->url . '?timestamp=' . $img->updated }}" class="img img-responsive">
</div>
</div>
<div class="col-md-4 fill">
<div class="col-md-4">
<div class="text-center">
<div class="img-preview center-block"></div>
<br>
<button class="btn btn-primary" onclick="performCrop()">{{ Lang::get('laravel-filemanager::lfm.btn-crop') }}</button>
<button class="btn btn-info" onclick="loadItems()">{{ Lang::get('laravel-filemanager::lfm.btn-cancel') }}</button>
<form action="{{ route('unisharp.lfm.getCrop') }}" role='form' name='cropForm' id='cropForm' mathod='post'>
<input type="hidden" id="img" name="img" value="{{ $img }}">
<div class="btn-group clearfix">
<label class="btn btn-primary btn-aspectRatio active" onclick="changeAspectRatio(this, 16 / 9)">
16:9
</label>
<label class="btn btn-primary btn-aspectRatio" onclick="changeAspectRatio(this, 4 / 3)">
4:3
</label>
<label class="btn btn-primary btn-aspectRatio" onclick="changeAspectRatio(this, 1)">
1:1
</label>
<label class="btn btn-primary btn-aspectRatio" onclick="changeAspectRatio(this, 2 / 3)">
2:3
</label>
{{--<label class="btn btn-primary" onclick="changeAspectRatio(this, null)">
Free
</label>--}}
</div>
<br>
<br>
<button class="btn btn-primary" onclick="performCrop()">{{ trans('laravel-filemanager::lfm.btn-crop') }}</button>
<button class="btn btn-primary" onclick="performCropNew()">{{ trans('laravel-filemanager::lfm.btn-copy-crop') }}</button>
<button class="btn btn-info" onclick="loadItems()">{{ trans('laravel-filemanager::lfm.btn-cancel') }}</button>
<form id='cropForm'>
<input type="hidden" id="img" name="img" value="{{ $img->name }}">
<input type="hidden" id="working_dir" name="working_dir" value="{{ $working_dir }}">
<input type="hidden" id="dataX" name="dataX">
<input type="hidden" id="dataY" name="dataY">
@@ -26,41 +48,59 @@
</div>
<script>
$(document).ready(function () {
var $dataX = $('#dataX'),
$dataY = $('#dataY'),
$dataHeight = $('#dataHeight'),
$dataWidth = $('#dataWidth');
$('.crop-container > img').cropper({
//aspectRatio: 16 / 9,
preview: ".img-preview",
strict: false,
crop: function (data) {
// Output the result data for cropping image.
$dataX.val(Math.round(data.x));
$dataY.val(Math.round(data.y));
$dataHeight.val(Math.round(data.height));
$dataWidth.val(Math.round(data.width));
}
var $image = null,
options = {};
$(document).ready(function () {
var $dataX = $('#dataX'),
$dataY = $('#dataY'),
$dataHeight = $('#dataHeight'),
$dataWidth = $('#dataWidth');
$image = $('.crop-container > img');
options = {
aspectRatio: 16 / 9,
preview: ".img-preview",
strict: false,
crop: function (data) {
// Output the result data for cropping image.
$dataX.val(Math.round(data.x));
$dataY.val(Math.round(data.y));
$dataHeight.val(Math.round(data.height));
$dataWidth.val(Math.round(data.width));
}
};
$image.cropper(options);
});
});
function performCrop() {
$.ajax({
type: "GET",
dataType: "text",
url: "{{ route('unisharp.lfm.getCropimage') }}",
data: {
img: '{{ $img }}',
function changeAspectRatio(_this, aspectRatio) {
options.aspectRatio = aspectRatio;
$('.btn-aspectRatio.active').removeClass('active');
$(_this).addClass('active');
$('.img-preview').removeAttr('style');
$image.cropper('destroy').cropper(options);
return false;
}
function performCrop() {
performLfmRequest('cropimage', {
img: $("#img").val(),
working_dir: $("#working_dir").val(),
dataX: $("#dataX").val(),
dataY: $("#dataY").val(),
dataHeight: $("#dataHeight").val(),
dataWidth: $("#dataWidth").val(),
type: $('#type').val()
},
cache: false
}).done(function (data) {
loadItems();
});
}
</script>
}).done(loadItems);
}
function performCropNew() {
performLfmRequest('cropnewimage', {
img: $("#img").val(),
working_dir: $("#working_dir").val(),
dataX: $("#dataX").val(),
dataY: $("#dataY").val(),
dataHeight: $("#dataHeight").val(),
dataWidth: $("#dataWidth").val(),
type: $('#type').val()
}).done(loadItems);
}
</script>

View File

@@ -3,6 +3,7 @@
<head>
<meta charset="UTF-8">
<title>Laravel Filemanager</title>
<link rel="shortcut icon" type="image/png" href="{{ asset('vendor/laravel-filemanager/img/folder.png') }}">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
</head>
@@ -20,8 +21,12 @@
</div>
</div>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<h2>Independent usage</h2>
<div class="col-md-6">
<h2>Summernote</h2>
<textarea id="summernote-editor" name="content"></textarea>
</div>
<div class="col-md-6">
<h2>Standalone Image Button</h2>
<div class="input-group">
<span class="input-group-btn">
<a id="lfm" data-input="thumbnail" data-preview="holder" class="btn btn-primary">
@@ -31,24 +36,42 @@
<input id="thumbnail" class="form-control" type="text" name="filepath">
</div>
<img id="holder" style="margin-top:15px;max-height:100px;">
<h2>Standalone File Button</h2>
<div class="input-group">
<span class="input-group-btn">
<a id="lfm2" data-input="thumbnail2" data-preview="holder2" class="btn btn-primary">
<i class="fa fa-picture-o"></i> Choose
</a>
</span>
<input id="thumbnail2" class="form-control" type="text" name="filepath">
</div>
<img id="holder2" style="margin-top:15px;max-height:100px;">
</div>
</div>
<div class="row">
<div class="col-md-12">
<h2>Embed file manager</h2>
<iframe src="/laravel-filemanager" style="width: 100%; height: 500px; overflow: hidden; border: none;"></iframe>
</div>
</div>
</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script>
var route_prefix = "{{ url(config('lfm.url_prefix', config('lfm.prefix'))) }}";
</script>
<!-- CKEditor init -->
<script src="//cdnjs.cloudflare.com/ajax/libs/ckeditor/4.5.11/ckeditor.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ckeditor/4.5.11/adapters/jquery.js"></script>
<script>
$('textarea[name=ce]').ckeditor({
height: 100,
filebrowserImageBrowseUrl: '/laravel-filemanager?type=Images',
filebrowserImageUploadUrl: '/laravel-filemanager/upload?type=Images&_token={{csrf_token()}}',
filebrowserBrowseUrl: '/laravel-filemanager?type=Files',
filebrowserUploadUrl: '/laravel-filemanager/upload?type=Files&_token={{csrf_token()}}'
filebrowserImageBrowseUrl: route_prefix + '?type=Images',
filebrowserImageUploadUrl: route_prefix + '/upload?type=Images&_token={{csrf_token()}}',
filebrowserBrowseUrl: route_prefix + '?type=Files',
filebrowserUploadUrl: route_prefix + '/upload?type=Files&_token={{csrf_token()}}'
});
</script>
@@ -56,21 +79,18 @@
<script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
<script>
var editor_config = {
path_absolute : "/",
path_absolute : "",
selector: "textarea[name=tm]",
plugins: [
"advlist autolink lists link image charmap print preview hr anchor pagebreak",
"searchreplace wordcount visualblocks visualchars code fullscreen",
"insertdatetime media nonbreaking save table contextmenu directionality",
"emoticons template paste textcolor colorpicker textpattern"
"link image"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image media",
relative_urls: false,
height: 129,
file_browser_callback : function(field_name, url, type, win) {
var x = window.innerWidth || document.documentElement.clientWidth || document.getElementsByTagName('body')[0].clientWidth;
var y = window.innerHeight|| document.documentElement.clientHeight|| document.getElementsByTagName('body')[0].clientHeight;
var cmsURL = editor_config.path_absolute + 'laravel-filemanager?field_name=' + field_name;
var cmsURL = editor_config.path_absolute + route_prefix + '?field_name=' + field_name;
if (type == 'image') {
cmsURL = cmsURL + "&type=Images";
} else {
@@ -91,9 +111,59 @@
tinymce.init(editor_config);
</script>
<script src="/vendor/laravel-filemanager/js/lfm.js"></script>
<script>
$('#lfm').filemanager('image');
{!! \File::get(base_path('vendor/unisharp/laravel-filemanager/public/js/lfm.js')) !!}
</script>
<script>
$('#lfm').filemanager('image', {prefix: route_prefix});
$('#lfm2').filemanager('file', {prefix: route_prefix});
</script>
<link href="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.4/summernote.css" rel="stylesheet">
<script src="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.4/summernote.js"></script>
<script>
$(document).ready(function() {
$('#summernote').summernote();
});
</script>
<script>
$(document).ready(function(){
// Define function to open filemanager window
var lfm = function(options, cb) {
var route_prefix = (options && options.prefix) ? options.prefix : '/laravel-filemanager';
window.open(route_prefix + '?type=' + options.type || 'file', 'FileManager', 'width=900,height=600');
window.SetUrl = cb;
};
// Define LFM summernote button
var LFMButton = function(context) {
var ui = $.summernote.ui;
var button = ui.button({
contents: '<i class="note-icon-picture"></i> ',
tooltip: 'Insert image with filemanager',
click: function() {
lfm({type: 'image', prefix: '/laravel-filemanager'}, function(url, path) {
context.invoke('insertImage', url);
});
}
});
return button.render();
};
// Initialize summernote with LFM button in the popover button group
// Please note that you can add this button to any other button group you'd like
$('#summernote-editor').summernote({
toolbar: [
['popovers', ['lfm']],
],
buttons: {
lfm: LFMButton
}
})
});
</script>
</body>
</html>

View File

@@ -1,23 +0,0 @@
<div class="col-sm-4 col-md-3 col-lg-2">
<div class="thumbnail text-center" data-id="{{ $dir_name['long'] }}">
<a data-id="{{ $dir_name['long'] }}" class="folder-icon pointer folder-item">
<img src="{{ asset('vendor/laravel-filemanager/img/folder.png') }}" style='max-height:200px;'>
</a>
</div>
<div class="caption text-center">
<div class="btn-group">
<button type="button" data-id="{{ $dir_name['long'] }}" class="btn btn-default btn-xs folder-item">
{{ str_limit($dir_name['short'], $limit = 10, $end = '...') }}
</button>
<button type="button" class="btn btn-default dropdown-toggle btn-xs" data-toggle="dropdown" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a href="javascript:rename('{{ $dir_name['short'] }}')"><i class="fa fa-edit fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-rename') }}</a></li>
<li><a href="javascript:trash('{{ $dir_name['short'] }}')"><i class="fa fa-trash fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-delete') }}</a></li>
</ul>
</div>
</div>
</div>

View File

@@ -1,19 +1,57 @@
@if((sizeof($files) > 0) || (sizeof($directories) > 0))
<div class="row">
@if((sizeof($file_info) > 0) || (sizeof($directories) > 0))
@foreach($items as $item)
<div class="col-xs-6 col-sm-4 col-md-3 col-lg-2 img-row">
<?php $item_name = $item->name; ?>
<?php $thumb_src = $item->thumb; ?>
<?php $item_path = $item->is_file ? $item->url : $item->path; ?>
@foreach($directories as $key => $dir_name)
@include('laravel-filemanager::folders')
@endforeach
<div class="square clickable {{ $item->is_file ? '' : 'folder-item' }}" data-id="{{ $item_path }}"
@if($item->is_file && $thumb_src) onclick="useFile('{{ $item_path }}', '{{ $item->updated }}')"
@elseif($item->is_file) onclick="download('{{ $item_name }}')" @endif >
@if($thumb_src)
<img src="{{ $thumb_src }}">
@else
<i class="fa {{ $item->icon }} fa-5x"></i>
@endif
</div>
@foreach($file_info as $key => $file)
@include('laravel-filemanager::item')
@endforeach
<div class="caption text-center">
<div class="btn-group">
<button type="button" data-id="{{ $item_path }}"
class="item_name btn btn-default btn-xs {{ $item->is_file ? '' : 'folder-item'}}"
@if($item->is_file && $thumb_src) onclick="useFile('{{ $item_path }}', '{{ $item->updated }}')"
@elseif($item->is_file) onclick="download('{{ $item_name }}')" @endif >
{{ $item_name }}
</button>
<button type="button" class="btn btn-default dropdown-toggle btn-xs" data-toggle="dropdown" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a href="javascript:rename('{{ $item_name }}')"><i class="fa fa-edit fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-rename') }}</a></li>
@if($item->is_file)
<li><a href="javascript:download('{{ $item_name }}')"><i class="fa fa-download fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-download') }}</a></li>
<li class="divider"></li>
@if($thumb_src)
<li><a href="javascript:fileView('{{ $item_path }}', '{{ $item->updated }}')"><i class="fa fa-image fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-view') }}</a></li>
<li><a href="javascript:resizeImage('{{ $item_name }}')"><i class="fa fa-arrows fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-resize') }}</a></li>
<li><a href="javascript:cropImage('{{ $item_name }}')"><i class="fa fa-crop fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-crop') }}</a></li>
<li class="divider"></li>
@endif
@endif
<li><a href="javascript:trash('{{ $item_name }}')"><i class="fa fa-trash fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-delete') }}</a></li>
</ul>
</div>
</div>
@else
<div class="col-md-12">
<p>{{ Lang::get('laravel-filemanager::lfm.message-empty') }}</p>
</div>
@endif
@endforeach
</div>
@else
<p>{{ Lang::get('laravel-filemanager::lfm.message-empty') }}</p>
@endif

View File

@@ -1,104 +1,115 @@
<!doctype html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ Lang::get('laravel-filemanager::lfm.title-page') }}</title>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Chrome, Firefox OS and Opera -->
<meta name="theme-color" content="#75C7C3">
<!-- Windows Phone -->
<meta name="msapplication-navbutton-color" content="#75C7C3">
<!-- iOS Safari -->
<meta name="apple-mobile-web-app-status-bar-style" content="#75C7C3">
<title>{{ trans('laravel-filemanager::lfm.title-page') }}</title>
<link rel="shortcut icon" type="image/png" href="{{ asset('vendor/laravel-filemanager/img/folder.png') }}">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<link rel="stylesheet" href="{{ asset('vendor/laravel-filemanager/css/cropper.min.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/laravel-filemanager/css/lfm.css') }}">
<style>{!! \File::get(base_path('vendor/unisharp/laravel-filemanager/public/css/lfm.css')) !!}</style>
{{-- Use the line below instead of the above if you need to cache the css. --}}
{{-- <link rel="stylesheet" href="{{ asset('/vendor/laravel-filemanager/css/lfm.css') }}"> --}}
<link rel="stylesheet" href="{{ asset('vendor/laravel-filemanager/css/mfb.css') }}">
<link rel="stylesheet" href="{{ asset('vendor/laravel-filemanager/css/dropzone.min.css') }}">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.css">
</head>
<body>
<div class="container">
<div class="row fill">
<div class="panel panel-primary fill">
<div class="panel-heading">
<h3 class="panel-title">{{ Lang::get('laravel-filemanager::lfm.title-panel') }}</h3>
</div>
<div class="panel-body fill">
<div class="row fill">
<div class="wrapper fill">
<div class="col-md-2 col-lg-2 col-sm-2 col-xs-2 left-nav fill" id="lfm-leftcol">
<div id="tree1">
</div>
</div>
<div class="col-md-10 col-lg-10 col-sm-10 col-xs-10 right-nav" id="right-nav">
<div class="row">
<div class="col-md-12">
@if($extension_not_found)
<div class="alert alert-warning"><i class="glyphicon glyphicon-exclamation-sign"></i> {{ Lang::get('laravel-filemanager::lfm.message-extension_not_found') }}</div>
@endif
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav" id="nav-buttons">
<li>
<a href="#" id="to-previous">
<i class="fa fa-arrow-left"></i> {{ Lang::get('laravel-filemanager::lfm.nav-back') }}
</a>
</li>
<li><a style='cursor:default;'>|</a></li>
<li>
<a href="#" id="add-folder">
<i class="fa fa-plus"></i> {{ Lang::get('laravel-filemanager::lfm.nav-new') }}
</a>
</li>
<li>
<a href="#" id="upload" data-toggle="modal" data-target="#uploadModal">
<i class="fa fa-upload"></i> {{ Lang::get('laravel-filemanager::lfm.nav-upload') }}
</a>
</li>
<li><a style='cursor:default;'>|</a></li>
<li>
<a href="#" id="thumbnail-display">
<i class="fa fa-picture-o"></i> {{ Lang::get('laravel-filemanager::lfm.nav-thumbnails') }}
</a>
</li>
<li>
<a href="#" id="list-display">
<i class="fa fa-list"></i> {{ Lang::get('laravel-filemanager::lfm.nav-list') }}
</a>
</li>
</ul>
</div>
</div>
</nav>
</div>
</div>
@if (isset($errors) && $errors->any())
<div class="row">
<div class="col-md-12">
<div class="alert alert-danger" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
<div id="content" class="fill">
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid" id="wrapper">
<div class="panel panel-primary hidden-xs">
<div class="panel-heading">
<h1 class="panel-title">{{ trans('laravel-filemanager::lfm.title-panel') }}</h1>
</div>
</div>
<div class="row">
<div class="col-sm-2 hidden-xs">
<div id="tree"></div>
</div>
<div class="col-sm-10 col-xs-12" id="main">
<nav class="navbar navbar-default" id="nav">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#nav-buttons">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand clickable hide" id="to-previous">
<i class="fa fa-arrow-left"></i>
<span class="hidden-xs">{{ trans('laravel-filemanager::lfm.nav-back') }}</span>
</a>
<a class="navbar-brand visible-xs" href="#">{{ trans('laravel-filemanager::lfm.title-panel') }}</a>
</div>
<div class="collapse navbar-collapse" id="nav-buttons">
<ul class="nav navbar-nav navbar-right">
<li>
<a class="clickable" id="thumbnail-display">
<i class="fa fa-th-large"></i>
<span>{{ trans('laravel-filemanager::lfm.nav-thumbnails') }}</span>
</a>
</li>
<li>
<a class="clickable" id="list-display">
<i class="fa fa-list"></i>
<span>{{ trans('laravel-filemanager::lfm.nav-list') }}</span>
</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
{{ trans('laravel-filemanager::lfm.nav-sort') }} <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li>
<a href="#" id="list-sort-alphabetic">
<i class="fa fa-sort-alpha-asc"></i> {{ trans('laravel-filemanager::lfm.nav-sort-alphabetic') }}
</a>
</li>
<li>
<a href="#" id="list-sort-time">
<i class="fa fa-sort-amount-asc"></i> {{ trans('laravel-filemanager::lfm.nav-sort-time') }}
</a>
</li>
</ul>
</li>
</ul>
</div>
</nav>
<div class="visible-xs" id="current_dir" style="padding: 5px 15px;background-color: #f8f8f8;color: #5e5e5e;"></div>
<div id="alerts"></div>
<div id="content"></div>
</div>
<ul id="fab">
<li>
<a href="#"></a>
<ul class="hide">
<li>
<a href="#" id="add-folder" data-mfb-label="{{ trans('laravel-filemanager::lfm.nav-new') }}">
<i class="fa fa-folder"></i>
</a>
</li>
<li>
<a href="#" id="upload" data-mfb-label="{{ trans('laravel-filemanager::lfm.nav-upload') }}">
<i class="fa fa-upload"></i>
</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="modal fade" id="uploadModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
@@ -106,56 +117,98 @@
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aia-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">{{ Lang::get('laravel-filemanager::lfm.title-upload') }}</h4>
<h4 class="modal-title" id="myModalLabel">{{ trans('laravel-filemanager::lfm.title-upload') }}</h4>
</div>
<div class="modal-body">
<form action="{{ route('unisharp.lfm.upload') }}" role='form' id='uploadForm' name='uploadForm' method='post' enctype='multipart/form-data'>
<form action="{{ route('unisharp.lfm.upload') }}" role='form' id='uploadForm' name='uploadForm' method='post' enctype='multipart/form-data' class="dropzone">
<div class="form-group" id="attachment">
<label for='upload' class='control-label'>{{ Lang::get('laravel-filemanager::lfm.message-choose') }}</label>
<div class="controls">
<div class="controls text-center">
<div class="input-group" style="width: 100%">
<input type="file" id="upload" name="upload">
<a class="btn btn-primary" id="upload-button">{{ trans('laravel-filemanager::lfm.message-choose') }}</a>
</div>
</div>
</div>
<input type='hidden' name='working_dir' id='working_dir' value='{{$working_dir}}'>
<input type='hidden' name='show_list' id='show_list' value='0'>
<input type='hidden' name='type' id='type' value='{{$file_type}}'>
<input type='hidden' name='working_dir' id='working_dir'>
<input type='hidden' name='type' id='type' value='{{ request("type") }}'>
<input type='hidden' name='_token' value='{{csrf_token()}}'>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{ Lang::get('laravel-filemanager::lfm.btn-close') }}</button>
<button type="button" class="btn btn-primary" id="upload-btn">{{ Lang::get('laravel-filemanager::lfm.btn-upload') }}</button>
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('laravel-filemanager::lfm.btn-close') }}</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="fileViewModal" tabindex="-1" role="dialog" aria-labelledby="fileLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="fileLabel">{{ Lang::get('laravel-filemanager::lfm.title-view') }}</h4>
</div>
<div class="modal-body" id="fileview_body">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{ Lang::get('laravel-filemanager::lfm.btn-close') }}</button>
</div>
</div>
</div>
<div id="lfm-loader">
<img src="{{asset('vendor/laravel-filemanager/img/loader.svg')}}">
</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.4.0/jquery-migrate.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.3.0/bootbox.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
<script src="{{ asset('vendor/laravel-filemanager/js/cropper.min.js') }}"></script>
<script src="{{ asset('vendor/laravel-filemanager/js/jquery.form.min.js') }}"></script>
@include('laravel-filemanager::script')
<script src="{{ asset('vendor/laravel-filemanager/js/dropzone.min.js') }}"></script>
<script>
var route_prefix = "{{ url('/') }}";
var lfm_route = "{{ url(config('lfm.url_prefix', config('lfm.prefix'))) }}";
var lang = {!! json_encode(trans('laravel-filemanager::lfm')) !!};
</script>
<script>{!! \File::get(base_path('vendor/unisharp/laravel-filemanager/public/js/script.js')) !!}</script>
{{-- Use the line below instead of the above if you need to cache the script. --}}
{{-- <script src="{{ asset('vendor/laravel-filemanager/js/script.js') }}"></script> --}}
<script>
$.fn.fab = function () {
var menu = this;
menu.addClass('mfb-component--br mfb-zoomin').attr('data-mfb-toggle', 'hover');
var wrapper = menu.children('li');
wrapper.addClass('mfb-component__wrap');
var parent_button = wrapper.children('a');
parent_button.addClass('mfb-component__button--main')
.append($('<i>').addClass('mfb-component__main-icon--resting fa fa-plus'))
.append($('<i>').addClass('mfb-component__main-icon--active fa fa-times'));
var children_list = wrapper.children('ul');
children_list.find('a').addClass('mfb-component__button--child');
children_list.find('i').addClass('mfb-component__child-icon');
children_list.addClass('mfb-component__list').removeClass('hide');
};
$('#fab').fab({
buttons: [
{
icon: 'fa fa-folder',
label: "{{ trans('laravel-filemanager::lfm.nav-new') }}",
attrs: {id: 'add-folder'}
},
{
icon: 'fa fa-upload',
label: "{{ trans('laravel-filemanager::lfm.nav-upload') }}",
attrs: {id: 'upload'}
}
]
});
Dropzone.options.uploadForm = {
paramName: "upload[]", // The name that will be used to transfer the file
uploadMultiple: false,
parallelUploads: 5,
clickable: '#upload-button',
dictDefaultMessage: 'Or drop files here to upload',
init: function() {
var _this = this; // For the closure
this.on('success', function(file, response) {
if (response == 'OK') {
refreshFoldersAndItems('OK');
} else {
this.defaultOptions.error(file, response.join('\n'));
}
});
},
acceptedFiles: "{{ lcfirst(str_singular(request('type') ?: '')) == 'image' ? implode(',', config('lfm.valid_image_mimetypes')) : implode(',', config('lfm.valid_file_mimetypes')) }}",
maxFilesize: ({{ lcfirst(str_singular(request('type') ?: '')) == 'image' ? config('lfm.max_image_size') : config('lfm.max_file_size') }} / 1000)
}
</script>
</body>
</html>

View File

@@ -1,40 +0,0 @@
<?php $file_name = $file_info[$key]['name'];?>
@if($type == 'Images')
<?php $thumb_src = $thumb_url . $file_name;?>
@endif
<div class="col-sm-4 col-md-3 col-lg-2 img-row">
<div class="thumbnail thumbnail-img text-center" data-id="{{ $file_name }}" id="img_thumbnail_{{ $key }}">
@if($type == 'Images')
<img id="{{ $file_name }}" src="{{ asset($thumb_src) }}" alt="" class="pointer" onclick="useFile('{{ $file_name }}')">
@else
<i class="fa {{ $file['icon'] }} fa-5x" style="height:200px;cursor:pointer;padding-top:60px;" onclick="useFile('{{ $file_name }}')"></i>
@endif
</div>
<div class="caption text-center">
<div class="btn-group">
<button type="button" onclick="useFile('{{ $file_name }}')" class="btn btn-default btn-xs">
{{ str_limit($file_name, $limit = 10, $end = '...') }}
</button>
<button type="button" class="btn btn-default dropdown-toggle btn-xs" data-toggle="dropdown" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a href="javascript:rename('{{ $file_name }}')"><i class="fa fa-edit fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-rename') }}</a></li>
<li><a href="javascript:download('{{ $file_name }}')"><i class="fa fa-download fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-download') }}</a></li>
<li class="divider"></li>
@if($type == 'Images')
<li><a href="javascript:fileView('{{ $file_name }}')"><i class="fa fa-image fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-view') }}</a></li>
{{--<li><a href="javascript:notImp()">Rotate</a></li>--}}
<li><a href="javascript:resizeImage('{{ $file_name }}')"><i class="fa fa-arrows fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-resize') }}</a></li>
<li><a href="javascript:cropImage('{{ $file_name }}')"><i class="fa fa-crop fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-crop') }}</a></li>
<li class="divider"></li>
@endif
<li><a href="javascript:trash('{{ $file_name }}')"><i class="fa fa-trash fa-fw"></i> {{ Lang::get('laravel-filemanager::lfm.menu-delete') }}</a></li>
</ul>
</div>
</div>
</div>

View File

@@ -1,5 +1,5 @@
@if((sizeof($file_info) > 0) || (sizeof($directories) > 0))
<table class="table table-condensed table-striped">
@if((sizeof($files) > 0) || (sizeof($directories) > 0))
<table class="table table-responsive table-condensed table-striped hidden-xs table-list-view">
<thead>
<th style='width:50%;'>{{ Lang::get('laravel-filemanager::lfm.title-item') }}</th>
<th>{{ Lang::get('laravel-filemanager::lfm.title-size') }}</th>
@@ -8,62 +8,76 @@
<th>{{ Lang::get('laravel-filemanager::lfm.title-action') }}</th>
</thead>
<tbody>
@foreach($directories as $key => $dir_name)
@foreach($items as $item)
<tr>
<td>
<i class="fa fa-folder-o"></i>
<a class="folder-item pointer" data-id="{{ $dir_name['long'] }}">
{{ $dir_name['short'] }}
<i class="fa {{ $item->icon }}"></i>
<a class="{{ $item->is_file ? 'file' : 'folder'}}-item clickable" data-id="{{ $item->is_file ? $item->url : $item->path }}" title="{{$item->name}}">
{{ str_limit($item->name, $limit = 40, $end = '...') }}
</a>
</td>
<td></td>
<td>{{ Lang::get('laravel-filemanager::lfm.type-folder') }}</td>
<td></td>
<td></td>
</tr>
@endforeach
@foreach($file_info as $file)
<tr>
<td>
@if($type == 'Images')
<i class="fa fa-image"></i>
@else
<i class="fa {{ $file['icon'] }}"></i>
<td>{{ $item->size }}</td>
<td>{{ $item->type }}</td>
<td>{{ $item->time }}</td>
<td class="actions">
@if($item->is_file)
<a href="javascript:download('{{ $item->name }}')" title="{{ Lang::get('laravel-filemanager::lfm.menu-download') }}">
<i class="fa fa-download fa-fw"></i>
</a>
@if($item->thumb)
<a href="javascript:fileView('{{ $item->url }}', '{{ $item->updated }}')" title="{{ Lang::get('laravel-filemanager::lfm.menu-view') }}">
<i class="fa fa-image fa-fw"></i>
</a>
<a href="javascript:cropImage('{{ $item->name }}')" title="{{ Lang::get('laravel-filemanager::lfm.menu-crop') }}">
<i class="fa fa-crop fa-fw"></i>
</a>
<a href="javascript:resizeImage('{{ $item->name }}')" title="{{ Lang::get('laravel-filemanager::lfm.menu-resize') }}">
<i class="fa fa-arrows fa-fw"></i>
</a>
@endif
@endif
<?php $file_name = $file['name'];?>
<a href="javascript:useFile('{{ $file_name }}')">
{{ $file_name }}
<a href="javascript:rename('{{ $item->name }}')" title="{{ Lang::get('laravel-filemanager::lfm.menu-rename') }}">
<i class="fa fa-edit fa-fw"></i>
</a>
&nbsp;&nbsp;
<a href="javascript:rename('{{ $file_name }}')">
<i class="fa fa-edit"></i>
</a>
</td>
<td>
{{ $file['size'] }}
</td>
<td>
{{ $file['type'] }}
</td>
<td>
{{ date("Y-m-d h:m", $file['created']) }}
</td>
<td>
<a href="javascript:trash('{{ $file_name }}')">
<a href="javascript:trash('{{ $item->name }}')" title="{{ Lang::get('laravel-filemanager::lfm.menu-delete') }}">
<i class="fa fa-trash fa-fw"></i>
</a>
@if($type == 'Images')
<a href="javascript:cropImage('{{ $file_name }}')">
<i class="fa fa-crop fa-fw"></i>
</a>
<a href="javascript:resizeImage('{{ $file_name }}')">
<i class="fa fa-arrows fa-fw"></i>
</a>
{{--<a href="javascript:notImp()">--}}
{{--<i class="fa fa-rotate-left fa-fw"></i>--}}
{{--</a>--}}
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
<table class="table visible-xs">
<tbody>
@foreach($items as $item)
<tr>
<td>
<div class="media" style="height: 70px;">
<div class="media-left">
<div class="square {{ $item->is_file ? 'file' : 'folder'}}-item clickable" data-id="{{ $item->is_file ? $item->url : $item->path }}">
@if($item->thumb)
<img src="{{ $item->thumb }}">
@else
<i class="fa {{ $item->icon }} fa-5x"></i>
@endif
</div>
</div>
<div class="media-body" style="padding-top: 10px;">
<div class="media-heading">
<p>
<a class="{{ $item->is_file ? 'file' : 'folder'}}-item clickable" data-id="{{ $item->is_file ? $item->url : $item->path }}">
{{ str_limit($item->name, $limit = 20, $end = '...') }}
</a>
&nbsp;&nbsp;
{{-- <a href="javascript:rename('{{ $item->name }}')">
<i class="fa fa-edit"></i>
</a> --}}
</p>
</div>
<p style="color: #aaa;font-weight: 400">{{ $item->time }}</p>
</div>
</div>
</td>
</tr>
@endforeach
@@ -71,9 +85,5 @@
</table>
@else
<div class="row">
<div class="col-md-12">
<p>{{ Lang::get('laravel-filemanager::lfm.message-empty') }}</p>
</div>
</div>
<p>{{ trans('laravel-filemanager::lfm.message-empty') }}</p>
@endif

View File

@@ -1,57 +1,57 @@
<div class="container">
<div class="row fill">
<div class="col-md-8 fill" id="containment">
<img id="resize" src="{{ asset($img) }}" height="{{ $height }}" width="{{ $width }}">
</div>
<div class="col-md-4 fill">
<div class="row">
<div class="col-md-8" id="containment">
<img id="resize" src="{{ $img->url . '?timestamp=' . $img->updated }}" height="{{ $height }}" width="{{ $width }}">
</div>
<div class="col-md-4">
<table class="table table-compact table-striped">
<thead></thead>
<tbody>
@if ($scaled)
<tr>
<td>{{ Lang::get('laravel-filemanager::lfm.resize-ratio') }}</td>
<td>{{ number_format($ratio, 2) }}</td>
</tr>
<tr>
<td>{{ Lang::get('laravel-filemanager::lfm.resize-scaled') }}</td>
<td>
{{ Lang::get('laravel-filemanager::lfm.resize-true') }}
</td>
</tr>
@endif
<tr>
<td>{{ Lang::get('laravel-filemanager::lfm.resize-old-height') }}</td>
<td>{{ $original_height }}px</td>
</tr>
<tr>
<td>{{ Lang::get('laravel-filemanager::lfm.resize-old-width') }}</td>
<td>{{ $original_width }}px</td>
</tr>
<tr>
<td>{{ Lang::get('laravel-filemanager::lfm.resize-new-height') }}</td>
<td><span id="height_display"></span></td>
</tr>
<tr>
<td>{{ Lang::get('laravel-filemanager::lfm.resize-new-width') }}</td>
<td><span id="width_display"></span></td>
</tr>
</tbody>
</table>
<table class="table table-compact table-striped">
<thead></thead>
<tbody>
@if ($scaled)
<tr>
<td>{{ trans('laravel-filemanager::lfm.resize-ratio') }}</td>
<td>{{ number_format($ratio, 2) }}</td>
</tr>
<tr>
<td>{{ trans('laravel-filemanager::lfm.resize-scaled') }}</td>
<td>
{{ trans('laravel-filemanager::lfm.resize-true') }}
</td>
</tr>
@endif
<tr>
<td>{{ trans('laravel-filemanager::lfm.resize-old-height') }}</td>
<td>{{ $original_height }}px</td>
</tr>
<tr>
<td>{{ trans('laravel-filemanager::lfm.resize-old-width') }}</td>
<td>{{ $original_width }}px</td>
</tr>
<tr>
<td>{{ trans('laravel-filemanager::lfm.resize-new-height') }}</td>
<td><span id="height_display"></span></td>
</tr>
<tr>
<td>{{ trans('laravel-filemanager::lfm.resize-new-width') }}</td>
<td><span id="width_display"></span></td>
</tr>
</tbody>
</table>
<button class="btn btn-primary" onclick="doResize()">{{ Lang::get('laravel-filemanager::lfm.btn-resize') }}</button>
<button class="btn btn-info" onclick="loadItems()">{{ Lang::get('laravel-filemanager::lfm.btn-cancel') }}</button>
<button class="btn btn-primary" onclick="doResize()">{{ trans('laravel-filemanager::lfm.btn-resize') }}</button>
<button class="btn btn-info" onclick="loadItems()">{{ trans('laravel-filemanager::lfm.btn-cancel') }}</button>
<input type="hidden" name="ratio" value="{{ $ratio }}"><br>
<input type="hidden" name="scaled" value="{{ $scaled }}"><br>
<input type="hidden" id="original_height" name="original_height" value="{{ $original_height }}"><br>
<input type="hidden" id="original_width" name="original_width" value="{{ $original_width }}"><br>
<input type="hidden" id="height" name="height" value=""><br>
<input type="hidden" id="width" name="width">
<input type="hidden" id="img" name="img" value="{{ $img->name }}">
<input type="hidden" name="ratio" value="{{ $ratio }}"><br>
<input type="hidden" name="scaled" value="{{ $scaled }}"><br>
<input type="hidden" id="original_height" name="original_height" value="{{ $original_height }}"><br>
<input type="hidden" id="original_width" name="original_width" value="{{ $original_width }}"><br>
<input type="hidden" id="height" name="height" value="{{ $height }}"><br>
<input type="hidden" id="width" name="width" value="{{ $width }}">
</div>
</div>
</div>
<script>
$(document).ready(function () {
$("#height_display").html($("#resize").height() + "px");
@@ -71,25 +71,12 @@
});
function doResize() {
$.ajax({
type: "GET",
dataType: "text",
url: "{{ route('unisharp.lfm.performResize') }}",
data: {
img: '{{ $img }}',
working_dir: $("#working_dir").val(),
dataX: $("#dataX").val(),
dataY: $("#dataY").val(),
dataHeight: $("#height").val(),
dataWidth: $("#width").val()
},
cache: false
}).done(function (data) {
if (data == "OK") {
loadItems();
} else {
notify(data);
}
});
performLfmRequest('doresize', {
img: $("#img").val(),
dataX: $("#dataX").val(),
dataY: $("#dataY").val(),
dataHeight: $("#height").val(),
dataWidth: $("#width").val()
}).done(loadItems);
}
</script>

View File

@@ -1,413 +0,0 @@
<script>
var ds = '/';
var home_dir = ds + "{{ (Config::get('lfm.allow_multi_user')) ? Auth::user()->user_field : '' }}";
var shared_folder = ds + "{{ Config::get('lfm.shared_folder_name') }}";
var image_url = "{{ asset(Config::get('lfm.images_url')) }}";
var file_url = "{{ asset(Config::get('lfm.files_url')) }}";
$(document).ready(function () {
bootbox.setDefaults({locale:"{{ Lang::get('laravel-filemanager::lfm.locale-bootbox') }}"});
// load folders
loadFolders();
loadItems();
setOpenFolders();
});
// ======================
// == Navbar actions ==
// ======================
$('#nav-buttons a').click(function (e) {
e.preventDefault();
});
$('#to-previous').click(function () {
var working_dir = $('#working_dir').val();
var last_ds = working_dir.lastIndexOf(ds);
var previous_dir = working_dir.substring(0, last_ds);
$('#working_dir').val(previous_dir);
loadItems();
setOpenFolders();
});
$('#add-folder').click(function () {
bootbox.prompt("{{ Lang::get('laravel-filemanager::lfm.message-name') }}", function (result) {
if (result !== null) {
createFolder(result);
}
});
});
$('#upload-btn').click(function () {
var options = {
beforeSubmit: showRequest,
success: showResponse,
error: showError
};
function showRequest(formData, jqForm, options) {
$('#upload-btn').html('<i class="fa fa-refresh fa-spin"></i> {{ Lang::get("laravel-filemanager::lfm.btn-uploading") }}');
return true;
}
function showResponse(responseText, statusText, xhr, $form) {
$('#uploadModal').modal('hide');
$('#upload-btn').html('{{ Lang::get("laravel-filemanager::lfm.btn-upload") }}');
if (responseText != 'OK'){
notify(responseText);
}
$('#upload').val('');
loadItems();
}
function showError(jqXHR, textStatus, errorThrown) {
$('#upload-btn').html('{{ Lang::get("laravel-filemanager::lfm.btn-upload") }}');
if (jqXHR.status == 413) {
notify('{{ Lang::get("laravel-filemanager::lfm.error-too-large") }}');
} else if (textStatus == 'error') {
notify('{{ Lang::get("laravel-filemanager::lfm.error-other") }}' + errorThrown);
} else {
notify('{{ Lang::get("laravel-filemanager::lfm.error-other") }}' + textStatus + '<br>' + errorThrown);
}
}
$('#uploadForm').ajaxSubmit(options);
return false;
});
$('#thumbnail-display').click(function () {
$('#show_list').val(0);
loadItems();
});
$('#list-display').click(function () {
$('#show_list').val(1);
loadItems();
});
// ======================
// == Folder actions ==
// ======================
$(document).on('click', '.folder-item', function (e) {
clickFolder($(this).data('id'));
});
function clickFolder(new_dir) {
$('#working_dir').val(new_dir);
setOpenFolders();
loadItems();
}
function dir_starts_with(str) {
return $('#working_dir').val().indexOf(str) === 0;
}
function setOpenFolders() {
var folders = $('.folder-item');
for (var i = folders.length - 1; i >= 0; i--) {
// close folders that are not parent
if (! dir_starts_with($(folders[i]).data('id'))) {
$(folders[i]).children('i').removeClass('fa-folder-open').addClass('fa-folder');
} else {
$(folders[i]).children('i').removeClass('fa-folder').addClass('fa-folder-open');
}
}
}
// ====================
// == Ajax actions ==
// ====================
function loadFolders() {
$.ajax({
type: 'GET',
dataType: 'html',
url: '{{ route("unisharp.lfm.getFolders") }}',
data: {
working_dir: $('#working_dir').val(),
show_list: $('#show_list').val(),
type: $('#type').val()
},
cache: false
}).done(function (data) {
$('#tree1').html(data);
});
}
function loadItems() {
var working_dir = $('#working_dir').val();
console.log('Current working_dir : ' + working_dir);
$.ajax({
type: 'GET',
dataType: 'html',
url: '{{ route("unisharp.lfm.getItems") }}',
data: {
working_dir: working_dir,
show_list: $('#show_list').val(),
type: $('#type').val()
},
cache: false
}).done(function (data) {
$('#content').html(data);
$('#nav-buttons').removeClass('hidden');
$('.dropdown-toggle').dropdown();
setOpenFolders();
});
}
function createFolder(folder_name) {
$.ajax({
type: 'GET',
dataType: 'text',
url: '{{ route("unisharp.lfm.getAddfolder") }}',
data: {
name: folder_name,
working_dir: $('#working_dir').val(),
type: $('#type').val()
},
cache: false
}).done(function (data) {
if (data == 'OK') {
loadFolders();
loadItems();
setOpenFolders();
} else {
notify(data);
}
});
}
function rename(item_name) {
bootbox.prompt({
title: "{{ Lang::get('laravel-filemanager::lfm.message-rename') }}",
value: item_name,
callback: function (result) {
if (result !== null) {
$.ajax({
type: 'GET',
dataType: 'text',
url: '{{ route("unisharp.lfm.getRename") }}',
data: {
file: item_name,
working_dir: $('#working_dir').val(),
new_name: result,
type: $('#type').val()
},
cache: false
}).done(function (data) {
if (data == 'OK') {
loadItems();
loadFolders();
} else {
notify(data);
}
});
}
}
});
}
function trash(item_name) {
bootbox.confirm("{{ Lang::get('laravel-filemanager::lfm.message-delete') }}", function (result) {
if (result == true) {
$.ajax({
type: 'GET',
dataType: 'text',
url: '{{ route("unisharp.lfm.getDelete") }}',
data: {
working_dir: $('#working_dir').val(),
items: item_name,
type: $('#type').val()
},
cache: false
}).done(function (data) {
if (data != 'OK') {
notify(data);
} else {
if ($('#working_dir').val() === home_dir || $('#working_dir').val() === shared_folder) {
loadFolders();
}
loadItems();
}
});
}
});
}
function cropImage(image_name) {
$.ajax({
type: 'GET',
dataType: 'text',
url: '{{ route("unisharp.lfm.getCrop") }}',
data: {
img: image_name,
working_dir: $('#working_dir').val(),
type: $('#type').val()
},
cache: false
}).done(function (data) {
$('#nav-buttons').addClass('hidden');
$('#content').html(data);
});
}
function resizeImage(image_name) {
$.ajax({
type: 'GET',
dataType: 'text',
url: '{{ route("unisharp.lfm.getResize") }}',
data: {
img: image_name,
working_dir: $('#working_dir').val(),
type: $('#type').val()
},
cache: false
}).done(function (data) {
$('#nav-buttons').addClass('hidden');
$('#content').html(data);
});
}
function download(file_name) {
location.href = '{{ route("unisharp.lfm.getDownload") }}?'
+ 'working_dir='
+ $('#working_dir').val()
+ '&type='
+ $('#type').val()
+ '&file='
+ file_name;
}
// ==================================
// == Ckeditor, Bootbox, preview ==
// ==================================
function useFile(file) {
function getUrlParam(paramName) {
var reParam = new RegExp('(?:[\?&]|&)' + paramName + '=([^&]+)', 'i');
var match = window.location.search.match(reParam);
return ( match && match.length > 1 ) ? match[1] : null;
}
function useTinymce3(url) {
var win = tinyMCEPopup.getWindowArg("window");
win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = url;
if (typeof(win.ImageDialog) != "undefined") {
// Update image dimensions
if (win.ImageDialog.getImageData) {
win.ImageDialog.getImageData();
}
// Preview if necessary
if (win.ImageDialog.showPreviewImage) {
win.ImageDialog.showPreviewImage(url);
}
}
tinyMCEPopup.close();
}
function useTinymce4AndColorbox(url, field_name) {
parent.document.getElementById(field_name).value = url;
if(typeof parent.tinyMCE !== "undefined") {
parent.tinyMCE.activeEditor.windowManager.close();
}
if(typeof parent.$.fn.colorbox !== "undefined") {
parent.$.fn.colorbox.close();
}
}
function useCkeditor3(url) {
if (window.opener) {
// Popup
window.opener.CKEDITOR.tools.callFunction(getUrlParam('CKEditorFuncNum'), url);
} else {
// Modal (in iframe)
parent.CKEDITOR.tools.callFunction(getUrlParam('CKEditorFuncNum'), url);
parent.CKEDITOR.tools.callFunction(getUrlParam('CKEditorCleanUpFuncNum'));
}
}
function useFckeditor2(url) {
var p = url;
var w = data['Properties']['Width'];
var h = data['Properties']['Height'];
window.opener.SetUrl(p,w,h);
}
function getFileUrl(file) {
var path = $('#working_dir').val();
var item_url = image_url;
@if ("Images" !== $file_type)
item_url = file_url;
@endif
if (path != ds) {
item_url = item_url + path + ds;
}
var url = item_url + file;
url = url.replace(/\\/g, "/");
return url;
}
var url = getFileUrl(file);
var field_name = getUrlParam('field_name');
var is_ckeditor = getUrlParam('CKEditor');
var is_fcke = typeof data != 'undefined' && data['Properties']['Width'] != '';
if (window.opener || window.tinyMCEPopup || field_name || getUrlParam('CKEditorCleanUpFuncNum') || is_ckeditor) {
if (window.tinyMCEPopup) { // use TinyMCE > 3.0 integration method
useTinymce3(url);
} else if (field_name) { // tinymce 4 and colorbox
useTinymce4AndColorbox(url, field_name);
} else if(is_ckeditor) { // use CKEditor 3.0 + integration method
useCkeditor3(url);
} else if (is_fcke) { // use FCKEditor 2.0 integration method
useFckeditor2(url);
} else { // standalone button or other situations
window.opener.SetUrl(url);
}
if (window.opener) {
window.close();
}
} else {
alert('Editor not found, cannot apply image.');
}
}
//end useFile
function notImp() {
bootbox.alert('Not yet implemented!');;
}
function notify(x) {
bootbox.alert(x);
}
function fileView(x) {
var rnd = makeRandom();
var img_src = image_url + $('#working_dir').val() + ds + x;
var img = "<img class='img img-responsive center-block' src='" + img_src + "'>";
$('#fileview_body').html(img);
$('#fileViewModal').modal();
}
function makeRandom() {
var text = '';
var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
for (var i = 0; i < 20; i++) {
text += possible.charAt(Math.floor(Math.random() * possible.length));
}
return text;
}
</script>

View File

@@ -1,29 +1,19 @@
<ul class="list-unstyled">
@if(Config::get('lfm.allow_multi_user'))
<li style="margin-left: -10px;">
<a class="pointer folder-item" data-id="{{ $user_dir }}">
<i class="fa fa-folder-open"></i> {{ Lang::get('laravel-filemanager::lfm.title-root') }}
</a>
</li>
@foreach($dirs as $key => $dir_name)
<li>
<a class="pointer folder-item" data-id="{{ $dir_name['long'] }}">
<i class="fa fa-folder"></i> {{ $dir_name['short'] }}
</a>
</li>
@endforeach
<hr>
@endif
<li style="margin-left: -10px;">
<a class="pointer folder-item" data-id="{{ $share_dir }}">
<i class="fa fa-folder"></i> {{ Lang::get('laravel-filemanager::lfm.title-shares') }}
</a>
</li>
@foreach($shares as $key => $dir_name)
<li>
<a class="pointer folder-item" data-id="{{ $dir_name['long'] }}">
<i class="fa fa-folder"></i> {{ $dir_name['short'] }}
</a>
</li>
@foreach($root_folders as $root_folder)
<li>
<a class="clickable folder-item" data-id="{{ $root_folder->path }}">
<i class="fa fa-folder"></i> {{ $root_folder->name }}
</a>
</li>
@foreach($root_folder->children as $directory)
<li style="margin-left: 10px;">
<a class="clickable folder-item" data-id="{{ $directory->path }}">
<i class="fa fa-folder"></i> {{ $directory->name }}
</a>
</li>
@endforeach
@if($root_folder->has_next)
<hr>
@endif
@endforeach
</ul>