Attachment system some file
This commit is contained in:
		| @@ -128,16 +128,17 @@ class Bills extends Controller | ||||
|  | ||||
|         $request['amount'] = 0; | ||||
|  | ||||
|         // Upload attachment | ||||
|         $attachment_path = $this->getUploadedFilePath($request->file('attachment'), 'bills'); | ||||
|  | ||||
|         if ($attachment_path) { | ||||
|             $request['attachment'] = $attachment_path; | ||||
|         } | ||||
|  | ||||
|         $bill = Bill::create($request->input()); | ||||
|  | ||||
|         // Upload attachment | ||||
|         if ($request->file('attachment')) { | ||||
|             $media = $this->getMedia($request->file('attachment'), 'revenues'); | ||||
|  | ||||
|             $invoice->attachMedia($media, 'attachment'); | ||||
|         } | ||||
|  | ||||
|         $taxes = []; | ||||
|  | ||||
|         $tax_total = 0; | ||||
|         $sub_total = 0; | ||||
|  | ||||
| @@ -357,13 +358,6 @@ class Bills extends Controller | ||||
|  | ||||
|         $request['amount'] = 0; | ||||
|  | ||||
|         // Upload attachment | ||||
|         $attachment_path = $this->getUploadedFilePath($request->file('attachment'), 'bills'); | ||||
|  | ||||
|         if ($attachment_path) { | ||||
|             $request['attachment'] = $attachment_path; | ||||
|         } | ||||
|  | ||||
|         $taxes = []; | ||||
|         $tax_total = 0; | ||||
|         $sub_total = 0; | ||||
| @@ -460,6 +454,13 @@ class Bills extends Controller | ||||
|  | ||||
|         $bill->update($request->input()); | ||||
|  | ||||
|         // Upload attachment | ||||
|         if ($request->file('attachment')) { | ||||
|             $media = $this->getMedia($request->file('attachment'), 'bills'); | ||||
|  | ||||
|             $bill->syncMedia($media, 'attachment'); | ||||
|         } | ||||
|  | ||||
|         // Added bill total total | ||||
|         $bill_total = [ | ||||
|             'company_id' => $request['company_id'], | ||||
| @@ -594,15 +595,15 @@ class Bills extends Controller | ||||
|         $request['currency_code'] = $currency->code; | ||||
|         $request['currency_rate'] = $currency->rate; | ||||
|  | ||||
|         // Upload attachment | ||||
|         $attachment_path = $this->getUploadedFilePath($request->file('attachment'), 'revenues'); | ||||
|  | ||||
|         if ($attachment_path) { | ||||
|             $request['attachment'] = $attachment_path; | ||||
|         } | ||||
|  | ||||
|         $bill = Bill::find($request['bill_id']); | ||||
|  | ||||
|         // Upload attachment | ||||
|         if ($request->file('attachment')) { | ||||
|             $media = $this->getMedia($request->file('attachment'), 'payments'); | ||||
|  | ||||
|             $bill->attachMedia($media, 'attachment'); | ||||
|         } | ||||
|  | ||||
|         $total_amount = $bill->amount; | ||||
|  | ||||
|         $amount = (double) $request['amount']; | ||||
|   | ||||
| @@ -77,13 +77,14 @@ class Payments extends Controller | ||||
|         $request['currency_code'] = $currency->code; | ||||
|         $request['currency_rate'] = $currency->rate; | ||||
|  | ||||
|         // Upload attachment | ||||
|         $attachment_path = $this->getUploadedFilePath($request->file('attachment'), 'payments'); | ||||
|         if ($attachment_path) { | ||||
|             $request['attachment'] = $attachment_path; | ||||
|         } | ||||
|         $payment = Payment::create($request->input()); | ||||
|  | ||||
|         Payment::create($request->input()); | ||||
|         // Upload attachment | ||||
|         $media = $this->getMedia($request->file('attachment'), 'payments'); | ||||
|  | ||||
|         if ($media) { | ||||
|             $payment->attachMedia($media, 'attachment'); | ||||
|         } | ||||
|  | ||||
|         $message = trans('messages.success.added', ['type' => trans_choice('general.payments', 1)]); | ||||
|  | ||||
| @@ -175,14 +176,15 @@ class Payments extends Controller | ||||
|         $request['currency_code'] = $currency->code; | ||||
|         $request['currency_rate'] = $currency->rate; | ||||
|  | ||||
|         // Upload attachment | ||||
|         $attachment_path = $this->getUploadedFilePath($request->file('attachment'), 'payments'); | ||||
|         if ($attachment_path) { | ||||
|             $request['attachment'] = $attachment_path; | ||||
|         } | ||||
|  | ||||
|         $payment->update($request->input()); | ||||
|  | ||||
|         // Upload attachment | ||||
|         if ($request->file('attachment')) { | ||||
|             $media = $this->getMedia($request->file('attachment'), 'payments'); | ||||
|  | ||||
|             $payment->syncMedia($media, 'attachment'); | ||||
|         } | ||||
|  | ||||
|         $message = trans('messages.success.updated', ['type' => trans_choice('general.payments', 1)]); | ||||
|  | ||||
|         flash($message)->success(); | ||||
|   | ||||
| @@ -137,16 +137,17 @@ class Invoices extends Controller | ||||
|  | ||||
|         $request['amount'] = 0; | ||||
|  | ||||
|         // Upload attachment | ||||
|         $attachment_path = $this->getUploadedFilePath($request->file('attachment'), 'invoices'); | ||||
|  | ||||
|         if ($attachment_path) { | ||||
|             $request['attachment'] = $attachment_path; | ||||
|         } | ||||
|  | ||||
|         $invoice = Invoice::create($request->input()); | ||||
|  | ||||
|         // Upload attachment | ||||
|         if ($request->file('attachment')) { | ||||
|             $media = $this->getMedia($request->file('attachment'), 'revenues'); | ||||
|  | ||||
|             $invoice->attachMedia($media, 'attachment'); | ||||
|         } | ||||
|  | ||||
|         $taxes = []; | ||||
|  | ||||
|         $tax_total = 0; | ||||
|         $sub_total = 0; | ||||
|  | ||||
| @@ -349,13 +350,6 @@ class Invoices extends Controller | ||||
|         $request['currency_code'] = $currency->code; | ||||
|         $request['currency_rate'] = $currency->rate; | ||||
|  | ||||
|         // Upload attachment | ||||
|         $attachment_path = $this->getUploadedFilePath($request->file('attachment'), 'invoices'); | ||||
|  | ||||
|         if ($attachment_path) { | ||||
|             $request['attachment'] = $attachment_path; | ||||
|         } | ||||
|  | ||||
|         $taxes = []; | ||||
|         $tax_total = 0; | ||||
|         $sub_total = 0; | ||||
| @@ -418,6 +412,13 @@ class Invoices extends Controller | ||||
|  | ||||
|         $invoice->update($request->input()); | ||||
|  | ||||
|         // Upload attachment | ||||
|         if ($request->file('attachment')) { | ||||
|             $media = $this->getMedia($request->file('attachment'), 'invoices'); | ||||
|  | ||||
|             $invoice->syncMedia($media, 'attachment'); | ||||
|         } | ||||
|  | ||||
|         // Delete previous invoice totals | ||||
|         InvoiceTotal::where('invoice_id', $invoice->id)->delete(); | ||||
|  | ||||
| @@ -624,13 +625,6 @@ class Invoices extends Controller | ||||
|         $request['currency_code'] = $currency->code; | ||||
|         $request['currency_rate'] = $currency->rate; | ||||
|  | ||||
|         // Upload attachment | ||||
|         $attachment_path = $this->getUploadedFilePath($request->file('attachment'), 'invoices'); | ||||
|  | ||||
|         if ($attachment_path) { | ||||
|             $request['attachment'] = $attachment_path; | ||||
|         } | ||||
|  | ||||
|         $invoice = Invoice::find($request['invoice_id']); | ||||
|  | ||||
|         $total_amount = $invoice->amount; | ||||
| @@ -669,6 +663,13 @@ class Invoices extends Controller | ||||
|  | ||||
|         $invoice_payment = InvoicePayment::create($request->input()); | ||||
|  | ||||
|         // Upload attachment | ||||
|         if ($request->file('attachment')) { | ||||
|             $media = $this->getMedia($request->file('attachment'), 'invoices'); | ||||
|  | ||||
|             $invoice_payment->attachMedia($media, 'attachment'); | ||||
|         } | ||||
|  | ||||
|         $request['status_code'] = $invoice->invoice_status_code; | ||||
|         $request['notify'] = 0; | ||||
|  | ||||
|   | ||||
| @@ -79,13 +79,14 @@ class Revenues extends Controller | ||||
|         $request['currency_code'] = $currency->code; | ||||
|         $request['currency_rate'] = $currency->rate; | ||||
|  | ||||
|         // Upload attachment | ||||
|         $attachment_path = $this->getUploadedFilePath($request->file('attachment'), 'revenues'); | ||||
|         if ($attachment_path) { | ||||
|             $request['attachment'] = $attachment_path; | ||||
|         } | ||||
|         $revenue = Revenue::create($request->input()); | ||||
|  | ||||
|         Revenue::create($request->input()); | ||||
|         // Upload attachment | ||||
|         if ($request->file('attachment')) { | ||||
|             $media = $this->getMedia($request->file('attachment'), 'revenues'); | ||||
|  | ||||
|             $revenue->syncMedia($media, 'attachment'); | ||||
|         } | ||||
|  | ||||
|         $message = trans('messages.success.added', ['type' => trans_choice('general.revenues', 1)]); | ||||
|  | ||||
| @@ -177,14 +178,15 @@ class Revenues extends Controller | ||||
|         $request['currency_code'] = $currency->code; | ||||
|         $request['currency_rate'] = $currency->rate; | ||||
|  | ||||
|         // Upload attachment | ||||
|         $attachment_path = $this->getUploadedFilePath($request->file('attachment'), 'revenues'); | ||||
|         if ($attachment_path) { | ||||
|             $request['attachment'] = $attachment_path; | ||||
|         } | ||||
|  | ||||
|         $revenue->update($request->input()); | ||||
|  | ||||
|         // Upload attachment | ||||
|         if ($request->file('attachment')) { | ||||
|             $media = $this->getMedia($request->file('attachment'), 'revenues'); | ||||
|  | ||||
|             $revenue->syncMedia($media, 'attachment'); | ||||
|         } | ||||
|  | ||||
|         $message = trans('messages.success.updated', ['type' => trans_choice('general.revenues', 1)]); | ||||
|  | ||||
|         flash($message)->success(); | ||||
|   | ||||
| @@ -53,13 +53,14 @@ class Items extends Controller | ||||
|      */ | ||||
|     public function store(Request $request) | ||||
|     { | ||||
|         // Upload picture | ||||
|         $picture_path = $this->getUploadedFilePath($request->file('picture'), 'items'); | ||||
|         if ($picture_path) { | ||||
|             $request['picture'] = $picture_path; | ||||
|         } | ||||
|         $item = Item::create($request->input()); | ||||
|  | ||||
|         Item::create($request->input()); | ||||
|         // Upload picture | ||||
|         if ($media) { | ||||
|             $media = $this->getMedia($request->file('picture'), 'items'); | ||||
|  | ||||
|             $item->attachMedia($media, 'picture'); | ||||
|         } | ||||
|  | ||||
|         $message = trans('messages.success.added', ['type' => trans_choice('general.items', 1)]); | ||||
|  | ||||
| @@ -137,14 +138,15 @@ class Items extends Controller | ||||
|      */ | ||||
|     public function update(Item $item, Request $request) | ||||
|     { | ||||
|         // Upload picture | ||||
|         $picture_path = $this->getUploadedFilePath($request->file('picture'), 'items'); | ||||
|         if ($picture_path) { | ||||
|             $request['picture'] = $picture_path; | ||||
|         } | ||||
|  | ||||
|         $item->update($request->input()); | ||||
|  | ||||
|         // Upload picture | ||||
|         if ($media) { | ||||
|             $media = $this->getMedia($request->file('picture'), 'items'); | ||||
|  | ||||
|             $item->syncMedia($media, 'picture'); | ||||
|         } | ||||
|  | ||||
|         $message = trans('messages.success.updated', ['type' => trans_choice('general.items', 1)]); | ||||
|  | ||||
|         flash($message)->success(); | ||||
|   | ||||
| @@ -8,13 +8,21 @@ use App\Traits\DateTime; | ||||
| use App\Traits\Incomes; | ||||
| use Bkwld\Cloner\Cloneable; | ||||
| use Sofa\Eloquence\Eloquence; | ||||
| use Plank\Mediable\Mediable; | ||||
|  | ||||
| class Invoice extends Model | ||||
| { | ||||
|     use Cloneable, Currencies, DateTime, Eloquence, Incomes; | ||||
|     use Cloneable, Currencies, DateTime, Eloquence, Incomes, Mediable; | ||||
|  | ||||
|     protected $table = 'invoices'; | ||||
|  | ||||
|     /** | ||||
|      * The accessors to append to the model's array form. | ||||
|      * | ||||
|      * @var array | ||||
|      */ | ||||
|     protected $appends = ['attachment']; | ||||
|  | ||||
|     protected $dates = ['deleted_at', 'invoiced_at', 'due_at']; | ||||
|  | ||||
|     /** | ||||
| @@ -130,4 +138,18 @@ class Invoice extends Model | ||||
|     { | ||||
|         $this->attributes['currency_rate'] = (double) $value; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the current balance. | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getAttachmentAttribute() | ||||
|     { | ||||
|         if (!$this->hasMedia('attachment')) { | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         return $this->getMedia('attachment')->first(); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -44,7 +44,7 @@ class FormServiceProvider extends ServiceProvider | ||||
|         ]); | ||||
|  | ||||
|         Form::component('fileGroup', 'partials.form.file_group', [ | ||||
|             'name', 'text', 'attributes' => [], 'col' => 'col-md-6', | ||||
|             'name', 'text', 'attributes' => [], 'value' => null, 'col' => 'col-md-6', | ||||
|         ]); | ||||
|  | ||||
|         Form::component('deleteButton', 'partials.form.delete_button', [ | ||||
|   | ||||
| @@ -2,6 +2,8 @@ | ||||
|  | ||||
| namespace App\Traits; | ||||
|  | ||||
| use MediaUploader; | ||||
|  | ||||
| trait Uploads | ||||
| { | ||||
|  | ||||
| @@ -27,4 +29,17 @@ trait Uploads | ||||
|  | ||||
|         return $path; | ||||
|     } | ||||
|  | ||||
|     public function getMedia($file, $folder, $company_id = null) | ||||
|     { | ||||
|         if (!$company_id) { | ||||
|             $company_id = session('company_id'); | ||||
|         } | ||||
|  | ||||
|         $path = config('filesystems.disks.uploads.root') . '/' . $company_id . '/' . $folder; | ||||
|  | ||||
|         config(['filesystems.disks.uploads.root' => $path]); | ||||
|  | ||||
|         return MediaUploader::fromSource($file)->upload(); | ||||
|     } | ||||
| } | ||||
| @@ -32,7 +32,8 @@ | ||||
|         "nwidart/laravel-modules": "1.*", | ||||
|         "santigarcor/laratrust": "4.0.*", | ||||
|         "sofa/eloquence": "5.4.*", | ||||
|         "tucker-eric/eloquentfilter": "1.1.*" | ||||
|         "tucker-eric/eloquentfilter": "1.1.*", | ||||
|         "plank/laravel-mediable": "2.5.*" | ||||
|     }, | ||||
|     "require-dev": { | ||||
|         "fzaninotto/faker": "1.6.*" | ||||
|   | ||||
| @@ -203,6 +203,7 @@ return [ | ||||
|         Nwidart\Menus\MenusServiceProvider::class, | ||||
|         Nwidart\Modules\LaravelModulesServiceProvider::class, | ||||
|         Sofa\Eloquence\ServiceProvider::class, | ||||
|         Plank\Mediable\MediableServiceProvider::class, | ||||
|  | ||||
|     ], | ||||
|  | ||||
| @@ -238,6 +239,7 @@ return [ | ||||
|         'Lang' => Illuminate\Support\Facades\Lang::class, | ||||
|         'Log' => Illuminate\Support\Facades\Log::class, | ||||
|         'Mail' => Illuminate\Support\Facades\Mail::class, | ||||
|         'MediaUploader' => Plank\Mediable\MediaUploaderFacade::class, | ||||
|         'Notification' => Illuminate\Support\Facades\Notification::class, | ||||
|         'Password' => Illuminate\Support\Facades\Password::class, | ||||
|         'Queue' => Illuminate\Support\Facades\Queue::class, | ||||
|   | ||||
							
								
								
									
										228
									
								
								config/mediable.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										228
									
								
								config/mediable.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,228 @@ | ||||
| <?php | ||||
|  | ||||
| return [ | ||||
|     /* | ||||
|      * FQCN of the model to use for media | ||||
|      * | ||||
|      * Should extend `Plank\Mediable\Media` | ||||
|      */ | ||||
|     'model' => Plank\Mediable\Media::class, | ||||
|  | ||||
|     /* | ||||
|      * Filesystem disk to use if none is specified | ||||
|      */ | ||||
|     'default_disk' => 'uploads', | ||||
|  | ||||
|     /* | ||||
|      * Filesystems that can be used for media storage | ||||
|      * | ||||
|      * Uploader will throw an exception if a disk not in this list is selected | ||||
|      */ | ||||
|     'allowed_disks' => [ | ||||
|         'uploads', | ||||
|     ], | ||||
|  | ||||
|     /* | ||||
|      * The maximum file size in bytes for a single uploaded file | ||||
|      */ | ||||
|     'max_size' => 1024 * 1024 * 10, | ||||
|  | ||||
|     /* | ||||
|      * What to do if a duplicate file is uploaded. | ||||
|      * | ||||
|      * Options include: | ||||
|      * | ||||
|      * * `'increment'`: the new file's name is given an incrementing suffix | ||||
|      * * `'replace'` : the old file and media model is deleted | ||||
|      * * `'error'`: an Exception is thrown | ||||
|      */ | ||||
|     'on_duplicate' => Plank\Mediable\MediaUploader::ON_DUPLICATE_INCREMENT, | ||||
|  | ||||
|     /* | ||||
|      * Reject files unless both their mime and extension are recognized and both match a single aggregate type | ||||
|      */ | ||||
|     'strict_type_checking' => false, | ||||
|  | ||||
|     /* | ||||
|      * Reject files whose mime type or extension is not recognized | ||||
|      * if true, files will be given a type of `'other'` | ||||
|      */ | ||||
|     'allow_unrecognized_types' => false, | ||||
|  | ||||
|     /* | ||||
|      * Only allow files with specific MIME type(s) to be uploaded | ||||
|      */ | ||||
|     'allowed_mime_types' => [], | ||||
|  | ||||
|     /* | ||||
|      * Only allow files with specific file extension(s) to be uploaded | ||||
|      */ | ||||
|     'allowed_extensions' => [], | ||||
|  | ||||
|     /* | ||||
|      * Only allow files matching specific aggregate type(s) to be uploaded | ||||
|      */ | ||||
|     'allowed_aggregate_types' => [], | ||||
|  | ||||
|     /* | ||||
|      * List of aggregate types recognized by the application | ||||
|      * | ||||
|      * Each type should list the MIME types and extensions | ||||
|      * that should be recognized for the type | ||||
|      */ | ||||
|     'aggregate_types' => [ | ||||
|         Plank\Mediable\Media::TYPE_IMAGE => [ | ||||
|             'mime_types' => [ | ||||
|                 'image/jpeg', | ||||
|                 'image/png', | ||||
|                 'image/gif', | ||||
|             ], | ||||
|             'extensions' => [ | ||||
|                 'jpg', | ||||
|                 'jpeg', | ||||
|                 'png', | ||||
|                 'gif', | ||||
|             ] | ||||
|         ], | ||||
|         Plank\Mediable\Media::TYPE_IMAGE_VECTOR => [ | ||||
|             'mime_types' => [ | ||||
|                 'image/svg+xml', | ||||
|             ], | ||||
|             'extensions' => [ | ||||
|                 'svg', | ||||
|             ] | ||||
|         ], | ||||
|         Plank\Mediable\Media::TYPE_PDF => [ | ||||
|             'mime_types' => [ | ||||
|                 'application/pdf', | ||||
|             ], | ||||
|             'extensions' => [ | ||||
|                 'pdf', | ||||
|             ] | ||||
|         ], | ||||
|         Plank\Mediable\Media::TYPE_AUDIO => [ | ||||
|             'mime_types' => [ | ||||
|                 'audio/aac', | ||||
|                 'audio/ogg', | ||||
|                 'audio/mpeg', | ||||
|                 'audio/mp3', | ||||
|                 'audio/mpeg', | ||||
|                 'audio/wav' | ||||
|             ], | ||||
|             'extensions' => [ | ||||
|                 'aac', | ||||
|                 'ogg', | ||||
|                 'oga', | ||||
|                 'mp3', | ||||
|                 'wav', | ||||
|             ] | ||||
|         ], | ||||
|         Plank\Mediable\Media::TYPE_VIDEO => [ | ||||
|             'mime_types' => [ | ||||
|                 'video/mp4', | ||||
|                 'video/mpeg', | ||||
|                 'video/ogg', | ||||
|                 'video/webm' | ||||
|             ], | ||||
|             'extensions' => [ | ||||
|                 'mp4', | ||||
|                 'm4v', | ||||
|                 'mov', | ||||
|                 'ogv', | ||||
|                 'webm' | ||||
|             ] | ||||
|         ], | ||||
|         Plank\Mediable\Media::TYPE_ARCHIVE => [ | ||||
|             'mime_types' => [ | ||||
|                 'application/zip', | ||||
|                 'application/x-compressed-zip', | ||||
|                 'multipart/x-zip', | ||||
|             ], | ||||
|             'extensions' => [ | ||||
|                 'zip', | ||||
|             ] | ||||
|         ], | ||||
|         Plank\Mediable\Media::TYPE_DOCUMENT => [ | ||||
|             'mime_types' => [ | ||||
|                 'text/plain', | ||||
|                 'application/plain', | ||||
|                 'text/xml', | ||||
|                 'text/json', | ||||
|                 'application/json', | ||||
|                 'application/msword', | ||||
|                 'application/application/vnd.openxmlformats-officedocument.wordprocessingml.document' | ||||
|             ], | ||||
|             'extensions' => [ | ||||
|                 'doc', | ||||
|                 'docx', | ||||
|                 'txt', | ||||
|                 'text', | ||||
|                 'xml', | ||||
|                 'json', | ||||
|             ] | ||||
|         ], | ||||
|         Plank\Mediable\Media::TYPE_SPREADSHEET => [ | ||||
|             'mime_types' => [ | ||||
|                 'application/vnd.ms-excel', | ||||
|                 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', | ||||
|             ], | ||||
|             'extensions' => [ | ||||
|                 'xls', | ||||
|                 'xlsx', | ||||
|             ] | ||||
|         ], | ||||
|         Plank\Mediable\Media::TYPE_PRESENTATION => [ | ||||
|             'mime_types' => | ||||
|             [ | ||||
|                 'application/vnd.ms-powerpoint', | ||||
|                 'application/vnd.openxmlformats-officedocument.presentationml.presentation', | ||||
|                 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' | ||||
|             ], | ||||
|             'extensions' => | ||||
|             [ | ||||
|                 'ppt', | ||||
|                 'pptx', | ||||
|                 'ppsx', | ||||
|             ] | ||||
|         ], | ||||
|     ], | ||||
|  | ||||
|     /* | ||||
|      * List of adapters to use for various source inputs | ||||
|      * | ||||
|      * Adapters can map either to a class or a pattern (regex) | ||||
|      */ | ||||
|     'source_adapters' => [ | ||||
|         'class' => [ | ||||
|             Symfony\Component\HttpFoundation\File\UploadedFile::class => Plank\Mediable\SourceAdapters\UploadedFileAdapter::class, | ||||
|             Symfony\Component\HttpFoundation\File\File::class => Plank\Mediable\SourceAdapters\FileAdapter::class, | ||||
|             Psr\Http\Message\StreamInterface::class => Plank\Mediable\SourceAdapters\StreamAdapter::class, | ||||
|         ], | ||||
|         'pattern' => [ | ||||
|             '^https?://' => Plank\Mediable\SourceAdapters\RemoteUrlAdapter::class, | ||||
|             '^/' => Plank\Mediable\SourceAdapters\LocalPathAdapter::class, | ||||
|             '^[a-zA-Z]:\\' => Plank\Mediable\SourceAdapters\LocalPathAdapter::class | ||||
|         ], | ||||
|     ], | ||||
|  | ||||
|     /* | ||||
|      * List of URL Generators to use for handling various filesystem drivers | ||||
|      * | ||||
|      */ | ||||
|     'url_generators' => [ | ||||
|         'local' => Plank\Mediable\UrlGenerators\LocalUrlGenerator::class, | ||||
|         's3' => Plank\Mediable\UrlGenerators\S3UrlGenerator::class, | ||||
|     ], | ||||
|  | ||||
|     /** | ||||
|      * Should mediable instances automatically reload their media relationships after modification are made to a tag. | ||||
|      * | ||||
|      * If true, will automatically reload media the next time `getMedia()`, `getMediaMatchAll()` or `getAllMediaByTag()` are called. | ||||
|      */ | ||||
|     'rehydrate_media' => true, | ||||
|  | ||||
|     /** | ||||
|      * Detach associated media when mediable model is soft deleted. | ||||
|      */ | ||||
|     'detach_on_soft_delete' => true, | ||||
| ]; | ||||
| @@ -0,0 +1,58 @@ | ||||
| <?php | ||||
|  | ||||
| use Illuminate\Support\Facades\Schema; | ||||
| use Illuminate\Database\Schema\Blueprint; | ||||
| use Illuminate\Database\Migrations\Migration; | ||||
|  | ||||
| class CreateMediableTables extends Migration | ||||
| { | ||||
|     /** | ||||
|      * Run the migrations. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function up() | ||||
|     { | ||||
|         Schema::create('media', function (Blueprint $table) { | ||||
|             $table->increments('id'); | ||||
|             $table->string('disk', 32); | ||||
|             $table->string('directory'); | ||||
|             $table->string('filename'); | ||||
|             $table->string('extension', 32); | ||||
|             $table->string('mime_type', 128); | ||||
|             $table->string('aggregate_type', 32); | ||||
|             $table->integer('size')->unsigned(); | ||||
|             $table->timestamps(); | ||||
|  | ||||
|             $table->index(['disk', 'directory']); | ||||
|             $table->unique(['disk', 'directory', 'filename', 'extension']); | ||||
|             $table->index('aggregate_type'); | ||||
|         }); | ||||
|  | ||||
|         Schema::create('mediables', function (Blueprint $table) { | ||||
|             $table->integer('media_id')->unsigned(); | ||||
|             $table->string('mediable_type'); | ||||
|             $table->integer('mediable_id')->unsigned(); | ||||
|             $table->string('tag'); | ||||
|             $table->integer('order')->unsigned(); | ||||
|  | ||||
|             $table->primary(['media_id', 'mediable_type', 'mediable_id', 'tag']); | ||||
|             $table->index(['mediable_id', 'mediable_type']); | ||||
|             $table->index('tag'); | ||||
|             $table->index('order'); | ||||
|             $table->foreign('media_id')->references('id')->on('media') | ||||
|                 ->onDelete('cascade'); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Reverse the migrations. | ||||
|      * | ||||
|      * @return void | ||||
|      */ | ||||
|     public function down() | ||||
|     { | ||||
|         Schema::drop('mediables'); | ||||
|         Schema::drop('media'); | ||||
|     } | ||||
| } | ||||
| @@ -36,6 +36,7 @@ class Roles extends Seeder | ||||
|                 'auth-profile' => 'r,u', | ||||
|                 'companies-companies' => 'c,r,u,d', | ||||
|                 'common-import' => 'c', | ||||
|                 'common-uploads' => 'd', | ||||
|                 'items-items' => 'c,r,u,d', | ||||
|                 'incomes-invoices' => 'c,r,u,d', | ||||
|                 'incomes-revenues' => 'c,r,u,d', | ||||
|   | ||||
| @@ -203,7 +203,7 @@ | ||||
|             $('#attachment').fancyfile({ | ||||
|                 text  : '{{ trans('general.form.select.file') }}', | ||||
|                 style : 'btn-default', | ||||
|                 placeholder : '<?php echo $invoice->attachment; ?>' | ||||
|                 placeholder : '<?php echo $invoice->attachment->basename; ?>' | ||||
|             }); | ||||
|  | ||||
|             var autocomplete_path = "{{ url('items/items/autocomplete') }}"; | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <div class="form-group {{ $col }} {{ isset($attributes['required']) ? 'required' : '' }} {{ $errors->has($name) ? 'has-error' : '' }}" style="min-height: 59px"> | ||||
|     {!! Form::label($name, $text, ['class' => 'control-label']) !!} | ||||
|     {!! Form::file($name, null, array_merge(['class' => 'form-control'], $attributes)) !!} | ||||
|     {!! Form::file($name, $value, array_merge(['class' => 'form-control'], $attributes)) !!} | ||||
|     {!! $errors->first($name, '<p class="help-block">:message</p>') !!} | ||||
| </div> | ||||
|   | ||||
| @@ -11,6 +11,7 @@ Route::group(['middleware' => 'language'], function () { | ||||
|         Route::group(['prefix' => 'uploads'], function () { | ||||
|             Route::get('{folder}/{file}', 'Common\Uploads@get'); | ||||
|             Route::get('{folder}/{file}/download', 'Common\Uploads@download'); | ||||
|             Route::get('{folder}/{file}/destroy', 'Common\Uploads@destroy'); | ||||
|         }); | ||||
|  | ||||
|         Route::group(['middleware' => ['adminmenu', 'permission:read-admin-panel']], function () { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user