25 Aralık 2012 Salı

SharePoint 2013'de Farklı Kullanıcı olarak Oturum Açmak (Sign in as Different User)


SharePoint 2013 RTM sürümü geçen günlerde yayınlandı. Daha Release olmamış olsa da kullanmaya ve proje geliştirme çalışmalarına başladım. Sunucuda ayağa kaldırdığımızda ilk fark ettiklerimden birisi (bence eksiklik) SharePoint 2010 da mevcut olan farklı kullanıcı olarak oturum açma (Sign in as Different user) için kullandığımız link mevcut değil.
Mevcut Durumun görünümü aşağıdak gibi;
1

Sıklıkla izin düzeylerini test etmek amaçlı farklı kullanıcı hesabıyla oturum açmak için kullandığımız bu link bilinerek mi kaldırılmış yoksa Release olunca geri mi gelir bilemiyorum. Ancak bunun için üç farklı çözüm sunacağım.
1. Farklı Browser kullanmak. ;) farklı browserlar kullanarak testlerimizi rahatça yapabilmeye devam edebiliriz.
2. SharePoint 2010′da olan login as different user Url ini elle portalin adresine eklemek.
/_layouts/closeConnection.aspx?loginasanotheruser=true
SharePoint 2010′daki bu link SharePoint 2013′de şu anda çalışıyor :)
3. SharePoint 2013’deki Welcome.ascx i düzenlemek. Daha kullanışlı bir çözüm olacaktır.  Welcome.ascx aşağıdaki dosya yolunda mevcuttur.
C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\CONTROLTEMPLATES\Welcome.ascx
Düzenleme sonrası görünüm aşağıdaki gibi olacaktır. 
2
Welcome.ascx ‘de id=”ID_Logout” menü ögesinden önce aşağıdaki kodu eklmemeiz yeterli olacaktır.
?
1
2
3
4
5
6
7
<SharePoint:MenuItemTemplate runat="server" ID="ID_LoginAsDifferentUser"
Text="<%$Resources:wss,personalactions_loginasdifferentuser%>"
Description="<%$Resources:wss,personalactions_loginasdifferentuserdescription%>"
MenuGroupId="100"
Sequence="100"
UseShortId="true"
/>
Welcome.ascx’in düzenlenmesi çözüm olarak sunmaktayım, ancak SharePoint 2013 release olduğunda düzenlenen Welcome.ascx ‘in de değişebileceğinden eski halini alabileceğini belirteyim

2 Kasım 2012 Cuma

SharePoint 2010 Ücretsiz Tema (MasterPage ve PageLayout)

SharePoint tüm sürümlerinde olduğu gibi SharePoint 2010 içinde SharePoint Branding diye adlandırdığımız özelleştirme (customization) konusunda kaynak ve ücretsiz düzgün SharePoint Mastarpage bulunması gerçekten zor. Bu konudaki nadir sitelerden birisi de www.topsharepoint.com . SharePoint Branding konusunda ziyaret/takip ettiğim siteleren birisidir.

Geçmiş makaleleri okurken Tendance  adlı Temasını ve bunun ücretsiz olarak sunulduğunu ve hatta tutorial halinde nasıl kullanabileceği konusunda makaleninde sunulduğunu görüm ve palyaşıyorum. Güzel bir tasarımsa sahip olmakla tasarım dokümanları (image, css, js) ile masterpage ve page layout mevcut durumda. 


Yararlı olması dileğiyle...

1 Ekim 2012 Pazartesi

SharePoint 2013 Preview'de Farklı Kullanıcı olarak Oturum Açmak (Login as a different user)

SharePoint 2013 Preview sürümü geçen günlerde yayınlandı. Daha release olmamış olsada biz kullanmaya ve ufaktan geliştirme çalışmalarına başladık. Sunucuda ayağa kaldırdığımızda benim ilk farkettiklerimden birsi (bence eksiklik) SharePoint 2010 da mevcut olan farklı kullanıcı olarak oturum açma (login as different user) için kullandığımız link mevcut değil.



Sıklıkla izin düzeylerini test etmek amaçlı farklı kullanıcı hesabıyla oturum açmak için kullandığımız bu link bilinerek mi kaldırılmış yoksa RTM yada Release olunca geri mi gelir bilemiyoruz. Ancak bunun için iki farklı çözüm sunacağım.

1. Farklı Browser kullanmak. ;) farklı browserlar kullanarak testlerimizi rahatça yapabilmeye devam edebiliriz.
2. SharePoint 2010'da olan login as different user Url ini elle portalin adresine eklemek.
  
    /_layouts/closeConnection.aspx?loginasanotheruser=true 

SharePoint 2010'daki bu link SharePoint 2013'de şu anda çalışıyor :)

Google ile arattığımda Welcome.ascx'in düzenlenmesi de çözüm olarak sunulmakta ancak SharePoint 2013 release olduğunda düzenlenen .ascx 'in de değişeceği için eski halini alabileceğini belirtmeliyim.  

27 Ağustos 2012 Pazartesi

Data Form WebPart (XSLT) ile e-mail adresine link verme (mailto)

SharePoint Designer arayüzü aracılığıyla yazabildiğimiz ve performansı düzgün kullanıldığında gayet iyi olan Data Form Web Part'larda XSLT aracılığıyla bir çok işlemi yapabilmekteyiz.

Listede sütun oluştururken web sitesi yada fotoğrafa link vermek için field oluşturabiliyoruz. Ancak kişiye yada kurumun e-mail adreslerine link vermek için bir field mevcut değildir. Bunun için single line bir field  ekleyip buradaki değeri portalde gösterebiliriz.

Bu gibi durumlarda gösterilen e-mail adresine tıklandığında Outlook yada kullanılan herhnagi e-mail programının e-mail göndermek üzere yeni e-mail oluşturma penceresinin  açılması ve To: kısmında tıklanan e-mail adresinin yazılı olması istenmektedir.
Normal şartlarda HTML de bunu <a> etiketi içerisinde kullandığımız "href" atribute'nde "mailto" aracılığıyla yapmaktayız.

 <a href="mailto:uzuncemil@gmail.com">
 uzuncemil@gmail.com  
 </a>  

Bunu Data Form Web Part ile yazmak için XSLT yi biraz düzenlememiz gerekecektir.

 <a>  
      <xsl:attribute name="href">  
      mailto:<xsl:value-of select="@EPostaAdresi"/>  
      </xsl:attribute>  
      <xsl:value-of select="@EPostaAdresi"/>  
 </a>  

xsl'de href atribute nü eklemeliyiz ve e-mail adresini burada yer alacak şekilde çekmeliyiz. Kod yaspısının örneği yukarıda mevcuttur.

Bu yöntem normal asp.net ile mailto linki vermektense daha hızlı ve deploy gerektirmeden kullanılabilinecek bir yöntemdir.

Saygılarımla
Cemil UZUN

Textbox içerisine sadece rakam (0-9) girilmesine izin vermek

Form tasarlarken ve kodlarken bazı form alanlarımız sadece sayısal veri içermek zorundadır; Telefon Numarası, Posta Kodu ve Yaşınız gibi alanlar olabilir. Bu alanlara sayısal verilerin dışında içerik girilmesi hem arka tarafta ekleme ve çekme işlemlerimizde sıkıntı yaşattığı gibi arayüz tarafında kullanıcı dostu olmamaktadır. Bu duruma benzer bir olayı hızlı bir şekilde nasıl çözeriz onu inceleyeceğiz:

Tabiki client tarafında çözülecek bir durum olduğundan başvuracağımız yer JavaScript oluyor ve bir kaç satır javascript ile textbox'a girilen değer rakam ise yazdıracağız değilse false dönülecek ve yazılmayacaktır. 

 <SCRIPT language="javascript" type="text/javascript">  
    <!--  
    function isNumber(evt)  
    {  
      var charCode = (evt.which) ? evt.which : event.keyCode  
      if (charCode > 31 && (charCode < 48 || charCode > 57))  
       return false;  
      return true;  
    }  
    //-->  
 </SCRIPT>  

Textbox kullanırken onkeypress attribute'nde isNumber fonksiyonumuzu çağırıyoruz ve rakam dışında bir karektere bastığımızda giriş yapılmayacak ama rakam girebilecek!

 <form id="form1" runat="server">                    
      <asp:TextBox ID="TextBox1" MaxLength="7" onkeypress="return isNumber(event)" runat="server">  
      </asp:TextBox>  
 </form>  

Bu çözüm sadece Asp.Net te Textbox için değil,  düz HTML input etiketi için de geçerlidir.

 <INPUT id="txtNumber" onkeypress="return isNumber(event)" type="text" name="txtNumber">  


İyi çalışmalar
Saygılarımla

10 Ağustos 2012 Cuma

SharePoint 2010’da _layouts, _vti_bin ve yerleşik (built in) sayfaları Anonim kullanıcı erişimine engellemek.


İnternet Portallerinde tahmin edebileceğimiz üzere çoğunda public kullanıcıların kısıtlı miktarda erişimleri vardır. Diğer bir deyişle anonim kullanıcıların okuma haklarının olması durumudur. Bu durum SharePoint 2007 ve 2010’da yanında bir sorunu da karşımıza çıkarmaktadır.
Anonim kullanıcılara siteye erişim hakkı (Okuma vb.) verdiğimiz durumda sadece genel arayüzdeki içerikleri görmekle kalmayıp sharepoint ile yerleşik (built in) gelen birçok SharePoint Form sayfları ve SharePoint sistem ayar sayfalarını görebilecektir. Bu durumda tasarımsal açıdan sorun olduğu kadar güvrnlik açığı olarak da nitelendirebileceğimiz bir sorun teşkil etmektedir.

A. SharePoint Form sayfasından kasıt http://sp10/Sayfalar/Forms/AllItems.aspx gibi her liste ve kütüphane için oluşturulan form sayfalarıdır. Bu sayfalara erişimi engellemek için (erişilmek istendiğinde login olunmasını sorma) için aşağıdaki komut bloğunu çalıştırmak gerekmektedir.

stsadm.exe –o activatefeature –url -filename ViewFormPagesLockdown\feature.xml
Yapacağımız işlemler sırasıyla;
  •  Yukarıda yer alan komut bloğunu –filename kısmında işleme yapacağımız portal adresi yer alacak şekilde SharePoint 2010 PowerShell aracılığıyla çalıştırıyoruz.
  • Eğer mevcut durumda anonim erişim varsa öncelikle onu kapatmalısınız ve yeniden açmalısınız

Her ihtimale karşı sisteminizce sakıncası yoksa iisreset atmak yaptığımız işlemin sonucunu daha net görmemizde fayda sağlayacaktır.
Artık herhangi bir listenin formlarına girmeyi denediğimizde bizden yetkili kullanıcı hesaplarındna biri ile giriş yamamızı isteyecektir.

B. Form sayfaları dışında yukarda bahsettiğimiz üzere SharePoint sistem ayar sayfalarını anonim erişimi istenmeyen bir durumdur. _layouts ve _vti_bin dizininde yer alan sayfalardan erişimini kapatmak istediğimiz sayfalar için aşağıdaki örenekteki konfigürasyon ayarlarını web.config içerisinde yapmalıyız.

<add path="configuration">
    <
location path="_layouts">
      <
system.web>
        <
authorization>
          <
deny users="?" />
        </
authorization>
      </
system.web>
    </
location>
    <location path="_vti_bin">
      <
system.web>
        <
authorization>
          <
deny users="?" />
        </
authorization>
      </
system.web>
    </
location>
    <location path="_layouts/login.aspx">
      <
system.web>
        <
authorization>
          <
allow users="?" />
        </
authorization>
      </
system.web>
    </
location>
    <
location path="_layouts/error.aspx">
      <
system.web>
        <
authorization>
          <
allow users="?" />
        </
authorization>
      </
system.web>
    </
location>
    <location path="_layouts/accessdenied.aspx">
      <
system.web>
        <
authorization>
          <
allow users="?" />
        </
authorization>
      </
system.web>
    </
location>

Örnekte olduğu gibi izin verilen
_layouts/login.aspx
_layouts/accessdenied.aspx
_layouts/error.aspx
dışındaki sistem sayfalarının hiç birine anonim kullanıcılar erişemeyecektir. Erişmek istediklerinden sisteme yetkili bir hesap ile login olmaları istenecektir.



Uyarılar:
  • Portaldaki yetkilerden farklı olarak anonim kullanıcılara bir listeye öğe ekleme yetkisi verecek iseniz (örneğin yorumlar, sayaçlar gibi listeler olabilir), öncelike siteyi tekrar anonim erişime açıp ilgili izinleri verip tekrar erişime kapamamız gerek. Bu süreçte anonim kullanıcıların form sayfalarına erişimlerini tekrar açmamız gerekecektir.
Actifleştirdiğimiz feature’ı deactive etmek için aşağıdaki kod bloğunu kullanabiliriz.
stsadm -o deactivatefeature -url -filename ViewFormPagesLockDown\feature.xml
  • Erişime  açmak istediğimiz sistem sayfaları için örneğin _layouts/login.aspx için web.config de aşağıda yer alan izin verme kod parçacığı  web.configde ilgili alana eklenmelidir.

<location path="_layouts/login.aspx">
      <
system.web>
        <
authorization>
          <
allow users="?" />
        </
authorization>
      </
system.web>
    </
location>

Kolaylıklar dilerim

24 Mayıs 2012 Perşembe


Portale Annonim Kullanıcılar için Ribbon Menüyü Gizleme

SharePoint 2007’den SharePoint 2010’a geçtiğimizde kullanıcı arayüzünde bir çok değişiklik ve iyileştirmeler olmuştur. Microsoft SharePoint 2010 erişilebilirlik, stadartlara uyumu ve kullanılabilirlik açısından bir çok olumlu özelliği bünyesinde bulundurmaktadır. Bilindiği üzere SharePoint 2010 ile birlikte Microsoft Office arayüzlerinde aşinalaşmaya başladığımız ribbon kontrolü de gelmiştir. Aşağıda yapmakta olduğum bir portal’den ribbon menüsünün ekran görüntüsü mevcuttur.


Microsoft’un bir çok uygulamasında mevcut olan ribbon menüyü kullanan biri olarakta kullanışlı ve esnek bir kontrol olduğunu rahatça söyleyebiliriz.
Gelelim konumuza yaptığımız yada yapmakta olduğumuz bir web portalinin anonim erişim (Anonymous Access).

Ribon Menüyü Gizleme

SharePoint 2010’da ribbon menü içerik oluşturmak ve yönetim ayarlarını yapabilmek için kullanılmakta olup. Web portalinizin public erişime açık arayüzü için ribbon menü çok bir anlam ifade etmemkle birlikte log-in olmayan kullanıcı için ekranda yer kaplamasına gerek yoktur. Gerek kullanışlılık açısından gerekse yer kaplamaması amacıyla kullanıcılarınız portale log-in olmadığı sürece ribbon menüyü göstermeyebiliriz.
Yapacağımız kod değişiklikleri kullandığımız masterpage ve css dokümanlarında olacaktır.

Masterpage
Masterpagenizde SharePoint ribbon kodlarının olduğu kısmı bulunuz.  Genelde <div id=”s4-ribbonrow”> ile başlayan bir kısımdır.  Bu div etiketinin içine kullanıcı haklarını ayarlamak için SPSecurityTrimmedControl kondtrolünü koyunuz. Bu kontolün attribute lerinden PermissionsString kulnarak ribbon için yetkileri sağlamış olacağız. Eğer ManagePermission ı burada kullanırsak ManagePermission yetkisi olmayan kullanıcılardan ribbon menünüyü gizlemiş olacağız. Kod yapımız aşağıdaki gibi olacaktır.

<div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle">
    <SharePoint:SPSecurityTrimmedControl PermissionsString="ManagePermissions" runat="server">
        <!--  Ribbon Menü Kodu burda yer alacak -->
    </SharePoint:SPSecurityTrimmedControl>
</div>
SharePoint 2010’da ribbon menü içerik oluşturmak ve yönetim ayarlarını yapabilmek için kullanılmakta olup. Web portalinizin public erişime açık arayüzü için ribbon menü çok bir anlam ifade etmemkle birlikte log-in olmayan kullanıcı için ekranda yer kaplamasına gerek yoktur. Gerek kullanışlılık açısından gerekse yer kaplamaması amacıyla kullanıcılarınız portale log-in olmadığı sürece ribbon menüyü göstermeyebiliriz.

CSS
Masterpage de yaptığımız değişiklikler ribbonu gizlemek için yeterli olmayacaktır. Login olmayan kullanıcılar için ribbon ekranda hiç görünmemesi lazım olduğundan CSS ile bu düzenlemeyi yapmalıyız.
Yatay eksende ribbon yok ise ribbon kontrollerini içinde bulunduğu div tiketinin yüksekliğini 0 indirmeliyiz. Diğer bir taraftan ribbon içeriği mevcut ise var olan mevcut yapıyı bozmamak için auto seçeneğini yükseklik olarak kullanmalıyız. Kullandığımzı CSS’e aşağıdaki kodu eklemeliyiz.
body #s4-ribbonrow {
    min-height: 0 !important;
    height: auto !important;
}
Bu iki dökümandaki düzenleme yeterli olcaktır!
Ancak eğer farklı izin düzeyleri için ribbon’u gizlemek yada değişiklikler yapmak istiyorsanız  SPSecurityTrimmedControl kondtolüne Liste, Site ve Kişisel ayar seviyesinde yetkilere düzenleme yapabilirsiniz.

Welcome Control ünü Ribbon Dışına Çıkarmak
Ayrıca not düşmek istediğim bir konu da eğer login kontrolünü (welcome control –Genelde sağ üst tarafta login kullanıcı bilgileri, kullanıcı değiştirmek gibi kontrollerin olduğu bölüm–) ribbon dışında sayfa tasarımınızda kullanmak istiyorsanız. Bu welcome controlü dışarı çıkarmak için welcome kontrole ait aşığdaki kodu deault olarak ribbon div etiketi içierisinde bulunduğu yerden kesip sayfa tasarımında kullanmak istediğimiz yere taşımalıyız.
<wssuc:Welcome id="IdWelcome" runat="server" EnableViewState="false"/>


Kolaylıklar dilerim!