Added quiz new features
This commit is contained in:
47
resources/views/admin/daily-quests/create.blade.php
Normal file
47
resources/views/admin/daily-quests/create.blade.php
Normal file
@@ -0,0 +1,47 @@
|
||||
@extends('admin.layouts.app')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
@include('admin.layouts.errors')
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title mb-4">افزودن چالش روزانه جدید</h4>
|
||||
<form action="{{ route('daily-quests.store') }}" method="post">
|
||||
@csrf
|
||||
<div class="mb-4">
|
||||
<label>عنوان چالش (مثلاً: پیروزی در ۲ دوئل)</label>
|
||||
<input class="form-control" name="title" type="text" required>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label>نوع چالش</label>
|
||||
<select name="quest_type" class="form-control" required>
|
||||
<option value="duel_win">پیروزی در دوئل (PvP)</option>
|
||||
<option value="answer_tests">پاسخ به تستها</option>
|
||||
<option value="perfect_score">کسب نمره کامل در آزمون</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label>مقدار مورد نیاز (مثلاً: 2)</label>
|
||||
<input class="form-control" name="required_amount" type="number" min="1" required>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label>پاداش (XP)</label>
|
||||
<input class="form-control" name="reward_xp" type="number" min="10" step="10" required>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch mb-4" dir="ltr">
|
||||
<input type="checkbox" class="custom-control-input" id="isActiveSwitch" name="is_active"
|
||||
{{ (isset($daily_quest) && $daily_quest->is_active) || !isset($daily_quest) ? 'checked' : '' }}>
|
||||
<label class="custom-control-label" for="isActiveSwitch">چالش فعال باشد؟</label>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary w-100">ثبت چالش</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
108
resources/views/admin/daily-quests/index.blade.php
Normal file
108
resources/views/admin/daily-quests/index.blade.php
Normal file
@@ -0,0 +1,108 @@
|
||||
@extends('admin.layouts.app')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<h4 class="card-title mb-0">مدیریت چالشهای روزانه (لیگ)</h4>
|
||||
<div>
|
||||
<!-- NEW: Suggestion Modal Trigger Button -->
|
||||
<button type="button" class="btn btn-warning text-dark font-weight-bold mr-2" data-toggle="modal" data-target="#suggestionsModal">
|
||||
<i class="mdi mdi-lightbulb-on mr-1"></i> پیشنهاد هوشمند
|
||||
</button>
|
||||
<a href="{{ route('daily-quests.create') }}" class="btn btn-success">افزودن چالش دستی</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered dt-responsive nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>شناسه</th>
|
||||
<th>عنوان چالش</th>
|
||||
<th>نوع چالش</th>
|
||||
<th>مقدار مورد نیاز</th>
|
||||
<th>پاداش (XP)</th>
|
||||
<th>وضعیت</th>
|
||||
<th>عملیات</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($quests as $item)
|
||||
<tr>
|
||||
<td>{{ $item->id }}</td>
|
||||
<td>{{ $item->title }}</td>
|
||||
<td><span class="badge badge-info">{{ $item->quest_type }}</span></td>
|
||||
<td>{{ $item->required_amount }}</td>
|
||||
<td><span class="text-success font-weight-bold">+{{ $item->reward_xp }} XP</span></td>
|
||||
<td>
|
||||
<span class="badge badge-{{ $item->is_active ? 'success' : 'danger' }}">
|
||||
{{ $item->is_active ? 'فعال' : 'غیرفعال' }}
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<form action="{{ route('daily-quests.destroy', $item->id) }}" method="POST" style="display: inline;">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('آیا از حذف این چالش مطمئن هستید؟')">حذف</button>
|
||||
</form>
|
||||
<a href="{{ route('daily-quests.edit', $item->id) }}" class="btn btn-primary btn-sm">ویرایش</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-center mt-3">
|
||||
{{ $quests->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- NEW: Suggestions Modal -->
|
||||
<div class="modal fade" id="suggestionsModal" tabindex="-1" role="dialog" aria-labelledby="suggestionsModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header bg-warning">
|
||||
<h5 class="modal-title text-dark" id="suggestionsModalLabel"><i class="mdi mdi-lightbulb-on mr-1"></i> پیشنهادهای از پیش آماده</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body bg-light">
|
||||
<p class="text-muted mb-4">با کلیک روی دکمه «افزودن»، این چالش فوراً به دیتابیس شما اضافه شده و فعال میگردد.</p>
|
||||
|
||||
@foreach($suggestions as $suggestion)
|
||||
<div class="card mb-3 border-warning shadow-sm">
|
||||
<div class="card-body d-flex justify-content-between align-items-center p-3">
|
||||
<div>
|
||||
<h5 class="mb-1 font-size-16">{{ $suggestion['title'] }}</h5>
|
||||
<span class="text-muted font-size-13">نوع: <strong>{{ $suggestion['quest_type'] }}</strong> | مقدار: <strong>{{ $suggestion['required_amount'] }}</strong> | پاداش: <span class="text-success font-weight-bold">+{{ $suggestion['reward_xp'] }} XP</span></span>
|
||||
</div>
|
||||
<!-- Reusing your store route seamlessly -->
|
||||
<form action="{{ route('daily-quests.store') }}" method="POST" class="m-0">
|
||||
@csrf
|
||||
<input type="hidden" name="title" value="{{ $suggestion['title'] }}">
|
||||
<input type="hidden" name="quest_type" value="{{ $suggestion['quest_type'] }}">
|
||||
<input type="hidden" name="required_amount" value="{{ $suggestion['required_amount'] }}">
|
||||
<input type="hidden" name="reward_xp" value="{{ $suggestion['reward_xp'] }}">
|
||||
<input type="hidden" name="is_active" value="1">
|
||||
<button type="submit" class="btn btn-sm btn-dark px-3">افزودن +</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
60
resources/views/admin/daily-quests/update.blade.php
Normal file
60
resources/views/admin/daily-quests/update.blade.php
Normal file
@@ -0,0 +1,60 @@
|
||||
@extends('admin.layouts.app')
|
||||
@section('content')
|
||||
<div class="row">
|
||||
@include('admin.layouts.errors')
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title mb-4">ویرایش چالش روزانه</h4>
|
||||
<form action="{{ route('daily-quests.update', $daily_quest->id) }}" method="post">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
|
||||
<div class="mb-4">
|
||||
<label>عنوان چالش</label>
|
||||
<input class="form-control" name="title" type="text" value="{{ $daily_quest->title }}"
|
||||
required>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label>نوع چالش</label>
|
||||
<select name="quest_type" class="form-control" required>
|
||||
<option value="duel_win" {{ $daily_quest->quest_type == 'duel_win' ? 'selected' : '' }}>
|
||||
پیروزی در دوئل (PvP)
|
||||
</option>
|
||||
<option
|
||||
value="answer_tests" {{ $daily_quest->quest_type == 'answer_tests' ? 'selected' : '' }}>
|
||||
پاسخ به تستها
|
||||
</option>
|
||||
<option
|
||||
value="perfect_score" {{ $daily_quest->quest_type == 'perfect_score' ? 'selected' : '' }}>
|
||||
کسب نمره کامل در آزمون
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label>مقدار مورد نیاز</label>
|
||||
<input class="form-control" name="required_amount" type="number"
|
||||
value="{{ $daily_quest->required_amount }}" required>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label>پاداش (XP)</label>
|
||||
<input class="form-control" name="reward_xp" type="number"
|
||||
value="{{ $daily_quest->reward_xp }}" required>
|
||||
</div>
|
||||
|
||||
<div class="custom-control custom-switch mb-4" dir="ltr">
|
||||
<input type="checkbox" class="custom-control-input" id="isActiveSwitch" name="is_active"
|
||||
{{ (isset($daily_quest) && $daily_quest->is_active) || !isset($daily_quest) ? 'checked' : '' }}>
|
||||
<label class="custom-control-label" for="isActiveSwitch">چالش فعال باشد؟</label>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary w-100">ویرایش چالش</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -67,6 +67,16 @@
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="javascript: void(0);" class="has-arrow waves-effect">
|
||||
<i class="mdi mdi-gamepad-variant"></i>
|
||||
<span>لیگ و چالشها</span>
|
||||
</a>
|
||||
<ul class="sub-menu" aria-expanded="false">
|
||||
<li><a href="{{ route('daily-quests.index') }}">لیست چالشهای روزانه</a></li>
|
||||
<li><a href="{{ route('daily-quests.create') }}">افزودن چالش جدید</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="javascript:%20void(0);" class="has-arrow waves-effect">
|
||||
|
||||
Reference in New Issue
Block a user