diff --git a/.env.example b/.env.example index 5a225cb4..fe6e031d 100644 --- a/.env.example +++ b/.env.example @@ -11,6 +11,7 @@ DB_HOST = 127.0.0.1 DB_PORT = 3306 DB_DATABASE = aplicatiu_bombers DB_USERNAME = root +DB_PASSWORD = DB_PASSWORD = root BROADCAST_DRIVER = log diff --git a/app/Http/Controllers/ActionPlanController.php b/app/Http/Controllers/ActionPlanController.php index d123a150..5e1aa7a8 100644 --- a/app/Http/Controllers/ActionPlanController.php +++ b/app/Http/Controllers/ActionPlanController.php @@ -39,7 +39,7 @@ public function create($id) /* If exists previous Action Plan version */ if ($v > 0) { $previous_ap = ActionPlan::where('search_id', $id)->where('version', $v)->first(); - $previous_ap_tasks = ToDoTaskAP::where('action_plan_id', $previous_ap->id)->get(); + $previous_ap_tasks = ToDoTaskAP::where('action_plan_id', $previous_ap->id)->orderBy('id', 'asc')->get(); foreach ($previous_ap_tasks as $task) { $to_do_task = new ToDoTaskAP([ diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php index 6d0a8ddf..d4b4a03f 100644 --- a/app/Http/Controllers/SearchController.php +++ b/app/Http/Controllers/SearchController.php @@ -6,6 +6,7 @@ use App\Incident; use App\LostPerson; use App\Search; +use App\Task; use Auth; use Illuminate\Http\Request; use Validator; @@ -100,12 +101,12 @@ public function store(Request $request) 'user_finalization_id' => $request->get('user_finalization_id'), // person alerts - 'is_lost_person' => $request->get('is_lost_person'), - 'is_contact_person' => $request->get('is_contact_person'), - 'name_person_alerts' => $request->get('name_person_alerts'), - 'affinity_person_alerts' => $request->get('affinity_person_alerts'), - 'phone_number_person_alerts' => $request->get('phone_number_person_alerts'), - 'address_person_alerts' => $request->get('address_person_alerts'), + 'is_lost_person' => $request->get('is_lost_person'), + 'is_contact_person' => $request->get('is_contact_person'), + 'name_person_alerts' => $request->get('name_person_alerts'), + 'affinity_person_alerts' => $request->get('affinity_person_alerts'), + 'phone_number_person_alerts' => $request->get('phone_number_person_alerts'), + 'address_person_alerts' => $request->get('address_person_alerts'), // incident 'municipality_last_place_seen' => $request->get('municipality_last_place_seen'), @@ -165,6 +166,18 @@ public function show($id) $search = Search::find($id); $action_plans = ActionPlan::where('search_id', $id)->get(); $incidents = Incident::where('search_id', $id)->get(); + $tasks = Task::where('search_id', $id)->get(); + $taskGroups = $tasks->pluck('group')->filter()->unique()->sort(); + $taskTypes = $tasks->pluck('type')->filter()->unique(); + + return view('searches.view', compact( + 'search', + 'action_plans', + 'incidents', + 'tasks', + 'taskGroups', + 'taskTypes' + )); return view('searches.view', compact('search', 'action_plans', 'incidents')); } diff --git a/app/Http/Controllers/TaskController.php b/app/Http/Controllers/TaskController.php new file mode 100644 index 00000000..199f2b2e --- /dev/null +++ b/app/Http/Controllers/TaskController.php @@ -0,0 +1,105 @@ +profile; + + if ($currentUser != 'guest') { + return view('searches.tasks.create', [ + 'search_id' => $search_id, + ]); + } else { + return redirect('searches/'.$incident->search_id) + ->with('error', __('messages.not_allowed')); + } + } else { + return redirect()->action('HomeController@login'); + } + } + + public function store(Request $request) + { + $request->validate([ + 'sector' => 'required', + 'status' => 'required', Rule::in(['to_do', 'in_progress', 'done']), + 'gpxFile' => 'file|mimes:bin,dms,lrf,mar,gpx,xml', + ], [ + 'sector.required' => __('messages.required'), + 'status.required' => __('messages.required'), + 'gpxFile.mimes' => __('messages.gpx_file'), + ]); + + $task = new Task([ + 'search_id' => $request->get('search_id'), + 'sector' => $request->get('sector'), + 'status' => $request->get('status'), + 'group' => $request->get('group'), + 'start' => $request->get('start'), + 'end' => $request->get('end'), + 'type' => $request->get('type'), + 'description' => $request->get('description'), + 'trackingDevice' => $request->get('trackingDevice'), + 'gpxFileName' => $request->get('gpxFileName'), + 'gpxFile' => $request['gpxFile'], + ]); + + if ($request->hasFile('gpxFile')) { + $task->gpx = 1; + } + + $task->save(); + + return redirect('searches/'.$task->search_id.'#nav-tasks') + ->with('success', __('main.task').' '.$task->id.__('messages.added')); + } + + public function update(Request $request, Task $id) + { + $request->validate([ + 'sector' => 'required', + 'status' => 'required', Rule::in(['to_do', 'in_progress', 'done']), + 'gpxFile' => 'file|mimes:bin,dms,lrf,mar,gpx,xml', + ], [ + 'sector.required' => __('messages.required'), + 'status.required' => __('messages.required'), + 'gpxFile.mimes' => __('messages.gpx_file'), + ]); + + $id->update($request->toArray()); + + if ($request->hasFile('GpxFile')) { + $id->update([ + 'GpxFileName' => $request->get('gpxFileName'), + 'Gpx' => 1, + 'GpxFile' => $request['gpxFile'], + ]); + } + + return redirect('searches/'.$id->search_id.'#nav-tasks') + ->with('success', __('main.task').' '.$id->id.__('messages.updated')); + } + + public function destroy(Task $id) + { + $currentUser = \Auth::user()->profile; + + if ($currentUser == 'admin') { + $id->delete(); + + return redirect('searches/'.$id->search_id.'#nav-tasks') + ->with('success', __('main.task').' '.$id->id.__('messages.deleted')); + } else { + return redirect('searches/'.$id->search_id.'#nav-tasks') + ->with('error', __('messages.not_allowed')); + } + } +} diff --git a/app/Task.php b/app/Task.php new file mode 100644 index 00000000..06f08bc4 --- /dev/null +++ b/app/Task.php @@ -0,0 +1,23 @@ +=7.1.3", "symfony/dom-crawler": "^4.1|^5.0" }, "require-dev": { + + "laravel/framework": "^5.4|^6.0|^7.0|^8.0", + "laravel/framework": "^5.4|^6.0|^7.0", "orchestra/testbench": "^3.4|^4.0|^5.0", "phpunit/phpunit": "^7.0|^8.0|^9.0" @@ -44,6 +63,11 @@ } }, "autoload": { + + "files": [ + "src/Helpers/helpers.php" + ], + "psr-4": { "BinaryTorch\\LaRecipe\\": "src/" } @@ -66,6 +90,9 @@ "laravel", "markdown" ], + + "time": "2020-09-09T19:05:15+00:00" + "funding": [ { "url": "https://opencollective.com/larecipe", @@ -109,6 +136,29 @@ }, { "name": "doctrine/inflector", + + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/4650c8b30c753a76bf44fb2ed00117d6f367490c", + "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^7.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-strict-rules": "^0.11", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "version": "1.3.1", "source": { "type": "git", @@ -130,11 +180,18 @@ "type": "library", "extra": { "branch-alias": { + + "dev-master": "2.0.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { "psr-4": { + + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector", + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" } }, @@ -164,6 +221,40 @@ "email": "schmittjoh@gmail.com" } ], + + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "time": "2020-05-29T07:19:59+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + "description": "Common String Manipulations with regard to casing and singular/plural rules.", "homepage": "http://www.doctrine-project.org", "keywords": [ @@ -234,6 +325,9 @@ "parser", "php" ], + + "time": "2020-05-25T17:44:05+00:00" + "time": "2019-10-30T14:39:59+00:00" }, { @@ -292,6 +386,18 @@ }, { "name": "egulias/email-validator", + + "version": "2.1.20", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "f46887bc48db66c7f38f668eb7d6ae54583617ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f46887bc48db66c7f38f668eb7d6ae54583617ff", + "reference": "f46887bc48db66c7f38f668eb7d6ae54583617ff", + "version": "2.1.17", "source": { "type": "git", @@ -325,6 +431,9 @@ }, "autoload": { "psr-4": { + + "Egulias\\EmailValidator\\": "src" + "Egulias\\EmailValidator\\": "EmailValidator" } }, @@ -346,6 +455,9 @@ "validation", "validator" ], + + "time": "2020-09-06T13:44:32+00:00" + "time": "2020-02-13T22:36:52+00:00" }, { @@ -443,6 +555,18 @@ }, { "name": "fideloper/proxy", + + "version": "4.4.0", + "source": { + "type": "git", + "url": "https://github.com/fideloper/TrustedProxy.git", + "reference": "9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8", + "reference": "9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8", + "version": "4.3.0", "source": { "type": "git", @@ -493,6 +617,9 @@ "proxy", "trusted proxy" ], + + "time": "2020-06-23T01:36:47+00:00" + "time": "2020-02-22T01:51:47+00:00" }, { @@ -620,6 +747,18 @@ }, { "name": "guzzlehttp/guzzle", + + "version": "6.5.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "version": "6.5.2", "source": { "type": "git", @@ -636,6 +775,10 @@ "ext-json": "*", "guzzlehttp/promises": "^1.0", "guzzlehttp/psr7": "^1.6.1", + + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.17.0" + "php": ">=5.5" }, "require-dev": { @@ -644,6 +787,8 @@ "psr/log": "^1.1" }, "suggest": { + + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, @@ -683,6 +828,9 @@ "rest", "web service" ], + + "time": "2020-06-16T21:01:06+00:00" + "time": "2019-12-23T11:57:10+00:00" }, { @@ -1079,6 +1227,18 @@ }, { "name": "laravel/framework", + + "version": "v5.8.38", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "78eb4dabcc03e189620c16f436358d41d31ae11f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/78eb4dabcc03e189620c16f436358d41d31ae11f", + "reference": "78eb4dabcc03e189620c16f436358d41d31ae11f", + "version": "v5.8.37", "source": { "type": "git", @@ -1223,6 +1383,9 @@ "framework", "laravel" ], + + "time": "2020-04-14T14:14:36+00:00" + "time": "2020-02-14T14:29:11+00:00" }, { @@ -1358,6 +1521,18 @@ }, { "name": "league/flysystem", + + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "9be3b16c877d477357c015cec057548cf9b2a14a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9be3b16c877d477357c015cec057548cf9b2a14a", + "reference": "9be3b16c877d477357c015cec057548cf9b2a14a", + "version": "1.0.65", "source": { "type": "git", @@ -1372,12 +1547,20 @@ }, "require": { "ext-fileinfo": "*", + + "league/mime-type-detection": "^1.3", + "php": "^7.2.5 || ^8.0" + "php": ">=5.5.9" }, "conflict": { "league/flysystem-sftp": "<1.0.6" }, "require-dev": { + + "phpspec/prophecy": "^1.11.1", + "phpunit/phpunit": "^8.5.8" + "phpspec/phpspec": "^3.4", "phpunit/phpunit": "^5.7.26" }, @@ -1438,6 +1621,63 @@ "sftp", "storage" ], + + "time": "2020-08-23T07:39:11+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "fda190b62b962d96a069fcc414d781db66d65b69" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/fda190b62b962d96a069fcc414d781db66d65b69", + "reference": "fda190b62b962d96a069fcc414d781db66d65b69", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.36", + "phpunit/phpunit": "^8.5.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "time": "2020-08-09T10:34:01+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.25.5", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "1817faadd1846cd08be9a49e905dc68823bc38c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1817faadd1846cd08be9a49e905dc68823bc38c0", + "reference": "1817faadd1846cd08be9a49e905dc68823bc38c0", + "funding": [ { "url": "https://github.com/frankdejonge", @@ -1475,6 +1715,12 @@ "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", "graylog2/gelf-php": "~1.0", + + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "php-parallel-lint/php-parallel-lint": "^1.0", + "phpunit/phpunit": "~4.5", + "jakub-onderka/php-parallel-lint": "0.9", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", @@ -1526,6 +1772,22 @@ "logging", "psr-3" ], + + "time": "2020-07-23T08:35:51+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.39.2", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "326efde1bc09077a26cb77f6e2e32e13f06c27f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/326efde1bc09077a26cb77f6e2e32e13f06c27f2", + "reference": "326efde1bc09077a26cb77f6e2e32e13f06c27f2", + "time": "2019-12-20T14:15:16+00:00" }, { @@ -1545,6 +1807,18 @@ "require": { "ext-json": "*", "php": "^7.1.8 || ^8.0", + + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^3.4 || ^4.0 || ^5.0" + }, + "require-dev": { + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "kylekatarnls/multi-tester": "^2.0", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.35", + "symfony/translation": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { @@ -1561,12 +1835,23 @@ "type": "library", "extra": { "branch-alias": { + + "dev-master": "2.x-dev", + "dev-3.x": "3.x-dev" + "dev-master": "2.x-dev" }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" ] + + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } }, "autoload": { @@ -1596,6 +1881,22 @@ "datetime", "time" ], + + "time": "2020-09-10T12:16:42+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.9.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "88e519766fc58bd46b8265561fb79b54e2e00b28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/88e519766fc58bd46b8265561fb79b54e2e00b28", + "reference": "88e519766fc58bd46b8265561fb79b54e2e00b28", + "funding": [ { "url": "https://opencollective.com/Carbon", @@ -1627,6 +1928,10 @@ "php": ">=7.0" }, "require-dev": { + + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "ircmaxell/php-yacc": "0.0.5", "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" }, @@ -1636,6 +1941,9 @@ "type": "library", "extra": { "branch-alias": { + + "dev-master": "4.9-dev" + "dev-master": "4.3-dev" } }, @@ -1658,6 +1966,22 @@ "parser", "php" ], + + "time": "2020-08-30T16:15:20+00:00" + }, + { + "name": "opis/closure", + "version": "3.5.7", + "source": { + "type": "git", + "url": "https://github.com/opis/closure.git", + "reference": "4531e53afe2fc660403e76fb7644e95998bff7bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opis/closure/zipball/4531e53afe2fc660403e76fb7644e95998bff7bf", + "reference": "4531e53afe2fc660403e76fb7644e95998bff7bf", + "time": "2019-11-08T13:50:10+00:00" }, { @@ -1719,6 +2043,9 @@ "serialization", "serialize" ], + + "time": "2020-09-06T17:02:15+00:00" + "time": "2019-11-29T22:36:02+00:00" }, { @@ -1768,6 +2095,26 @@ }, { "name": "phpoption/phpoption", + + "version": "1.7.5", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/994ecccd8f3283ecf5ac33254543eb0ac946d525", + "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 || ^9.0" + "version": "1.7.2", "source": { "type": "git", @@ -1819,6 +2166,9 @@ "php", "type" ], + + "time": "2020-07-20T17:29:33+00:00" + "time": "2019-12-15T19:35:24+00:00" }, { @@ -2218,6 +2568,18 @@ }, { "name": "santigarcor/laratrust", + + "version": "5.2.9", + "source": { + "type": "git", + "url": "https://github.com/santigarcor/laratrust.git", + "reference": "454a338500ea5ab2807da5ee0a799c9c3d01cc05" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/santigarcor/laratrust/zipball/454a338500ea5ab2807da5ee0a799c9c3d01cc05", + "reference": "454a338500ea5ab2807da5ee0a799c9c3d01cc05", + "version": "5.2.8", "source": { "type": "git", @@ -2237,6 +2599,9 @@ }, "require-dev": { "mockery/mockery": ">=0.9.9", + + "orchestra/testbench": "~3.6.0|~3.7.0|~3.8.0|~3.9.0|4.*|5.*", + "orchestra/testbench": "~3.6.0|~3.7.0|~3.8.0|~3.9.0", "phpunit/phpunit": ">=4.1" }, @@ -2279,6 +2644,9 @@ "rbac", "roles" ], + + "time": "2020-04-29T23:28:02+00:00" + "time": "2020-03-09T08:19:36+00:00" }, { @@ -2345,6 +2713,25 @@ }, { "name": "symfony/console", + + "version": "v4.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "b39fd99b9297b67fb7633b7d8083957a97e1e727" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/b39fd99b9297b67fb7633b7d8083957a97e1e727", + "reference": "b39fd99b9297b67fb7633b7d8083957a97e1e727", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "version": "v4.4.5", "source": { "type": "git", @@ -2417,6 +2804,26 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", + + "time": "2020-09-02T07:07:21+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "e544e24472d4c97b2d11ade7caacd446727c6bf9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/e544e24472d4c97b2d11ade7caacd446727c6bf9", + "reference": "e544e24472d4c97b2d11ade7caacd446727c6bf9", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + "funding": [ { "url": "https://symfony.com/sponsor", @@ -2453,6 +2860,9 @@ "type": "library", "extra": { "branch-alias": { + + "dev-master": "5.1-dev" + "dev-master": "5.0-dev" } }, @@ -2484,6 +2894,9 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", + + "time": "2020-05-20T17:43:50+00:00" + "time": "2020-02-04T09:41:09+00:00" }, { @@ -2541,6 +2954,8 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -2559,6 +2974,25 @@ }, { "name": "symfony/dom-crawler", + + "version": "v5.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "3ac31ffbc596e41ca081037b7d78fc7a853c0315" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/3ac31ffbc596e41ca081037b7d78fc7a853c0315", + "reference": "3ac31ffbc596e41ca081037b7d78fc7a853c0315", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15" + "version": "v5.0.5", "source": { "type": "git", @@ -2589,6 +3023,9 @@ "type": "library", "extra": { "branch-alias": { + + "dev-master": "5.1-dev" + "dev-master": "5.0-dev" } }, @@ -2616,6 +3053,9 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", + + "time": "2020-08-12T08:45:47+00:00" + "funding": [ { "url": "https://symfony.com/sponsor", @@ -2687,6 +3127,8 @@ ], "description": "Symfony ErrorHandler Component", "homepage": "https://symfony.com", + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -2771,6 +3213,8 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -2847,6 +3291,8 @@ "interoperability", "standards" ], + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -2865,6 +3311,22 @@ }, { "name": "symfony/finder", + + "version": "v4.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "2a78590b2c7e3de5c429628457c47541c58db9c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/2a78590b2c7e3de5c429628457c47541c58db9c7", + "reference": "2a78590b2c7e3de5c429628457c47541c58db9c7", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + "version": "v4.4.5", "source": { "type": "git", @@ -2910,6 +3372,9 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", + + "time": "2020-08-17T09:56:45+00:00" + "funding": [ { "url": "https://symfony.com/sponsor", @@ -2979,6 +3444,8 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3084,6 +3551,8 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3161,6 +3630,8 @@ "mime", "mime-type" ], + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3237,6 +3708,8 @@ "polyfill", "portable" ], + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3255,6 +3728,18 @@ }, { "name": "symfony/polyfill-iconv", + + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", + "reference": "6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36", + "version": "v1.14.0", "source": { "type": "git", @@ -3276,6 +3761,13 @@ "type": "library", "extra": { "branch-alias": { + + "dev-master": "1.18-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + "dev-master": "1.14-dev" } }, @@ -3310,6 +3802,9 @@ "portable", "shim" ], + + "time": "2020-07-14T12:35:20+00:00" + "time": "2020-01-13T11:15:53+00:00" }, { @@ -3381,6 +3876,8 @@ "portable", "shim" ], + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3462,6 +3959,8 @@ "portable", "shim" ], + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3539,6 +4038,8 @@ "portable", "shim" ], + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3616,6 +4117,8 @@ "portable", "shim" ], + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3689,6 +4192,8 @@ "portable", "shim" ], + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3765,6 +4270,8 @@ "portable", "shim" ], + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3845,6 +4352,8 @@ "portable", "shim" ], + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3863,6 +4372,22 @@ }, { "name": "symfony/process", + + "version": "v4.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/65e70bab62f3da7089a8d4591fb23fbacacb3479", + "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + "version": "v4.4.5", "source": { "type": "git", @@ -3908,6 +4433,26 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", + + "time": "2020-07-23T08:31:43+00:00" + }, + { + "name": "symfony/routing", + "version": "v4.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "e3387963565da9bae51d1d3ab8041646cc93bd04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/e3387963565da9bae51d1d3ab8041646cc93bd04", + "reference": "e3387963565da9bae51d1d3ab8041646cc93bd04", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + "funding": [ { "url": "https://symfony.com/sponsor", @@ -3998,6 +4543,26 @@ "uri", "url" ], + + "time": "2020-08-10T07:27:51+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "funding": [ { "url": "https://symfony.com/sponsor", @@ -4038,6 +4603,13 @@ "type": "library", "extra": { "branch-alias": { + + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + "dev-master": "2.0-dev" } }, @@ -4070,6 +4642,26 @@ "interoperability", "standards" ], + + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/translation", + "version": "v4.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "700e6e50174b0cdcf0fa232773bec5c314680575" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/700e6e50174b0cdcf0fa232773bec5c314680575", + "reference": "700e6e50174b0cdcf0fa232773bec5c314680575", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "time": "2019-11-18T17:27:11+00:00" }, { @@ -4146,6 +4738,26 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", + + "time": "2020-08-17T09:56:45+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "77ce1c3627c9f39643acd9af086631f842c50c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/77ce1c3627c9f39643acd9af086631f842c50c4d", + "reference": "77ce1c3627c9f39643acd9af086631f842c50c4d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + "funding": [ { "url": "https://symfony.com/sponsor", @@ -4185,6 +4797,13 @@ "type": "library", "extra": { "branch-alias": { + + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + "dev-master": "2.0-dev" } }, @@ -4217,6 +4836,9 @@ "interoperability", "standards" ], + + "time": "2020-09-07T11:33:47+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { @@ -4294,6 +4916,8 @@ "debug", "dump" ], + + "funding": [ { "url": "https://symfony.com/sponsor", @@ -4312,6 +4936,18 @@ }, { "name": "tijsverkoyen/css-to-inline-styles", + + "version": "2.2.3", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/b43b05cf43c1b6d849478965062b6ef73e223bb5", + "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5", + "version": "2.2.2", "source": { "type": "git", @@ -4327,6 +4963,13 @@ "require": { "ext-dom": "*", "ext-libxml": "*", + + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5" + "php": "^5.5 || ^7.0", "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" }, @@ -4357,6 +5000,22 @@ ], "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": "2020-07-13T06:12:54+00:00" + }, + { + "name": "tio/laravel", + "version": "v1.10", + "source": { + "type": "git", + "url": "https://github.com/translation/laravel.git", + "reference": "855cba70e66b96a365f325c71b25c342f9fed8a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/translation/laravel/zipball/855cba70e66b96a365f325c71b25c342f9fed8a4", + "reference": "855cba70e66b96a365f325c71b25c342f9fed8a4", + "time": "2019-10-24T08:53:34+00:00" }, { @@ -4376,6 +5035,18 @@ "require": { "gettext/gettext": "^4.4.3", "guzzlehttp/guzzle": "^6.3", + + "illuminate/config": "^5.1 || ^6.0 || ^7.0", + "illuminate/console": "^5.1 || ^6.0 || ^7.0", + "illuminate/filesystem": "^5.1 || ^6.0 || ^7.0", + "illuminate/support": "^5.1 || ^6.0 || ^7.0", + "illuminate/translation": "^5.1 || ^6.0 || ^7.0", + "php": ">=7.0" + }, + "require-dev": { + "league/flysystem-vfs": "^1.0", + "orchestra/testbench": "^3.1 || ^4.0 || ^5.0", + "illuminate/config": "^5.1 || ^6.0", "illuminate/console": "^5.1 || ^6.0", "illuminate/filesystem": "^5.1 || ^6.0", @@ -4430,6 +5101,37 @@ "translation", "translation.io" ], + + "time": "2020-04-27T13:32:17+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v3.6.7", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "2065beda6cbe75e2603686907b2e45f6f3a5ad82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2065beda6cbe75e2603686907b2e45f6f3a5ad82", + "reference": "2065beda6cbe75e2603686907b2e45f6f3a5ad82", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0", + "phpoption/phpoption": "^1.5.2", + "symfony/polyfill-ctype": "^1.17" + }, + "require-dev": { + "ext-filter": "*", + "ext-pcre": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator.", + "ext-pcre": "Required to use most of the library." + "time": "2019-10-09T16:26:58+00:00" }, { @@ -4491,6 +5193,9 @@ "env", "environment" ], + + "time": "2020-07-14T19:04:52+00:00" + "funding": [ { "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", @@ -4564,6 +5269,22 @@ }, { "name": "doctrine/instantiator", + + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + "version": "1.3.0", "source": { "type": "git", @@ -4616,6 +5337,22 @@ "constructor", "instantiate" ], + + "time": "2020-05-29T17:27:14+00:00" + }, + { + "name": "filp/whoops", + "version": "2.7.3", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "5d5fe9bb3d656b514d455645b3addc5f7ba7714d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/5d5fe9bb3d656b514d455645b3addc5f7ba7714d", + "reference": "5d5fe9bb3d656b514d455645b3addc5f7ba7714d", + "time": "2019-10-21T16:45:58+00:00" }, { @@ -4677,6 +5414,9 @@ "throwable", "whoops" ], + + "time": "2020-06-14T09:00:00+00:00" + "time": "2020-01-15T10:00:00+00:00" }, { @@ -4731,6 +5471,22 @@ }, { "name": "hamcrest/hamcrest-php", + + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + "version": "v2.0.0", "source": { "type": "git", @@ -4752,6 +5508,10 @@ "kodova/hamcrest-php": "*" }, "require-dev": { + + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "phpunit/php-file-iterator": "1.3.3", "phpunit/phpunit": "~4.0", "satooshi/php-coveralls": "^1.0" @@ -4759,6 +5519,9 @@ "type": "library", "extra": { "branch-alias": { + + "dev-master": "2.1-dev" + "dev-master": "2.0-dev" } }, @@ -4769,12 +5532,35 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ + + "BSD-3-Clause" + "BSD" ], "description": "This is the PHP port of Hamcrest Matchers", "keywords": [ "test" ], + + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.3.3", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/60fa2f67f6e4d3634bb4a45ff3171fa52215800d", + "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "time": "2016-01-20T08:20:44+00:00" }, { @@ -4797,6 +5583,9 @@ "php": ">=5.6.0" }, "require-dev": { + + "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3" + "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" }, "type": "library", @@ -4840,6 +5629,26 @@ "test double", "testing" ], + + "time": "2020-08-11T18:10:21+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.10.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", + "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + "time": "2019-12-26T09:49:15+00:00" }, { @@ -4888,6 +5697,9 @@ "object", "object graph" ], + + "time": "2020-06-29T13:22:24+00:00" + "time": "2020-01-17T21:11:47+00:00" }, { @@ -5058,6 +5870,22 @@ }, { "name": "phpdocumentor/reflection-common", + + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + "version": "2.0.0", "source": { "type": "git", @@ -5079,6 +5907,9 @@ "type": "library", "extra": { "branch-alias": { + + "dev-2.x": "2.x-dev" + "dev-master": "2.x-dev" } }, @@ -5106,6 +5937,33 @@ "reflection", "static analysis" ], + + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "d870572532cd70bc3fab58f2e23ad423c8404c44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d870572532cd70bc3fab58f2e23ad423c8404c44", + "reference": "d870572532cd70bc3fab58f2e23ad423c8404c44", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + "time": "2018-08-07T13:53:10+00:00" }, { @@ -5159,6 +6017,30 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + + "time": "2020-08-15T11:14:08+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e878a14a65245fbe78f8080eba03b47c3b705651" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651", + "reference": "e878a14a65245fbe78f8080eba03b47c3b705651", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*" + "time": "2020-02-22T12:28:44+00:00" }, { @@ -5186,6 +6068,9 @@ "type": "library", "extra": { "branch-alias": { + + "dev-1.x": "1.x-dev" + "dev-master": "1.x-dev" } }, @@ -5205,6 +6090,34 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + + "time": "2020-06-27T10:12:23+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b20034be5efcdab4fb60ca3a29cba2949aead160", + "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2", + "phpdocumentor/reflection-docblock": "^5.0", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0", + "phpunit/phpunit": "^8.0" + "time": "2020-02-18T18:59:58+00:00" }, { @@ -5235,6 +6148,9 @@ "type": "library", "extra": { "branch-alias": { + + "dev-master": "1.11.x-dev" + "dev-master": "1.10.x-dev" } }, @@ -5268,6 +6184,9 @@ "spy", "stub" ], + + "time": "2020-07-08T12:44:21+00:00" + "time": "2020-03-05T15:02:03+00:00" }, { @@ -6175,6 +7094,18 @@ }, { "name": "theseer/tokenizer", + + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "75a63c33a8577608444246075ea0af0d052e452a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "version": "1.1.3", "source": { "type": "git", @@ -6191,6 +7122,9 @@ "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", + + "php": "^7.2 || ^8.0" + "php": "^7.0" }, "type": "library", @@ -6211,6 +7145,31 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + + "time": "2020-07-12T23:59:07+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" + "time": "2019-06-13T22:48:21+00:00" }, { @@ -6259,6 +7218,9 @@ "check", "validate" ], + + "time": "2020-07-08T17:02:28+00:00" + "time": "2020-02-14T12:15:55+00:00" } ], @@ -6270,6 +7232,9 @@ "platform": { "php": "^7.3.5" }, + + "platform-dev": [] + "platform-dev": [], "plugin-api-version": "1.1.0" } diff --git a/database/factories/TaskFactory.php b/database/factories/TaskFactory.php new file mode 100644 index 00000000..e2548639 --- /dev/null +++ b/database/factories/TaskFactory.php @@ -0,0 +1,19 @@ +define(Task::class, function (Faker $faker) { + return [ + 'search_id' => 1, + 'Sector' => $faker->word, + 'Status' => 'to_do', + 'Group' => $faker->randomDigit, + 'Start' => $faker->dateTime, + 'End' => $faker->dateTimeThisYear, + 'Type' => $faker->word, + 'Description' => $faker->text($maxNbChars = 200), + ]; +}); diff --git a/database/migrations/2020_04_11_201608_create_action_plans.php b/database/migrations/2020_04_11_201608_create_action_plans.php old mode 100755 new mode 100644 diff --git a/database/migrations/2020_09_13_215758_create_tasks_table.php b/database/migrations/2020_09_13_215758_create_tasks_table.php new file mode 100644 index 00000000..5d8a876b --- /dev/null +++ b/database/migrations/2020_09_13_215758_create_tasks_table.php @@ -0,0 +1,46 @@ +bigIncrements('id'); + $table->integer('search_id')->unsigned(); + $table->string('sector')->nullable(); + $table->string('status')->default('to_do'); + $table->string('group')->nullable(); + $table->dateTime('start')->nullable(); + $table->dateTime('end')->nullable(); + $table->string('type')->nullable(); + $table->longText('description')->nullable(); + $table->string('trackingDevice')->nullable(); + $table->integer('gpx')->default(0); + $table->binary('gpxFile')->nullable(); + $table->string('gpxFileName')->nullable(); + $table->timestamps(); + }); + Schema::table('tasks', function (Blueprint $table) { + $table->foreign('search_id')->references('id')->on('searches')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('tasks'); + } +} diff --git a/package-lock.json b/package-lock.json index de300ae2..207e9049 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5923,8 +5923,8 @@ } }, "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", "dev": true }, @@ -7620,7 +7620,7 @@ "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", "dev": true, "requires": { - "node-forge": "0.7.5" + "node-forge": "^0.10.0" } }, "semver": { @@ -9232,7 +9232,7 @@ "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" + "yargs-parser": "^13.1.2" } }, "yargs-parser": { @@ -9503,12 +9503,12 @@ "string-width": "^2.0.0", "which-module": "^2.0.0", "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "dev": true, "requires": { diff --git a/public/css/daterangepicker.css b/public/css/daterangepicker.css index e6490a5c..f8c76054 100644 --- a/public/css/daterangepicker.css +++ b/public/css/daterangepicker.css @@ -1,388 +1,777 @@ -.daterangepicker { - position: absolute; - color: inherit; - background-color: #fff; - border-radius: 4px; - border: 1px solid #ddd; - width: 278px; - max-width: none; - padding: 0; - margin-top: 7px; - top: 100px; - left: 20px; - z-index: 3001; - display: none; - font-family: arial; - font-size: 15px; - line-height: 1em; -} - -.daterangepicker:before, .daterangepicker:after { - position: absolute; - display: inline-block; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.daterangepicker:before { - top: -7px; - border-right: 7px solid transparent; - border-left: 7px solid transparent; - border-bottom: 7px solid #ccc; -} - -.daterangepicker:after { - top: -6px; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-left: 6px solid transparent; -} - -.daterangepicker.opensleft:before { - right: 9px; -} - -.daterangepicker.opensleft:after { - right: 10px; -} - -.daterangepicker.openscenter:before { - left: 0; - right: 0; - width: 0; - margin-left: auto; - margin-right: auto; -} - -.daterangepicker.openscenter:after { - left: 0; - right: 0; - width: 0; - margin-left: auto; - margin-right: auto; -} - -.daterangepicker.opensright:before { - left: 9px; -} - -.daterangepicker.opensright:after { - left: 10px; -} - -.daterangepicker.drop-up { - margin-top: -7px; -} - -.daterangepicker.drop-up:before { - top: initial; - bottom: -7px; - border-bottom: initial; - border-top: 7px solid #ccc; -} - -.daterangepicker.drop-up:after { - top: initial; - bottom: -6px; - border-bottom: initial; - border-top: 6px solid #fff; -} - -.daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar { - float: none; -} - -.daterangepicker.single .drp-selected { - display: none; -} - -.daterangepicker.show-calendar .drp-calendar { - display: block; -} - -.daterangepicker.show-calendar .drp-buttons { - display: block; -} - -.daterangepicker.auto-apply .drp-buttons { - display: none; -} - -.daterangepicker .drp-calendar { - display: none; - max-width: 270px; -} - -.daterangepicker .drp-calendar.left { - padding: 8px 0 8px 8px; -} - -.daterangepicker .drp-calendar.right { - padding: 8px; -} - -.daterangepicker .drp-calendar.single .calendar-table { - border: none; -} - -.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span { - color: #fff; - border: solid black; - border-width: 0 2px 2px 0; - border-radius: 0; - display: inline-block; - padding: 3px; -} - -.daterangepicker .calendar-table .next span { - transform: rotate(-45deg); - -webkit-transform: rotate(-45deg); -} - -.daterangepicker .calendar-table .prev span { - transform: rotate(135deg); - -webkit-transform: rotate(135deg); -} - -.daterangepicker .calendar-table th, .daterangepicker .calendar-table td { - white-space: nowrap; - text-align: center; - vertical-align: middle; - min-width: 32px; - width: 32px; - height: 24px; - line-height: 24px; - font-size: 12px; - border-radius: 4px; - border: 1px solid transparent; - white-space: nowrap; - cursor: pointer; -} - -.daterangepicker .calendar-table { - border: 1px solid #fff; - border-radius: 4px; - background-color: #fff; -} - -.daterangepicker .calendar-table table { - width: 100%; - margin: 0; - border-spacing: 0; - border-collapse: collapse; -} - -.daterangepicker td.available:hover, .daterangepicker th.available:hover { - background-color: #eee; - border-color: transparent; - color: inherit; -} - -.daterangepicker td.week, .daterangepicker th.week { - font-size: 80%; - color: #ccc; -} - -.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { - background-color: #fff; - border-color: transparent; - color: #999; -} - -.daterangepicker td.in-range { - background-color: #ebf4f8; - border-color: transparent; - color: #000; - border-radius: 0; -} - -.daterangepicker td.start-date { - border-radius: 4px 0 0 4px; -} - -.daterangepicker td.end-date { - border-radius: 0 4px 4px 0; -} - -.daterangepicker td.start-date.end-date { - border-radius: 4px; -} - -.daterangepicker td.active, .daterangepicker td.active:hover { - background-color: #357ebd; - border-color: transparent; - color: #fff; -} - -.daterangepicker th.month { - width: auto; -} - -.daterangepicker td.disabled, .daterangepicker option.disabled { - color: #999; - cursor: not-allowed; - text-decoration: line-through; -} - -.daterangepicker select.monthselect, .daterangepicker select.yearselect { - font-size: 12px; - padding: 1px; - height: auto; - margin: 0; - cursor: default; -} - -.daterangepicker select.monthselect { - margin-right: 2%; - width: 56%; -} - -.daterangepicker select.yearselect { - width: 40%; -} - -.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { - width: 50px; - margin: 0 auto; - background: #eee; - border: 1px solid #eee; - padding: 2px; - outline: 0; - font-size: 12px; -} - -.daterangepicker .calendar-time { - text-align: center; - margin: 4px auto 0 auto; - line-height: 30px; - position: relative; -} - -.daterangepicker .calendar-time select.disabled { - color: #ccc; - cursor: not-allowed; -} - -.daterangepicker .drp-buttons { - clear: both; - text-align: right; - padding: 8px; - border-top: 1px solid #ddd; - display: none; - line-height: 12px; - vertical-align: middle; -} - -.daterangepicker .drp-selected { - display: inline-block; - font-size: 12px; - padding-right: 8px; -} - -.daterangepicker .drp-buttons .btn { - margin-left: 8px; - font-size: 12px; - font-weight: bold; - padding: 4px 8px; -} - -.daterangepicker.show-ranges .drp-calendar.left { - border-left: 1px solid #ddd; -} - -.daterangepicker .ranges { - float: none; - text-align: left; - margin: 0; -} - -.daterangepicker.show-calendar .ranges { - margin-top: 8px; -} - -.daterangepicker .ranges ul { - list-style: none; - margin: 0 auto; - padding: 0; - width: 100%; -} - -.daterangepicker .ranges li { - font-size: 12px; - padding: 8px 12px; - cursor: pointer; -} - -.daterangepicker .ranges li:hover { - background-color: #eee; -} - -.daterangepicker .ranges li.active { - background-color: #08c; - color: #fff; -} - -/* Larger Screen Styling */ -@media (min-width: 564px) { - .daterangepicker { - width: auto; } - .daterangepicker .ranges ul { - width: 140px; } - .daterangepicker.single .ranges ul { - width: 100%; } - .daterangepicker.single .drp-calendar.left { - clear: none; } - .daterangepicker.single.ltr .ranges, .daterangepicker.single.ltr .drp-calendar { - float: left; } - .daterangepicker.single.rtl .ranges, .daterangepicker.single.rtl .drp-calendar { - float: right; } - .daterangepicker.ltr { - direction: ltr; - text-align: left; } - .daterangepicker.ltr .drp-calendar.left { - clear: left; - margin-right: 0; } - .daterangepicker.ltr .drp-calendar.left .calendar-table { - border-right: none; - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .daterangepicker.ltr .drp-calendar.right { - margin-left: 0; } - .daterangepicker.ltr .drp-calendar.right .calendar-table { - border-left: none; - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .daterangepicker.ltr .drp-calendar.left .calendar-table { - padding-right: 8px; } - .daterangepicker.ltr .ranges, .daterangepicker.ltr .drp-calendar { - float: left; } - .daterangepicker.rtl { - direction: rtl; - text-align: right; } - .daterangepicker.rtl .drp-calendar.left { - clear: right; - margin-left: 0; } - .daterangepicker.rtl .drp-calendar.left .calendar-table { - border-left: none; - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .daterangepicker.rtl .drp-calendar.right { - margin-right: 0; } - .daterangepicker.rtl .drp-calendar.right .calendar-table { - border-right: none; - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .daterangepicker.rtl .drp-calendar.left .calendar-table { - padding-left: 12px; } - .daterangepicker.rtl .ranges, .daterangepicker.rtl .drp-calendar { - text-align: right; - float: right; } } -@media (min-width: 730px) { - .daterangepicker .ranges { - width: auto; } - .daterangepicker.ltr .ranges { - float: left; } - .daterangepicker.rtl .ranges { - float: right; } - .daterangepicker .drp-calendar.left { - clear: none !important; } } +.daterangepicker { + position: absolute; + color: inherit; + background-color: #fff; + border-radius: 4px; + border: 1px solid #ddd; + width: 278px; + max-width: none; + padding: 0; + margin-top: 7px; + top: 100px; + left: 20px; + z-index: 3001; + display: none; + font-family: arial; + font-size: 15px; + line-height: 1em; +} + +.daterangepicker:before, .daterangepicker:after { + position: absolute; + display: inline-block; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker:before { + top: -7px; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 7px solid #ccc; +} + +.daterangepicker:after { + top: -6px; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; +} + +.daterangepicker.opensleft:before { + right: 9px; +} + +.daterangepicker.opensleft:after { + right: 10px; +} + +.daterangepicker.openscenter:before { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; +} + +.daterangepicker.openscenter:after { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; +} + +.daterangepicker.opensright:before { + left: 9px; +} + +.daterangepicker.opensright:after { + left: 10px; +} + +.daterangepicker.drop-up { + margin-top: -7px; +} + +.daterangepicker.drop-up:before { + top: initial; + bottom: -7px; + border-bottom: initial; + border-top: 7px solid #ccc; +} + +.daterangepicker.drop-up:after { + top: initial; + bottom: -6px; + border-bottom: initial; + border-top: 6px solid #fff; +} + +.daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar { + float: none; +} + +.daterangepicker.single .drp-selected { + display: none; +} + +.daterangepicker.show-calendar .drp-calendar { + display: block; +} + +.daterangepicker.show-calendar .drp-buttons { + display: block; +} + +.daterangepicker.auto-apply .drp-buttons { + display: none; +} + +.daterangepicker .drp-calendar { + display: none; + max-width: 270px; +} + +.daterangepicker .drp-calendar.left { + padding: 8px 0 8px 8px; +} + +.daterangepicker .drp-calendar.right { + padding: 8px; +} + +.daterangepicker .drp-calendar.single .calendar-table { + border: none; +} + +.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span { + color: #fff; + border: solid black; + border-width: 0 2px 2px 0; + border-radius: 0; + display: inline-block; + padding: 3px; +} + +.daterangepicker .calendar-table .next span { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); +} + +.daterangepicker .calendar-table .prev span { + transform: rotate(135deg); + -webkit-transform: rotate(135deg); +} + +.daterangepicker .calendar-table th, .daterangepicker .calendar-table td { + white-space: nowrap; + text-align: center; + vertical-align: middle; + min-width: 32px; + width: 32px; + height: 24px; + line-height: 24px; + font-size: 12px; + border-radius: 4px; + border: 1px solid transparent; + white-space: nowrap; + cursor: pointer; +} + +.daterangepicker .calendar-table { + border: 1px solid #fff; + border-radius: 4px; + background-color: #fff; +} + +.daterangepicker .calendar-table table { + width: 100%; + margin: 0; + border-spacing: 0; + border-collapse: collapse; +} + +.daterangepicker td.available:hover, .daterangepicker th.available:hover { + background-color: #eee; + border-color: transparent; + color: inherit; +} + +.daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; +} + +.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { + background-color: #fff; + border-color: transparent; + color: #999; +} + +.daterangepicker td.in-range { + background-color: #ebf4f8; + border-color: transparent; + color: #000; + border-radius: 0; +} + +.daterangepicker td.start-date { + border-radius: 4px 0 0 4px; +} + +.daterangepicker td.end-date { + border-radius: 0 4px 4px 0; +} + +.daterangepicker td.start-date.end-date { + border-radius: 4px; +} + +.daterangepicker td.active, .daterangepicker td.active:hover { + background-color: #357ebd; + border-color: transparent; + color: #fff; +} + +.daterangepicker th.month { + width: auto; +} + +.daterangepicker td.disabled, .daterangepicker option.disabled { + color: #999; + cursor: not-allowed; + text-decoration: line-through; +} + +.daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; +} + +.daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; +} + +.daterangepicker select.yearselect { + width: 40%; +} + +.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { + width: 50px; + margin: 0 auto; + background: #eee; + border: 1px solid #eee; + padding: 2px; + outline: 0; + font-size: 12px; +} + +.daterangepicker .calendar-time { + text-align: center; + margin: 4px auto 0 auto; + line-height: 30px; + position: relative; +} + +.daterangepicker .calendar-time select.disabled { + color: #ccc; + cursor: not-allowed; +} + +.daterangepicker .drp-buttons { + clear: both; + text-align: right; + padding: 8px; + border-top: 1px solid #ddd; + display: none; + line-height: 12px; + vertical-align: middle; +} + +.daterangepicker .drp-selected { + display: inline-block; + font-size: 12px; + padding-right: 8px; +} + +.daterangepicker .drp-buttons .btn { + margin-left: 8px; + font-size: 12px; + font-weight: bold; + padding: 4px 8px; +} + +.daterangepicker.show-ranges .drp-calendar.left { + border-left: 1px solid #ddd; +} + +.daterangepicker .ranges { + float: none; + text-align: left; + margin: 0; +} + +.daterangepicker.show-calendar .ranges { + margin-top: 8px; +} + +.daterangepicker .ranges ul { + list-style: none; + margin: 0 auto; + padding: 0; + width: 100%; +} + +.daterangepicker .ranges li { + font-size: 12px; + padding: 8px 12px; + cursor: pointer; +} + +.daterangepicker .ranges li:hover { + background-color: #eee; +} + +.daterangepicker .ranges li.active { + background-color: #08c; + color: #fff; +} + +/* Larger Screen Styling */ +@media (min-width: 564px) { + .daterangepicker { + width: auto; } + .daterangepicker .ranges ul { + width: 140px; } + .daterangepicker.single .ranges ul { + width: 100%; } + .daterangepicker.single .drp-calendar.left { + clear: none; } + .daterangepicker.single.ltr .ranges, .daterangepicker.single.ltr .drp-calendar { + float: left; } + .daterangepicker.single.rtl .ranges, .daterangepicker.single.rtl .drp-calendar { + float: right; } + .daterangepicker.ltr { + direction: ltr; + text-align: left; } + .daterangepicker.ltr .drp-calendar.left { + clear: left; + margin-right: 0; } + .daterangepicker.ltr .drp-calendar.left .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .daterangepicker.ltr .drp-calendar.right { + margin-left: 0; } + .daterangepicker.ltr .drp-calendar.right .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .daterangepicker.ltr .drp-calendar.left .calendar-table { + padding-right: 8px; } + .daterangepicker.ltr .ranges, .daterangepicker.ltr .drp-calendar { + float: left; } + .daterangepicker.rtl { + direction: rtl; + text-align: right; } + .daterangepicker.rtl .drp-calendar.left { + clear: right; + margin-left: 0; } + .daterangepicker.rtl .drp-calendar.left .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .daterangepicker.rtl .drp-calendar.right { + margin-right: 0; } + .daterangepicker.rtl .drp-calendar.right .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .daterangepicker.rtl .drp-calendar.left .calendar-table { + padding-left: 12px; } + .daterangepicker.rtl .ranges, .daterangepicker.rtl .drp-calendar { + text-align: right; + float: right; } } +@media (min-width: 730px) { + .daterangepicker .ranges { + width: auto; } + .daterangepicker.ltr .ranges { + float: left; } + .daterangepicker.rtl .ranges { + float: right; } + .daterangepicker .drp-calendar.left { + clear: none !important; } } + +.daterangepicker { + position: absolute; + color: inherit; + background-color: #fff; + border-radius: 4px; + border: 1px solid #ddd; + width: 278px; + max-width: none; + padding: 0; + margin-top: 7px; + top: 100px; + left: 20px; + z-index: 3001; + display: none; + font-family: arial; + font-size: 15px; + line-height: 1em; +} + +.daterangepicker:before, .daterangepicker:after { + position: absolute; + display: inline-block; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker:before { + top: -7px; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 7px solid #ccc; +} + +.daterangepicker:after { + top: -6px; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; +} + +.daterangepicker.opensleft:before { + right: 9px; +} + +.daterangepicker.opensleft:after { + right: 10px; +} + +.daterangepicker.openscenter:before { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; +} + +.daterangepicker.openscenter:after { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; +} + +.daterangepicker.opensright:before { + left: 9px; +} + +.daterangepicker.opensright:after { + left: 10px; +} + +.daterangepicker.drop-up { + margin-top: -7px; +} + +.daterangepicker.drop-up:before { + top: initial; + bottom: -7px; + border-bottom: initial; + border-top: 7px solid #ccc; +} + +.daterangepicker.drop-up:after { + top: initial; + bottom: -6px; + border-bottom: initial; + border-top: 6px solid #fff; +} + +.daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar { + float: none; +} + +.daterangepicker.single .drp-selected { + display: none; +} + +.daterangepicker.show-calendar .drp-calendar { + display: block; +} + +.daterangepicker.show-calendar .drp-buttons { + display: block; +} + +.daterangepicker.auto-apply .drp-buttons { + display: none; +} + +.daterangepicker .drp-calendar { + display: none; + max-width: 270px; +} + +.daterangepicker .drp-calendar.left { + padding: 8px 0 8px 8px; +} + +.daterangepicker .drp-calendar.right { + padding: 8px; +} + +.daterangepicker .drp-calendar.single .calendar-table { + border: none; +} + +.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span { + color: #fff; + border: solid black; + border-width: 0 2px 2px 0; + border-radius: 0; + display: inline-block; + padding: 3px; +} + +.daterangepicker .calendar-table .next span { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); +} + +.daterangepicker .calendar-table .prev span { + transform: rotate(135deg); + -webkit-transform: rotate(135deg); +} + +.daterangepicker .calendar-table th, .daterangepicker .calendar-table td { + white-space: nowrap; + text-align: center; + vertical-align: middle; + min-width: 32px; + width: 32px; + height: 24px; + line-height: 24px; + font-size: 12px; + border-radius: 4px; + border: 1px solid transparent; + white-space: nowrap; + cursor: pointer; +} + +.daterangepicker .calendar-table { + border: 1px solid #fff; + border-radius: 4px; + background-color: #fff; +} + +.daterangepicker .calendar-table table { + width: 100%; + margin: 0; + border-spacing: 0; + border-collapse: collapse; +} + +.daterangepicker td.available:hover, .daterangepicker th.available:hover { + background-color: #eee; + border-color: transparent; + color: inherit; +} + +.daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; +} + +.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { + background-color: #fff; + border-color: transparent; + color: #999; +} + +.daterangepicker td.in-range { + background-color: #ebf4f8; + border-color: transparent; + color: #000; + border-radius: 0; +} + +.daterangepicker td.start-date { + border-radius: 4px 0 0 4px; +} + +.daterangepicker td.end-date { + border-radius: 0 4px 4px 0; +} + +.daterangepicker td.start-date.end-date { + border-radius: 4px; +} + +.daterangepicker td.active, .daterangepicker td.active:hover { + background-color: #357ebd; + border-color: transparent; + color: #fff; +} + +.daterangepicker th.month { + width: auto; +} + +.daterangepicker td.disabled, .daterangepicker option.disabled { + color: #999; + cursor: not-allowed; + text-decoration: line-through; +} + +.daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; +} + +.daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; +} + +.daterangepicker select.yearselect { + width: 40%; +} + +.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { + width: 50px; + margin: 0 auto; + background: #eee; + border: 1px solid #eee; + padding: 2px; + outline: 0; + font-size: 12px; +} + +.daterangepicker .calendar-time { + text-align: center; + margin: 4px auto 0 auto; + line-height: 30px; + position: relative; +} + +.daterangepicker .calendar-time select.disabled { + color: #ccc; + cursor: not-allowed; +} + +.daterangepicker .drp-buttons { + clear: both; + text-align: right; + padding: 8px; + border-top: 1px solid #ddd; + display: none; + line-height: 12px; + vertical-align: middle; +} + +.daterangepicker .drp-selected { + display: inline-block; + font-size: 12px; + padding-right: 8px; +} + +.daterangepicker .drp-buttons .btn { + margin-left: 8px; + font-size: 12px; + font-weight: bold; + padding: 4px 8px; +} + +.daterangepicker.show-ranges .drp-calendar.left { + border-left: 1px solid #ddd; +} + +.daterangepicker .ranges { + float: none; + text-align: left; + margin: 0; +} + +.daterangepicker.show-calendar .ranges { + margin-top: 8px; +} + +.daterangepicker .ranges ul { + list-style: none; + margin: 0 auto; + padding: 0; + width: 100%; +} + +.daterangepicker .ranges li { + font-size: 12px; + padding: 8px 12px; + cursor: pointer; +} + +.daterangepicker .ranges li:hover { + background-color: #eee; +} + +.daterangepicker .ranges li.active { + background-color: #08c; + color: #fff; +} + +/* Larger Screen Styling */ +@media (min-width: 564px) { + .daterangepicker { + width: auto; } + .daterangepicker .ranges ul { + width: 140px; } + .daterangepicker.single .ranges ul { + width: 100%; } + .daterangepicker.single .drp-calendar.left { + clear: none; } + .daterangepicker.single.ltr .ranges, .daterangepicker.single.ltr .drp-calendar { + float: left; } + .daterangepicker.single.rtl .ranges, .daterangepicker.single.rtl .drp-calendar { + float: right; } + .daterangepicker.ltr { + direction: ltr; + text-align: left; } + .daterangepicker.ltr .drp-calendar.left { + clear: left; + margin-right: 0; } + .daterangepicker.ltr .drp-calendar.left .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .daterangepicker.ltr .drp-calendar.right { + margin-left: 0; } + .daterangepicker.ltr .drp-calendar.right .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .daterangepicker.ltr .drp-calendar.left .calendar-table { + padding-right: 8px; } + .daterangepicker.ltr .ranges, .daterangepicker.ltr .drp-calendar { + float: left; } + .daterangepicker.rtl { + direction: rtl; + text-align: right; } + .daterangepicker.rtl .drp-calendar.left { + clear: right; + margin-left: 0; } + .daterangepicker.rtl .drp-calendar.left .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .daterangepicker.rtl .drp-calendar.right { + margin-right: 0; } + .daterangepicker.rtl .drp-calendar.right .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .daterangepicker.rtl .drp-calendar.left .calendar-table { + padding-left: 12px; } + .daterangepicker.rtl .ranges, .daterangepicker.rtl .drp-calendar { + text-align: right; + float: right; } } +@media (min-width: 730px) { + .daterangepicker .ranges { + width: auto; } + .daterangepicker.ltr .ranges { + float: left; } + .daterangepicker.rtl .ranges { + float: right; } + .daterangepicker .drp-calendar.left { + clear: none !important; } } \ No newline at end of file diff --git a/public/img/Bombers.svg b/public/img/Bombers.svg index dce9159a..8b787256 100644 --- a/public/img/Bombers.svg +++ b/public/img/Bombers.svg @@ -1,19 +1,38 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/js/bootstrap-filestyle.min.js b/public/js/bootstrap-filestyle.min.js new file mode 100644 index 00000000..e09feeab --- /dev/null +++ b/public/js/bootstrap-filestyle.min.js @@ -0,0 +1,10 @@ +/* + * bootstrap-filestyle + * doc: http://markusslima.github.io/bootstrap-filestyle/ + * github: https://github.com/markusslima/bootstrap-filestyle + * + * Copyright (c) 2017 Markus Vinicius da Silva Lima + * Version 2.1.0 + * Licensed under the MIT license. + */ +!function(e){"use strict";var t=0,i=function(t,i){this.options=i,this.$elementFilestyle=[],this.$element=e(t)};i.prototype={clear:function(){this.$element.val(""),this.$elementFilestyle.find(":text").val(""),this.$elementFilestyle.find(".badge").remove()},destroy:function(){this.$element.removeAttr("style").removeData("filestyle"),this.$elementFilestyle.remove()},disabled:function(e){return e!==!0&&e!==!1?this.options.disabled:(this.options.disabled=e,this.$element.prop("disabled",this.options.disabled),this.$elementFilestyle.find("label").prop("disabled",this.options.disabled),this.options.disabled?this.$elementFilestyle.find("label").css("opacity","0.65"):this.$elementFilestyle.find("label").css("opacity","1"),void 0)},dragdrop:function(e){return e!==!0&&e!==!1?this.options.dragdrop:void(this.options.dragdrop=e)},buttonBefore:function(e){if(e===!0)this.options.buttonBefore||(this.options.buttonBefore=e,this.options.input&&(this.$elementFilestyle.remove(),this.constructor(),this.pushNameFiles()));else{if(e!==!1)return this.options.buttonBefore;this.options.buttonBefore&&(this.options.buttonBefore=e,this.options.input&&(this.$elementFilestyle.remove(),this.constructor(),this.pushNameFiles()))}},input:function(e){if(e===!0)this.options.input||(this.options.input=e,this.options.buttonBefore?this.$elementFilestyle.append(this.htmlInput()):this.$elementFilestyle.prepend(this.htmlInput()),this.pushNameFiles(),this.$elementFilestyle.find(".group-span-filestyle").addClass("input-group-btn"));else{if(e!==!1)return this.options.input;this.options.input&&(this.options.input=e,this.$elementFilestyle.find(":text").remove(),this.$elementFilestyle.find(".group-span-filestyle").removeClass("input-group-btn"))}},size:function(e){if(void 0===e)return this.options.size;this.options.size=e;var t=this.$elementFilestyle.find("label"),i=this.$elementFilestyle.find("input");t.removeClass("btn-lg btn-sm"),i.removeClass("form-control-lg form-control-sm"),"nr"!=this.options.size&&(t.addClass("btn-"+this.options.size),i.addClass("form-control-"+this.options.size))},placeholder:function(e){return void 0===e?this.options.placeholder:(this.options.placeholder=e,void this.$elementFilestyle.find("input").attr("placeholder",e))},text:function(e){return void 0===e?this.options.text:(this.options.text=e,void this.$elementFilestyle.find("label .text").html(this.options.text))},btnClass:function(e){return void 0===e?this.options.btnClass:(this.options.btnClass=e,void this.$elementFilestyle.find("label").attr({"class":"btn "+this.options.btnClass+" btn-"+this.options.size}))},badge:function(e){if(e===!0){this.options.badge=e;var t=this.pushNameFiles();this.$elementFilestyle.find("label").append(' '+t.length+"")}else{if(e!==!1)return this.options.badge;this.options.badge=e,this.$elementFilestyle.find(".badge").remove()}},badgeName:function(e){return void 0===e?this.options.badgeName:(this.options.badgeName=e,void this.$elementFilestyle.find(".badge").attr({"class":"badge "+this.options.badgeName}))},htmlIcon:function(e){return void 0!==e&&(this.options.htmlIcon=e),this.options.htmlIcon},htmlInput:function(){return this.options.input?' ':""},pushNameFiles:function(){var e="",t=[];void 0===this.$element[0].files?t[0]={name:this.$element[0]&&this.$element[0].value}:t=this.$element[0].files;for(var i=0;i",n=i.options.buttonBefore?l+i.htmlInput():i.htmlInput()+l,i.$elementFilestyle=e('
'+n+"
"),i.$elementFilestyle.find(".group-span-filestyle").attr("tabindex","0").keypress(function(e){return 13===e.keyCode||32===e.charCode?(i.$elementFilestyle.find("label").click(),!1):void 0}),i.$element.css({position:"absolute",clip:"rect(0px 0px 0px 0px)"}).attr("tabindex","-1").after(i.$elementFilestyle),i.$elementFilestyle.find(i.options.buttonBefore?"label":":input").css({"border-top-left-radius":".25rem","border-bottom-left-radius":".25rem"}),i.$elementFilestyle.find('[name="filedrag"]').css({position:"absolute",width:"100%",height:i.$elementFilestyle.height()+"px","z-index":-1}),(i.options.disabled||i.$element.attr("disabled"))&&(i.$element.attr("disabled","true"),i.options.disabled?i.$elementFilestyle.find("label").css("opacity","0.65"):i.$elementFilestyle.find("label").css("opacity","1")),i.$element.change(function(){var e=i.pushNameFiles();i.options.badge?0==i.$elementFilestyle.find(".badge").length?i.$elementFilestyle.find("label").append(' '+e.length+""):0==e.length?i.$elementFilestyle.find(".badge").remove():i.$elementFilestyle.find(".badge").html(e.length):i.$elementFilestyle.find(".badge").remove(),i.options.onChange(e)}),window.navigator.userAgent.search(/firefox/i)>-1&&i.$elementFilestyle.find("label").click(function(){return i.$element.click(),!1}),e(document).on("dragover",function(t){t.preventDefault(),t.stopPropagation(),i.options.dragdrop&&e('[name="filedrag"]').css("z-index","9")}).on("drop",function(t){t.preventDefault(),t.stopPropagation(),i.options.dragdrop&&e('[name="filedrag"]').css("z-index","-1")}),i.$elementFilestyle.find('[name="filedrag"]').on("dragover",function(e){e.preventDefault(),e.stopPropagation()}).on("dragenter",function(e){e.preventDefault(),e.stopPropagation()}).on("drop",function(t){if(t.originalEvent.dataTransfer&&!i.options.disabled&&i.options.dragdrop&&t.originalEvent.dataTransfer.files.length){t.preventDefault(),t.stopPropagation(),i.$element[0].files=t.originalEvent.dataTransfer.files;var n=i.pushNameFiles();i.options.badge?0==i.$elementFilestyle.find(".badge").length?i.$elementFilestyle.find("label").append(' '+n.length+""):0==n.length?i.$elementFilestyle.find(".badge").remove():i.$elementFilestyle.find(".badge").html(n.length):i.$elementFilestyle.find(".badge").remove(),e('[name="filedrag"]').css("z-index","-1")}})}};var n=e.fn.filestyle;e.fn.filestyle=function(t,n){var s="",l=this.each(function(){if("file"===e(this).attr("type")){var l=e(this),o=l.data("filestyle"),a=e.extend({},e.fn.filestyle.defaults,t,"object"==typeof t&&t);o||(l.data("filestyle",o=new i(this,a)),o.constructor()),"string"==typeof t&&(s=o[t](n))}});return void 0!==typeof s?s:l},e.fn.filestyle.defaults={text:"Choose file",htmlIcon:"",btnClass:"btn-secondary",size:"nr",input:!0,badge:!1,badgeName:"badge-light",buttonBefore:!1,dragdrop:!0,disabled:!1,placeholder:"",onChange:function(){}},e.fn.filestyle.noConflict=function(){return e.fn.filestyle=n,this},e(function(){e(".filestyle").each(function(){var t=e(this),i={input:"false"!==t.attr("data-input"),htmlIcon:t.attr("data-icon"),buttonBefore:"true"===t.attr("data-buttonBefore"),disabled:"true"===t.attr("data-disabled"),size:t.attr("data-size"),text:t.attr("data-text"),btnClass:t.attr("data-btnClass"),badge:"true"===t.attr("data-badge"),dragdrop:"false"!==t.attr("data-dragdrop"),badgeName:t.attr("data-badgeName"),placeholder:t.attr("data-placeholder")};t.filestyle(i)})})}(window.jQuery); \ No newline at end of file diff --git a/public/uploads/search_2/incidents/incident_4/Image_1.jpg b/public/uploads/search_2/incidents/incident_4/Image_1.jpg new file mode 100644 index 00000000..08881753 Binary files /dev/null and b/public/uploads/search_2/incidents/incident_4/Image_1.jpg differ diff --git a/public/vendor/binarytorch/larecipe/assets/js/app.js b/public/vendor/binarytorch/larecipe/assets/js/app.js index 5fe68a80..75c2133f 100644 --- a/public/vendor/binarytorch/larecipe/assets/js/app.js +++ b/public/vendor/binarytorch/larecipe/assets/js/app.js @@ -517,27 +517,48 @@ module.exports = function normalizeComponent ( /* 2 */ /***/ (function(module, exports) { -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1,eval)("this"); -} catch(e) { - // This works if the window reference is available - if(typeof window === "object") - g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; /***/ }), @@ -29242,8 +29263,10 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/* mousetrap v1.5.3 craig.is/killing/mice */ /* 77 */ /***/ (function(module, exports) { -/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ -module.exports = __webpack_amd_options__; +/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ +module.exports = __webpack_amd_options__; +/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ +module.exports = __webpack_amd_options__; /* WEBPACK VAR INJECTION */}.call(exports, {})) diff --git a/resources/lang/ca/actions.php b/resources/lang/ca/actions.php index 75cc8218..7be3555a 100644 --- a/resources/lang/ca/actions.php +++ b/resources/lang/ca/actions.php @@ -2,6 +2,11 @@ return [ 'actions' => 'Accions', + 'attach' => 'Adjuntar', + 'add' => 'Afegir', + 'view' => 'Veure', + 'edit' => 'Editar', + 'create' => 'Crear', 'add' => 'Afegir', 'view' => 'Veure', 'edit' => 'Editar', @@ -18,8 +23,10 @@ 'closing' => 'Tancament', 'no' => 'No', 'yes' => 'Si', - 'filter_by_status' => 'Filtrar per estat', - 'filter_by_dates' => 'Filtrar per dates', - 'filter_by_region' => 'Filtrar per regió', - 'filter_by_village' => 'Filtrar per municipi', + 'filter_by_status' => 'Filtrar estat', + 'filter_by_dates' => 'Filtrar dates', + 'filter_by_region' => 'Filtrar regió', + 'filter_by_village' => 'Filtrar municipi', + 'filter_by_groups' => 'Filtrar grups', + 'filter_by_types' => 'Filtrar tipus', ]; diff --git a/resources/lang/ca/forms.php b/resources/lang/ca/forms.php index c8fa58fb..8cb730d6 100644 --- a/resources/lang/ca/forms.php +++ b/resources/lang/ca/forms.php @@ -89,4 +89,14 @@ 'model_and_brand' => 'Model i marca', 'color' => 'Color', 'license_plate' => 'Matrícula', + 'edit_task' => 'Edita la tasca', + 'sector' => 'Sector', + 'task_group' => 'Grup', + 'task_start' => 'Començar', + 'task_end' => 'Final', + 'task_type' => 'Tipus', + 'gpx' => 'GPX', + 'actions' => 'Accions', + 'tracking_device' => 'Dispositiu de seguiment', + 'file_name' => 'Nom del fitxer', ]; diff --git a/resources/lang/ca/main.php b/resources/lang/ca/main.php index d068c722..120d517c 100644 --- a/resources/lang/ca/main.php +++ b/resources/lang/ca/main.php @@ -43,6 +43,7 @@ 'groups' => 'Grups', 'leaders' => 'Líders', 'tasks' => 'Tasques', + 'task' => 'Tasca', 'users' => 'Usuaris', 'user' => 'Usuari', 'created_at' => 'Creat', diff --git a/resources/lang/ca/messages.php b/resources/lang/ca/messages.php index bb5d77f2..fbd084bc 100644 --- a/resources/lang/ca/messages.php +++ b/resources/lang/ca/messages.php @@ -11,6 +11,7 @@ 'confirmed' => 'Aquest camp no coincideix amb la confirmació.', 'unique' => 'Aquest camp ha de ser únic a la taula de dades.', 'numeric' => 'Aquest camp ha de ser un número vàlid.', + 'gpx_file' => 'Només es poden pujar fitxers GPX.', 'updated' => " s'ha actualitzat correctament.", 'added' => " s'ha afegit correctament.", 'deleted' => " s'ha eliminat correctament.", diff --git a/resources/lang/en/actions.php b/resources/lang/en/actions.php index 56dfda49..2521b144 100644 --- a/resources/lang/en/actions.php +++ b/resources/lang/en/actions.php @@ -2,6 +2,9 @@ return [ 'actions' => 'Actions', + 'attach' => 'Attach', + 'add' => 'Add', + 'create' => 'Create', 'add' => 'Add', 'view' => 'View', 'edit' => 'Edit', @@ -18,8 +21,10 @@ 'closing' => 'Closing', 'no' => 'No', 'yes' => 'Yes', - 'filter_by_status' => 'Filter by status', - 'filter_by_dates' => 'Filter by dates', - 'filter_by_region' => 'Filter by region', - 'filter_by_village' => 'Filter by village', + 'filter_by_status' => 'Filter status', + 'filter_by_dates' => 'Filter dates', + 'filter_by_region' => 'Filter region', + 'filter_by_village' => 'Filter village', + 'filter_by_groups' => 'Filter groups', + 'filter_by_types' => 'Filter types', ]; diff --git a/resources/lang/en/forms.php b/resources/lang/en/forms.php index d950fb21..ff81dba7 100644 --- a/resources/lang/en/forms.php +++ b/resources/lang/en/forms.php @@ -89,4 +89,14 @@ 'model_and_brand' => 'Make and model', 'color' => 'Color', 'license_plate' => 'License plate', + 'sector' => 'Sector', + 'task_group' => 'Group', + 'task_start' => 'Start', + 'task_end' => 'End', + 'task_type' => 'Type', + 'gpx' => 'GPX', + 'actions' => 'Actions', + 'edit_task' => 'Edit Task', + 'tracking_device' => 'Tracking device', + 'file_name' => 'File name', ]; diff --git a/resources/lang/en/main.php b/resources/lang/en/main.php index a89ed4cf..afe39af7 100644 --- a/resources/lang/en/main.php +++ b/resources/lang/en/main.php @@ -24,6 +24,7 @@ 'data' => 'Data', 'ap' => 'Action Plan', 'incident' => 'Incident', + 'task' => 'Task', 'incidents' => 'Incidents', 'version' => 'Version', 'description' => 'Description', diff --git a/resources/lang/en/messages.php b/resources/lang/en/messages.php index 2bce44bc..983c628e 100644 --- a/resources/lang/en/messages.php +++ b/resources/lang/en/messages.php @@ -11,6 +11,7 @@ 'confirmed' => 'This field does not match the confirmation.', 'unique' => 'This field must be unique in the data table.', 'numeric' => 'This field must contain a valid numeric value.', + 'gpx_files' => 'Only GPX files can be uploaded.', 'updated' => ' updated successfully.', 'added' => ' added successfully.', 'deleted' => ' deleted successfully.', diff --git a/resources/lang/es/actions.php b/resources/lang/es/actions.php index 260082d3..fed9d88f 100644 --- a/resources/lang/es/actions.php +++ b/resources/lang/es/actions.php @@ -2,6 +2,11 @@ return [ 'actions' => 'Acciones', + 'attach' => 'Adjuntar', + 'add' => 'Añadir', + 'view' => 'Ver', + 'edit' => 'Editar', + 'create' => 'Crear', 'add' => 'Añadir', 'view' => 'Ver', 'edit' => 'Editar', @@ -18,8 +23,10 @@ 'closing' => 'Cierre', 'no' => 'No', 'yes' => 'Sí', - 'filter_by_status' => 'Filtrar por estado', - 'filter_by_dates' => 'Filtrar por fechas', - 'filter_by_region' => 'Filtrar por región', - 'filter_by_village' => 'Filtrar por municipio', + 'filter_by_status' => 'Filtrar estado', + 'filter_by_dates' => 'Filtrar fechas', + 'filter_by_region' => 'Filtrar región', + 'filter_by_village' => 'Filtrar municipio', + 'filter_by_groups' => 'Filtrar grupos', + 'filter_by_types' => 'Filtrar tipos', ]; diff --git a/resources/lang/es/activity.php b/resources/lang/es/activity.php index b70b5c4b..fb6f3130 100644 --- a/resources/lang/es/activity.php +++ b/resources/lang/es/activity.php @@ -21,4 +21,5 @@ 'to_do' => 'Pendiente', 'in_progress' => 'En progreso', 'done' => 'Finalizado', + 'every_status' => 'Cada estado', ]; diff --git a/resources/lang/es/forms.php b/resources/lang/es/forms.php index 39e57fb1..4d547216 100644 --- a/resources/lang/es/forms.php +++ b/resources/lang/es/forms.php @@ -89,4 +89,14 @@ 'model_and_brand' => 'Modelo y marca', 'color' => 'Color', 'license_plate' => 'Matrícula', + 'edit_task' => 'Editar tarea', + 'sector' => 'Sector', + 'task_group' => 'Grupo', + 'task_start' => 'Comienzo', + 'task_end' => 'Final', + 'task_type' => 'Tipo', + 'gpx' => 'GPX', + 'actions' => 'Comportamiento', + 'tracking_device' => 'Dispositivo rastreador', + 'file_name' => 'Nombre del fichero', ]; diff --git a/resources/lang/es/main.php b/resources/lang/es/main.php index 1e2517e6..a0ff3dc1 100644 --- a/resources/lang/es/main.php +++ b/resources/lang/es/main.php @@ -42,6 +42,7 @@ 'people_involved' => 'Actuante', 'groups' => 'Grupos', 'leaders' => 'Líderes', + 'task' => 'Tarea', 'tasks' => 'Tareas', 'users' => 'Usuarios', 'user' => 'Usuario', diff --git a/resources/lang/es/messages.php b/resources/lang/es/messages.php index 6b387c9d..a053b419 100644 --- a/resources/lang/es/messages.php +++ b/resources/lang/es/messages.php @@ -12,6 +12,7 @@ 'unique' => 'Este campo debe ser único en la tabla de datos.', 'numeric' => 'Este campo debe ser un número válido.', 'updated' => ' se ha actualizado correctamente.', + 'gpx_file' => 'Solo se pueden subir ficheros GPX.', 'added' => ' se ha añadido correctamente.', 'deleted' => ' se ha eliminado correctamente.', 'not_allowed' => 'No tienes permisos para hacer esta acción.', diff --git a/resources/views/auth/buttons/delete_user.blade.php b/resources/views/auth/buttons/delete_user.blade.php index c4e369e7..faf6eef1 100644 --- a/resources/views/auth/buttons/delete_user.blade.php +++ b/resources/views/auth/buttons/delete_user.blade.php @@ -1,9 +1,9 @@ id == Auth::user()->id) { ?> style="visibility: hidden" > - diff --git a/resources/views/auth/buttons/edit_user.blade.php b/resources/views/auth/buttons/edit_user.blade.php index 01f9f056..96407a52 100644 --- a/resources/views/auth/buttons/edit_user.blade.php +++ b/resources/views/auth/buttons/edit_user.blade.php @@ -1,8 +1,8 @@ - diff --git a/resources/views/auth/buttons/view_user.blade.php b/resources/views/auth/buttons/view_user.blade.php index 45686882..f05842d2 100644 --- a/resources/views/auth/buttons/view_user.blade.php +++ b/resources/views/auth/buttons/view_user.blade.php @@ -1,8 +1,8 @@ - diff --git a/resources/views/parts/footer.blade.php b/resources/views/parts/footer.blade.php index dc802a23..13b4ef1c 100644 --- a/resources/views/parts/footer.blade.php +++ b/resources/views/parts/footer.blade.php @@ -12,8 +12,8 @@
  • |
  • - - v1.2.1 + + v1.2.2
  • diff --git a/resources/views/searches/action_plan/ap_view.blade.php b/resources/views/searches/action_plan/ap_view.blade.php index a7fe3a3e..25cebeb0 100644 --- a/resources/views/searches/action_plan/ap_view.blade.php +++ b/resources/views/searches/action_plan/ap_view.blade.php @@ -61,7 +61,7 @@

    {{ $task->getName() }}

    - diff --git a/resources/views/searches/tasks/buttons/delete_task.blade.php b/resources/views/searches/tasks/buttons/delete_task.blade.php new file mode 100644 index 00000000..02c9551a --- /dev/null +++ b/resources/views/searches/tasks/buttons/delete_task.blade.php @@ -0,0 +1,56 @@ + + + + + + +
    + @csrf + @method('DELETE') + + + + + +
    + diff --git a/resources/views/searches/tasks/buttons/edit_task.blade.php b/resources/views/searches/tasks/buttons/edit_task.blade.php new file mode 100644 index 00000000..920c0ea8 --- /dev/null +++ b/resources/views/searches/tasks/buttons/edit_task.blade.php @@ -0,0 +1,243 @@ + + + + + + + + + + + + + diff --git a/resources/views/searches/tasks/buttons/show_description.blade.php b/resources/views/searches/tasks/buttons/show_description.blade.php new file mode 100644 index 00000000..2619222b --- /dev/null +++ b/resources/views/searches/tasks/buttons/show_description.blade.php @@ -0,0 +1,44 @@ + + + + + + + + + + diff --git a/resources/views/searches/tasks/create.blade.php b/resources/views/searches/tasks/create.blade.php new file mode 100644 index 00000000..370ebbda --- /dev/null +++ b/resources/views/searches/tasks/create.blade.php @@ -0,0 +1,249 @@ +@extends('layouts.app') + +@section('title', __('actions.add') . ' ' . __('main.incident')) + +@section('content') + + +@include('parts.alerts') + + + +
    + + + @include('buttons.go_back') + + + +
    + @csrf + + +

    + {{ __('main.task') }} +

    + + +
    + + +
    + + + @error('sector') +

    {{ $message }}

    + @enderror +
    + + + +
    + + + @error('group') +

    {{ $message }}

    + @enderror +
    + + + +
    + + + @error('start') +

    {{ $message }}

    + @enderror +
    + + + +
    + + + @error('end') +

    {{ $message }}

    + @enderror +
    + + + +
    + + + @error('type') +

    {{ $message }}

    + @enderror +
    + + + +
    + + + @error('status') +

    {{ $message }}

    + @enderror +
    + + + +
    + + + @error('trackingDevice') +

    {{ $message }}

    + @enderror +
    + + + +
    + + + @error('gpxFileName') +

    {{ $message }}

    + @enderror +
    + + + +
    + + + @error('gpxFile') +

    {{ $message }}

    + @enderror +
    + + + +
    + + + @error('description') +

    {{ $message }}

    + @enderror +
    + + + + + + + +
    + +
    + +
    + +
    + + +
    + + +@endsection + + + + + + diff --git a/resources/views/searches/tasks/index.blade.php b/resources/views/searches/tasks/index.blade.php index 5d6dc0c9..bcf02d90 100644 --- a/resources/views/searches/tasks/index.blade.php +++ b/resources/views/searches/tasks/index.blade.php @@ -1,5 +1,69 @@ -
    - +
    + + +
    + + +
    + + +
    + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + +
    + + +
    + + + + + + +
    + + + @include('searches.tasks.task_table')
    diff --git a/resources/views/searches/tasks/task_table.blade.php b/resources/views/searches/tasks/task_table.blade.php new file mode 100644 index 00000000..a8a0767c --- /dev/null +++ b/resources/views/searches/tasks/task_table.blade.php @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($tasks as $task) + + + + + + + + + + + + + + + + + + + + + @endforeach + + + +
    {{ __('forms.sector') }} {{ __('forms.status') }} {{ __('forms.task_group') }} {{ __('forms.task_start') }} {{ __('forms.task_end') }} {{ __('forms.task_type') }} {{ __('forms.description') }} {{ __('forms.gpx') }} {{ __('forms.actions') }}
    + {{ $task->sector }} + + @if( $task->status == "to_do" ) + + {{ __('activity.to_do') }} + + @elseif( $task->status == "in_progress" ) + + {{ __('activity.in_progress') }} + + @elseif( $task->status == "done" ) + + {{ __('activity.done') }} + + @endif + + @if ($task->group != NULL) + {{ $task->group }} + @endif + + @if ($task->start == NULL) + -- + @else + @php + $date = new Date($task->start); + echo $date->format('d M. Y | H:i'); + @endphp + @endif + + @if ($task->end == NULL) + -- + @else + @php + $date = new Date($task->end); + echo $date->format('d M. Y | H:i'); + @endphp + @endif + + {{ $task->type }} + + + @include('searches.tasks.buttons.show_description') + + @if($task->gpx == 0) + + {{ __('actions.no') }} + + @else + + {{ __('actions.yes') }} + + @endif + + + @include('searches.tasks.buttons.edit_task') + + + + @include('searches.tasks.buttons.delete_task') + +
    + + + + + + diff --git a/routes/web.php b/routes/web.php index f4445598..26290524 100644 --- a/routes/web.php +++ b/routes/web.php @@ -16,6 +16,19 @@ Route::group(['middleware' => 'auth'], function () { Route::resource('searches', 'SearchController'); + // Task Route + + Route::get('task/create/{search_id}', 'TaskController@create')->name('createTask'); + + Route::post('task/post', 'TaskController@store')->name('storeTask'); + + Route::post('task', 'TaskController@store')->name('postTask'); + + Route::delete('task/{id}', 'TaskController@destroy')->name('deleteTask'); + + Route::patch('task/{id}', 'TaskController@update')->name('editTask'); + // + Route::get('/', ['uses' => 'SearchController@index', 'as' => 'index']); Route::get('/searches', ['uses' => 'SearchController@index', 'as' => 'searches']); diff --git a/storage/app/.gitignore b/storage/app/.gitignore old mode 100755 new mode 100644 diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore old mode 100755 new mode 100644 diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore old mode 100755 new mode 100644 diff --git a/tests/Feature/TaskTest.php b/tests/Feature/TaskTest.php new file mode 100644 index 00000000..86542091 --- /dev/null +++ b/tests/Feature/TaskTest.php @@ -0,0 +1,54 @@ +create(); + + $response = $this->actingAs($user)->post('/task', $task->toArray()); + + $response = $this->assertDatabaseHas('tasks', $task->toArray()); + } + + public function test_admin_can_delete_task() + { + $user = Auth::loginUsingId(1); + + $task = factory('App\Task')->create(); + + $response = $this->actingAs($user)->post('/task', $task->toArray()); + + $reponse = $this->actingAs($user)->delete(route('deleteTask', $task->id)); + + $response = $this->assertDatabaseMissing('tasks', $task->toArray()); + } + + public function test_user_cannot_delete_task() + { + $user = Auth::loginUsingId(2); + + $task = factory('App\Task')->create(); + + $response = $this->actingAs($user)->post('/task', $task->toArray()); + + $reponse = $this->actingAs($user)->delete(route('deleteTask', $task->id)); + + $response = $this->assertDatabaseHas('tasks', $task->toArray()); + } +}