4 Mayıs 2010 Salı

Active Forums Lite 4.2.5 Sürümü

Websiteniz için DotNetNuke kullanıyorsanız, forum bileşeni olarak dilerseniz standart proje modülünü kullanabilir ya da Active Modules tarafından geliştirilen Active Forums modülünü satın alabilirsiniz.

Active Forums, sunduğu özelliklerle dikkat çeken bir modül. Ancak modülün ücretli olması ve Active Modules firmasının fiyat politikası satın alma öncesi Türkiye'deki kullanıcıları düşündürüyor.

Yine de Active Forums'u ücretsiz olarak kullanmak isteyenler için hazırlanan Lite paketini tercih edebilirsiniz. Active Forums Lite sürümünü Active Modules internet sitesinden ücretsiz olarak indirebilirsiniz.

DotNetNuke Türkiye Kullanıcı Topluluğu sitesinde de Active Forums modülünün Lite sürümünü kullanacağız. Modülün Türkçe dil dosyalarını ilerleyen günlerde ziyaretçilerimizle paylaşacağız.


3 Mayıs 2010 Pazartesi

DotNetNuke 5.3.1'den DotNetNuke 5.4.1'e Yükseltme Yaparken

Bu sabah TRDNN sürümünü DNN 5.3.1'den DotNetNuke 5.4.1'e yükseltmeye çalışırken epey uğraşmama rağmen aşağıdaki hata mesajından bir türlü kurtulamadım.

Detaylar için 05.04.01.log dosyasına baktığımda ise aşağıdaki içerik ile karşılaştım.

System.Data.SqlClient.SqlException: String or binary data would be truncated.
The statement has been terminated.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at DotNetNuke.Data.SqlDataProvider.ExecuteADOScript(String SQL)
   at DotNetNuke.Data.SqlDataProvider.ExecuteScript(String Script, Boolean UseTransactions)
  
  
/* ensure existing portal default languages have valid localization records */
DECLARE @PortalID int
DECLARE @DefaultLanguage nvarchar(10)
  
--Iterate through each portal
DECLARE Portals_Cursor CURSOR FOR
SELECT PortalID, DefaultLanguage
FROM         dbo.Portals
  
OPEN Portals_Cursor
--get first
FETCH NEXT FROM Portals_Cursor
into @PortalID,  @DefaultLanguage
WHILE @@FETCH_STATUS = 0
   BEGIN
       exec dbo.EnsureLocalizationExists @PortalID,@DefaultLanguage
  
       FETCH NEXT FROM Portals_Cursor
       into @PortalID,  @DefaultLanguage
  
   END
CLOSE Portals_Cursor
DEALLOCATE Portals_Cursor

TRDNN'de Türkçe Dil paketi etkin olduğu için bu sorunun gerçekleştiğini düşünüyorum. Çalışmalarım sürüyor, eğer sorunu düzeltebilirsem çözümü buradan paylaşacağım.

Ekleme & Sorun Çözüldü

Arkadaşlar saatler süren denemelerim sonunda 2 yöntem ile sorunu çözebildim. İlk yöntemi daha uzun süreceği ve kodda değişikliklik yapmanız gerektiği için anlatmayacağım.


İkinci yöntem için, Yönetim > Dil Kütüphanesi sayfasından sitenizin varsayılan dilini en-US yapmanız gerekiyor. Daha sonra upgrade işlemini başarılı bir şekilde tamamlayabilirsiniz.


Ek Bilgi

Her ne kadar güncelleme başarılı bir şekilde tamamlanmış olsa da varsayılan dili tekrar tr-TR yaptıktan sonra temanızdaki dil seçim düğmesine (Türk bayrağına) tıkladığınızda sorun devam edecek.

Sorunun 15 Mayıs 2010'da duyurulması planlanan DotNetNuke 5.4.2 sürümünde giderileceğini öğrendim.


2 Mayıs 2010 Pazar

Compiler Error Message BC30002 Type

DotNetNuke yazılımınızı  5.2 serisinden 5.3 veya 5.4 serisine yükseltmeye çalıştığınızda aşağıdaki gibi bir hata ile karşılaşabilirsiniz.

Line 32:         Implements System.Web.IHttpHandler
Line 33: 
Line 34:         Private Sub RenderToResponseStream(ByVal Response As Web.HttpResponse, ByVal controller As XmlController)
Line 35:             ' save script timeout
Line 36:             Dim scriptTimeOut As Integer = HttpContext.Current.Server.ScriptTimeout


Sisteminizde XML modülü yüklü ise bu sorunla karşılaşabilirsiniz. Çözüm için App_Code >> XML >> Handlers klasöründe yer alan download.vb isimli dosyayı silmeniz yeterli olacaktır. (İşlemi yapmadan önce yedek almayı unutmayın!)


DotNetNuke 5.4.1'de Telerik Rad Editor'u Etkinleştirmek

DotNetNuke 5.4.1 sürümü kullanıyorsanız, standart olarak paketin içinde yer alan bir sürprizden yararlanmak isteyebilirsiniz. Telerik RAD Editor'den bahsediyorum tabii ki. Telerik Rad Editor daha önceki yazılarımda da belirttiğim gibi varsayılan içerik düzenleme bileşeni olan FCK'nın alternatifi olarak kullanabileceğiniz ve çok daha iyi menülere ve özelliklere sahip bir yazılım.

DotNetNuke 5.4.1 sürümünde Telerik RAD Editor'u etkinleştirmek isterseniz, web.config dosyasında aşağıdaki satırı bulun.
<htmlEditor defaultProvider="FckHtmlEditorProvider">

Daha sonra bulduğunuz satırı aşağıdaki satır ile değiştirin.

<htmlEditor defaultProvider="TelerikEditorProvider">

Web.config dosyasını kaydedin ve Telerik Rad Editor'u kullanmaya başlayın :)


30 Nisan 2010 Cuma

DotNetNuke 5.4.1 Sürümü Duyuruldu

Açık kaynaklı içerik yönetim sistemi yazılımı DotNetNuke 5.4.1 sürümü ile karşımızda. Yeni sürümde Net Framework 4.0 desteği ile birlikte gelen yeni özelliklerde yapılan iyileştirmeler dikkat çekiyor. Henüz DNN 5.4.1 sürümünü test etme fırsatını bulamasam da, önümüzdeki hafta içinde bu sürüme ilişkin testlerime başlamayı planlıyorum. Sürüm notlarını önümüzdeki günlerde paylaşacağım.


19 Nisan 2010 Pazartesi

DotNetNuke 5.3.1 Sürümünde Yerelleştirme Sorunu

Bu sabah DotNetNuke 5.3.1 sürümü için Türkçe Dil Paketi çalışmalarına başladığımda ilginç bir sorunla karşılaştım. Aslında dil paketi oluşturma işlemini yarıda bırakmıyor, ancak bu sorun süreci biraz geciktirecek bir sorunmuş gibi görünüyor...

Sorunun Tanımı
  • DotNetNuke 5.3.1 sürümünü kur ya da mevcut sürümü bu sürüme yükselt
  • Host kullanıcısı ile giriş yap ve Admin > Languages menüsüne git
  • Dil Düzenleme menüsünde Sistem ve Türkçe ayarlarını seç
  • Düzenlemek için sol panelden bir sayfa seç ve birkaç anahtarı düzenle
  • Değişiklikleri kaydet
Sonuç

Güncelleme/kaydetme işleminden sonra aynı sayfada kalmanız gerekirken, sistem sizi Dil Kütüphanesi'nin anasayfasına götürüyor.

DüzeltmeŞimdilik bir düzeltme yok, ancak kaynak kodlarını inceliyorum. Düzeltmeyi bulduğumda bu sayfada paylaşacağım.


14 Nisan 2010 Çarşamba

DotNetNuke'de Friendly URL ve Türkçe Karakter Sorunu

Not defterimde DotNetNuke ile ilgili çalışmalarımdan sık sık bahsediyor ve zaman zaman ziyaretçilerimden geri bildirim alıyorum. Geçtiğimiz günlerde de bir ziyaretçim iletişim formundan bana ulaşarak sayfa adında kullanılan Türkçe karakterlerin hem navigasyon menüsünde hem de sayfa adresinde (url) sıkıntı yarattığını ve bu sorunu nasıl giderebileceğini öğrenmek istediğini belirtti.

Detaylara çok fazla girmeden yapılabileceklerden bahsedelim:

DotNetNuke varsayılan olarak TabName (sayfa adı) alanına girilen veriyi değiştirmeden TabPath alanına da (\\ ön eki (prefix) ile) kayıt ediyor.

Eğer sayfa adında Türkçe karakter varsa, bu durum bazı arama motorlarının (örn. Google ve Yahoo) sitenizi ziyaret eden örümceklerinin tuhaf bir şekilde Olay Günlüğü'ne hata logları bırakmasını da beraberinde getiriyor.

Özetle hiç de istenilmeyen bir durum gerçekleşiyor. Düşünsenize, sitenize her gün giren robotlar giriş yaptıkları (Türkçe karakter içeren) her sayfa için Event Viewer'a bir işaret bırakıp ayrılıyor.

Bir programcı persfektifinden baktığımızda, DNN'in yapı olarak son kullanıcı tarafından düzenlenebilen bir TabPath (sayfa lokasyonu) sütununa sahip olması gerekiyor. Bu özellikle ilgili Support Tracker'a daha önceden açtığım kayıtlara göz atabilirsiniz.

Bu konuyu ayrıca Documents Modülü'nü geliştirirken birlikte çalıştığımız Mitch Sellers ve Yerelleştirme konusunda zaman zaman fikir alışverişi yaptığımız Sebastian Leupold ile de görüştük. Her ikisi de bu dezavantajın yakın gelecekte düzeltileceğini düşünüyor.

Peki sorunu çözmek için ne yapmalıyız?

Eğer oluşturduğunuz sayfaya ait seçenekleri (sayfa adı, açıklama, anahtar kelimeler, ana sayfa, sayfa yetkileri, tema vb) bir daha asla düzenlemeyecekseniz, veritabanına doğrudan müdahale edebilirsiniz.

Bu müdahaleyi yapmak için SQL Server Management Studio'yu (eğer direkt erişim imkanına sahipseniz), ya da barındırma hizmetini sağlayan firmanın veritabanı yönetim panelini kullanabilirsiniz.

Yapacağınız işlem, Tabs tablosunda ilgili sayfaya ait TabPath değerini değiştirmek. Örneğin, sayfa adımız İletişim olsun. Arama motorlarına ve ziyaretçilere sayfayı sevdirmek için tabpath girdisini iletisim olarak ayarlayabilirsiniz.

İşi biraz daha ilginç hale getirmeye ne dersiniz?Tabpath sütununda ilgili satıra isterseniz sayfa adından tamamen bağımsız bir değer de girebilirsiniz. Örn. sayfa adında kullanılan İletişim yerine iletisim-formu girdisini tabpath'e ekleyebilirsiniz.

Sonuçları almak için ne yapmalı?Elbette bu yöntemi kullandığınızda, sonuçları görebilmek için uygulamayı Host > Host Ayarları menüsünden yeniden başlatmanız, ya da sistemin kök dizininde yer alan web.config dosyasında ufak bir hileye (dosyaya boş bir satır eklemek) başvurmanız gerekecek.

Unutmadan!

Tekrar belirtmekte fayda var. Eğer tabpath yöntemini kullanacaksanız, sayfa ayarlarını güncellemek zorunda kaldığınızda tabpath değeri yeniden eski değerine (ya da o an sayfa adına hangi değeri yazdıysanız o değere) dönecek. Eğer sorun değil, ben uğraşmayı severim derseniz, tekrar bahsettiğim yöntemi uygulayabilirsiniz.

Alternatif olarak pazarda sunulan ücretli ve ücretsiz modülleri kullanabilirsiniz. Bunlardan bir tanesi Bruce Chapman tarafından geliştirilen iFinity URL Master (ücretli) modülü. Daha önceki denemelerimde başarılı sonuçlar aldığım bu modülü (yukarıdaki senaryo size uymuyorsa) alternatif olarak önerebilirim.