Update v1.0.6

This commit is contained in:
Bhanu Slathia
2016-02-16 23:24:52 +05:30
parent c710c20b9e
commit b1f62846ab
7662 changed files with 1361647 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
The MIT License (MIT)
Copyright (c) 2015 Trevor Sawler <https://github.com/tsawler>
Copyright (c) 2015 All contributors from GitHub
Copyright (c) 2015 UniSharp
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,223 @@
# laravel-filemanager
A files and images management user interface with file uploading support. (Works well with CKEditor and TinyMCE)
PR is welcome!
## Overview
* The project was forked from [tsawler/laravel-filemanager](http://packalyst.com/packages/package/tsawler/laravel-filemanager)
* Support public and private folders for multi users
* Customizable views, routes and middlewares
* Supported locales : en, fr, zh-TW, zh-CN, pt-BR
## Requirements
* php >= 5.5
* Laravel 5
* requires [intervention/image](https://github.com/Intervention/image) (to make thumbs, crop and resize images).
## Installation
1. Install package
```bash
composer require unisharp/laravel-filemanager
```
1. Edit `config/app.php` :
Add service providers
```php
Unisharp\Laravelfilemanager\LaravelFilemanagerServiceProvider::class,
Intervention\Image\ImageServiceProvider::class,
```
And add class aliases
```php
'Image' => Intervention\Image\Facades\Image::class,
```
1. Publish the package's config and assets :
```bash
php artisan vendor:publish --tag=lfm_config
php artisan vendor:publish --tag=lfm_public
```
1. Ensure that the files & images directories (in `config/lfm.php`) are writable by your web server.
## WYSIWYG Editor Integration:
### Option 1: CKEditor
1. Install [laravel-ckeditor](https://github.com/UniSharp/laravel-ckeditor) package
1. Modify the views
Sample 1 - Replace by ID:
```html
<script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script>
<textarea id="my-editor" name="content" class="form-control">{!! old('content', $content) !!}</textarea>
<script>
CKEDITOR.replace( 'my-editor', {
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()}}'
});
</script>
```
Sample 2 - With JQuery Selector:
```html
<script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script>
<script src="/vendor/unisharp/laravel-ckeditor/adapters/jquery.js"></script>
<textarea name="content" class="form-control my-editor">{!! old('content', $content) !!}</textarea>
<script>
$('textarea.my-editor').ckeditor({
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()}}'
});
</script>
```
### Option 2: TinyMCE4
```html
<script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
<textarea name="content" class="form-control my-editor">{!! old('content', $content) !!}</textarea>
<script>
var editor_config = {
path_absolute : "/",
selector: "textarea",
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"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image media",
relative_urls: false,
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;
if (type == 'image') {
cmsURL = cmsURL + "&type=Images";
} else {
cmsURL = cmsURL + "&type=Files";
}
tinyMCE.activeEditor.windowManager.open({
file : cmsURL,
title : 'Filemanager',
width : x * 0.8,
height : y * 0.8,
resizable : "yes",
close_previous : "no"
});
}
};
tinymce.init(editor_config);
</script>
```
## Config
In `config/lfm.php` :
```php
'rename_file' => true,
// true : files will be renamed as uniqid
// false : files will remain original names
'use_package_routes' => true,
// set this to false to customize route for file manager
'middlewares' => ['auth'],
// determine middlewares that apply to all file manager routes
'allow_multi_user' => true,
// true : user can upload files to shared folder and their own folder
// false : all files are put together in shared folder
'user_field' => 'id',
// determine which column of users table will be used as user's folder name
'shared_folder_name' => 'shares',
// the name of shared folder
'thumb_folder_name' => 'thumbs',
// the name of thumb folder
'images_dir' => 'public/photos/',
'images_url' => '/photos/',
// path and url of images
'files_dir' => 'public/files/',
'files_url' => '/files/',
// path and url of files
```
## Customization
1. If the route is changed, make sure urls below is correspond to your route :
CKEditor
```javascript
<script>
CKEDITOR.replace( 'editor', {
filebrowserImageBrowseUrl: '/your-custom-route?type=Images',
filebrowserBrowseUrl: '/your-custom-route?type=Files',
});
</script>
```
And be sure to include the `?type=Images` or `?type=Files` parameter.
TinyMCE
```javascript
...
var cmsURL = editor_config.path_absolute + 'your-custom-route?field_name='+field_name+'&lang='+ tinymce.settings.language;
if (type == 'image') {
cmsURL = cmsURL + "&type=Images";
} else {
cmsURL = cmsURL + "&type=Files";
}
...
```
1. To customize the views :
on Linux :
```bash
cp -rf vendor/unisharp/laravel-filemanager/src/views/* resources/views/vendor/laravel-filemanager/
```
on MAC :
```bash
cp -rf vendor/unisharp/laravel-filemanager/src/views/ resources/views/vendor/laravel-filemanager/
```
## Screenshots
![FileManager screenshot 1](http://unisharp.com/img/filemanager1.png)
![FileManager screenshot 2](http://unisharp.com/img/filemanager2.png)
## Credits
* All contibutors from GitHub. (issues / PR)
* Special thanks to
* [@taswler](https://github.com/tsawler) the author.
* [@welcoMattic](https://github.com/welcoMattic) providing fr translations and lots of bugfixes.
* [@fraterblack](https://github.com/fraterblack) TinyMCE 4 support and pt-BR translations.
* [@olivervogel](https://github.com/olivervogel) for the awesome [image library](https://github.com/Intervention/image)
* [All @UniSharp members](https://github.com/UniSharp)

View File

@@ -0,0 +1,34 @@
{
"name": "unisharp/laravel-filemanager",
"description": "A file upload/editor intended for use with Laravel 5 and CKEditor / TinyMCE",
"license": "MIT",
"keywords": [
"filemanager",
"laravel",
"ckeditor",
"tinymce",
"upload",
"file",
"manager"
],
"authors": [
{
"name": "Trevor Sawler",
"email": "trevor.sawler@gmail.com"
},
{
"name": "UniSharp Ltd.",
"email": "unisharp-service@unisharp.com"
}
],
"require": {
"php": ">=5.5.0",
"illuminate/support": ">=4.2.0",
"intervention/image": "2.*"
},
"autoload": {
"psr-4": {
"Unisharp\\Laravelfilemanager\\": "src/"
}
}
}

View File

@@ -0,0 +1,9 @@
/*!
* Cropper v0.9.1
* https://github.com/fengyuanchen/cropper
*
* Copyright (c) 2014-2015 Fengyuan Chen and contributors
* Released under the MIT license
*
* Date: 2015-03-21T04:58:27.265Z
*/.cropper-container{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.cropper-container img{display:block;width:100%;min-width:0!important;max-width:none!important;height:100%;min-height:0!important;max-height:none!important;image-orientation:0deg!important}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal{position:absolute;top:0;right:0;bottom:0;left:0}.cropper-drag-box{background-color:#fff;filter:alpha(opacity=0);opacity:0}.cropper-modal{background-color:#000;filter:alpha(opacity=50);opacity:.5}.cropper-view-box{display:block;width:100%;height:100%;overflow:hidden;outline:#69f solid 1px;outline-color:rgba(102,153,255,.75)}.cropper-dashed{position:absolute;display:block;filter:alpha(opacity=50);border:0 dashed #fff;opacity:.5}.cropper-dashed.dashed-h{top:33.33333333%;left:0;width:100%;height:33.33333333%;border-top-width:1px;border-bottom-width:1px}.cropper-dashed.dashed-v{top:0;left:33.33333333%;width:33.33333333%;height:100%;border-right-width:1px;border-left-width:1px}.cropper-face,.cropper-line,.cropper-point{position:absolute;display:block;width:100%;height:100%;filter:alpha(opacity=10);opacity:.1}.cropper-face{top:0;left:0;cursor:move;background-color:#fff}.cropper-line{background-color:#69f}.cropper-line.line-e{top:0;right:-3px;width:5px;cursor:e-resize}.cropper-line.line-n{top:-3px;left:0;height:5px;cursor:n-resize}.cropper-line.line-w{top:0;left:-3px;width:5px;cursor:w-resize}.cropper-line.line-s{bottom:-3px;left:0;height:5px;cursor:s-resize}.cropper-point{width:5px;height:5px;background-color:#69f;filter:alpha(opacity=75);opacity:.75}.cropper-point.point-e{top:50%;right:-3px;margin-top:-3px;cursor:e-resize}.cropper-point.point-n{top:-3px;left:50%;margin-left:-3px;cursor:n-resize}.cropper-point.point-w{top:50%;left:-3px;margin-top:-3px;cursor:w-resize}.cropper-point.point-s{bottom:-3px;left:50%;margin-left:-3px;cursor:s-resize}.cropper-point.point-ne{top:-3px;right:-3px;cursor:ne-resize}.cropper-point.point-nw{top:-3px;left:-3px;cursor:nw-resize}.cropper-point.point-sw{bottom:-3px;left:-3px;cursor:sw-resize}.cropper-point.point-se{right:-3px;bottom:-3px;width:20px;height:20px;cursor:se-resize;filter:alpha(opacity=100);opacity:1}.cropper-point.point-se:before{position:absolute;right:-50%;bottom:-50%;display:block;width:200%;height:200%;content:" ";background-color:#69f;filter:alpha(opacity=0);opacity:0}@media (min-width:768px){.cropper-point.point-se{width:15px;height:15px}}@media (min-width:992px){.cropper-point.point-se{width:10px;height:10px}}@media (min-width:1200px){.cropper-point.point-se{width:5px;height:5px;filter:alpha(opacity=75);opacity:.75}}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-invisible{filter:alpha(opacity=0);opacity:0}.cropper-hide{position:fixed;top:0;left:0;z-index:-1;width:auto!important;min-width:0!important;max-width:none!important;height:auto!important;min-height:0!important;max-height:none!important;filter:alpha(opacity=0);opacity:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-canvas,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}

View File

@@ -0,0 +1,58 @@
html, body {
height: 100%;
}
.img-row {
overflow: visible;
margin-bottom: 10px;
}
.container {
height: 100%;
margin-left: 5px;
margin-right: 5px;
width: 99%;
}
.fill {
height: 100%;
min-height: 100%;
}
.wrapper {
height: 100%;
}
#lfm-leftcol {
min-height: 80%;
}
#right-nav {
border-left: 1px solid silver;
height: 90%;
min-height: 90%;
}
#content {
overflow: auto;
}
#tree1 {
margin-left: 5px;
}
.pointer {
cursor: pointer;
}
.img-preview {
background-color: #f7f7f7;
overflow: hidden;
width: 100%;
text-align: center;
height: 200px;
}
.hidden {
display: none;
}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,49 @@
<?php namespace Unisharp\Laravelfilemanager;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Config;
/**
* Class LaravelFilemanagerServiceProvider
* @package Unisharp\Laravelfilemanager
*/
class LaravelFilemanagerServiceProvider extends ServiceProvider {
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
if (Config::get('lfm.use_package_routes'))
include __DIR__ . '/routes.php';
$this->loadTranslationsFrom(__DIR__.'/lang', 'laravel-filemanager');
$this->loadViewsFrom(__DIR__.'/views', 'laravel-filemanager');
$this->publishes([
__DIR__ . '/config/lfm.php' => base_path('config/lfm.php'),
], 'lfm_config');
$this->publishes([
__DIR__.'/../public' => public_path('vendor/laravel-filemanager'),
], 'lfm_public');
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app['laravel-filemanager'] = $this->app->share(function ()
{
return true;
});
}
}

View File

@@ -0,0 +1,52 @@
<?php
return [
'rename_file' => true,
'use_package_routes' => true,
'middlewares' => ['auth'],
'allow_multi_user' => true,
'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/',
'file_type_array' => [
'pdf' => 'Adobe Acrobat',
'docx' => 'Microsoft Word',
'docx' => 'Microsoft Word',
'xls' => 'Microsoft Excel',
'xls' => 'Microsoft Excel',
'zip' => 'Archive',
'gif' => 'GIF Image',
'jpg' => 'JPEG Image',
'jpeg' => 'JPEG Image',
'png' => 'PNG Image',
'ppt' => 'Microsoft PowerPoint',
'pptx' => 'Microsoft PowerPoint',
],
'file_icon_array' => [
'pdf' => 'fa-file-pdf-o',
'docx' => 'fa-file-word-o',
'docx' => 'fa-file-word-o',
'xls' => 'fa-file-excel-o',
'xls' => 'fa-file-excel-o',
'zip' => 'fa-file-archive-o',
'gif' => 'fa-file-image-o',
'jpg' => 'fa-file-image-o',
'jpeg' => 'fa-file-image-o',
'png' => 'fa-file-image-o',
'ppt' => 'fa-file-powerpoint-o',
'pptx' => 'fa-file-powerpoint-o',
],
];

View File

@@ -0,0 +1,52 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\View;
use Intervention\Image\Facades\Image;
/**
* Class CropController
* @package Unisharp\Laravelfilemanager\controllers
*/
class CropController extends LfmController {
/**
* Show crop page
*
* @return mixed
*/
public function getCrop()
{
$working_dir = Input::get('working_dir');
$img = parent::getUrl() . Input::get('img');
return View::make('laravel-filemanager::crop')
->with(compact('working_dir', 'img'));
}
/**
* Crop the image (called via ajax)
*/
public function getCropimage()
{
$image = Input::get('img');
$dataX = Input::get('dataX');
$dataY = Input::get('dataY');
$dataHeight = Input::get('dataHeight');
$dataWidth = Input::get('dataWidth');
// crop image
$tmp_img = Image::make(public_path() . $image);
$tmp_img->crop($dataWidth, $dataHeight, $dataX, $dataY)
->save(public_path() . $image);
// make new thumbnail
$thumb_img = Image::make(public_path() . $image);
$thumb_img->fit(200, 200)
->save(parent::getPath('thumb') . parent::getFileName($image));
}
}

View File

@@ -0,0 +1,53 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Session;
use Lang;
/**
* Class CropController
* @package Unisharp\Laravelfilemanager\controllers
*/
class DeleteController extends LfmController {
/**
* Delete image and associated thumbnail
*
* @return mixed
*/
public function getDelete()
{
$name_to_delete = Input::get('items');
$file_path = parent::getPath();
$file_to_delete = $file_path . $name_to_delete;
$thumb_to_delete = parent::getPath('thumb') . $name_to_delete;
if (!File::exists($file_to_delete)) {
return $file_to_delete . ' not found!';
}
if (File::isDirectory($file_to_delete)) {
if (sizeof(File::files($file_to_delete)) != 0) {
return Lang::get('laravel-filemanager::lfm.error-delete');
}
File::deleteDirectory($file_to_delete);
return 'OK';
}
File::delete($file_to_delete);
if (Session::get('lfm_type') == 'Images') {
File::delete($thumb_to_delete);
}
return 'OK';
}
}

View File

@@ -0,0 +1,25 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;
/**
* Class DownloadController
* @package Unisharp\Laravelfilemanager\controllers
*/
class DownloadController extends LfmController {
/**
* Download a file
*
* @return mixed
*/
public function getDownload()
{
return Response::download(parent::getPath() . Input::get('file'));
}
}

View File

@@ -0,0 +1,58 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Str;
use Lang;
/**
* Class FolderController
* @package Unisharp\Laravelfilemanager\controllers
*/
class FolderController extends LfmController {
/**
* Get list of folders as json to populate treeview
*
* @return mixed
*/
public function getFolders()
{
$dir_path = parent::getPath();
$directories = parent::getDirectories($dir_path);
$share_path = parent::getPath('share');
$shared_folders = parent::getDirectories($share_path);
return View::make('laravel-filemanager::tree')
->with('dirs', $directories)
->with('shares', $shared_folders);
}
/**
* Add a new folder
*
* @return mixed
*/
public function getAddfolder()
{
$folder_name = Input::get('name');
$path = parent::getPath() . $folder_name;
if (!File::exists($path)) {
File::makeDirectory($path, $mode = 0777, true, true);
return 'OK';
} else if (empty($folder_name)) {
return Lang::get('laravel-filemanager::lfm.error-folder-name');
} else {
return Lang::get('laravel-filemanager::lfm.error-folder-exist');
}
}
}

View File

@@ -0,0 +1,101 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\View;
use Intervention\Image\Facades\Image;
/**
* Class ItemsController
* @package Unisharp\Laravelfilemanager\controllers
*/
class ItemsController extends LfmController {
/**
* Get the images to load for a selected folder
*
* @return mixed
*/
public function getItems()
{
$type = Input::get('type');
$view = $this->getView($type);
$path = parent::getPath();
$files = File::files($path);
$file_info = $this->getFileInfos($files, $type);
$directories = parent::getDirectories($path);
$thumb_url = parent::getUrl('thumb');
return View::make($view)
->with(compact('files', 'file_info', 'directories', 'thumb_url'));
}
private function getFileInfos($files, $type = 'Images')
{
$file_info = [];
foreach ($files as $key => $file) {
$file_name = parent::getFileName($file);
$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($type = 'Images')
{
$view = 'laravel-filemanager::images';
if ($type !== 'Images') {
$view = 'laravel-filemanager::files';
}
if (Input::get('show_list') == 1) {
$view .= '-list';
}
return $view;
}
}

View File

@@ -0,0 +1,170 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\View;
use Intervention\Image\Facades\Image;
/**
* Class LfmController
* @package Unisharp\Laravelfilemanager\controllers
*/
class LfmController extends Controller {
/**
* @var
*/
public $file_location;
public $dir_location;
/**
* Constructor
*/
public function __construct()
{
$this->setPathAndType();
$this->checkMyFolderExists();
$this->checkSharedFolderExists();
}
/**
* Show the filemanager
*
* @return mixed
*/
public function show()
{
if (Input::has('working_dir')) {
$working_dir = Input::get('working_dir');
} else {
$working_dir = '/';
}
return View::make('laravel-filemanager::index')
->with('working_dir', $working_dir);
}
/*****************************
*** Private Functions ***
*****************************/
private function setPathAndType()
{
// dd('type:'.Input::get('type'));
if (Input::has('type') && Input::get('type') === 'Files') {
Session::put('lfm_type', 'Files');
Session::put('lfm.file_location', Config::get('lfm.files_dir'));
Session::put('lfm.dir_location', Config::get('lfm.files_url'));
} else if (Input::has('type') && Input::get('type') === 'Images') {
Session::put('lfm_type', 'Images');
Session::put('lfm.file_location', Config::get('lfm.images_dir'));
Session::put('lfm.dir_location', Config::get('lfm.images_url'));
}
}
private function checkMyFolderExists()
{
if (\Config::get('lfm.allow_multi_user') === true) {
$path = $this->getPath();
if (!File::exists($path)) {
File::makeDirectory($path, $mode = 0777, true, true);
}
}
}
private function checkSharedFolderExists()
{
$path = $this->getPath('share');
if (!File::exists($path)) {
File::makeDirectory($path, $mode = 0777, true, true);
}
}
private function formatLocation($location, $type = null)
{
if ($type === 'share') {
return $location . Config::get('lfm.shared_folder_name') . '/';
}
$working_dir = Input::get('working_dir');
if ($working_dir !== '/') {
$location .= $working_dir . '/';
}
if ($type === 'thumb') {
$location = $location . Config::get('lfm.thumb_folder_name') . '/';
}
return $location;
}
/****************************
*** Shared Functions ***
****************************/
public function getPath($type = null)
{
$path = base_path() . '/' . Session::get('lfm.file_location');
$path = $this->formatLocation($path, $type);
return $path;
}
public function getUrl($type = null)
{
$url = Session::get('lfm.dir_location');
$url = $this->formatLocation($url, $type);
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 !== $thumb_folder_name) {
$arr_dir[] = $dir_name;
}
}
return $arr_dir;
}
public function getFileName($file)
{
$path_parts = explode('/', $file);
$filename = end($path_parts);
return $filename;
}
}

View File

@@ -0,0 +1,54 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Str;
use Lang;
/**
* Class RenameController
* @package Unisharp\Laravelfilemanager\controllers
*/
class RenameController extends LfmController {
/**
* @return string
*/
public function getRename()
{
$old_name = Input::get('file');
$new_name = Input::get('new_name');
$file_path = parent::getPath();
$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 (File::exists($new_file)) {
return Lang::get('laravel-filemanager::lfm.error-rename');
}
if (File::isDirectory($old_file)) {
File::move($old_file, $new_file);
return 'OK';
}
File::move($old_file, $new_file);
if (Session::get('lfm_type') == 'Images') {
File::move($thumb_path . $old_name, $thumb_path . $new_name);
}
return 'OK';
}
}

View File

@@ -0,0 +1,77 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\View;
use Intervention\Image\Facades\Image;
/**
* Class ResizeController
* @package Unisharp\Laravelfilemanager\controllers
*/
class ResizeController extends LfmController {
/**
* Dipsplay image for resizing
*
* @return mixed
*/
public function getResize()
{
$ratio = 1.0;
$image = Input::get('img');
$path_to_image = parent::getPath() . $image;
$original_width = Image::make($path_to_image)->width();
$original_height = Image::make($path_to_image)->height();
$scaled = false;
if ($original_width > 600) {
$ratio = 600 / $original_width;
$width = $original_width * $ratio;
$height = $original_height * $ratio;
$scaled = true;
} else {
$width = $original_width;
$height = $original_height;
}
if ($height > 400) {
$ratio = 400 / $original_height;
$width = $original_width * $ratio;
$height = $original_height * $ratio;
$scaled = true;
}
return View::make('laravel-filemanager::resize')
->with('img', parent::getUrl() . $image)
->with('height', number_format($height, 0))
->with('width', $width)
->with('original_height', $original_height)
->with('original_width', $original_width)
->with('scaled', $scaled)
->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');
try {
Image::make(public_path() . $img)->resize($width, $height)->save();
return "OK";
} catch (Exception $e) {
return "width : " . $width . " height: " . $height;
return $e;
}
}
}

View File

@@ -0,0 +1,102 @@
<?php namespace Unisharp\Laravelfilemanager\controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Str;
use Lang;
use Intervention\Image\Facades\Image;
/**
* Class UploadController
* @package Unisharp\Laravelfilemanager\controllers
*/
class UploadController extends LfmController {
/**
* Upload an image/file and (for images) create thumbnail
*
* @param UploadRequest $request
* @return string
*/
public function upload()
{
if (!Input::hasFile('upload')) {
return Lang::get('laravel-filemanager::lfm.error-file-empty');
}
$file = Input::file('upload');
$new_filename = $this->getNewName($file);
$dest_path = parent::getPath();
if (File::exists($dest_path . $new_filename)) {
return Lang::get('laravel-filemanager::lfm.error-file-exist');
}
$file->move($dest_path, $new_filename);
if (Session::get('lfm_type') == 'Images') {
$this->makeThumb($dest_path, $new_filename);
}
// upload via ckeditor 'Upload' tab
if (!Input::has('show_list')) {
return $this->useFile($new_filename);
}
return 'OK';
}
private function getNewName($file)
{
$new_filename = $file->getClientOriginalName();
if (Config::get('lfm.rename_file') === true) {
$new_filename = uniqid() . '.' . $file->getClientOriginalExtension();
}
return $new_filename;
}
private function makeThumb($dest_path, $new_filename)
{
$thumb_folder_name = Config::get('lfm.thumb_folder_name');
if (!File::exists($dest_path . $thumb_folder_name)) {
File::makeDirectory($dest_path . $thumb_folder_name);
}
$thumb_img = Image::make($dest_path . $new_filename);
$thumb_img->fit(200, 200)
->save($dest_path . $thumb_folder_name . '/' . $new_filename);
unset($thumb_img);
}
private function useFile($new_filename)
{
$file = parent::getUrl() . $new_filename;
return "<script type='text/javascript'>
function getUrlParam(paramName) {
var reParam = new RegExp('(?:[\?&]|&)' + paramName + '=([^&]+)', 'i');
var match = window.location.search.match(reParam);
return ( match && match.length > 1 ) ? match[1] : null;
}
var funcNum = getUrlParam('CKEditorFuncNum');
var par = window.parent,
op = window.opener,
o = (par && par.CKEDITOR) ? par : ((op && op.CKEDITOR) ? op : false);
if (op) window.close();
if (o !== false) o.CKEDITOR.tools.callFunction(funcNum, '$file');
</script>";
}
}

View File

@@ -0,0 +1,60 @@
<?php
return [
'nav-upload' => 'Upload',
'nav-thumbnails' => 'Thumbnails',
'nav-list' => 'List',
'menu-new' => 'New Folder',
'menu-rename' => 'Rename',
'menu-delete' => 'Delete',
'menu-view' => 'View',
'menu-download' => 'Download',
'menu-resize' => 'Resize',
'menu-crop' => 'Crop',
'title-page' => 'File Manager',
'title-panel' => 'Laravel FileManager',
'title-upload' => 'Upload File',
'title-view' => 'View File',
'title-root' => 'Files',
'title-shares' => 'Shared Files',
'title-item' => 'Item',
'title-size' => 'Size',
'title-type' => 'Type',
'title-modified' => 'Modified',
'title-action' => 'Action',
'type-folder' => 'Folder',
'message-empty' => 'Folder is empty.',
'message-choose' => 'Choose File',
'message-delete' => 'Are you sure you want to delete this item?',
'message-name' => 'Folder name:',
'message-rename' => 'Rename to:',
'error-rename' => 'File name already in use!',
'error-file-empty' => 'You must choose a file!',
'error-file-exist' => 'A file with this name already exists!',
'error-delete' => '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!',
'btn-upload' => 'Upload File',
'btn-close' => 'Close',
'btn-uploading' => 'Uploading...',
'btn-crop' => 'Crop',
'btn-cancel' => 'Cancel',
'btn-resize' => 'Resize',
'resize-ratio' => 'Ratio:',
'resize-scaled' => 'Image scaled:',
'resize-true' => 'Yes',
'resize-old-height' => 'Original Height:',
'resize-old-width' => 'Original Width:',
'resize-new-height' => 'Height:',
'resize-new-width' => 'Width:',
'locale-bootbox' => 'en',
];

View File

@@ -0,0 +1,60 @@
<?php
return [
'nav-upload' => 'Charger',
'nav-thumbnails' => 'Vignettes',
'nav-list' => 'Liste',
'menu-new' => 'Nouveau dossier',
'menu-rename' => 'Renommez',
'menu-delete' => 'Effacer',
'menu-view' => 'Voir le',
'menu-download' => 'Télécharger',
'menu-resize' => 'Redimensionner',
'menu-crop' => 'Récolte',
'title-page' => 'Gestionnaire de fichiers',
'title-panel' => 'Laravel FileManager',
'title-upload' => 'Envoyer un fichier',
'title-view' => 'Voir le fichier',
'title-root' => 'Fichiers',
'title-shares' => 'Shared Files',
'title-item' => 'Article',
'title-size' => 'Taille du fichier',
'title-type' => 'Type de fichier',
'title-modified' => 'Date modifiée',
'title-action' => 'Exécuter laction',
'type-folder' => 'Dossier',
'message-empty' => 'Dossier est vide',
'message-choose' => 'Choisir un fichier',
'message-delete' => 'Êtes-vous sûr de vouloir supprimer ce fichier ?',
'message-name' => 'Nom du dossier:',
'message-rename' => 'Renommer le dossier:',
'error-rename' => 'Ce nom est déjà pris !',
'error-file-empty' => 'Veuillez choisir un fichier',
'error-file-exist' => 'Un fichier avec ce nom existe déjà !',
'error-delete' => "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à !',
'btn-upload' => 'Envoyer le fichier',
'btn-close' => 'Fermer',
'btn-uploading' => 'Envoi...',
'btn-crop' => 'Rogner',
'btn-cancel' => 'Annuler',
'btn-resize' => 'Redimensionner',
'resize-ratio' => 'Ratio:',
'resize-scaled' => "Image à l'échelle:",
'resize-true' => 'Oui',
'resize-old-height' => 'Hauteur originale:',
'resize-old-width' => 'Largeur originale:',
'resize-new-height' => 'Hauteur',
'resize-new-width' => 'Largeur',
'locale-bootbox' => 'fr',
];

View File

@@ -0,0 +1,59 @@
<?php
return [
'nav-upload' => 'Enviar',
'nav-thumbnails' => 'Miniatura',
'nav-list' => 'Lista',
'menu-new' => 'Nova Pasta',
'menu-rename' => 'Renomear',
'menu-delete' => 'Deletar',
'menu-view' => 'Ver',
'menu-download' => 'Download',
'menu-resize' => 'Redimensionar',
'menu-crop' => 'Cortar',
'title-page' => 'Gerenciador de Arquivos',
'title-panel' => 'Gerenciador de Arquivos',
'title-upload' => 'Envio de Arquivo',
'title-view' => 'Ver Arquivo',
'title-root' => 'Arquivos',
'title-shares' => 'Arquivos Compartilhados',
'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' => 'Você está certo que quer deletar este arquivo?',
'message-name' => 'Nome da pasta:',
'message-rename' => 'Renomear para:',
'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-delete' => '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!',
'btn-upload' => 'Enviar Arquivo',
'btn-close' => 'Fechar',
'btn-uploading' => 'Enviando...',
'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_BR',
];

View File

@@ -0,0 +1,60 @@
<?php
return [
'nav-upload' => '上传档案',
'nav-thumbnails' => '缩略图显示',
'nav-list' => '列表显示',
'menu-new' => '添加文件夹',
'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' => '项目名称',
'title-size' => '档案大小',
'title-type' => '档案类型',
'title-modified' => '上次修改',
'title-action' => '操作',
'type-folder' => '文件夹',
'message-empty' => '空的文件夹',
'message-choose' => '选择档案',
'message-delete' => '确定要删除此项目吗?',
'message-name' => '文件夹名称:',
'message-rename' => '重命名为:',
'error-rename' => '名稱重複,請重新輸入!',
'error-file-empty' => '請選擇檔案!',
'error-file-exist' => '相同檔名的檔案已存在!',
'error-delete' => '資料夾未清空,無法刪除!',
'error-folder-name' => '請輸入資料夾名稱!',
'error-folder-exist'=> '相同名稱的資料夾已存在!',
'btn-upload' => '上传',
'btn-close' => '关闭',
'btn-uploading' => '上传中...',
'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' => 'zh_CN',
];

View File

@@ -0,0 +1,60 @@
<?php
return [
'nav-upload' => '上傳檔案',
'nav-thumbnails' => '縮圖顯示',
'nav-list' => '列表顯示',
'menu-new' => '新增資料夾',
'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' => '項目名稱',
'title-size' => '檔案大小',
'title-type' => '檔案類型',
'title-modified' => '上次修改',
'title-action' => '操作',
'type-folder' => '資料夾',
'message-empty' => '空的資料夾',
'message-choose' => '選擇檔案',
'message-delete' => '確定要刪除此項目嗎?',
'message-name' => '資料夾名稱:',
'message-rename' => '重新命名為:',
'error-rename' => '名稱重複,請重新輸入!',
'error-file-empty' => '請選擇檔案!',
'error-file-exist' => '相同檔名的檔案已存在!',
'error-delete' => '資料夾未清空,無法刪除!',
'error-folder-name' => '請輸入資料夾名稱!',
'error-folder-exist'=> '相同名稱的資料夾已存在!',
'btn-upload' => '上傳',
'btn-close' => '關閉',
'btn-uploading' => '上傳中...',
'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' => 'zh_TW',
];

View File

@@ -0,0 +1,44 @@
<?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;
$base = $request->input('working_dir');
if ($base == null) {
$request->merge(['working_dir' => \Auth::user()->user_field]);
} elseif ($this->wrongDir($base)) {
$request->replace(['working_dir' => \Auth::user()->user_field]);
}
}
return $next($request);
}
private function wrongDir($base)
{
if (strpos($base, \Config::get('lfm.shared_folder_name')) !== false) {
return false;
}
if (strpos($base, (string)\Auth::user()->user_field) !== false) {
return false;
}
if (strpos($base, (string)\Auth::user()->user_field) === false) {
return true;
}
return false;
}
}

View File

@@ -0,0 +1,38 @@
<?php
$middlewares = \Config::get('lfm.middlewares');
array_push($middlewares, '\Unisharp\Laravelfilemanager\middleware\MultiUser');
// make sure authenticated
Route::group(array('middleware' => $middlewares, 'prefix' => 'laravel-filemanager'), function ()
{
// Show LFM
Route::get('/', 'Unisharp\Laravelfilemanager\controllers\LfmController@show');
// upload
Route::any('/upload', 'Unisharp\Laravelfilemanager\controllers\UploadController@upload');
// list images & files
Route::get('/jsonitems', 'Unisharp\Laravelfilemanager\controllers\ItemsController@getItems');
// folders
Route::get('/newfolder', 'Unisharp\Laravelfilemanager\controllers\FolderController@getAddfolder');
Route::get('/deletefolder', 'Unisharp\Laravelfilemanager\controllers\FolderController@getDeletefolder');
Route::get('/folders', 'Unisharp\Laravelfilemanager\controllers\FolderController@getFolders');
// crop
Route::get('/crop', 'Unisharp\Laravelfilemanager\controllers\CropController@getCrop');
Route::get('/cropimage', 'Unisharp\Laravelfilemanager\controllers\CropController@getCropimage');
// rename
Route::get('/rename', 'Unisharp\Laravelfilemanager\controllers\RenameController@getRename');
// scale/resize
Route::get('/resize', 'Unisharp\Laravelfilemanager\controllers\ResizeController@getResize');
Route::get('/doresize', 'Unisharp\Laravelfilemanager\controllers\ResizeController@performResize');
// download
Route::get('/download', 'Unisharp\Laravelfilemanager\controllers\DownloadController@getDownload');
// delete
Route::get('/delete', 'Unisharp\Laravelfilemanager\controllers\DeleteController@getDelete');
});

View File

View File

@@ -0,0 +1,67 @@
<div class="row fill">
<div class="col-md-8 fill">
<div class="crop-container">
<img src="{{ $img }}" class="img img-responsive">
</div>
</div>
<div class="col-md-4 fill">
<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="{{url('/laravel-filemanager/crop')}}" role='form' name='cropForm' id='cropForm' mathod='post'>
<input type="hidden" id="img" name="img" value="{{ $img }}">
<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">
<input type="hidden" id="dataWidth" name="dataWidth">
<input type="hidden" id="dataHeight" name="dataHeight">
<input type='hidden' name='_token' value='{{csrf_token()}}'>
</form>
</div>
</div>
</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));
}
});
});
function performCrop() {
$.ajax({
type: "GET",
dataType: "text",
url: "/laravel-filemanager/cropimage",
data: {
img: $("#img").val(),
working_dir: $("#working_dir").val(),
dataX: $("#dataX").val(),
dataY: $("#dataY").val(),
dataHeight: $("#dataHeight").val(),
dataWidth: $("#dataWidth").val()
},
cache: false
}).done(function (data) {
loadItems();
});
}
</script>

View File

@@ -0,0 +1,68 @@
<div class="container">
@if((sizeof($file_info) > 0) || (sizeof($directories) > 0))
<table class="table table-condensed table-striped">
<thead>
<th style='width:50%;'>{{ Lang::get('laravel-filemanager::lfm.title-item') }}</th>
<th>{{ Lang::get('laravel-filemanager::lfm.title-size') }}</th>
<th>{{ Lang::get('laravel-filemanager::lfm.title-type') }}</th>
<th>{{ Lang::get('laravel-filemanager::lfm.title-modified') }}</th>
<th>{{ Lang::get('laravel-filemanager::lfm.title-action') }}</th>
</thead>
<tbody>
@foreach($directories as $key => $dir_name)
<tr>
<td>
<i class="fa fa-folder-o"></i>
<a id="large_folder_{{ $key }}" data-id="{{ $dir_name }}" href="javascript:clickFolder('large_folder_{{ $key }}',1)">
{{ $dir_name }}
</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>
<i class="fa <?= $file['icon']; ?>"></i>
<?php $file_name = $file['name'];?>
<a href="javascript:useFile('{{ $file_name }}')">
{{ $file_name }}
</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 }}')">
<i class="fa fa-trash fa-fw"></i>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
@else
<div class="row">
<div class="col-md-12">
<p>{{ Lang::get('laravel-filemanager::lfm.message-empty') }}</p>
</div>
</div>
@endif
</div>

View File

@@ -0,0 +1,75 @@
<div class="container">
<div class="row">
@if((sizeof($files) > 0) || (sizeof($directories) > 0))
@foreach($directories as $key => $dir_name)
<div class="col-sm-6 col-md-2">
<div class="thumbnail text-center" data-id="{{ $dir_name }}">
<a id="folder_{{ $key }}" data-id="{{ $dir_name }}" onclick="clickFolder('folder_{{ $key }}',0)" class="folder-icon pointer">
<img src="/vendor/laravel-filemanager/img/folder.jpg">
</a>
</div>
<div class="caption text-center">
<div class="btn-group">
<button type="button" onclick="clickFolder('folder_{{ $key }}',0)" class="btn btn-default btn-xs">
{{ str_limit($dir_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('{{ $dir_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-rename') }}</a></li>
<li><a href="javascript:trash('{{ $dir_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-delete') }}</a></li>
</ul>
</div>
</div>
</div>
@endforeach
@foreach($file_info as $key => $file)
<?php $file_name = $file_info[$key]['name'];?>
<div class="col-sm-6 col-md-2 img-row">
<div class="thumbnail thumbnail-img text-center" data-id="{{ $file_name }}" id="img_thumbnail_{{ $key }}">
<i class="fa {{ $file['icon'] }} fa-5x" style="height:200px;cursor:pointer;padding-top:60px;" onclick="useFile('{{ $file_name }}')"></i>
</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 }}')">{{ Lang::get('laravel-filemanager::lfm.menu-rename') }}</a></li>
<li><a href="javascript:fileView('{{ $file_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-view') }}</a></li>
<li><a href="javascript:download('{{ $file_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-download') }}</a></li>
<li class="divider"></li>
{{--<li><a href="javascript:notImp()">Rotate</a></li>--}}
<li><a href="javascript:resizeImage('{{ $file_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-resize') }}</a></li>
<li><a href="javascript:cropImage('{{ $file_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-crop') }}</a></li>
<li class="divider"></li>
<li><a href="javascript:trash('{{ $file_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-delete') }}</a></li>
</ul>
</div>
</div>
</div>
@endforeach
@else
<div class="col-md-12">
<p>{{ Lang::get('laravel-filemanager::lfm.message-empty') }}</p>
</div>
@endif
</div>
</div>

View File

@@ -0,0 +1,77 @@
<div class="container">
@if((sizeof($file_info) > 0) || (sizeof($directories) > 0))
<table class="table table-condensed table-striped">
<thead>
<th style='width:50%;'>{{ Lang::get('laravel-filemanager::lfm.title-item') }}</th>
<th>{{ Lang::get('laravel-filemanager::lfm.title-size') }}</th>
<th>{{ Lang::get('laravel-filemanager::lfm.title-type') }}</th>
<th>{{ Lang::get('laravel-filemanager::lfm.title-modified') }}</th>
<th>{{ Lang::get('laravel-filemanager::lfm.title-action') }}</th>
</thead>
<tbody>
@foreach($directories as $key => $dir_name)
<tr>
<td>
<i class="fa fa-folder-o"></i>
<a id="large_folder_{{ $key }}" data-id="{{ $dir_name }}" href="javascript:clickFolder('large_folder_{{ $key }}',1)">
{{ $dir_name }}
</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>
<i class="fa fa-image"></i>
<?php $file_name = $file['name'];?>
<a href="javascript:useFile('{{ $file_name }}')">
{{ $file_name }}
</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 }}')">
<i class="fa fa-trash fa-fw"></i>
</a>
<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>--}}
</td>
</tr>
@endforeach
</tbody>
</table>
@else
<div class="row">
<div class="col-md-12">
<p>{{ Lang::get('laravel-filemanager::lfm.message-empty') }}</p>
</div>
</div>
@endif
</div>

View File

@@ -0,0 +1,77 @@
<div class="container">
<div class="row">
@if((sizeof($files) > 0) || (sizeof($directories) > 0))
@foreach($directories as $key => $dir_name)
<div class="col-sm-6 col-md-2">
<div class="thumbnail text-center" data-id="{{ $dir_name }}">
<a id="folder_{{ $key }}" data-id="{{ $dir_name }}" onclick="clickFolder('folder_{{ $key }}',0)" class="folder-icon pointer">
{{--<i class="fa fa-folder-o fa-5x"></i>--}}
<img src="/vendor/laravel-filemanager/img/folder.jpg">
</a>
</div>
<div class="caption text-center">
<div class="btn-group">
<button type="button" onclick="clickFolder('folder_{{ $key }}',0)" class="btn btn-default btn-xs">
{{ str_limit($dir_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('{{ $dir_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-rename') }}</a></li>
<li><a href="javascript:trash('{{ $dir_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-delete') }}</a></li>
</ul>
</div>
</div>
</div>
@endforeach
@foreach($files as $key => $file)
<?php $file_name = $file_info[$key]['name'];?>
<?php $thumb_src = $thumb_url . $file_name;?>
<div class="col-sm-6 col-md-2 img-row">
<div class="thumbnail thumbnail-img" data-id="{{ $file_name }}" id="img_thumbnail_{{ $key }}">
<img id="{{ $file }}" src="{{ $thumb_src }}" alt="" style="cursor:pointer;" onclick="useFile('{{ $file_name }}')">
</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 }}')">{{ Lang::get('laravel-filemanager::lfm.menu-rename') }}</a></li>
<li><a href="javascript:fileView('{{ $file_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-view') }}</a></li>
<li><a href="javascript:download('{{ $file_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-download') }}</a></li>
<li class="divider"></li>
{{--<li><a href="javascript:notImp()">Rotate</a></li>--}}
<li><a href="javascript:resizeImage('{{ $file_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-resize') }}</a></li>
<li><a href="javascript:cropImage('{{ $file_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-crop') }}</a></li>
<li class="divider"></li>
<li><a href="javascript:trash('{{ $file_name }}')">{{ Lang::get('laravel-filemanager::lfm.menu-delete') }}</a></li>
</ul>
</div>
</div>
</div>
@endforeach
@else
<div class="col-md-12">
<p>{{ Lang::get('laravel-filemanager::lfm.message-empty') }}</p>
</div>
@endif
</div>
</div>

View File

@@ -0,0 +1,522 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ Lang::get('laravel-filemanager::lfm.title-page') }}</title>
<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="/vendor/laravel-filemanager/css/cropper.min.css">
<link rel="stylesheet" href="/vendor/laravel-filemanager/css/lfm.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">
<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="upload" data-toggle="modal" data-target="#uploadModal"><i class="fa fa-upload"></i> {{ Lang::get('laravel-filemanager::lfm.nav-upload') }}</a>
</li>
<li>
<a href="#!" class="thumbnail-display" id="thumbnail-display"><i class="fa fa-picture-o"></i> {{ Lang::get('laravel-filemanager::lfm.nav-thumbnails') }}</a>
</li>
<li>
<a href="#!" class="list-display" id="list-display"><i class="fa fa-list"></i> {{ Lang::get('laravel-filemanager::lfm.nav-list') }}</a>
</li>
</ul>
</div>
</div>
</nav>
@if ($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="row fill">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="uploadModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<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>
</div>
<div class="modal-body">
<form action="{{url('/laravel-filemanager/upload')}}" role='form' id='uploadForm' name='uploadForm' method='post' enctype='multipart/form-data'>
<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="input-group" style="width: 100%">
<input type="file" id="upload" name="upload">
</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='_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>
</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>
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.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/jqueryui/1.11.2/jquery-ui.min.js"></script>
<script src="/vendor/laravel-filemanager/js/cropper.min.js"></script>
<script src="/vendor/laravel-filemanager/js/jquery.form.min.js"></script>
<script>
var shared_folder = "{{ Config::get('lfm.shared_folder_name') }}";
var image_url = "{{ Config::get('lfm.images_url') }}";
var file_url = "{{ Config::get('lfm.files_url') }}";
$(document).ready(function () {
bootbox.setDefaults({locale:"{{ Lang::get('laravel-filemanager::lfm.locale-bootbox') }}"});
// load folders
$.ajax({
type: 'GET',
dataType: 'text',
url: '/laravel-filemanager/folders',
data: 'working_dir={{ $working_dir }}',
cache: false
}).done(function (data) {
$('#tree1').html(data);
});
loadItems();
refreshFolders();
});
$('#upload-btn').click(function () {
var options = {
beforeSubmit: showRequest,
success: showResponse
};
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();
}
$('#uploadForm').ajaxSubmit(options);
return false;
});
function clickRoot() {
$('.folder-item').removeClass('fa-folder-open').addClass('fa-folder');
$('#folder_shared > i').removeClass('fa-folder-open').addClass('fa-folder');
$('#folder_root > i').addClass('fa-folder-open').removeClass('fa-folder');
$('#working_dir').val("{{ (Config::get('lfm.allow_multi_user')) ? Auth::user()->user_field : '/'}}");
loadItems();
}
function clickShared() {
$('.folder-item').removeClass('fa-folder-open').addClass('fa-folder');
$('#folder_root > i').removeClass('fa-folder-open').addClass('fa-folder');
$('#folder_shared > i').addClass('fa-folder-open').removeClass('fa-folder');
$('#working_dir').val(shared_folder);
loadItems();
}
function clickFolder(x, y) {
$('.folder-item').addClass('fa-folder');
$('#folder_shared > i').removeClass('fa-folder-open').addClass('fa-folder');
$('#folder_root > i').addClass('fa-folder-open').removeClass('fa-folder');
$('.folder-item').not('#folder_root > i').removeClass('fa-folder-open');
if (y == 0) {
if ($('#' + x + ' > i').hasClass('fa-folder')) {
$('#' + x + ' > i').not('#folder_root > i').removeClass('fa-folder');
$('#' + x + ' > i').not('#folder_root > i').addClass('fa-folder-open');
} else {
$('#' + x + ' > i').removeClass('fa-folder-open');
$('#' + x + ' > i').addClass('fa-folder');
}
}
$('#working_dir').val("{{ (Config::get('lfm.allow_multi_user')) ? Auth::user()->user_field.'/' : '' }}" + $('#' + x).data('id'));
loadItems();
}
function clickSharedFolder(x, y) {
$('.folder-item').addClass('fa-folder');
$('#folder_root > i').removeClass('fa-folder-open').addClass('fa-folder');
$('#folder_shared > i').addClass('fa-folder-open').removeClass('fa-folder');
$('.folder-item').not('#folder_shared > i').removeClass('fa-folder-open');
if (y == 0) {
if ($('#' + x + ' > i').hasClass('fa-folder')) {
$('#' + x + ' > i').not('#folder_shared > i').removeClass('fa-folder');
$('#' + x + ' > i').not('#folder_shared > i').addClass('fa-folder-open');
} else {
$('#' + x + ' > i').removeClass('fa-folder-open');
$('#' + x + ' > i').addClass('fa-folder');
}
}
$('#working_dir').val(shared_folder + '/' + $('#' + x).data('id'));
loadItems();
}
function download(x) {
location.href = '/laravel-filemanager/download?'
+ 'working_dir='
+ $('#working_dir').val()
+ '&file='
+ x;
}
function loadItems() {
var type = 'Images';
@if ((Session::has('lfm_type')) && (Session::get('lfm_type') == 'Files'))
type = 'Files';
@endif
$.ajax({
type: 'GET',
dataType: 'html',
url: '/laravel-filemanager/jsonitems',
data: {
working_dir: $('#working_dir').val(),
show_list: $('#show_list').val(),
type: type
},
cache: false
}).done(function (data) {
$('#content').html(data);
$('#nav-buttons').removeClass('hidden');
$('.dropdown-toggle').dropdown();
refreshFolders();
});
}
function trash(x) {
bootbox.confirm("{{ Lang::get('laravel-filemanager::lfm.message-delete') }}", function (result) {
if (result == true) {
$.ajax({
type: 'GET',
dataType: 'text',
url: '/laravel-filemanager/delete',
data: {
working_dir: $('#working_dir').val(),
items: x
},
cache: false
}).done(function (data) {
if (data != 'OK') {
notify(data);
} else {
if ($('#working_dir').val() == '{{ Auth::user()->user_field }}') {
loadFolders();
}
loadItems();
}
});
}
});
}
function loadFolders() {
$.ajax({
type: 'GET',
dataType: 'html',
url: '/laravel-filemanager/folders',
data: {
working_dir: $('#working_dir').val(),
show_list: $('#show_list').val()
},
cache: false
}).done(function (data) {
$('#tree1').html(data);
});
}
function refreshFolders() {
var wd = $('#working_dir').val();
if (wd != '/') {
try {
$('#' + wd + '-folder').removeClass('fa-folder');
$('#' + wd + '-folder').addClass('fa-folder-open');
} catch (e) {}
}
}
function cropImage(x) {
$.ajax({
type: 'GET',
dataType: 'text',
url: '/laravel-filemanager/crop',
data: {
img: x,
working_dir: $('#working_dir').val()
},
cache: false
}).done(function (data) {
$('#nav-buttons').addClass('hidden');
$('#content').html(data);
});
}
function notImp() {
bootbox.alert('Not yet implemented!');;
}
$('body').on('click', '#add-folder', function () {
bootbox.prompt("{{ Lang::get('laravel-filemanager::lfm.message-name') }}", function (result) {
if (result === null) {
} else {
$.ajax({
type: 'GET',
dataType: 'text',
url: '/laravel-filemanager/newfolder',
data: {
name: result,
working_dir: $('#working_dir').val()
},
cache: false
}).done(function (data) {
if (data == 'OK') {
loadFolders();
loadItems();
refreshFolders();
} else {
notify(data);
}
});
}
});
});
function useFile(file) {
var path = $('#working_dir').val();
var item_url = image_url;
@if ((Session::has('lfm_type')) && (Session::get('lfm_type') != "Images"))
item_url = file_url;
@endif
if (path != '/') {
item_url = item_url + path + '/';
}
function getUrlParam(paramName) {
var reParam = new RegExp('(?:[\?&]|&)' + paramName + '=([^&]+)', 'i');
var match = window.location.search.match(reParam);
return ( match && match.length > 1 ) ? match[1] : null;
}
var field_name = getUrlParam('field_name');
var url = item_url + file;
if(window.opener || window.tinyMCEPopup || field_name || getUrlParam('CKEditorCleanUpFuncNum') || getUrlParam('CKEditor')) {
if(window.tinyMCEPopup){
// use TinyMCE > 3.0 integration method
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();
return;
}
// tinymce 4 and colorbox
if (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();
}
} else if(getUrlParam('CKEditor')) {
// use CKEditor 3.0 + integration method
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'));
}
} else {
// use FCKEditor 2.0 integration method
if (data['Properties']['Width'] != '') {
var p = url;
var w = data['Properties']['Width'];
var h = data['Properties']['Height'];
window.opener.SetUrl(p,w,h);
} else {
window.opener.SetUrl(url);
}
}
if (window.opener) {
window.close();
}
} else {
$.prompt(lg.fck_select_integration);
}
window.close();
}
function rename(x) {
bootbox.prompt({
title: "{{ Lang::get('laravel-filemanager::lfm.message-rename') }}",
value: x,
callback: function (result) {
if (result !== null) {
$.ajax({
type: 'GET',
dataType: 'text',
url: '/laravel-filemanager/rename',
data: {
file: x,
working_dir: $('#working_dir').val(),
new_name: result
},
cache: false
}).done(function (data) {
if (data == 'OK') {
loadItems();
loadFolders();
} else {
notify(data);
}
});
}
}
});
}
function notify(x) {
bootbox.alert(x);
}
function resizeImage(x) {
$.ajax({
type: 'GET',
dataType: 'text',
url: '/laravel-filemanager/resize',
data: {
img: x,
working_dir: $('#working_dir').val()
},
cache: false
}).done(function (data) {
$('#nav-buttons').addClass('hidden');
$('#content').html(data);
});
}
$('#thumbnail-display').click(function () {
$('#show_list').val(0);
loadItems();
});
$('#list-display').click(function () {
$('#show_list').val(1);
loadItems();
});
function fileView(x) {
var rnd = makeRandom();
var img_src = image_url + $('#working_dir').val() + '/' + 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>
</body>
</html>

View File

@@ -0,0 +1,96 @@
<div class="container">
<div class="row fill">
<div class="col-md-8 fill" id="containment">
<img id="resize" src="{{ $img }}" height="{{ $height }}" width="{{ $width }}">
</div>
<div class="col-md-4 fill">
<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>
<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>
<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">
</div>
</div>
</div>
<script>
$(document).ready(function () {
$("#height_display").html($("#resize").height() + "px");
$("#width_display").html($("#resize").width() + "px");
$("#resize").resizable({
aspectRatio: true,
containment: "#containment",
handles: "n, e, s, w, se, sw, ne, nw",
resize: function (event, ui) {
$("#width").val($("#resize").width());
$("#height").val($("#resize").height());
$("#height_display").html($("#resize").height() + "px");
$("#width_display").html($("#resize").width() + "px");
}
});
});
function doResize() {
$.ajax({
type: "GET",
dataType: "text",
url: "/laravel-filemanager/doresize",
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);
}
});
}
</script>

View File

@@ -0,0 +1,32 @@
<ul class="list-unstyled">
@if(Config::get('lfm.allow_multi_user'))
<li style="margin-left: -10px;">
<a class="pointer" id="folder_root" data-id="/" onclick="clickRoot()">
<i class="fa fa-folder-open" data-id="/"></i> {{ Lang::get('laravel-filemanager::lfm.title-root') }}
</a>
</li>
@foreach($dirs as $key => $dir_name)
<li>
<a class="pointer" id="folder_{{ $key }}" data-id="{{ $dir_name }}" onclick="clickFolder('folder_{{ $key }}', 0)">
<i class="fa fa-folder folder-item" data-id="{{ $dir_name }}" id="{{ $dir_name }}-folder"></i> {{ $dir_name }}
</a>
</li>
@endforeach
<a id="add-folder" class="add-folder btn btn-default btn-xs" style='margin-top:15px;'>
<i class="fa fa-plus"></i> {{ Lang::get('laravel-filemanager::lfm.menu-new') }}
</a>
<hr>
@endif
<li style="margin-left: -10px;">
<a class="pointer" id="folder_shared" data-id="/" onclick="clickShared()">
<i class="fa fa-folder" data-id="/"></i> {{ Lang::get('laravel-filemanager::lfm.title-shares') }}
</a>
</li>
@foreach($shares as $key => $dir_name)
<li>
<a class="pointer" id="shared_{{ $key }}" data-id="{{ $dir_name }}" onclick="clickSharedFolder('shared_{{ $key }}', 0)">
<i class="fa fa-folder folder-item" data-id="{{ $dir_name }}" id="{{ $dir_name }}-folder-shared"></i> {{ $dir_name }}
</a>
</li>
@endforeach
</ul>