/* quicktagsekle.js */
/* global tinymce, jQuery */
;(function ($, t) {
	'use strict';
	
	if (typeof t === 'undefined') { return; }
	
	/* ====================== İÇERİK TANIMLARI ====================== */
	
	// Gruplanmış alanlar (UI'da alt menüler halinde gösterilir)
	var GROUPS = {
		company: [
			['firma_adi', '[company_name]'],
			['firma_adresi', '[company_address]'],
			['firma_tel', '[company_phone]'],
			['firma_vergi', '[company_tax_office]'],
			['firma_vergi_no', '[company_tax_number]']
		],
		customer: [
			['adi', '[customer_first_name]'],
			['soyadi', '[customer_last_name]'],
			['ad_soyad', '[customer_full_name]'],
			['musteri_adres', '[billing_address]'],
			['musteri_telefon', '[phone]'],
			['musteri_mail', '[email_address]'],
			['musteri_tc', '[national_id]']
		],
		customerCompany: [
			['sirket_bilgileri', '[company_info]'],
			['alicisirket', '[customer_company]'],
			['alicisirketvergino', '[customer_company_tax_number]'],
			['alicisirketvergidairesi', '[customer_company_tax_office]']
		],
		shipping: [
			['kargo_ad_soyad', '[shipping_full_name]'],
			['kargo_sirket_ismi', '[shipping_company]'],
			['kargo_adress', '[shipping_address]']
		],
		order: [
			['satinalinan_urunler', '[purchased_products]'],
			['sepet_toplami', '[cart_total]'],
			['odemeyontemi', '[payment_method]'],
			['bugun_tarih', '[contract_date]'],
			['musteri_ip', '[customer_ip]']
		]
	};
	
	/* ====================== ÇEVİRİLER ====================== */
	
	// Türkçe
	t.addI18n('tr', {
		'myplugin.title': 'Sözleşme Kısayolları',
		
		'korkmaz_contract.group.company': 'Firma',
		'korkmaz_contract.group.customer': 'Müşteri',
		'korkmaz_contract.group.customerCompany': 'Müşteri Şirketi',
		'korkmaz_contract.group.shipping': 'Teslimat (Kargo)',
		'korkmaz_contract.group.order': 'Sipariş',
		
		'korkmaz_contract.adi': 'Adı',
		'korkmaz_contract.soyadi': 'Soyadı',
		'korkmaz_contract.ad_soyad': 'Ad Soyad',
		'korkmaz_contract.firma_adi': 'Firmanızın İsmi',
		'korkmaz_contract.firma_adresi': 'Firmanızın Adresi',
		'korkmaz_contract.firma_tel': 'Firmanızın Tel No',
		'korkmaz_contract.firma_vergi': 'Firmanızın Vergi Dairesi',
		'korkmaz_contract.firma_vergi_no': 'Firmanızın Vergi No',
		'korkmaz_contract.sirket_bilgileri': 'Müşteri Şirket Bilgileri',
		'korkmaz_contract.alicisirket': 'Müşteri Şirket Adı',
		'korkmaz_contract.alicisirketvergino': 'Müşteri Şirket Vergi No',
		'korkmaz_contract.alicisirketvergidairesi': 'Müşteri Şirket Vergi Dairesi',
		'korkmaz_contract.musteri_adres': 'Müşterinin Adresi',
		'korkmaz_contract.musteri_telefon': 'Müşteri GSM Numarası',
		'korkmaz_contract.musteri_mail': 'Müşteri Mail Adresi',
		'korkmaz_contract.musteri_tc': 'Müşteri Tc Kimlik No',
		'korkmaz_contract.satinalinan_urunler': 'Satın Alınan Ürünler',
		'korkmaz_contract.sepet_toplami': 'Sepet Toplam Tutar',
		'korkmaz_contract.kargo_ad_soyad': 'Farklı Teslimat Ad Soyad',
		'korkmaz_contract.kargo_sirket_ismi': 'Farklı Teslimat Şirket İsmi (Varsa)',
		'korkmaz_contract.kargo_adress': 'Farklı Teslimat Adresi',
		'korkmaz_contract.bugun_tarih': 'Sözleşme Tarihi',
		'korkmaz_contract.musteri_ip': 'Müşteri IP Adresi',
		'korkmaz_contract.odemeyontemi': 'Ödeme Yöntemi'
	});
	
	// English
	t.addI18n('en', {
		'myplugin.title': 'Contract Shortcodes',
		
		'korkmaz_contract.group.company': 'Company',
		'korkmaz_contract.group.customer': 'Customer',
		'korkmaz_contract.group.customerCompany': 'Customer Company',
		'korkmaz_contract.group.shipping': 'Shipping',
		'korkmaz_contract.group.order': 'Order',
		
		'korkmaz_contract.adi': 'Customer First Name',
		'korkmaz_contract.soyadi': 'Customer Last Name',
		'korkmaz_contract.ad_soyad': 'Customer Full Name',
		'korkmaz_contract.firma_adi': 'Our Company',
		'korkmaz_contract.firma_adresi': 'Our Company Address',
		'korkmaz_contract.firma_tel': 'Our Company Phone',
		'korkmaz_contract.firma_vergi': 'Our Company Tax Office',
		'korkmaz_contract.firma_vergi_no': 'Our Company Tax Number',
		'korkmaz_contract.sirket_bilgileri': 'Customer Company Info',
		'korkmaz_contract.alicisirket': 'Customer Company Name',
		'korkmaz_contract.alicisirketvergino': 'Customer Company Tax Number',
		'korkmaz_contract.alicisirketvergidairesi': 'Customer Company Tax Department',
		'korkmaz_contract.musteri_adres': 'Customer Address',
		'korkmaz_contract.musteri_telefon': 'Customer Phone Number',
		'korkmaz_contract.musteri_mail': 'Customer Email Address',
		'korkmaz_contract.musteri_tc': 'Customer Identity No',
		'korkmaz_contract.satinalinan_urunler': 'Purchased Products',
		'korkmaz_contract.sepet_toplami': 'Cart Total',
		'korkmaz_contract.kargo_ad_soyad': 'Different Delivery Name',
		'korkmaz_contract.kargo_sirket_ismi': 'Different Delivery Company (if any)',
		'korkmaz_contract.kargo_adress': 'Different Delivery Address',
		'korkmaz_contract.bugun_tarih': 'Contract Date',
		'korkmaz_contract.musteri_ip': 'Customer IP Address',
		'korkmaz_contract.odemeyontemi': 'Payment Method'
	});
	
	/* ====================== YARDIMCI FONKSİYONLAR ====================== */
	
	function buildMenuItems(editor) {
		function leaf(key, token) {
			var textKey = 'korkmaz_contract.' + key;
			return {
				text: t.translate(textKey),
				onclick: function () { editor.insertContent(token); }
			};
		}
		
		function group(titleKey, pairs) {
			return {
				text: t.translate('korkmaz_contract.group.' + titleKey),
				menu: pairs.map(function (p) { return leaf(p[0], p[1]); })
			};
		}
		
		return [
			group('company', GROUPS.company),
			group('customer', GROUPS.customer),
			group('customerCompany', GROUPS.customerCompany),
			group('shipping', GROUPS.shipping),
			group('order', GROUPS.order)
		];
	}
	
	/* ====================== PLUGIN KAYDI (v4 & v5 UYUMLU) ====================== */
	
	t.PluginManager.add('wdm_mce_button', function (editor) {
		// TinyMCE 5+
		if (editor.ui && editor.ui.registry && typeof editor.ui.registry.addMenuButton === 'function') {
			editor.ui.registry.addMenuButton('wdm_mce_button', {
				text: t.translate('myplugin.title'),
				fetch: function (callback) {
					var items = buildMenuItems(editor).map(function (grp) {
						// v5 format dönüştürme
						return {
							type: 'nestedmenuitem',
							text: grp.text,
							getSubmenuItems: function () {
								return grp.menu.map(function (it) {
									return {
										type: 'menuitem',
										text: it.text,
										onAction: it.onclick
									};
								});
							}
						};
					});
					callback(items);
				}
			});
			return;
		}
		
		// TinyMCE 4 (WordPress Classic Editor)
		editor.addButton('wdm_mce_button', {
			text: t.translate('myplugin.title'),
			icon: false,
			type: 'menubutton',
			menu: buildMenuItems(editor)
		});
	});
	
})(jQuery, (typeof window !== 'undefined' ? window.tinymce : undefined));
