02 grudnia 2018

Przykłady dostosowywania TeamSites - część pierwsza

Tydzień temu miałem przyjemność prowadzić prezentację na konferencji Sharecon 2018, dotyczącą automatyzacji zadań związanych z tworzeniem TeamSite'ów. Ostatnio trochę głębiej badałem ten temat w związku z projektami wdrażania Microsoft Teams (a przecież TeamSite na Sharepoincie Online jest tworzony dla każdego zespołu Teams). Prezentację uzupełniłem o przykłady wykorzystania powershella i stwierdziłem, że warto o tym parę słów napisać.
Pierwszy przykład, wykorzystujący Powershella związany był z zagadnieniem Sharepoint Site Theming. Możemy w prosty sposób utworzyć i zastosować własny temat kolorystyczny (skrypt yellowtheme.ps1), który  następnie możemy użyć do utworzenia sitescriptu, wykorzystanego następnie do zmiany domyślnego szablonu strony TeamSite.
#
# yellowtheme.ps1
#

Connect-PnPOnline -Url https://pepugnet-admin.sharepoint.com
$themepalette = @{
    "themePrimary" = "#ffdd00";
    "themeLighterAlt" = "#fffded";
    "themeLighter" = "#fff9d1";
    "themeLight" = "#fff090";
    "themeTertiary" = "#ffe53f";
    "themeSecondary" = "#ffde0b";
    "themeDarkAlt" = "#e6c700";
    "themeDark" = "#a38d00";
    "themeDarker" = "#8c7a00";
    "neutralLighterAlt" = "#f8f8f8";
    "neutralLighter" = "#f4f4f4";
    "neutralLight" = "#eaeaea";
    "neutralQuaternaryAlt" = "#dadada";
    "neutralQuaternary" = "#d0d0d0";
    "neutralTertiaryAlt" = "#c8c8c8";
    "neutralTertiary" = "#595959";
    "neutralSecondary" = "#373737";
    "neutralPrimaryAlt" = "#2f2f2f";
    "neutralPrimary" = "#000000";
    "neutralDark" = "#151515";
    "black" = "#0b0b0b";
    "white" = "#ffffff";
    "primaryBackground" = "#ffffff";
    "primaryText" = "#000000";
    "bodyBackground" = "#ffffff";
    "bodyText" = "#000000";
    "disabledBackground" = "#f4f4f4";
    "disabledText" = "#c8c8c8";
}

Add-PnPTenantTheme -Identity "yellowTheme" -Palette $themepalette -IsInverted $false

Powyższy skrypt działa bardzo prosto - łączymy się do naszego tenanta O365, a konkretnie do witryny administracyjnej SPO (w przykładzie używam swojego tenanta testowego). Następnie definiujemy paletę kolorystyczną naszego tematu - brzmi groźnie, jednak na stronie Theme Generator Tool jest dostępny online'owy edytor kolorów, który generuje nam od razu odpowiednią tablicę w Powershell, JSON lub kod JavaScript (od razu możemy przejść przez link do edytora online CodePen).
































Ostatni cmdlet w skrypcie definiuje nam nowy temat kolorystyczny na poziomie tenanta Office 365.
Warto przy okazji zauważyć, że oba cmdlety użyte w skrypcie znajdują się nie w domyślnym module administracyjnym Sharepoint Online ale w module SharePointPnPPowerShellOnline, czyli module Powershell udostępnionym w ramach Sharepoint Patterns and Practices (PnP). Moduł możemy sobie zainstalować ze standardowego repozytorium PSGallery (o konfiguracji komputera do administrowania Office 365 pisałem kilka miesięcy temu), uzyskując w ten sposób wiele dodatkowych możliwości zarządzania SPO.
Mając dodany na poziomie tenanta temat kolorystyczny, możemy go ręcznie przypisać do site'u (rysunek poniżej), albo użyć w konfiguracji domyślnego szablonu dla kolejnych witryn.
W tym celu musimy utworzyć plik JSON z definicją sitescriptu (poniżej), a następnie wykonać następujące polecenia:
Get-Content 'c:\Scripts\TeamSite\spsitescript.json' -Raw | Add-SPOSiteScript -Title "ThemeDemo" -Description "Applies theme and nav link"
Add-SPOSiteDesign -Title "Theme" -WebTemplate "64" -SiteScripts "6b4d56ac-b866-4909-a5ba-e25f5d0b0885" -Description "Applies standard company theme to site" -IsDefault

Pierwsza sekwencja tworzy site script na podstawie zawartości pliku JSON i zwraca identyfikator skryptu, a druga komenda tworzy zmodyfikowany szablon TeamSite (numer szablonu 64) i ustawia go jako domyślny dla tenanta (ciąg "6b4d56ac-b866-4909-a5ba-e25f5d0b0885" to właśnie identyfikator skryptu). 
Zawartość JSON spssitescript.json wygląda następująco:
{
    "$schema": "schema.json",
        "actions": [
            {
                "verb": "addNavLink",
                "url": "https://techcommunity.microsoft.com",
                "displayName": "Aswers from Community",
                "isWebRelative": false
            },
            {
                "verb": "applyTheme",
                "themeName": "yellowTheme"
            }
        ],
        "binddata": {},
        "version": 1
}
Jak można się domyślić, patrząc na składnię pliku, definiowane są dwie akcje, które będą dodatkowo wykonywane podczas tworzenia nowej witryny typu TeamSite - dodawana jest pozycja do menu nawigacyjnego oraz ustawiany jest temat kolorystyczny (zdefiniowany wcześniej na poziomie tenanta) widać to wyraźnie, gdy uruchomimy kreator tworzenia nowej witryny zespołu z poziomu portalu Sharepoint Online (rysunek poniżej).



















Więcej informacji na temat możliwych akcji przekazywanych przez JSON i poprawnej składni można znaleźć w dokumentacji Sharepoint. Inne możliwości użycia zmodyfikowanych elementów wyglądu strony pokażę w drugiej części artykułu.

1 komentarz:

Santanayana pisze...

Bardzo fajny artykuł. Prosimy o wiecej