From d2ac14a48f9eda5d52e44f8a160192267ac2bc72 Mon Sep 17 00:00:00 2001 From: baghizadizn Date: Thu, 20 Nov 2025 10:03:22 +0700 Subject: [PATCH] handle file input dan fix nidn checking --- app/Http/Controllers/ApiController.php | 115 ---------- .../Auth/RegisteredUserController.php | 198 ++++++++++-------- app/Http/Controllers/UsersController.php | 189 +++++++++++++++-- .../instructor/MyProfileController.php | 23 +- .../student/MyProfileController.php | 21 +- app/Models/Instructors.php | 2 +- .../admin/admin/create_admin_basic.blade.php | 11 +- .../views/admin/admin/create_login.blade.php | 2 +- .../views/admin/admin/create_social.blade.php | 6 +- resources/views/admin/blog/create.blade.php | 28 +++ resources/views/admin/blog/edit.blade.php | 39 ++++ .../views/admin/bootcamp/create.blade.php | 14 ++ .../views/admin/bootcamp/edit_media.blade.php | 14 ++ .../views/admin/category/create.blade.php | 31 ++- resources/views/admin/category/edit.blade.php | 28 +++ resources/views/admin/course/create.blade.php | 13 ++ .../views/admin/course/create_media.blade.php | 31 +++ .../views/admin/course/edit_media.blade.php | 33 ++- .../course/html5_type_lesson_add.blade.php | 17 +- .../course/html5_type_lesson_edit.blade.php | 18 +- .../create_instructor_basic.blade.php | 15 +- .../admin/instructor/create_login.blade.php | 23 +- .../admin/instructor/create_social.blade.php | 6 +- .../edit_instructor_basic.blade.php | 36 ++++ resources/views/admin/profile/index.blade.php | 2 +- .../admin/student/create_login.blade.php | 24 ++- .../admin/student/create_social.blade.php | 6 +- .../student/create_student_basic.blade.php | 8 +- .../admin/team_training/create.blade.php | 18 ++ .../views/admin/team_training/edit.blade.php | 17 ++ resources/views/auth/login.blade.php | 41 ---- .../article_single.blade.php | 4 +- .../student/my_profile/index.blade.php | 33 ++- .../views/instructor/blog/create.blade.php | 29 +++ .../views/instructor/blog/edit.blade.php | 42 ++++ .../instructor/bootcamp/create.blade.php | 16 ++ .../instructor/bootcamp/edit_media.blade.php | 16 ++ .../views/instructor/course/create.blade.php | 14 ++ .../instructor/course/create_media.blade.php | 19 +- .../instructor/course/edit_media.blade.php | 17 ++ .../course/html5_type_lesson_add.blade.php | 16 ++ .../course/html5_type_lesson_edit.blade.php | 17 ++ .../views/instructor/profile/index.blade.php | 28 ++- .../instructor/team_training/create.blade.php | 16 ++ .../instructor/team_training/edit.blade.php | 17 ++ .../tutor_booking/subject_add.blade.php | 16 ++ .../tutor_booking/subject_edit.blade.php | 17 ++ 47 files changed, 1022 insertions(+), 324 deletions(-) diff --git a/app/Http/Controllers/ApiController.php b/app/Http/Controllers/ApiController.php index b1fd07b..4ed81ef 100644 --- a/app/Http/Controllers/ApiController.php +++ b/app/Http/Controllers/ApiController.php @@ -169,56 +169,6 @@ class ApiController extends Controller } } -// public function signup(Request $request) -// { -// $response = []; - -// $rules = [ -// 'name' => ['required', 'string', 'max:255'], -// 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], -// 'password' => ['required', 'confirmed', Rules\Password::defaults()], -// ]; - -// $validator = Validator::make($request->all(), $rules); -// if ($validator->fails()) { -// return response()->json(['validationError' => $validator->errors()], 422); -// } - -// $user_data = [ -// 'name' => $request->name, -// 'email' => $request->email, -// 'role' => 'student', -// 'status' => 1, -// 'password' => Hash::make($request->password), -// ]; - -// if (get_settings('student_email_verification') != 1) { -// $user_data['email_verified_at'] = now(); -// } - -// $user = User::create($user_data); - -// if (get_settings('student_email_verification') == 1) { -// $user->sendEmailVerificationNotification(); -// } - -// if ($user) { -// $response = [ -// 'success' => true, -// 'message' => 'User created successfully', -// ]; -// } else { -// $response = [ -// 'success' => false, -// 'message' => 'User creation failed', -// ]; -// } - -// event(new Registered($user)); - -// return response()->json($response); -// } - //student logout function public function logout(Request $request) { @@ -229,30 +179,6 @@ class ApiController extends Controller ], 201); } - // forgot password - // public function forgot_password(Request $request): RedirectResponse - // { - // $request->validate([ - // 'email' => 'required|email', - // ]); - - // // We will send the password reset link to this user. Once we have attempted - // // to send the link, we will examine the response then see the message we - // // need to show to the user. Finally, we'll send out a proper response. - // $status = Password::sendResetLink( - // $request->only('email') - // ); - - // if ($status == Password::RESET_LINK_SENT) { - // return back()->with('status', __($status)); - // } - - // throw ValidationException::withMessages([ - // 'email' => [trans($status)], - // ]); - // } - - public function forgot_password(Request $request) { $response = []; @@ -274,7 +200,6 @@ class ApiController extends Controller return response()->json($response, 400); } - // update user data public function update_userdata(Request $request) { @@ -331,7 +256,6 @@ class ApiController extends Controller return $response; } - // public function top_courses($top_course_id = "") { $query = Course::orderBy('id', 'desc')->where('status', 'active')->limit(10)->get(); @@ -386,23 +310,13 @@ class ApiController extends Controller $categories = array(); $categories = sub_categories($request->category_id); - // $response['sub_categories'] = $categories; - $response[0]['sub_categories'] = $categories; $courses = get_category_wise_courses($request->category_id); $response[0]['courses'] = course_data($courses); - // foreach ($response as $key => $resp) { - // $response[$key]['sub_categories'] = $categories; - // } - return $response; - - // $response['courses'] = $result; - - // return $response; } // Fetch all the categories @@ -440,9 +354,6 @@ class ApiController extends Controller // Filter course public function filter_course(Request $request) { - // $courses = $this->api_model->filter_course(); - // $this->set_response($courses, REST_Controller::HTTP_OK); - $selected_category = $request->selected_category; $selected_price = $request->selected_price; $selected_level = $request->selected_level; @@ -450,8 +361,6 @@ class ApiController extends Controller $selected_rating = $request->selected_rating; $selected_search_string = ltrim(rtrim($request->selected_search_string)); - // $course_ids = array(); - $query = Course::query(); if ($selected_search_string != "" && $selected_search_string != "null") { @@ -481,21 +390,6 @@ class ApiController extends Controller $query->where('status', 'active'); $courses = $query->get(); - // foreach ($courses as $course) { - // if ($selected_rating != "all") { - // $total_rating = $this->crud_model->get_ratings('course', $course['id'], true)->row()->rating; - // $number_of_ratings = $this->crud_model->get_ratings('course', $course['id'])->num_rows(); - // if ($number_of_ratings > 0) { - // $average_ceil_rating = ceil($total_rating / $number_of_ratings); - // if ($average_ceil_rating == $selected_rating) { - // array_push($course_ids, $course['id']); - // } - // } - // } else { - // array_push($course_ids, $course['id']); - // } - // } - // This block of codes return the required data of courses $result = array(); $result = course_data($courses); @@ -601,8 +495,6 @@ class ApiController extends Controller } else { $response = array(); } - } else { - } return $response; @@ -893,11 +785,4 @@ class ApiController extends Controller } return $response; } - - - - - - - } diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index 67f7493..97a0d61 100644 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -86,30 +86,52 @@ class RegisteredUserController extends Controller } } - $user_data = [ - 'name' => $request->name, - 'email' => $request->email, - 'role' => 'student', - 'status' => 1, - 'password' => Hash::make($request->password), - ]; + // Start database transaction for the entire registration process + $user = null; - if (get_settings('student_email_verification') != 1) { - $user_data['email_verified_at'] = Carbon::now(); + try { + DB::beginTransaction(); + + $user_data = [ + 'name' => $request->name, + 'email' => $request->email, + 'role' => 'student', + 'status' => 1, + 'password' => Hash::make($request->password), + ]; + + if (get_settings('student_email_verification') != 1) { + $user_data['email_verified_at'] = Carbon::now(); + } + + $user = User::create($user_data); + event(new Registered($user)); + + // If applying as an instructor, process the application + if ($request->has('instructor')) { + $result = $this->processInstructorApplication($request, $user); + if ($result instanceof RedirectResponse && $result->getSession()->get('error')) { + // If there was an error in instructor application, rollback + DB::rollBack(); + return $result; + } + } + + DB::commit(); + + // Log the user in after successful registration + Auth::login($user); + return redirect(RouteServiceProvider::HOME); + + } catch (\Exception $e) { + if (DB::transactionLevel() > 0) { + DB::rollBack(); + } + + Log::error('Registration error:', ['error' => $e->getMessage()]); + Session::flash('error', get_phrase('Error during registration. Please try again.')); + return redirect()->back()->withInput(); } - - $user = User::create($user_data); - event(new Registered($user)); - - // If applying as an instructor, process the application - if ($request->has('instructor')) { - return $this->processInstructorApplication($request, $user); - } - - // Log the user in after successful registration - Auth::login($user); - - return redirect(RouteServiceProvider::HOME); } private function processInstructorApplication(Request $request, User $user): RedirectResponse @@ -120,79 +142,73 @@ class RegisteredUserController extends Controller return redirect()->route('become.instructor'); } - try { - // Check NIDN with the API - $nidn = $request->nidn; - $api_url = "https://sindig.unesa.ac.id/apipddikti/api?nidn={$nidn}&auto=1"; + // Check if NIDN already exists in Instructors table with status = 1 (active) + $nidn = $request->nidn; + $existingInstructor = Instructors::where('nidn', $nidn) + ->where('status', 1) + ->first(); - $response = Http::timeout(30)->get($api_url); - $data = $response->json(); - - Log::info('API Response for NIDN: ' . $nidn, ['response' => $data]); - - // Extract matched dosen data - $matched_dosen = $data['matched_dosen'][0]; - Log::info('Instructor data to be saved:', $matched_dosen); - - if (!isset($data['ok']) || !isset($data['matched_dosen']) || count($data['matched_dosen']) == 0) { - Session::flash('error', get_phrase('NIDN not found in the system. Please check your NIDN.')); - return redirect()->back()->withInput(); - }else if ($matched_dosen['nama'] != $user->name){ - Session::flash('error', get_phrase('Name does not match PDDikti records. Please check your name.')); - return redirect()->back()->withInput(); - } - - Log::info('API Response for Nama: ' . $matched_dosen['nama'], ' || nama :',$user->name); - - // Prepare instructor data - adjust fields according to your database - $instructor = [ - 'user_id' => $user->id, - 'nidn' => $nidn, - 'name' => $matched_dosen['nama'] ?? $user->name, - 'id_sdm' => $matched_dosen['id'] ?? null, - 'id_sms' => $matched_dosen['nama_prodi'] ?? null, - 'id_pt' => $matched_dosen['nama_pt'] ?? null - ]; - - Log::info('Instructor data to be saved:', $instructor); - - // Upload document - if ($request->hasFile('document') && $request->file('document')->isValid()) { - $doc = $request->file('document'); - $fileName = 'uploads/applications/' . $user->id . Str::random(20) . '.' . $doc->extension(); - - FileUploader::upload($doc, $fileName, null, null, 300); - } else { - Session::flash('error', 'Document upload failed or no document selected.'); - return redirect()->back()->withInput(); - } - - // Prepare application data - $application = [ - 'user_id' => $user->id, - 'phone' => $request->phone, - 'description' => $request->description - ]; - - // Start database transaction to ensure both records are saved - DB::transaction(function () use ($application, $instructor) { - Application::create($application); - Instructors::create($instructor); - }); - - Session::flash('success', get_phrase('Your application has been submitted successfully.')); - - } catch (\Exception $e) { - Log::error('Instructor registration error:', [ - 'user_id' => $user->id, - 'error' => $e->getMessage(), - 'trace' => $e->getTraceAsString() - ]); - - Session::flash('error', get_phrase('Error while processing your application. Please try again later!')); + if ($existingInstructor) { + Session::flash('error', get_phrase('This NIDN is already registered as an active instructor.')); return redirect()->back()->withInput(); } + // Check NIDN with the API + $api_url = "https://sindig.unesa.ac.id/apipddikti/api?nidn={$nidn}&auto=1"; + + $response = Http::timeout(30)->get($api_url); + $data = $response->json(); + + Log::info('API Response for NIDN: ' . $nidn, ['response' => $data]); + + // Extract matched dosen data + $matched_dosen = $data['matched_dosen'][0]; + Log::info('Instructor data to be saved:', $matched_dosen); + + if (!isset($data['ok']) || !isset($data['matched_dosen']) || count($data['matched_dosen']) == 0) { + Session::flash('error', get_phrase('NIDN not found in the system. Please check your NIDN.')); + return redirect()->back()->withInput(); + } else if (strtolower($matched_dosen['nama']) != strtolower($user->name)) { + Session::flash('error', get_phrase('Name does not match PDDikti records. Please check your name.')); + return redirect()->back()->withInput(); + } + + // Prepare instructor data - adjust fields according to your database + $instructor = [ + 'user_id' => $user->id, + 'nidn' => $nidn, + 'name' => $matched_dosen['nama'] ?? $user->name, + 'id_sdm' => $matched_dosen['id'] ?? null, + 'id_sms' => $matched_dosen['nama_prodi'] ?? null, + 'id_pt' => $matched_dosen['nama_pt'] ?? null, + 'status' => 0 + ]; + + Log::info('Instructor data to be saved:', $instructor); + + // Upload document + if ($request->hasFile('document') && $request->file('document')->isValid()) { + $doc = $request->file('document'); + $fileName = 'uploads/applications/' . $user->id . Str::random(20) . '.' . $doc->extension(); + + FileUploader::upload($doc, $fileName, null, null, 300); + } else { + Session::flash('error', 'Document upload failed or no document selected.'); + return redirect()->back()->withInput(); + } + + // Prepare application data + $application = [ + 'user_id' => $user->id, + 'phone' => $request->phone, + 'description' => $request->description + ]; + + // Create both application and instructor records + Application::create($application); + Instructors::create($instructor); + + Session::flash('success', get_phrase('Your application has been submitted successfully.')); return redirect(RouteServiceProvider::HOME); } } diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index abba35e..2fdad33 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Models\Application; use App\Models\Course; use App\Models\Enrollment; +use App\Models\Instructors; use App\Models\FileUploader; use App\Models\Payout; use App\Models\Permission; @@ -16,10 +17,11 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Session; -use Illuminate\Support\Facades\Validator; +use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Response; -use Illuminate\Support\Str; +use Illuminate\Support\Facades\Validator; +use Illuminate\Support\Facades\Log; + class UsersController extends Controller { @@ -42,12 +44,28 @@ class UsersController extends Controller public function admin_store(Request $request) { - $validated = $request->validate([ - 'name' => "required", + $validator = Validator::make($request->all(), [ + 'name' => "required|max:255", 'email' => 'required|email|unique:users', 'password' => "required|min:8", + ], [ + 'name.required' => get_phrase('Name is required'), + 'name.string' => get_phrase('Name must be a valid text'), + 'name.max' => get_phrase('Name may not be greater than 255 characters'), + 'email.required' => get_phrase('Email is required'), + 'email.string' => get_phrase('Email must be a valid text'), + 'email.email' => get_phrase('Please enter a valid email address'), + 'email.unique' => get_phrase('This email is already registered. Please use a different email.'), + 'password.required' => get_phrase('Password is required'), + 'password.min' => get_phrase('Password must be at least 8 characters'), ]); + if ($validator->fails()) { + $firstError = $validator->errors()->first(); + Session::flash('error', $firstError); + return redirect()->back()->withErrors($validator)->withInput(); + } + $data['name'] = $request->name; $data['about'] = $request->about; $data['phone'] = $request->phone; @@ -90,6 +108,8 @@ class UsersController extends Controller 'email' => "required|email|unique:users,email,$id", ]); + $data = []; + $data['name'] = $request->name; $data['about'] = $request->about; $data['phone'] = $request->phone; @@ -99,7 +119,7 @@ class UsersController extends Controller $data['twitter'] = $request->twitter; $data['website'] = $request->website; $data['linkedin'] = $request->linkedin; - + if (isset($request->photo) && $request->hasFile('photo')) { remove_file(User::where('id', $id)->first()->photo); $path = "uploads/users/instructor/" . nice_file_name($request->name, $request->photo->extension()); @@ -176,21 +196,49 @@ class UsersController extends Controller } public function instructor_edit($id = '') { - $page_data['instructor'] = User::where('id', $id)->first(); + $page_data['instructor'] = User::where('users.id', $id) + ->leftJoin('instructors', 'users.id', '=', 'instructors.user_id') + ->select('users.*', 'instructors.nidn', 'instructors.status', 'instructors.id_sdm', 'instructors.id_sms', 'instructors.id_pt') + ->first(); + + if (!$page_data['instructor']) { + Session::flash('error', get_phrase('Instructor not found')); + return redirect()->route('admin.instructor.index'); + } + return view('admin.instructor.edit_instructor', $page_data); } public function instructor_store(Request $request, $id = '') { - $validated = $request->validate([ + $validator = Validator::make($request->all(), [ 'name' => "required|max:255", 'email' => 'required|email|unique:users', 'password' => "required|min:8", + 'nidn' => "required" + ], [ + 'name.required' => get_phrase('Name is required'), + 'name.string' => get_phrase('Name must be a valid text'), + 'name.max' => get_phrase('Name may not be greater than 255 characters'), + 'email.required' => get_phrase('Email is required'), + 'email.string' => get_phrase('Email must be a valid text'), + 'email.email' => get_phrase('Please enter a valid email address'), + 'email.unique' => get_phrase('This email is already registered. Please use a different email.'), + 'password.required' => get_phrase('Password is required'), + 'password.min' => get_phrase('Password must be at least 8 characters'), ]); + if ($validator->fails()) { + $firstError = $validator->errors()->first(); + Session::flash('error', $firstError); + return redirect()->back()->withErrors($validator)->withInput(); + } + if(get_settings('student_email_verification') != 1){ $data['email_verified_at'] = date('Y-m-d H:i:s'); } + $data = []; + $data['name'] = $request->name; $data['about'] = $request->about; $data['phone'] = $request->phone; @@ -213,7 +261,56 @@ class UsersController extends Controller FileUploader::upload($request->photo, $path, 400, null, 200, 200); $data['photo'] = $path; } - $user = User::create($data); + + // Check if NIDN already exists in Instructors table with status = 1 (active) + $nidn = $request->nidn; + $existingInstructor = Instructors::where('nidn', $nidn) + ->where('status', 1) + ->first(); + + if ($existingInstructor) { + Session::flash('error', get_phrase('This NIDN is already registered as an active instructor.')); + return redirect()->back()->withInput(); + } + + try { + $api_url = "https://sindig.unesa.ac.id/apipddikti/api?nidn={$nidn}&auto=1"; + + $response = Http::timeout(30)->get($api_url); + $apiResponse = $response->json(); + + Log::info('API Response for NIDN: ' . $nidn, ['response' => $apiResponse]); + + // Extract matched dosen data + $matched_dosen = $apiResponse['matched_dosen'][0]; + Log::info('Instructor data to be saved:', $matched_dosen); + + if (!isset($apiResponse['ok']) || !isset($apiResponse['matched_dosen']) || count($apiResponse['matched_dosen']) == 0) { + Session::flash('error', get_phrase('NIDN not found in the system. Please check your NIDN.')); + return redirect()->back()->withInput(); + }else if (strtolower($matched_dosen['nama']) != strtolower($request->name)) { + Session::flash('error', get_phrase('Name does not match PDDikti records. Please check your name.')); + return redirect()->back()->withInput(); + } + $user = User::create($data); + // Prepare instructor data - adjust fields according to your database + $instructor = [ + 'user_id' => $user->id, + 'nidn' => $nidn, + 'name' => $matched_dosen['nama'] ?? null, + 'id_sdm' => $matched_dosen['id'] ?? null, + 'id_sms' => $matched_dosen['nama_prodi'] ?? null, + 'id_pt' => $matched_dosen['nama_pt'] ?? null + ]; + + Log::info('Instructor data to be saved:', $instructor); + + Instructors::create($instructor); + } catch (\Exception $e) { + Log::error('Error storing NIDN for admin: ' . $e->getMessage()); + Session::flash('error', get_phrase('There was an error processing the NIDN. Please try again.')); + return redirect()->back()->withInput(); + } if(get_settings('student_email_verification') == 1) { $user->sendEmailVerificationNotification(); @@ -226,12 +323,15 @@ class UsersController extends Controller public function instructor_update(Request $request, $id = '') { - + $validated = $request->validate([ 'name' => 'required|max:255', 'email' => "required|email|unique:users,email,$id", ]); + $data = []; + $data_instructor = []; + $data['name'] = $request->name; $data['about'] = $request->about; $data['phone'] = $request->phone; @@ -243,6 +343,12 @@ class UsersController extends Controller $data['linkedin'] = $request->linkedin; $data['paymentkeys'] = json_encode($request->paymentkeys); + $data_instructor['nidn'] = $request->nidn; + $data_instructor['status'] = $request->status ?? 0; + $data_instructor['id_sdm'] = $request->id_sdm; + $data_instructor['id_sms'] = $request->id_sms; + $data_instructor['id_pt'] = $request->id_pt; + if (isset($request->photo) && $request->hasFile('photo')) { remove_file(User::where('id', $id)->first()->photo); $path = "uploads/users/instructor/" . nice_file_name($request->name, $request->photo->extension()); @@ -251,6 +357,7 @@ class UsersController extends Controller } User::where('id', $id)->update($data); + Instructors::where('user_id', $id)->update($data_instructor); Session::flash('success', get_phrase('Instructor update successfully')); return redirect()->route('admin.instructor.index'); } @@ -265,7 +372,7 @@ class UsersController extends Controller Message::whereIn('thread_id', $threads)->delete(); MessageThread::whereIn('id', $threads)->delete(); } - + User::where('id', $id)->delete(); Session::flash('success', get_phrase('Instructor delete successfully')); return redirect()->back(); @@ -415,15 +522,40 @@ class UsersController extends Controller { return view('admin.instructor.application'); } + public function instructor_application_approve($id) { - $query = Application::where('id', $id); - $update_status = $query->update(['status' => 1]); - if ($update_status) { - $user_id = $query->first(); - User::where('id', $user_id->user_id)->update(['role' => 'instructor']); - Session::flash('success', get_phrase('Application approve successfully')); + $application = Application::find($id); + + if (!$application) { + Session::flash('error', get_phrase('Application not found')); + return redirect()->back(); } + + try { + DB::beginTransaction(); + + // Update application status + $application->status = 1; + $application->save(); + + $user_id = $application->user_id; + + // Update user role to instructor + User::where('id', $user_id)->update(['role' => 'instructor']); + + // Update instructor status to 1 (active) + Instructors::where('user_id', $user_id)->update(['status' => 1]); + + DB::commit(); + Session::flash('success', get_phrase('Application approved successfully')); + + } catch (\Exception $e) { + DB::rollBack(); + Log::error('Application approval error:', ['error' => $e->getMessage()]); + Session::flash('error', get_phrase('Failed to approve application')); + } + return redirect()->back(); } public function instructor_application_delete($id) @@ -482,12 +614,28 @@ class UsersController extends Controller } public function student_store(Request $request, $id = '') { - $validated = $request->validate([ - 'name' => 'required|max:255', + $validator = Validator::make($request->all(), [ + 'name' => "required|max:255", 'email' => 'required|email|unique:users', - 'password' => 'required', + 'password' => "required|min:8", + ], [ + 'name.required' => get_phrase('Name is required'), + 'name.string' => get_phrase('Name must be a valid text'), + 'name.max' => get_phrase('Name may not be greater than 255 characters'), + 'email.required' => get_phrase('Email is required'), + 'email.string' => get_phrase('Email must be a valid text'), + 'email.email' => get_phrase('Please enter a valid email address'), + 'email.unique' => get_phrase('This email is already registered. Please use a different email.'), + 'password.required' => get_phrase('Password is required'), + 'password.min' => get_phrase('Password must be at least 8 characters'), ]); + if ($validator->fails()) { + $firstError = $validator->errors()->first(); + Session::flash('error', $firstError); + return redirect()->back()->withErrors($validator)->withInput(); + } + if(get_settings('student_email_verification') != 1){ $data['email_verified_at'] = date('Y-m-d H:i:s'); } @@ -655,7 +803,6 @@ class UsersController extends Controller { if ($request->type == 'general') { $profile['name'] = $request->name; - $profile['email'] = $request->email; $profile['facebook'] = $request->facebook; $profile['linkedin'] = $request->linkedin; $profile['twitter'] = $request->twitter; diff --git a/app/Http/Controllers/instructor/MyProfileController.php b/app/Http/Controllers/instructor/MyProfileController.php index 1abc9bd..4e7d18f 100644 --- a/app/Http/Controllers/instructor/MyProfileController.php +++ b/app/Http/Controllers/instructor/MyProfileController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\instructor; use App\Http\Controllers\Controller; use App\Models\FileUploader; use App\Models\User; +use App\Models\Instructors; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; @@ -17,13 +18,29 @@ class MyProfileController extends Controller { public function manage_profile() { - return view('instructor.profile.index'); + // Get current authenticated user + $user = Auth::user(); + + // Get instructor data based on user_id + $instructor = Instructors::where('user_id', $user->id)->first(); + + // Merge instructor data into user object + if ($instructor) { + $user->nidn = $instructor->nidn; + $user->id_sdm = $instructor->id_sdm; + $user->id_sms = $instructor->id_sms; + $user->id_pt = $instructor->id_pt; + } + + return view('instructor.profile.index', [ + 'auth' => $user + ]); } + public function manage_profile_update(Request $request) { if ($request->type == 'general') { $profile['name'] = $request->name; - $profile['email'] = $request->email; $profile['facebook'] = $request->facebook; $profile['twitter'] = $request->twitter; $profile['linkedin'] = $request->linkedin; @@ -59,7 +76,7 @@ class MyProfileController extends Controller return redirect()->back(); } - public function manage_resume() + public function manage_resume() { return view('instructor.resume.index'); } diff --git a/app/Http/Controllers/student/MyProfileController.php b/app/Http/Controllers/student/MyProfileController.php index ebde599..c788a3f 100644 --- a/app/Http/Controllers/student/MyProfileController.php +++ b/app/Http/Controllers/student/MyProfileController.php @@ -5,19 +5,37 @@ namespace App\Http\Controllers\student; use App\Http\Controllers\Controller; use App\Models\FileUploader; use App\Models\User; +use App\Models\Instructors; use Illuminate\Http\Request; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Log; + class MyProfileController extends Controller { public function index() { - $page_data['user_details'] = User::find(auth()->user()->id); + $user = User::find(auth()->user()->id); + // Check if the role is 'instructor' + if ($user->role === 'instructor') { + // Retrieve the instructor details associated with the user + $instructor = Instructors::where('user_id', $user->id)->first(); + + // Check if the instructor exists to avoid errors when accessing properties + if ($instructor) { + $user->nidn = $instructor->nidn; + $user->id_sdm = $instructor->id_sdm; + $user->id_sms = $instructor->id_sms; + $user->id_pt = $instructor->id_pt; + } + } + $page_data['user_details'] = $user; $view_path = 'frontend.' . get_frontend_settings('theme') . '.student.my_profile.index'; + return view($view_path, $page_data); } @@ -34,7 +52,6 @@ class MyProfileController extends Controller } $data['name'] = $request->name; - $data['email'] = $request->email; $data['phone'] = $request->phone; $data['website'] = $request->website; $data['facebook'] = $request->facebook; diff --git a/app/Models/Instructors.php b/app/Models/Instructors.php index 8e364b7..db4113d 100644 --- a/app/Models/Instructors.php +++ b/app/Models/Instructors.php @@ -10,6 +10,6 @@ class Instructors extends Model use HasFactory; protected $fillable = [ - 'user_id', 'nidn', 'id_sdm', 'id_sms', 'id_pt' + 'user_id', 'nidn', 'id_sdm', 'id_sms', 'id_pt', 'status' ]; } diff --git a/resources/views/admin/admin/create_admin_basic.blade.php b/resources/views/admin/admin/create_admin_basic.blade.php index ac08d76..535b069 100644 --- a/resources/views/admin/admin/create_admin_basic.blade.php +++ b/resources/views/admin/admin/create_admin_basic.blade.php @@ -1,7 +1,7 @@
- name) value="{{ $instructor->name }}" @endisset required> + name) value="{{ $instructor->name }}" @else value="{{ old('name') }}" @endisset required>
@@ -9,10 +9,7 @@
-
@@ -20,14 +17,14 @@
- phone) value="{{ $instructor->phone }}" @endisset> + phone) value="{{ $instructor->phone }}" @else value="{{ old('phone') }}" @endisset>
- address) value="{{ $instructor->address }}" @endisset> + address) value="{{ $instructor->address }}" @else value="{{ old('address') }}" @endisset>
diff --git a/resources/views/admin/admin/create_login.blade.php b/resources/views/admin/admin/create_login.blade.php index 4e1d7f1..c5656e4 100644 --- a/resources/views/admin/admin/create_login.blade.php +++ b/resources/views/admin/admin/create_login.blade.php @@ -2,7 +2,7 @@
- email) value="{{ $instructor->email }}" @endisset required> + email) value="{{ $instructor->email }}" @else value="{{ old('email') }}" @endisset required>
diff --git a/resources/views/admin/admin/create_social.blade.php b/resources/views/admin/admin/create_social.blade.php index b11b82a..f45650d 100644 --- a/resources/views/admin/admin/create_social.blade.php +++ b/resources/views/admin/admin/create_social.blade.php @@ -2,7 +2,7 @@
facebook) value="{{ $instructor->facebook }}" @endisset> + @isset($instructor->facebook) value="{{ $instructor->facebook }}" @else value="{{ old('facebook') }}" @endisset>
@@ -10,13 +10,13 @@
twitter) value="{{ $instructor->twitter }}" @endisset> + @isset($instructor->twitter) value="{{ $instructor->twitter }}" @else value="{{ old('twitter') }}" @endisset>
linkedin) value="{{ $instructor->linkedin }}" @endisset> + @isset($instructor->linkedin) value="{{ $instructor->linkedin }}" @else value="{{ old('linkedin') }}" @endisset>
diff --git a/resources/views/admin/blog/create.blade.php b/resources/views/admin/blog/create.blade.php index b30f0ba..ca24718 100644 --- a/resources/views/admin/blog/create.blade.php +++ b/resources/views/admin/blog/create.blade.php @@ -128,5 +128,33 @@ $('#preview_' + img_type).attr('src', x); }); }); + + document.getElementById('thumbnail').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); + + document.getElementById('banner').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); @endpush diff --git a/resources/views/admin/blog/edit.blade.php b/resources/views/admin/blog/edit.blade.php index 5e6afb8..81d6cf3 100644 --- a/resources/views/admin/blog/edit.blade.php +++ b/resources/views/admin/blog/edit.blade.php @@ -178,5 +178,44 @@ $('#preview_' + img_type).attr('src', x); }); }); + document.getElementById('thumbnail').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); + document.getElementById('banner').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); + document.getElementById('og_image').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); @endpush diff --git a/resources/views/admin/bootcamp/create.blade.php b/resources/views/admin/bootcamp/create.blade.php index 0994656..87648fd 100644 --- a/resources/views/admin/bootcamp/create.blade.php +++ b/resources/views/admin/bootcamp/create.blade.php @@ -171,5 +171,19 @@ } }); //End progress + + document.getElementById('thumbnail').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); @endpush diff --git a/resources/views/admin/bootcamp/edit_media.blade.php b/resources/views/admin/bootcamp/edit_media.blade.php index d0bbd56..9656628 100644 --- a/resources/views/admin/bootcamp/edit_media.blade.php +++ b/resources/views/admin/bootcamp/edit_media.blade.php @@ -38,5 +38,19 @@ $('#preview_' + img_type).attr('src', x); }); }); + + document.getElementById('thumbnail').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); @endpush diff --git a/resources/views/admin/category/create.blade.php b/resources/views/admin/category/create.blade.php index f5242c3..54ee8a3 100644 --- a/resources/views/admin/category/create.blade.php +++ b/resources/views/admin/category/create.blade.php @@ -30,11 +30,11 @@
- +
- +
@@ -54,4 +54,31 @@ $('.icon-picker').iconpicker(); } }); + // Define the file size limit in bytes (2 MB) + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get translated phrases from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + // Validate thumbnail file size + document.getElementById('thumbnail').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); + event.target.value = ''; // Clear the selected file + } + }); + + // Validate category logo file size + document.getElementById('category_logo').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); + event.target.value = ''; // Clear the selected file + } + }); diff --git a/resources/views/admin/category/edit.blade.php b/resources/views/admin/category/edit.blade.php index bfbf2c7..e078409 100644 --- a/resources/views/admin/category/edit.blade.php +++ b/resources/views/admin/category/edit.blade.php @@ -65,4 +65,32 @@ $('.ol-select2').select2({ dropdownParent: $("#ajaxModal") }); + + document.getElementById('thumbnail').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); + + document.getElementById('category_logo').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); diff --git a/resources/views/admin/course/create.blade.php b/resources/views/admin/course/create.blade.php index c926c27..4a788fd 100644 --- a/resources/views/admin/course/create.blade.php +++ b/resources/views/admin/course/create.blade.php @@ -240,5 +240,18 @@ $('#number_of_month').slideDown(); } } + document.getElementById('thumbnail').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); @endpush diff --git a/resources/views/admin/course/create_media.blade.php b/resources/views/admin/course/create_media.blade.php index 3632d1a..4914867 100644 --- a/resources/views/admin/course/create_media.blade.php +++ b/resources/views/admin/course/create_media.blade.php @@ -18,3 +18,34 @@ + + + diff --git a/resources/views/admin/course/edit_media.blade.php b/resources/views/admin/course/edit_media.blade.php index 509cc60..4ea77ec 100644 --- a/resources/views/admin/course/edit_media.blade.php +++ b/resources/views/admin/course/edit_media.blade.php @@ -42,4 +42,35 @@ {{get_phrase('Supported Video file')}}: .{{get_phrase('mp4')}} {{get_phrase('or')}} .{{get_phrase('webm')}} {{get_phrase('or')}} .{{get_phrase('ogg')}} - \ No newline at end of file + + + + diff --git a/resources/views/admin/course/html5_type_lesson_add.blade.php b/resources/views/admin/course/html5_type_lesson_add.blade.php index 4ddcbc7..b425903 100644 --- a/resources/views/admin/course/html5_type_lesson_add.blade.php +++ b/resources/views/admin/course/html5_type_lesson_add.blade.php @@ -34,5 +34,18 @@ \ No newline at end of file + initializeDurationPickers([".duration_picker"]); + document.getElementById('thumbnail').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); + diff --git a/resources/views/admin/course/html5_type_lesson_edit.blade.php b/resources/views/admin/course/html5_type_lesson_edit.blade.php index d936208..1dc7158 100644 --- a/resources/views/admin/course/html5_type_lesson_edit.blade.php +++ b/resources/views/admin/course/html5_type_lesson_edit.blade.php @@ -33,8 +33,20 @@ \ No newline at end of file + document.getElementById('thumbnail').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); + + diff --git a/resources/views/admin/instructor/create_instructor_basic.blade.php b/resources/views/admin/instructor/create_instructor_basic.blade.php index 2fd7108..cc04a17 100644 --- a/resources/views/admin/instructor/create_instructor_basic.blade.php +++ b/resources/views/admin/instructor/create_instructor_basic.blade.php @@ -1,7 +1,7 @@
- name) value="{{ $instructor->name }}" @endisset required> + name) value="{{ $instructor->name }}" @else value="{{ old('name') }}" @endisset required>
@@ -9,7 +9,7 @@
- +
@@ -17,14 +17,14 @@
- phone) value="{{ $instructor->phone }}" @endisset> + phone) value="{{ $instructor->phone }}" @else value="{{ old('phone') }}" @endisset>
- address) value="{{ $instructor->address }}" @endisset> + address) value="{{ $instructor->address }}" @else value="{{ old('address') }}" @endisset>
@@ -33,3 +33,10 @@
+
+ +
+ nidn) value="{{ $instructor->nidn }}" @else value="{{ old('nidn') }}" @endisset> +
+
+ diff --git a/resources/views/admin/instructor/create_login.blade.php b/resources/views/admin/instructor/create_login.blade.php index f325441..bb28a88 100644 --- a/resources/views/admin/instructor/create_login.blade.php +++ b/resources/views/admin/instructor/create_login.blade.php @@ -2,15 +2,15 @@
- email) value="{{ $instructor->email }}" @endisset required> + email) value="{{ $instructor->email }}" @else value="{{ old('email') }}" @endisset required>
- +
- - + email) ? ($instructor->email_verified_at ? 'checked' : '') : 'checked') ? 'checked' : '' }}> +
@@ -24,3 +24,18 @@ @endisset + + diff --git a/resources/views/admin/instructor/create_social.blade.php b/resources/views/admin/instructor/create_social.blade.php index b11b82a..79af7f7 100644 --- a/resources/views/admin/instructor/create_social.blade.php +++ b/resources/views/admin/instructor/create_social.blade.php @@ -2,7 +2,7 @@
facebook) value="{{ $instructor->facebook }}" @endisset> + @isset($instructor->facebook) value="{{ $instructor->facebook }}" @else value="{{ old('facebook') }}" @endisset>
@@ -10,13 +10,13 @@
twitter) value="{{ $instructor->twitter }}" @endisset> + @isset($instructor->twitter) value="{{ $instructor->twitter }}" @else value="{{ old('twitter') }}" @endisset>
linkedin) value="{{ $instructor->linkedin }}" @endisset> + @isset($instructor->linkedin) value="{{ $instructor->linkedin }}" @else value="{{ old('linkedin') }}" @endisset>
diff --git a/resources/views/admin/instructor/edit_instructor_basic.blade.php b/resources/views/admin/instructor/edit_instructor_basic.blade.php index 2fd7108..5969314 100644 --- a/resources/views/admin/instructor/edit_instructor_basic.blade.php +++ b/resources/views/admin/instructor/edit_instructor_basic.blade.php @@ -33,3 +33,39 @@ + +
+ +
+ nidn) value="{{ $instructor->nidn }}" @endisset> +
+
+
+ +
+ id_sdm) value="{{ $instructor->id_sdm }}" @endisset> +
+
+
+ +
+ id_sms) value="{{ $instructor->id_sms }}" @endisset> +
+
+
+ +
+ id_pt) value="{{ $instructor->id_pt }}" @endisset> +
+
+
+ +
+ +
+ status == 1 ? 'checked' : '' }}> + +
+
+
diff --git a/resources/views/admin/profile/index.blade.php b/resources/views/admin/profile/index.blade.php index ece6bc2..7c7f062 100644 --- a/resources/views/admin/profile/index.blade.php +++ b/resources/views/admin/profile/index.blade.php @@ -31,7 +31,7 @@
- +
diff --git a/resources/views/admin/student/create_login.blade.php b/resources/views/admin/student/create_login.blade.php index a44d4a8..bf6c960 100644 --- a/resources/views/admin/student/create_login.blade.php +++ b/resources/views/admin/student/create_login.blade.php @@ -1,15 +1,15 @@
- email) value="{{ $instructor->email }}" @endisset required> + email) value="{{ $student->email }}" @else value="{{ old('email') }}" @endisset required>
- +
- - + +
@@ -22,3 +22,19 @@
@endisset + + + diff --git a/resources/views/admin/student/create_social.blade.php b/resources/views/admin/student/create_social.blade.php index 98c6b19..bff4e48 100644 --- a/resources/views/admin/student/create_social.blade.php +++ b/resources/views/admin/student/create_social.blade.php @@ -1,19 +1,19 @@
- facebook) value="{{ $student->facebook }}" @endisset> + facebook) value="{{ $student->facebook }}" @else value="{{ old('facebook') }}" @endisset>
- twitter) value="{{ $student->twitter }}" @endisset> + twitter) value="{{ $student->twitter }}" @else value="{{ old('twitter') }}" @endisset>
- linkedin) value="{{ $student->linkedin }}" @endisset> + linkedin) value="{{ $student->linkedin }}" @else value="{{ old('linkedin') }}" @endisset>
diff --git a/resources/views/admin/student/create_student_basic.blade.php b/resources/views/admin/student/create_student_basic.blade.php index 86b2bf0..ebca12e 100644 --- a/resources/views/admin/student/create_student_basic.blade.php +++ b/resources/views/admin/student/create_student_basic.blade.php @@ -1,7 +1,7 @@
- name) value="{{ $student->name }}" @endisset required> + name) value="{{ $student->name }}" @else value="{{ old('name') }}" @endisset required>
@@ -9,7 +9,7 @@
- +
@@ -17,14 +17,14 @@
- phone) value="{{ $student->phone }}" @endisset> + phone ) value="{{ $student->phone }}" @else value="{{ old('phone') }}" @endisset>
- address) value="{{ $student->address }}" @endisset> + address) value="{{ $student->address }}" @else value="{{ old('address') }}" @endisset>
diff --git a/resources/views/admin/team_training/create.blade.php b/resources/views/admin/team_training/create.blade.php index 06c8923..9aa726f 100644 --- a/resources/views/admin/team_training/create.blade.php +++ b/resources/views/admin/team_training/create.blade.php @@ -295,4 +295,22 @@ }); }); + + @endpush diff --git a/resources/views/admin/team_training/edit.blade.php b/resources/views/admin/team_training/edit.blade.php index aa47852..adaa63d 100644 --- a/resources/views/admin/team_training/edit.blade.php +++ b/resources/views/admin/team_training/edit.blade.php @@ -354,4 +354,21 @@ } }); + @endpush diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index acd9dfd..90d6782 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -69,46 +69,5 @@
- @endif @endsection -@push('js') - -@endpush diff --git a/resources/views/frontend/default/knowledge_base_topics/article_single.blade.php b/resources/views/frontend/default/knowledge_base_topics/article_single.blade.php index e3d404d..f0a539f 100644 --- a/resources/views/frontend/default/knowledge_base_topics/article_single.blade.php +++ b/resources/views/frontend/default/knowledge_base_topics/article_single.blade.php @@ -52,7 +52,7 @@ $topicks = App\Models\Knowledge_base_topick::where('knowledge_base_id', $title->id)->orderBy('updated_at', 'desc')->get(); @endphp - +

{{ ucwords($title->title) }}

@foreach($topicks as $topic)

{{ucwords($topic->topic_name)}}

@@ -65,4 +65,4 @@ > @endsection -@push('js')@endpush \ No newline at end of file +@push('js')@endpush diff --git a/resources/views/frontend/default/student/my_profile/index.blade.php b/resources/views/frontend/default/student/my_profile/index.blade.php index 2b49fe6..e4296a3 100644 --- a/resources/views/frontend/default/student/my_profile/index.blade.php +++ b/resources/views/frontend/default/student/my_profile/index.blade.php @@ -10,6 +10,37 @@
@include('frontend.default.student.left_sidebar')
+ @if($user_details->role === 'instructor') +
+

{{ get_phrase('PDDikti Information') }}

+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ @endif

{{ get_phrase('Personal Information') }}

@@ -24,7 +55,7 @@
- +
diff --git a/resources/views/instructor/blog/create.blade.php b/resources/views/instructor/blog/create.blade.php index c97b836..3cd1d5b 100644 --- a/resources/views/instructor/blog/create.blade.php +++ b/resources/views/instructor/blog/create.blade.php @@ -133,4 +133,33 @@ }); }); + @endpush diff --git a/resources/views/instructor/blog/edit.blade.php b/resources/views/instructor/blog/edit.blade.php index e9e0045..488798b 100644 --- a/resources/views/instructor/blog/edit.blade.php +++ b/resources/views/instructor/blog/edit.blade.php @@ -184,4 +184,46 @@ }); }); + @endpush diff --git a/resources/views/instructor/bootcamp/create.blade.php b/resources/views/instructor/bootcamp/create.blade.php index a22237e..39f34ad 100644 --- a/resources/views/instructor/bootcamp/create.blade.php +++ b/resources/views/instructor/bootcamp/create.blade.php @@ -172,4 +172,20 @@ }); //End progress + @endpush diff --git a/resources/views/instructor/bootcamp/edit_media.blade.php b/resources/views/instructor/bootcamp/edit_media.blade.php index d0bbd56..eaf5794 100644 --- a/resources/views/instructor/bootcamp/edit_media.blade.php +++ b/resources/views/instructor/bootcamp/edit_media.blade.php @@ -39,4 +39,20 @@ }); }); + @endpush diff --git a/resources/views/instructor/course/create.blade.php b/resources/views/instructor/course/create.blade.php index 95bfd59..1bbe23e 100644 --- a/resources/views/instructor/course/create.blade.php +++ b/resources/views/instructor/course/create.blade.php @@ -204,5 +204,19 @@ $('#number_of_month').slideDown(); } } + + document.getElementById('thumbnail').addEventListener('change', function(event) { + const file = event.target.files[0]; // Get the selected file + const maxSize = 2 * 1024 * 1024; // 2 MB in bytes + + // Get the message from Laravel's get_phrase function + const maxFileSizeMessage = '{{ get_phrase('The maximum file size is 2 MB.') }}'; + + if (file && file.size > maxSize) { + // If the file is larger than 2 MB, show an alert and reset the input + alert(maxFileSizeMessage); // Use the translated message + event.target.value = ''; // Clear the selected file + } + }); @endpush diff --git a/resources/views/instructor/course/create_media.blade.php b/resources/views/instructor/course/create_media.blade.php index 6d8af20..17bd624 100644 --- a/resources/views/instructor/course/create_media.blade.php +++ b/resources/views/instructor/course/create_media.blade.php @@ -17,4 +17,21 @@
-
\ No newline at end of file +
+ + diff --git a/resources/views/instructor/course/edit_media.blade.php b/resources/views/instructor/course/edit_media.blade.php index 828f1de..1340509 100644 --- a/resources/views/instructor/course/edit_media.blade.php +++ b/resources/views/instructor/course/edit_media.blade.php @@ -43,3 +43,20 @@ {{ get_phrase('Supported Video file') }}: .{{ get_phrase('mp4') }} {{ get_phrase('or') }} .{{ get_phrase('webm') }} {{ get_phrase('or') }} .{{ get_phrase('ogg') }}
+ + diff --git a/resources/views/instructor/course/html5_type_lesson_add.blade.php b/resources/views/instructor/course/html5_type_lesson_add.blade.php index 925640f..6d2416a 100644 --- a/resources/views/instructor/course/html5_type_lesson_add.blade.php +++ b/resources/views/instructor/course/html5_type_lesson_add.blade.php @@ -33,3 +33,19 @@ "use strict"; initializeDurationPickers([".duration_picker"]); + diff --git a/resources/views/instructor/course/html5_type_lesson_edit.blade.php b/resources/views/instructor/course/html5_type_lesson_edit.blade.php index f97a462..a95e99a 100644 --- a/resources/views/instructor/course/html5_type_lesson_edit.blade.php +++ b/resources/views/instructor/course/html5_type_lesson_edit.blade.php @@ -33,3 +33,20 @@ "use strict"; initializeDurationPickers([".duration_picker"]); + + diff --git a/resources/views/instructor/profile/index.blade.php b/resources/views/instructor/profile/index.blade.php index 1ea5e7c..76dce25 100644 --- a/resources/views/instructor/profile/index.blade.php +++ b/resources/views/instructor/profile/index.blade.php @@ -31,7 +31,7 @@
- +
@@ -70,7 +70,6 @@
-
- - + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
@csrf diff --git a/resources/views/instructor/team_training/create.blade.php b/resources/views/instructor/team_training/create.blade.php index fc230ee..25eb418 100644 --- a/resources/views/instructor/team_training/create.blade.php +++ b/resources/views/instructor/team_training/create.blade.php @@ -249,4 +249,20 @@ }); }); + @endpush diff --git a/resources/views/instructor/team_training/edit.blade.php b/resources/views/instructor/team_training/edit.blade.php index 947352f..91b84e9 100644 --- a/resources/views/instructor/team_training/edit.blade.php +++ b/resources/views/instructor/team_training/edit.blade.php @@ -298,4 +298,21 @@ } }); + + @endpush diff --git a/resources/views/instructor/tutor_booking/subject_add.blade.php b/resources/views/instructor/tutor_booking/subject_add.blade.php index a13cc09..0c4cb58 100644 --- a/resources/views/instructor/tutor_booking/subject_add.blade.php +++ b/resources/views/instructor/tutor_booking/subject_add.blade.php @@ -55,5 +55,21 @@
+ @include('instructor.init') diff --git a/resources/views/instructor/tutor_booking/subject_edit.blade.php b/resources/views/instructor/tutor_booking/subject_edit.blade.php index 7be15e4..bc929de 100644 --- a/resources/views/instructor/tutor_booking/subject_edit.blade.php +++ b/resources/views/instructor/tutor_booking/subject_edit.blade.php @@ -55,4 +55,21 @@
+ + @include('instructor.init')