diff --git a/app/Http/Controllers/TestController.php b/app/Http/Controllers/TestController.php index c2b679d..f556e03 100644 --- a/app/Http/Controllers/TestController.php +++ b/app/Http/Controllers/TestController.php @@ -206,14 +206,10 @@ class TestController extends Controller { $question = new Question; $question->addQuestion($test, $request); - $option1 = new Option; - $option1->addOption($question, $request, 1); - $option2 = new Option; - $option2->addOption($question, $request, 2); - $option3 = new Option; - $option3->addOption($question, $request, 3); - $option4 = new Option; - $option4->addOption($question, $request, 4); + foreach ($request["options"] as $optionData) { + $option = new Option; + $option->addOption($question, $optionData); + } return redirect("/admin/tests/$test->id"); } @@ -222,10 +218,10 @@ class TestController extends Controller $test = $question->test; $question->updateQuestion($request); $options = $question->options; - $options[0]->updateOption($request, 1); - $options[1]->updateOption($request, 2); - $options[2]->updateOption($request, 3); - $options[3]->updateOption($request, 4); + $optionsData = $request["options"]; + foreach ($options as $key => $option) { + $option->updateOption($optionsData[$key+1]); + } return redirect("/admin/tests/$test->id"); } diff --git a/app/Http/Requests/StoreOptions.php b/app/Http/Requests/StoreOptions.php deleted file mode 100644 index e2a96f1..0000000 --- a/app/Http/Requests/StoreOptions.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -namespace App\Http\Requests; - -use Illuminate\Foundation\Http\FormRequest; -use Illuminate\Support\Facades\Auth; - -class StoreOptions extends FormRequest -{ - /** - * Determine if the user is authorized to make this request. - * - * @return bool - */ - public function authorize() - { - if (Auth::user()->isAdministrator()) { - return true; - } - - if (Auth::user()->isModerator()) { - return true; - } - return false; - } - - /** - * Get the validation rules that apply to the request. - * - * @return array - */ - public function rules() - { - return [ - "question_id" => "required|integer|exists:questions,id|min:1", - "option" => "required|string|alpha_dash|max:255", - "correct_answer" => "boolean" - ]; - } -} diff --git a/app/Http/Requests/StoreQuestion.php b/app/Http/Requests/StoreQuestion.php index 7a24661..1f44304 100644 --- a/app/Http/Requests/StoreQuestion.php +++ b/app/Http/Requests/StoreQuestion.php @@ -37,7 +37,9 @@ class StoreQuestion extends FormRequest "question" => "required|string|alpha_dash", "question_type" => "string|in:radio,checkbox|max:255", "correct_answers" => "integer|min:1", - "multiple_anwsers_question" => "boolean" + "multiple_anwsers_question" => "boolean", + "options.*.option" => "required|string|alpha_dash|max:255", + "options.*.correct_answer" => "boolean" ]; } } diff --git a/app/Option.php b/app/Option.php index 0592ac5..fb1588b 100644 --- a/app/Option.php +++ b/app/Option.php @@ -17,24 +17,24 @@ class Option extends Model return true; } - public function addOption($question, $request, $nr) + public function addOption($question, $optionData) { - $this->option = $request->get("option{$nr}"); - if ($request->get("correct_answer{$nr}") == null) { - $this->correct_answer = 0; + $this->option = $optionData["option"]; + if (array_key_exists("correct_answer", $optionData)) { + $this->correct_answer = 1; } else { - $this->correct_answer = $request->get("correct_answer{$nr}"); + $this->correct_answer = 0; } $question->options()->save($this); } - public function updateOption($request, $nr) + public function updateOption($optionData) { - $this->option = $request->get("option{$nr}"); - if ($request->get("correct_answer{$nr}") == null) { - $this->correct_answer = 0; + $this->option = $optionData["option"]; + if (array_key_exists("correct_answer", $optionData)) { + $this->correct_answer = 1; } else { - $this->correct_answer = $request->get("correct_answer{$nr}"); + $this->correct_answer = 0; } $this->update(); } diff --git a/app/Question.php b/app/Question.php index e84a96a..d0e9e05 100644 --- a/app/Question.php +++ b/app/Question.php @@ -65,7 +65,7 @@ class Question extends Model $test->questions()->save($this); } - public function updateQuestion(Request $request) + public function updateQuestion($request) { $this->title = $request->title; $this->question = $request->question; diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 554a0c3..2accf1a 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -25,7 +25,7 @@ @endif <td> <form method="get" class="pull-right"> - <button class="btn btn-xs btn-default pull-left" formaction="/test/{{ $test->id }}">Start</button> + <button class="btn btn-xs btn-primary pull-left" formaction="/test/{{ $test->id }}">Start</button> </form> </td> </tr> diff --git a/resources/views/tests/answer.blade.php b/resources/views/tests/answer.blade.php index 9fd4695..473d30a 100644 --- a/resources/views/tests/answer.blade.php +++ b/resources/views/tests/answer.blade.php @@ -52,9 +52,9 @@ <button type="submit" class="btn btn-default" formaction="/test/{{ $question->test_id }}/retry">Retry</button> <button type="submit" class="btn btn-default" formaction="/test/{{ $question->test_id }}/end">End</button> @elseif (session("last_question") == true) - <button type="submit" class="btn btn-default" formaction="/test/{{ $question->test_id }}/end">End</button> + <button type="submit" class="btn btn-success" formaction="/test/{{ $question->test_id }}/end">End</button> @else - <button type="submit" class="btn btn-default" formaction="/test/question">Next</button> + <button type="submit" class="btn btn-primary" formaction="/test/question">Next</button> @endif </form> </div> diff --git a/resources/views/tests/delete.blade.php b/resources/views/tests/delete.blade.php index 641175c..1556a3c 100644 --- a/resources/views/tests/delete.blade.php +++ b/resources/views/tests/delete.blade.php @@ -8,7 +8,7 @@ <form method="POST" action="/{{ Auth::user()->getAdminPath() }}/tests/{{ $test->id }}/delete"> {{ csrf_field() }} {{ method_field('DELETE') }} - <button type="submit" class="btn btn-default">Yes</button> + <button type="submit" class="btn btn-danger">Yes</button> </form> <form method="GET" action="/{{ Auth::user()->getAdminPath() }}/tests"> <button type="submit" class="btn btn-default">No</button> diff --git a/resources/views/tests/edit.blade.php b/resources/views/tests/edit.blade.php index e3fe54c..1dae18f 100644 --- a/resources/views/tests/edit.blade.php +++ b/resources/views/tests/edit.blade.php @@ -19,15 +19,15 @@ {{ method_field('PATCH') }} <div class="form-group"> <label>Title</label> - <input type="text" class="form-control" name="title" value="{{ $test->title }}"> + <input type="text" class="form-control" name="title" value="{{ $test->title }}" required> </div> <div class="form-group"> <label>Number of Questions</label> - <input type="text" class="form-control" name="question_count" value="{{ $test->question_count }}"> + <input type="number" class="form-control" name="question_count" value="{{ $test->question_count }}" min="1" required> </div> <div class="form-group"> <label>Number of Wrong Questions Allowed</label> - <input type="text" class="form-control" name="question_count_to_fail" value="{{ $test->question_count_to_fail }}"> + <input type="number" class="form-control" name="question_count_to_fail" value="{{ $test->question_count_to_fail }}" min="0"> </div> <div class="form-group"> <label>Time Limit</label> @@ -53,7 +53,7 @@ </select> </div> @endif - <button type="submit" class="btn btn-default">Submit</button> + <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div>s diff --git a/resources/views/tests/new.blade.php b/resources/views/tests/new.blade.php index 8addcf3..f0f38f1 100644 --- a/resources/views/tests/new.blade.php +++ b/resources/views/tests/new.blade.php @@ -20,15 +20,15 @@ {{ csrf_field() }} <div class="form-group"> <label>Title</label> - <input type="text" class="form-control" name="title"> + <input type="text" class="form-control" name="title" required> </div> <div class="form-group"> <label>Number of Questions</label> - <input type="text" class="form-control" name="question_count"> + <input type="number" class="form-control" name="question_count" min="1" required> </div> <div class="form-group"> <label>Number of Wrong Questions Allowed</label> - <input type="text" class="form-control" name="question_count_to_fail"> + <input type="number" class="form-control" name="question_count_to_fail" min="0"> </div> <div class="form-group"> <label>Time Limit</label> @@ -50,7 +50,7 @@ </select> </div> @endif - <button type="submit" class="btn btn-default">Submit</button> + <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> diff --git a/resources/views/tests/question/delete.blade.php b/resources/views/tests/question/delete.blade.php index 422789c..6faad69 100644 --- a/resources/views/tests/question/delete.blade.php +++ b/resources/views/tests/question/delete.blade.php @@ -8,7 +8,7 @@ <form method="POST" action="/{{ Auth::user()->getAdminPath() }}/questions/{{ $question->id }}"> {{ csrf_field() }} {{ method_field('DELETE') }} - <button type="submit" class="btn btn-default">Yes</button> + <button type="submit" class="btn btn-danger">Yes</button> </form> <form method="GET" action="/{{ Auth::user()->getAdminPath() }}/tests"> <button type="submit" class="btn btn-default">No</button> diff --git a/resources/views/tests/question/edit.blade.php b/resources/views/tests/question/edit.blade.php index 18a9c87..83d56c5 100644 --- a/resources/views/tests/question/edit.blade.php +++ b/resources/views/tests/question/edit.blade.php @@ -20,34 +20,26 @@ {{ method_field('PATCH') }} <div class="form-group"> <label>Title</label> - <input type="text" class="form-control" name="title" value="{{ $question->title }}"> + <input type="text" class="form-control" name="title" value="{{ $question->title }}" required> </div> <div class="form-group"> <label>Question</label> - <textarea class="form-control" name="question" rows="5">{{ $question->question }}</textarea> - <input type="checkbox" name="multiple_answers_question" value="1" @if ($question->correct_answer == 1) checked @endif> Multiple Answers Required + <textarea class="form-control" name="question" rows="5" required>{{ $question->question }}</textarea> </div> <div class="form-group"> - <label>Option 1</label> - <input type="text" class="form-control" name="option1" value="{{ $options[0]->option }}"> - <input type="checkbox" name="correct_answer1" value="1" @if ($options[0]->correct_answer == 1) checked @endif> Correct Answer + <label>Multiple Answers Required</label> + <select class="form-control" name="multiple_answers_question"> + <option value="0" @if ($question->multiple_answers_question == 0) selected @endif>No</option> + <option value="1" @if ($question->multiple_answers_question == 1) selected @endif>Yes</option> + </select> </div> - <div class="form-group"> - <label>Option 2</label> - <input type="text" class="form-control" name="option2" value="{{ $options[1]->option }}"> - <input type="checkbox" name="correct_answer2" value="1" @if ($options[1]->correct_answer == 1) checked @endif> Correct Answer - </div> - <div class="form-group"> - <label>Option 3</label> - <input type="text" class="form-control" name="option3" value="{{ $options[2]->option }}"> - <input type="checkbox" name="correct_answer3" value="1" @if ($options[2]->correct_answer == 1) checked @endif> Correct Answer - </div> - <div class="form-group"> - <label>Option 4</label> - <input type="text" class="form-control" name="option4" value="{{ $options[3]->option }}"> - <input type="checkbox" name="correct_answer4" value="1" @if ($options[3]->correct_answer == 1) checked @endif> Correct Answer - </div> - <button type="submit" class="btn btn-default">Submit</button> + @for ($i = 1; $i < 5; $i++) + <div class="form-group"> + <label>Option {{ $i }}</label><input class="pull-right" type="checkbox" name="options[{{ $i }}][correct_answer]" value="1" @if ($options[$i-1]->correct_answer == 1) checked @endif><span class="pull-right" style="padding:2px;">Correct Answer</span> + <input type="text" class="form-control" name="options[{{ $i }}][option]" value="{{ $options[$i-1]->option }}" required> + </div> + @endfor + <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> diff --git a/resources/views/tests/question/new.blade.php b/resources/views/tests/question/new.blade.php index 06d2942..a72869f 100644 --- a/resources/views/tests/question/new.blade.php +++ b/resources/views/tests/question/new.blade.php @@ -18,34 +18,26 @@ {{ csrf_field() }} <div class="form-group"> <label>Title</label> - <input type="text" class="form-control" name="title"> + <input type="text" class="form-control" name="title" required> </div> <div class="form-group"> <label>Question</label> - <textarea class="form-control" name="question" rows="5"></textarea> - <input type="checkbox" name="multiple_answers_question" value="1"> Multiple Answers Required + <textarea class="form-control" name="question" rows="5" required></textarea> </div> <div class="form-group"> - <label>Option 1</label> - <input type="text" class="form-control" name="option1"> - <input type="checkbox" name="correct_answer1" value="1"> Correct Answer + <label>Multiple Answers Required</label> + <select class="form-control" name="multiple_answers_question"> + <option value="0">No</option> + <option value="1">Yes</option> + </select> </div> - <div class="form-group"> - <label>Option 2</label> - <input type="text" class="form-control" name="option2"> - <input type="checkbox" name="correct_answer2" value="1"> Correct Answer - </div> - <div class="form-group"> - <label>Option 3</label> - <input type="text" class="form-control" name="option3"> - <input type="checkbox" name="correct_answer3" value="1"> Correct Answer - </div> - <div class="form-group"> - <label>Option 4</label> - <input type="text" class="form-control" name="option4"> - <input type="checkbox" name="correct_answer4" value="1"> Correct Answer - </div> - <button type="submit" class="btn btn-default">Submit</button> + @for ($i = 1; $i < 5; $i++) + <div class="form-group"> + <label>Option {{ $i }}</label><input class="pull-right" type="checkbox" name="options[{{ $i }}][correct_answer]" value="1"><span class="pull-right" style="padding:2px;">Correct Answer</span> + <input type="text" class="form-control" name="options[{{ $i }}][option]" required> + </div> + @endfor + <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> diff --git a/resources/views/tests/show.blade.php b/resources/views/tests/show.blade.php index 22f0b34..d0020d1 100644 --- a/resources/views/tests/show.blade.php +++ b/resources/views/tests/show.blade.php @@ -8,7 +8,7 @@ <div class="panel-heading">Test</div> <div class="panel-body"> <form method="get"> - <button class="btn btn-default pull-right" formaction="/{{ Auth::user()->getAdminPath() }}/tests/{{ $test->id }}/delete">Delete</button> + <button class="btn btn-danger pull-right" formaction="/{{ Auth::user()->getAdminPath() }}/tests/{{ $test->id }}/delete">Delete</button> <button class="btn btn-default pull-right" formaction="/{{ Auth::user()->getAdminPath() }}/tests/{{ $test->id }}/edit">Edit</button> </form> <strong>Title:</strong><br> @@ -33,7 +33,7 @@ <th>Question</th> <th> <form method="get"> - <button class="btn btn-sm btn-default pull-right" formaction="/{{ Auth::user()->getAdminPath() }}/tests/{{ $test->id }}/question">Add Question</button> + <button class="btn btn-sm btn-primary pull-right" formaction="/{{ Auth::user()->getAdminPath() }}/tests/{{ $test->id }}/question">Add Question</button> </form> </th> </tr> @@ -44,7 +44,7 @@ <td> <form method="get" class="pull-right"> <button class="btn btn-sm btn-default pull-left" formaction="/{{ Auth::user()->getAdminPath() }}/questions/{{ $question->id }}/edit">Edit</button> - <button class="btn btn-sm btn-default pull-left" formaction="/{{ Auth::user()->getAdminPath() }}/questions/{{ $question->id }}/delete">Delete</button> + <button class="btn btn-sm btn-danger pull-left" formaction="/{{ Auth::user()->getAdminPath() }}/questions/{{ $question->id }}/delete">Delete</button> </form> </td> </tr> diff --git a/resources/views/tests/showall.blade.php b/resources/views/tests/showall.blade.php index 441db85..49f3c52 100644 --- a/resources/views/tests/showall.blade.php +++ b/resources/views/tests/showall.blade.php @@ -13,7 +13,7 @@ <th>Test</th> <th> <form method="get"> - <button class="btn btn-sm btn-default pull-right" formaction="/{{ Auth::user()->getAdminPath() }}/tests/new">Add Test</button> + <button class="btn btn-sm btn-primary pull-right" formaction="/{{ Auth::user()->getAdminPath() }}/tests/new">Add Test</button> </form> </th> </tr> @@ -24,8 +24,8 @@ @if (Auth::user()->access_level == 2 AND !$test->group_id == 0 OR Auth::user()->access_level == 3) <td> <form method="get" class="pull-right"> - <button class="btn btn-sm btn-default pull-left" formaction="/{{ Auth::user()->getAdminPath() }}/tests/{{ $test->id }}">Edit</button> - <button class="btn btn-sm btn-default pull-left" formaction="/{{ Auth::user()->getAdminPath() }}/tests/{{ $test->id }}/delete">Delete</button> + <button class="btn btn-sm btn-default pull-left" style="margin-right:2px;"formaction="/{{ Auth::user()->getAdminPath() }}/tests/{{ $test->id }}">Edit</button> + <button class="btn btn-sm btn-danger pull-left" formaction="/{{ Auth::user()->getAdminPath() }}/tests/{{ $test->id }}/delete">Delete</button> </form> </td> @endif diff --git a/resources/views/users/delete.blade.php b/resources/views/users/delete.blade.php index 2259795..6ae8eaf 100644 --- a/resources/views/users/delete.blade.php +++ b/resources/views/users/delete.blade.php @@ -8,7 +8,7 @@ <form method="POST" action="/{{ Auth::user()->getAdminPath() }}/users/{{ $user->id }}"> {{ csrf_field() }} {{ method_field('DELETE') }} - <button type="submit" class="btn btn-default">Yes</button> + <button type="submit" class="btn btn-danger">Yes</button> </form> <form method="GET" action="/{{ Auth::user()->getAdminPath() }}/users"> <button type="submit" class="btn btn-default">No</button> diff --git a/resources/views/users/new.blade.php b/resources/views/users/new.blade.php index e76b9c3..31e5202 100644 --- a/resources/views/users/new.blade.php +++ b/resources/views/users/new.blade.php @@ -18,15 +18,15 @@ {{ csrf_field() }} <div class="form-group"> <label>Name</label> - <input type="text" class="form-control" name="name"> + <input type="text" class="form-control" name="name" required> </div> <div class="form-group"> <label>Email</label> - <input type="email" class="form-control" name="email"> + <input type="email" class="form-control" name="email" required> </div> <div class="form-group"> <label>Password</label> - <input type="password" class="form-control" name="password"> + <input type="password" class="form-control" name="password" required> </div> <div class="form-group"> <label>Enabled</label> @@ -45,7 +45,7 @@ </select> </div> @endif - <button type="submit" class="btn btn-default">Submit</button> + <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> diff --git a/resources/views/users/settings.blade.php b/resources/views/users/settings.blade.php index 2956f80..ef22c62 100644 --- a/resources/views/users/settings.blade.php +++ b/resources/views/users/settings.blade.php @@ -30,7 +30,7 @@ <label>Repeat New Password</label> <input type="password" class="form-control" name="password2_new"> </div> - <button type="submit" class="btn btn-default">Submit</button> + <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> @@ -45,7 +45,7 @@ <label>Email</label> <input type="text" class="form-control" name="email" value="{{ $user->email }}"> </div> - <button type="submit" class="btn btn-default">Submit</button> + <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> diff --git a/resources/views/users/showall.blade.php b/resources/views/users/showall.blade.php index 7b4e9c0..85b7aa4 100644 --- a/resources/views/users/showall.blade.php +++ b/resources/views/users/showall.blade.php @@ -13,7 +13,7 @@ <th>User</th> <th> <form method="get"> - <button class="btn btn-sm btn-default pull-right" formaction="/{{ Auth::user()->getAdminPath() }}/users/new">Add User</button> + <button class="btn btn-sm btn-primary pull-right" formaction="/{{ Auth::user()->getAdminPath() }}/users/new">Add User</button> </form> </th> </tr> @@ -23,7 +23,7 @@ <td>{{ $user->name }} ({{ $user->email }})</td> <td> <form method="get" class="pull-right"> - <button class="btn btn-sm btn-default pull-left" formaction="/{{ Auth::user()->getAdminPath() }}/users/{{ $user->id }}/delete">Delete</button> + <button class="btn btn-sm btn-danger pull-left" formaction="/{{ Auth::user()->getAdminPath() }}/users/{{ $user->id }}/delete">Delete</button> </form> </td> </tr>