Mjesečni arhiv: Prosinac 2007

Napravite Bar Grafovi u SharePoint

Pregled:

(UPDATE 12/04/07: Dodao još jedan zanimljiv resurs na kraju povezuje s drugom blogu koji se bavi to putem vrlo zanimljivog web-dijela)

This blog entry describes how to create a bar graph in SharePoint. This works in both WSS and MOSS environments as it only depends upon the data view web part.

Ukupna pristup je sljedeći:

  1. Napravite popis ili biblioteku dokumenata koja sadrži podatke koje želite graf.
  2. Postavite pridružene knjižnicu dokument / prilagođeni popis na stranicu i pretvoriti ga u web podataka pogled dijelu (DVWP).
  3. Izmjena DVWP je XSL za generiranje HTML-a na kojima se vidi kao graf.

Poslovni Scenarij / Postava:

Ja sam stvorio prilagođeni popis sa standardnim Naslov stupca i jednu dodatnu kolonu, "Status". This models (Vrlo pojednostavljeno) an "Authorization For Expense" Scenarij u kojem naslov predstavlja projekt i status vrijednost s popisa:

  • Predloženi
  • U procesu
  • Zastoju

Cilj je proizvesti interaktivni šipkom graf koji pokazuje ta oznaka stanja.

Ja sam naseljena popisa i to izgleda ovako:

slika

Stvaranje podataka za web-dio Pogled:

Napravite DVWP dodavanjem prilagođeni popis na stranici (stranica stranica u mom slučaju) i slijedite upute ovdje (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

Uz jednostavno stvaranje DVWP, we also need to set the paging property to show all available rows. Za mene je, to izgleda ovako:

slika

U ovom trenutku, I always close SPD and the browser. I then re-open the page using the browser. This avoids accidentally mucking up the web part layout on the page.

Izmjena XSLT:

Sada je vrijeme za izmjenu XSLT.

I always use visual studio for this. (Vidjeti ovdje za važnu napomenu o INTELLISENSE koji će vam pomoći puno).

I stvoriti prazna projekt dodati četiri nove datoteke (replacing the words "Original" and "New" po potrebi):

  • Original.xslt
  • New.xslt
  • Izvorni Params.xml
  • Novi Params.xml

U mom slučaju, to izgleda ovako:

slika

Modify the web part and copy the params and XSL to the "Original" Verzija u Visual Studio.

Cilj je da se ovdje izazvati XSL transformirati rezultate smo dobili natrag od DVWP upita u HTML-a koji čini kao graf.

U tom cilju, it helps to first consider what the HTML should look like before we get confused by the insanity that is known as "XSL". (Da bude jasno, Sljedeći je samo primjer; don’t type it or copy/paste into visual studio. I provide a full blow starting point for that later in the write-up). The following sample graph is rendered as per the HTML immediately following:

Uzorak histogram

Odgovarajući HTML:

<html>
<tijelo>
<centar>
<širina tablice = 80%>
<tr><td><centar>Vodoravna traka Grafikon</td></tr>
<tr>
<td align="center">
<table border="1" Širina = 80%>
<tr>
<td width = 10%>Otvoreno</td>
<td><Tablica cellpadding ="0" cellspacing ="0" border = 0 width = 50%><tr bgcolor = crvena><td>&nbsp;</td></tr></stol></td>
</tr>
<tr>
<td width = 10%>Zatvoreno</td>
<td><Tablica cellpadding ="0" cellspacing ="0" border = 0 width = 25%><tr bgcolor = crvena><td>&nbsp;</td></tr></stol></td>
</tr>
<tr>
<td width = 10%>Zastoju</td>
<td><Tablica cellpadding ="0" cellspacing ="0" border = 0 width = 25%><tr bgcolor = crvena><td>&nbsp;</td></tr></stol></td>
</tr>
</stol>
</td>
</tr>
</stol>
</tijelo>
</html>

I used a dead simple approach to creating my bars by setting the background color of a row to "red".

Take-away ovdje je to: Na kraju, Svi mi radimo je stvaranje HTML s redaka i stupaca.

Predložak XSLT:

I’ve copied the XSLT that generates a horizontal bar graph. It’s fairly well commented so I won’t add much here except for these notes:

  • Počeo sam sa zadanim XSL koji SharePoint Designer mi dao kad sam prvi put stvorio DVWP.
  • Bio sam u mogućnosti smanjiti ovaj dolje od SPD-a 657 linije za 166 lines.
  • Nisam zabrljati okolo sa spisom parametara XML (koji je odvojen od XSL i znat ćete što mislim kad idete mijenjati DVWP sama; postoje dvije datoteke možete izmijeniti). Međutim, kako bi se pojednostaviti, I did remove nearly all of them from the XSL. This means that if you want to make use of those parameters, you just need to add their variable definitions back to the XSL. That will be easy since you will have the original XSL variable definitions in your visual studio project.
  • You ought to be able to copy and paste this directly into your visual studio project. Tada, remove my calls and insert your own calls to "ShowBar".
  • Spustite se radi stvaranjem <href> ovako: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. This technique may be of value in other contexts. Na početku, Mislila sam da ću morati odgovarati na složenije formatu: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, but in my environment that is not necessary. The List’s URL is passed to us by SharePoint so this is quite easy to generalize.

Ovdje je:

<XSL:stilovima verzija="1.0" uključuju-rezultat-prefiksi="RS z oa je ddwrt DT msxsl" 
xmlns:msxsl="urna:sheme-microsoft-com:XSLT" xmlns:XSL="http://www.w3.org/1999/XSL/Transform"
xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer"
xmlns:trepetljika="http://schemas.microsoft.com/ASPNET/20" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
xmlns:o="urna:sheme-microsoft-com:ured" xmlns:s="UUID:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:DT="UUID:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urna:sheme-microsoft-com:rowset" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="urna:Naslovnica:interni"
> <XSL:izlaz način="html" uvući="ne" /> <XSL:decimal-format NaN="" /> <XSL:zaustaviti ime="ListUrlDir"></XSL:zaustaviti> <!-- Ovo bi podržao drill-down. --> <XSL:predložak odgovarati="/" xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:trepetljika="http://schemas.microsoft.com/ASPNET/20"
> <XSL:varijabla ime="dvt_StyleName">Stol</XSL:varijabla> <XSL:varijabla ime="Redovi" odabrati="/dsQueryResponse / Redovi / Row" /> <XSL:varijabla ime="dvt_RowCount" odabrati="brojati($Redovi)" /> <XSL:varijabla ime="IsEmpty" odabrati="$dvt_RowCount = 0" /> <XSL:varijabla ime="dvt_IsEmpty" odabrati="$dvt_RowCount = 0" /> <XSL:izabrati> <XSL:kada test="$dvt_IsEmpty"> Nema podataka u grafikonu!<br/> </XSL:kada> <XSL:inače> <!-- Interesantno počinje ovdje. Moramo definirati par varijabli za svaki red u grafu: ukupan broj           . --> <XSL:varijabla ime="totalProposed" odabrati="brojati(/dsQueryResponse / Redovi / Row[normalizirati-prostor(@ Status) = 'Prijedlog'])" /> <XSL:varijabla ime="percentProposed" odabrati="$totalProposed div $ dvt_RowCount" /> <XSL:varijabla ime="totalInProcess" odabrati="brojati(/dsQueryResponse / Redovi / Row[normalizirati-prostor(@ Status) = 'U procesu'])" /> <XSL:varijabla ime="percentInProcess" odabrati="$totalInProcess div $ dvt_RowCount" /> <XSL:varijabla ime="totalStalled" odabrati="brojati(/dsQueryResponse / Redovi / Row[normalizirati-prostor(@ Status) = "Zastoju"])" /> <XSL:varijabla ime="percentStalled" odabrati="$totalStalled div $ dvt_RowCount" /> <!-- Mi smo definirali naše HTML tablicu ovdje. Ja sam posudio iz neke standardne           . Mislim da će čast           . --> <stol širina="100%" cellspacing="0" cellpadding="2" stil="border-right: 1 solid # C0C0C0; border-bottom: 1 solid # C0C0C0; border-lijevo-stilu: solidan; border-lijevo-širina: 1; border-top-style: solidan; border-top-širina: 1;"> <tr> <td svrstati="centar"> <stol granica="1" širina="100%"> <!-- Za svako stanje koje želimo graf, we call the "ShowBar" predložak. Mi ga proći: 1. Oznaka za redom. Ovo se pretvara u hiperveze. 2. Posto (razlikuju od gore). 3. Stvarni Polje naziv koda od osnovne liste. Ovo                      . 4. Vrijednost polja odgovara za #3. 5. Ukupno stavke tog statusa koda (Ne ukupni iznos svih                      ). Ona emitira <tr></tr> i vodoravna traka Grafikon linije. Mi to nazivamo predložak za svaki status kod želimo vidjeti. --> <XSL:poziv-predložak ime="ShowBar"> <XSL:s param- ime="BarDisplayLabel" odabrati="'Prijedlog'"/> <XSL:s param- ime="BarPercent" odabrati="$percentProposed"/> <XSL:s param- ime="QueryFilterFieldName" odabrati="'Status'"/> <XSL:s param- ime="QueryFilterFieldValue" odabrati="'Prijedlog'"/> <XSL:s param- ime="TotalItems" odabrati="$totalProposed"></XSL:s param-> </XSL:poziv-predložak> <XSL:poziv-predložak ime="ShowBar"> <XSL:s param- ime="BarDisplayLabel" odabrati=""Zastoju""/> <XSL:s param- ime="BarPercent" odabrati="$percentStalled"/> <XSL:s param- ime="QueryFilterFieldName" odabrati="'Status'"/> <XSL:s param- ime="QueryFilterFieldValue" odabrati=""Zastoju""/> <XSL:s param- ime="TotalItems" odabrati="$totalStalled"></XSL:s param-> </XSL:poziv-predložak> <XSL:poziv-predložak ime="ShowBar"> <XSL:s param- ime="BarDisplayLabel" odabrati=""U proces '"/> <XSL:s param- ime="BarPercent" odabrati="$percentInProcess"/> <XSL:s param- ime="QueryFilterFieldName" odabrati="'Status'"/> <XSL:s param- ime="QueryFilterFieldValue" odabrati=""U proces '"/> <XSL:s param- ime="TotalItems" odabrati="$totalInProcess"></XSL:s param-> </XSL:poziv-predložak> </stol> </td> </tr> </stol> </XSL:inače> </XSL:izabrati> </XSL:predložak> <!-- Ovaj predložak obavlja posao prikazivanja pojedine linije u grafikona. Vjerojatno ćete najviše učiniti za svoju ugađati ovdje. --> <XSL:predložak ime="ShowBar"> <XSL:zaustaviti ime="BarDisplayLabel" /> <!-- Oznaka pokazati --> <XSL:zaustaviti ime="BarPercent"/> <!-- Postotak od ukupnog. --> <XSL:zaustaviti ime="QueryFilterFieldName"/> <!-- Koristi se za skok na upit & filter --> <XSL:zaustaviti ime="QueryFilterFieldValue"/> <!-- Koristi se za skok na upit & filter --> <XSL:zaustaviti ime="TotalItems" /> <!-- Ukupan broj ovog barlabel --> <tr> <!-- Traka oznaka sama. --> <td klasa="ms-formbody" širina="30%"> <!-- Ovaj sljedeći set izvještaja gradi upita koji omogućuje           . Mi iskoristiti nekoliko stvari ovdje: 1. Možemo proći FilterField1 i FilterValue1 na popisu za filtriranje na stupcu. 2. SharePoint prolazi ključni parametar za nas, ListUrlDir that points to the underlying list against which this DVWP is "running". Nije zabavno XSL? --> <XSL:tekst disable-output-bijegu="da"> <![CDATA[<a href ="]]></XSL:tekst> <XSL:vrijednost od odabrati="$ListUrlDir"/> <XSL:tekst disable-output-bijegu="da"><![CDATA[?FilterField1 =]]></XSL:tekst> <XSL:vrijednost od odabrati="$QueryFilterFieldName"/> <XSL:tekst disable-output-bijegu="da"><![CDATA[&FilterValue1 =]]></XSL:tekst> <XSL:vrijednost od odabrati="$QueryFilterFieldValue"/> <XSL:tekst disable-output-bijegu="da"><![CDATA[">]]></XSL:tekst> <XSL:vrijednost od odabrati="$BarDisplayLabel"/> <XSL:tekst disable-output-bijegu="da"><![CDATA[</a>]]></XSL:tekst> <!-- Sljedeći bitni pokazuje neke brojeve u obliku: "(ukupan / % od ukupnog)" --> (<XSL:vrijednost od odabrati="$TotalItems"/> / <!-- To stvara lijepu posto naljepnicu za nas. Hvala, Microsoft! --> <XSL:poziv-predložak ime="percentformat"> <XSL:s param- ime="posto" odabrati="$BarPercent"/> </XSL:poziv-predložak>) </td> <!-- Konačno, emitiraju <td> Oznaka za bar sama.--> <td> <stol cellpadding="0" cellspacing="0" granica="0" širina="{okrugli($BarPercent * 100)+1}%"> <tr bgcolor="crven"> <XSL:tekst disable-output-bijegu="da"><![CDATA[&nbsp;]]></XSL:tekst> </tr> </stol> </td> </tr> </XSL:predložak> <!-- Ovo je preuzet izravno iz nekog XSL sam pronašao u MS predložak. --> <XSL:predložak ime="percentformat"> <XSL:zaustaviti ime="posto"/> <XSL:izabrati> <XSL:kada test="Oblik-broj($posto, "#, # # 0%;-#,##0%')= 'NaN'">0%</XSL:kada> <XSL:inače> <XSL:vrijednost od odabrati="Oblik-broj($posto, "#, # # 0%;-#,##0%')" /> </XSL:inače> </XSL:izabrati> </XSL:predložak> </XSL:stilovima>

U Rezultati:

XSL odozgor generira ovaj graf:

slika

Spustite se do temeljnih podataka klikom na statusnoj koda:

slika

Završne misli:

Može li ovo biti generalizirani?

Volim ovaj koncept grafičkim, but I hate the fact that I have to go in and do so much hand-coding. I’ve given a little thought to whether it can be generalized and I’m optimistic, but I’m also a little fearful that there may be a brick wall somewhere along the path that won’t offer any work-around. If anyone has some good ideas on this, molimo zabilježite u komentarima ili elektronička pošta mene.

Vertikalni Grafikoni:

This is a horizontal bar graph. It’s certainly possible to create a vertical graph. We just need to change the HTML. I would start the same way: Create an HTML representation of a vertical bar graph and then figure out how to get that via XSL. If anyone is interested in that, I could be persuaded to try it out and work out the kinks. If someone has already done that, molim javite mi i rado ću link na svoj blog 🙂

Mislim da je izazov s vertikalnom graf je da su naljepnice za grafu su teže upravljati, ali svakako ne i nemoguće.

Naziv polja Ulovio je:

Postoje najmanje dvije stvari koje treba paziti s nazivima polja.

Prvi, a field name with a space has to be escaped in the XSL. This will probably be an issue here:

        <XSL:varijabla ime="totalProposed" 
odabrati="brojati(/dsQueryResponse / Redovi / Row[normalizirati-prostor(@ Status) = 'Prijedlog'])" />

If your "Status" column is actually named "Status Code" then you need to reference it as "Status_x0020_Code":

   <XSL:varijabla ime="totalProposed" 
odabrati="brojati(/dsQueryResponse / Redovi / Row[normalizirati-prostor(@ Status_x0020_Code) = 'Prijedlog'])" />

Drugi, i ja sam malo fuzzy na ovo, but you also need to be on the alert for field name changes. If you name your field "Status Code" i onda kasnije, rename it to "AFE Status", the "internal name" does not change. The internal name will still be "Status Code" and must be referenced as "Status_x0020_Code". The "other resources" linkovi mogu pomoći u dijagnosticiranju i ispraviti ovu vrstu problema.

O toj boji:

I picked "red" because it’s pleasing to me at the moment. It would not be a big deal to show different colors so as to provide more than just a visual description of a number, but to also provide a useful KPI. Na primjer, if the percentage of "stalled" AFE-a je > 10% tada prikazati u crveno, otherwise show it in black. Koristiti <XSL:izabrati> da to postigne.

Ostali resursi:

Sretan pretvarajući!

<kraj />

Pretplatite se na moj blog!

SharePoint ne daje “Tko ima pristup” Izvješća

UPDATE 01/28/08: Ovaj projekt codeplex bavi ovaj problem: http://www.codeplex.com/AccessChecker. I have not used it, ali izgleda obećavajuće, ako je to pitanje morate obratiti u vašem okruženju.

UPDATE 11/13/08: Joel Oleson napisao gore jako dobar post na većem broju upravljanja sigurnošću ovdje: http://www.sharepointjoel.com / Lists / Postova / Post.aspx?2D4fc2 2D183c% 2D8320%%% Lista = 0cd1a63d 2Dba5369008acb&ID = 113. It links to a number of other useful resources.

Forum korisnici i klijenti često postavljaju pitanje uzduž ovih linija: "Kako mogu generirati popis svih korisnika s pristupom na web-mjestu" ili "Kako mogu automatski upozoriti sve korisnike s pristupom na popis o promjenama na popis?"

There is no out of the box solution for this. If you think about it for a moment, to nije teško shvatiti zašto.

SharePoint security is very flexible. There are at least four major categories of users:

  • Anonimni korisnici.
  • Korisnici i SharePoint grupe.
  • Active Directory Korisnici.
  • Radi baziranu provjeru autentičnosti (FBA) Korisnici.

Fleksibilnost znači da, iz perspektive zaštite, any given SharePoint site will be dramatically different from another. In order to generate an access list report, potrebno je utvrditi koliko stranica je osiguran, query multiple different user profile repositories and then present it in a useful fashion. That’s a hard problem to solve generically.

Kako su to organizacije koje se bave? I’d love to hear from you in comments or e-mail.

</kraj>