SPIP 2.0

SPIP artık 2.0 sürümüne geçiyor : 1.0 sürümünün lansmanından bu yana yedi yıl, uZine lansmanından bu yana sekiz yıl ve bir önceki sürümünden bu yana yaklaşık iki yıl geçti.

SPIP 1 entegre bir yayın sistemiydi, yani kullanıma hazır tek bir veritabanı şeması üzerine kuruluydu. İşlevselliği, özellikle de sayfa düzeni iskelet sistemi başlangıçta gerek duyulmayan bir çok yeniliğe ihtiyaç duyulmasına yol açtı. SPIP 1.8, 1.8.1’in yeni iskelet derleyicisi kullanılırlığını arttırdı ve bir çok site önceden öngörülmeyen her türden bilgiyi sunmak için kullandı : kataloglar, coğrafi bilgiler, olay dizileri... SPIP 1.9 birçok programcık metoduna, aşırı yüklere, giriş noktalarına, eklentilere (plugins). SPIP’le kurulan sitelerden ve daha başka bir çok katılımcı geliştirme ekibine destek vermeye geldi. Ama yalnızca programcılar bu yeniliklere erişebiliyorlardı.

SPIP 2 hem (eski sürümlerle uyumlu) entegre bir yayın sistemi hem de daha ileri gitmek isteyenler için çok-hizmet birimli SQL (multi-server) geliştirme platformu olarak geliyor. Bu platform iki seviyeli bir uzmanlık gerektiriyor, SPIP’in öğrenme eğrisini koruyarak sunulan hizmet sayısını arttırmak.

  • İlk seviye, (önceki sürümlerde de bulunan) SQL, PHP ve JavaScript programlamaya gerek kalmadan grafik olarak yenilik yapmak isteyenlere sesleniyor. HTML ve CSS bilenler SPIP iskelet sistemini öğrenerek heterojen veritabanlarındaki bilgileri çok yenilikçi biçimlerde sayfalarına taşıyabilirler.
  • İkinci seviye, farklı SQL hizmet birimlerinde sanal SQL hizmet birimi yardımıyla taşınabilir programcıklar yazabilen programcılara sesleniyor. Bu arayüz SPIP tarafından yüklenen veritabanından bağımsız olarak da kullanılabiliyor.

Yeniliklerin fazlalığı dikkate alındığında bu yeni SPIP sürümü, bazen ilgili makalelere de atıfta bulunarak üç tema üzerinde yoğunlaşıyor :

  • SPIP ve web yayıncılığı,
    • Tarihçelerini yöneten ve ağaç yapısında yamaya olanak tanıyan sembolik URL’ler;
    • çeşitli ortamlardan gelen metinlerin eklenmesi;
    • belge eklenmesine izin veren forumlar;
    • dilekçelerle ilgili çok sayıda işlevsellik;
    • eşzamanlı düzeltmelerin işletimi;
    • eklentilerin otomatik kurulumu;
    • birçok hizmet birimine aynı anda erişim (MySQL PostGres, SQLite2 ve 3), veritabanı çıktılarının birleştirilmesi, otomatik iskeletler;
    • basitleştirilmiş "mutualisation" - özellikle de servis sağlayıcılar;
  • SPIP ve Web tasarımı
    • LayoutGala CSS üzerine kurulu iskeletler;
    • yeni filtreler;
    • yeni ekleme modları - özellikle AJAX formları;
    • komutlarda yenilikler - özellikle URL ve ilk anahtarı işletenlerde;
    • kriterlerde yenilikler - özellikle de "jointure" ve arama motorlarında;
    • çevrilecek dil zincirlerinin otomatik işletimi;
    • bir grup sayfaya uygulanabilen entegre XML onaylayıcı;
  • SPIP ve Web programlama
    • PHP’nin alt tabakalarına dayanan iuzul SQL hizmet birimi;
    • yeni boruhatları (pipelines);
    • dış kütüphane tanıtımları.

Son olarak bu sürümden itibaren SPIP’in GNU/GPL 3 lisansı ile dağıtılacağını belirtelim. 15 yıllık GNU/GPL 2 lisansını takip eden bu lisans ABD dışındaki ülkelerde yazar haklarını ve serbest yazılım’ın uygulama gelişimini daha iyi koruyor. Tam ve argümanlı açıklamalar Free Software Foundation ve Richard Stallman tarafından şu adreste bulunuyor :
— lisans
— (resmî olmayan) fransızca çevirisi
— Niçin GPLv3’e güncellemeli

Her zaman olduğu gibi uzaktan veya yakından bu yeni sürüme destek olan herkese teşekkürler. Öncelikle çevirmenlere en öenmlisi yeni katılanlara endonezyaca, birmanca, kmerce, asturice ve isveççe.
Sürümün gelişimini günü gününe izleyenlere teşekkürler, şantiyenin büyüklüğüne ve bazen istemeden onları ittiğimiz hatalı patikalarda sabırla uğraşanlara teşekkürler, yaşadığımız tüm zorluklara rağmen bize güvenenlere teşekkürler.

SPIP ve Web yayıncılığı

SPIP güvenilir editoryal yapılar sunan bir site oluşturma ve işletme sistemidir, yani sadık ve gelişmeye açıktır [1]. Sadece 5 formdan oluşan kurulumdan hemen sonra kullanıma hazırdır ve bir veya birkaç redaktör ile günümüz teknolojileriyle donatılmış bir site yaşatılabilir.

SPIP 2.0 için, arayüz ve ergonomi zenginleştirildi, XHTML ve CSS normlarına daha fazla riayet edildi, sistemle etkileşimler hızlandırıldı, özellikle sistemli olarak AJAX kullanımı [2]. Farklı kullanımlara izin veren çeşitli tipten belge eklenmesi tektip haline getirildi. Bu gelişen «cilâlalamalar» yeni kullanıcıların mükemmel bir arayüzden yararlanmalarını ve eskilerin de (iyi) alışkanlıklarını korumalarını sağlıyor.

-  Sembolik URL grupları

Temiz denen yeni URL’ler aynı nesneye bağlanan birçok URL isminin kullanımına olanak tanıyor özellikle yeni oluşacak URL’nin eskisini geçersiz kılmadan makalenin başlığını değiştirmeye olanak tanıyor. Ayrıca, HTTP istemcisi hemen yeni adrese yönlendiriliyor.

Bu URL’ler şu anda birincil anahtar olarak ayrı bir SQL tabloda tutuluyor bu da kullanımlarını hızlandırıyor. Eski temiz URL’ler ile uyumluluk sitenin güncellenmesi esnasında güvence altına alınıyor.

Bu yeni URL’ler Toggg tarafından yapılan öncü çalışmaların meyveleri (http://toggg.com/spip/spip.php?article19 et http://toggg.info/spip.php?article18). Bu yeni sürüm de onun anısına ithaf edildi.

Aşağıdaki gibi bir ağaç isimlendirmesi sunan arbo isimli yeni bir URL grubu eklendi :

http://www.benimsitem.com/secteur/rubrique1/rubrique2/article

Şu anda idareci sayfalarında görüntülenen bir tabloda yapılan basit bir tıklama URL grubunu seçmeye olanak tanır. $type_urls genel PHP değişkenini kullanan metod yine çalışmaya devam ediyor ama bu değişkeni terk edip mes_options.php dosyalarında silmeniz bu konfigürasyon tablosunun görüntülenmesini sağlayacağı için önerilmektedir. Eğer size ait SPIP_PATH içinde urls dizininde kişisel bir URL grubunuz varsa bu tabloda otomatik olarak görüntülenecektir.

-  Çeşitli ortamlardan gelen metinlerin eklenmesi

Bir metnin içine belge eklenmesine olanak tanıyan img ve emb modelleri yeniden değerlendirildi. Şu anda MIME tiplerinin resmî nomanklatürüne dayanıyorlar ve filtrelerini kullanıyorlar. Bu mimarî her tipten belgenin büyük bir incelikle eklenmesini sağlıyor; bu modeller SPIP 1.9.1’in çıkışı sırasında yazılan Modelleri kullanmak makalesini tamamlayan article 3715 makalesinde açıklanmıştır.

Artık redaktörler eskisine oranla çok daha fazla sayıda belgeyi ekleyebilirler. Böylece SPIP bir hesaplama programından gelen CSV dosyayı HTML olarak gösterebiliyor. Aynı zamanda, bir txt dosya düzenlendikten sonra ve pre komutunun içine yerleştirildikten sonra gösterilebilir. Son olarak, bir HTML dosya için stil sayfaları otomatik olarak alınır böylece statik bir site kolayca bir SPIP sitesine dönüştürülebilir.

-  Forumlara belge gönderilmesi

Yeni bir seçenek ziyaretçilerin forumlara belge göndermesine olanak tanıyor; tabii ki bu özellik varsayılan değer olarak etkinleştirilmiş değildir.

Seçenek kabûl edilen dosya tiplerinin soyadlarının listelenmesiyle ayarlanıyor örneğin «gif,png,jpg,mp3», * işareti potansiyel tehlike arz edenler dışındaki tüm belge tiplerinin kabûl edildiğini belirtiyor.

-  Dilekçelerle ilgili çok sayıda işlevsellik

Les pétitions sous SPIP makalesinde tanımlanan bir çok yenilik : imzalayanların aranması ve çoklu sıralanması, sayfalama, RSS akısı, günlük ve aylık istatistikler, tablolama programları için arayüz, çok dilli dilekçeler.

-  Eşzamanlı düzeltmelerin işletimi

SPIP’in özel alanı makalelerin, konu başlıklarının, kısa haberlerin, anahtar sözcüklerin, yazrların ve sitelerin eşzamanlı düzeltme çakışmalarını yönetir.

Senaryo şöyledir : Alice ve Bob’un aynı zamanda aynı makaleyi açtıklarını ve her irinin kendi değişikliklerini gönderdiklerini varsayalım önce Alice sonra Bob.

Şu farklı durumlar oluşabilir :

  • Alice başlığı Bob metni değiştirmiştir : iki değişiklik de kabûl edilir Bob’un başlığı (değişmeyen) Alice’in başlığını ezmemiştir ;
  • Alice de Bob da başlığı değiştirmiştir :
    • belki aynı başlığı koymuşlardır : zaman sorun olmaz;
    • belki farklı başlık koymuşlardır: o zaman Bob’a haber verilir, gönderdiği başlık ve veritabanında saklanan başlık gösterilir aradaki fark gösterilir ve bu değişiklikleri kesip/yapıştırmak için bir form gösterilir. Gönderilen başlık veritabanına kaydedilmez.

Bu elemanlar bağımsız olarak alan alan değerlendirilir : böylece eğer başlıkta çakışma varsa ama şapka’da şapka kaydedilir ve sadece başlıkla ilgili olarak hata mesajı gönderilir.

-  Eklenti kullanımının kolaylaştırılması

— El ile ve/veya otomatik kurulum

Eklentiler /plugins isimli bir dizine kurulur. /plugins/auto isimli bir alt-dizin oluşturularak eklentilerin otomatik kurulumu etkinleştirilir.

Otomatik kurulum aracılığı ile şunlar eklenebilir :

  • bir zip dosyasının url’sini belirterek kişisel eklentiler,
  • bir RSS akısında düzenlenmiş olan eklenti listeleri.

— Eklentileri bulmak

Çeşitli amaçlara yönelik (geliştirici, katılımcı, referens gösterici) eklentileri bulmaları için kullanıcılara üç ayrı yer önerilir :

  • Bölge’de geliştirilen her eklenti, yazarının inisyatifine bağlı olarak http://files.spip.org/spip-zone/ dizininde görünebilir;
  • SPIP-Contrib eklenti aramayı kolaylaştırmak için gelişmeye devam ediyor ;
  • bu yeni sürüm SPIP’le birlikte gelen Plugins.spip sitesi daha ince bir referanslama (temaya göre, SPIP sürümleriyle uyuma göre, dile göre) sunuyor...

Plugins.spip ve SPIP-contrib siteleri SPIP 2.0 ile otomatik kurulum için direkt olarak kullanılabilen RSS akıları sunuyor.

-  Birçok veritabanına ve hizmet birimine erişim, kısmî birleştirme ve otomatik iskeletler

SPIP şu anda sadece MySQL hizmet birimi üzerinden değil aynı zamanda PostGreSQL hizmet birimi üzerinden ve PHP’nin SQLite 2 ve 3 programcıkları üzerinden de kullanılabiliyor. Seçim, kurulum esnasında sunuluyor ve bağlantı dosyasında saklanıyor. Yedeklerin formatının her sürümde aynı olduğunu unutmayın, böylece başka bir SQL hizmet birimine SPIP kurduğunuzda bir geri yükleme yaparak ilk seçiminize geri dönmeniz mümkün oluyor.

SPIP’in bu yeni taşınabilirliği şu ana kadar eksikliğini çektiğimiz bir fonksiyonu hayata geçirdi : bir defada bir çok sayıda SQL veritabanında iskeletleri kullanmak.

Site bakımı menüsündeki kurulum formuna benzer bir form , bir başka veritabanına bağlantı tanımlayıcılarını gönderebilir ve ana siteninkine benzer bir bağlantı dosyası oluşturur. Başka bir SPIP sitesi tarafından oluşturulan bir veritabanı varsa bu gönderi bağlantı dosyasının basit bir kopyasına indirgenebilir.

Bu bildiri yapıldığında başka bir sitenin tablolarını çağıran iskeletler sitenin URL’sine sadece ek bir parametre connect eklenerek uygulanabilir, burada değer olarak bağlantı dosyasınn ismi verilmelidir (.php uzantısı olmaksızın). Aynı iskelette farklı veritabanlarından döngüler karıştırılabilir, SPIP istenildiği kadar bağlantı kurabilir ve gerektiğinde kolayca birinden diğerine geçebilir. Burada dikkat edilmesi gereken bir başka nokta da ana sitenin SQL’inden farklı SQL’lerle idare edilebilmeleridir : yani SPIP farklı veritabanlarının ekstrelerini birleştiren bir kaynaştırıcı rolündedir.

Bir veritabanının tablolarının hızlıca incelenmesine olanak tanımak için URL’nin parametresinin page değeri table:la table biçimindeyse otomatik bir iskelet oluşturma mekanizması devreye girer.

Bu omurga yapıcı tablo içeriğini bir çok gezinti moduna göre görüntüler ve oluşturulan iskeleti kaydetme olanağı tanır.

Böylece SPIP ile - çoklu hizmet birimlerine göre bile - bir veritabanı işletim hizmeti geliştirmek kolaydır.

Özel bilgilerin güvenliği için bu mekanizma sadece webmaster’ın erişimine açıktır ama autoriser_webmestre ile diğerlerine de açılabilir.

Çoklu-hizmet birimi ile gelen başka bir işlev: veritabanının yalnız bir kısmının yedeklenmesi, ve başka bir veritabanına katıştırılması.

SQL veritabanlarındaki işlevlerin bir sunumu şu makalede bütünüyle ele alınmıştır : SPIP’te veritabanları. Bu makale özellikle bağlantı dosyalarının ayrıca bir tanımlama yapılmasına gerek olmadan tüm veritabanlarının isimlendirilmesini önerir.

-  Kaynakların "Mutualisation"u

SPIP 1.9’tan bu yana sunulan SPIP çekirdeğinin ortak kullanımı, SPIP’in dizinleri ne olursa olsun şu anda hepsine uygulanır : IMG dizininin yoluna uygulanan sınırlama kaldırılmıştır.

Bir çok site idare eden webmaster’lara "Mutualisation" önerilir, bu yolla bakım görevleri basitleşmiş olur. Çoklu-veritabanı kullanacaklara yine bu makalede anlatılacan en yüksek konforu sunar.

Tüm barındırma firmalarını da bu işlevi incelemeye davet ediyoruz, çünkü bu yolla disk alanından müthiş tasarruf edecekler ve hizmet birimlerine bir çok SPIP kopyasının aynı anda yüklenmesini önleyeceklerdir. Bu yapılandırmaları otomatik gerçekleştiren bir çok eklenti geliştirildi, bkz SPIP-Contrib mutualisation bölümü. Bu yapılandırmada SPIP bir blog çiftliği veya bir CMS hizmet birimi gibi davranır.

SPIP ve Web tasarımı

-  LayoutGala CSS üzerine kurulu iskeletler

SPIP hem modern yöntemlerle yapılandırılmış iskeletlere hem de webmaster’lara yönelik gereçlere sahiptir. Webmaster’lar döngü, komut, kriter ve filtre dilini kullanarak sitelerini kişiselleştirebilirler ve « anahtar teslimi » iskelet kullanımını aşarlar.

Standart olarak teslim edilen iskeletler (« dist ») HTML yapısına ve « Layout Gala » modelini temel alırlar. Bazı CSS satırlaını değiştirerek farklı blokların yerleriyle oynarlar :

<div id="page">
	<div id="entete">Başlık</div>
	<div id="conteneur">
		<div id="contenu">İçerik</div>
	</div>
	<div id="navigation">Gezinti</div>
	<div id="extra">Ekstra</div>
	<div id="pied">Dipnot</div>
</div>

İskeletlerin HTML kodu varsayılan olarak Microformatsları kullanır.

İskeletler ve özel alan skriptleri XHTML 1.0 strict’e uyarlar. Tanımlanan Doctype XHTML transitional tipindedir böylece redaktörler zor ve tartışılabilir bir normu öğrenmek zorunda kalmazlar (makalenin ilk paragrafını okuyunuz Le validateur XML intégré).

Kısayolların kullanımı geliştirildi ve yeni değişkenler daha fazla kişiselleştirme olanağı sunuyor. (Cf. : http://archives.rezo.net/spip-core....)

-  İtalik ve koyu : SPIP tarafından eklenen komutların kişiselleştirilmesi :

$debut_italique = '<i>' ;
$fin_italique = '</i>'  ;
$debut_gras = '<strong>' ;
$fin_gras = </strong>' ;

-  Paragraflar : tüm metinler SPIP tarafından tektipte ve tutarlı biçimde paragrafa alınır. Eski işleyişe dönmek için $toujours_paragrapher kişiselleştirme değişkenini false yapmanız yeterlidir :

$GLOBALS['toujours_paragrapher'] = false;

-  P, i, i, strong ve li üzerinden class="spip"’in kaldırılması. Bunları geri almak için kullanılacak kişiselleştirme değişkeni şudur (baştaki baoşluğa dikkat !) :

$class_spip = ' class="spip"';

Notlarda <<p class="spip"> korunursa code>

korunur (geriye doğru uyumluluk için), aksi halde o da kaldırılır.

Daha incelikli yaklaşılabilir, örneğin, paragraflardan class="spip"’i kaldırmak ama italiklerde korumak için şöyle tanımlanmalıdır :

$class_spip = '';
$debut_italique = '<i class="spip">';
$debut_gras = '<strong class="spip">';

Diğer yandan, diğer (ul, ol, tables, hr, h3 ve blockquote) kısayollardan da class="spip" kaldırılmak istenirse des autres raccourcis şu yapılabilir :

$class_spip_plus = '';

-  Şiir : <poesie> kısayoluyla oluşturulan kod şu biçime dönüşür : <blockquote class="spip_poesie">

-  İlk yayın tarihi: burada, stilleri ilgilendirmese de bir başka kişiselleştirme değişkenini belirtelim. Varsayılan değer olarak, yayın yılı serbest kalır. Belirli bir yıldan başlayarak açılan bir menüye zorlamak için $debut_date_publication değişkeni kişiselleştirilebilir. Örneğin :

$debut_date_publication = 1997;

-  Filtre yenilikleri

— image_typo (deneysel biçimde) arapça’da çalışıyor (hiç şüphesiz ibranice’de de). Arapça ve ibranî karkaterlerin mevcudiyeti otomatik olarak fark edilir ve hemen otomatik mekanizmalar devreye girerek yazıyı tersten yazmayı sağlar (sağdan sola) ayrıca arapça’daki zorluklar da işleme alınır.

— Üç yeni renk işleme filtresi gelmiştir : couleur_saturation, couleur_web ve couleur_4096.

couleur_saturation filtresi 0 ve 1 değerlerini alır, bunlar renk doygunluğunu belirler :

  • 0: beyaz
  • 1: tamamen doygun renk (dikkat: tamamen doygun renk siyah değildir).

Bu filtre bir renk paleti oluşturmak için oldukça kullanışlıdır. Burada couleur_eclaircir ve couleur_foncer fonksiyonları keskinlikten uzaktır ve renkleri soluklaştırmaktadır (doygunlukla değil parlaklıkla oynayarak).

couleur_web filtresi 256’lık gamda rengin yaklaşık değerini verir. Amaç gerçekten 256 renkli ekranda görüntülemek değil (hâlâ böyle ekranlar var mı?) bir grafik filtreye uygulanacak renk sayısını sınırlandırmaktır (örneğin tipografik bir resmi renklendirmek veya bir stil sayfasını değiştirmek) böylece bir dosyanın 16 milyon varyantını elemektir.

couleur_4096 filtresi benzer biçimde 4096’lık gamda rengin yaklaşık değerini verir.

— Son olarak, couleur_extreme filtresi parlaklık eşiğini ayarlamak ve buradan yola çıkarak siyah ve beyaz renge geçmek için seçimlik bir gam varsayar 0 ile 1 arasında (varsayılan değer : 0,5).

RGB, HSL ve HSV arasında dönüştürme işlemleri için fonksiyonlar kaynak koda eklenmiştir. HSL’e geçiş zaten couleur_extreme ile kullanılmaktadır : böylece siyah-beyaz geçişleri sadece bileşenler temelinde değil «görsel» bir temelde gerçekleştirilmektedir.

— image_aplatir grafik filtresi dördüncü bir parametre alır, bu parametre şeffalığı korur (özellikle GIF’e dönüştürmede).

— Yeni image_format grafik filtresi PNG ve GIF’te şeffaflığı koruyarak bir format’tan diğerine geçişe olanak tanır. Bu image_aplatir fonksiyonunun basitleştirilmiş bir kısayoludur.

Dikkat, PNG’nin şeffalığı koruyarak GIF’e dönüştürülmesinde bu fonksiyon yarı şeffaf noktaların hangi renge dönüştürüleceğini belirtmeye izin vermez; bu durumda image_aplatir kullanılmalıdır.

— Resim işleme filtreleri geliştirildi. Geçici resimlerin toplanması ve ve temzilenmesi otomatik mekanizmalara bağlandı. Böylece bir ifadede bir çok filtrenin peşpeşe gelmesi durumunda sadece son resim korunur ve disk alanı azaltılmış olur.

— Yeni compacte_head filtresi bir iskeletten çağrılan farklı Javascript ve CSS dosyalarını iki küçük boyutlu "tek" dosyada toplar, böylece ziyaret edilen sayfaların yüklenmesi hızlanır (bir çok javascript dosyası yerine sadece bir dosya çağrılır ve bu dosya daha küçük boyutludur). Eğer (dist iskeletinde olduğu gibi) Javascript ve CSS’i birleştiren bir inc-head.html katıştırması kullanılırsa SPIP’te yapılan bir yapılandırma sayesinde bu fonksiyon otomatik olarak devreye girer.

-  Yeni ekleme modları - özellikle AJAX’ta

#INCLURE komutu {env} argümanını eklenen iskelete tüm ortam değişkenlerini iletilmesi gibi yorumlar. Bu yazım biçimi <INCLURE ...> ile de çalışır. Eğer başka argümanlar da mevcutsa değişkenler için tanımladıkları değerler eklenen ortam değişkenlerine göre öncelikli olacaktır :

 <INCLURE{fond=gribouille/rubrique}{env}{lang=en}>

gribouille/rubrique’i ona {id_rubrique} ve {debut_pages} değişkenlerine geçirerek ekleyecektir ama URL ?lang=XX içermesine rağmen dili ingilizce’ye zorlayacaktır.

#INCLURE veya <INCLURE ...> komutuna eklenen {ajax} argümanı ajax sınıfının tüm bağlantılarını ve sayfalama sınıfında bulunan tüm bağlantıları ajaxlamaya olanak sağlayacaktır. Daha fazla bilgi için bkz. inclure (EKLEMEK) için ajax

INCLURE komutunun XML’e yakınlaşmak için sonda seçimlik bir slash varsaydığını hatırlatalım.

Diğer katıştırma durumları, ismi #FORMULAIRE_ ile başlayan ve dinamik denen komutlardır çünkü form üretirler. Kamusal alanın bu formları ve bazı özel alan formları CVT (charger - yüklemek, vérifier - kontrol etmek, traiter - işletmek) denen yeni bir yöntemle yazıldı. Sadece iskelet yazarak ve hatalı doldurulan formları yakalamakla ilgilenme işini SPIP’e bırakarak yeni formlar üretmeye olanak tanıyor.

Böylece, prive/contenu/ editoryal nesneleri işleyen iskeletleri ve prive/editer/ prive/formulaires içinde yer alan bir dizi #FORMULAIRE_EDITER_... çağrısı yapan düzenleme iskeletlerini içeriyor situés dans . Il devient possible de personnaliser ces pages en fonction des numeros de rubrique avec un suffixe -xx.html comme pour tout autre squelette.

Bu yeni olasılıklar şu makalelerde detaylandırılmıştır : Formulaires CVT par l’exemple ve Les formulaires CVT de SPIP.

-  Komutlarda yenilikler

— URL_ ile başlayan komutlar jenerik olarak işlenirler. Eğer komut URL_type komutunda olduğu gibi argümansızsa SPIP derleyici generer_url_entite fonksiyonunu çağırır ve $id_type ve type üzerine (bağlamda tanımlanmış olmalıdır) uygular. Böylece generer_url_article, generer_url_rubrique vb. şu anda âtıl kalan fonksiyonlar üzerine kurulu alışıldık URL_ARTICLE, URL_RUBRIQUE vb. görülür. Eğer komutun bir argümanı varsa generer_url_entite,$id_type üzerine değil bu argüman üzerine uygulanır. que sera appliquée . Tüm bu komut ailesi birçok farklı SPIP veritabanına erişimi işleyebilir. (yukarıya bakınız). Bu uzaktan gezinti işlevi, kurulumu değiştirmeden yeni bir iskelet grubunu test etme olanağı tanır.

— #EXPOSE komutu (bkz Bir listede makale gösterimi) uygulanma modunu genişletiyor. Döngünün birincil anahtarını (veya #nom:EXPOSE sentaksı kullanılıyorsa özellikle belirtilen anahtarı) alır ve o anki değerini her iterasyondaki benzer değer ile karşılaştırır. Eğer bu iki değer eşitse ilk argümanı, aksi halde ikinci görüntüler. Bu karşılaştırma ilgili anahtarın hiyerarşiseine dayanır yani RUBRIQUES döngüsünde birincil anahtar ilgili makalenin ait olduğu bölümün numarasıyla karşılaştırılır ve bir GROUPES_MOTS döngüsünde birincil anahtar ilgili sözcüğün numarası ile karşılaştırılır.

— Yeni bir komut, #FILTRE, iskelete eklendiğinde oluşturulan sayfanın tamamına bir filtre uygulanmasına olanak tanır. Böylece, şu kodu bir iskelete eklersek :

#FILTRE{compacte_head}

bu iskelet tarafından oluşturulan sayfanın tamamı compacte_head filtresine geçirilir.

— #INTRODUCTION komutunun devam noktalarını değiştirmek için, basitçe mes_fonctions.php (veya mes_options) dosyalarında şu yapılabilir :

define('_INTRODUCTION_SUITE', '&nbsp;(...)');

veya

define('_INTRODUCTION_SUITE', '');

— Bu komut tarafından çağrıldığında couper filtresi bağımsız olarak çağrılabilir ve kesilen metnin sonuna hangi karakter zincirinin ekleneceğini belirten ek bir parametre kabûl edebilir:

[(#TITRE|couper{10,'...'})]

— Yeni bi rkomut, #SESSION, belirtilen kullanıcının bilgilerine erişime olanak tanır (id_auteur, ve diğer bilgiler) ve ziyaretçiye bağlı olarak otomatik biçimde önbelleği ayırma olanağı tanır.

-  Kriterlerde yenilikler

Bir kritere TABLE.NOM notasyonunu yazarak iki SQL tablosunu birleştirmek olasıdır. Birleştirme işlemi belirtilen tablonun döngünün ana tablosuyla denk bir alana sahip olmasıyla mümkündür, birincil anahtar tabii ki önceliklidir. Operatörsüz kriter varsa {TABLE.NOM}, kabûl edilen değer NOM’un değeridir (özellikle, URL’de ilk seviyede). Örneğin aynı makalenin çevirilerine bağlı dilekçelerin imzalarını arayan bir döngü :

<BOUCLE_signatures(SIGNATURES){articles.id_trad}  />

signatures SQL tablosu articles tablosu ile ortak olarak id_article alanına sahiptir : URL’de id_trad alanının değeri geçirilirse signatures tablosunun id_trad içeren ve articles tablosunda bulunan bir makaleye bağlı tüm hücreleri seçme işlemini başlatacaktır.

Bu işlev koşullu kriterler ile de kullanılabilir. Örneğin ister bağlamda bulunan bir makaleye ait bir dilekçenin imzalarını listeleyen bir döngü (id_article olsun, ister aynı makalenin çevirilerine bağlı dilekçeler olsun (eğer mevcut olan id_trad ise):

<BOUCLE_signatures(SIGNATURES){id_article?} {articles.id_trad ?}  />

Bu yeni fonksiyon bazı kriterleri âtıl duruma düşürdü (titre_mot gibi) ama uyumluluk endişesiyle bu kriterler kullanılmaya devam ediliyor.

Kriterlerde yapılan bir diğer büyük değişiklik arama’yı ilgilendiriyor. Önceleri SPIP site elemanlarını yaratıldıkları anda endekslemek için bir SQLtablodan yararlanırdı. Günümüz SQL hizmet birimlerinin arama operatörleri o kadar hızlı ki çok yer harcayan bu ön-işleme gerek kalmadı. ve recherche kriteri artık bu operatörlere dayanıyor. Aranacak zinciri belirten seçimlik bir argümanı bile var. Bu argüman yoksa yine eskiden olduğu gibi recherche URL değişkeni kullanılıyor; yani <BOUCLE_t(ARTICLES){recherche}> ile <BOUCLE_t(ARTICLES){recherche #ENV{recherche}}> arasında bir denklik söz konusu.

Bu gelişimin bir çok faydası var:

  • aşağıdaki örnekte olduğu gibi iskeletin iç bağlamı tarafından verilen bir zinciri aramak
    <BOUCLE_m(MOTS){id_mot}>
     <BOUCLE_r(ARTICLES){recherche #TITRE}>...
      </BOUCLE_r>
    </BOUCLE_m>
    
  • şu örnekteki gibi aranacak zinciri katıştırılan iskelete vermek un
    <INCLURE{fond=x}{recherche=NNN}>
    
  • şu örnekte olduğu gibi bir modelde alanları aranan zinciri içeren nesneleri seçmek için kullanmak
    <modele1|recherche=spip>
    

Bu kriterin koşullu kullanımında soru işareti ile belirtilen değer arasında bir boşluk bırakmaya dikkat edilmelidir :

{recherche ? #ENV{rech}}

değil

{recherche ?#ENV{rech}}

Eğer aranan zincirin önünde "gerçekten" bir boşluk varsa bu özel bir durumdur.

-  Salvatore’um, benim spricht разных språk eklentim

Salvatore çirkindir, kamburdur, biraz delidir ama bütün dilleri konuşur (tabii ne sandınız, görelim bakalım!).

Salvatore bizim yeni gerecimiz. Çok dilli eklentiler geliştirmeye yarıyor. (tüm SPIP çevirmenlerini birleştiren) SPIP-Zone üzerinde dil dosyasını çeviri alanı sayesinde otomatik olarak senkronize ediyor. Hem inceleyin hem de belgelendirilmesine yardımcı olun.

-  XML onaylama

Le validateur XML intégré yeni bir işleve kavuştu: eğer argümanı bir URL değil de bir dizinse bu dizinin uzantısı ext URL parametresiyle geçirilen değere eşit olan tüm dosyalarına uygulanıyor. Argüman bulunmuyorsa .php uzantısı kullanılıyor ve eğer hiç .php dosyası yoksa tüm .html dosyaları iskelet gibi kabûl ediyor. Bu iskeletler tarafından beklenen argümanlar içerikleri incelendikten sonra otomatik olarak oluşturuluyor. Bu inceleme, PHP dinamik bir dil olduğundan skriptler için mümkün değil ama SPIP’in genel mimarîsii özellikle exit komutunun olmaması onaylayıcı programa körlemesine bir test ile epeyce bilgi sağlıyor.

XML’in SPIP üzerindeki etkisi tümce yapısında da kendini hisettiriyor. İçeriksiz ("sans corps") döngüler XML yazımından esinlenilen kısaltılmış bir yazıma sahip.

Örneğin, şu döngü:

<BOUCLE_message(FORUMS){id_article}>
</BOUCLE_message>
#TOTAL_BOUCLE messages
</B_message>

şu biçimde de yazılabiliyor:

<BOUCLE_message(FORUMS){id_article} />
#TOTAL_BOUCLE messages
<//B_message>

SPIP ve Web gelişimi

Bu bölüm SPIP ekibi tarafından kullanılan ve üçüncü parti geliştiricilerinin taşınabilir programcıklar yazabilmeleri için bilmeleri gerekli geliştirme gereçlerini anlatır.

Çok sayıda Web sitesi ziyaretçilerine sundukları etkileşim ile kendileri çevrim-içi uygulamalar gibidir. Çok sayıda branş 2 programı zaten Web 2.0 siteleri oluşturmaya yöneliktir: kullanıcı oturumlarını idare etmek, kamusal sitede ortaklaşa çalışma, tarihli olayların daha iyi işletimi...

-  Sanal SQL hizmet birimi

SPIP’in yeni sürümü SQL aramalarının taşınabilir olmaları için yeniden yazılmalarını gerektirdi, ve uzunca bir çalışma gerekti. Bu işlem, taşınabilir bir SPIP geliştirmesi yazmak için kullanılan bir programlama arayüzüne dayanır. Ayrıca kod enjeksiyonu ile saldırı tipinden güvenlik sorunlarına karşı bir işletme modeli sunar.

Bu arayüz önceden var olan kütüphaneleri kullanmaz çünkü ortay çıkacak tüm sorunları çözebilmek için "abstraksiyon" seviyesi yeterli değildir, ama SPIP’in önceki kodlarından elde edilen yaklaşık otuz sanal fonksiyonu kullanır. Özelliği, heterojen ve SPIP tarafından sağlanan diğer hizmetlerden bağımsız SQL veritabanlarının entegre edilmesine olanak tanır.

Arayüz kendi sürümlerini işletir, böylece SPIP’in farklı sürüm kullanan geliştirmelerini sorunsuzca çalıştırabilir.

Bu yeniden yazım işlemi MySQL’e de yarar çünkü en pahalı SQL yapıları elenmiştir. Böylece, veritabanının tutarlılığı artan biçimde sağlanır eskisi gibi periyodik ve toptan bir tarama gerektirmez. Hizmet biriminin tamamen kilitlenmesi sistemli olarak SQL sınırlamaları ile değiştirilmiştir ve eşzamanlı bilgi yazma işlemleri otomatik olarak reddedilmektedir.

Bazı endeksler etkinliklerini arttırmak için yeniden tanımlanmıştır. Sonuçta, derleyici birleştirme gereksinimlerini daha detaylı inceler ve bu noktada üretilen SQL kod optimal’e oldukça yakındır.

Bu gelişimler SPIP’te var olan SQL profilci yardımıyla görülebilir.

Güncelleme prosedürü de tekrar düşünülmüş ye yeniden yazılmıştır. Artık eskiden büyük kısmı SQL hizmet birimine has gereçler gerektiren veritabanlarını sorunsuzca idare edebilmektedir.

SPIP’in bu yeni yönü özel bir makalede açıklanmıştır : L’interface de SPIP avec SQL.

-  Daha sık çağrılan yeni boruhatları

Boruhattı sayısı yaklaşık 50 tane daha artıyor ve 180’den fazla da giriş noktası ile çağrı sayısı da artıyor. Özellikle • pre_edition ve post_edition boruhatları, ister oluşturulma esnasında ister değişiklik esnasında veya ister durum değişikliği esnasında olsun, editoryal bir nesnenin kayıt edilmesinden önce ve sonra sistemli olarak çağrılır ; • recuperer_fond boruhattı hesaplanma esnasında tüm mevcut iskelet sonucu üzerinde işlem yapmaya olanak tanır ; • pre_boucle ve post_boucle boruhatları ek bir yük getirmeden bir döngünü davranışını değiştirir. Bu boruhattı geliştirmeleri eklentilere SPIP’in davranışları üzerinde uyumsuzluk sorunlarını en aza indirerek daha fazla işlem yapmaya olanak tanır.

-  Dış kütüphaneler

SPIP mysql’e bağlanmak için aynen phpMyAdmin gibi davranır : eğer uzantı değiştirilmemişse ince eleyerek izinli oladuğundan emin olduktan sonra dinamik dl('mysql.so') bir yükleme kullanır. Böylece bu yöntemle konfigüre edilmiş hzimet birimleri kurar (örneğin ubuntu ).

Bir SPIP fonksiyonu dinamik yükleme isteğine olanak tanır : charger_php_extension('mysql').

Oyun sırası sizde !

SPIP’teki bu gelişmeler alışılmış internet sitelerinin ötesinde, intranet ve tüm çevrimiçi uygulamalarında kullanıcı oturumlarını birleştirerek AJAX ile kişiselleştirilmiş sayfalar oluşturulmasına ve gelişmiş etkileşimli arayüzler oluşturulmasına yol açıyor.

Notlar

[1Düzenli olarak zenginleştirilen bir siteyi tasarlamak ve bakımını yapmak çok doğal bir iştir; tabii ki biraz uzmanlık gerektirir. Kötü tasarlanmış bir editoryal yapı bir sitenin diskalifiye olmasına yol açar, çünkü güncelemeler gitgide daha da zorlaşır. SPIP’in yayın mantığı, onbinlerce makale olsa bile sitenin daima düzenli kalmasına yardım edecek editoryal yapılar eklemeye eğilimlidir .

[2AJAX: HTML sayfalarını değiştirmeyi , sayfanın sadece bir bölümünü güncellemeyi ve HTML sayfalarda görsel animasyonlar oluşturan Javascript fonksiyonları topluluğu.

Yazar : mega Publié le : Mis à jour : 14/07/23

Traductions : عربي, català, corsu, English, Español, français, Nederlands, Türkçe