Thursday, February 02, 2012

Bu yazımızda SharePoint de kullanmamız için kendi özel alan tipimizi (custom field type) nasıl yaratacağımızı göreceğiz. Yine her zaman olduğu gibi örnek bir senaryo üzerinden, gerçek hayat örnekleriyle geliştirmemizi yapacağız.

Bir SPList üzerinde e-mail bilgisinin tutulması için özel bir alana ihtiyacımız olduğunu ve bu alanın mutlaka e-mail kriterlerine uyması gerektiğini daha önceden analist arkadaşlarımız bize bildirmişler ve bu konuda bizden birşeyler bekliyorlar.

İlk iş olarak Visual Studio 2010 ile boş bir (Blank Solution) SharePoint 2010 projesi açıyoruz. Daha sonra projemize, bu özel alanı tanımlayacağımız bir class ekliyoruz. Ben EmailField.cs dedim siz başka bir isim de verebilirsiniz. Bir class daha ekleyip bu sefer adına da EmailValidationRule.cs dedim, bu sınıf aracılığıyla da e-mail validasyonunu yapacağız.

EmailValidationRule.cs classımızın tek görevi validasyon, bu sınıfımızın görüntüsü şu şekilde oluyor :

Görüldüğü gibi, basit bir regex ile e-mail kontrolü yapılıyor. Sıra EmailField.cs ye geldi, bu class ımız da şu şekilde olacak :

Burada dikkat etmemiz gereken metod GetValidatedString metodu. Override ettiğimiz bu metod ile alanımızın gerçekten bir e-mail olup olmadığına bakıyoruz. Bu kontrolü de az önce yazdığımız EmailValidationRule.cs de bulunan kontrolle yapıyoruz. Eğer girilen değer geçerli bir e-mail adresi değilse, SPFieldValidationException fırlatarak son kullanıcıya bu hata hakkında bilgi veriyoruz. EmailField.cs de 2 adet constructor da kullandığımızı görmüşsünüzdür. Bu sınıf hakkında son olarak da default bir değer atayabilirdik, info@abc.com gibi, bunu da DefaultValue metodunu override ettiğimiz metotda return info@abc.com diyerek yapabilirdik. Ben yapmadım ama eğer size lazım olursa bu şekilde kullanabilirsiniz.

Projede yapmamız gereken son bir adım daha kaldı, o da projeye “mapped folder” eklemek. Bunun için projeye sağ tıklayıp Add -> SharePoint Mapped Folder diyoruz. Karşımıza çıkan ekrandan ise TEMPLATE altındaki XML i seçiyoruz.

Böylece projemize XML folderini maplemiş olduk. Şimdi de bu foldera yeni bir XML dosyası ekliyoruz.

Add -> New Item -> XML File, ben dosyanın adını fldtypes_customemail.xml dedim. Dosyanın adının fldtypes_ ile başlamasına dikkat edelim. XML dosyamızın içeriği de şu şekilde olacak :

Burada özel alan tipimiz hakkında bilgiler veriyoruz servera. Dikkat etmemiz gereken en önemli yer, FieldTypeClass kısmındaki verinin bizim projemizdeki doğru Namespace ve class ismini almış olması.

Artık herşey tamam, projemize sağ tıklayıp “Deploy” diyoruz ve SharePoint sitemizi açıp yeni bir custom list oluşturuyoruz (ya da var olan bir liste üzerinde de deneyebiliriz)

Listemizin ayarlar (settings) kısmından yeni bir kolon eklemeye çalışıyoruz,

Gördüğünüz gibi, az önce XML dosyasından “TypeShortDescription” kısmına yazdığımız değer burada yeni özel tipimizi gösteriyor. Yeni tipimizle yeni bir kolon ekleyip gerçekten de çalıştığını siz de görebilirsiniz.

Umarım işinize yarar bir yazı olmuştur.

Thursday, February 02, 2012 2:33:01 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Sunday, October 30, 2011

Bazı senaryolarda dış kaynaklardan gelen verileri SharePoint ortamında bir listede tutmamız gerekebilir, bazen de birtakım denemeler yapmak için dolu listelere ihtiyacınız olabilir benim gibi. Bunu bazen bir WCF servisi ile bazen belki de bir FileSystemWatcher kullandığımız basit bir konsol uygulaması olarak bile düşünebiliriz. Ben çok basit bir konsol uygulaması üzerinde bu işi nasıl yapabilirizi anlatmaya çalışacağım.

Önce Visual Studio 2010 da bir konsol uygulaması projesi başlatıyoruz. Uygulamayı Framework 3.5 a çekelim ve 64 bit modda çalışacak şekilde ayarlayalım. Test projesi olduğundan ben daha önce yarattığım “largelist” adında önemsiz bir listeye kayıtlar atacağım ve atacağım bu kayıtları oluşturması için random string üreten bir metod ekliyorum kodlarıma.

Daha sonra asıl işi yapacak kısıma geliyoruz yavaş yavaş. Projemize Microsoft.SharePoint dll ini referans eklememiz gerekiyor. Kullanıcının hangi listeye kaç adet gireceğini kendi belirlesin istedim ve şöyle bir görüntü çıktı karşımıza.

Gördüğünüz gibi gayet basit, ben burada sadece “Title” kolonunu kullandım, siz birden fazla kolonu olan bir listeyi deneyebilirsiniz. Dilediğimiz kadar ListItem ları listemize programmatik olarak ekleyerek işimizi kolaylaştırabiliriz.

Sunday, October 30, 2011 8:27:37 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Wednesday, September 14, 2011

Business Connectivity Services yani kısaca  BCS yi SharePoint Server 2007 de Business Data Catalog olarak tanıyorduk. CRM (Customer Relationship Management)  ve ERP (Enterprise Resource Planning) gibi sistemler, SharePoint ile kolay kolay çözülemediğinden, bu sistemlerin özel rolleri vardır. Sonuç olarak,  farklı görevleri olan bu sistemler ve SharePoint server arasında ortak çalışabilir yapıların sağlanabilmesi gerekebilir. BCS bize, SharePoint tabanlı verilerimizin dışarıya açılmasına olanak veriyor, bu özellik sayesinde dış kaynaklardaki verileri okuyabiliyor ve direk SharePoint siteleri veya webpartlar aracılığıyla düzenleyebiliyoruz. BCS nin standart özelliği olan SharePoint Search ile artık ilişkisel veritabanlarınızdaki verileri alıp SharePoint sitenizin güçlü arama modülleri ile de kullanabilirsiniz.

BCS Servisleri,  BDC (Business Data Connectivity Service) ile yönetilir. Buradaki BDC yi, yukarıda bahsettiğim “Business Data Catalog” olan BDC ile karıştırmayın lütfen. BDC diyince artık BCS servislerini konfigüre etmemize yarayan servis aklımıza gelsin.

Biraz BCS terimlerini açalım :

·         External System : BCS nin bağlanabileceği herhangi bir veri kaynağı

·         External Content Type (ECT) : Dış bir sistemle bağlanabilmek için alanların ve operasyonların tanımı

·         External Data : Dış bir sistemle birlikte kullanılan veri

·         External List : Dış veriyi baz alan, SharePoint üzerinde bir liste

·         External Data Column : Kaynağı dış bir sistem olan standart bir library ya da list de bulunan bir kolon

·         External Data Web Part : Dış veriyi gösterebilen herhangi bir web part

BDC yi kullanarak External Content Type ları, External Sistemleri (SQL Server vs.) ve BDC modellerini yönetebiliriz. BDC 2 tip XML tanımını destekler,

1.       Application Models

2.       Resource Files

Application Model (Uygulama Modeli) , ECT nin XML tanımlarını içerir, Resource File (Kaynak Dosya) ise dışarınan alınan veya dışarıya verilen özellikleri ve izinleri tanımlar.

BCS şu aşağıda bulunan External Data tiplerine bağlanabilir :

  • SQL Server Veritabanı
  • SAP Uygulamaları
  • Web Servisleri (WCF de dahil )
  • SharePoint tabanlı web siteleri
  • 3rd Parti uygulamalar

Şimdi bir örnek üzerinden giderek somut birşeyler görelim. Ben BDC servisini bir SQL Server veritabanına bağlayacağım.

Deneme yapmak amacıyla “bcs_test” adında bir veritabanı oluşturdum ve “arabalar”  adından bir tablo yarattım. “marka”, ”model”  ve “ulke” varchar(50) tipinde 3 alan ekledim tabloya. İçini de dummy verilerle doldurdum. Yani dış veri kaynağımızı oluşturdum aslında.

Sırada SharePoint Designer 2010 ile yapacaklarımız var. SPD yi açıyoruz. Soldaki navigasyon menüsünden “External Content Types” a tıklıyorum.

Yukarıda bulunan ribbon üzerinden, yeni bir ECT yaratmak için “External Content Type” a tıklıyorum. Daha sonra açılan ekranda da “Name” ve “Display Name” alanlarını “arabam” olarak düzenliyorum.

Daha sonra “Click here to discover external data sources and define operations” yazan mavi linkli yazıya tıklıyorum.

 Gelen ekranda “Add Connection” ı tıklıyorum ve External Data Type olarak da SQL Server seçiyorum ve Ok diyorum.

 

Ve karşımıza yarattığımız tablomuz geliyor.

Bu ekranda “arabalar” tablomuza sağ klikliyoruz ve “Create All Operations” diyoruz. Bu sihirbaz yardımıyla, CRUD işlemlerimiz için gereken bütün operasyonları gerçekleştireceğiz.

Burada tek dikkat etmemiz gereken, tablomuzda unique bir alanımızın olması. Ben burada “marka” alanını unique varsaydım ve “marka” alanı seçili iken “Map to Identifier” kutusunu seçip devam ettim. Eğer herhangi bir sorun yaşamazsanız şu şekilde birşeyler görmeniz gerekiyor :

Herşey yolundaysa, ribbondan “Create Lists & Form ” u tıklayıp devam ediyoruz. Yeni gelen ekranı dolduruyoruz. Liste ismini “arabalarim” yaptım, screen shot u aldığım esnada “arabalarım”di, tekrar screen shot almaya üşendim J

 İşlem tamam ! External Listemiz SharePoint e  deploy oldu bile !

Şimdi SharePoint sitemize gidip listelere baktığımızda “arabalarim” adlı bir liste  görmelisiniz. Yani SQL  Server veritabanınızdaki verileri  BCS kullanarak SharePoint 2010 da gösteriyorsunuz artık !

Bir ihtimal “Access Deny” hatası almış olanlarınız olabilir, bunun için :

1.       Central Administration ı açıyoruz

2.       Application Management altındaki Manage Service Applications a gidiyoruz

3.       Business Data Connectivity Service e tıklıyoruz

4.       Burada benim yarattığım ECT nin adı “arabam” idi. Onu görüyorum ve sağ tıklıyorum üzerine, siz de kendi ECT nizi görüyor olmalısınız

5.       Set Permissions ı seçiyorum ve gerekli kişilere haklarını veriyorum.

Artık tek bir satır kod yazmadan, arabalar tablosu üzerinde edit/delete/create  işlemlerimizi yapabiliyoruz. Tek ihtiyacımız olan SPD .

Listeye bir eleman eklediğinizde, aynı zamanda bunun veritabanına da eklendiğini kendiniz de test edebilirsiniz.

Çok basit bir girişle BCS yi anlatmaya çalıştım, umarım işinize yarar bir yazı olmuştur.

Wednesday, September 14, 2011 10:45:25 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Friday, August 26, 2011

Bildiğiniz gibi SharePoint üzerinden gerçekleşen iş akışı, görev atanması, kitaplıklara döküman eklendiğinde alarm verme gibi durumlarda, ilgili kişi yada kişilere SharePoint mail ile bilgilendirme yapabiliyor.Bunu yapabilmemiz için, SharePoint in üzerinde çalıştığı server a bir smtp server tanımlanması gerekmekte. Bu yazıda da bu konfigürasyon işini bir Gmail hesabı üzerinden nasıl yaptığımızı göreceğiz.

1. Öncelikle Control Panel e gidip Turn Windows Features on or off dan smtp server yüklüyoruz.

Add features den next next diyerek bu adımı kolayca bitiriyoruz.

2. Administrative Tools altındaki IIS 6.0 Manager i açıp, bilgisayar adının yazdığı düğümü açtığımızda altta SMTP Virtual server linkini göreceğiz. Burada sağ tıklıyoruz. Access tabında, Relay e tıklıyoruz, “All except the list bellow” i seçip OK diyoruz. Delvery tabında “Outbound Security” yi tıklıyoruz. Yeni açılan pencerede de Basic Authentication i seçiyoruz ve Gmail mail adresimizi ve şifremizi giriyoruz. TLS Encryption u da seçmeyi unutmayalım.

3. Delivery tabında “Outbound connections” tıklıyoruz ve yeni açılan pencerede TCP portunu 587 olarak ayarlıyoruz. Yine delivery tabında “Advanced” e tıklıyoruz ve smart host alanına “smtp.gmail.com” yazıp OK diyoruz.

Apply deyip pencereleri kapatıyoruz.

4. Sıra SharePoint Server ı konfigüre etme kısmına geldi, SharePoint Central Administration ı açıyoruz ve System Settings den Configure outgoing e-mail settings e tıklıyoruz. “Outbound SMTP server” kısmına bilgisayarımızın ismini yazıyoruz. From address kısmına da Gmail adresimizi yazıyoruz ve OK diyoruz.

Bu kadar !

Burada ben Windows Server 2008 R2 Ingilizce kullandığım için menü isimlerini olduğu gibi yazdım, diğer diller için karşılık gelen isimlendirmeler konusunda sıkıntı yaşamayacağınızı umuyorum.

Artık SharePoint server inizdan Gmail hesabınız aracılığıyla bildirim e-mailleri almaya başladınız. Umarım işinize yarar bir yazı olmuştur.

Friday, August 26, 2011 12:56:47 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Tuesday, August 16, 2011

“SharePoint 2010 u dosya paylaşım ortamı olarak da kullanıyoruz” diyen birçok IT elemanı görmüş olabilirsiniz. “Nasıl kullanılır, neler yaparız ?” diye sorarsanız ilk sayacakları özelliklerden biri de Excel dosyalarını browser (tarayıcı) üzerinden açıp dosya üzerinde değişiklik yapabildikleri olur tahminen.

Biz de bu senaryo üzerinden giderek kendi senaryomuzu gerçek hayata yakın bir şekilde değiştirelim, SharePoint 2010 ortamında her gün rapor paylaşan bir test ekibiniz olduğunu düşünün. Bu adamlar her sabah, bir önceki güne dair test sonuçlarını SharePoint üzerinde bir Form Library (Kitaplık) üzerinden yayınlıyor olsun. Bu test sonuçlarını merak eden ve izleyen de bir grup IT ekibinizin olduğunun varsayın. Normal şartlarda bir form library yaratmak ve excel dosyalarını buradan dağıtmak/paylaşmak çok çok basit bir iş ancak bizim senaryomuzda IT ekibimiz, görmek istediği excelleri kendi bilgisayarına indirmeden, browser üzerinden görmek istiyor

Eğer standart bir kurulum yaptıysanız, normal şartlar altında bir form library de bulunan excel dosyasını “View In Browser (Tarayıcıda Görüntüle)” dediğinizde,

Şu şekilde bir hata alırsınız :

Bu hatanın çözümü ise şu şekilde :

  • 1) Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML\ e gidiyoruz ve serverfilesExcelServer.xml dosyasını açıyoruz.
  • 2) xls ya da xlsx uzantılı mappingleri commentliyoruz, yani şöyle bir hale gelecek dosyamız

    şeklini alıyor.
  • 3) IISRESET
  • İşlem tamam :)

Tuesday, August 16, 2011 5:19:32 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Thursday, June 30, 2011

SharePoint i hayatımızı daha fazla kolaylaştırmak için kullanmaya bir örnek yapacağız. Senaryomuz ise çoğumuzun şirketlerde yaşadığı tatil organizasyonu hakkında. Yaz aylarının gelmesi ile personelimiz sırayla tatile gidecek ama kalabalık bir ekibin tatil organizasyonunu yapmak bazen sıkıntılı süreçlere sebep olabilir. Tam bu sırada devreye SharePoint Calendar (Takvim) giriyor. 10 kişilik bir IT ekibinizin tatil haftalarını kolayca SharePoint Calendar ile organize ederek hem işinizi kolaylaştırmış hem de bütün ekibin tek bir noktadan görebileceği bir alan yaratmış olacağız. Böylece yaşanabilecek olası organizasyonel sorunları da minimuma indirmiş olacağız. Kişilerin birbiri ile beraber çalıştığı projelerde hayati önem taşıyabilen durumlarda, kim, kimin ne zaman şirket dışında olduğunu görebilecek ve kendi proje planlarını bu takvime bakarak revize edebilecek. Zaten SharePoint in ana görevlerinden biri de bu ortak çalışmaları sağlıklı bir şekilde yönetebilmek(Collaboration).

Böyle kalabalık bir IT ekibinin proje yöneticisi olduğunuzu düşünün ve hemen SharePoint Team Site ımızı açalım. Burada hazır gelen Calendar ı da kullanabiliriz veya sadece tatil zamanlarını yönetmek için yeni bir calendar oluşturabiliriz. Ben yeni bir calendar oluşturuyorum ve bu calendara da “IT_Holiday” ismini veriyorum. (Sol menüden Lists e tıklayıp gelen sayfada Create -> List tabından Calendar seçiyoruz)

Calendar ımız hazır. Şimdi nasıl kullanacağımızı görelim.
Tatile gidecek ilk 3 kişi tatil planlarını şu tarihlerde yapmışlar :

  • Can : 4 Temmuz 2011 – 11 Temmuz 2011
  • Berk : 25 Temmuz 2011- 3 Ağustos 2011
  • Ayşe : 1 Ağustos 2011 – 15 Ağustos 2011

Daha önceden bu tarihleri ekibinizden almış olduğunuzu varsayıyoruz. Can ın tatil planını calendara girmek için 4 Temmuz 2011 tarihinin üzerine mouse u getirdiğimizde

“+Add” linkinin çıktığını göreceğiz. Bu linke tıklayınca açılan pop-up menüden Can ın tatil tarihlerini aşağıdaki gibi gireceğiz ve Save diyerek kaydedeceğiz.

Calendar ımızın Temmuz ayına gittiğimizde net bir şekilde Can ın olmadığı tarihleri herkes tek bir noktadan görebilecek.

Diğer ekip üyelerini de buradan girerek olayımızı tamamlayacağız. Gördüğünüz gibi birkaç adımda, karmaşalara neden olabilecek bir vakayı engellemiş olduk. Umarım işinize yarar bir makale olmuştur.

Thursday, June 30, 2011 7:52:31 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Wednesday, June 22, 2011

Wednesday, June 22, 2011 4:59:53 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Friday, June 17, 2011

Bu makalede, SharePoint üzerinde bir SPList yaratan minik bir windows uygulaması yapacağız. Bu işlemi yaparken SharePoint içinde hazır gelen Web Servis altyapısını kullanacağız. Visual Studio 2010 ile yeni bir windows uygulaması projesi başlatalım. Formumuza bir textbox bir label ve bir button koyalım. Benim formum şöyle oldu.

Daha sonra projemize Add Service Reference diyerek, WebService URL imizi giriyoruz. Bu url genel olarak http:///_vti_bin/Lists.asmx yani benim için http://ty-suleymanpete/_vti_bin/Lists.asmx idi. Burada karşımıza gelen “AddList” metodunu kullanacağız. Textboxa, yaratacağımız listenin adını yazıp, butona tıkladığımızda, listemiz yaratılacak. Buton un onclick kısmına ise şu kodları yazacağız ;

Burada AddList metodunu inceleyecek olursak, ilk parametre olarak Liste Adı, ikinci parametre olarak Liste Tanımı ve son olarak da integer bir değer olan Template Id istiyor. Template ID kısmına neden 100 yazdık diye soranlar için şöyle bir tablo vereceğim.

Son olarak, app.config de ki security ayarlarımızı da

Şekline getirmemiz gerektiğini belirtelim, aksi takdirde authentication hatalarına maruz kalabilirsiniz.

Görüldüğü gibi gayet kolay, umarım yararlı bir makale olmuştur.

Friday, June 17, 2011 9:28:28 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Wednesday, May 11, 2011

Eğer 64 bit bir Windows 7 işletim sisteminiz var ve kendi lokal makinenizde SharePoint çalışmak istiyorsanız, hemen Easy Setup Script i deneyin derim . Bu minik exe size, kendi geliştirme ortamınızı yaratmak için çok yardımcı olacak ...

Easy Setup Scripti İndir

Wednesday, May 11, 2011 10:49:08 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Wednesday, April 27, 2011

Merhaba,

SharePoint 2010 makalelerine vakit buldukça kendimce önemli olan konulardan devam etmek istiyorum.

Bu sefer anlatmak istediğim konu “Event Receivers” yani Türkçesi ile “Olay Algılayıcıları” dersek sanıyorum çok yanlış olmaz. SharePoint in ne kadar güçlü bir altyapıya sahip olduğunu tekrar söylememe gerek yok diye düşünüyorum ki Event Receiver lar da SharePoint e güç katan önemli bir özelliktir diyebiliriz.Ayrıca SharePoint in barındırdığı bu Event Receiverlar çok geniş bir yelpazeye sahiptir. Bir Event Receiverı,  SharePoint List, ListItem ya da Site için kullanabilirsiniz. Kabaca özetleyecek olursak, SharePoint ekosisteminde bir olay meydana geldiğinde, bu olayı yakalayıp başka aktiviteleri tetiklemeye yarar. Örneğin, şirketinizin İK departmanı, personeli ilgilendiren dökümanlarını Custom bir SharePoint List üzerinde paylaşıyor olsun ve siz de bir çözüm geliştirici olarak personelin hayatını kolaylaştırmak adına, her yeni döküman eklenildiğinde personele e-mail atarak yeni döküman eklendiği bilgisini vermeyi düşünüyorsunuz. Bu işlemi otomatize etmek için imdadınıza EventReceiver lar koşacaktır.

Lafı fazla uzatmadan, basit bir örnek üzerinden giderek icraate geçelim.

Öncelikle boş bir SharePoint 2010 projesi oluşturuyorum ve ERTest olarak adlandırıyorum.Proje tipini de Deploy as a Farm Solution olarak seçiyorum.
Daha sonra SharePoint sistemim üzerinde IKDocs adında bir Document Library oluşturuyorum.
Tekrar Visual Studio tarafına geçiyoruz ve projemize Add New Item diyerek bir EventReceiver ekliyoruz, ben bu EventReceiver in ismine IKDocsER dedim. Karşımıza bir ekran gelecek, buradan Event Receiver ımızın nereleri ve neleri izleyeceğini belirliyoruz. “What type of Event Receiver do you want?” sorusuna “List Item Events” diyoruz, “What item should be the event source?” sorusuna “Document Library” diyoruz, Handle the following events yani hangi olayları izlememi istiyorsun kısmında ise “An item was added” i seçiyoruz sadece. (Siz bu kısımda birden fazla seçenek seçebilirsiniz ama hepsi için ayrı ayrı handle eden kodları da yazmanız gerek)

public override void ItemAdded(SPItemEventProperties properties)
       {
           base.ItemAdded(properties);
 
       }

 

Yukarıdaki şekilde hazır gelen kodumuzu şu şekilde değiştiriyoruz.

         public override void ItemAdded(SPItemEventProperties properties)

       {

           base.ItemAdded(properties);

           if (properties.ListTitle == "IKDocs")

           {

               //your logic ...

               //properties.ListTitle

           }

       }

Burada şunu yapıyor kodlarımız,  doküman eklenen Document Library miz “IKDocs”  mü değil mi kontrolü öncelikle. Daha sonra istediğimiz işi yapabiliriz, burada mail atma ve buna benzer işlemler tamamen size kalıyor. ItemAdded metoduna gelen SPItemEventProperties tipindeki properties değişkeninden size gereken bilgileri de alabilirsiniz...Burada birsürü şey yapılabilir, örneğin bu Document Library ile ilişkilendirilmiş bir workflow start edilebilir, announcements olarak başka yerlere de bildirimler yapılabilir vs. Gerisi tamamen sizin ihtiyaçlarınıza ve hayal gücünüze kalıyor. Özetle, IKDocs adlı document library mize yeni bir eleman eklendiğinde kodlarımız tetikleniyor.

Event Receiver lar konusuna da böylece değinmiş olduk. Umarım işinize yarar bir makale olmuştur.

Wednesday, April 27, 2011 10:15:21 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Friday, April 22, 2011

Bu makalede SharePoint in önemli parçalarından olan WebPart ların birbiri ile nasıl konuşabileceğine dair bir örnek geliştireceğiz.

Öncelikle örneğimizde kullanmak için bir custom SPList oluşturalım. Site Actions > More Options > List > Custom List. Custom Listemize ben “Dersler” dedim. Siz istediğiniz gibi isimlendirebilirsiniz. Bu listeye elemanlar ekleyeceğim.(Matematik, Fizik, Geometri, Kimya...)

Listemi oluşturduktan sonra Visual Studio 2010 da yeni bir Empty SharePoint projesi oluşturuyorum ve proje ismini de “ConnectedWP” olarak belirliyorum.

Projeme bir Interface ekliyorum. IDers.cs (Add > New Item, Visual C# altından Code sekmesinden Interface seçiyorum)

namespace ConnectedWP { public interface IDers { int Id { get; } string Name { get; } } }

Daha sonra projemize, Provider WebPart ımızı ekliyoruz. (Add > New Item > WebPart), ismini ProviderWebPart olarak belirliyorum.

public class ProviderWebPart : WebPart kısmını, yeni interface imi kullanacak şekilde değiştiriyorum, yani şöyle oluyor : public class ProviderWebPart : Microsoft.SharePoint.WebPartPages.WebPart, IDers

Daha sonra, sınıfımızın içerisini şu şekilde dolduruyoruz :
DropDownList _projectPicker = null; int IDers.Id { get { return int.Parse(_projectPicker.SelectedValue); } } string IDers.Name { get { return _projectPicker.SelectedItem.ToString(); } }

Ardından da CreateChildControls metodunun içini şu şekilde değiştiriyoruz.

base.CreateChildControls(); try { _projectPicker = new DropDownList(); using (SPSite spSite = new SPSite(SPContext.Current.Web.Url)) using (SPWeb spWeb = spSite.OpenWeb()) { SPList projectsList = spWeb.Lists["Dersler"]; foreach (SPListItem project in projectsList.Items) { _projectPicker.Items.Add(new ListItem(project.Name, project.ID.ToString())); } } _projectPicker.AutoPostBack = true; this.Controls.Add(_projectPicker); } catch (Exception ex) { this.Controls.Clear(); this.Controls.Add(new LiteralControl(ex.Message)); }

Son olarak da WebPartlarımız arası bağlantı noktasını oluşturacak kodumuzu ekliyoruz,
[ConnectionProvider("Ders Adi ve ID")] public IDers HerhangiBisey() { return this; }

Sıra şimdi Consumer WebPartımıza geldi, ilk WebPartımızı eklediğimiz gibi bunu da aynı şekilde ekliyor ve adını “ConsumerWebPart” koyuyorum. WebPart ın kod kısmına geçip class tanımının hemen altına şunları ekliyorum (Dikkat ederseniz burada, WebPartımızın türediği kısma dokunmadık)

IDers _provider = null; Label _lbl = null;

Yine CreateChildControls metoduna gidip şu şekilde değiştiriyoruz :

base.CreateChildControls(); try { _lbl = new Label(); if (_provider != null) { if (_provider.Id > 0) { _lbl.Text = _provider.Name + " seçildi."; } else { _lbl.Text = "Henüz hiçbirşey seçilmedi."; } } else { _lbl.Text = "Provider WebPart bağlantısı yok."; } this.Controls.Add(_lbl); } catch (Exception ex) { this.Controls.Clear(); this.Controls.Add(new LiteralControl(ex.Message)); }

Ve yine son olarak WebPart lar arası bağlantıyı kuracak kod bloğumuzu da ekliyoruz :
[ConnectionConsumer("Ders Adi ve ID")] public void BurasininIsmıFarkEtmez(IDers providerInterface) { _provider = providerInterface; }

Artık WebPartlarımızı deploy edebiliriz. Deploy ettikten sonra bir WebPartPage oluşturup (SiteActions > More Options > Page > WebPartPage), bu sayfada , deploy ettiğimiz WebPartları kullanıp test edebiliriz. Ben sayfama “ConnectedWPTest” adını verdim ve SitePages in altına koydum. Daha sonra WebPart larımı bu sayfaya eklemek için herhangi bir yerden “Add a Web Part” seçtim ve Custom kategorisi altında bulunan ConsumerWebPartımı sayfaya yerleştirdim.

Aynı şekilde Provider WebPartımı da ekliyorum. En son adım olarak da, WebPartları birbirine bağlama işlemi için, ProviderWebPart ın “Connections” kısmına gidip, “Send Ders Adi ve ID to Consumer Web Part” ı seçiyorum.

İşlem tamam, sayfama gidip test ediyorum, DropDownList de bulunan dersler (ilk adımda yarattığımız SP Custom List den doluyor) den birini seçtiğimde, ConsumerWebPart ımda bulunan Label değişiyor.


Umarım işinize yarar bir makale olmuştur.
Friday, April 22, 2011 11:05:11 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Tuesday, March 29, 2011

SharePoint üzerindeki döküman kütüphaneleri (document library) ve bazı tip listelerin e-mail özelliği etkinleştirilerek, kullanıcı arayüzü kullanmadan bu listelere ve döküman kütüphanelerine eleman eklenebileceğini biliyor muydunuz ?

Tuesday, March 29, 2011 8:36:21 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Tuesday, February 15, 2011

SharePoint makaleler dizisine kurulum kısmından başlamayı düşünmüştüm ilk önce, daha sonra bu konuda yazılmış MSDN kaynaklarının olduğunu düşününce kurulum ile ilgili tekrar benzer bir yazı yazmaktan vazgeçtim, ancak kurulum konusunda sıkıntısı olanlar önce buraya bir göz atarlarsa, daha sağlıklı ilerleyebilirler.

SharePoint kurulan bir makinede default bir site collection da otomatik olarak yaratılmış olur, bu genellikle http://makineadı şeklinde olur. Site collection da nereden çıktı, nedir bu site collection diyenler olabilir, kendi içinde top level bir site barındıran ve buna ilave olarak birden fazla child SharePoint site barındırabilen bir barınak diyebiliriz kabaca. Neden site collectionları kullanırız dersek, örneğin, satış departmanınız kendi işleriyle ilgili bir site collection kullanırken, pazarlama departmanınız başka bir site collection kullanmak isteyebilir. Bu yapı bize, her departmanın kendi kullanıcılarını belirleyip kendine özel güvenlik seviyeleri belirlemesine ve kendi yapısına uygun olarak alt sitelere de yetki verip vermeme olanağını sağlamaktadır.

Benim makinemin ismi SULEYMAN_PC olduğu için top level SharePoint sitemin adresi de http://suleyman_pc .SharePoint Foundation , 64 bit Windows 7 üzerine kurulduktan sonra otomatik olarak bu site de yaratıldı. Şu aşağıdakine benzer bir ekran görüntüsü almanız gerekiyor eğer SharePoint i düzgün olarak kurabildiyseniz.

Sol üstte görülen Site Actions kısmından siteyle ilgili işlemlere erişebiliyoruz. Tabi eğer site için gerekli yetkilendirmeleriniz yoksa bu menüyü görmeniz münkün olmayacaktır.

SharePoint içerisinde yaratılabilen 4 ana eleman var, bunlar ;

  • List
  • Library
  • Page
  • Subsite

Bu elemanlara hızlıca bakacak olursak,

List SharePoint in temelidir diyebiliriz. Bir SharePoint site listelerin listelerinden meydana gelir dersek yanlış olmaz. Announcements, Calendar, Contacts, Custom List, Tasks vs. gibi çeşitli list tipleri mevcuttur. List ler konusunda, ilerleyen zamanlarda çok daha detaylı örneklere gireceğim.

Library, döküman yönetimini kontrol etmek amacıyla özelleşmiş bir list olarak tanımlanabilir. Dökümanlarınızı saklayıp,yönetip , başkalarıyla paylaşabilmenize olanak sağlar. Document, Form, Picture gibi Library tipleri mevcuttur.

Page elemanına gelirsek, MOSS 2010 (Bundan sonra SharePoint yerine kısaca MOSS u kullanacağım) üzerinde yaratılabilen 2 tip Page vardır; WikiPage ve WebPart page. Bilindiği üzere wiki sayfaları tarayıcı üzerinden editlenebilir, web part sayfaları da isminden de anlaşılacağı üzere içerisinde web partlar bulundurur.

Son olarak Subsites ise, (Bazen subsite yerine Workspace de kullanırlar, boş bir MOSS sitesinin bir kaç ilk özelliği set edilmiş olanıdır sadece) SharePoint in yarattığı alt (child) sitedir. Blog Site, Blank Site,Team Site, Document Workspace gibi örnekleri vardır.

Tuesday, February 15, 2011 11:56:54 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 

© Copyright 2009, Süleyman PETEK