Top
rss

BLOG

Nov
23

SharePoint No-Code Solution: Datenpflege umfangreicher Listen

From Simone Fıçıcı in Enterprise Content Management

SharePoint – sowohl der Server 2007 als auch die Services 3.0 – bieten eine Fülle an Funktionen… Dennoch stoße ich immer wieder auf ähnliche Herausforderungen beim Kunden, für die es keine offensichtlichen Standardfunktionen gibt. Jedoch sind diese mit den richtigen Kniffen, Tricks und kleinen Anpassungen ohne aufwändige Programmierung und teure Erweiterungen lösbar. So entstand die Idee zur Reihe "SharePoint No-Code Solution"! Ich möchte explizit darauf hinweisen, dass alles bewusst ohne den Einsatz von SharePoint Designer realisiert wurde und die vorgestellten Lösungen somit "enterprisefähig" sind. Viel Spaß beim nachbauen!

Herausforderung:

Um einen meiner Kunden zu zitieren: "Herausforderung ist es, die Sicht auf den ganzen Kuchen beizubehalten, jedoch den Fachabteilungen die Pflege der Kuchenstücke einzeln zu ermöglichen." Das beibehalten der "Sicht auf den ganzen Kuchen" kann einfach realisiert werden, indem alle Daten über mehrere Content Types in einer zentralen Liste gehalten werden. Wie jedoch kann die zielgruppenbasierte Pflege und Darstellung dieser "Datenteile" komfortabel erfolgen?

Lösungsbeispiel:


Zu jeder Niederlassung werden verschiedene Informationen gepflegt, die für unterschiedliche Zielgruppen relevant sind: Immobilien Informationen, IT Infrastruktur, Personalstand, Controlling Kennzahlen, Marketing Aktivitäten…
Dadurch gibt es sowohl einen zentralen Einstieg und die zentrale Datenhaltung, was Auswertungen über alles ermöglicht, als auch die zielgruppenspezifische Ansicht eines "Kuchenstücks" wie beispielsweise IT gefiltert auf den Standort 4711:

Umsetzung:

Beispiel: Jede Niederlassung hat Immobilien, Personal und Controlling Informationen.

Drei Schritte: 1) Content Types anlegen; 2) Berechnete Felder einfügen 4) Ansichten generieren [Bild2 oben] 3) Einstiegsseite mit Inhaltseditor WebPart anpassen [Bild1 oben]

  1. Anlegen der drei Content Types "Immobilien Informationen", "Personal Informationen" und "Controlling Informationen"…
    Ein neues Element von jedem Content Type anlegen und die ContentType ID auf der Adressleiste merken.
  2. Erstellung zweier Felder je Content Type zum anzeigen und editieren. Der Inhalt setzt sich zusammen aus einem "Codewort", einem "Trennzeichen" und der jeweiligen Content Type ID bzw. des Filter Werts:
    z.B. Feld "Immobilie editieren" = Text Feld mit dem automatischen Wert ImmoEdit#ContentTypeID (mit der gemerkten ID aus Punkt 1) ersetzen => z.B. ImmoEdit#2) ð Zum Editieren wird das Element mit die EditForm mit der entsprechenden Content Type ID geöffnet.
    z.B. Feld "Immobilie anzeigen" = Berechnetes Feld mit dem Wert ="ImmoAnz#"&[Titel] ð Individuelle Ansichten generieren und verlinken, die als Filter den Titel des ausgewählten Elements übergeben.
    Alle Felder als ausgeblendet (hidden) in den Formularen deklarieren!
  3. Je gewünschter Ansicht oder Zielgruppe eine WebPart Page anlegen: …/Seiten/Immobilie.aspx. Hier einen Query String (URL) Filter WebPart hinzufügen und bei diesem den Parameter "Titel" eingeben.
    Die Listen WebParts einfügen und Spalten und das Layout entsprechend definieren und letztlich die WebParts mit dem Filter WebPart verbinden.
    So liest der Filter WebPart den übergebenen Titel aus der URL aus und übergibt diesen als Filter an die Listen WebParts (s. Bild2 oben).
  4. Auf der Einsteigsseite den Listen WebPart mit allen Feldern hinzufügen und den Content Editor (Inhalts-Editor) WebPart am Ende der Seite einfügen.
    Das JavaScript mit folgendem beispielhaften Aufbau im Source Editor einfügen:

<script language="javascript">
/* URL für die Edit Form: */
var editUrl = "/.../EditForm.aspx?&ID=";
/* URL der gerade generierten Ansicht und den Parameter "Titel": */
var displayImmobilieUrl = "/…/Seiten/Immobilie.aspx?&Titel=";
/* ContentType IDs als Variablen deklarieren: */
var ct_Immobilie = "&ContentTypeID=3";
/* die Links zu den Icons als Variablen deklarieren: */
var editIco = "/.../PublishingImages/ico_editieren.jpg";
var displayIco = "/.../PublishingImages/ico_anzeigen.jpg";
for(i=0;i<allCells.length; i++)
{
if(allCells[i].innerText.indexOf("ImmoEdit#") == 0)
{
id = allCells[i].innerText.split("#")[1];
allCells[i].innerHTML = "<a href='" + editUrl + id + ct_Immobilie + "'><img src='" + editIco + "' border='0' alt='Immobilie editieren'></a>";
}
if(allCells[i].innerText.indexOf("ImmoAnz#") == 0)
{
id = allCells[i].innerText.split("#")[1];
allCells[i].innerHTML = "<a href=/…/Seiten/Immobilie.aspx?&Titel= '" + id "'><img src='" + displayIco + "' border='0' alt='Immobilie anzeigen'></a>";
}
}
</script>
(ggf. das JavaScript auf Umlaute, Sonderzeichen, Verlinkungen, Bilder etc. optimieren)

Add a comment

0
     

    ADD A COMMENT

    Name*

    E-mail*

    Comment*

    *Required information

    PlanB. GmbH