22 Eylül 2010 Çarşamba

Debugging Linq

Linq sorguları yazarken yaşadığmız en büyük sıkıntı debug işlemi yaparken breakpointin sorgu içerisine girmemesi ve bu nedenle  düzgün testini yapamayışımız olmuştur.

Ancak sorgudaki kısmı yeni bir method içerine alarak sorgu içerisindeki verilerin kontrolü yapabilmekteyiz.

var customers = from customerList in dataContext.Customers
                where customerList.Title.StartsWith("M") == true
                select customerList;

Yukarıdaki sorguyu debug ederken kontrol edemiyorken

var customers from customerList in dataContext.Customers
                where IsStartingWith(customerList,"M")
                select customerList;

private bool IsStartingWith(CustomerItem customerListstring value)
{
    return customerList.Title.StartsWith(value) == true;
}

Yeni bir method ile kontrol edebiliyoruz artık.

HTTPContext in EventHandler

Listemizde item eklerken, ekledikten sonra vs. yapmak istediğimiz işlemler için veya filedlerdeki dataların kontrolü için EventReceiver geliştirebilir ve eklenen dataya göre işlemler yapabiliriz.

Sharepoint 2010 yeniliği olan validationlarla kolonlardaki kontrolleri sağlayabilir ve EventReceiver geliştirmeye gerek olmayabilir veya "Sharepoint 2010 Event Handler ve Hata Sayfası" başlıklı yazımda da belirttiğim üzere başka bir sayfaya yönlendirmek için

properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
properties.RedirectUrl = "/_layouts/MyCustomPage.aspx";

EventReceiver'ın statüsünü "CancelWithRedirectUrl" yaptıktan sonra yönelenicek sayfayı yazarak sayfa yönlendirmesi yapabiliriz.

Ancak sayfa yönlendirme yapmak istediğimizde SPUtility.Redirect methodunun çağırmak istediğimizde HttpContext tipinden bir parametre istemekte veya Response.Redirect methodunu bulamamaktayız bu sıkıntı yukarıdaki şekilde bir bakıma Sharepoint 2010 ile çözülebilirken MOSS 2007 de daha çok karşımıza çıkmaktadır.

EventReceiver'a HttpContext eklemeyi aşağıda bulabileceksiniz ancak onun öncesinde SPUtility.Redirect methodunun yönlendirme yapmadığını bundan dolayı Response.Redirect methodunu kullanmamız gerektiğini belirtmek isterim.

EventReceiverımızı oluşturduğumuz isimle aynı olacak şekilde base() den türetilecek bir method ve global oluşturacağımız HttpContext tipinden değişken ile bu işi çözebileceğiz :)

Bununla ilgili örnek kodu aşağıda bulabilirsiniz.
/// 
/// List Item Events
/// 
public class TestHttpContext : SPItemEventReceiver
{
    private HttpContext _currentContext = null;
 
    public TestHttpContext() : base()
    {
        if (null != HttpContext.Current)
        {
            _currentContext = HttpContext.Current;
        }
    }
 
    /// 
    /// An item is being added.
    /// 
    public override void ItemAdding(SPItemEventProperties properties)
    {
        base.ItemAdding(properties);
        string url = "http://www.yahoo.com/?n=" + _currentContext.User.Identity.Name;
        _currentContext.Response.Redirect(url);
    }        
}

14 Eylül 2010 Salı

Sharepoint 2010 Feature Activation in Visual Studio 2010

Bundan önceki yazılarımda ve 2010 yeniliklerinde en dikkat çeken husus visual studio 2010 ile sharepoint 2010'un birlikte çok güzel işler çıkartması olmuştur.
Bu yazımda Sharepoint 2010 projemizi deploy ederken featurların aktivasyonları ile ilgili visual studio içerisinde neler yapabileceğimiz olacaktır.

Yeni bir sharepoint projesi veya visual webpart oluşturduğumuzda projemize "Features" klasörü eklenmektedir.
Feature içerisinde nelerin olacağını proje yapınıza göre oluşturabilirsiniz.
Geliştirme ve deployment kolaylığı açısından Lists, ContentTypes, WebParts veya Modül bazlı olarak her birine yeni bir feature oluşturmak sizlere yönetim açısından rahatlık sağlayabilir.

Feature1 üzerindeyken F4 derseniz yalnızca Featureın adının yer aldığı properties ekranı gözükmektedir.
Ancak Feature1 e tıkladığımız da gelen ekran üzerinden F4 dediğinizde properties pencerisini açtığımızda Feature ile ilgili özellikleri görebilmekteyiz.
Bu ekranda "Activation on Default" seçeneği Web veya Site Scope bazında bir işlem yapmamakta yalnızca FarmScope seçili olduğunda ve yeni bir web oluşturulduğunda devreye girmektedir.

Bunun dışında feature aktifleştirme ile ilgili yapabileceğimiz diğer değişikliği projemizin özellikler ekranından görebilmekteyiz.
Burada default olarak gelen ekranda
Yükleme adımlarında "Activate Features" da seçili olduğundan featurelar aktif olarak yüklenecek.
Ancak
Default olarak gelen seçenekler içerisinden "No Activation" seçip yüklediğimizde Featurelar aktifleştirilmeyecektir.
İsterseniz proje özelliklerinin bulunduğu ekranda default gelenlerin dışında siz kendi yükleme adımlarınızı oluşturabilirsiniz.
Bu noktada proje yapısına göre hangi feature elle aktifleştirilmeli, hangisi deployment ile otomatik aktifleştirilmeli veya aktifleştirilmemeli önemli bir noktadır.
Bir bakmışsınız aktifleştirme yaparken proje ile daha önce yüklenen Sharepoint Listenizin uçtuğuna şahit olabilirsiniz!

1 Eylül 2010 Çarşamba

Lisans Tiplerine Göre Sharepoint 2010 WebPartlar

Faydalı bir paylaşımla daha tekrar buradayım :)
İlgili linkte her ne kadar custom geliştirme yapmaz Microsoftdaki abiler ne güzel geliştirmiş hatta testini de yapmış deselerde biz gene custom geliştirmeler ile projeler yapmaya devam ediyor ve edeceğiz!
Buradan lisans tiplerine göre farklılıkları ve hangi webpartın hangi lisans ile geldiğini görebilirsiniz.

SharePoint 2010 site templates

Sharepoint 2010 site templati oluşturma ve xsl güncellemeleri ile ilgili Yaroslav Pentsarskyy'in videosu ve videoda geçen kendi blog şablonumuzu oluşturduğumuz
örnek projeyi aşağıda bulabilirsiniz.
Yaroslav'un Vimeo'daki diğer videoları da izlemenizi tavsiye ederim.



örnek projeyi buradan indirebilirsiniz.