- Bump version in package.json to 1.3.0 - Add new properties for field mapping in DynamicPollWebPart.manifest.json - Enhance DynamicPollWebPart.ts to support dynamic field mapping for polls and answers - Implement field loading and default application logic in PollDataService.ts - Update PollTypes.ts to include new interfaces for field mapping - Modify DynamicPollCollection.tsx to display configurable web part title - Update styles in DynamicPoll.module.scss for improved UI - Add localization strings for new properties in en-us.js and de-de.js - Update tests to reflect changes in data structure and functionality - Validate project structure and ensure all new features are accounted for
Dynamic Poll
Ein eigenstaendiges, mit SharePoint Server Subscription Edition kompatibles SPFx-1.4.1-WebPart fuer einfache Umfragen. Die Funktion orientiert sich am PnP-Beispiel react-dynamic-poll, ist aber fuer die vorhandene Legacy-Toolchain und klassische SharePoint-REST-Endpunkte umgesetzt.
Funktionen
- alle aktiven Umfragen anhand von Aktiv-Flag sowie optionalem Start- und Enddatum
- umschaltbare Darstellung mehrerer aktiver Umfragen als Accordion oder Slider mit Punktenavigation
- konfigurierbarer WebPart-Titel
- vollstaendige Spaltenzuordnung im Property Pane
- Content-Type-Hub-taugliche Verbindung zwischen Umfragen und Antworten ueber einen stabilen Textschluessel
- genau eine Antwort je angemeldetem Benutzer und Umfrage
- unmittelbare Ergebnisanzeige mit Stimmen und Prozentwerten
- optional sichtbare Ergebnisse vor der eigenen Abstimmung
- konfigurierbares Aktualisierungsintervall
- barrierearme Radio-Auswahl, Statusmeldungen und Ergebnisbalken
- SharePoint-Theme-Farben statt fest verdrahteter Portal-Farben
Voraussetzungen
- SharePoint Server Subscription Edition mit SPFx 1.4.1
- Node.js 8.17.0 und npm 6.x fuer den Build
- SharePoint Management Shell fuer die Listenbereitstellung
Listen bereitstellen
In der SharePoint Management Shell auf einem SharePoint-Server ausfuehren:
.\deployment\Initialize-DynamicPollLists.ps1 `
-SiteUrl 'http://portal.contoso.local/sites/DEINE-SITE'
Das Skript ist idempotent und legt standardmaessig diese Listen an:
Polls:PollKey,Title,Question,Options(mehrzeiliger Nur-Text),StartDate,EndDate,IsActivePoll Answers:PollKey(Text),UserKey(Text),Answer
Die Benutzer des WebParts benoetigen Leserechte auf Polls sowie Lese- und Hinzufuegerechte auf Poll Answers. Fuer die Ergebnisberechnung muessen sie die vorhandenen Antworten lesen koennen.
Umfrage anlegen
In Polls ein Element mit Frage anlegen und in Options jede Antwortmoeglichkeit in eine eigene Zeile schreiben, zum Beispiel:
Ja
Nein
Anderer Termin
Leerzeilen und doppelte Eintraege werden ignoriert. IsActive aktivieren; Start- und Enddatum koennen leer bleiben. Sind mehrere Umfragen gleichzeitig aktiv, werden sie nach Startdatum sortiert und entsprechend dem im Property Pane gewählten Accordion- oder Slider-Modus angezeigt.
Danach das WebPart auf einer modernen Seite einfuegen, im Property Pane die Listen Polls und Poll Answers
auswaehlen und die Spalten zuordnen. Bekannte Standardnamen werden automatisch vorbelegt.
Verwendung mit dem Inhaltstyp-Katalog
Die beiden Listen duerfen aus zentral verteilten Inhaltstypen und Websitespalten aufgebaut werden. Fuer die Beziehung wird absichtlich kein Lookup verwendet: Der Poll-Schluessel enthaelt einen eindeutigen, dauerhaften Textwert und derselbe Wert wird beim Abstimmen in die zugeordnete Textspalte der Antwortliste geschrieben. Ein Lookup verweist auf die ID einer konkreten Liste und kann deshalb nicht verlaesslich ueber den Content Type Hub auf andere Websitesammlungen verteilt werden.
Im Inhaltstyp-Katalog sollten dafuer zwei getrennte Websitespalten angelegt werden: eine eindeutige/indexierte
Schluesselspalte fuer die Poll-Liste und eine nicht eindeutige Verweisspalte fuer die Antwortliste. Die
Verweisspalte darf nicht eindeutig sein, weil mehrere Benutzer dieselbe Umfrage beantworten. Interne Namen
wie PollDefinitionKey und PollReferenceKey sind daher ebenso moeglich und werden im Property Pane zugeordnet.
Die internen Spaltennamen duerfen abweichen. Im Property Pane lassen sich Umfrageschluessel, Titel, Frage,
Antwortoptionen, Zeitfenster, Aktiv-Flag sowie Umfrageschluessel, Benutzer und Antwort der Antwortliste frei
zuordnen. Fuer vorhandene Installationen bleibt ein bestehendes Poll-Lookup lesbar: In diesem Fall muss als
Umfrageschluessel ID und als Antwortschluessel das Lookup Poll ausgewaehlt werden. Empfohlen ist die
Migration auf die beiden Textspalten PollKey.
Paket bauen
npm install
npm run package
Das fertige Paket liegt unter sharepoint/solution/dynamic-poll-web-part.sppkg.
Hinweise
Der Benutzerschluessel wird in der zugeordneten Spalte (standardmaessig UserKey) gespeichert. Die doppelte Stimmabgabe wird vor dem Schreiben geprueft. Zwei exakt gleichzeitige Requests desselben Benutzers lassen sich ohne serverseitige Eindeutigkeitsregel dennoch nicht vollstaendig ausschliessen.
Nach einem Upgrade muss das Provisionierungsskript erneut ausgefuehrt werden. Es legt PollKey, UserKey und
das mehrzeilige OptionsText an, uebernimmt vorhandene Werte und blendet das alte Poll-Lookup sowie die alte
Choice-Spalte in den Formularen aus. Das Skript legt bei neuen Installationen kein Lookup mehr an.