Manual:Page content models/tr

MediaWiki 1.21 ile sunulan ContentHandler, vikimetin dışında yeni içerik modelleri eklemenize izin verir. Viki sayfalarının vikimetin dışındaki verilerden oluşmasını ve herhangi bir şekilde temsil edilmesini mümkün kılar. Örneğin: Markdown, reStructuredText, icalendar veya özel bir XML biçimi. Bu içerik modellerinin görüntülenmesi ve düzenlenmesi özel yollarla (örn. farklı sözdizimi vurgulama veya tamamen yeni veri giriş formları) ele alınabilir.

Bu sayfada, bir uzantıda yeni bir içerik modelinin nasıl oluşturulacağı açıklanmaktadır. Genel uzantı geliştirme uygulamalarına biraz aşinalık olduğunu varsayar. Gereksinimlerin kısa bir özeti için, bu sayfanın altındaki Özet bölümüne bakın.

Örnekler için anlamsız bir "Goat" içerik modeli kullanılacaktır. parçası olan DataPages uzantısını da inceleyebilirsiniz.

Kayıt
Her şeyden önce, içerik modelinin adını ve işleyici sınıfını dosyanıza ekleyin:


 * Buradaki sol taraftaki değer içerik türünün adıdır, istediğiniz herhangi bir benzersiz dize olabilir ve beş yerleşik içerik türü ile birlikte yaşar: 'wikitext', 'JavaScript', 'CSS', 'plain text', 'JSON'. Bu değer, Special:ChangeContentModel ve sayfa bilgisi ​​gibi yerlerde kullanıcılara gösterilir.
 * Sağ taraftaki değer, genişleyen bir sınıfın tam nitelikli adıdır.

Bu,  ve   olmak üzere iki yeni sınıfın $3 ile eklenmesini gerektirecektir (ad alanları  değilse). Bu sınıflar hakkında daha fazla bilgi aşağıda verilmiştir.

İsteğe bağlı içerik modeli sabitleri
Yukarıdaki 'goat' dizesi içerik modelidir (genellikle kodda  olarak adlandırılır) ve genellikle sabit olarak da tanımlanır. Bu sabitler tüm yerleşik içerik modelleri için tanımlanmıştır ve birçok belge "CONTENT_MODEL_XXX" sabitlerini ifade eder. Onları tanımlamadıysanız, bu biraz kafa karıştırıcı olabilir. Tanım, extension.json içindeki geri çağrı öğesi aracılığıyla yapılmalıdır. Örneğin:

içinde:

içinde:

Bunu bu şekilde yapmak zorunda değilsiniz ve yalnızca dizeyi kullanabilirsiniz.

İçerik modellerini sayfalara atama
Pages can have their content type manually changed, but it's useful to have them default to the correct one. Two common ways of doing this are by namespace, and by file extension.

Tüm bir viki ad alanının varsayılan içerik modeline sahip olmasını istiyorsanız, bunu extension.json içinde olduğu gibi tanımlayabilirsiniz:

Note that published extensions should register the namespace IDs they use ( and   above) on the extension default namespaces page.

Ya da, viki sayfası adına yarı dosya türü bir sonek ekleyerek içerik türünü belirlemek istiyorsanız, kancasını kullanabilirsiniz. Örneğin:

ContentHandler
Tanımlanacak bir sonraki şey, bu içerik türünün hangi formatta (bu durumda metin) depolanacağını da belirlediğimiz GoatContentHandler sınıfıdır. ContentHandlers, herhangi bir belirli sayfa içeriği hakkında hiçbir şey bilmiyor, ancak içeriğin genel yapısını ve depolanmasını belirliyor.

İçerik
GoatContent sınıfı, içeriğin verilerinin temsilidir ve sayfalar, revizyonlar veya veritabanında nasıl depolandığı hakkında hiçbir şey bilmiyor. Gerekli yedi kalıtımsal yöntemin yanı sıra, etki alanına özgü diğer genel yöntemler de ekleyebilirsiniz; bu durumda keçinin adını alabilmek istiyoruz.

Düzenleme formu
Şimdi iskeleti kurduk, bir Goat düzenlemeyi denemek isteyeceğiz. Bunu yapmak için, oluştururuz ve hangi eylemleri hangi sınıflara eşlemek istediğimizi belirleriz. Başlangıç ​​olarak, sadece 'düzenle' ile ilgileneceğiz (URL'de  ile karşılık gelir).

Ve yeni GoatEditAction sınıfımızı oluşturacağız, temelde EditAction ile aynı, ancak kendi GoatEditPage kullanarak:

Yeni GoatEditPage sınıfımız, eylemin gerçekleştiği yerdir (kelime oyununu bağışlayın):

Artık bir sayfayı düzenleyebilmeli ve formunuzu görebilmelisiniz. Ancak içine veri koyduğunuzda ve 'önizleme' düğmesine tıkladığınızda, işlerin henüz tam olarak çalışmadığını ve çıkış alamadığınızı veya gönderdiğiniz metnin formda tekrar gösterilmediğini göreceksiniz.

Bu nedenle, yeni bir GoatSubmitAction sınıfı ve yöntemimize  ilavesi ile 'gönder' eylemini de geçersiz kılmalıyız. GoatSubmitAction sınıfımız çekirdek sınıfımızla aynı olmalı, ancak GoatEditAction üzerinden miras almalıdır.

Görüntüleme
Görüntü için gerekli herhangi bir çıkışının üretilmesinden bir içerik modeli sorumludur. Bu genellikle, ayrıştırıcı çıkışına eklemek için verileriyle çalışmayı ve bir şekilde HTML üretmeyi içerir.

Bir açıklama/belgelendirme görüntüle
Bazen, JSON gibi özel bir içerik modeline sahip bir makale için bazı bilgileri veya bazı belgeleri görüntülemek isteyebilirsiniz. Aslında, bu tür sayfaların üzerinde bazı metinleri görüntülemek için sistem mesajları yoktur (yalnızca JavaScript ve CSS sayfalarının üzerinde gösterilen MediaWiki:Clearyourcache haricinde). Daha fazla ayrıntı için T206395 görmek isteyebilirsiniz.

Revizyonları karşılaştırma
GoatDifferenceEngine sınıfı, keçi içerikleri arasındaki farkın temsilidir. Bir fark oluşturmak için varsayılan  yöntemini geçersiz kılıyoruz.

MediaWiki'ye GoatDifferenceEngine kullanmasını söylemek için GoatContentHandler sınıfımızdaki  üzerine yazıyoruz.

Özet
Özel bir düzenleme formuyla yeni bir içerik modeli uygulamak için aşağıdakileri oluşturun:



Ayrıca bakınız

 * - içerik modelini değiştirmeyle ilgili son kullanıcı belgeleri için.
 * - özel bir içerik modeli örneği için (ancak henüz herhangi bir özel düzenleme formu değil).
 * - özel bir içerik modeli örneği için (ancak henüz herhangi bir özel düzenleme formu değil).