1344 lines
50 KiB
PHP
1344 lines
50 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use App\Models\Setting;
|
||
use Illuminate\Database\Seeder;
|
||
|
||
class SettingSeeder extends Seeder
|
||
{
|
||
/**
|
||
* Run the database seeds.
|
||
*/
|
||
public function run(): void
|
||
{
|
||
$settings = [
|
||
// ==========================================
|
||
// GENEL AYARLAR (general)
|
||
// ==========================================
|
||
[
|
||
'key' => 'site_name',
|
||
'value' => 'Citrus Platform',
|
||
'type' => 'string',
|
||
'group' => 'general',
|
||
'label' => 'Site Adı',
|
||
'description' => 'Web sitesinin başlığı',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'site_description',
|
||
'value' => 'Modern ve güvenilir web platformu',
|
||
'type' => 'text',
|
||
'group' => 'general',
|
||
'label' => 'Site Açıklaması',
|
||
'description' => 'Web sitesinin kısa açıklaması',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'site_keywords',
|
||
'value' => json_encode(['citrus', 'platform', 'web', 'modern']),
|
||
'type' => 'tags_input',
|
||
'group' => 'general',
|
||
'label' => 'Site Anahtar Kelimeleri',
|
||
'description' => 'SEO için anahtar kelimeler (virgülle ayrılmış)',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'site_logo',
|
||
'value' => '',
|
||
'type' => 'file',
|
||
'group' => 'general',
|
||
'label' => 'Site Logosu',
|
||
'description' => 'Üst kısımda görünecek logo dosyası',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'site_favicon',
|
||
'value' => '',
|
||
'type' => 'file',
|
||
'group' => 'general',
|
||
'label' => 'Site Favicon',
|
||
'description' => 'Tarayıcı sekmesinde görünecek favicon',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'site_version',
|
||
'value' => '1.0.0',
|
||
'type' => 'string',
|
||
'group' => 'general',
|
||
'label' => 'Site Versiyonu',
|
||
'description' => 'Uygulama versiyon numarası',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'site_url',
|
||
'value' => 'https://citrus.truncgil.com',
|
||
'type' => 'string',
|
||
'group' => 'general',
|
||
'label' => 'Site URL',
|
||
'description' => 'Web sitesinin tam adresi',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'default_language',
|
||
'value' => 'tr',
|
||
'type' => 'toggle_buttons',
|
||
'group' => 'general',
|
||
'label' => 'Varsayılan Dil',
|
||
'description' => 'Site varsayılan dili',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'available_languages',
|
||
'value' => json_encode(['tr', 'en']),
|
||
'type' => 'checkbox_list',
|
||
'group' => 'general',
|
||
'label' => 'Aktif Diller',
|
||
'description' => 'Sitede kullanılacak diller',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'maintenance_mode',
|
||
'value' => '0',
|
||
'type' => 'boolean',
|
||
'group' => 'general',
|
||
'label' => 'Bakım Modu',
|
||
'description' => 'Site bakım modunda mı?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'maintenance_message',
|
||
'value' => '<h1>Site Bakımda</h1><p>Yakında döneceğiz...</p>',
|
||
'type' => 'rich_editor',
|
||
'group' => 'general',
|
||
'label' => 'Bakım Modu Mesajı',
|
||
'description' => 'Bakım modundayken gösterilecek mesaj',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'copyright_text',
|
||
'value' => '© 2024 Citrus Platform. Tüm hakları saklıdır.',
|
||
'type' => 'text',
|
||
'group' => 'general',
|
||
'label' => 'Telif Hakkı Metni',
|
||
'description' => 'Alt kısımda görünecek telif hakkı metni',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'contact_phone',
|
||
'value' => '+90 555 555 55 55',
|
||
'type' => 'string',
|
||
'group' => 'general',
|
||
'label' => 'İletişim Telefonu',
|
||
'description' => 'İletişim telefon numarası',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'contact_email',
|
||
'value' => 'info@citrus.truncgil.com',
|
||
'type' => 'string',
|
||
'group' => 'general',
|
||
'label' => 'İletişim E-posta',
|
||
'description' => 'İletişim e-posta adresi',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'contact_address',
|
||
'value' => 'İstanbul, Türkiye',
|
||
'type' => 'text',
|
||
'group' => 'general',
|
||
'label' => 'İletişim Adresi',
|
||
'description' => 'İletişim fiziksel adresi',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// TEMA VE RENK AYARLARI (theme)
|
||
// ==========================================
|
||
[
|
||
'key' => 'theme_primary_color',
|
||
'value' => '#3b82f6',
|
||
'type' => 'color_picker',
|
||
'group' => 'theme',
|
||
'label' => 'Primary Color',
|
||
'description' => 'Ana tema rengi (Tailwind/Bootstrap primary)',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'theme_secondary_color',
|
||
'value' => '#6b7280',
|
||
'type' => 'color_picker',
|
||
'group' => 'theme',
|
||
'label' => 'Secondary Color',
|
||
'description' => 'İkincil tema rengi',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'theme_success_color',
|
||
'value' => '#10b981',
|
||
'type' => 'color_picker',
|
||
'group' => 'theme',
|
||
'label' => 'Success Color',
|
||
'description' => 'Başarı mesajları için renk',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'theme_danger_color',
|
||
'value' => '#ef4444',
|
||
'type' => 'color_picker',
|
||
'group' => 'theme',
|
||
'label' => 'Danger Color',
|
||
'description' => 'Hata ve uyarı mesajları için renk',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'theme_warning_color',
|
||
'value' => '#f59e0b',
|
||
'type' => 'color_picker',
|
||
'group' => 'theme',
|
||
'label' => 'Warning Color',
|
||
'description' => 'Uyarı mesajları için renk',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'theme_info_color',
|
||
'value' => '#06b6d4',
|
||
'type' => 'color_picker',
|
||
'group' => 'theme',
|
||
'label' => 'Info Color',
|
||
'description' => 'Bilgi mesajları için renk',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'theme_light_color',
|
||
'value' => '#f9fafb',
|
||
'type' => 'color_picker',
|
||
'group' => 'theme',
|
||
'label' => 'Light Color',
|
||
'description' => 'Açık renk',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'theme_dark_color',
|
||
'value' => '#1f2937',
|
||
'type' => 'color_picker',
|
||
'group' => 'theme',
|
||
'label' => 'Dark Color',
|
||
'description' => 'Koyu renk',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'theme_body_background',
|
||
'value' => '#ffffff',
|
||
'type' => 'color_picker',
|
||
'group' => 'theme',
|
||
'label' => 'Body Background Color',
|
||
'description' => 'Sayfa arka plan rengi',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'theme_text_color',
|
||
'value' => '#111827',
|
||
'type' => 'color_picker',
|
||
'group' => 'theme',
|
||
'label' => 'Text Color',
|
||
'description' => 'Varsayılan metin rengi',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'theme_mode',
|
||
'value' => 'light',
|
||
'type' => 'toggle_buttons',
|
||
'group' => 'theme',
|
||
'label' => 'Tema Modu',
|
||
'description' => 'Açık, koyu veya otomatik tema',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'theme_border_radius',
|
||
'value' => '8',
|
||
'type' => 'slider',
|
||
'group' => 'theme',
|
||
'label' => 'Border Radius (px)',
|
||
'description' => 'Öğelerin köşe yuvarlaklığı (0-20 arası)',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'custom_css',
|
||
'value' => '/* Özel CSS kodlarınızı buraya ekleyin */',
|
||
'type' => 'code_editor',
|
||
'group' => 'theme',
|
||
'label' => 'Özel CSS',
|
||
'description' => 'Site genelinde uygulanacak özel CSS kodları',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'custom_js',
|
||
'value' => '// Özel JavaScript kodlarınızı buraya ekleyin',
|
||
'type' => 'code_editor',
|
||
'group' => 'theme',
|
||
'label' => 'Özel JavaScript',
|
||
'description' => 'Site genelinde uygulanacak özel JavaScript kodları',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// LOKALİZASYON AYARLARI (localization)
|
||
// ==========================================
|
||
[
|
||
'key' => 'timezone',
|
||
'value' => 'Europe/Istanbul',
|
||
'type' => 'string',
|
||
'group' => 'localization',
|
||
'label' => 'Zaman Dilimi',
|
||
'description' => 'Sunucu zaman dilimi (Europe/Istanbul, UTC, vb.)',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'date_format',
|
||
'value' => 'd/m/Y',
|
||
'type' => 'radio',
|
||
'group' => 'localization',
|
||
'label' => 'Tarih Formatı',
|
||
'description' => 'Tarih gösterim formatı',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'time_format',
|
||
'value' => '24',
|
||
'type' => 'toggle_buttons',
|
||
'group' => 'localization',
|
||
'label' => 'Saat Formatı',
|
||
'description' => '12 veya 24 saatlik format',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'currency',
|
||
'value' => 'TRY',
|
||
'type' => 'string',
|
||
'group' => 'localization',
|
||
'label' => 'Para Birimi',
|
||
'description' => 'Varsayılan para birimi kodu (TRY, USD, EUR)',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'currency_symbol',
|
||
'value' => '₺',
|
||
'type' => 'string',
|
||
'group' => 'localization',
|
||
'label' => 'Para Birimi Sembolü',
|
||
'description' => 'Para birimi sembolü',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'currency_position',
|
||
'value' => 'after',
|
||
'type' => 'radio',
|
||
'group' => 'localization',
|
||
'label' => 'Para Birimi Konumu',
|
||
'description' => 'Sembolün fiyatın önünde mi arkasında mı olacağı',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'thousands_separator',
|
||
'value' => '.',
|
||
'type' => 'string',
|
||
'group' => 'localization',
|
||
'label' => 'Binlik Ayırıcı',
|
||
'description' => 'Sayılarda binlik ayırıcı karakter',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'decimal_separator',
|
||
'value' => ',',
|
||
'type' => 'string',
|
||
'group' => 'localization',
|
||
'label' => 'Ondalık Ayırıcı',
|
||
'description' => 'Sayılarda ondalık ayırıcı karakter',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'decimal_places',
|
||
'value' => '2',
|
||
'type' => 'integer',
|
||
'group' => 'localization',
|
||
'label' => 'Ondalık Basamak Sayısı',
|
||
'description' => 'Para birimi için ondalık basamak sayısı',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'week_start_day',
|
||
'value' => 'Monday',
|
||
'type' => 'radio',
|
||
'group' => 'localization',
|
||
'label' => 'Haftanın İlk Günü',
|
||
'description' => 'Haftanın başlangıç günü',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'calendar_type',
|
||
'value' => 'Gregorian',
|
||
'type' => 'toggle_buttons',
|
||
'group' => 'localization',
|
||
'label' => 'Takvim Tipi',
|
||
'description' => 'Gregorian veya Miladi takvim',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// E-POSTA AYARLARI (email)
|
||
// ==========================================
|
||
[
|
||
'key' => 'mail_driver',
|
||
'value' => 'smtp',
|
||
'type' => 'radio',
|
||
'group' => 'email',
|
||
'label' => 'Mail Driver',
|
||
'description' => 'E-posta gönderim yöntemi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'mail_host',
|
||
'value' => 'smtp.gmail.com',
|
||
'type' => 'string',
|
||
'group' => 'email',
|
||
'label' => 'SMTP Host',
|
||
'description' => 'SMTP sunucu adresi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'mail_port',
|
||
'value' => '587',
|
||
'type' => 'integer',
|
||
'group' => 'email',
|
||
'label' => 'SMTP Port',
|
||
'description' => 'SMTP port numarası',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'mail_username',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'email',
|
||
'label' => 'SMTP Kullanıcı Adı',
|
||
'description' => 'SMTP kullanıcı adı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'mail_password',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'email',
|
||
'label' => 'SMTP Şifre',
|
||
'description' => 'SMTP şifresi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'mail_encryption',
|
||
'value' => 'tls',
|
||
'type' => 'toggle_buttons',
|
||
'group' => 'email',
|
||
'label' => 'SMTP Şifreleme',
|
||
'description' => 'TLS veya SSL şifreleme',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'mail_from_address',
|
||
'value' => 'noreply@citrus.truncgil.com',
|
||
'type' => 'string',
|
||
'group' => 'email',
|
||
'label' => 'Gönderen E-posta Adresi',
|
||
'description' => 'Sistem e-postalarının gönderileceği adres',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'mail_from_name',
|
||
'value' => 'Citrus Platform',
|
||
'type' => 'string',
|
||
'group' => 'email',
|
||
'label' => 'Gönderen İsim',
|
||
'description' => 'Sistem e-postalarının gönderen adı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'mail_notifications_enabled',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'email',
|
||
'label' => 'E-posta Bildirimleri Aktif',
|
||
'description' => 'E-posta bildirimleri gönderilsin mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// SOSYAL MEDYA AYARLARI (social)
|
||
// ==========================================
|
||
[
|
||
'key' => 'social_links',
|
||
'value' => json_encode([
|
||
'facebook' => 'https://facebook.com/',
|
||
'twitter' => 'https://twitter.com/',
|
||
'instagram' => 'https://instagram.com/',
|
||
'linkedin' => 'https://linkedin.com/',
|
||
'youtube' => '',
|
||
'tiktok' => '',
|
||
'github' => '',
|
||
'discord' => '',
|
||
]),
|
||
'type' => 'key_value',
|
||
'group' => 'social',
|
||
'label' => 'Sosyal Medya Linkleri',
|
||
'description' => 'Sosyal medya platformlarının URL\'leri',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// FRONTEND theme AYARLARI (theme)
|
||
// ==========================================
|
||
[
|
||
'key' => 'default_meta_title',
|
||
'value' => 'Truncgil Citrus - Modern Web Çözümleri',
|
||
'type' => 'string',
|
||
'group' => 'theme',
|
||
'label' => 'Varsayılan Meta Başlık',
|
||
'description' => 'Sayfalarda özel meta başlık yoksa kullanılacak',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'default_meta_description',
|
||
'value' => 'Yenilikçi teknoloji çözümleri ile geleceği şekillendiriyoruz',
|
||
'type' => 'text',
|
||
'group' => 'theme',
|
||
'label' => 'Varsayılan Meta Açıklama',
|
||
'description' => 'Sayfalarda özel meta açıklama yoksa kullanılacak',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'default_meta_image',
|
||
'value' => 'assets/img/demos/f1.png',
|
||
'type' => 'string',
|
||
'group' => 'theme',
|
||
'label' => 'Varsayılan Meta Görsel',
|
||
'description' => 'Open Graph için varsayılan görsel',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'logo_path',
|
||
'value' => 'assets/img/truncgil-yatay.svg',
|
||
'type' => 'string',
|
||
'group' => 'theme',
|
||
'label' => 'Logo Yolu',
|
||
'description' => 'Header\'da görünecek logo',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'logo_light',
|
||
'value' => '',
|
||
'type' => 'file',
|
||
'group' => 'theme',
|
||
'label' => 'Light Logo',
|
||
'description' => 'Koyu zeminler için açık renkli logo',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'logo_dark',
|
||
'value' => '',
|
||
'type' => 'file',
|
||
'group' => 'theme',
|
||
'label' => 'Dark Logo',
|
||
'description' => 'Açık zeminler için koyu renkli logo',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'favicon_path',
|
||
'value' => 'assets/img/favicon.ico',
|
||
'type' => 'string',
|
||
'group' => 'theme',
|
||
'label' => 'Favicon Yolu',
|
||
'description' => 'Tarayıcı favicon',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// SEO AYARLARI (seo)
|
||
// ==========================================
|
||
[
|
||
'key' => 'seo_meta_title',
|
||
'value' => 'Citrus Platform - Modern Web Platformu',
|
||
'type' => 'string',
|
||
'group' => 'seo',
|
||
'label' => 'SEO Meta Başlık',
|
||
'description' => 'Varsayılan SEO meta başlığı',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'seo_meta_description',
|
||
'value' => 'Modern ve güvenilir web platformu',
|
||
'type' => 'text',
|
||
'group' => 'seo',
|
||
'label' => 'SEO Meta Açıklama',
|
||
'description' => 'Varsayılan SEO meta açıklaması',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'seo_meta_keywords',
|
||
'value' => json_encode(['citrus', 'platform', 'web', 'modern', 'laravel']),
|
||
'type' => 'tags_input',
|
||
'group' => 'seo',
|
||
'label' => 'SEO Meta Anahtar Kelimeler',
|
||
'description' => 'Varsayılan SEO meta anahtar kelimeler',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'seo_google_analytics_id',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'seo',
|
||
'label' => 'Google Analytics ID',
|
||
'description' => 'Google Analytics takip kodu',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'seo_google_tag_manager_id',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'seo',
|
||
'label' => 'Google Tag Manager ID',
|
||
'description' => 'Google Tag Manager takip kodu',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'seo_bing_webmaster',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'seo',
|
||
'label' => 'Bing Webmaster Tools',
|
||
'description' => 'Bing Webmaster doğrulama kodu',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'seo_robots_txt',
|
||
'value' => "User-agent: *\nAllow: /",
|
||
'type' => 'code_editor',
|
||
'group' => 'seo',
|
||
'label' => 'Robots.txt İçeriği',
|
||
'description' => 'Robots.txt dosyası içeriği',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'seo_sitemap_url',
|
||
'value' => '/sitemap.xml',
|
||
'type' => 'string',
|
||
'group' => 'seo',
|
||
'label' => 'Sitemap URL',
|
||
'description' => 'XML sitemap dosyasının adresi',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'seo_canonical_url',
|
||
'value' => 'https://citrus.truncgil.com',
|
||
'type' => 'string',
|
||
'group' => 'seo',
|
||
'label' => 'Canonical URL',
|
||
'description' => 'Varsayılan canonical URL',
|
||
'is_public' => true,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'seo_opengraph_enabled',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'seo',
|
||
'label' => 'Open Graph Etiketleri',
|
||
'description' => 'Open Graph meta etiketleri aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// GÜVENLİK AYARLARI (security)
|
||
// ==========================================
|
||
[
|
||
'key' => 'security_max_login_attempts',
|
||
'value' => '5',
|
||
'type' => 'slider',
|
||
'group' => 'security',
|
||
'label' => 'Maksimum Giriş Denemesi',
|
||
'description' => 'Kullanıcı hesabının kilitlenmesi için maksimum giriş denemesi (3-10 arası)',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'security_session_timeout',
|
||
'value' => '120',
|
||
'type' => 'integer',
|
||
'group' => 'security',
|
||
'label' => 'Oturum Zaman Aşımı (dakika)',
|
||
'description' => 'Kullanıcı oturumunun zaman aşımına uğrayacağı süre',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'security_2fa_enabled',
|
||
'value' => '0',
|
||
'type' => 'boolean',
|
||
'group' => 'security',
|
||
'label' => 'İki Faktörlü Doğrulama',
|
||
'description' => 'İki faktörlü doğrulama aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'security_password_min_length',
|
||
'value' => '8',
|
||
'type' => 'slider',
|
||
'group' => 'security',
|
||
'label' => 'Şifre Minimum Uzunluk',
|
||
'description' => 'Şifre için minimum karakter sayısı (6-20 arası)',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'security_password_require_uppercase',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'security',
|
||
'label' => 'Şifrede Büyük Harf Zorunlu',
|
||
'description' => 'Şifrede en az bir büyük harf olmalı mı?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'security_password_require_lowercase',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'security',
|
||
'label' => 'Şifrede Küçük Harf Zorunlu',
|
||
'description' => 'Şifrede en az bir küçük harf olmalı mı?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'security_password_require_numbers',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'security',
|
||
'label' => 'Şifrede Rakam Zorunlu',
|
||
'description' => 'Şifrede en az bir rakam olmalı mı?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'security_password_require_symbols',
|
||
'value' => '0',
|
||
'type' => 'boolean',
|
||
'group' => 'security',
|
||
'label' => 'Şifrede Özel Karakter Zorunlu',
|
||
'description' => 'Şifrede en az bir özel karakter olmalı mı?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'security_api_rate_limit',
|
||
'value' => '60',
|
||
'type' => 'integer',
|
||
'group' => 'security',
|
||
'label' => 'API Rate Limit',
|
||
'description' => 'Dakikada maksimum API isteği sayısı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'security_ip_whitelist',
|
||
'value' => json_encode([]),
|
||
'type' => 'tags_input',
|
||
'group' => 'security',
|
||
'label' => 'IP Whitelist',
|
||
'description' => 'Yönetim paneline erişebilecek IP adresleri (boş = tüm IP\'ler)',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'security_csrf_protection',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'security',
|
||
'label' => 'CSRF Koruması',
|
||
'description' => 'CSRF koruması aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// DOSYA YÜKLEME AYARLARI (upload)
|
||
// ==========================================
|
||
[
|
||
'key' => 'upload_max_size',
|
||
'value' => '10',
|
||
'type' => 'slider',
|
||
'group' => 'upload',
|
||
'label' => 'Maksimum Yükleme Boyutu (MB)',
|
||
'description' => 'Dosya yükleme için maksimum boyut (1-100 MB arası)',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'upload_allowed_image_types',
|
||
'value' => json_encode(['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg']),
|
||
'type' => 'tags_input',
|
||
'group' => 'upload',
|
||
'label' => 'İzin Verilen Resim Formatları',
|
||
'description' => 'Yüklenebilecek resim dosya türleri',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'upload_allowed_document_types',
|
||
'value' => json_encode(['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt']),
|
||
'type' => 'tags_input',
|
||
'group' => 'upload',
|
||
'label' => 'İzin Verilen Belge Formatları',
|
||
'description' => 'Yüklenebilecek belge dosya türleri',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'upload_allowed_video_types',
|
||
'value' => json_encode(['mp4', 'avi', 'mov', 'wmv', 'flv', 'webm']),
|
||
'type' => 'tags_input',
|
||
'group' => 'upload',
|
||
'label' => 'İzin Verilen Video Formatları',
|
||
'description' => 'Yüklenebilecek video dosya türleri',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'upload_image_quality',
|
||
'value' => '85',
|
||
'type' => 'slider',
|
||
'group' => 'upload',
|
||
'label' => 'Resim Kalitesi (%)',
|
||
'description' => 'Yüklenen resimlerin sıkıştırma kalitesi (1-100 arası)',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'upload_storage_driver',
|
||
'value' => 'local',
|
||
'type' => 'radio',
|
||
'group' => 'upload',
|
||
'label' => 'Storage Driver',
|
||
'description' => 'Dosya saklama yöntemi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'upload_cdn_url',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'upload',
|
||
'label' => 'CDN URL',
|
||
'description' => 'CDN sunucusu adresi (boş bırakılabilir)',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'upload_folder_structure',
|
||
'value' => 'date',
|
||
'type' => 'radio',
|
||
'group' => 'upload',
|
||
'label' => 'Klasör Yapısı',
|
||
'description' => 'Dosyaların saklanma klasör yapısı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// BİLDİRİM AYARLARI (notification)
|
||
// ==========================================
|
||
[
|
||
'key' => 'notification_email_enabled',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'notification',
|
||
'label' => 'E-posta Bildirimleri',
|
||
'description' => 'E-posta bildirimleri aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'notification_sms_enabled',
|
||
'value' => '0',
|
||
'type' => 'boolean',
|
||
'group' => 'notification',
|
||
'label' => 'SMS Bildirimleri',
|
||
'description' => 'SMS bildirimleri aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'notification_push_enabled',
|
||
'value' => '0',
|
||
'type' => 'boolean',
|
||
'group' => 'notification',
|
||
'label' => 'Push Bildirimleri',
|
||
'description' => 'Push bildirimleri aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'notification_in_app_enabled',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'notification',
|
||
'label' => 'İn-App Bildirimleri',
|
||
'description' => 'Uygulama içi bildirimler aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'notification_channels',
|
||
'value' => json_encode(['email', 'in_app']),
|
||
'type' => 'checkbox_list',
|
||
'group' => 'notification',
|
||
'label' => 'Aktif Bildirim Kanalları',
|
||
'description' => 'Aktif olacak bildirim kanalları',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// CACHE AYARLARI (cache)
|
||
// ==========================================
|
||
[
|
||
'key' => 'cache_driver',
|
||
'value' => 'file',
|
||
'type' => 'radio',
|
||
'group' => 'cache',
|
||
'label' => 'Cache Driver',
|
||
'description' => 'Cache saklama yöntemi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'cache_duration',
|
||
'value' => '60',
|
||
'type' => 'integer',
|
||
'group' => 'cache',
|
||
'label' => 'Cache Süresi (dakika)',
|
||
'description' => 'Cache\'in geçerlilik süresi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'cache_enabled',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'cache',
|
||
'label' => 'Cache Aktif',
|
||
'description' => 'Cache sistemi aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'cache_prefix',
|
||
'value' => 'citrus_',
|
||
'type' => 'string',
|
||
'group' => 'cache',
|
||
'label' => 'Cache Prefix',
|
||
'description' => 'Cache anahtarları için önek',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// ÖDEME AYARLARI (payment)
|
||
// ==========================================
|
||
[
|
||
'key' => 'payment_default_gateway',
|
||
'value' => 'stripe',
|
||
'type' => 'radio',
|
||
'group' => 'payment',
|
||
'label' => 'Varsayılan Ödeme Gateway\'i',
|
||
'description' => 'Varsayılan ödeme servisi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'payment_test_mode',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'payment',
|
||
'label' => 'Test Modu',
|
||
'description' => 'Ödeme test modunda mı?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'payment_currency',
|
||
'value' => 'TRY',
|
||
'type' => 'string',
|
||
'group' => 'payment',
|
||
'label' => 'Ödeme Para Birimi',
|
||
'description' => 'Ödemeler için para birimi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'payment_tax_rate',
|
||
'value' => '20',
|
||
'type' => 'float',
|
||
'group' => 'payment',
|
||
'label' => 'Vergi Oranı (%)',
|
||
'description' => 'Varsayılan vergi oranı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'payment_methods',
|
||
'value' => json_encode(['credit_card', 'bank_transfer']),
|
||
'type' => 'checkbox_list',
|
||
'group' => 'payment',
|
||
'label' => 'Ödeme Yöntemleri',
|
||
'description' => 'Aktif ödeme yöntemleri',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// API AYARLARI (api)
|
||
// ==========================================
|
||
[
|
||
'key' => 'api_rate_limit',
|
||
'value' => '60',
|
||
'type' => 'integer',
|
||
'group' => 'api',
|
||
'label' => 'API Rate Limit',
|
||
'description' => 'Dakikada maksimum API isteği sayısı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'api_auth_method',
|
||
'value' => 'jwt',
|
||
'type' => 'radio',
|
||
'group' => 'api',
|
||
'label' => 'API Kimlik Doğrulama Yöntemi',
|
||
'description' => 'API için kimlik doğrulama yöntemi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'api_key_expiration',
|
||
'value' => '30',
|
||
'type' => 'integer',
|
||
'group' => 'api',
|
||
'label' => 'API Key Geçerlilik Süresi (gün)',
|
||
'description' => 'API anahtarının geçerlilik süresi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'api_versioning_enabled',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'api',
|
||
'label' => 'API Versiyonlama',
|
||
'description' => 'API versiyonlama aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// LOGGING AYARLARI (logging)
|
||
// ==========================================
|
||
[
|
||
'key' => 'log_level',
|
||
'value' => 'info',
|
||
'type' => 'radio',
|
||
'group' => 'logging',
|
||
'label' => 'Log Seviyesi',
|
||
'description' => 'Kaydedilecek log seviyesi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'log_driver',
|
||
'value' => 'daily',
|
||
'type' => 'radio',
|
||
'group' => 'logging',
|
||
'label' => 'Log Driver',
|
||
'description' => 'Log saklama yöntemi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'log_retention_days',
|
||
'value' => '30',
|
||
'type' => 'integer',
|
||
'group' => 'logging',
|
||
'label' => 'Log Saklama Süresi (gün)',
|
||
'description' => 'Log dosyalarının saklanma süresi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'log_error_reporting',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'logging',
|
||
'label' => 'Hata Raporlama',
|
||
'description' => 'Hata raporlama aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// PERFORMANS AYARLARI (performance)
|
||
// ==========================================
|
||
[
|
||
'key' => 'performance_query_cache_enabled',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'performance',
|
||
'label' => 'Query Cache Aktif',
|
||
'description' => 'Veritabanı sorgu cache\'i aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'performance_asset_minification',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'performance',
|
||
'label' => 'Asset Minification',
|
||
'description' => 'CSS/JS dosyalarının küçültülmesi aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'performance_cdn_enabled',
|
||
'value' => '0',
|
||
'type' => 'boolean',
|
||
'group' => 'performance',
|
||
'label' => 'CDN Aktif',
|
||
'description' => 'CDN kullanımı aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'performance_lazy_loading_enabled',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'performance',
|
||
'label' => 'Lazy Loading Aktif',
|
||
'description' => 'Resimler için lazy loading aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'performance_image_optimization',
|
||
'value' => '1',
|
||
'type' => 'boolean',
|
||
'group' => 'performance',
|
||
'label' => 'Resim Optimizasyonu',
|
||
'description' => 'Otomatik resim optimizasyonu aktif mi?',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ==========================================
|
||
// ENTEGRASYON AYARLARI (integration)
|
||
// ==========================================
|
||
[
|
||
'key' => 'integration_recaptcha_site_key',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'integration',
|
||
'label' => 'reCAPTCHA Site Key',
|
||
'description' => 'Google reCAPTCHA site anahtarı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'integration_recaptcha_secret_key',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'integration',
|
||
'label' => 'reCAPTCHA Secret Key',
|
||
'description' => 'Google reCAPTCHA gizli anahtarı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'integration_google_maps_api_key',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'integration',
|
||
'label' => 'Google Maps API Key',
|
||
'description' => 'Google Maps API anahtarı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'integration_stripe_public_key',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'integration',
|
||
'label' => 'Stripe Public Key',
|
||
'description' => 'Stripe public anahtarı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'integration_stripe_secret_key',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'integration',
|
||
'label' => 'Stripe Secret Key',
|
||
'description' => 'Stripe gizli anahtarı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'integration_paypal_client_id',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'integration',
|
||
'label' => 'PayPal Client ID',
|
||
'description' => 'PayPal client ID',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'integration_paypal_secret',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'integration',
|
||
'label' => 'PayPal Secret',
|
||
'description' => 'PayPal secret anahtarı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'integration_aws_access_key',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'integration',
|
||
'label' => 'AWS Access Key',
|
||
'description' => 'Amazon Web Services erişim anahtarı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'integration_aws_secret_key',
|
||
'value' => '',
|
||
'type' => 'string',
|
||
'group' => 'integration',
|
||
'label' => 'AWS Secret Key',
|
||
'description' => 'Amazon Web Services gizli anahtarı',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'key' => 'integration_aws_region',
|
||
'value' => 'us-east-1',
|
||
'type' => 'string',
|
||
'group' => 'integration',
|
||
'label' => 'AWS Region',
|
||
'description' => 'Amazon Web Services bölgesi',
|
||
'is_public' => false,
|
||
'is_active' => true,
|
||
],
|
||
];
|
||
|
||
foreach ($settings as $setting) {
|
||
$existing = Setting::where('key', $setting['key'])->first();
|
||
if ($existing) {
|
||
$updated = false;
|
||
// Sadece değişmişse güncelle
|
||
foreach ($setting as $field => $value) {
|
||
if ($existing->$field != $value) {
|
||
$updated = true;
|
||
break;
|
||
}
|
||
}
|
||
if ($updated) {
|
||
$existing->update($setting);
|
||
$this->command->info("Setting updated: " . $setting['key']);
|
||
} else {
|
||
$this->command->info("Setting unchanged: " . $setting['key']);
|
||
}
|
||
} else {
|
||
Setting::create($setting);
|
||
$this->command->info("Setting created: " . $setting['key']);
|
||
}
|
||
}
|
||
}
|
||
}
|