diff --git a/app/Http/Controllers/CourseController.php b/app/Http/Controllers/CourseController.php new file mode 100644 index 0000000000000000000000000000000000000000..395046a321f436a4b345e0017356ca02bc8c4cc5 --- /dev/null +++ b/app/Http/Controllers/CourseController.php @@ -0,0 +1,44 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Auth; + +class CourseController extends Controller +{ + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->middleware('auth'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Contracts\Support\Renderable + */ + public function index($id_course) + { + $topics = DB::table('topics')->where('id_course', $id_course)->get(); + $enrolled_id = DB::table('user_course')->where('id_course', $id_course)->pluck('id_user'); + + $students = []; + $teacher = ''; + foreach($enrolled_id as $id) { + $temp = DB::table('users')->where('id', $id)->first(); + if ($temp->role == 1) { + $teacher = $temp->name; + } else { + $students[] = $temp->name; + } + } + + return view('course', ['topics' => $topics, 'students' => $students, 'teacher' => $teacher]); + } +} diff --git a/app/Http/Controllers/LearnController.php b/app/Http/Controllers/LearnController.php new file mode 100644 index 0000000000000000000000000000000000000000..91a8b8b245de2b0a9f624e0168e36c77509a986b --- /dev/null +++ b/app/Http/Controllers/LearnController.php @@ -0,0 +1,185 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Google_Client; + +class LearnController extends Controller +{ + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->middleware('auth'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Contracts\Support\Renderable + */ + public function index($id_course, $id_spreadsheet) + { + $client = LearnController::getClient(); + $service = new \Google_Service_Drive($client); + $copy = new \Google_Service_Drive_DriveFile(); + + $response = $service->files->copy($id_spreadsheet, $copy); + + $permission_response = LearnController::edit_permission($response->id); + + $topic = DB::table('topics')->where('id_spreadsheet', $id_spreadsheet)->first(); + $content = $topic->content; + return view('learn', ['id_spreadsheet' => $response->id, 'content' => $content]); + } + + /** + * Create new Spreadsheet. + * + * @return id_spreadsheet + */ + public function new($id_course, Request $request) + { + // Initialize + $client = LearnController::getClient(); + $service = new \Google_Service_Sheets($client); + + // Create Spreadsheet + $spreadsheet = new \Google_Service_Sheets_Spreadsheet([ + 'properties' => [ + 'title' => $request->topic_name + ] + ]); + $response = $service->spreadsheets->create($spreadsheet, ['fields' => 'spreadsheetId']); + + $permission_response = LearnController::edit_permission($response->spreadsheetId); + + if (empty($response->spreadsheetId)) { + $msg = 0; + } else { + $msg = 1; + DB::table('topics')->insert([ + 'id_course' => $id_course, + 'name' => $request->topic_name, + 'content' => 'Konten', + 'id_spreadsheet' => $response->spreadsheetId + ]); + } + return redirect()->route('course', ['id_course' => $id_course, 'msg' => $msg]); + } + + /** + * Edit Permission. + * + * @return response + */ + public function edit_permission($id) + { + $client = LearnController::getClient(); + $service = new \Google_Service_Drive($client); + $permission = new \Google_Service_Drive_Permission([ + 'role' => 'writer', + 'type' => 'anyone' + ]); + $response = $service->permissions->create($id, $permission); + + return $response; + } + + /** + * Edit Spreadsheet. + * + * @return view + */ + public function edit($id_course, $id_spreadsheet) + { + $topic = DB::table('topics')->where('id_spreadsheet', $id_spreadsheet)->first(); + return view('edit', ['id_spreadsheet' => $id_spreadsheet, 'topic' => $topic]); + } + + /** + * Save Spreadsheet. + * + * @return message + */ + public function save(Request $request) + { + echo $request->id_spreadsheet; + echo $request->myTextArea; + echo $request->richh; + DB::table('topics')->insert([ + 'id_course' => '2', + 'name' => 'ahaha', + 'content' => $request->richh, + 'id_spreadsheet' => $request->id_spreadsheet + ]); + } + + /** + * Submit Spreadsheet. + * + * @return Score + */ + public function submit(Request $request) + { + $id = $request->id_spreadsheet; + $client = LearnController::getClient(); + $service = new \Google_Service_Sheets($client); + + $ranges = []; + $ranges[] = 'Sheet1!A1'; + $ranges[] = 'Sheet1!A2'; + $ranges[] = 'Sheet1!A3'; + $responses = $service->spreadsheets_values->batchGet($request->id_spreadsheet, [ + 'valueRenderOption' => 'FORMULA', + 'dateTimeRenderOption' => 'SERIAL_NUMBER', + 'ranges' => $ranges + ]); + + foreach ($responses->valueRanges as $response) { + if ($response->values == NULL) { + echo "Kosong \n"; + } else { + echo '<pre>', var_export(strval(($response->values)[0][0]), true), '</pre>', "\n"; + } + } + } + + public function test() + { + $answer = DB::table('spreadsheets')->where('id', 1)->get(); + $j = []; + foreach($answer as $a) { + $j[] = 'Sheet1!' . $a->cell; + } + + var_dump($j); + + $ranges = []; + $ranges[] = 'Sheet1!A1'; + $ranges[] = 'Sheet1!A2'; + $ranges[] = 'Sheet1!A3'; + var_dump($ranges); + } + + /** + * Returns an authorized API client. + * @return Google_Client the authorized client object + */ + public function getClient() + { + $client = new Google_Client(); + $client->setApplicationName('Datalearn'); + $client->setAuthConfig(__DIR__.'/credentials.json'); + $client->addScope(\Google_Service_Sheets::SPREADSHEETS); + $client->addScope(\Google_Service_Sheets::DRIVE); + $client->setAccessType('offline'); + + return $client; + } +} diff --git a/app/Http/Controllers/credentials.json b/app/Http/Controllers/credentials.json new file mode 100644 index 0000000000000000000000000000000000000000..f5377c7a8d2b71c2b14fd64803c5c691c1ea8031 --- /dev/null +++ b/app/Http/Controllers/credentials.json @@ -0,0 +1,12 @@ +{ + "type": "service_account", + "project_id": "datalearn", + "private_key_id": "049b061b5b9de5f1f32142109307deb932917eea", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCUa1lxNZ82CwFu\n48ndNtYB9MRwGLVy7OeE2S8m/WiMpXjGL23qdq8s9G1VBfBbf+ibMeVvQcUjXJHw\nUmoggvRgW6UJ5GjxNcprPMhghas84JCU8MB+qfvH3hXxEU/ZrXJ1e9WqWKLV2WmB\ni2TNPJOVSCTOEaxyuDQyS/8PNy25xRktf7O2aXeuhO/F1+6KGkfpXAf39NMdBQ2W\nbK61WIjWaHqWicBSDXgkxGGHyw28U3TDW5qXOjfzxxz+/aROv+qHb5uopeLJIBQI\n6SWDjRlRNh19N5dZm6/KVS81Cmx7HoZpOAjc0O3+kiBLOyPnYIvJOEVDNUeaFkrs\nU4zqJxizAgMBAAECggEADRM18nS8XWjzy96SYoQZr1tuUMfEeGbpcHknn8I0Syuq\nq57zCnRBM28nEJXw2ka26bEoGriLEvXtP2QrSEjxGWoJbIksO4+3EOJubp5n+vl3\nkz9wXdhAv5dPjIivZahTjIkHxjV/xuIb2tc6XqBHCiAsaeEBtauHoaSzSBZe114k\n3XCu3ubB6/meQeNMxRI+Al26CUfMENejkB1dIU2eaVJXa0cTog1wkdOan4A4jV/U\ncu6uF+8TZEu0Y7PoL7VQR0STKXmEX8Fj2PH7qKbLLu9kSwawyBaoIzLjcDVyHX5R\nRTTldQoFomwNlSQGudG7CHP/nDDPgOWSXnoGituowQKBgQDLM8jQG4KkrnlXv2LQ\nc8PUBJEVDU+jaKdb5wnDsU74JNRBhpXAZvsz8bJIcXzuIB2Cs2bMD0Fh6iFCFkZw\nnzce8fsHzuYdZPpC9WJvZYFv2cmeri/Uu0R5q/sn3io09kS3JYlwiAdRGmKtXRsJ\ns9sT8ZmsL2oTBVLK+ME+L4qD8wKBgQC6+55xlGZsAk4My7QpqnTpPHGKYiwqa/5B\nW/wxPmaPWAtVQfJ+/hFrJA3BPnC07DTM8AwsTmkXgx1M3khPqNEX0t+eYRcx8mcP\nKQn0aOqoZGX9RYJIF+F6MAraQ039WM0u3InfszvZOBdqio3OhNJWxzv7WYXTd1ck\nV39fj7QIQQKBgC4aOKRmqXRdlXBAHtY2faabxqLlGz1y4A2s1H1OvCD2kiWvuEgn\n1TSK0K04+mQ4axmdRGRlzaq+aP9KeH7S0Lm3owG5gmIG5/TLIaMuf3h2DBVxZa65\nMib8ywXXlPHhMePvo0ghxK808lBtAFZqNPlIZlo3g7R/D7K3T3ihZqbbAoGAbnRZ\nAotBfahW5uQmhz50VZspDzAzGtQ0m/N0pLpR53eBKloMn8wCCiKAJZl3BslJ344m\nAr5HAmanllLwsG3vJn2hL3P3OcAR9Tiu8rxPci3suZKoBWJmBcH/hzOfDHu6qWYJ\n5CWCwyyJWJyEbGy1vCFxY2dc0LB8v7EYQyEmnoECgYBIsScq8OWX+OUaYjj47ySL\nIQyyOxStwv0nr6LKoeW1hUjFKi3BQi6LaG343vZkSWEIRKIENXnpn+3pa79+dUfJ\n7OLv3OozOhyPqiT+yUjakhilnwnQ4c0cZNz0nlXzJf49ugxn+tXlHaDs7EzoF2ag\n7GGhIVGKIIejOAH/1Oe9Rg==\n-----END PRIVATE KEY-----\n", + "client_email": "aljabar@datalearn.iam.gserviceaccount.com", + "client_id": "112946705019770577593", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/aljabar%40datalearn.iam.gserviceaccount.com" +} diff --git a/composer.lock b/composer.lock index f0b1b9d9bb209973fa0a7ee555513490a0f96e0c..fb7baa2f9d6114cfc18797574893f862ddbb09f3 100644 --- a/composer.lock +++ b/composer.lock @@ -438,16 +438,16 @@ }, { "name": "google/apiclient-services", - "version": "v0.127", + "version": "v0.129", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "19eacad739807e522891bf3f911ffab4a4c29869" + "reference": "1b7d3bcd683603bcd42ea588923775a85a89222e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/19eacad739807e522891bf3f911ffab4a4c29869", - "reference": "19eacad739807e522891bf3f911ffab4a4c29869", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/1b7d3bcd683603bcd42ea588923775a85a89222e", + "reference": "1b7d3bcd683603bcd42ea588923775a85a89222e", "shasum": "" }, "require": { @@ -471,7 +471,7 @@ "keywords": [ "google" ], - "time": "2020-02-17T00:24:19+00:00" + "time": "2020-04-04T00:24:12+00:00" }, { "name": "google/auth", @@ -692,106 +692,18 @@ ], "time": "2016-02-18T21:54:00+00:00" }, - { - "name": "jakub-onderka/php-console-color", - "version": "v0.2", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "1.0", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "time": "2018-09-29T17:23:10+00:00" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.4", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "jakub-onderka/php-console-color": "~0.2", - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~1.0", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" - } - ], - "description": "Highlight PHP code in terminal", - "time": "2018-09-29T18:48:56+00:00" - }, { "name": "laravel/framework", - "version": "v6.18.2", + "version": "v6.18.3", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "9425a2f410d05d5bba493f62cff03854a8b19559" + "reference": "4e48acfaba87f08320a2764d36c3b6a4a4112ccf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/9425a2f410d05d5bba493f62cff03854a8b19559", - "reference": "9425a2f410d05d5bba493f62cff03854a8b19559", + "url": "https://api.github.com/repos/laravel/framework/zipball/4e48acfaba87f08320a2764d36c3b6a4a4112ccf", + "reference": "4e48acfaba87f08320a2764d36c3b6a4a4112ccf", "shasum": "" }, "require": { @@ -924,7 +836,7 @@ "framework", "laravel" ], - "time": "2020-03-17T17:08:02+00:00" + "time": "2020-03-24T16:37:50+00:00" }, { "name": "laravel/tinker", @@ -992,16 +904,16 @@ }, { "name": "league/commonmark", - "version": "1.3.1", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "8015f806173c6ee54de25a87c2d69736696e88db" + "reference": "5a67afc2572ec6d430526cdc9c637ef124812389" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/8015f806173c6ee54de25a87c2d69736696e88db", - "reference": "8015f806173c6ee54de25a87c2d69736696e88db", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/5a67afc2572ec6d430526cdc9c637ef124812389", + "reference": "5a67afc2572ec6d430526cdc9c637ef124812389", "shasum": "" }, "require": { @@ -1062,7 +974,7 @@ "md", "parser" ], - "time": "2020-02-28T18:53:50+00:00" + "time": "2020-04-05T16:01:48+00:00" }, { "name": "league/flysystem", @@ -1226,16 +1138,16 @@ }, { "name": "nesbot/carbon", - "version": "2.31.0", + "version": "2.32.2", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d" + "reference": "f10e22cf546704fab1db4ad4b9dedbc5c797a0dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d", - "reference": "bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f10e22cf546704fab1db4ad4b9dedbc5c797a0dc", + "reference": "f10e22cf546704fab1db4ad4b9dedbc5c797a0dc", "shasum": "" }, "require": { @@ -1244,6 +1156,7 @@ "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": "^1.1", "phpmd/phpmd": "^2.8", @@ -1292,7 +1205,7 @@ "datetime", "time" ], - "time": "2020-03-01T11:11:58+00:00" + "time": "2020-03-31T13:43:19+00:00" }, { "name": "nikic/php-parser", @@ -1509,16 +1422,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "2.0.26", + "version": "2.0.27", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "09655fcc1f8bab65727be036b28f6f20311c126c" + "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/09655fcc1f8bab65727be036b28f6f20311c126c", - "reference": "09655fcc1f8bab65727be036b28f6f20311c126c", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc", + "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc", "shasum": "" }, "require": { @@ -1597,7 +1510,7 @@ "x.509", "x509" ], - "time": "2020-03-13T04:15:39+00:00" + "time": "2020-04-04T23:17:33+00:00" }, { "name": "psr/cache", @@ -1746,16 +1659,16 @@ }, { "name": "psr/log", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { @@ -1789,7 +1702,7 @@ "psr", "psr-3" ], - "time": "2019-11-01T11:05:21+00:00" + "time": "2020-03-23T09:12:05+00:00" }, { "name": "psr/simple-cache", @@ -1841,23 +1754,22 @@ }, { "name": "psy/psysh", - "version": "v0.10.2", + "version": "v0.10.3", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "573c2362c3cdebe846b4adae4b630eecb350afd8" + "reference": "2bde2fa03e05dff0aee834598b951d6fc7c6fe02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/573c2362c3cdebe846b4adae4b630eecb350afd8", - "reference": "573c2362c3cdebe846b4adae4b630eecb350afd8", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2bde2fa03e05dff0aee834598b951d6fc7c6fe02", + "reference": "2bde2fa03e05dff0aee834598b951d6fc7c6fe02", "shasum": "" }, "require": { "dnoegel/php-xdg-base-dir": "0.1.*", "ext-json": "*", "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.4.*|0.3.*", "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", "php": "^8.0 || ^7.0 || ^5.5.9", "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", @@ -1865,7 +1777,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~3.16|~2.15" + "hoa/console": "3.17.*" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", @@ -1910,7 +1822,7 @@ "interactive", "shell" ], - "time": "2020-03-21T06:55:27+00:00" + "time": "2020-04-07T06:44:48+00:00" }, { "name": "ramsey/uuid", @@ -2063,16 +1975,16 @@ }, { "name": "symfony/console", - "version": "v4.4.5", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9" + "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/4fa15ae7be74e53f6ec8c83ed403b97e23b665e9", - "reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9", + "url": "https://api.github.com/repos/symfony/console/zipball/10bb3ee3c97308869d53b3e3d03f6ac23ff985f7", + "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7", "shasum": "" }, "require": { @@ -2135,20 +2047,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2020-02-24T13:10:00+00:00" + "time": "2020-03-30T11:41:10+00:00" }, { "name": "symfony/css-selector", - "version": "v5.0.5", + "version": "v5.0.7", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "a0b51ba9938ccc206d9284de7eb527c2d4550b44" + "reference": "5f8d5271303dad260692ba73dfa21777d38e124e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/a0b51ba9938ccc206d9284de7eb527c2d4550b44", - "reference": "a0b51ba9938ccc206d9284de7eb527c2d4550b44", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/5f8d5271303dad260692ba73dfa21777d38e124e", + "reference": "5f8d5271303dad260692ba73dfa21777d38e124e", "shasum": "" }, "require": { @@ -2188,20 +2100,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2020-02-04T09:41:09+00:00" + "time": "2020-03-27T16:56:45+00:00" }, { "name": "symfony/debug", - "version": "v4.4.5", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "a980d87a659648980d89193fd8b7a7ca89d97d21" + "reference": "346636d2cae417992ecfd761979b2ab98b339a45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/a980d87a659648980d89193fd8b7a7ca89d97d21", - "reference": "a980d87a659648980d89193fd8b7a7ca89d97d21", + "url": "https://api.github.com/repos/symfony/debug/zipball/346636d2cae417992ecfd761979b2ab98b339a45", + "reference": "346636d2cae417992ecfd761979b2ab98b339a45", "shasum": "" }, "require": { @@ -2244,20 +2156,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2020-02-23T14:41:43+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.5", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "89aa4b9ac6f1f35171b8621b24f60477312085be" + "reference": "7e9828fc98aa1cf27b422fe478a84f5b0abb7358" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/89aa4b9ac6f1f35171b8621b24f60477312085be", - "reference": "89aa4b9ac6f1f35171b8621b24f60477312085be", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/7e9828fc98aa1cf27b422fe478a84f5b0abb7358", + "reference": "7e9828fc98aa1cf27b422fe478a84f5b0abb7358", "shasum": "" }, "require": { @@ -2300,20 +2212,20 @@ ], "description": "Symfony ErrorHandler Component", "homepage": "https://symfony.com", - "time": "2020-02-26T11:45:31+00:00" + "time": "2020-03-30T14:07:33+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.5", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d" + "reference": "abc8e3618bfdb55e44c8c6a00abd333f831bbfed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4ad8e149799d3128621a3a1f70e92b9897a8930d", - "reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/abc8e3618bfdb55e44c8c6a00abd333f831bbfed", + "reference": "abc8e3618bfdb55e44c8c6a00abd333f831bbfed", "shasum": "" }, "require": { @@ -2370,7 +2282,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2020-02-04T09:32:40+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -2432,16 +2344,16 @@ }, { "name": "symfony/finder", - "version": "v4.4.5", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357" + "reference": "5729f943f9854c5781984ed4907bbb817735776b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ea69c129aed9fdeca781d4b77eb20b62cf5d5357", - "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357", + "url": "https://api.github.com/repos/symfony/finder/zipball/5729f943f9854c5781984ed4907bbb817735776b", + "reference": "5729f943f9854c5781984ed4907bbb817735776b", "shasum": "" }, "require": { @@ -2477,20 +2389,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2020-02-14T07:42:58+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.5", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "7e41b4fcad4619535f45f8bfa7744c4f384e1648" + "reference": "62f92509c9abfd1f73e17b8cf1b72c0bdac6611b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7e41b4fcad4619535f45f8bfa7744c4f384e1648", - "reference": "7e41b4fcad4619535f45f8bfa7744c4f384e1648", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/62f92509c9abfd1f73e17b8cf1b72c0bdac6611b", + "reference": "62f92509c9abfd1f73e17b8cf1b72c0bdac6611b", "shasum": "" }, "require": { @@ -2532,20 +2444,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2020-02-13T19:40:01+00:00" + "time": "2020-03-30T14:07:33+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.5", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "8c8734486dada83a6041ab744709bdc1651a8462" + "reference": "f356a489e51856b99908005eb7f2c51a1dfc95dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8c8734486dada83a6041ab744709bdc1651a8462", - "reference": "8c8734486dada83a6041ab744709bdc1651a8462", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f356a489e51856b99908005eb7f2c51a1dfc95dc", + "reference": "f356a489e51856b99908005eb7f2c51a1dfc95dc", "shasum": "" }, "require": { @@ -2622,20 +2534,20 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2020-02-29T10:31:38+00:00" + "time": "2020-03-30T14:59:15+00:00" }, { "name": "symfony/mime", - "version": "v5.0.5", + "version": "v5.0.7", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "9b3e5b5e58c56bbd76628c952d2b78556d305f3c" + "reference": "481b7d6da88922fb1e0d86a943987722b08f3955" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/9b3e5b5e58c56bbd76628c952d2b78556d305f3c", - "reference": "9b3e5b5e58c56bbd76628c952d2b78556d305f3c", + "url": "https://api.github.com/repos/symfony/mime/zipball/481b7d6da88922fb1e0d86a943987722b08f3955", + "reference": "481b7d6da88922fb1e0d86a943987722b08f3955", "shasum": "" }, "require": { @@ -2684,20 +2596,20 @@ "mime", "mime-type" ], - "time": "2020-02-04T09:41:09+00:00" + "time": "2020-03-27T16:56:45+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.14.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38" + "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", - "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14", + "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14", "shasum": "" }, "require": { @@ -2709,7 +2621,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -2742,20 +2654,20 @@ "polyfill", "portable" ], - "time": "2020-01-13T11:15:53+00:00" + "time": "2020-02-27T09:26:54+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.14.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "926832ce51059bb58211b7b2080a88e0c3b5328e" + "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/926832ce51059bb58211b7b2080a88e0c3b5328e", - "reference": "926832ce51059bb58211b7b2080a88e0c3b5328e", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", + "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", "shasum": "" }, "require": { @@ -2767,7 +2679,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -2801,20 +2713,20 @@ "portable", "shim" ], - "time": "2020-01-13T11:15:53+00:00" + "time": "2020-03-09T19:04:49+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.14.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a" + "reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6842f1a39cf7d580655688069a03dd7cd83d244a", - "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf", + "reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf", "shasum": "" }, "require": { @@ -2828,7 +2740,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -2863,20 +2775,20 @@ "portable", "shim" ], - "time": "2020-01-17T12:01:36+00:00" + "time": "2020-03-09T19:04:49+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.14.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2" + "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2", - "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/81ffd3a9c6d707be22e3012b827de1c9775fc5ac", + "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac", "shasum": "" }, "require": { @@ -2888,7 +2800,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -2922,20 +2834,20 @@ "portable", "shim" ], - "time": "2020-01-13T11:15:53+00:00" + "time": "2020-03-09T19:04:49+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.14.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf" + "reference": "37b0976c78b94856543260ce09b460a7bc852747" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf", - "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/37b0976c78b94856543260ce09b460a7bc852747", + "reference": "37b0976c78b94856543260ce09b460a7bc852747", "shasum": "" }, "require": { @@ -2944,7 +2856,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -2977,20 +2889,20 @@ "portable", "shim" ], - "time": "2020-01-13T11:15:53+00:00" + "time": "2020-02-27T09:26:54+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.14.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675" + "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/5e66a0fa1070bf46bec4bea7962d285108edd675", - "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", + "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", "shasum": "" }, "require": { @@ -2999,7 +2911,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -3035,20 +2947,20 @@ "portable", "shim" ], - "time": "2020-01-13T11:15:53+00:00" + "time": "2020-02-27T09:26:54+00:00" }, { "name": "symfony/process", - "version": "v4.4.5", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7" + "reference": "3e40e87a20eaf83a1db825e1fa5097ae89042db3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/bf9166bac906c9e69fb7a11d94875e7ced97bcd7", - "reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7", + "url": "https://api.github.com/repos/symfony/process/zipball/3e40e87a20eaf83a1db825e1fa5097ae89042db3", + "reference": "3e40e87a20eaf83a1db825e1fa5097ae89042db3", "shasum": "" }, "require": { @@ -3084,20 +2996,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2020-02-07T20:06:44+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/routing", - "version": "v4.4.5", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "4124d621d0e445732520037f888a0456951bde8c" + "reference": "0f562fa613e288d7dbae6c63abbc9b33ed75a8f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/4124d621d0e445732520037f888a0456951bde8c", - "reference": "4124d621d0e445732520037f888a0456951bde8c", + "url": "https://api.github.com/repos/symfony/routing/zipball/0f562fa613e288d7dbae6c63abbc9b33ed75a8f8", + "reference": "0f562fa613e288d7dbae6c63abbc9b33ed75a8f8", "shasum": "" }, "require": { @@ -3160,7 +3072,7 @@ "uri", "url" ], - "time": "2020-02-25T12:41:09+00:00" + "time": "2020-03-30T11:41:10+00:00" }, { "name": "symfony/service-contracts", @@ -3222,16 +3134,16 @@ }, { "name": "symfony/translation", - "version": "v4.4.5", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "0a19a77fba20818a969ef03fdaf1602de0546353" + "reference": "4e54d336f2eca5facad449d0b0118bb449375b76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/0a19a77fba20818a969ef03fdaf1602de0546353", - "reference": "0a19a77fba20818a969ef03fdaf1602de0546353", + "url": "https://api.github.com/repos/symfony/translation/zipball/4e54d336f2eca5facad449d0b0118bb449375b76", + "reference": "4e54d336f2eca5facad449d0b0118bb449375b76", "shasum": "" }, "require": { @@ -3294,7 +3206,7 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2020-02-04T09:32:40+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/translation-contracts", @@ -3355,16 +3267,16 @@ }, { "name": "symfony/var-dumper", - "version": "v4.4.5", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "2572839911702b0405479410ea7a1334bfab0b96" + "reference": "5a0c2d93006131a36cf6f767d10e2ca8333b0d4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2572839911702b0405479410ea7a1334bfab0b96", - "reference": "2572839911702b0405479410ea7a1334bfab0b96", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/5a0c2d93006131a36cf6f767d10e2ca8333b0d4a", + "reference": "5a0c2d93006131a36cf6f767d10e2ca8333b0d4a", "shasum": "" }, "require": { @@ -3427,7 +3339,7 @@ "debug", "dump" ], - "time": "2020-02-24T13:10:00+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -3480,16 +3392,16 @@ }, { "name": "vlucas/phpdotenv", - "version": "v3.6.1", + "version": "v3.6.2", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "8f7961f7b9deb3b432452c18093cf16f88205902" + "reference": "786a947e57086cf236cefdee80784634224b99fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8f7961f7b9deb3b432452c18093cf16f88205902", - "reference": "8f7961f7b9deb3b432452c18093cf16f88205902", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/786a947e57086cf236cefdee80784634224b99fa", + "reference": "786a947e57086cf236cefdee80784634224b99fa", "shasum": "" }, "require": { @@ -3499,10 +3411,12 @@ }, "require-dev": { "ext-filter": "*", + "ext-pcre": "*", "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" }, "suggest": { - "ext-filter": "Required to use the boolean validator." + "ext-filter": "Required to use the boolean validator.", + "ext-pcre": "Required to use most of the library." }, "type": "library", "extra": { @@ -3537,7 +3451,7 @@ "env", "environment" ], - "time": "2020-03-12T13:44:00+00:00" + "time": "2020-03-27T23:36:02+00:00" } ], "packages-dev": [ @@ -3925,6 +3839,96 @@ ], "time": "2016-01-20T08:20:44+00:00" }, + { + "name": "jakub-onderka/php-console-color", + "version": "v0.2", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "jakub-onderka/php-code-style": "1.0", + "jakub-onderka/php-parallel-lint": "1.0", + "jakub-onderka/php-var-dump-check": "0.*", + "phpunit/phpunit": "~4.3", + "squizlabs/php_codesniffer": "1.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "JakubOnderka\\PhpConsoleColor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "jakub.onderka@gmail.com" + } + ], + "abandoned": "php-parallel-lint/php-console-color", + "time": "2018-09-29T17:23:10+00:00" + }, + { + "name": "jakub-onderka/php-console-highlighter", + "version": "v0.4", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "jakub-onderka/php-console-color": "~0.2", + "php": ">=5.4.0" + }, + "require-dev": { + "jakub-onderka/php-code-style": "~1.0", + "jakub-onderka/php-parallel-lint": "~1.0", + "jakub-onderka/php-var-dump-check": "~0.1", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "JakubOnderka\\PhpConsoleHighlighter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "acci@acci.cz", + "homepage": "http://www.acci.cz/" + } + ], + "description": "Highlight PHP code in terminal", + "abandoned": "php-parallel-lint/php-console-highlighter", + "time": "2018-09-29T18:48:56+00:00" + }, { "name": "laravel/ui", "version": "v1.0.0", @@ -4729,16 +4733,16 @@ }, { "name": "phpunit/phpunit", - "version": "8.5.2", + "version": "8.5.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0" + "reference": "67750516bc02f300e2742fed2f50177f8f37bedf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0", - "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/67750516bc02f300e2742fed2f50177f8f37bedf", + "reference": "67750516bc02f300e2742fed2f50177f8f37bedf", "shasum": "" }, "require": { @@ -4808,7 +4812,7 @@ "testing", "xunit" ], - "time": "2020-01-08T08:49:49+00:00" + "time": "2020-03-31T08:52:04+00:00" }, { "name": "scrivo/highlight.php", diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 574d439da7f94142563d11735d5cb88611570b9c..c2e152521f3372db8e317e50867285d47df1480c 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -15,5 +15,6 @@ class DatabaseSeeder extends Seeder $this->call(CoursesTableSeeder::class); $this->call(TopicsTableSeeder::class); $this->call(SpreadsheetsTableSeeder::class); + $this->call(User_CourseTableSeeder::Class); } } diff --git a/public/js/text.js b/public/js/text.js new file mode 100644 index 0000000000000000000000000000000000000000..9232f5c7acfa8d8e7c2bb24a4ec206abf637b4cc --- /dev/null +++ b/public/js/text.js @@ -0,0 +1,24 @@ +function iFrameOn(){ + richTextField.document.designMode = 'On'; +} +function iBold(){ + richTextField.document.execCommand('bold',false,null); +} +function iUnderline(){ + richTextField.document.execCommand('underline',false,null); +} +function iItalic(){ + richTextField.document.execCommand('italic',false,null); +} +function iUnorderedList(){ + richTextField.document.execCommand("InsertOrderedList", false,"newOL"); +} +function iOrderedList(){ + richTextField.document.execCommand("InsertUnorderedList", false,"newUL"); +} +function submit_form(){ + console.log(tinymce.get('rich').getContent({format : 'raw'})); + var theForm = document.getElementById("myform"); + theForm.elements["myTextArea"].value = tinymce.get('rich').getContent({format : 'raw'}); + theForm.submit(); +} \ No newline at end of file diff --git a/resources/views/course.blade.php b/resources/views/course.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..ebb19b8d438519f9b6b5353692268987e9cb47a7 --- /dev/null +++ b/resources/views/course.blade.php @@ -0,0 +1,97 @@ +@extends('layouts.app') + +@section('content') +<div class="container"> +@isset(request()->msg) + @if( request()->get('msg') == 1 ) + <div class="alert alert-success" role="alert"> + Pembuatan Topik Berhasil + </div> + @else + <div class="alert alert-danger" role="alert"> + Pembuatan Topik Gagal + </div> + @endif +@endisset + <div class="row justify-content"> + <div class="col-md-8"> + <div class="card"> + <div class="card-header">Topik Materi</div> + <div class="card-body"> + <div class="accordion-group" id="accordionTopics"> + @foreach($topics as $index => $topic) + <div class="card"> + <div class="card-header" id="heading<?php echo $topic->id; ?>"> + <h6 class="mb-0"> + <a data-toggle="collapse" aria-expanded="false" aria-controls="collapse<?php echo $topic->id; ?>"> + <b>Topik {{ $index + 1 }}: {{ $topic->name }}</b> + </a> + </h6> + </div> + <div id="collapse<?php echo $topic->id; ?>" class="collapse show" aria-labelledby="heading<?php echo $topic->id; ?>" data-parent="#accordionTopics"> + <div class="card-body"> + {{ $topic->content }} <br/> <br/> + @if(Auth::user()->role == 1) + <a href="<?php echo $topic->id_course; ?>/learn/<?php echo $topic->id_spreadsheet; ?>/edit" class="btn btn-primary" role="button">Buka Topik</a> + @else + <a href="<?php echo $topic->id_course; ?>/learn/<?php echo $topic->id_spreadsheet; ?>" class="btn btn-primary" role="button">Buka Topik</a> + @endif + </div> + </div> + </div> + @endforeach + </div> <br/> + <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalCenter"> + Tambah Topik + </button> + <div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> + <div class="modal-dialog modal-dialog-centered" role="document"> + <div class="modal-content"> + <form action="<?php echo Request::url(); ?>/learn/new" method="post"> + {{ csrf_field() }} + <div class="modal-header"> + <h5 class="modal-title" id="exampleModalCenterTitle">Tambah Topik</h5> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> + <div class="modal-body"> + <div class="form-group"> + <label for="topic-name" class="col-form-label">Masukkan Judul Topik</label> + <input type="text" class="form-control" name="topic_name" id="topic-name" required="required" placeholder="Judul Topik"> + </div> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button> + <button type="submit" class="btn btn-primary">Buat Topik</button> + </div> + </form> + </div> + </div> + </div> + </div> + </div> + </div> + <div class="col-md-4"> + <div class="card"> + <div class="card-header">Progress</div> + <div class="card-body"> + @foreach($topics as $index => $topic) + Topik {{ $index + 1 }}: 100/100 <br/> + @endforeach + </div> + </div> + <br/> + <div class="card"> + <div class="card-header">Peserta Kelas</div> + <div class="card-body"> + {{ $teacher }} (Pengajar) <br/> + @foreach($students as $student) + {{ $student }} <br/> + @endforeach + </div> + </div> + </div> + </div> +</div> +@endsection \ No newline at end of file diff --git a/resources/views/credentials.json b/resources/views/credentials.json deleted file mode 100644 index e5cc528f889652c2d7ce0c1043aa53f930e40655..0000000000000000000000000000000000000000 --- a/resources/views/credentials.json +++ /dev/null @@ -1 +0,0 @@ -{"installed":{"client_id":"203499803850-801l1qnh8emaje13o69djnks4329517c.apps.googleusercontent.com","project_id":"datalearn-1584958564354","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"JWjkNxsT1JQssnD1MXaxlGAc","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}} \ No newline at end of file diff --git a/resources/views/edit.blade.php b/resources/views/edit.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..70c7f3d17e0dc9fb2d7cf3e7ed70b3733bed1950 --- /dev/null +++ b/resources/views/edit.blade.php @@ -0,0 +1,62 @@ +@extends('layouts.app') + +@section('content') +<!-- <form action="<?php echo Request::url(); ?>/edit/submit" name="myform" id="myform" method="post"> + {{ csrf_field() }} + <div id="wysiwyg_cp" style="padding:8px; width:700px;"> + <input type="button" onClick="iBold()" value="B"> + <input type="button" onClick="iUnderline()" value="U"> + <input type="button" onClick="iItalic()" value="I"> + <input type="button" onClick="iUnorderedList()" value="UL"> + <input type="button" onClick="iOrderedList()" value="OL"> + </div> + <textarea style="display:none;" name="myTextArea" id="myTextArea" cols="100" rows="14"></textarea> + <iframe name="richTextField" id="richTextField" style="border:#000000 1px solid; width:700px; height:300px;"></iframe> + <input name="myBtn" type="button" value="Submit Data" onClick="javascript:submit_form();"/> +</form> --> +<div class="container-fluid"> + <div class="row"> + <div class="col-lg-4"> + <h4>Materi: {{ $topic->name }}</h4> + <div class="accordion" id="accordionCourses"> + <div class="card"> + <div class="card-header" id="heading1" style="transform: rotate(0);"> + <h5 class="mb-0"> + <button class="btn stretched-link" type="button" data-toggle="collapse" data-target="#collapse1" aria-expanded="false" aria-controls="collapse1"> + Persoalan + </button> + </h5> + </div> + <div id="collapse1" class="collapse show" aria-labelledby="heading1" data-parent="#accordionCourses"> + <form action="<?php echo Request::url(); ?>/save" name="myform" id="myform" method="post"> + @csrf + <input type="hidden" value="<?php echo $id_spreadsheet; ?>" class="form-control" name="id_spreadsheet" id="id_spreadsheet"> + <textarea name="richh" id="richh"><?php echo $topic->content;?></textarea> + <button style="float: right; margin-top: 1rem; margin-bottom: 1rem;" type="submit" class="btn btn-primary"><b>Simpan</b></button> + </form> + </div> + </div> + <div class="card"> + <div class="card-header" id="heading2" style="transform: rotate(0);"> + <h5 class="mb-0"> + <button class="btn stretched-link" type="button" data-toggle="collapse" data-target="#collapse2" aria-expanded="false" aria-controls="collapse2"> + Kunci Jawaban + </button> + </h5> + </div> + <div id="collapse2" class="collapse" aria-labelledby="heading2" data-parent="#accordionCourses"> + Iki isinie + </div> + </div> + </div> + </div> + <div class="col-lg-8"> + <iframe + style="width:100%; height:500px; border: 1px solid grey;" + frameBorder="0" + src="https://docs.google.com/spreadsheets/d/<?php echo $id_spreadsheet; ?>/edit?usp=drivesdk&rm=embedded"> + </iframe> + </div> + </div> +</div> +@endsection \ No newline at end of file diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index b24b2c9f7ea9ad5009f0e1fcd5918cec754dd150..f23113698207127363f65f054c58d4b6e98ec56b 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -11,7 +11,7 @@ <div class="card course" style="width: 14rem"> <img src="img/course1.png" class="card-img-top" alt="No Picture"> <div class="card-header">{{ $enroll->name }}</div> - <a href="/class/<?php echo $enroll->id; ?>" class="stretched-link"></a> + <a href="/course/<?php echo $enroll->id; ?>" class="stretched-link"></a> </div> @endforeach </div> @@ -61,12 +61,4 @@ </div> </div> </div> -@endsection - -<style> - courses { - display: block; - width: 100%; - height: 100%; - } -</style> \ No newline at end of file +@endsection \ No newline at end of file diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index e47b1bc290edbe2f0991819a82d66ecabc6316c2..407fd88f135dcb4d194e35e9e11243119dd00d37 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -11,6 +11,9 @@ <!-- Scripts --> <script src="{{ asset('js/app.js') }}" defer></script> + <script src="{{ asset('js/text.js') }}" defer></script> + <script src="https://cdn.tiny.cloud/1/yaezxtmh9h1roazzxnkx70is63n62nbov3xskxim3rpnbcoj/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script> + <script>tinymce.init({selector:'textarea'});</script> <!-- Fonts --> <link rel="dns-prefetch" href="//fonts.gstatic.com"> @@ -20,11 +23,11 @@ <link href="{{ asset('css/app.css') }}" rel="stylesheet"> <link href="{{ asset('css/home.css') }}" rel="stylesheet"> </head> -<body> +<body onLoad="iFrameOn();"> <div id="app"> <nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm"> <div class="container"> - <a class="navbar-brand" href="{{ url('/') }}"> + <a class="navbar-brand" href="{{ url('/home') }}"> {{ config('app.name', 'Laravel') }} </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}"> diff --git a/resources/views/learn.blade.php b/resources/views/learn.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..26361af8a5c876e653d49400d4f13c624716aa16 --- /dev/null +++ b/resources/views/learn.blade.php @@ -0,0 +1,28 @@ +@extends('layouts.app') + +@section('content') +<div class="container-fluid"> + <div class="row"> + <div class="col-lg-4"> + <div class="card"> + <div class="card-header">Judul</div> + <div class="card-body"> + <?php echo $content;?> + </div> + </div> + </div> + <div class="col-lg-8"> + <iframe + style="width:100%; height:500px; border: 1px solid grey;" + frameBorder="0" + src="https://docs.google.com/spreadsheets/d/<?php echo $id_spreadsheet; ?>/edit?usp=drivesdk&rm=embedded"> + </iframe> + <form action="<?php echo Request::url(); ?>/submit" name="myform" id="myform" method="post"> + @csrf + <input type="hidden" value="<?php echo $id_spreadsheet; ?>" class="form-control" name="id_spreadsheet" id="id_spreadsheet"> + <button style="float: right;" type="submit" class="btn btn-success"><b>Submit</b></button> + </form> + </div> + </div> +</div> +@endsection \ No newline at end of file diff --git a/resources/views/test.blade.php b/resources/views/test.blade.php index 81804a6e391932c84ba6b28a120c85f9aea1d2cb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/resources/views/test.blade.php +++ b/resources/views/test.blade.php @@ -1,4 +0,0 @@ -<iframe - style="width:100%; height:500px;overflow:auto;" - src="https://docs.google.com/spreadsheets/d/1vSRP2St6tvX-dL9U1uXoyEf9ipDXEyh8_6D1KeH8N_U/edit?usp=sharing&single=true&widget=true&headers=false"> -</iframe> \ No newline at end of file diff --git a/resources/views/token.json b/resources/views/token.json deleted file mode 100644 index 1deb6f2eb0b02f1bcc9928f62c4055d0c1ee8288..0000000000000000000000000000000000000000 --- a/resources/views/token.json +++ /dev/null @@ -1 +0,0 @@ -{"access_token":"ya29.a0Adw1xeWgubk0UA2GfpfBcE4iZ2KcLD5_2tRMN8z4jo4wO1amESg-M1uof6iStIMrisGg8LPjGJu7rPCoNilqNhWzAnMvitwTZJHwsp2QHO3T1b0lY-Tz8xaFEJ2XS6SbRfGBam5XWsK1dkYpOTZ5G3kzbLSAy5aV21M","expires_in":3599,"refresh_token":"1\/\/0gSzfFC85SeXlCgYIARAAGBASNwF-L9Ir32KqSrEfEjJRCmTLVkBv_yPTMXD4Znx7FklpILGaXjgAFGe2CltDUmruEha5MHTc9mw","scope":"https:\/\/www.googleapis.com\/auth\/spreadsheets.readonly","token_type":"Bearer","created":1584960990} \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 98ecf891cebadf5b158bf926582f16aaf2e39213..5311d3cc1348dd18e86663d5fc87ce4cba73b081 100644 --- a/routes/web.php +++ b/routes/web.php @@ -14,12 +14,14 @@ Route::get('/', function () { return view('welcome'); }); -Route::get('/test', function () { - return view('test'); -}); + Auth::routes(); -// Route::get('/home', function () { -// return view('home'); -// }); -Route::get('/home', 'HomeController@index')->name('home'); \ No newline at end of file +Route::get('/home', 'HomeController@index')->name('home'); +Route::get('/test', 'LearnController@test')->name('test'); +Route::get('/course/{id_course}', 'CourseController@index')->name('course'); +Route::post('/course/{id_course}/learn/new', 'LearnController@new')->name('learn/new'); +Route::get('/course/{id_course}/learn/{id_spreadsheet}', 'LearnController@index')->name('learn'); +Route::get('/course/{id_course}/learn/{id_spreadsheet}/edit', 'LearnController@edit')->name('edit'); +Route::post('/course/{id_course}/learn/{id_spreadsheet}/edit/save', 'LearnController@save')->name('edit/save'); +Route::post('/course/{id_course}/learn/{id_spreadsheet}/submit', 'LearnController@submit')->name('learn/submit'); \ No newline at end of file diff --git a/server.php b/server.php index 5fb6379e71f275a1784e6638adc96420aaa5c5b2..e14da8b36e0d9a9f51bffb1861ae1204a18bda59 100644 --- a/server.php +++ b/server.php @@ -19,3 +19,4 @@ if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { } require_once __DIR__.'/public/index.php'; +require_once __DIR__.'/vendor/autoload.php'; \ No newline at end of file