Ana içeriğe geç

Özel alanlar

MRBS 1.12.2 ek veritabanı sütunlarını algılayabilir ve bunları rezervasyon, oda ve kullanıcı alanları olarak kullanabilir. Bu nedenle özel alanlar, sütunları otomatik oluşturan ayarlar değil, veritabanı şemasının uzantılarıdır.

Önce yedekle

Veritabanını yedekleyin ve değişikliği üretim dışı bir örnekte test edin. MRBS yükseltmeler siteye özel sütunlar oluşturmaz, taşımaz veya kaldırmaz.

Özel alanların desteklendiği yerler

Veritabanı tablosu Amaç Önemli kural
entry Bireysel rezervasyon için ekstra veriler Aynı sütunu repeat'ye ekleyin
repeat Yinelenen bir rezervasyon için şablon verileri Adı, türü, uzunluğu, geçersiz kılınabilirliği ve varsayılan değeri entry ile aynı tutun
room Ekstra oda veya kaynak özellikleri Oda verileriyle görüntülendi ve düzenlendi
users Ekstra kullanıcı profili verileri Yalnızca veritabanı kimlik doğrulamasıyla kullanılır

Aynı repeat sütunu olmayan bir entry sütunu, yinelenen rezervasyon işlemlerinin başarısız olmasına neden olur. Çifti tek bir şema değişikliği olarak ele alın.

Sütun adında yalnızca harf, sayı ve alt çizgi kullanın. PostgreSQL ile uyumluluk için bir harf veya alt çizgi ile başlayın. participant_count veya catering gibi sabit, küçük harfli adları tercih edin.

Desteklenen veritabanı türleri

SQL türü MRBS kontrol
TEXT Çok satırlı metin
VARCHAR Maksimum uzunluğuna bağlı olarak metin girişi veya çok satırlı metin
DATE Tarih girişi
DECIMAL / NUMERIC Sayı girişi
INT Tamsayı girişi
SMALLINT / TINYINT Boole değeri olarak yorumlanan onay kutusu

PostgreSQL üzerindeki Boolean özel alanları için SMALLINT ve MySQL üzerindeki TINYINT kullanın. Diğer sütun türleri, otomatik özel alan işleme tarafından desteklenmez.

Şemaya alan ekleme

Örnekler varsayılan mrbs_ tablo önekini varsayar. $db_tbl_prefix'nin başka bir değeri varsa değiştirin.

Rezervasyon alanı

Bu örnek isteğe bağlı bir ikram seçeneği ekler:

ALTER TABLE mrbs_entry
  ADD COLUMN catering VARCHAR(32) DEFAULT NULL;

ALTER TABLE mrbs_repeat
  ADD COLUMN catering VARCHAR(32) DEFAULT NULL;

Her iki ifade de MySQL ve PostgreSQL ile çalışır. Rezervasyon formunu açmadan önce her iki tabloda ortaya çıkan tanımları doğrulayın.

Oda onay kutusu

ALTER TABLE mrbs_room
  ADD COLUMN coffee_machine TINYINT NOT NULL DEFAULT 0;
ALTER TABLE mrbs_room
  ADD COLUMN coffee_machine SMALLINT NOT NULL DEFAULT 0;

MRBS 1.12.2'de, yeni bir satır oluşturulduğunda veritabanı varsayılanı kullanılır. Özellikle zorunlu alanlar ve onay kutuları için varsayılanları bilinçli olarak seçin.

Alana çevrilmiş bir etiket verin

Geçersiz kılma olmadan, MRBS etiketi sütun adından türetir. config.inc.php'de aktif dil başına bir etiket tanımlayın:

$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['de']['entry.catering'] = 'Verpflegung';
$vocab_override['fr']['entry.catering'] = 'Restauration';
$vocab_override['es']['entry.catering'] = 'Catering';

entry/repeat çifti için yalnızca entry.catering'yi tanımlayın; hayır repeat.catering belirteci gerekli. Oda ve kullanıcı alanları room.coffee_machine ve users.phone gibi belirteçler kullanır.

Kelime geçersiz kılmaları, dil dosyaları ve çevrilmiş Yardım sayfaları için Metin ve çeviriler adresine bakın.

Giriş davranışını seçin

Sabit seçimler

$select_options ücretsiz girişi bir seçim listesiyle değiştirir:

$select_options['entry.catering'] = array(
    ''  => 'Please select',
    'c' => 'Coffee',
    's' => 'Sandwiches',
    'h' => 'Hot lunch',
);

İlişkisel bir dizi için MRBS anahtarı (c) saklar ve değeri (Coffee) görüntüler, arar ve bildirir. Bu, depolanan verileri yeniden yazmaya gerek kalmadan ifadelerin değişmesine olanak tanır.

Yalnızca rakamlardan oluşan anahtarlardan kaçının: PHP tam sayı benzeri dize anahtarlarını tam sayılara dönüştürür, böylece MRBS diziyi indekslenmiş olarak yorumlayabilir. Zorunlu bir seçimin seçilmeden başlaması gerektiğinde boş bir seçim ekleyin.

$select_options, entry.name, entry.description, özel entry alanları ve özel users alanları için desteklenir. Yapılandırılmış seçenek başlıkları site genelindeki dizelerdir; alan etiketinin kendisi $vocab_override ile çevrilebilir.

Ücretsiz girişli öneriler

Başka bir değeri kabul ederken öneriler için $datalist_options kullanın:

$datalist_options['entry.catering'] = array(
    'Coffee',
    'Sandwiches',
    'Hot lunch',
);

$select_options ile aynı alanları destekler. İlişkisel veri listelerinde, saklanan anahtar kullanıcılar için şaşırtıcı olabilir; bu nedenle, kullanımdan önce davranışı test edin.

Zorunlu, özel ve doğrulanmış alanlar

Her yerde bir alanı zorunlu hale getirin:

$is_mandatory_field['entry.catering'] = true;

Veya yalnızca veritabanı kimlikleri 1 ve 3 olan alanlarda:

$is_mandatory_field['entry.catering'] = array(1, 3);

Alana özgü zorunlu kurallar yalnızca entry alanlar için geçerlidir. Gönderimden önce zorunlu bir onay kutusu işaretlenmelidir.

Özel özel alanlar entry ve users için desteklenir:

$is_private_field['entry.internal_notes'] = true;
$is_private_field['users.phone'] = true;

Bu, değeri yalnızca özel ayırmalar etkinleştirildiğinde ve yapılandırıldığında korur. İlgili her rolü test edin; Hassas verileri en aza indirmek yerine kullanıcı arayüzü gizliliğini kullanmayın.

Desen doğrulama şu anda özel users metin alanlarıyla sınırlıdır:

$pattern['users.zip_code'] = '^[0-9]{5}(?:-[0-9]{4})?$';
$vocab_override['en']['users.zip_code.oninvalid'] =
    'Enter a ZIP code such as 12345 or 12345-6789';

Giriş metni alanlarında çevrilmiş yer tutucular bulunabilir:

$vocab_override['en']['entry.catering.placeholder'] =
    'State allergies or special requirements';

İstemci tarafı kalıpları geri bildirimi iyileştirir ancak alanı sırlar veya güvenilmeyen işaretlemeler için güvenli bir yere dönüştürmez.

Kontrol alanı sırası

Rezervasyon alanlarını açıkça oluşturma ve görüntüleme sayfalarına yerleştirin:

$edit_entry_field_order = array(
    'name',
    'catering',
    'description',
);

Listelenmeyen alanlar normal sırasına göre eklenir. Rapor arama formuna özel alanlar da yerleştirilebilir:

$report_search_field_order = array(
    'report_start',
    'report_end',
    'catering',
    'roommatch',
);

Tam örnek

Her iki rezervasyon tablosuna catering ekledikten sonra:

$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['de']['entry.catering'] = 'Verpflegung';
$vocab_override['fr']['entry.catering'] = 'Restauration';
$vocab_override['es']['entry.catering'] = 'Catering';

$select_options['entry.catering'] = array(
    ''  => '—',
    'c' => 'Coffee',
    's' => 'Sandwiches',
    'h' => 'Hot lunch',
);

$is_mandatory_field['entry.catering'] = array(1, 3);
$edit_entry_field_order = array('name', 'catering', 'description');
$report_search_field_order = array(
    'report_start',
    'report_end',
    'catering',
);

Bu örnekteki seçenek başlıkları her kullanıcı arayüzü dilinde aynı kalır. Çevrilmiş seçenek altyazıları bir gereklilikse, $select_options'nin bunları otomatik olarak çevireceğini varsaymak yerine siteye özgü bir uzantı tasarlayın ve test edin.

Değiştirme, kaldırma ve yükseltme

Bir sütunu kısaltmadan veya türünü değiştirmeden önce mevcut değerleri inceleyin ve dönüşümü test edin. Bir alanı kaldırmadan önce, yapılandırma referanslarını kaldırın, bu değişikliği dağıtın, uygulamanın çalıştığını onaylayın ve ancak bundan sonra sütunu normal veritabanı değişiklik sürecine bırakın. Rezervasyon alanları için hem entry hem de repeat değerini değiştirin.

Her özel sütunu sitenin operasyon belgelerine kaydedin ve her MRBS yükseltmeden sonra yeniden kontrol edin. Standart MRBS şema komut dosyaları bu sütunlara sahip değildir.

Doğrulama kontrol listesi

  • entry ve repeat tanımları her rezervasyon alanı için aynıdır.
  • Rezervasyon oluşturma, düzenleme, görüntüleme, kopyalama ve silme işlemleri çalışır.
  • Yinelenen bir seri ve bir oluşum doğru şekilde düzenlenebilir.
  • Veritabanı varsayılanları yeni kayıtlara uygulanır.
  • Gerekli, özel, seçme, veri listesi ve doğrulama davranışı, role ve alana göre çalışır.
  • Etiketler yapılandırılmış her dilde görünür.
  • Arama, raporlar, e-posta, takvim dışa aktarma ve içe/dışa aktarma güvenli değerleri gösterir.
  • Oda ve kullanıcı yönetimi yalnızca amaçlanan alanları görüntüler.
  • Yedekleme ve geri yükleme prosedürleri genişletilmiş şemayı içerir.