FEATURE: style file manager

This commit is contained in:
Michal Kváček
2016-08-23 23:07:44 +02:00
parent f744ca81ca
commit 0a6528a845
10 changed files with 300 additions and 5 deletions
+4 -4
View File
@@ -27,20 +27,20 @@ class FileManager
return '<img src="' . $url . '" alt="' . $file->description . '" />';
break;
case 'text':
return '<i class="fa fa-file-text-o"></i>';
return '<i class="fa fa-2x fa-file-text-o"></i>';
break;
case 'application':
switch ($subtype) {
case 'pdf':
return '<i class="fa fa-file-pdf-o"></i>';
return '<i class="fa fa-2x fa-file-pdf-o"></i>';
break;
default:
return '<i class="fa fa-newspaper-o"></i>';
return '<i class="fa fa-2x fa-newspaper-o"></i>';
break;
}
break;
default:
return '<i class="fa fa-question"></i>';
return '<i class="fa fa-2x fa-question"></i>';
break;
}
}
+1 -1
View File
@@ -106,7 +106,7 @@ class File extends Model
// save optional fields
$optionalFields = ['name', 'description', 'keywords', 'directoryId'];
foreach ($optionalFields as $field) {
if (isset($request->{$field})) {
if (isset($request->{$field}) && !empty($request->{$field})) {
$snakeField = snake_case($field);
$newFile->$snakeField = $request->$field;
+14
View File
@@ -13074,4 +13074,18 @@ a:focus {
.item-list .item-actions-dropdown.active .item-actions-block {
max-width: 300px !important;
}
img {
max-width: 100%;
}
.file-preview .preview {
height: 4em;
line-height: 5em;
overflow: hidden;
}
.file-preview .preview.directory {
height: auto;
line-heg
}
@@ -0,0 +1,11 @@
<form method="POST" action="{{$action}}">
{!! csrf_field() !!}
<input type="text" name="name" placeholder="@lang('admin/fileManager.directoryName')" class="form-control"
value="{{old('name', $directory->name)}}" />
<textarea name="description" class="form-control" placeholder="@lang('admin/fileManager.directoryDescription')"
rows="3">{{old('description', $directory->description)}}</textarea>
<button type="submit" class="btn btn-primary">@lang('admin/fileManager.editDirectory')</button>
</form>
@@ -0,0 +1,29 @@
<div class="row">
@if($directory->id)
<div class="col-md-2 text-center file-preview">
<div class="icon">
<a href="{{route('upload.overview', ['id' => $directory->parent_id])}}">
<i class="fa fa-2x fa-level-up"></i>
</a>
</div>
<a href="{{route('upload.overview', ['id' => $directory->parent_id])}}">
@lang('admin/fileManager.parentDirectory')
</a>
</div>
@endif
@foreach($subdirectories as $dir)
<div class="col-md-2 text-center file-preview">
<div class="icon">
<a href="{{route('upload.overview', ['id' => $dir->id])}}">
<i class="fa fa-2x fa-folder"></i>
</a>
</div>
<a href="{{route('upload.overview', ['id' => $dir->id])}}">
{{str_limit($dir->name, 15)}}
</a>
</div>
@endforeach
</div>
@@ -0,0 +1,58 @@
@extends('admin.layoutWithNavigation')
@section('pageHeading', @trans('admin/fileManager.edit', ['name' => $file->original_filename]))
@section('content')
<div class="row">
<h2>@lang('admin/fileManager.edit', ['name' => $file->original_filename])</h2>
</div>
<div class="row">
<div class="column large-8">
<div class="large-preview">
{!! \App\Helpers\FileManager::getLargePreview($file) !!}
</div>
</div>
<div class="column large-4">
<div class="row callout secondary">
<div class="column">
<h3>{{$file->original_filename}}</h3>
<ul>
<li>@lang('admin/fileManager.createdAt'): {{$file->created_at}}</li>
<li>@lang('admin/fileManager.updatedAt'): {{$file->updated_at}}</li>
<li>@lang('admin/fileManager.mime'): {{$file->mime_type}}</li>
<li>@lang('admin/fileManager.hash'): <span title="{{$file->file_hash}}">{{str_limit($file->file_hash, 10)}}</span></li>
<li>@lang('admin/fileManager.url'): <a href="{{config('app.upload_url')}}/{{$file->filename}}">{{$file->filename}}</a></li>
<li>@lang('admin/fileManager.fileSize'): {{\App\Helpers\FileManager::getFormattedSize($file)}}</li>
@foreach($extraInfo as $column => $info)
<li>{{$column}}: {{$info}}</li>
@endforeach
</ul>
</div>
</div>
<div class="row">
@include('admin.fileManager.editForm')
</div>
</div>
</div>
@stop
@section('head_stylesheets')
<link rel="stylesheet" href="{{asset('/resources/assets/js/vendor/highlightjs/style/default.css')}}">
@stop
@section('javascripts')
<script type="text/javascript" src="{{asset('/resources/assets/js/vendor/highlightjs/highlight.min.js')}}"></script>
<script type="text/javascript">
hljs.initHighlightingOnLoad();
</script>
@stop
@@ -0,0 +1,40 @@
<form method="POST" action="{{route('upload.postEdit', ['id' => $file->id])}}" enctype="multipart/form-data">
{!! csrf_field() !!}
<label>
@lang('admin/fileManager.name')
<input type="text" name="name" id="name" value="{{$file->name}}"/>
@if (isset($errors) && $errors->has('name'))
<div class="callout alert">
{{ $errors->first('name') }}
</div>
@endif
</label>
<label>
@lang('admin/fileManager.keywords')
<input type="text" name="keywords" id="keywords" value="{{$file->keywords}}"/>
@if (isset($errors) && $errors->has('keywords'))
<div class="callout alert">
{{ $errors->first('keywords') }}
</div>
@endif
</label>
<label>
@lang('admin/fileManager.description')
<textarea rows="3" name="description" id="description">{{$file->description}}</textarea>
</label>
<button type="submit" class="button primary">@lang('admin/fileManager.editButton')</button>
<a href="{{route('upload.delete', ['id' => $file->id])}}" class="button text-center confirm alert pull-right" title="@lang('admin/fileManager.delete')">
<i class="fa fa-remove"></i>
</a>
</form>
@@ -0,0 +1,24 @@
<div class="row">
@forelse($files as $file)
<div class="col-sm-4 col-md-2 text-center file-preview">
<div class="preview">
<a href="{{route('upload.detail', ['id' => $file->id])}}">
{!! \App\Helpers\FileManager::getPreview($file) !!}
</a>
</div>
<a href="{{route('upload.detail', ['id' => $file->id])}}">
{{str_limit($file->original_filename, 10)}}
</a>
<a href="{{route('upload.delete', ['id' => $file->id])}}" class="btn btn-sm btn-danger"
title="@lang('admin/fileManager.delete')">
<i class="fa fa-remove"></i>
</a>
</div>
@empty
<div class="alert alert-info">
<em>@lang('admin/fileManager.noFiles')</em>
</div>
@endforelse
</div>
@@ -0,0 +1,20 @@
<form method="POST" action="{{route('upload.postFile')}}" enctype="multipart/form-data">
{!! csrf_field() !!}
@if(isset($directory))
<input type="hidden" name="directoryId" value="{{$directory->id}}" />
@endif
<input type="file" multiple name="files[]" class="form-control" id="file" />
<input type="text" name="name" id="name" class="form-control" placeholder="@lang('admin/fileManager.name')"
value="{{old('name')}}" />
<input type="text" name="keywords" placeholder="@lang('admin/fileManager.keywords')" class="form-control"
id="keywords" value="{{old('keywords')}}" />
<textarea rows="3" name="description" class="form-control" placeholder="@lang('admin/fileManager.description')"
id="description">{{old('description')}}</textarea>
<button type="submit" class="btn btn-primary">@lang('admin/fileManager.upload')</button>
</form>
@@ -0,0 +1,99 @@
@extends('admin.layoutWithNavigation')
@if ($directory->id)
@section('pageHeading', @trans('admin/fileManager.directories', ['directory' => $directory->name]))
@else
@section('pageHeading', @trans('admin/fileManager.rootDirectories'))
@endif
@section('content')
<div class="row">
<div class="col-lg-8">
@include('admin.fileManager.directories.subdirectoriesTiles')
@include('admin.fileManager.filesTiles')
</div>
<div class="col-lg-4">
<div id="file-manager-controls" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="new-file-title">
<h5 class="panel-title">
<a class="collapsed" data-toggle="collapse" data-parent="#file-manager-controls"
href="#new-file" aria-expanded="false" aria-controls="new-file">
@lang('admin/fileManager.newFile')
</a>
</h5>
</div>
<div id="new-file" class="panel-collapse collapse" role="tabpanel"
aria-labelledby="new-file-title">
@include('admin.fileManager.newFileForm')
</div>
</div>
@if ($directory->id)
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="edit-dir-title">
<h5 class="panel-title">
<a class="collapsed" data-toggle="collapse" data-parent="#file-manager-controls"
href="#edit-dir" aria-expanded="false" aria-controls="edit-dir">
@lang('admin/fileManager.editDirectory')
</a>
</h5>
</div>
<div id="edit-dir" class="panel-collapse collapse" role="tabpanel"
aria-labelledby="edit-file-title">
@include('admin.fileManager.directories.form', ['action' => route('upload.postEditDirectory', ['id' => $directory->id])])
</div>
</div>
@endif
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="new-dir-title">
<h5 class="panel-title">
<a class="collapsed" data-toggle="collapse" data-parent="#file-manager-controls"
href="#new-dir" aria-expanded="false" aria-controls="new-dir">
@lang('admin/fileManager.newDirectory')
</a>
</h5>
</div>
<div id="new-dir" class="panel-collapse collapse" role="tabpanel"
aria-labelledby="new-file-title">
@include('admin.fileManager.directories.form', ['directory' => new \App\Models\Directory(), 'action' => route('upload.postEditDirectory', ['id' => $directory->id])])
</div>
</div>
</div>
{{--<ul class="accordion" data-accordion data-allow-all-closed="true">--}}
{{--<li class="accordion-item is-active" data-accordion-item>--}}
{{--<a href="#" class="accordion-title">@lang('admin/fileManager.newFile')</a>--}}
{{--<div class="accordion-content" data-tab-content>--}}
{{--@include('admin.fileManager.newFileForm')--}}
{{--</div>--}}
{{--</li>--}}
{{--<li class="accordion-item" data-accordion-item>--}}
{{--<a href="#" class="accordion-title">@lang('admin/fileManager.editDirectory')</a>--}}
{{--<div class="accordion-content" data-tab-content>--}}
{{--@include('admin.fileManager.directories.editForm')--}}
{{--</div>--}}
{{--</li>--}}
{{--@endif--}}
{{--<li class="accordion-item" data-accordion-item>--}}
{{--<a href="#" class="accordion-title">@lang('admin/fileManager.newDirectory')</a>--}}
{{--<div class="accordion-content" data-tab-content>--}}
{{--@include('admin.fileManager.directories.newForm')--}}
{{--</div>--}}
{{--</li>--}}
{{--</ul>--}}
</div>
</div>
@stop