199 lines
10 KiB
PHP
199 lines
10 KiB
PHP
@extends('admin.layouts.app')
|
||
@section('title', 'Plan Düzenle')
|
||
@section('page-title', 'Plan Düzenle: ' . $plan->name)
|
||
|
||
@push('styles')
|
||
<style>
|
||
.perk-label { display:flex; align-items:flex-start; gap:10px; padding:10px 12px; border-radius:var(--radius-sm); border:1px solid var(--border); background:var(--surface2); cursor:pointer; transition:border-color .12s, background .12s; }
|
||
.perk-label:hover { border-color:var(--border2); background:rgba(255,255,255,.04); }
|
||
.perk-label:has(input:checked) { border-color:var(--accent); background:var(--accent-dim); }
|
||
.perk-category { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:1px; color:var(--accent-lt); margin-bottom:10px; }
|
||
</style>
|
||
@endpush
|
||
|
||
@section('content')
|
||
|
||
<div class="mb-4">
|
||
<a href="{{ route('admin.plans.index') }}" class="btn btn-secondary btn-sm">
|
||
<i class="bi bi-arrow-left"></i> Planlara Dön
|
||
</a>
|
||
</div>
|
||
|
||
<div class="row justify-content-center">
|
||
<div class="col-xl-8 col-lg-9">
|
||
<form method="POST" action="{{ route('admin.plans.update', $plan) }}">
|
||
@csrf @method('PUT')
|
||
|
||
{{-- Temel --}}
|
||
<div class="card mb-3">
|
||
<div class="card-header">
|
||
<i class="bi bi-star" style="color:var(--warning)"></i>
|
||
<h6>Plan Bilgileri</h6>
|
||
</div>
|
||
<div class="card-body">
|
||
<div class="mb-3">
|
||
<label class="form-label">Plan Adı <span style="color:var(--danger)">*</span></label>
|
||
<input type="text" name="name" class="form-control" value="{{ old('name',$plan->name) }}" required>
|
||
</div>
|
||
<div class="mb-4">
|
||
<label class="form-label">Açıklama</label>
|
||
<textarea name="description" class="form-control" rows="2">{{ old('description',$plan->description) }}</textarea>
|
||
</div>
|
||
<div class="row g-3">
|
||
<div class="col-md-3">
|
||
<label class="form-label">Fiyat (₺)</label>
|
||
<input type="number" name="price" class="form-control" step="0.01" value="{{ old('price',$plan->price) }}" required>
|
||
</div>
|
||
<div class="col-md-3">
|
||
<label class="form-label">Süre (gün)</label>
|
||
<input type="number" name="duration_days" class="form-control" value="{{ old('duration_days',$plan->duration_days) }}" required>
|
||
</div>
|
||
<div class="col-md-3">
|
||
<label class="form-label">Deneme (gün)</label>
|
||
<input type="number" name="trial_days" class="form-control" value="{{ old('trial_days',$plan->trial_days??0) }}" min="0">
|
||
</div>
|
||
<div class="col-md-3">
|
||
<label class="form-label">Sıralama</label>
|
||
<input type="number" name="sort_order" class="form-control" value="{{ old('sort_order',$plan->sort_order) }}">
|
||
</div>
|
||
</div>
|
||
<hr style="border-color:rgba(255,255,255,.07);margin:18px 0">
|
||
<div class="row g-3">
|
||
<div class="col-md-6">
|
||
<label class="form-label">Satın Alma Linki</label>
|
||
<input type="url" name="purchase_link" class="form-control" placeholder="https://..." value="{{ old('purchase_link',$plan->purchase_link) }}">
|
||
<div class="form-text">Kullanıcı "Satın Al" butonuna tıklayınca buraya yönlendirilir.</div>
|
||
</div>
|
||
<div class="col-md-3">
|
||
<label class="form-label">Rozet Etiketi</label>
|
||
<input type="text" name="badge_label" class="form-control" placeholder="EN POPÜLER" value="{{ old('badge_label',$plan->badge_label) }}" maxlength="32">
|
||
<div class="form-text">Plan kartının üstüne çıkar. Boş = rozet yok.</div>
|
||
</div>
|
||
<div class="col-md-3">
|
||
<label class="form-label">Vurgu Rengi</label>
|
||
<input type="text" name="accent_color" class="form-control" placeholder="cyan / pink / gold" value="{{ old('accent_color',$plan->accent_color) }}" maxlength="16">
|
||
<div class="form-text">cyan, pink veya gold</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
{{-- Özellikler --}}
|
||
<div class="card mb-3">
|
||
<div class="card-header">
|
||
<i class="bi bi-list-check" style="color:var(--success)"></i>
|
||
<h6>Görünür Özellikler</h6>
|
||
</div>
|
||
<div class="card-body">
|
||
<div id="features-wrap" class="d-flex flex-column gap-2">
|
||
@foreach(old('features',$plan->features??[]) as $f)
|
||
<div class="input-group">
|
||
<input type="text" name="features[]" class="form-control" value="{{ $f }}">
|
||
<button type="button" class="btn btn-outline-danger" onclick="this.parentElement.remove()"><i class="bi bi-dash-lg"></i></button>
|
||
</div>
|
||
@endforeach
|
||
</div>
|
||
<button type="button" class="btn btn-secondary btn-sm mt-2" onclick="addFeature()">
|
||
<i class="bi bi-plus-circle"></i> Özellik Ekle
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
{{-- Perkler --}}
|
||
<div class="card mb-3">
|
||
<div class="card-header">
|
||
<i class="bi bi-key" style="color:var(--accent-lt)"></i>
|
||
<h6>Premium Özellikler (Perk'ler)</h6>
|
||
</div>
|
||
<div class="card-body">
|
||
@php $currentPerks = old('perks', array_keys(array_filter($plan->perks ?? []))); @endphp
|
||
@foreach($allPerks as $category => $perks)
|
||
<div class="mb-4">
|
||
<div class="perk-category">{{ $category }}</div>
|
||
<div class="row g-2">
|
||
@foreach($perks as $key => $meta)
|
||
<div class="col-md-6">
|
||
<label class="perk-label">
|
||
<input type="checkbox" name="perks[]" value="{{ $key }}" class="form-check-input mt-0 flex-shrink-0"
|
||
{{ in_array($key,$currentPerks) ? 'checked' : '' }}>
|
||
<div>
|
||
<div style="font-size:13px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:6px">
|
||
<i class="bi {{ $meta['icon'] }}" style="color:var(--accent-lt);font-size:13px"></i>
|
||
{{ $meta['name'] }}
|
||
</div>
|
||
<div style="font-size:12px;color:var(--text2);margin-top:2px">{{ $meta['description'] }}</div>
|
||
</div>
|
||
</label>
|
||
</div>
|
||
@endforeach
|
||
</div>
|
||
</div>
|
||
@endforeach
|
||
</div>
|
||
</div>
|
||
|
||
{{-- Görünürlük --}}
|
||
<div class="card mb-4">
|
||
<div class="card-header">
|
||
<i class="bi bi-eye" style="color:var(--info)"></i>
|
||
<h6>Görünürlük Ayarları</h6>
|
||
</div>
|
||
<div class="card-body">
|
||
<div class="row g-3 mb-3">
|
||
<div class="col-md-6">
|
||
<div class="d-flex align-items-center justify-content-between p-3 rounded" style="background:var(--surface2);border:1px solid var(--border)">
|
||
<div>
|
||
<div style="font-size:13.5px;font-weight:600;color:var(--text)">Aktif</div>
|
||
<div style="font-size:12px;color:var(--text2)">Plan kullanılabilir</div>
|
||
</div>
|
||
<div class="form-check form-switch mb-0">
|
||
<input class="form-check-input" type="checkbox" name="is_active" value="1" id="is_active" role="switch" {{ $plan->is_active?'checked':'' }}>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<div class="d-flex align-items-center justify-content-between p-3 rounded" style="background:var(--surface2);border:1px solid var(--border)">
|
||
<div>
|
||
<div style="font-size:13.5px;font-weight:600;color:var(--text)">Herkese Görünür</div>
|
||
<div style="font-size:12px;color:var(--text2)">Premium sayfasında listele</div>
|
||
</div>
|
||
<div class="form-check form-switch mb-0">
|
||
<input class="form-check-input" type="checkbox" name="is_public" value="1" id="is_public" role="switch" {{ ($plan->is_public??true)?'checked':'' }}>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div>
|
||
<label class="form-label">Görünürlük Bitiş Tarihi <span style="color:var(--text2);font-size:11px">(opsiyonel)</span></label>
|
||
<input type="datetime-local" name="visible_until" class="form-control"
|
||
value="{{ old('visible_until',$plan->visible_until?$plan->visible_until->format('Y-m-d\TH:i'):'') }}">
|
||
<div class="form-text">Bu tarihten sonra plan otomatik kaldırılır. Boş = süresiz.</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="d-flex gap-2">
|
||
<button type="submit" class="btn btn-primary flex-grow-1 btn-lg">
|
||
<i class="bi bi-floppy"></i> Değişiklikleri Kaydet
|
||
</button>
|
||
<a href="{{ route('admin.plans.index') }}" class="btn btn-secondary">İptal</a>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
@endsection
|
||
|
||
@push('scripts')
|
||
<script>
|
||
function addFeature() {
|
||
const wrap = document.getElementById('features-wrap');
|
||
const div = document.createElement('div');
|
||
div.className = 'input-group';
|
||
div.innerHTML = `<input type="text" name="features[]" class="form-control" placeholder="Özellik...">
|
||
<button type="button" class="btn btn-outline-danger" onclick="this.parentElement.remove()"><i class="bi bi-dash-lg"></i></button>`;
|
||
wrap.appendChild(div);
|
||
}
|
||
</script>
|
||
@endpush
|