Aylık Arşivler: Aralık 2007

SharePoint çubuk grafikler oluşturma

Genel bakış:

(GÜNCELLEŞTİRME 12/04/07: Bu çok ilginç bir web bölümü adresleri başka bir blog bağlantı sonunda başka bir ilginç kaynak eklendi)

Bu blog girişi SharePoint'te bir çubuk grafik oluşturma açıklanmaktadır. Sadece veri görünümü web bölümü bağlıdır gibi bu WSS ve MOSS ortamlarda çalışır.

Genel yaklaşım aşağıdaki gibidir:

  1. Grafik istediğiniz verileri içeren bir liste veya belge kitaplığı oluşturma.
  2. Yer ilişkili belge kitaplığı / Özel liste bir sayfaya ve bir veri görünümü web bölümünü dönüştürmek (DVWP).
  3. DVWP'ın XSL bir grafik gösterir HTML oluşturmak için değiştirme.

İş senaryosu / Kurulum:

Standart başlık sütun içeren özel bir liste ve bir ek sütun oluşturduk, "Durum". Bu modelleri (çok basitçe) Masraf için bir "yetkilendirme" Senaryo burada başlık proje ve durumunu bir değer listesinden gösterir:

  • Önerilen
  • Süreç içinde
  • Durmuş

Bu durum kodları gösteren etkileşimli bir yatay çubuk grafik üretmek için hedeftir.

Liste doldurulur ve bu gibi görünüyor:

görüntü

Veri Görünümü Web Bölümü oluşturma:

DVWP özel listeyi bir sayfaya ekleyerek oluşturun. (Benim durumumda site sayfası) ve bu yönergeleri izleyin Burada (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

Sadece DVWP oluşturmanın yanı sıra, Ayrıca tüm mevcut satırları göstermek için disk belleği özelliğini ayarlamanız gerekir. Benim için, Bu şuna benzer:

görüntü

Bu noktada, Ben her zaman SPD ve tarayıcı yakın. Tarayıcı kullanarak sayfa sonra yeniden açın. Bu sayfadaki web bölümü düzeni yanlışlıkla mucking önler.

XSLT değiştirme:

Şimdi XSLT değiştirme zamanı.

Her zaman bunun için visual studio kullanın. (Bkz: Burada için çok yardımcı olacaktır IntelliSense hakkında önemli not).

Boş bir projeyi oluşturmak dört yeni dosya ekleme ("orijinal kelimeler yerine" ve "yeni" uygun olarak):

  • Original.XSLT
  • New.XSLT
  • Özgün Params.xml
  • Yeni Params.xml

Benim durumumda, Bu gibi görünüyor:

görüntü

Web bölümü'nü değiştirme ve params ve XSL "orijinal kopya" Visual Studio sürümü.

Amaç burada XSL Dönüşümü geri içine bir grafik görüntüleyen bir HTML DVWP sorgudan almak sonuçları neden olmaktır..

Bu amaçla, ilk önce biz "XSL" bilinen delilik tarafından karışık HTML gibi görünmelidir düşünmeye yardımcı olur. (Açık olmak, Sadece bir örnek aşağıdadır; yok bu yazın veya kopya/visual Studio'ya Yapıştır. Bunun için daha sonra yazmak-Up başlangıç noktası tam bir darbe sağlamak). Aşağıdaki örnek grafik hemen ardından HTML göre işlenir:

Numune Çubuk Grafiği

Karşılık gelen HTML:

<HTML>
<vücut>
<Merkezi>
<Masa genişliği % 80 =>
<tr><TD><Merkezi>Yatay çubuk grafik</TD></tr>
<tr>
<TD align = "center">
<tablo kenarlığı = "1" Genişlik = >
<tr>
<TD genişlik = >Açık</TD>
<TD><Tablo CELLPADDING ="0" CellSpacing ="0" sınır = 0 genişlik = % 50><tr bgcolor = kırmızı><TD>&nbsp;</TD></tr></Tablo></TD>
</tr>
<tr>
<TD genişlik = >Kapalı</TD>
<TD><Tablo CELLPADDING ="0" CellSpacing ="0" Kenarlık genişliği 0 = % 25 =><tr bgcolor = kırmızı><TD>&nbsp;</TD></tr></Tablo></TD>
</tr>
<tr>
<TD genişlik = >Durmuş</TD>
<TD><Tablo CELLPADDING ="0" CellSpacing ="0" Kenarlık genişliği 0 = % 25 =><tr bgcolor = kırmızı><TD>&nbsp;</TD></tr></Tablo></TD>
</tr>
</Tablo>
</TD>
</tr>
</Tablo>
</vücut>
</HTML>

Ölü basit bir yaklaşım "kırmızı" satırının arka plan rengini ayarlayarak benim çubukları oluşturmak için kullanılan.

Bu paket var: Sonunda, Tüm yapıyoruz-oluştururken HTML satır ve sütunları.

XSLT şablonu:

Yatay bir çubuk grafik oluşturur XSLT kopyaladıktan sonra. Oldukça iyi öylesine çok burada dışında bu notlar eklemek olmayacak yorumladı:

  • Varsayılan DVWP ilk oluşturduğunuzda SharePoint Designer verdi XSL ile başladı.
  • SPD'den 's bu kesmek başardı 657 hatları için 166 satırları.
  • Parametreler XML dosyası ile uğraşmak istemedim (XSL ayrı olan ve DVWP değiştirmeye gittiğinde ne demek istediğimi anlarsınız; değiştirebileceğiniz iki dosya). Ancak, Bunu kolaylaştırmak için, Neredeyse tüm XSL kaldırmak. Bu demektir ki yapmak istiyorsanız bu parametreleri kullanın, Sadece onların değişken tanımlar XSL geri eklemek gerekir. Özgün XSL değişken tanımları, visual studio proje içinde olacak bu kolay olacaktır.
  • Kopyala ve yapıştır bu doğrudan visual studio projenize mümkün olsa gerek. O zaman, Telefonlarıma çıkartın ve takın "ShowBar" için bir arama.
  • Ayrıntıya inme oluşturarak çalışır bir <bir href> Böyle: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. Bu teknik diğer bağlamlarda değerinin olabilir. İlk başta, Daha karmaşık bir biçimine uygun gerekir düşünüyordum.: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, Ama benim ortamında bu gerekli değil. Bu genelleme yapmak oldukça kolaydır listenin URL bize SharePoint tarafından geçirilmeden.

İşte:

<XSL:Stil sayfası Sürüm="1.0" Dışlama sonuç önekleri="RS z o s ddwrt dt msxsl" 
xmlns:msxsl="semaver:schemas-microsoft-com:XSLT" xmlns:XSL="http://www.w3.org/ 1999/XSL/Dönüştür"
xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer"
xmlns:ASP="http://schemas.microsoft.com/ASPNET/20" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
xmlns:o="semaver:schemas-microsoft-com:Office" xmlns:s="UUID:BDC6E3F0-6DA3-11D1-A2A3-00AA00C14882"
xmlns:DT="UUID:C2F41010-65B3 - 11d 1-A29F-00AA00C14882" xmlns:RS="semaver:schemas-microsoft-com:satır kümesi" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="semaver:FrontPage:iç"
> <XSL:çıkış yöntemi="HTML" girinti="Hayır" /> <XSL:ondalık biçimi NaN="" /> <XSL:param adı="ListUrlDir"></XSL:param> <!-- I lüzum bu bir ayrıntıya inme desteklemek için. --> <XSL:Şablon maç="/" xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:ASP="http://schemas.microsoft.com/ASPNET/20"
> <XSL:değişken adı="dvt_StyleName">Tablo</XSL:değişken> <XSL:değişken adı="Satır" seçin="/dsQueryResponse/satır/satır" /> <XSL:değişken adı="dvt_RowCount" seçin="sayısı($Satır)" /> <XSL:değişken adı="IsEmpty" seçin="$dvt_RowCount = 0" /> <XSL:değişken adı="dvt_IsEmpty" seçin="$dvt_RowCount = 0" /> <XSL:seçin> <XSL:Ne zaman test="$dvt_IsEmpty"> Grafik için veri yok!<br/> </XSL:Ne zaman> <XSL:Aksi takdirde> <!-- Burada ilginç şeyler başlıyor. Grafikte bir değişkeni her satır için bir çifti tanımlamanız gerekir: toplam öğe sayısını ve toplam yüzdesi. --> <XSL:değişken adı="totalProposed" seçin="sayısı(/dsQueryResponse/satır/satır[normalize-uzay(@Status) 'Teklif' =])" /> <XSL:değişken adı="percentProposed" seçin="$totalProposed div $dvt_RowCount" /> <XSL:değişken adı="totalInProcess" seçin="sayısı(/dsQueryResponse/satır/satır[normalize-uzay(@Status) 'Sürecinde' =])" /> <XSL:değişken adı="percentInProcess" seçin="$totalInProcess div $dvt_RowCount" /> <XSL:değişken adı="totalStalled" seçin="sayısı(/dsQueryResponse/satır/satır[normalize-uzay(@Status) 'Stop' =])" /> <XSL:değişken adı="percentStalled" seçin="$totalStalled div $dvt_RowCount" /> <!-- Biz bizim HTML tablo tanımlar. Tutarlı hale getirmek için bazı standart SharePoint stillerden burada ödünç alıyorum. Bu tema geçersiz kılar yanı sıra küresel css dosyasındaki değişiklikler onur olacak sanırım. --> <Tablo Genişlik="100%" CellSpacing="0" CELLPADDING="2" Stil="Kenarlık sağ: 1 katı #C0C0C0; kenarlık-alt: 1 katı #C0C0C0; sol kenarlık stili: katı; Kenarlık-sol-genişliği: 1; Border-top-style: katı; Border-top-width: 1;"> <tr> <TD hizalama="Merkezi"> <Tablo Kenarlık="1" Genişlik="100%"> <!-- Grafik haline getirmek istiyoruz her durum için, "ShowBar diyoruz" Şablon. Biz geçmek: 1. Satır için bir etiket. Bu bir köprüye dönüştürüldükten. 2. Tamamlanma yüzdesi (değişken yukarıdan). 3. Alttaki liste koddan gerçek alan adı. Bu görüntü etiketini eşleştirmek gerekmez. 4. Alan değeri için bahisler #3. 5. Bu durum kodunun toplam öğe (tüm durum kodları değil genel toplamı). Bu yayar bir <tr></tr> ve yatay çubuk grafiği çizgi. Görüntülemek istediğiniz her durum kodu için bu þablonu çaðýrmak. --> <XSL:Call-template adı="ShowBar"> <XSL:param ile adı="BarDisplayLabel" seçin="'Teklif'"/> <XSL:param ile adı="BarPercent" seçin="$percentProposed"/> <XSL:param ile adı="QueryFilterFieldName" seçin=""Durum""/> <XSL:param ile adı="QueryFilterFieldValue" seçin="'Teklif'"/> <XSL:param ile adı="TotalItems" seçin="$totalProposed"></XSL:param ile> </XSL:Call-template> <XSL:Call-template adı="ShowBar"> <XSL:param ile adı="BarDisplayLabel" seçin="'Stop'"/> <XSL:param ile adı="BarPercent" seçin="$percentStalled"/> <XSL:param ile adı="QueryFilterFieldName" seçin=""Durum""/> <XSL:param ile adı="QueryFilterFieldValue" seçin="'Stop'"/> <XSL:param ile adı="TotalItems" seçin="$totalStalled"></XSL:param ile> </XSL:Call-template> <XSL:Call-template adı="ShowBar"> <XSL:param ile adı="BarDisplayLabel" seçin="'Sürecinde'"/> <XSL:param ile adı="BarPercent" seçin="$percentInProcess"/> <XSL:param ile adı="QueryFilterFieldName" seçin=""Durum""/> <XSL:param ile adı="QueryFilterFieldValue" seçin="'Sürecinde'"/> <XSL:param ile adı="TotalItems" seçin="$totalInProcess"></XSL:param ile> </XSL:Call-template> </Tablo> </TD> </tr> </Tablo> </XSL:Aksi takdirde> </XSL:seçin> </XSL:Şablon> <!-- Bu şablon çubuk grafik tek tek satırı görüntüleyerek çalışır. Muhtemelen çoğu burada tweaking yapacağım. --> <XSL:Şablon adı="ShowBar"> <XSL:param adı="BarDisplayLabel" /> <!-- göstermek için etiket --> <XSL:param adı="BarPercent"/> <!-- Toplamının yüzdesi olarak. --> <XSL:param adı="QueryFilterFieldName"/> <!-- Sorguya atlamak için kullanılan & Filtre --> <XSL:param adı="QueryFilterFieldValue"/> <!-- Sorguya atlamak için kullanılan & Filtre --> <XSL:param adı="TotalItems" /> <!-- Bu barlabel toplam sayısı --> <tr> <!-- Çubuk kendisini etiket. --> <TD sınıf="MS-formbody" Genişlik="30%"> <!-- Bu sonraki küme deyimleri temel verileri filtre uygulanmış bir görünüm aşağı matkap için bize izin verir bir sorgu dizesi oluşturur. Biz burada birkaç şeyi kullanın: 1. Biz FilterField1 ve FilterValue1 bir sütuna filtre uygulamak için bir liste geçirebilirsiniz. 2. SharePoint bir anahtar parametreyi bize geçiyor, Karşı bu DVWP "çalıştığı" alttaki liste Puan ListUrlDir. XSL eğlenceli değil? --> <XSL:metin sakatlar çıkış kaçan="Evet"> <![CDATA[<bir href ="]]></XSL:metin> <XSL:value-of seçin="$ListUrlDir"/> <XSL:metin sakatlar çıkış kaçan="Evet"><![CDATA[?FilterField1 =]]></XSL:metin> <XSL:value-of seçin="$QueryFilterFieldName"/> <XSL:metin sakatlar çıkış kaçan="Evet"><![CDATA[&FilterValue1 =]]></XSL:metin> <XSL:value-of seçin="$QueryFilterFieldValue"/> <XSL:metin sakatlar çıkış kaçan="Evet"><![CDATA[">]]></XSL:metin> <XSL:value-of seçin="$BarDisplayLabel"/> <XSL:metin sakatlar çıkış kaçan="Evet"><![CDATA[</bir>]]></XSL:metin> <!-- Sırada bazı sayılar biçiminde gösterir.: "(Toplam / % Toplam)" --> (<XSL:value-of seçin="$TotalItems"/> / <!-- Bu bizim için güzel bir yüzde etiket oluşturur. Teşekkürler, Microsoft! --> <XSL:Call-template adı="PercentFormat"> <XSL:param ile adı="yüzde" seçin="$BarPercent"/> </XSL:Call-template>) </TD> <!-- Nihayet, yayarlar bir <TD> etiket çubuğun kendisi.--> <TD> <Tablo CELLPADDING="0" CellSpacing="0" Kenarlık="0" Genişlik="{yuvarlak($BarPercent * 100)+1}%"> <tr bgcolor="Kırmızı"> <XSL:metin sakatlar çıkış kaçan="Evet"><![CDATA[&nbsp;]]></XSL:metin> </tr> </Tablo> </TD> </tr> </XSL:Şablon> <!-- Bu doğrudan bir MS şablonunda bulunan bazı XSL alınır. --> <XSL:Şablon adı="PercentFormat"> <XSL:param adı="yüzde"/> <XSL:seçin> <XSL:Ne zaman test="Format-number($yüzde, '#,##0%;-#,##0%')'NaN' =">0%</XSL:Ne zaman> <XSL:Aksi takdirde> <XSL:value-of seçin="Format-number($yüzde, '#,##0%;-#,##0%')" /> </XSL:Aksi takdirde> </XSL:seçin> </XSL:Şablon> </XSL:Stil sayfası>

Sonuçları:

XSL yukarıdan bu grafik oluşturur:

görüntü

Temel verilere durum kodu üzerinde tıklatarak ulaşmak:

görüntü

Sonuç düşünceler:

Bu Genelleştirilmiş?

Bu grafik kavram seviyorum, Ama içeri girip o kadar çok el kodlama yapmak zorunda aslında nefret ediyorum. Ben olup Genelleştirilmiş için biraz düşündüm ve ben iyimserim., Ama ben de bir yerde herhangi bir iş-çevrede teklif değil yol boyunca bir tuğla duvar olabilir biraz korkulu. Kimse bu konuda bazı iyi fikirler varsa, Lütfen Yorum not edin veya bana e-posta.

Dikey grafikler:

Yatay bir çubuk grafiği bu. Dikey bir grafik oluşturmak kesinlikle mümkün. HTML değiştirmeliyiz. Ben aynı şekilde başlamak istiyorum: Dikey bir çubuk grafik bir HTML temsilini oluşturmak ve sonra bu XSL almak nasıl anlamaya. Kimse ilgileniyor ise, Ben de denemek ve karışıklığı çözmek çalışmak için ikna edilebilir. Eğer birisi zaten yaptı, bana bildirin ve ben blogunuza bağlantı memnuniyetle duyarız 🙂

Meydan okuma ile dikey bir grafik için grafik etiketleri yönetmek daha zor olduğunu düşünüyorum., Ama kesinlikle imkansız.

Alan adı Gotcha's:

En az iki şey için alan adlarıyla dikkat.

İlk, boşluk içeren bir alan adı XSL öncelenmesi gerekir. Bu muhtemelen bir sorun olacak:

        <XSL:değişken adı="totalProposed" 
seçin="sayısı(/dsQueryResponse/satır/satır[normalize-uzay(@Status) 'Teklif' =])" />

Eğer durum"" sütun aslında "durum kodu adı" daha sonra "Status_x0020_Code" başvurmak gerekir:

   <XSL:değişken adı="totalProposed" 
seçin="sayısı(/dsQueryResponse/satır/satır[normalize-uzay(@Status_x0020_Code) 'Teklif' =])" />

İkinci, ve bu konuda biraz kafam, Ama sen de alan adı değişiklikleri için tetikte olmak gerekir. Senin alanın "durum kodu adı" ve daha sonra üzerinde, rename o-e doğru "AKKUŞ durumu", "iç adı" değişmez. İç adı hala "durum kodu olacak" ve "Status_x0020_Code" başvurulan gerekir. "Diğer kaynaklar" Linkler bu tür sorunları tanılamak ve sorununu yardımcı.

Bu renk hakkında:

"Red aldım" Çünkü şu anda bana hoş. Böylece bir numara sadece görsel bir açıklama sağlamak için farklı renk göstermek için büyük bir olay olmaz, Ama aynı zamanda yararlı bir KPI sağlamak için. Örneğin, Eğer yüzdesi "durdu" AKKUŞ'ın olduğunu > 10% o zaman kırmızı göster, Aksi halde siyah göster. Kullanımı <XSL:seçin> Bunu gerçekleştirmek için.

Diğer kaynaklar:

Mutlu dönüştürme!

<sonunda />

Benim blog abone!

SharePoint sağlamaz “Kimin erişimi var” Raporları

GÜNCELLEŞTİRME 01/28/08: Bu codeplex projesi bu sorunu ele almaktadır.: http://www.codeplex.com/AccessChecker. Bunu kullanmadıysanız, Ama bu, ortamınızda ilgilenmeniz gereken bir sorun ise bu umut verici görünüyor..

GÜNCELLEŞTİRME 11/13/08: Joel Oleson kadar çok iyi bir mesaj daha büyük güvenlik yönetimi konusunda burada yazdı.: http://www.sharepointjoel.com/Lists/Posts/Post.aspx?Liste 0cd1a63d % 2D183c % -4fc2 2 D &NO 113 =. Diğer yararlı kaynaklar bir dizi için Linkler.

Forum kullanıcıları ve istemciler genellikle bu satırlar boyunca bir soru sorabilir: "Nasıl ben bir siteye erişimi olan tüm kullanıcıların listesini yapmak oluşturmak" ya da "nasıl ben otomatik olarak tüm kullanıcılar listesine listeye yapılan değişiklikler hakkında uyarabilir?"

Çıkış kutusu çözüm bunun için yok. Eğer biraz düşünürsen, Bu yüzden anlamak zor değil.

SharePoint Güvenlik oldukça esnektir. Kullanıcılar en az dört büyük kategoriye ayrılır:

  • Anonim kullanıcılar.
  • SharePoint kullanıcıları ve grupları.
  • Active Directory Kullanıcıları.
  • Form tabanlı kimlik doğrulaması (FBA) kullanıcılar.

Güvenlik açısından anlamına gelir esnekliği, verilen herhangi bir SharePoint sitesinin birbirinden büyük ölçüde farklı olacaktır. Bir erişim listesi raporu oluşturmak için, bir site güvenliğinin nasıl sağlanacağını tespit gerekiyor, birden çok farklı kullanıcı profili depoları sorgulamak ve sonra yararlı bir biçimde sunmak. Bu genel olarak çözmek için sabit bir sorun.

Nasıl kuruluşların bununla ilgileniyor? Senden yorum duymak istiyorum veya E-posta.

</sonunda>