- Initialize Gulp build process with gulpfile.js - Create package.json for project dependencies and scripts - Add TypeScript declarations for SCSS modules - Implement DynamicPollWebPart with property pane configuration - Create PollDataService for SharePoint list interactions - Develop core polling logic in PollCore.ts - Define types for polls and answers in PollTypes.ts - Create React components for DynamicPoll UI - Add localization support for English and German - Implement unit tests for core polling functionality - Set up TypeScript and TSLint configurations
55 lines
2.3 KiB
Markdown
55 lines
2.3 KiB
Markdown
# 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
|
|
|
|
- aktive Umfrage anhand von Aktiv-Flag sowie optionalem Start- und Enddatum
|
|
- 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:
|
|
|
|
```powershell
|
|
.\deployment\Initialize-DynamicPollLists.ps1 `
|
|
-SiteUrl 'http://portal.contoso.local/sites/DEINE-SITE'
|
|
```
|
|
|
|
Das Skript ist idempotent und legt standardmaessig diese Listen an:
|
|
|
|
- `Polls`: `Title`, `Question`, `Options`, `StartDate`, `EndDate`, `IsActive`
|
|
- `Poll Answers`: `Title` (Benutzerschluessel), `Poll` (Lookup), `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 und mindestens einer Option anlegen. `IsActive` aktivieren; Start- und Enddatum koennen leer bleiben. Sind mehrere Umfragen gleichzeitig aktiv, wird die mit dem neuesten Startdatum verwendet.
|
|
|
|
Danach das WebPart auf einer modernen Seite einfuegen und im Property Pane die Listen `Polls` und `Poll Answers` auswaehlen.
|
|
|
|
## Paket bauen
|
|
|
|
```powershell
|
|
npm install
|
|
npm run package
|
|
```
|
|
|
|
Das fertige Paket liegt unter `sharepoint/solution/dynamic-poll.sppkg`.
|
|
|
|
## Hinweise
|
|
|
|
Der Benutzerschluessel wird in der `Title`-Spalte der Antwortliste gespeichert. Die doppelte Stimmabgabe wird vor dem Schreiben geprueft. Zwei exakt gleichzeitige Requests desselben Benutzers lassen sich ohne serverseitige Eindeutigkeitsregel dennoch nicht vollstaendig ausschliessen.
|