From 62d34946e5936008bd17cc38eb5b6666cf9faff2 Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Mon, 14 Oct 2019 12:04:14 +0530 Subject: [PATCH 01/37] Date Range picker updated to restrict future datetime --- Assets/js/components/DateRangePicker.vue | 26 +++++++++++++++++++----- composer.json | 3 ++- module.json | 4 +++- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/Assets/js/components/DateRangePicker.vue b/Assets/js/components/DateRangePicker.vue index edcca6e..8978f88 100644 --- a/Assets/js/components/DateRangePicker.vue +++ b/Assets/js/components/DateRangePicker.vue @@ -13,27 +13,37 @@ :picker-options="pickerOptions2"> + + @stop \ No newline at end of file diff --git a/Table/Table.php b/Table/Table.php index e5a5458..fdabf7c 100644 --- a/Table/Table.php +++ b/Table/Table.php @@ -23,12 +23,42 @@ class Table public $perPage = 25; + protected $massDeletable = false; + public function __construct($module) { $this->module = $module; $this->prepareButtons(); $this->prepareLinks(); + + if(request()->get('_action') == 'doMassDelete'){ + $this->performMassDeletion(); + } + } + + protected function performMassDeletion(){ + $ids = request()->get('deleteId', []); + + if(count($ids) == 0){ + return redirect()->back()->withError('Select atleast 1 record for deletion.')->withInput(); + } + + $deleted = 0; + foreach($ids as &$id){ + $model = $this->getRepository()->find($id); + + if($model){ + $this->getRepository()->destroy($model); + $deleted++; + } + } + + if($deleted > 0){ + session()->flash('success', $deleted.' records deleted successfully.'); + } + + return true; } public function isExportable():bool @@ -273,4 +303,15 @@ public function getEntity() return str_plural($module[0]); } + + public function isMassDeletable() + { + return $this->massDeletable; + } + + public function setMassDeletable(bool $deletable) + { + $this->massDeletable = $deletable; + return $this; + } } diff --git a/Table/TableBuilder.php b/Table/TableBuilder.php index 3fa8145..d8d5c39 100644 --- a/Table/TableBuilder.php +++ b/Table/TableBuilder.php @@ -54,6 +54,7 @@ public function view() $columns = $this->table->getColumns(); $records = $this->table->getRecords(); $filterForm = $this->table->getFilterForm(); + $isMassDeletable = $this->table->isMassDeletable(); if ($filterForm) { $filterForm = $this->formBuilder->setForm($filterForm); @@ -67,7 +68,8 @@ public function view() 'columns', 'buttons', 'links', - 'filterForm' + 'filterForm', + 'isMassDeletable' )); } diff --git a/Tests/spec/Table/TableSpec.php b/Tests/spec/Table/TableSpec.php index bba6f00..1b30d06 100644 --- a/Tests/spec/Table/TableSpec.php +++ b/Tests/spec/Table/TableSpec.php @@ -117,4 +117,10 @@ public function it_can_return_valid_header() $this->getHeaders() ->shouldBe(['faq::faqs.table.columns.question']); } + + public function it_can_be_mass_deletable() + { + $this->isMassDeletable()->shouldBe(false); + $this->setMassDeletable(true)->isMassDeletable()->shouldBe(true); + } } From 164efdd7ebb1737d2fa747df4824ec51aff3b3af Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Wed, 1 Apr 2020 13:25:34 +0530 Subject: [PATCH 24/37] Code cleanup --- Table/Table.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Table/Table.php b/Table/Table.php index fdabf7c..0c1841d 100644 --- a/Table/Table.php +++ b/Table/Table.php @@ -32,29 +32,30 @@ public function __construct($module) $this->prepareButtons(); $this->prepareLinks(); - if(request()->get('_action') == 'doMassDelete'){ + if (request()->get('_action') == 'doMassDelete') { $this->performMassDeletion(); } } - protected function performMassDeletion(){ + protected function performMassDeletion() + { $ids = request()->get('deleteId', []); - if(count($ids) == 0){ + if (count($ids) == 0) { return redirect()->back()->withError('Select atleast 1 record for deletion.')->withInput(); } $deleted = 0; - foreach($ids as &$id){ + foreach ($ids as &$id) { $model = $this->getRepository()->find($id); - if($model){ + if ($model) { $this->getRepository()->destroy($model); $deleted++; } } - if($deleted > 0){ + if ($deleted > 0) { session()->flash('success', $deleted.' records deleted successfully.'); } From d5fd6fd75d6fd7d8c923fd78fa02d67e097d5db1 Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Fri, 15 May 2020 08:08:16 +0530 Subject: [PATCH 25/37] SMS API URL is now dynamic, if not set uses RI API Server, fixed the issue with variable parser for nested data --- Channels/SMSChannel.php | 12 +++++++++--- Config/settings.php | 4 ++++ Parser/VariableParser.php | 3 +-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Channels/SMSChannel.php b/Channels/SMSChannel.php index ecb440e..281d426 100644 --- a/Channels/SMSChannel.php +++ b/Channels/SMSChannel.php @@ -10,13 +10,19 @@ public function send($notifiable, Notification $notification) { $message = $notification->toSMS($notifiable); - $api_url = config('asgard.rarv.config.sms_api_url'); - + // First attempt to use the URL provided in setting, if not provided, + // fall back to use from config file, which is RI's API link. + $api_url = setting('rarv::sms_http_api_url', null, false); + if($api_url == false){ + $api_url = config('asgard.rarv.config.sms_api_url'); + } + + $api_url = str_replace('##mobileNo##', $message->getMobileNo(), $api_url); $api_url = str_replace('##senderId##', setting('rarv::sender_id'), $api_url); $api_url = str_replace('##apiKey##', setting('rarv::api_key'), $api_url); $api_url = str_replace('##message##', urlencode($message->getMessage()), $api_url); - + \Log::debug($api_url); // Get cURL resource diff --git a/Config/settings.php b/Config/settings.php index caeefd3..18b96c0 100644 --- a/Config/settings.php +++ b/Config/settings.php @@ -9,4 +9,8 @@ 'description' => 'SMS - Sender ID', 'view' => 'text', ], + 'sms_http_api_url' => [ + 'description' => 'SMS - HTTP API URL', + 'view' => 'text', + ] ]; diff --git a/Parser/VariableParser.php b/Parser/VariableParser.php index 2da64ff..a0bff1d 100644 --- a/Parser/VariableParser.php +++ b/Parser/VariableParser.php @@ -7,7 +7,6 @@ class VariableParser public function parse($message, $model) { $variables = $this->extractVariables($message); - foreach ($variables as &$var) { $message = str_replace('##' . $var . '##', data_get($model, $var), $message); } @@ -17,7 +16,7 @@ public function parse($message, $model) public function extractVariables($message) { - preg_match_all('/##([a-zA-Z0-9_]*)##/i', $message, $variables); + preg_match_all('/##([a-zA-Z0-9_\.]*)##/i', $message, $variables); if (!isset($variables[1])) { return false; From 1a694a7b22aacedfda7ef5dec305e1ef3e0ca309 Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Fri, 15 May 2020 19:09:42 +0530 Subject: [PATCH 26/37] SMS Channel now uses notifiable with SMSable to get mobile number where needs to send SMS, fall back to env variable --- Channels/SMSChannel.php | 10 +++++----- Contracts/SMSable.php | 7 +++++++ Notifications/SendSMS.php | 9 ++++++++- 3 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 Contracts/SMSable.php diff --git a/Channels/SMSChannel.php b/Channels/SMSChannel.php index 281d426..b1f91d2 100644 --- a/Channels/SMSChannel.php +++ b/Channels/SMSChannel.php @@ -13,16 +13,16 @@ public function send($notifiable, Notification $notification) // First attempt to use the URL provided in setting, if not provided, // fall back to use from config file, which is RI's API link. $api_url = setting('rarv::sms_http_api_url', null, false); - if($api_url == false){ + if ($api_url == false) { $api_url = config('asgard.rarv.config.sms_api_url'); } - + $api_url = str_replace('##mobileNo##', $message->getMobileNo(), $api_url); $api_url = str_replace('##senderId##', setting('rarv::sender_id'), $api_url); $api_url = str_replace('##apiKey##', setting('rarv::api_key'), $api_url); $api_url = str_replace('##message##', urlencode($message->getMessage()), $api_url); - + \Log::debug($api_url); // Get cURL resource @@ -47,8 +47,8 @@ public function send($notifiable, Notification $notification) curl_close($curl); - \Log::debug($response); - \Log::debug($err); + \Log::debug('SMS Response '.$response); + \Log::debug('SMS Error '.$err); return $response; } diff --git a/Contracts/SMSable.php b/Contracts/SMSable.php new file mode 100644 index 0000000..4ada060 --- /dev/null +++ b/Contracts/SMSable.php @@ -0,0 +1,7 @@ +message, $notifiable); + $mobile = env('MOBILE_NO'); + + if($notifiable instanceof SMSable){ + $mobile = $notifiable->getMobileNo(); + } + + $message = new SMSMessage($mobile, $this->message, $notifiable); return $message; } From 1e07248ff6769c04a6dd1087d0452ba882a6000d Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Fri, 15 May 2020 21:00:52 +0530 Subject: [PATCH 27/37] SMS Channel switched to use file_get_contents to avoid SSL certificate issue --- Channels/SMSChannel.php | 45 +++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/Channels/SMSChannel.php b/Channels/SMSChannel.php index b1f91d2..0ff1d69 100644 --- a/Channels/SMSChannel.php +++ b/Channels/SMSChannel.php @@ -24,31 +24,32 @@ public function send($notifiable, Notification $notification) $api_url = str_replace('##message##', urlencode($message->getMessage()), $api_url); \Log::debug($api_url); - // Get cURL resource - $curl = curl_init(); - - curl_setopt_array($curl, array( - CURLOPT_PORT => "80", - CURLOPT_URL => trim($api_url), - CURLOPT_RETURNTRANSFER => true, - CURLOPT_ENCODING => "", - CURLOPT_MAXREDIRS => 10, - CURLOPT_TIMEOUT => 30, - CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_CUSTOMREQUEST => "GET", - CURLOPT_HTTPHEADER => array( - "Cache-Control: no-cache", - ), - )); - - $response = curl_exec($curl); - $err = curl_error($curl); - - curl_close($curl); + // $curl = curl_init(); + + // curl_setopt_array($curl, array( + // CURLOPT_PORT => "80", + // CURLOPT_URL => trim($api_url), + // CURLOPT_RETURNTRANSFER => true, + // CURLOPT_ENCODING => "", + // CURLOPT_MAXREDIRS => 10, + // CURLOPT_TIMEOUT => 30, + // CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + // CURLOPT_CUSTOMREQUEST => "GET", + // CURLOPT_HTTPHEADER => array( + // "Cache-Control: no-cache", + // ), + // )); + + // $response = curl_exec($curl); + // $err = curl_error($curl); + + // curl_close($curl); + + $response = file_get_contents($api_url); \Log::debug('SMS Response '.$response); - \Log::debug('SMS Error '.$err); + // \Log::debug('SMS Error '.$err); return $response; } From 9ffd88cd808c71d9567f1cd5882bd4dfb64bf5b7 Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Thu, 28 May 2020 14:27:58 +0530 Subject: [PATCH 28/37] Added helper function for ajax buttons --- Assets/js/components.js | 4 ++- Assets/js/components/ActionableSelect.vue | 41 +++++++++++++++++++++++ Assets/js/helpers.js | 40 ++++++++++++++++++++++ Button/Button.php | 16 +++++++++ Channels/SMSChannel.php | 2 +- Contracts/CanBePrintedOnCover.php | 7 ++++ Notifications/SendSMS.php | 2 +- Resources/views/table.blade.php | 2 +- 8 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 Assets/js/components/ActionableSelect.vue create mode 100644 Assets/js/helpers.js create mode 100644 Contracts/CanBePrintedOnCover.php diff --git a/Assets/js/components.js b/Assets/js/components.js index 0c4860b..0306113 100644 --- a/Assets/js/components.js +++ b/Assets/js/components.js @@ -1,5 +1,7 @@ import Vue from 'vue'; import DateRangePicker from "./components/DateRangePicker"; +//import ActionableSelect from "./components/ActionableSelect"; -Vue.component('ri-datepicker', DateRangePicker); \ No newline at end of file +Vue.component('ri-datepicker', DateRangePicker); +// Vue.component('ri-actionable-select', ActionableSelect); \ No newline at end of file diff --git a/Assets/js/components/ActionableSelect.vue b/Assets/js/components/ActionableSelect.vue new file mode 100644 index 0000000..2e9ad48 --- /dev/null +++ b/Assets/js/components/ActionableSelect.vue @@ -0,0 +1,41 @@ + + + \ No newline at end of file diff --git a/Assets/js/helpers.js b/Assets/js/helpers.js new file mode 100644 index 0000000..2f2e9bd --- /dev/null +++ b/Assets/js/helpers.js @@ -0,0 +1,40 @@ +$(document).ready(() => { + $(".ajax-link").click(function (e) { + e.preventDefault(); + + var href = $(this).data('url'); + var method = $(this).data('method') || 'GET'; + var isClickable = $(e.target).is(":disabled"); + + console.log(isClickable); + + if(isClickable == false){ + $.ajax({ + method: method, + url: href, + success: function (res) { + $(e.target).prop('disabled', false); + if (res.error == true) { + app.$notify.error({title: 'Error!', message: res.message}); + return false; + } + + app.$notify.success({message: res.message}); + + if(res.changeText != undefined){ + $(e.target).html(res.changeText); + } + + if(res.disableBtn != undefined){ + $(e.target).data('clickable', res.disableBtn); + + if(res.disableBtn == 1){ + $(e.target).prop('disabled', true); + $(e.target).attr("disabled", "disabled"); + } + } + } + }); + } + }); +}) \ No newline at end of file diff --git a/Button/Button.php b/Button/Button.php index 1d7219c..581f944 100644 --- a/Button/Button.php +++ b/Button/Button.php @@ -12,6 +12,8 @@ class Button implements \ArrayAccess protected $icon; protected $attributes = []; + protected $class = ''; + public $weight = 0; protected $permission = true; @@ -199,4 +201,18 @@ public function setPolicy($policy) return $this; } + + // @todo Test + public function setClass($class) + { + $this->class = $class; + + return $this; + } + + // @todo Test + public function getClass() + { + return $this->class; + } } diff --git a/Channels/SMSChannel.php b/Channels/SMSChannel.php index 0ff1d69..37a0ad4 100644 --- a/Channels/SMSChannel.php +++ b/Channels/SMSChannel.php @@ -10,7 +10,7 @@ public function send($notifiable, Notification $notification) { $message = $notification->toSMS($notifiable); - // First attempt to use the URL provided in setting, if not provided, + // First attempt to use the URL provided in setting, if not provided, // fall back to use from config file, which is RI's API link. $api_url = setting('rarv::sms_http_api_url', null, false); if ($api_url == false) { diff --git a/Contracts/CanBePrintedOnCover.php b/Contracts/CanBePrintedOnCover.php new file mode 100644 index 0000000..d8475fd --- /dev/null +++ b/Contracts/CanBePrintedOnCover.php @@ -0,0 +1,7 @@ +getMobileNo(); } diff --git a/Resources/views/table.blade.php b/Resources/views/table.blade.php index 767109c..f1e0f1f 100644 --- a/Resources/views/table.blade.php +++ b/Resources/views/table.blade.php @@ -92,7 +92,7 @@ @foreach($links as &$link) @can($link->getPolicy(), $record) getAttributesLine() !!}> @if($link->getIcon() != '') From c5f4039bcae19cdaa38707bf64eac64a85e64b2d Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Thu, 25 Jun 2020 20:07:19 +0530 Subject: [PATCH 29/37] Tags Input added, entity is available in setValue on field --- Form/Field.php | 2 +- Form/Fields/TagsField.php | 40 +++++++++++++++++++++++++++ Form/Form.php | 3 +- Resources/views/fields/tags.blade.php | 1 + 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 Form/Fields/TagsField.php create mode 100644 Resources/views/fields/tags.blade.php diff --git a/Form/Field.php b/Form/Field.php index 23f8fc7..b11591d 100644 --- a/Form/Field.php +++ b/Form/Field.php @@ -158,7 +158,7 @@ public function setRules(array $rules) return $this; } - public function setValue($value) + public function setValue($value, $entity = null) { $this->value = $value; diff --git a/Form/Fields/TagsField.php b/Form/Fields/TagsField.php new file mode 100644 index 0000000..b17feea --- /dev/null +++ b/Form/Fields/TagsField.php @@ -0,0 +1,40 @@ +namespace == null) { + throw new \Exception("Set a namespace on a TagsField, use setNamespace method.", -1); + } + + return 'rarv::fields.tags'; + } + + public function setNamespace(string $namespace) + { + $this->namespace = $namespace; + + return $this; + } + + public function setValue($value, $entity = null) + { + $this->value = $entity; + + return $this; + } +} diff --git a/Form/Form.php b/Form/Form.php index f994464..b3308f4 100644 --- a/Form/Form.php +++ b/Form/Form.php @@ -191,9 +191,10 @@ public function populateValues() try { $value = $this->model->{$field->getName()}; if ($value) { - $field->setValue($value); + $field->setValue($value, $this->model); } } catch (\Exception $e) { + \Log::warn('Unable to populate field value for '.$field->getName()); // We just pass if attribute not found. } } diff --git a/Resources/views/fields/tags.blade.php b/Resources/views/fields/tags.blade.php new file mode 100644 index 0000000..edb5a3e --- /dev/null +++ b/Resources/views/fields/tags.blade.php @@ -0,0 +1 @@ +@tags($field->namespace, $field->getValue()) \ No newline at end of file From 6f548f65b44598694e7842c8c278b31f4fa7d44e Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Fri, 24 Jul 2020 18:25:36 +0530 Subject: [PATCH 30/37] Added only table view for custom placement --- Resources/views/only_table.blade.php | 152 +++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 Resources/views/only_table.blade.php diff --git a/Resources/views/only_table.blade.php b/Resources/views/only_table.blade.php new file mode 100644 index 0000000..6cc1a38 --- /dev/null +++ b/Resources/views/only_table.blade.php @@ -0,0 +1,152 @@ +@if($filterForm) +
+
+ {!! $filterForm->view() !!} +
+
+@endif + +
+
+ +
+
+
+ +
+
+
+ {!! $records->appends(request()->all())->links() !!} +
+
+ +
+ @if($isMassDeletable) + +

+ @endif +
+ + + + @if($isMassDeletable == true) + + @endif + @foreach($headers as &$header) + @if(strpos($header, '__index') !== false) + + @else + + @endif + @endforeach + @if(count($links) > 0) + + @endif + + + + + $record) : ?> + + @if($isMassDeletable == true) + + @endif + @foreach($columns as $column => $value) + + @endforeach + @if(count($links) > 0) + + @endif + + + + + + + @if($isMassDeletable == true) + + @endif + @foreach($headers as &$header) + @if(strpos($header, '__index') !== false) + + @else + + @endif + @endforeach + @if(count($links) > 0) + + @endif + + +
#{{ trans($header) }}{{ trans('core::core.table.actions') }}
+ @if($value == '__index') + {{ $i + 1}} + @elseif(is_string($value)) + {!! $record->{$value} !!} + @else + {!! transform($record, $value) !!} + @endif + +
+ @foreach($links as &$link) + @can($link->getPolicy(), $record) + getAttributesLine() !!}> + @if($link->getIcon() != '') + + @endif +  {{ $link->getLabel() }} + + @endcan + {{-- @cannot($link->getPolicy(), $record) + @php $link->getURL($record) @endphp + getAttributesLine() !!}> + @if($link->getIcon() != '') + + @endif +  {{ $link->getLabel() }} + + @endcannot --}} + @endforeach +
+
#{{ trans($header) }}{{ trans('core::core.table.actions') }}
+ +
+
+ +
+
+ {!! $records->appends(request()->all())->links() !!} +
+
+
+ +
+
+
+@include('core::partials.delete-modal') + +@section('footer') +   + +@stop From 103cee4183255a7748ce1f2a51212d1f436e8ad9 Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Fri, 24 Jul 2020 19:41:01 +0530 Subject: [PATCH 31/37] Support custom design for table view path --- Table/TableBuilder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Table/TableBuilder.php b/Table/TableBuilder.php index d8d5c39..89e6caa 100644 --- a/Table/TableBuilder.php +++ b/Table/TableBuilder.php @@ -35,7 +35,7 @@ public function setTable(Table $table) return $this; } - public function view() + public function view($viewPath = 'rarv::table') { if (!$this->table) { throw new \Exception('Table not set', -1); @@ -60,7 +60,7 @@ public function view() $filterForm = $this->formBuilder->setForm($filterForm); } - return view('rarv::table', compact( + return view($viewPath, compact( 'module', 'entity', 'records', From 0b52a8fd30cbd4beb7c13f50e9e10284681e9d9f Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Fri, 31 Jul 2020 19:59:00 +0530 Subject: [PATCH 32/37] Added CRUDController for quick scaffolding of Resource controller for backend --- Http/Controllers/CRUDController.php | 99 +++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Http/Controllers/CRUDController.php diff --git a/Http/Controllers/CRUDController.php b/Http/Controllers/CRUDController.php new file mode 100644 index 0000000..fd50b91 --- /dev/null +++ b/Http/Controllers/CRUDController.php @@ -0,0 +1,99 @@ +boot(); + } + + abstract public function boot(); + + /** + * Display a listing of the resource. + * + * @return Response + */ + public function index(TableBuilder $builder) + { + return $builder->setTable($this->table)->view(); + } + + /** + * Show the form for creating a new resource. + * + * @return Response + */ + public function create(FormBuilder $builder) + { + return $builder->setForm($this->createForm)->view(); + } + + /** + * Store a newly created resource in storage. + * + * @return Response + */ + public function store(FormBuilder $builder) + { + return $builder->setForm($this->createForm)->handle(); + } + + /** + * Show the form for editing the specified resource. + * + * @param Model $model + * @return Response + */ + public function edit(Model $model, FormBuilder $builder) + { + $this->editForm->setModel($model); + + return $builder->setMode('edit')->setForm($this->editForm)->view(); + } + + /** + * Update the specified resource in storage. + * + * @param Model $model + * @return Response + */ + public function update(Model $model, FormBuilder $builder) + { + $this->editForm->setModel($model); + + return $builder->setMode('edit')->setForm($this->editForm)->handle(); + } + + /** + * Remove the specified resource from storage. + * + * @param Model $couriercompany + * @return Response + */ + public function destroy(Model $model) + { + try { + $model->delete(); + } catch (\Exception $e) { + return redirect()->back()->withError($e->getMessage()); + } + + return redirect()->back() + ->withSuccess('Record successfully deleted.'); + } +} From 7b663afccd2eb72dd4864120cd9fb8687fca6297 Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Wed, 12 Aug 2020 23:45:34 +0530 Subject: [PATCH 33/37] WIP: Translatable text field and converted Form spec to phpunit --- .gitignore | 3 +- Form/Field.php | 35 +- Form/Fields/TextField.php | 43 + .../admin/partials/create-fields.blade.php | 8 +- .../views/partials/form/fields/text.blade.php | 20 + .../form/fields/translatable/text.blade.php | 20 + .../views/partials/form/text_group.blade.php | 2 +- Tests/Unit/FieldTest.php | 24 + Tests/Unit/Fields/TextFieldTest.php | 56 + Tests/Unit/Form/FormTest.php | 143 + Tests/spec/Form/FormSpec.php | 144 - composer.json | 3 +- composer.lock | 4639 ----------------- phpspec.yml | 3 +- 14 files changed, 349 insertions(+), 4794 deletions(-) create mode 100644 Form/Fields/TextField.php create mode 100644 Resources/views/partials/form/fields/text.blade.php create mode 100644 Resources/views/partials/form/fields/translatable/text.blade.php create mode 100644 Tests/Unit/FieldTest.php create mode 100644 Tests/Unit/Fields/TextFieldTest.php create mode 100644 Tests/Unit/Form/FormTest.php delete mode 100644 Tests/spec/Form/FormSpec.php delete mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index 0409102..fae7eba 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ vendor/ -!.gitignore \ No newline at end of file +composer.lock +!.gitignore diff --git a/Form/Field.php b/Form/Field.php index b11591d..48470fb 100644 --- a/Form/Field.php +++ b/Form/Field.php @@ -3,6 +3,7 @@ namespace Modules\Rarv\Form; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Support\Facades\Log; use Illuminate\Support\ViewErrorBag; class Field @@ -21,6 +22,9 @@ class Field protected $view = null; + protected $translatable = false; + protected $locale = 'en'; + public function __construct($name, $type, $parameters = []) { $this->name = $name; @@ -101,10 +105,11 @@ public function getView() return $this->view; } - public function render() + public function render($locale = null) { + $this->locale = $locale; if ($this->getView()) { - return view($this->getView(), ['field' => $this]); + return view($this->getView(), ['field' => $this, 'locale' => $locale]); } $builder = app('form'); @@ -130,7 +135,7 @@ public function render() try { $html = $builder->macroCall($this->type, $parameters); } catch (\Exception $e) { - \Log::error($e); + Log::error($e); // Its macro $html = $builder->componentCall($this->type, $parameters); } @@ -255,4 +260,28 @@ public function filter(Builder $query) $query->where($this->getName(), 'LIKE', '%' . $this->getValue() . '%'); } } + + public function setTranslatable($translatable = true) + { + $this->translatable = $translatable; + + return $this; + } + + public function isTranslatable() + { + return $this->translatable; + } + + public function setLocale($l) + { + $this->locale = $l; + + return $this; + } + + public function getLocale() + { + return $this->locale; + } } diff --git a/Form/Fields/TextField.php b/Form/Fields/TextField.php new file mode 100644 index 0000000..4f8edef --- /dev/null +++ b/Form/Fields/TextField.php @@ -0,0 +1,43 @@ +model = $model; + } + + public function getModel() + { + return $this->model; + } + + public function getValue() + { + $this->value = parent::getValue(); + + if($this->isTranslatable() and !$this->value and $this->model && $this->model->getAttribute($this->name)){ + $this->value = $this->model->translate($this->locale)->{$this->name}; + } + + return $this->value; + } + + public function getView() + { + if($this->isTranslatable()){ + return 'rarv::partials.form.fields.translatable.text'; + } + + return 'rarv::partials.form.fields.text'; + } +} \ No newline at end of file diff --git a/Resources/views/admin/partials/create-fields.blade.php b/Resources/views/admin/partials/create-fields.blade.php index 83fdd7c..b03b7f0 100644 --- a/Resources/views/admin/partials/create-fields.blade.php +++ b/Resources/views/admin/partials/create-fields.blade.php @@ -1,7 +1,9 @@
@foreach($fields as &$field) -
- {!! $field->render() !!} -
+ @if($lang == 'en' || $field->isTranslatable()) +
+ {!! $field->render($lang) !!} +
+ @endif @endforeach
diff --git a/Resources/views/partials/form/fields/text.blade.php b/Resources/views/partials/form/fields/text.blade.php new file mode 100644 index 0000000..1c7b745 --- /dev/null +++ b/Resources/views/partials/form/fields/text.blade.php @@ -0,0 +1,20 @@ +@stack($field->getName() . '_input_start') + +
+ {!! Form::label($field->getName(), $field->getLabel(), ['class' => 'control-label']) !!} + @if(in_array('required', $field->getRules())) + * + @endif + +
+ @if(data_get($field->getParameters(), 'icon') != '') +
+ @endif + + getRules())) ? 'required' : '' }}> +
+ + {!! $errors->first($field->getName(), '

:message

') !!} +
+ +@stack($field->getName() . '_input_end') diff --git a/Resources/views/partials/form/fields/translatable/text.blade.php b/Resources/views/partials/form/fields/translatable/text.blade.php new file mode 100644 index 0000000..d1d7697 --- /dev/null +++ b/Resources/views/partials/form/fields/translatable/text.blade.php @@ -0,0 +1,20 @@ +@stack("{$locale}[{$field->getName()}]" . '_input_start') + +
+ {!! Form::label("{$locale}[{$field->getName()}]", $field->getLabel(), ['class' => 'control-label']) !!} + @if(in_array('required', $field->getRules())) + * + @endif + +
+ @if(data_get($field->getParameters(), 'icon') != '') +
+ @endif + + getRules())) ? 'required' : '' }}> +
+ + {!! $errors->first("{$locale}[{$field->getName()}]", '

:message

') !!} +
+ +@stack("{$locale}[{$field->getName()}]" . '_input_end') diff --git a/Resources/views/partials/form/text_group.blade.php b/Resources/views/partials/form/text_group.blade.php index fef0831..180c782 100644 --- a/Resources/views/partials/form/text_group.blade.php +++ b/Resources/views/partials/form/text_group.blade.php @@ -6,7 +6,7 @@ * @endif -
+
@if($icon != '')
@endif diff --git a/Tests/Unit/FieldTest.php b/Tests/Unit/FieldTest.php new file mode 100644 index 0000000..b4eeaf0 --- /dev/null +++ b/Tests/Unit/FieldTest.php @@ -0,0 +1,24 @@ +field(); + $field->setTranslatable(); + + $this->assertTrue($field->isTranslatable()); + + $field->setTranslatable(false); + $this->assertFalse($field->isTranslatable()); + } +} \ No newline at end of file diff --git a/Tests/Unit/Fields/TextFieldTest.php b/Tests/Unit/Fields/TextFieldTest.php new file mode 100644 index 0000000..0406ed5 --- /dev/null +++ b/Tests/Unit/Fields/TextFieldTest.php @@ -0,0 +1,56 @@ + 'Test', + ]); + + if(! $question){ + $question = Faq::create([ + 'en' => [ + 'question' => 'Q in english', + 'answer' => 'A in english', + ], + 'gu' => [ + 'question' => 'Q in gujarati', + 'answer' => 'A in gujarati', + ], + ]); + } + + return (new TextField('question', $question)); + } + + public function test_text_field_is_initializable() + { + $f = $this->field(); + + $this->assertEquals($f->getValue(), 'Q in english'); + } + + public function test_text_field_can_retrive_translatable_value() + { + $f = $this->field(); + $this->assertEquals($f->getValue('gu'), 'Q in gujarati'); + } + + public function test_field_returns_view_based_on_translatable(Type $var = null) + { + $f = $this->field(); + + $this->assertEquals('rarv::partials.form.fields.text', $f->getView()); + + $f->setTranslatable(); + $this->assertEquals('rarv::partials.form.fields.translatable.text', $f->getView()); + } +} \ No newline at end of file diff --git a/Tests/Unit/Form/FormTest.php b/Tests/Unit/Form/FormTest.php new file mode 100644 index 0000000..39afa91 --- /dev/null +++ b/Tests/Unit/Form/FormTest.php @@ -0,0 +1,143 @@ +assertInstanceOf(Form::class, $this->form()); + } + + public function test_it_can_get_module() + { + $this->assertNotEmpty($this->form()->getModule()); + } + + public function test_it_can_define_module() + { + $this->assertEquals('faq', $this->form()->setModule('faq')->getModule()); + } + + public function test_it_can_return_correct_entity() + { + $this->assertEquals('faqs', $this->form()->getEntity()); + } + + public function test_it_can_set_get_field() + { + $form = $this->form(); + + $questionField = new Field('question', 'normalInput'); + $form->setField($questionField); + + // This is duplicate to previous, so override. + $form->setField('question', 'normalInput'); + + $this->assertCount(1, $form->getFields()); + } + + public function test_it_can_set_get_fields() + { + $questionField = new Field('question', 'normalInput'); + $answerField = new Field('answer', 'normalTextarea'); + $this->assertCount(2, $this->form()->setFields([ + $questionField, + $answerField + ])->getFields()); + } + + public function test_it_does_not_return_fields_if_permission_is_not_granted() + { + $questionField = new Field('question', 'normalInput'); + $answerField = new Field('answer', 'normalTextarea'); + $questionField->permission(false); + + $this->assertCount(1, $this->form()->setFields([ + $questionField, + $answerField + ])->getFields()); + } + + public function test_it_return_all_fields_even_if_permission_is_not_granted() + { + $questionField = new Field('question', 'normalInput'); + $answerField = new Field('answer', 'normalTextarea'); + $questionField->permission(false); + + $this->assertCount(2, $this->form()->setFields([ + $questionField, + $answerField + ])->getAllFields()); + } + + public function test_it_has_boot_method() + { + $this->assertTrue($this->form()->boot()); + } + + public function it_can_get_set_route() + { + $this->assertNotEmpty($this->form()->setRoute('/')->getRoute()); + } + + public function test_it_can_invalidate_form() + { + $form = $this->form(); + + $form->setField('name', 'normalInput')->setRules(['required']); + + $this->assertFalse($form->validate()); + $this->assertCount(1, $form->getErrors()); + } + + /** + * @depends test_it_can_invalidate_form + */ + public function test_it_can_validate_form() + { + $form = $this->form(); + $form->setField('name', 'normalInput')->setRules(['required'])->setValue('Daksh'); + + $this->assertTrue($form->validate()); + $this->assertCount(0, $form->getErrors()); + } + + public function test_it_can_set_get_repository() + { + $this->assertInstanceOf(PageRepository::class, $this->form()->setRepository('Modules\Page\Repositories\PageRepository') + ->getRepository()); + } + + public function test_it_can_set_the_form_model() + { + $this->assertEquals('How do you do?', $this->form()->setModel(new Faq(['question' => 'How do you do?']))->getModel()->question); + } + + public function test_it_can_auto_populate_form_values_from_model() + { + $form = $this->form(); + $form->setField('question', 'normalInput')->setRules(['required']); + $form->setModel(new Faq(['question' => 'How do you do?'])); + $form->populateValues(); + + $this->assertEquals('How do you do?', $form->getField('question')->getValue()); + } + + public function test_it_has_view_path() + { + $this->assertNotEmpty($this->form()->viewPath(new FormBuilder())); + } +} diff --git a/Tests/spec/Form/FormSpec.php b/Tests/spec/Form/FormSpec.php deleted file mode 100644 index e7b278c..0000000 --- a/Tests/spec/Form/FormSpec.php +++ /dev/null @@ -1,144 +0,0 @@ -beConstructedWith('faq.faqs'); - } - - function it_is_initializable() - { - $this->shouldHaveType(Form::class); - } - - public function it_has_defined_module() - { - $this->getModule()->shouldBeString(); - } - - public function it_can_define_module() - { - $this->setModule('faq')->getModule()->shouldBe('faq'); - } - - public function it_can_return_correct_entity() - { - $this->getEntity()->shouldBe('faqs'); - } - - public function it_can_set_get_field() - { - $questionField = new Field('question', 'normalInput'); - $this->setField($questionField) - ->getName()->shouldBe('question'); - - $this->setField('question', 'normalInput') - ->getName()->shouldBe('question'); - } - - public function it_can_set_get_fields() - { - $questionField = new Field('question', 'normalInput'); - $answerField = new Field('answer', 'normalTextarea'); - $this->setFields([ - $questionField, - $answerField - ])->getFields()->shouldHaveCount(2); - } - - public function it_does_not_return_fields_if_permission_is_not_granted() - { - $questionField = new Field('question', 'normalInput'); - $answerField = new Field('answer', 'normalTextarea'); - $questionField->permission(false); - - $this->setFields([ - $questionField, - $answerField - ])->getFields()->shouldHaveCount(1); - } - - public function it_return_all_fields_even_if_permission_is_not_granted() - { - $questionField = new Field('question', 'normalInput'); - $answerField = new Field('answer', 'normalTextarea'); - $questionField->permission(false); - - $this->setFields([ - $questionField, - $answerField - ])->getAllFields()->shouldHaveCount(2); - } - - public function it_has_boot_method() - { - $this->boot()->shouldReturn(true); - } - - public function it_can_get_set_route() - { - $this->setRoute('/')->getRoute()->shouldBeString(); - } - - public function it_can_invalidate_form() - { - $this->setField('name', 'normalInput')->setRules(['required']); - - $this->validate()->shouldReturn(false); - $this->getErrors()->shouldHaveCount(1); - } - - public function it_can_validate_form() - { - $this->setField('name', 'normalInput')->setRules(['required'])->setValue('Daksh'); - - $this->validate()->shouldReturn(true); - $this->getErrors()->shouldHaveCount(0); - } - - public function it_can_set_get_repository() - { - $this->setRepository('Modules\Page\Repositories\PageRepository') - ->getRepository()->shouldBeAnInstanceOf(PageRepository::class); - } - - public function it_can_set_the_form_model() - { - $this->setModel(new Faq(['question' => 'How do you do?']))->getModel()->question->shouldBe('How do you do?'); - } - - public function it_can_auto_populate_form_values_from_model() - { - $this->setField('question', 'normalInput')->setRules(['required']); - $this->setModel(new Faq(['question' => 'How do you do?'])); - $this->populateValues(); - - $this->getField('question')->getValue()->shouldBe('How do you do?'); - } - - public function it_has_view_path() - { - $this->viewPath(new FormBuilder())->shouldBeString(); - } - - /*public function it_can_have_submit_url() - { - $this->getSubmitUrl('create')->shouldBeString(); - } - - public function it_can_have_redirect_url() - { - return $this->getRedirectUrl('create')->shouldBeString(); - }*/ -} diff --git a/composer.json b/composer.json index 9b5b6d9..7f93605 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,6 @@ "autoload-dev": { "psr-4": { "Modules\\Rarv\\": ".", - "Modules\\": "Modules/", "App\\": "../../app/" } }, @@ -42,4 +41,4 @@ "Modules\\Rarv\\": "" } } -} \ No newline at end of file +} diff --git a/composer.lock b/composer.lock deleted file mode 100644 index e898735..0000000 --- a/composer.lock +++ /dev/null @@ -1,4639 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "4a7a5e8c2d92860c04767297640fe649", - "packages": [ - { - "name": "composer/installers", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/composer/installers.git", - "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/installers/zipball/cfcca6b1b60bc4974324efb5783c13dca6932b5b", - "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0" - }, - "replace": { - "roundcube/plugin-installer": "*", - "shama/baton": "*" - }, - "require-dev": { - "composer/composer": "1.0.*@dev", - "phpunit/phpunit": "^4.8.36" - }, - "type": "composer-plugin", - "extra": { - "class": "Composer\\Installers\\Plugin", - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Installers\\": "src/Composer/Installers" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kyle Robinson Young", - "email": "kyle@dontkry.com", - "homepage": "https://github.com/shama" - } - ], - "description": "A multi-framework Composer library installer", - "homepage": "https://composer.github.io/installers/", - "keywords": [ - "Craft", - "Dolibarr", - "Eliasis", - "Hurad", - "ImageCMS", - "Kanboard", - "Lan Management System", - "MODX Evo", - "Mautic", - "Maya", - "OXID", - "Plentymarkets", - "Porto", - "RadPHP", - "SMF", - "Thelia", - "WolfCMS", - "agl", - "aimeos", - "annotatecms", - "attogram", - "bitrix", - "cakephp", - "chef", - "cockpit", - "codeigniter", - "concrete5", - "croogo", - "dokuwiki", - "drupal", - "eZ Platform", - "elgg", - "expressionengine", - "fuelphp", - "grav", - "installer", - "itop", - "joomla", - "kohana", - "laravel", - "lavalite", - "lithium", - "magento", - "majima", - "mako", - "mediawiki", - "modulework", - "modx", - "moodle", - "osclass", - "phpbb", - "piwik", - "ppi", - "puppet", - "pxcms", - "reindex", - "roundcube", - "shopware", - "silverstripe", - "sydes", - "symfony", - "typo3", - "wordpress", - "yawik", - "zend", - "zikula" - ], - "time": "2018-08-27T06:10:37+00:00" - }, - { - "name": "dimsav/laravel-translatable", - "version": "v8.1", - "source": { - "type": "git", - "url": "https://github.com/dimsav/laravel-translatable.git", - "reference": "8bdcb62b580df98fc5d5540edc2d8aa9a2760db4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dimsav/laravel-translatable/zipball/8bdcb62b580df98fc5d5540edc2d8aa9a2760db4", - "reference": "8bdcb62b580df98fc5d5540edc2d8aa9a2760db4", - "shasum": "" - }, - "require": { - "illuminate/support": "5.5.*", - "php": ">=5.4.0" - }, - "require-dev": { - "orchestra/testbench": "3.5.*", - "phpunit/phpunit": "~6.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Dimsav\\Translatable\\TranslatableServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Dimsav\\Translatable\\": "src/Translatable/" - }, - "classmap": [ - "tests" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dimitrios Savvopoulos", - "email": "ds@dimsav.com", - "homepage": "http://dimsav.com" - } - ], - "description": "A Laravel package for multilingual models", - "keywords": [ - "database", - "language", - "laravel", - "translation" - ], - "abandoned": "astrotomic/laravel-translatable", - "time": "2018-01-04T20:11:56+00:00" - }, - { - "name": "doctrine/inflector", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" - ], - "time": "2018-01-09T20:05:19+00:00" - }, - { - "name": "doctrine/lexer", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "lexer", - "parser" - ], - "time": "2014-09-09T13:34:57+00:00" - }, - { - "name": "egulias/email-validator", - "version": "2.1.7", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/709f21f92707308cdf8f9bcfa1af4cb26586521e", - "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.0.1", - "php": ">= 5.5" - }, - "require-dev": { - "dominicsayers/isemail": "dev-master", - "phpunit/phpunit": "^4.8.35||^5.7||^6.0", - "satooshi/php-coveralls": "^1.0.1" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "EmailValidator" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "time": "2018-12-04T22:38:24+00:00" - }, - { - "name": "erusev/parsedown", - "version": "1.7.1", - "source": { - "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35" - }, - "type": "library", - "autoload": { - "psr-0": { - "Parsedown": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } - ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", - "keywords": [ - "markdown", - "parser" - ], - "time": "2018-03-08T01:11:30+00:00" - }, - { - "name": "floatingpoint/stylist", - "version": "0.5.0", - "source": { - "type": "git", - "url": "https://github.com/floatingpointsoftware/stylist.git", - "reference": "240865041da9908037954fb918c00008ccb59c2f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/floatingpointsoftware/stylist/zipball/240865041da9908037954fb918c00008ccb59c2f", - "reference": "240865041da9908037954fb918c00008ccb59c2f", - "shasum": "" - }, - "require": { - "illuminate/support": "~5.0", - "laravelcollective/html": "~5.0", - "php": ">=5.5.0" - }, - "require-dev": { - "mockery/mockery": "dev-master@dev", - "orchestra/testbench": "3.0.*", - "phpunit/phpunit": "~4.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "FloatingPoint\\Stylist\\": "src/Stylist", - "Tests\\": "tests" - } - }, - "notification-url": "https://packagist.org/downloads/", - "authors": [ - { - "name": "Kirk Bushell", - "email": "torm3nt@gmail.com" - }, - { - "name": "Mike Dugan", - "email": "mike@mjdugan.com" - } - ], - "description": "Laravel 5 theming package.", - "time": "2017-03-12T23:24:15+00:00" - }, - { - "name": "idavoll/core-module", - "version": "3.6.1", - "source": { - "type": "git", - "url": "https://github.com/Idavoll/Core.git", - "reference": "46e2562d69a4408d1ab1a52fb9c9fa77d7c6ec4d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Idavoll/Core/zipball/46e2562d69a4408d1ab1a52fb9c9fa77d7c6ec4d", - "reference": "46e2562d69a4408d1ab1a52fb9c9fa77d7c6ec4d", - "shasum": "" - }, - "require": { - "composer/installers": "~1.0", - "dimsav/laravel-translatable": "~8.0", - "floatingpoint/stylist": "~0.5", - "laracasts/presenter": "~0.2", - "laravelcollective/html": "~5.5.0", - "maatwebsite/laravel-sidebar": "~2.1", - "mcamara/laravel-localization": "~1.1", - "nwidart/laravel-modules": "~2.0", - "php": ">=7.0.0", - "tightenco/ziggy": "~0.4", - "yajra/laravel-datatables-oracle": "~8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.6", - "mockery/mockery": "^0.9.4", - "orchestra/testbench": "3.5.*", - "phpunit/phpunit": "~6.0" - }, - "suggest": { - "asgardcms/notification-module": "Allows notifications to be sent to the user. Optionally real-time notifications." - }, - "type": "asgard-module", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Widart", - "email": "info@asgardcms.com", - "role": "Developer" - } - ], - "description": "The core module for AsgardCMS. This is required for every install.", - "keywords": [ - "asgardcms", - "core" - ], - "time": "2018-09-05T11:09:20+00:00" - }, - { - "name": "jeremeamia/superclosure", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/jeremeamia/super_closure.git", - "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/5707d5821b30b9a07acfb4d76949784aaa0e9ce9", - "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^1.2|^2.0|^3.0|^4.0", - "php": ">=5.4", - "symfony/polyfill-php56": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-4": { - "SuperClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia", - "role": "Developer" - } - ], - "description": "Serialize Closure objects, including their context and binding", - "homepage": "https://github.com/jeremeamia/super_closure", - "keywords": [ - "closure", - "function", - "lambda", - "parser", - "serializable", - "serialize", - "tokenizer" - ], - "time": "2018-03-21T22:21:57+00:00" - }, - { - "name": "laracasts/presenter", - "version": "0.2.1", - "source": { - "type": "git", - "url": "https://github.com/laracasts/Presenter.git", - "reference": "b284f3137f990efd6e95df49d254f1ccc4541e92" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laracasts/Presenter/zipball/b284f3137f990efd6e95df49d254f1ccc4541e92", - "reference": "b284f3137f990efd6e95df49d254f1ccc4541e92", - "shasum": "" - }, - "require": { - "illuminate/support": "~5.0", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "~0.9", - "phpspec/phpspec": "~2.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Laracasts\\Presenter": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeffrey Way", - "email": "jeffrey@laracasts.com" - } - ], - "description": "Simple view presenters", - "keywords": [ - "laravel", - "presenter", - "view" - ], - "time": "2014-09-13T13:18:07+00:00" - }, - { - "name": "laravel/framework", - "version": "v5.5.44", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "00615aa27eb98f0ee6fb9f2160c6c60ae04abd1b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/00615aa27eb98f0ee6fb9f2160c6c60ae04abd1b", - "reference": "00615aa27eb98f0ee6fb9f2160c6c60ae04abd1b", - "shasum": "" - }, - "require": { - "doctrine/inflector": "~1.1", - "erusev/parsedown": "~1.7", - "ext-mbstring": "*", - "ext-openssl": "*", - "league/flysystem": "^1.0.8", - "monolog/monolog": "~1.12", - "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "^1.24.1", - "php": ">=7.0", - "psr/container": "~1.0", - "psr/simple-cache": "^1.0", - "ramsey/uuid": "~3.0", - "swiftmailer/swiftmailer": "~6.0", - "symfony/console": "~3.3", - "symfony/debug": "~3.3", - "symfony/finder": "~3.3", - "symfony/http-foundation": "~3.3", - "symfony/http-kernel": "~3.3", - "symfony/process": "~3.3", - "symfony/routing": "~3.3", - "symfony/var-dumper": "~3.3", - "tijsverkoyen/css-to-inline-styles": "~2.2", - "vlucas/phpdotenv": "~2.2" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version", - "tightenco/collect": "<5.5.33" - }, - "require-dev": { - "aws/aws-sdk-php": "~3.0", - "doctrine/dbal": "~2.5", - "filp/whoops": "^2.1.4", - "mockery/mockery": "~1.0", - "orchestra/testbench-core": "3.5.*", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~6.0", - "predis/predis": "^1.1.1", - "symfony/css-selector": "~3.3", - "symfony/dom-crawler": "~3.3" - }, - "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", - "ext-pcntl": "Required to use all features of the queue worker.", - "ext-posix": "Required to use all features of the queue worker.", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", - "laravel/tinker": "Required to use the tinker console command (~1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-cached-adapter": "Required to use Flysystem caching (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "nexmo/client": "Required to use the Nexmo transport (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", - "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (~3.3).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~3.3).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.5-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "time": "2018-10-04T14:51:24+00:00" - }, - { - "name": "laravelcollective/html", - "version": "v5.5.4", - "source": { - "type": "git", - "url": "https://github.com/LaravelCollective/html.git", - "reference": "04c596a69975b901f2223eb6eb4adf55354121c2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/LaravelCollective/html/zipball/04c596a69975b901f2223eb6eb4adf55354121c2", - "reference": "04c596a69975b901f2223eb6eb4adf55354121c2", - "shasum": "" - }, - "require": { - "illuminate/http": "5.5.*", - "illuminate/routing": "5.5.*", - "illuminate/session": "5.5.*", - "illuminate/support": "5.5.*", - "illuminate/view": "5.5.*", - "php": ">=7.0.0" - }, - "require-dev": { - "illuminate/database": "5.5.*", - "mockery/mockery": "~0.9.4", - "phpunit/phpunit": "~5.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.5-dev" - }, - "laravel": { - "providers": [ - "Collective\\Html\\HtmlServiceProvider" - ], - "aliases": { - "Form": "Collective\\Html\\FormFacade", - "Html": "Collective\\Html\\HtmlFacade" - } - } - }, - "autoload": { - "psr-4": { - "Collective\\Html\\": "src/" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com" - }, - { - "name": "Adam Engebretson", - "email": "adam@laravelcollective.com" - } - ], - "description": "HTML and Form Builders for the Laravel Framework", - "homepage": "https://laravelcollective.com", - "time": "2018-03-24T00:39:21+00:00" - }, - { - "name": "league/flysystem", - "version": "1.0.49", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a63cc83d8a931b271be45148fa39ba7156782ffd", - "reference": "a63cc83d8a931b271be45148fa39ba7156782ffd", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": ">=5.5.9" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" - }, - "require-dev": { - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7.10" - }, - "suggest": { - "ext-fileinfo": "Required for MimeType", - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Filesystem abstraction: Many filesystems, one API.", - "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", - "filesystems", - "ftp", - "rackspace", - "remote", - "s3", - "sftp", - "storage" - ], - "time": "2018-11-23T23:41:29+00:00" - }, - { - "name": "maatwebsite/laravel-sidebar", - "version": "2.1.5", - "source": { - "type": "git", - "url": "https://github.com/Maatwebsite/Laravel-Sidebar.git", - "reference": "f2f624cab2d91870218ec4296651f78383e5fb83" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Maatwebsite/Laravel-Sidebar/zipball/f2f624cab2d91870218ec4296651f78383e5fb83", - "reference": "f2f624cab2d91870218ec4296651f78383e5fb83", - "shasum": "" - }, - "require": { - "illuminate/cache": "~5.0", - "illuminate/container": "~5.0", - "illuminate/contracts": "~5.0", - "illuminate/routing": "~5.0", - "illuminate/support": "~5.0", - "illuminate/view": "~5.0", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Maatwebsite\\Sidebar\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL" - ], - "authors": [ - { - "name": "Maatwebsite.nl", - "email": "patrick@maatwebsite.nl" - } - ], - "description": "A sidebar builder for Laravel", - "keywords": [ - "acp", - "laravel", - "menu", - "sidebar" - ], - "time": "2017-03-23T19:32:44+00:00" - }, - { - "name": "mcamara/laravel-localization", - "version": "1.3.16", - "source": { - "type": "git", - "url": "https://github.com/mcamara/laravel-localization.git", - "reference": "e82a6c9d809b82afb7ae226f18ac3cb077a18754" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mcamara/laravel-localization/zipball/e82a6c9d809b82afb7ae226f18ac3cb077a18754", - "reference": "e82a6c9d809b82afb7ae226f18ac3cb077a18754", - "shasum": "" - }, - "require": { - "laravel/framework": "~5.2.0||~5.3.0||~5.4.0||~5.5.0||~5.6.0||~5.7.0", - "php": ">=7.0.0" - }, - "require-dev": { - "orchestra/testbench-browser-kit": "~3.4", - "phpunit/phpunit": "6.0.*" - }, - "suggest": { - "ext-intl": "*" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Mcamara\\LaravelLocalization\\LaravelLocalizationServiceProvider" - ], - "aliases": { - "LaravelLocalization": "Mcamara\\LaravelLocalization\\Facades\\LaravelLocalization" - } - } - }, - "autoload": { - "classmap": [], - "psr-0": { - "Mcamara\\LaravelLocalization": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marc Cámara", - "email": "mcamara88@gmail.com", - "role": "Developer" - } - ], - "description": "Easy localization for Laravel", - "homepage": "https://github.com/mcamara/laravel-localization", - "keywords": [ - "laravel", - "localization", - "php" - ], - "time": "2018-10-30T06:33:55+00:00" - }, - { - "name": "monolog/monolog", - "version": "1.24.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "time": "2018-11-05T09:00:11+00:00" - }, - { - "name": "mtdowling/cron-expression", - "version": "v1.2.1", - "source": { - "type": "git", - "url": "https://github.com/mtdowling/cron-expression.git", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "time": "2017-01-23T04:29:33+00:00" - }, - { - "name": "nesbot/carbon", - "version": "1.36.2", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", - "reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/translation": "~2.6 || ~3.0 || ~4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7" - }, - "suggest": { - "friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.", - "phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors." - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" - } - ], - "description": "A simple API extension for DateTime.", - "homepage": "http://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "time": "2018-12-28T10:07:33+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.3.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc", - "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "0.0.5", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2019-11-08T13:50:10+00:00" - }, - { - "name": "nwidart/laravel-modules", - "version": "2.7.0", - "source": { - "type": "git", - "url": "https://github.com/nWidart/laravel-modules.git", - "reference": "30c1475f99ef8b439a1cf7d8a9c55787c80bbf71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/30c1475f99ef8b439a1cf7d8a9c55787c80bbf71", - "reference": "30c1475f99ef8b439a1cf7d8a9c55787c80bbf71", - "shasum": "" - }, - "require": { - "php": ">=7.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.7", - "laravel/framework": "5.5.*", - "mockery/mockery": "~1.0", - "orchestra/testbench": "^3.5", - "phpunit/phpunit": "~6.0", - "spatie/phpunit-snapshot-assertions": "^1.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Nwidart\\Modules\\LaravelModulesServiceProvider" - ], - "aliases": { - "Module": "Nwidart\\Modules\\Facades\\Module" - } - }, - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Nwidart\\Modules\\": "src" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Widart", - "email": "n.widart@gmail.com", - "homepage": "https://nicolaswidart.com", - "role": "Developer" - } - ], - "description": "Laravel Module management", - "keywords": [ - "laravel", - "module", - "modules", - "nwidart", - "rad" - ], - "time": "2018-01-13T20:11:46+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.99", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "shasum": "" - }, - "require": { - "php": "^7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "time": "2018-07-02T15:55:56+00:00" - }, - { - "name": "psr/container", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "time": "2017-02-14T16:28:37+00:00" - }, - { - "name": "psr/log", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2018-11-20T15:27:04+00:00" - }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "time": "2017-10-23T01:57:42+00:00" - }, - { - "name": "ramsey/uuid", - "version": "3.8.0", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", - "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "^1.0|^2.0|9.99.99", - "php": "^5.4 || ^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "codeception/aspect-mock": "^1.0 | ~2.0.0", - "doctrine/annotations": "~1.2.0", - "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", - "ircmaxell/random-lib": "^1.1", - "jakub-onderka/php-parallel-lint": "^0.9.0", - "mockery/mockery": "^0.9.9", - "moontoast/math": "^1.1", - "php-mock/php-mock-phpunit": "^0.3|^1.1", - "phpunit/phpunit": "^4.7|^5.0|^6.5", - "squizlabs/php_codesniffer": "^2.3" - }, - "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - }, - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "time": "2018-07-19T23:38:55+00:00" - }, - { - "name": "swiftmailer/swiftmailer", - "version": "v6.1.3", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8ddcb66ac10c392d3beb54829eef8ac1438595f4", - "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4", - "shasum": "" - }, - "require": { - "egulias/email-validator": "~2.0", - "php": ">=7.0.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.3@dev" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses", - "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.1-dev" - } - }, - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "time": "2018-09-11T07:12:52+00:00" - }, - { - "name": "symfony/console", - "version": "v3.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "a700b874d3692bc8342199adfb6d3b99f62cc61a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a700b874d3692bc8342199adfb6d3b99f62cc61a", - "reference": "a700b874d3692bc8342199adfb6d3b99f62cc61a", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" - }, - "suggest": { - "psr/log-implementation": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2019-01-04T04:42:43+00:00" - }, - { - "name": "symfony/contracts", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "require-dev": { - "psr/cache": "^1.0", - "psr/container": "^1.0" - }, - "suggest": { - "psr/cache": "When using the Cache contracts", - "psr/container": "When using the Service contracts", - "symfony/cache-contracts-implementation": "", - "symfony/service-contracts-implementation": "", - "symfony/translation-contracts-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\": "" - }, - "exclude-from-classmap": [ - "**/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A set of abstractions extracted out of the Symfony components", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2018-12-05T08:06:11+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v4.2.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "76dac1dbe2830213e95892c7c2ec1edd74113ea4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/76dac1dbe2830213e95892c7c2ec1edd74113ea4", - "reference": "76dac1dbe2830213e95892c7c2ec1edd74113ea4", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com", - "time": "2019-01-03T09:07:35+00:00" - }, - { - "name": "symfony/debug", - "version": "v3.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186", - "reference": "26d7f23b9bd0b93bee5583e4d6ca5cb1ab31b186", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/http-kernel": "~2.8|~3.0|~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2019-01-01T13:45:19+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v4.2.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/887de6d34c86cf0cb6cbf910afb170cdb743cb5e", - "reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/contracts": "^1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2019-01-05T16:37:49+00:00" - }, - { - "name": "symfony/finder", - "version": "v3.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e", - "reference": "3f2a2ab6315dd7682d4c16dcae1e7b95c8b8555e", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2019-01-01T13:45:19+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v3.4.36", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "d2d0cfe8e319d9df44c4cca570710fcf221d4593" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d2d0cfe8e319d9df44c4cca570710fcf221d4593", - "reference": "d2d0cfe8e319d9df44c4cca570710fcf221d4593", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php70": "~1.6" - }, - "require-dev": { - "symfony/expression-language": "~2.8|~3.0|~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpFoundation Component", - "homepage": "https://symfony.com", - "time": "2019-11-28T12:52:59+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v3.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "60bd9d7444ca436e131c347d78ec039dd99a34b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/60bd9d7444ca436e131c347d78ec039dd99a34b4", - "reference": "60bd9d7444ca436e131c347d78ec039dd99a34b4", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", - "symfony/var-dumper": "<3.3", - "twig/twig": "<1.34|<2.4,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "~2.8|~3.0|~4.0", - "symfony/class-loader": "~2.8|~3.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/console": "~2.8|~3.0|~4.0", - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "^3.4.10|^4.0.10", - "symfony/dom-crawler": "~2.8|~3.0|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0", - "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0", - "symfony/templating": "~2.8|~3.0|~4.0", - "symfony/translation": "~2.8|~3.0|~4.0", - "symfony/var-dumper": "~3.3|~4.0" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/finder": "", - "symfony/var-dumper": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com", - "time": "2019-01-06T15:53:59+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.10.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "time": "2018-08-06T14:22:27+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.13.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2019-11-27T14:18:11+00:00" - }, - { - "name": "symfony/polyfill-php56", - "version": "v1.13.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/53dd1cdf3cb986893ccf2b96665b25b3abb384f4", - "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2019-11-27T13:56:44+00:00" - }, - { - "name": "symfony/polyfill-php70", - "version": "v1.13.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "af23c7bb26a73b850840823662dda371484926c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/af23c7bb26a73b850840823662dda371484926c4", - "reference": "af23c7bb26a73b850840823662dda371484926c4", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2019-11-27T13:56:44+00:00" - }, - { - "name": "symfony/polyfill-util", - "version": "v1.13.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "964a67f293b66b95883a5ed918a65354fcd2258f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/964a67f293b66b95883a5ed918a65354fcd2258f", - "reference": "964a67f293b66b95883a5ed918a65354fcd2258f", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony utilities for portability of PHP codes", - "homepage": "https://symfony.com", - "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" - ], - "time": "2019-11-27T13:56:44+00:00" - }, - { - "name": "symfony/process", - "version": "v3.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c", - "reference": "0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2019-01-02T21:24:08+00:00" - }, - { - "name": "symfony/routing", - "version": "v3.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "445d3629a26930158347a50d1a5f2456c49e0ae6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/445d3629a26930158347a50d1a5f2456c49e0ae6", - "reference": "445d3629a26930158347a50d1a5f2456c49e0ae6", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/config": "<3.3.1", - "symfony/dependency-injection": "<3.3", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "psr/log": "~1.0", - "symfony/config": "^3.3.1|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~2.8|~3.0|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Routing Component", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "time": "2019-01-01T13:45:19+00:00" - }, - { - "name": "symfony/translation", - "version": "v4.2.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "939fb792d73f2ce80e6ae9019d205fc480f1c9a0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/939fb792d73f2ce80e6ae9019d205fc480f1c9a0", - "reference": "939fb792d73f2ce80e6ae9019d205fc480f1c9a0", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/contracts": "^1.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "symfony/translation-contracts-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/intl": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Translation Component", - "homepage": "https://symfony.com", - "time": "2019-01-03T09:07:35+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v3.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "a5f39641bb62e8b74e343467b145331273f615a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a5f39641bb62e8b74e343467b145331273f615a2", - "reference": "a5f39641bb62e8b74e343467b145331273f615a2", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" - }, - "require-dev": { - "ext-iconv": "*", - "twig/twig": "~1.34|~2.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "ext-symfony_debug": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "time": "2019-01-01T13:45:19+00:00" - }, - { - "name": "tightenco/ziggy", - "version": "v0.6.9", - "source": { - "type": "git", - "url": "https://github.com/tightenco/ziggy.git", - "reference": "0f59b703236f6b19002bc28d1d3eafcbf479bd43" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tightenco/ziggy/zipball/0f59b703236f6b19002bc28d1d3eafcbf479bd43", - "reference": "0f59b703236f6b19002bc28d1d3eafcbf479bd43", - "shasum": "" - }, - "require": { - "laravel/framework": "~5.4" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6", - "orchestra/testbench": "~3.6" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Tightenco\\Ziggy\\ZiggyServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Tightenco\\Ziggy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Stauffer", - "email": "matt@tighten.co" - }, - { - "name": "Daniel Coulbourne", - "email": "daniel@tighten.co" - } - ], - "description": "Generates a Blade directive exporting all of your named Laravel routes. Also provides a nice route() helper function in JavaScript.", - "time": "2018-10-29T06:06:46+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", - "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "time": "2017-11-27T11:13:29+00:00" - }, - { - "name": "tormjens/eventy", - "version": "0.5.8", - "source": { - "type": "git", - "url": "https://github.com/tormjens/eventy.git", - "reference": "f9c176e666a68f629392f8884e5d4e7db1d2af27" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tormjens/eventy/zipball/f9c176e666a68f629392f8884e5d4e7db1d2af27", - "reference": "f9c176e666a68f629392f8884e5d4e7db1d2af27", - "shasum": "" - }, - "require": { - "illuminate/support": ">=5.3", - "jeremeamia/superclosure": "^2.4", - "php": ">=7.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^8.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "TorMorten\\Eventy\\EventServiceProvider", - "TorMorten\\Eventy\\EventBladeServiceProvider" - ], - "aliases": { - "Eventy": "TorMorten\\Eventy\\Facades\\Events" - } - } - }, - "autoload": { - "psr-4": { - "TorMorten\\Eventy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tor Morten Jensen", - "homepage": "https://tormorten.no" - } - ], - "description": "The WordPress filter/action system in Laravel", - "homepage": "https://github.com/tormjens/eventy", - "keywords": [ - "HOOK", - "action", - "actions", - "event", - "events", - "filter", - "filters", - "hooks", - "laravel", - "wordpress" - ], - "time": "2019-11-13T09:56:28+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v2.5.2", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "cfd5dc225767ca154853752abc93aeec040fcf36" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/cfd5dc225767ca154853752abc93aeec040fcf36", - "reference": "cfd5dc225767ca154853752abc93aeec040fcf36", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "time": "2018-10-30T17:29:25+00:00" - }, - { - "name": "yajra/laravel-datatables-oracle", - "version": "v8.13.3", - "source": { - "type": "git", - "url": "https://github.com/yajra/laravel-datatables.git", - "reference": "387512371d3688f3fe1bf75e3e9e53b3d1426736" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/yajra/laravel-datatables/zipball/387512371d3688f3fe1bf75e3e9e53b3d1426736", - "reference": "387512371d3688f3fe1bf75e3e9e53b3d1426736", - "shasum": "" - }, - "require": { - "illuminate/database": "5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/filesystem": "5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/http": "5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/support": "5.4.*|5.5.*|5.6.*|5.7.*", - "illuminate/view": "5.4.*|5.5.*|5.6.*|5.7.*", - "php": ">=7.0" - }, - "require-dev": { - "orchestra/testbench": "~3.5" - }, - "suggest": { - "yajra/laravel-datatables-buttons": "Plugin for server-side exporting of dataTables.", - "yajra/laravel-datatables-editor": "Plugin to use DataTables Editor (requires a license).", - "yajra/laravel-datatables-fractal": "Plugin for server-side response using Fractal.", - "yajra/laravel-datatables-html": "Plugin for server-side HTML builder of dataTables." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.0-dev" - }, - "laravel": { - "providers": [ - "Yajra\\DataTables\\DataTablesServiceProvider" - ], - "aliases": { - "DataTables": "Yajra\\DataTables\\Facades\\DataTables" - } - } - }, - "autoload": { - "psr-4": { - "Yajra\\DataTables\\": "src/" - }, - "files": [ - "src/helper.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Arjay Angeles", - "email": "aqangeles@gmail.com" - } - ], - "description": "jQuery DataTables API for Laravel 4|5", - "keywords": [ - "datatables", - "jquery", - "laravel" - ], - "time": "2019-01-05T02:12:47+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2017-07-22T11:58:36+00:00" - }, - { - "name": "fzaninotto/faker", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", - "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "ext-intl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "squizlabs/php_codesniffer": "^1.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "time": "2018-07-12T10:23:15+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2018-06-11T23:09:50+00:00" - }, - { - "name": "orchestra/testbench", - "version": "v3.5.5", - "source": { - "type": "git", - "url": "https://github.com/orchestral/testbench.git", - "reference": "fd032489df469d611a264083e62db96677c9061e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench/zipball/fd032489df469d611a264083e62db96677c9061e", - "reference": "fd032489df469d611a264083e62db96677c9061e", - "shasum": "" - }, - "require": { - "laravel/framework": "~5.5.34", - "orchestra/testbench-core": "~3.5.9", - "php": ">=7.0", - "phpunit/phpunit": "~6.0" - }, - "require-dev": { - "mockery/mockery": "~1.0", - "orchestra/database": "~3.5.0" - }, - "suggest": { - "orchestra/testbench-browser-kit": "Allow to use legacy BrowserKit for testing (~3.5)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.5-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mior Muhammad Zaki", - "email": "crynobone@gmail.com", - "homepage": "https://github.com/crynobone" - } - ], - "description": "Laravel Testing Helper for Packages Development", - "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", - "keywords": [ - "BDD", - "TDD", - "laravel", - "orchestra-platform", - "orchestral", - "testing" - ], - "time": "2018-02-20T05:30:39+00:00" - }, - { - "name": "orchestra/testbench-core", - "version": "v3.5.10", - "source": { - "type": "git", - "url": "https://github.com/orchestral/testbench-core.git", - "reference": "09a57dc446a24fd19a75ff57b679b86094251f8e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/09a57dc446a24fd19a75ff57b679b86094251f8e", - "reference": "09a57dc446a24fd19a75ff57b679b86094251f8e", - "shasum": "" - }, - "require": { - "fzaninotto/faker": "~1.4", - "php": ">=7.0" - }, - "require-dev": { - "laravel/framework": "~5.5.0", - "mockery/mockery": "~1.0", - "orchestra/database": "~3.5.0", - "phpunit/phpunit": "~6.0" - }, - "suggest": { - "laravel/framework": "Required for testing (~5.5.0).", - "mockery/mockery": "Allow to use Mockery for testing (~1.0).", - "orchestra/database": "Allow to use --realpath migration for testing (~3.5).", - "orchestra/testbench-browser-kit": "Allow to use legacy BrowserKit for testing (~3.5).", - "orchestra/testbench-dusk": "Allow to use Laravel Dusk for testing (~3.5).", - "phpunit/phpunit": "Allow to use PHPUnit for testing (~6.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.5-dev" - } - }, - "autoload": { - "psr-4": { - "Orchestra\\Testbench\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mior Muhammad Zaki", - "email": "crynobone@gmail.com", - "homepage": "https://github.com/crynobone" - } - ], - "description": "Testing Helper for Laravel Development", - "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", - "keywords": [ - "BDD", - "TDD", - "laravel", - "orchestra-platform", - "orchestral", - "testing" - ], - "time": "2018-03-13T02:35:58+00:00" - }, - { - "name": "phar-io/manifest", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "phar-io/version": "^1.0.1", - "php": "^5.6 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" - }, - { - "name": "phar-io/version", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2017-09-11T18:02:19+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", - "shasum": "" - }, - "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "time": "2017-07-14T14:27:02+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8.x-dev" - } - }, - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2018-08-05T17:53:17+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "5.3.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0.1", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-xdebug": "^2.5.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2018-04-06T15:36:58+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2017-11-27T13:52:08+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2017-02-26T11:10:40+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2017-11-27T05:48:46+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "6.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0973426fb012359b2f18d3bd1e90ef1172839693" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693", - "reference": "0973426fb012359b2f18d3bd1e90ef1172839693", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.3", - "phpunit/php-file-iterator": "^1.4.3", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^5.0.9", - "sebastian/comparator": "^2.1", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", - "sebastian/version": "^2.0.1" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2018-09-08T15:10:43+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "5.0.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.1" - }, - "conflict": { - "phpunit/phpunit": "<6.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.11" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "abandoned": true, - "time": "2018-08-09T05:50:03+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" - }, - { - "name": "sebastian/comparator", - "version": "2.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/diff": "^2.0 || ^3.0", - "sebastian/exporter": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2018-02-01T13:46:46+00:00" - }, - { - "name": "sebastian/diff", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2017-08-03T08:09:46+00:00" - }, - { - "name": "sebastian/environment", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2017-07-01T08:51:00+00:00" - }, - { - "name": "sebastian/exporter", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2017-04-03T13:19:02+00:00" - }, - { - "name": "sebastian/global-state", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2017-04-27T15:39:26+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2018-12-25T11:19:39+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": { - "idavoll/core-module": 20 - }, - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": ">=7.0.0" - }, - "platform-dev": [] -} diff --git a/phpspec.yml b/phpspec.yml index 5746dca..a567243 100644 --- a/phpspec.yml +++ b/phpspec.yml @@ -5,4 +5,5 @@ suites: src_path: . spec_path: Tests extensions: - PhpSpec\Laravel\Extension\LaravelExtension: ~ \ No newline at end of file + PhpSpec\Laravel\Extension\LaravelExtension: + framework_path: "../../../bootstrap/app.php" \ No newline at end of file From 9fc7386badbbd2507b719bde830a9828626934fe Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Wed, 12 Aug 2020 23:57:13 +0530 Subject: [PATCH 34/37] Field spec converted to phpunit --- Tests/Unit/FieldTest.php | 73 +++++++++++++++++++++++++- Tests/Unit/Fields/TextFieldTest.php | 22 ++++---- Tests/spec/Form/FieldSpec.php | 81 ----------------------------- 3 files changed, 82 insertions(+), 94 deletions(-) delete mode 100644 Tests/spec/Form/FieldSpec.php diff --git a/Tests/Unit/FieldTest.php b/Tests/Unit/FieldTest.php index b4eeaf0..748f9aa 100644 --- a/Tests/Unit/FieldTest.php +++ b/Tests/Unit/FieldTest.php @@ -2,16 +2,85 @@ namespace Modules\Rarv\Tests\Unit; +use Illuminate\Support\HtmlString; use Modules\Core\Tests\BaseTestCase; use Modules\Rarv\Form\Field; class FieldTest extends BaseTestCase { protected function field():Field { - return (new Field('name', 'text')); + return (new Field('name', 'textGroup')); } - public function test_field_is_testable() + public function test_it_is_initializable() + { + $this->assertInstanceOf(Field::class, $this->field()); + } + + public function test_it_can_have_name() + { + $this->assertEquals('name', $this->field()->setName('name')->getName()); + } + + public function test_it_can_have_type() + { + $this->assertEquals('normalInput', $this->field()->setType('normalInput')->getType()); + } + + // @todo Fix this. + // public function test_it_can_be_rendered() + // { + // $this->assertInstanceOf(HtmlString::class, $this->field()->render()); + // } + + public function it_can_set_get_rules() + { + $this->assertCount(1, $this->field()->setRules(['required'])->getRules()); + } + + public function test_it_can_validate_the_field() + { + $this->assertFalse($this->field()->setValue(null)->setRules(['required'])->validate()); + $this->assertTrue($this->field()->setValue('dax')->setRules(['required'])->validate()); + } + + public function test_it_can_set_get_label() + { + $this->assertEquals('Question: ', $this->field()->setLabel('Question: ')->getLabel()); + } + + public function test_it_can_get_set_columns() + { + $this->assertEquals(1, $this->field()->setColumn(1)->getColumn()); + } + + public function test_it_can_not_set_column_invalid() + { + $this->expectException(\Exception::class); + $this->field()->setColumn('dax'); + // $this->shouldThrow()->duringSetColumn(13); + // $this->shouldThrow()->duringSetColumn(-1); + } + + public function test_it_can_configure_the_permission() + { + $this->assertIsBool($this->field()->permission(function () { + return true; + })->hasPermission()); + } + + public function test_it_must_return_boolean_when_permission_set() + { + $this->expectException(\Exception::class); + $this->field()->permission('dax'); + } + + public function test_it_has_default_permission_to_true() + { + $this->assertTrue($this->field()->hasPermission()); + } + + public function test_field_is_translatable() { $field = $this->field(); $field->setTranslatable(); diff --git a/Tests/Unit/Fields/TextFieldTest.php b/Tests/Unit/Fields/TextFieldTest.php index 0406ed5..b9af982 100644 --- a/Tests/Unit/Fields/TextFieldTest.php +++ b/Tests/Unit/Fields/TextFieldTest.php @@ -31,20 +31,20 @@ protected function field() return (new TextField('question', $question)); } - public function test_text_field_is_initializable() - { - $f = $this->field(); + // public function test_text_field_is_initializable() + // { + // $f = $this->field(); - $this->assertEquals($f->getValue(), 'Q in english'); - } + // $this->assertEquals($f->getValue(), 'Q in english'); + // } - public function test_text_field_can_retrive_translatable_value() - { - $f = $this->field(); - $this->assertEquals($f->getValue('gu'), 'Q in gujarati'); - } + // public function test_text_field_can_retrive_translatable_value() + // { + // $f = $this->field(); + // $this->assertEquals($f->getValue('gu'), 'Q in gujarati'); + // } - public function test_field_returns_view_based_on_translatable(Type $var = null) + public function test_field_returns_view_based_on_translatable() { $f = $this->field(); diff --git a/Tests/spec/Form/FieldSpec.php b/Tests/spec/Form/FieldSpec.php deleted file mode 100644 index e8125c7..0000000 --- a/Tests/spec/Form/FieldSpec.php +++ /dev/null @@ -1,81 +0,0 @@ -shouldHaveType(Field::class); - } - - public function let() - { - $this->beConstructedWith('name', 'normalInput'); - } - - public function it_can_have_name() - { - $this->setName('name')->getName()->shouldBe('name'); - } - - public function it_can_have_type() - { - $this->setType('normalInput')->getType()->shouldBe('normalInput'); - } - - public function it_can_be_rendered() - { - $this->render()->shouldBeAnInstanceOf(HtmlString::class); - } - - public function it_can_set_get_rules() - { - $this->setRules(['required'])->getRules()->shouldHaveCount(1); - } - - public function it_can_validate_the_field() - { - $this->setValue(null)->setRules(['required'])->validate()->shouldReturn(false); - $this->setValue('dax')->setRules(['required'])->validate()->shouldReturn(true); - } - - public function it_can_set_get_label() - { - $this->setLabel('Question: ')->getLabel()->shouldBe('Question: '); - } - - public function it_can_get_set_columns() - { - $this->setColumn(1)->getColumn()->shouldBe(1); - } - - public function it_can_not_set_column_invalid() - { - $this->shouldThrow()->duringSetColumn('dax'); - $this->shouldThrow()->duringSetColumn(13); - $this->shouldThrow()->duringSetColumn(-1); - } - - public function it_can_configure_the_permission() - { - $this->permission(function () { - return true; - })->hasPermission()->shouldBeBoolean(); - } - - public function it_must_return_boolean_when_permission_set() - { - $this->shouldThrow()->duringPermission('dax'); - $this->permission(false)->hasPermission()->shouldBeBoolean(); - } - - public function it_has_default_permission_to_true() - { - $this->hasPermission()->shouldBe(true); - } -} From 79d82d1dae55709c7cd3b5e92d67a7b0130427de Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Thu, 13 Aug 2020 02:14:23 +0530 Subject: [PATCH 35/37] Translatable textbox are now supported --- Form/Field.php | 14 ++++++-- Form/Fields/TextField.php | 18 +++++----- Form/Form.php | 35 ++++++++++++++----- Form/FormBuilder.php | 11 +++++- .../form/fields/translatable/text.blade.php | 8 ++--- Tests/Unit/FieldTest.php | 16 +++++++++ Tests/Unit/Fields/TextFieldTest.php | 21 +++++------ Tests/Unit/Form/FormTest.php | 25 +++++++++++++ 8 files changed, 114 insertions(+), 34 deletions(-) diff --git a/Form/Field.php b/Form/Field.php index 48470fb..261bad4 100644 --- a/Form/Field.php +++ b/Form/Field.php @@ -23,7 +23,7 @@ class Field protected $view = null; protected $translatable = false; - protected $locale = 'en'; + protected $locale = null; public function __construct($name, $type, $parameters = []) { @@ -176,7 +176,13 @@ public function setValue($value, $entity = null) public function getValue() { if (!$this->value) { - $this->value = request()->get($this->name, null); + if ($this->isTranslatable()) { + return data_get(request()->get($this->getLocale(), null), $this->getName()); + } else { + $this->value = request()->get($this->getName(), null); + } + } elseif ($this->isTranslatable() and isset($this->value[$this->getLocale()])) { + return $this->value[$this->getLocale()]; } return $this->value; @@ -282,6 +288,10 @@ public function setLocale($l) public function getLocale() { + if (!$this->locale) { + return app()->getLocale(); + } + return $this->locale; } } diff --git a/Form/Fields/TextField.php b/Form/Fields/TextField.php index 4f8edef..d266245 100644 --- a/Form/Fields/TextField.php +++ b/Form/Fields/TextField.php @@ -21,20 +21,20 @@ public function getModel() return $this->model; } - public function getValue() - { - $this->value = parent::getValue(); + // public function getValue() + // { + // $this->value = parent::getValue(); - if($this->isTranslatable() and !$this->value and $this->model && $this->model->getAttribute($this->name)){ - $this->value = $this->model->translate($this->locale)->{$this->name}; - } + // if ($this->isTranslatable() and !$this->value and $this->model && $this->model->getAttribute($this->name)) { + // $this->value = $this->model->translate($this->getLocale())->{$this->name}; + // } - return $this->value; - } + // return $this->value; + // } public function getView() { - if($this->isTranslatable()){ + if ($this->isTranslatable()) { return 'rarv::partials.form.fields.translatable.text'; } diff --git a/Form/Form.php b/Form/Form.php index b3308f4..5cfe5a2 100644 --- a/Form/Form.php +++ b/Form/Form.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Support\ViewErrorBag; +use Mcamara\LaravelLocalization\Facades\LaravelLocalization; use Modules\Rarv\Form\FormBuilder; class Form @@ -108,11 +109,23 @@ public function validate() return true; } + $defaultLocale = app()->getLocale(); foreach ($this->getFields() as &$field) { - $rules[$field->getName()] = $field->getRules(); - $input[$field->getName()] = $field->getValue(); - } + if ($field->isTranslatable()) { + foreach (LaravelLocalization::getSupportedLocales() as $locale => $language) { + $field->setLocale($locale); + $rules[$locale . '.' . $field->getName()] = $field->getRules(); + $input[$locale][$field->getName()] = $field->getValue(); + } + $field->setLocale($defaultLocale); + } else { + $rules[$field->getName()] = $field->getRules(); + $input[$field->getName()] = $field->getValue(); + } + } + $defaultLocale = app()->getLocale(); + $validator = app('validator')->make($input, $rules); if ($validator->fails()) { @@ -160,7 +173,7 @@ public function getEntity() return $module[1]; } - return str_plural($module[0]); + return \Str::plural($module[0]); } public function getModule() @@ -188,13 +201,19 @@ public function getModel() public function populateValues() { foreach ($this->fields as &$field) { + if ($field->isTranslatable()) { + if ($this->model && $this->model->getAttribute($field->getName())) { + // $field->setValue($this->model->translate($this->getLocale())->{$this->name}; + } + } + try { $value = $this->model->{$field->getName()}; if ($value) { $field->setValue($value, $this->model); } } catch (\Exception $e) { - \Log::warn('Unable to populate field value for '.$field->getName()); + \Log::warn('Unable to populate field value for ' . $field->getName()); // We just pass if attribute not found. } } @@ -217,14 +236,14 @@ public function getSubmitUrl($mode) } if ($mode == 'create') { - return route('admin.' . $this->getModule() .'.'. $this->getEntity() . '.store'); + return route('admin.' . $this->getModule() . '.' . $this->getEntity() . '.store'); } else { - return route('admin.' . $this->getModule() .'.'. $this->getEntity() . '.update', $this->getModel()->id); // @todo test case missing + return route('admin.' . $this->getModule() . '.' . $this->getEntity() . '.update', $this->getModel()->id); // @todo test case missing } } public function getRedirectUrl($mode) { - return route('admin.' . $this->getModule() . '.' . $this->getEntity().'.index'); + return route('admin.' . $this->getModule() . '.' . $this->getEntity() . '.index'); } } diff --git a/Form/FormBuilder.php b/Form/FormBuilder.php index 61b6bc6..225329f 100644 --- a/Form/FormBuilder.php +++ b/Form/FormBuilder.php @@ -2,6 +2,8 @@ namespace Modules\Rarv\Form; +use Mcamara\LaravelLocalization\Facades\LaravelLocalization; + class FormBuilder { protected $mode = 'create'; @@ -75,9 +77,16 @@ public function handle() return redirect()->back()->withErrors($this->form->getErrors())->withInput(); } + $data = []; foreach ($this->form->getFields() as &$field) { - $data[$field->getName()] = $field->getValue(); + if ($field->isTranslatable()) { + foreach (LaravelLocalization::getSupportedLocales() as $locale => $language) { + $data[$locale][$field->getName()] = $field->setLocale($locale)->getValue(); + } + } else { + $data[$field->getName()] = $field->getValue(); + } } if ($this->mode == 'create') { diff --git a/Resources/views/partials/form/fields/translatable/text.blade.php b/Resources/views/partials/form/fields/translatable/text.blade.php index d1d7697..781cd27 100644 --- a/Resources/views/partials/form/fields/translatable/text.blade.php +++ b/Resources/views/partials/form/fields/translatable/text.blade.php @@ -1,4 +1,4 @@ -@stack("{$locale}[{$field->getName()}]" . '_input_start') +@stack($field->getName() . '_input_start')
{!! Form::label("{$locale}[{$field->getName()}]", $field->getLabel(), ['class' => 'control-label']) !!} @@ -11,10 +11,10 @@
@endif - getRules())) ? 'required' : '' }}> + getRules())) ? 'required' : '' }}>
- {!! $errors->first("{$locale}[{$field->getName()}]", '

:message

') !!} + {!! $errors->first("{$locale}.{$field->getName()}", '

:message

') !!}
-@stack("{$locale}[{$field->getName()}]" . '_input_end') +@stack($field->getName() . '_input_end') diff --git a/Tests/Unit/FieldTest.php b/Tests/Unit/FieldTest.php index 748f9aa..6fa1da4 100644 --- a/Tests/Unit/FieldTest.php +++ b/Tests/Unit/FieldTest.php @@ -44,6 +44,22 @@ public function test_it_can_validate_the_field() $this->assertTrue($this->field()->setValue('dax')->setRules(['required'])->validate()); } + public function test_it_can_set_get_translatable_value() + { + $field = $this->field()->setTranslatable(); + $field->setValue([ + 'en' => 'EN', + 'gu' => 'GU', + ]); + + $this->assertEquals('EN', $field->getValue()); + + app()->setLocale('gu'); + $this->assertEquals('GU', $field->getValue()); + + $this->assertEquals('EN', $field->setLocale('en')->getValue()); + } + public function test_it_can_set_get_label() { $this->assertEquals('Question: ', $this->field()->setLabel('Question: ')->getLabel()); diff --git a/Tests/Unit/Fields/TextFieldTest.php b/Tests/Unit/Fields/TextFieldTest.php index b9af982..3937e5f 100644 --- a/Tests/Unit/Fields/TextFieldTest.php +++ b/Tests/Unit/Fields/TextFieldTest.php @@ -17,6 +17,7 @@ protected function field() if(! $question){ $question = Faq::create([ + 'heading_id' => $heading->id, 'en' => [ 'question' => 'Q in english', 'answer' => 'A in english', @@ -31,18 +32,18 @@ protected function field() return (new TextField('question', $question)); } - // public function test_text_field_is_initializable() - // { - // $f = $this->field(); + public function test_text_field_is_initializable() + { + $f = $this->field(); - // $this->assertEquals($f->getValue(), 'Q in english'); - // } + $this->assertEquals('Q in english', $f->getValue()); + } - // public function test_text_field_can_retrive_translatable_value() - // { - // $f = $this->field(); - // $this->assertEquals($f->getValue('gu'), 'Q in gujarati'); - // } + public function test_text_field_can_retrive_translatable_value() + { + $f = $this->field()->setTranslatable(); + $this->assertEquals('Q in gujarati', $f->setLocale('gu')->getValue()); + } public function test_field_returns_view_based_on_translatable() { diff --git a/Tests/Unit/Form/FormTest.php b/Tests/Unit/Form/FormTest.php index 39afa91..c0eb5ae 100644 --- a/Tests/Unit/Form/FormTest.php +++ b/Tests/Unit/Form/FormTest.php @@ -11,6 +11,12 @@ class FormTest extends TestCase { + protected function setUp(): void + { + parent::setUp(); + config()->set('translatable.locales', ['en', 'gu']); + } + public function form() { return (new Form('faq.faqs')); @@ -115,6 +121,25 @@ public function test_it_can_validate_form() $this->assertCount(0, $form->getErrors()); } + public function test_it_can_validate_translatable_field() + { + $form = $this->form(); + + $form->setField('name', 'normalInput') + ->setTranslatable() + ->setRules(['required'])->setValue([ + 'en' => 'English', + 'gu' => '', + ]); // fails + $form->setField('age', 'normalInput') + ->setRules(['numeric'])->setValue('dax'); // fails + $form->setField('gender', 'normalInput') + ->setRules(['required'])->setValue('male'); // passes + + $this->assertFalse($form->validate()); + $this->assertCount(2, $form->getErrors()); + } + public function test_it_can_set_get_repository() { $this->assertInstanceOf(PageRepository::class, $this->form()->setRepository('Modules\Page\Repositories\PageRepository') From 8dfbcf5d8596f39f6540443fcb6acfcbd6d510ea Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Sun, 8 Nov 2020 22:40:06 +0530 Subject: [PATCH 36/37] Hidden print class added --- Resources/views/table.blade.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/views/table.blade.php b/Resources/views/table.blade.php index f1e0f1f..dc6b957 100644 --- a/Resources/views/table.blade.php +++ b/Resources/views/table.blade.php @@ -12,7 +12,7 @@ @section('content') @if($filterForm) -
+
{!! $filterForm->view() !!}
@@ -21,7 +21,7 @@
-
+
@foreach($buttons as &$button) getAttributesLine() !!}> @@ -38,7 +38,7 @@
-
+
{!! $records->appends(request()->all())->links() !!}
@@ -47,7 +47,7 @@
@if($isMassDeletable) -

+

@endif
@@ -64,7 +64,7 @@ @endif @endforeach @if(count($links) > 0) - + @endif @@ -87,7 +87,7 @@ @endforeach @if(count($links) > 0) - @if($isMassDeletable == true) - + @endif @foreach($headers as &$header) @if(strpos($header, '__index') !== false) @@ -73,7 +73,7 @@ $record) : ?> @if($isMassDeletable == true) - + @endif @foreach($columns as $column => $value) @if($isMassDeletable == true) - + @endif @foreach($headers as &$header) @if(strpos($header, '__index') !== false) @@ -132,7 +132,7 @@ class="btn btn-{{ $link->getColor() }} btn-flat" @endif @endforeach @if(count($links) > 0) - + @endif
{{ trans('core::core.table.actions') }}{{ trans('core::core.table.actions') }}
+
@foreach($links as &$link) @can($link->getPolicy(), $record) @@ -141,7 +141,7 @@ class="btn btn-{{ $link->getColor() }} btn-flat"
-
+
{!! $records->appends(request()->all())->links() !!}
@@ -163,4 +163,4 @@ class="btn btn-{{ $link->getColor() }} btn-flat" }); }); -@stop \ No newline at end of file +@stop From 469ec66494dc82853ba7073e479b6a89b7079360 Mon Sep 17 00:00:00 2001 From: Daksh Mehta Date: Sun, 8 Nov 2020 22:44:35 +0530 Subject: [PATCH 37/37] Updated with more hidden-print class --- Resources/views/table.blade.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/views/table.blade.php b/Resources/views/table.blade.php index dc6b957..3dfa890 100644 --- a/Resources/views/table.blade.php +++ b/Resources/views/table.blade.php @@ -54,7 +54,7 @@
@@ -122,7 +122,7 @@ class="btn btn-{{ $link->getColor() }} btn-flat"
{{ trans('core::core.table.actions') }}{{ trans('core::core.table.actions') }}