├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── config.yml
│ └── feature_request.md
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── Modernization partner guidance
├── Microsoft Teamwork Transformation Customer Offer Presentation.pptx
├── Microsoft Teamwork Transformation Delivery Guide.pptx
├── Microsoft Teamwork Transformation Workshop.pptx
├── README.md
└── Teamwork Transformation - April 2021.pptx
├── README.md
├── Scripts
├── HomePageModernizationOptOut
│ ├── HomePageModernizationOptOut.ps1
│ ├── SitesWithUncustomizedHomePages.csv
│ └── readme.md
├── ListsAndLibraries
│ ├── SetModernListUsage.ps1
│ ├── SitesWithCustomizations.csv
│ └── readme.md
├── ModernizeSiteCollection
│ ├── ModernizeSiteCollections.ps1
│ ├── ValidateSiteCollectionsInput.ps1
│ ├── readme.md
│ └── sitecollections.csv
├── O365GroupConnect
│ ├── O365GroupConnectSite.ps1
│ ├── ValidateInput.ps1
│ ├── readme.md
│ └── sitecollections.csv
├── PageTransformation
│ ├── Convert-BlogPages.ps1
│ ├── Convert-DelveBlogPages.ps1
│ ├── Convert-OnPremisesPublishingPages.ps1
│ ├── Convert-PublishingPages.ps1
│ ├── Convert-WikiAndWebPartPages.ps1
│ ├── TransformPages.ps1
│ └── readme.md
└── readme.md
├── Solutions
├── Page transformation UI release notes.md
├── PageTransformationUI
│ ├── README.md
│ ├── assets
│ │ ├── ModernizationFeedbackList.xml
│ │ ├── ProvisioningSchema-2018-05.xsd
│ │ ├── modernize16x16.png
│ │ ├── modernize32x32.png
│ │ ├── pnppagetransformationclassicbanner.js
│ │ ├── sharepointpnp-pagetransformation-central.sppkg
│ │ └── sharepointpnp-pagetransformation-client.sppkg
│ ├── docs
│ │ ├── deploymentguide.md
│ │ ├── images
│ │ │ ├── PageTransformationUIarchitecture.png
│ │ │ ├── enablepagetransformationwebpart.png
│ │ │ ├── pagebannerwebpart.png
│ │ │ ├── pagetransformatorwebpart.png
│ │ │ ├── troubleshoot_AADST65001.png
│ │ │ ├── troubleshoot_AADSTS50001.png
│ │ │ └── troubleshoot_ClearPageCache.png
│ │ ├── manual setup
│ │ │ ├── images
│ │ │ │ ├── azure_app_1.png
│ │ │ │ ├── azure_app_2.png
│ │ │ │ ├── azure_app_3.png
│ │ │ │ ├── azure_app_4.png
│ │ │ │ ├── azure_app_5.png
│ │ │ │ ├── azure_function_1.png
│ │ │ │ ├── azure_function_2.png
│ │ │ │ ├── azure_function_3.png
│ │ │ │ ├── azure_function_4.png
│ │ │ │ ├── azure_function_5.png
│ │ │ │ ├── azure_multitenant_1.png
│ │ │ │ ├── azure_multitenant_2.png
│ │ │ │ ├── sharepoint_app_1.png
│ │ │ │ ├── sharepoint_app_2.png
│ │ │ │ ├── sharepoint_app_3.png
│ │ │ │ ├── sharepoint_app_4.png
│ │ │ │ ├── sharepoint_site_1.png
│ │ │ │ └── sharepoint_site_2.png
│ │ │ ├── modernization-ui-manual-azure.md
│ │ │ ├── modernization-ui-manual-sharepoint.old.md
│ │ │ ├── modernization-ui-multitenant-setup.md
│ │ │ ├── modernization-ui-multitenant-use.md
│ │ │ └── readme.md
│ │ ├── modernization-ui-faq.md
│ │ ├── readme.md
│ │ ├── troubleshootingguide.md
│ │ └── upgradeguide.md
│ ├── provisioning
│ │ ├── BuildSiteCSV.ps1
│ │ ├── ConfigurePageTransformation.ps1
│ │ ├── Disable-PageTransformation.ps1
│ │ ├── Enable-PageTransformation.ps1
│ │ ├── Provision-AADApplication.ps1
│ │ ├── Provision-ModernizationFramework.ps1
│ │ ├── README.md
│ │ ├── Update-ModernizationFramework.ps1
│ │ ├── UpdatingPnPFile.md
│ │ ├── Upgrade-ToBeta.ps1
│ │ ├── modernization.pnp
│ │ ├── modernization.xml
│ │ └── sharepointpnpmodernizationeurope.zip
│ ├── services
│ │ ├── ModernizationService
│ │ │ ├── ModernizationFunction
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Extensions
│ │ │ │ │ └── WebExtensions.cs
│ │ │ │ ├── ModernizationFunction.csproj
│ │ │ │ ├── ModernizationService.cs
│ │ │ │ ├── OAuthTokenResponse.cs
│ │ │ │ ├── Telemetry
│ │ │ │ │ └── FunctionTelemetry.cs
│ │ │ │ ├── host.json
│ │ │ │ ├── readme.txt
│ │ │ │ └── webpartmapping.xml
│ │ │ └── ModernizationService.sln
│ │ └── readme.md
│ └── spfx
│ │ ├── README.md
│ │ ├── central
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── .vscode
│ │ │ ├── extensions.json
│ │ │ ├── launch.json
│ │ │ └── settings.json
│ │ ├── .yo-rc.json
│ │ ├── README.md
│ │ ├── config
│ │ │ ├── config.json
│ │ │ ├── copy-assets.json
│ │ │ ├── deploy-azure-storage.json
│ │ │ ├── package-solution.json
│ │ │ ├── serve.json
│ │ │ └── write-manifests.json
│ │ ├── gulpfile.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ └── webparts
│ │ │ │ ├── pageTransformator
│ │ │ │ ├── PageTransformatorWebPart.manifest.json
│ │ │ │ ├── PageTransformatorWebPart.ts
│ │ │ │ ├── components
│ │ │ │ │ ├── IPageTransformatorProps.ts
│ │ │ │ │ ├── IPageTransformatorState.ts
│ │ │ │ │ ├── IStorageEntities.ts
│ │ │ │ │ ├── IStorageEntity.ts
│ │ │ │ │ ├── PageTransformator.module.scss
│ │ │ │ │ └── PageTransformator.tsx
│ │ │ │ └── loc
│ │ │ │ │ ├── en-us.js
│ │ │ │ │ └── mystrings.d.ts
│ │ │ │ └── pageTransformatorAdmin
│ │ │ │ ├── PageTransformatorAdminWebPart.manifest.json
│ │ │ │ ├── PageTransformatorAdminWebPart.ts
│ │ │ │ ├── components
│ │ │ │ ├── IPageTransformatorAdminProps.ts
│ │ │ │ ├── PageTransformatorAdmin.module.scss
│ │ │ │ └── PageTransformatorAdmin.tsx
│ │ │ │ └── loc
│ │ │ │ ├── en-us.js
│ │ │ │ └── mystrings.d.ts
│ │ ├── teams
│ │ │ ├── manifest.json
│ │ │ ├── tab20x20.png
│ │ │ └── tab96x96.png
│ │ ├── tsconfig.json
│ │ └── tslint.json
│ │ ├── package-lock.json
│ │ └── user
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── .vscode
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── settings.json
│ │ ├── .yo-rc.json
│ │ ├── README.md
│ │ ├── config
│ │ ├── config.json
│ │ ├── copy-assets.json
│ │ ├── deploy-azure-storage.json
│ │ ├── package-solution.json
│ │ ├── serve.json
│ │ └── write-manifests.json
│ │ ├── gulpfile.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── src
│ │ ├── index.ts
│ │ └── webparts
│ │ │ └── pageBanner
│ │ │ ├── PageBannerWebPart.manifest.json
│ │ │ ├── PageBannerWebPart.ts
│ │ │ ├── components
│ │ │ ├── IPageBannerProps.ts
│ │ │ ├── IPageBannerState.ts
│ │ │ ├── IStorageEntities.ts
│ │ │ ├── PageBanner.module.scss
│ │ │ ├── PageBanner.tsx
│ │ │ └── PostFeedback.tsx
│ │ │ └── loc
│ │ │ ├── en-us.js
│ │ │ └── mystrings.d.ts
│ │ ├── teams
│ │ ├── manifest.json
│ │ ├── tab20x20.png
│ │ └── tab96x96.png
│ │ ├── tsconfig.json
│ │ └── tslint.json
└── README.md
└── Tools
├── README.md
└── SharePoint.Modernization
├── .gitignore
├── Modernization Framework release notes.md
├── Modernization Scanner release notes.md
├── Modernization Scanner.md
├── README.md
├── Releases
├── SharePoint.Modernization.Scanner.exe
├── SharePoint.Modernization.Scanner.exe.SHA512
├── readme.md
└── version.txt
├── SharePointPnP.Modernization.DocsGenerator
├── App.config
├── FunctionAnalyzer.cs
├── Model
│ ├── Function.cs
│ ├── FunctionParameter.cs
│ └── Selector.cs
├── Program.cs
├── Properties
│ └── AssemblyInfo.cs
├── SelectorAnalyzer.cs
├── SharePointPnP.Modernization.DocsGenerator.csproj
└── packages.config
├── SharePointPnP.Modernization.Framework.Profiler
├── App.config
├── Program.cs
├── Properties
│ └── AssemblyInfo.cs
├── SharePointPnP.Modernization.Framework.Profiler.csproj
└── packages.config
├── SharePointPnP.Modernization.Framework.SampleAddOn
├── MyCustomFunctions.cs
├── Properties
│ └── AssemblyInfo.cs
├── SharePointPnP.Modernization.Framework.SampleAddOn.csproj
├── app.config
└── packages.config
├── SharePointPnP.Modernization.Framework.Tests
├── AdHocTests.cs
├── App.config.sample
├── Properties
│ └── AssemblyInfo.cs
├── Provision
│ ├── ClassicPublishingSite-SampleData.xml
│ ├── ClassicTeamSite-SampleData.xml
│ ├── Common
│ │ ├── Assets
│ │ │ └── tonys-chocolate-1-1024x664.jpg
│ │ ├── Content
│ │ │ └── Tonys Chocolate MS News.md
│ │ └── Readme.md
│ ├── Documents
│ │ └── Contoso_Report.pptx
│ ├── Images
│ │ ├── Logos
│ │ │ ├── contoso-electronics-transp-1200.png
│ │ │ ├── contoso-electronics-transp-300.png
│ │ │ ├── contoso-electronics-transp-600.png
│ │ │ ├── contoso-sale-site.png
│ │ │ ├── contoso_logo_twitter.png
│ │ │ ├── logo-files.xml
│ │ │ ├── logo_IT.png
│ │ │ ├── logo_benefits.png
│ │ │ ├── logo_data_center_technologies.png
│ │ │ ├── logo_design_tools_software.png
│ │ │ ├── logo_finance.png
│ │ │ ├── logo_graphics_visual_technologies.png
│ │ │ ├── logo_hr.png
│ │ │ ├── logo_legal.png
│ │ │ ├── logo_memory_networking_technologies.png
│ │ │ ├── logo_sales_web_site.png
│ │ │ ├── logo_technologies.png
│ │ │ ├── logo_v_01.png
│ │ │ ├── logo_v_03.png
│ │ │ ├── logo_v_08.png
│ │ │ ├── logo_v_11.png
│ │ │ ├── logo_v_14.png
│ │ │ ├── logo_v_15.png
│ │ │ ├── logo_v_16.png
│ │ │ └── logo_v_19.png
│ │ └── Photos
│ │ │ ├── Allison-Linn_Head-Shot-215x215.png
│ │ │ ├── Commercial16_smallmeeting_02.jpg
│ │ │ ├── Craig-Mundie-_20-Ann.-768x983.jpg
│ │ │ ├── EDU18_Teachers_013-960x640.jpg
│ │ │ ├── FN5A5682-683x1024.jpg
│ │ │ ├── KLAPSTUK-TU-Delft-Qutech-5-of-113-3.jpg
│ │ │ ├── MS-Stories-Station-Q-Freedman-Michael-12-1024x683.jpg
│ │ │ ├── MSSurface_Pro4_SMB_Seattle_0578.jpg
│ │ │ ├── Security-Feature-Header-rs.jpg
│ │ │ ├── Suz-spring-2016_3674-215x215.jpg
│ │ │ ├── WCO18_ITHelp_004.jpg
│ │ │ ├── WCO18_whiteboard_002.jpg
│ │ │ ├── Win17_15021_00_N9.jpg
│ │ │ ├── extra.jpg
│ │ │ ├── extra2.jpg
│ │ │ ├── extra3.jpg
│ │ │ ├── extra4.jpg
│ │ │ ├── extra5.jpg
│ │ │ ├── extra6.jpg
│ │ │ ├── extra7.jpg
│ │ │ ├── extra8.jpg
│ │ │ ├── extra8_500x500.jpg
│ │ │ ├── extra9.jpg
│ │ │ ├── hero.jpg
│ │ │ ├── meeting-rooms.jpg
│ │ │ ├── modernOffice_002.jpg
│ │ │ ├── modernOffice_007.jpg
│ │ │ ├── modernOffice_011.jpg
│ │ │ ├── news.jpg
│ │ │ ├── news2.jpg
│ │ │ ├── news3.jpg
│ │ │ ├── news4.png
│ │ │ ├── page-faq.jpg
│ │ │ ├── page-feedback.jpg
│ │ │ ├── page-financial-results.jpg
│ │ │ ├── page-hr.jpg
│ │ │ ├── page-my-profile.jpg
│ │ │ ├── page-people-directory.jpg
│ │ │ ├── page-support.jpg
│ │ │ ├── page-training.jpg
│ │ │ ├── page-travel-instructions.jpg
│ │ │ ├── pexels-photo-335907.jpg
│ │ │ ├── photo-files.xml
│ │ │ ├── wirebonding_qubit.jpg
│ │ │ ├── work-life-balance.png
│ │ │ └── working-methods.jpg
│ ├── Publishing
│ │ ├── Article131.aspx
│ │ ├── ArticleCustom.aspx
│ │ ├── ArticleCustomSP2010.aspx
│ │ ├── ArticleCustomSP2013.aspx
│ │ └── ArticleTopic.aspx
│ ├── Readme.md
│ └── SitePages
│ │ └── WPP_Blank.aspx
├── SharePointPnP.Modernization.Framework.Tests.csproj
├── TestCategories.cs
├── TestCommon.cs
├── TestExtensions.cs
├── Transform
│ ├── AssetTransferTests.cs
│ ├── Bullets
│ │ ├── BulletTests.cs
│ │ └── Bullets_1.html
│ ├── CommonTests
│ │ ├── CommonSPPublishingPages.cs
│ │ ├── CommonSPWebPartPageTests.cs
│ │ ├── CommonSPWikiTests.cs
│ │ └── Readme.md
│ ├── ContextTests.cs
│ ├── CrossSiteTests.cs
│ ├── Detection
│ │ └── DetectionTests.cs
│ ├── FixPageProperty.cs
│ ├── Headers
│ │ ├── HeaderTests.cs
│ │ └── header_1.html
│ ├── LoggingTests.cs
│ ├── Mapping
│ │ ├── TermMappingTests.cs
│ │ ├── UrlMappingTests.cs
│ │ ├── UserMappingTests.cs
│ │ ├── term_mapping_paths_sample.csv
│ │ ├── term_mapping_sample.csv
│ │ ├── termmapping_sample2.csv
│ │ ├── urlmapping_sample.csv
│ │ ├── usermapping_sample.csv
│ │ └── usermapping_sample2.csv
│ ├── OnPremises
│ │ ├── OnPremisesPublishingPageTests.cs
│ │ ├── OnPremisesUtilityTests.cs
│ │ └── OnPremisesWebPartPageTests.cs
│ ├── Publishing
│ │ ├── AdHocTests.cs
│ │ ├── PageLayoutAnalyserTests.cs
│ │ ├── PublishingFunctionProcessorTests.cs
│ │ ├── PublishingPageTests.cs
│ │ ├── PublishingPageTransformationInformationTests.cs
│ │ ├── custompagelayoutmapping.xml
│ │ ├── mappingalltest.xml
│ │ ├── mappingtest.xml
│ │ └── webpartmapping.xml
│ ├── ReportingTests.cs
│ ├── RichText
│ │ ├── RichTextTests.cs
│ │ └── richtext_1.html
│ ├── Tables
│ │ └── TableTests.cs
│ ├── Tests.cs
│ ├── Text.cs
│ ├── UrlTransformTests.cs
│ ├── Utility
│ │ ├── StringExtensionTests.cs
│ │ └── WebExtensionsTest.cs
│ ├── Wp
│ │ ├── WpTests.cs
│ │ └── wp_1.html
│ └── rewrittenhtml.html
├── UnitTestLogObserver.cs
└── packages.config
├── SharePointPnP.Modernization.Framework
├── App.config
├── Cache
│ ├── CacheManager.cs
│ ├── CacheOptions.cs
│ ├── Extensions.cs
│ ├── FieldData.cs
│ └── ICacheOptions.cs
├── Caml
│ ├── FieldReference.cs
│ ├── FieldReferenceFunctionType.cs
│ ├── Internal
│ │ ├── Operators
│ │ │ ├── ComplexOperator.cs
│ │ │ ├── InOperator.cs
│ │ │ ├── MembershipOperator.cs
│ │ │ └── SimpleOperator.cs
│ │ └── Values
│ │ │ ├── AnyValue.cs
│ │ │ ├── ListPropertyValue.cs
│ │ │ ├── MonthValue.cs
│ │ │ ├── NowValue.cs
│ │ │ ├── TodayValue.cs
│ │ │ └── UserIdValue.cs
│ ├── ListPropertyValueItem.cs
│ ├── LogicalJoin.cs
│ ├── LogicalJoinType.cs
│ ├── MembershipType.cs
│ ├── Operator.cs
│ ├── OperatorType.cs
│ ├── OrderByFieldOrder.cs
│ ├── Query.cs
│ ├── Statement.cs
│ ├── Value.cs
│ ├── ValueType.cs
│ └── credits.txt
├── Constants.cs
├── Delve
│ ├── DelvePageTransformationInformation.cs
│ └── DelvePageTransformator.cs
├── Entities
│ ├── AssetTransferredEntity.cs
│ ├── AudienceEntity.cs
│ ├── ListItemPermission.cs
│ ├── ResolvedUser.cs
│ ├── TermData.cs
│ ├── TermMapping.cs
│ ├── TransformationLogAnalysis.cs
│ ├── UrlMapping.cs
│ ├── UserEntity.cs
│ ├── UserMappingEntity.cs
│ ├── WebPartEntity.cs
│ ├── WebServiceWebPartEntity.cs
│ └── WebServiceWebPartProperties.cs
├── Extensions
│ ├── AngleSharpExtensions.cs
│ ├── FileFolderExtensions.cs
│ ├── HttpWebRequestExtensions.cs
│ ├── ListItemExtensions.cs
│ ├── SiteExtensions.cs
│ ├── StringExtensions.cs
│ └── WebExtensions.cs
├── Functions
│ ├── BaseFunctionProcessor.cs
│ ├── BuiltIn.cs
│ ├── DocumentationAttributes.cs
│ ├── FunctionProcessor.cs
│ ├── FunctionsBase.cs
│ ├── MediaWebpartConfigurationException.cs
│ ├── NotAvailableAtTargetException.cs
│ ├── XmlCompare.cs
│ └── XmlEqualityResult.cs
├── KQL
│ ├── KQLElement.cs
│ ├── KQLParser.cs
│ ├── KQLPropertyOperator.cs
│ └── KQLPropertyType.cs
├── Nuget
│ └── webpartmapping.xml
├── Pages
│ ├── BasePage.cs
│ ├── DelvePage.cs
│ ├── PageLayout.cs
│ ├── PublishingPage.cs
│ ├── PublishingPageOnPremises.cs
│ ├── WebPartPage.cs
│ ├── WebPartPageOnPremises.cs
│ └── WikiPage.cs
├── Properties
│ └── AssemblyInfo.cs
├── Publishing
│ ├── Layouts
│ │ ├── PageLayoutFieldControlEntity.cs
│ │ ├── PageLayoutHeaderFieldEntity.cs
│ │ ├── PageLayoutMetadataEntity.cs
│ │ └── PublishingDefaults.cs
│ ├── PageLayoutAnalyser.cs
│ ├── PageLayoutManager.cs
│ ├── PublishingBuiltIn.cs
│ ├── PublishingFunctionProcessor.cs
│ ├── PublishingLayoutTransformator.cs
│ ├── PublishingMetadataTransformator.cs
│ ├── PublishingPageHeaderTransformator.cs
│ ├── PublishingPageTransformationInformation.cs
│ ├── PublishingPageTransformator.cs
│ ├── pagelayoutmapping.cs
│ ├── pagelayoutmapping.xml
│ └── pagelayoutmapping.xsd
├── PublishingPagesClassDiagram.cd
├── README.md
├── Samples
│ ├── pagelayoutmapping_sample.xml
│ └── urlmapping_sample.csv
├── SharePointPnP.Modernization.Framework.csproj
├── Telemetry
│ ├── ILogObserver.cs
│ ├── LogEntry.cs
│ ├── LogHelpers.cs
│ ├── LogLevel.cs
│ ├── LogStrings.cs
│ ├── Observers
│ │ ├── ConsoleObserver.cs
│ │ ├── MarkdownObserver.cs
│ │ └── MarkdownToSharePoint.cs
│ └── PageTelemetry.cs
├── Transform
│ ├── AssetTransfer.cs
│ ├── BasePageTransformator.cs
│ ├── BaseTransform.cs
│ ├── BaseTransformationInformation.cs
│ ├── ContentByQuerySearchTransformator.cs
│ ├── ContentTransformator.cs
│ ├── HtmlTransformator.cs
│ ├── IContentTransformator.cs
│ ├── IHtmlTransformator.cs
│ ├── ILayoutTransformator.cs
│ ├── LayoutTransformator.cs
│ ├── ModernizationCenterInformation.cs
│ ├── PageTransformationInformation.cs
│ ├── PageTransformator.cs
│ ├── QuickLinksTransformator.cs
│ ├── SPVersion.cs
│ ├── SummaryLinksHtmlTransformator.cs
│ ├── TermTransformator.cs
│ ├── TokenParser.cs
│ ├── UrlTransformator.cs
│ ├── UserTransformator.cs
│ └── WikiHtmlTransformator.cs
├── Utilities
│ ├── CookieManager.cs
│ └── FileManager.cs
├── WebParts.cs
├── packages.config
├── webpartmapping.cs
├── webpartmapping.xml
├── webpartmapping.xsc
├── webpartmapping.xsd
├── webpartmapping.xss
└── xsd.txt
├── SharePointPnP.Modernization.Scanner.Core
├── Analyzers
│ ├── BaseAnalyzer.cs
│ ├── BlogAnalyzer.cs
│ ├── CustomizedFormsAnalyzer.cs
│ ├── DelveBlogAnalyzer.cs
│ ├── IBaseAnalyzer.cs
│ ├── InfoPathAnalyzer.cs
│ ├── ListAnalyzer.cs
│ ├── PageAnalyzer.cs
│ ├── PublishingAnalyzer.cs
│ ├── SiteAnalyzer.cs
│ ├── WebAnalyzer.cs
│ └── WorkflowAnalyzer.cs
├── Extensions
│ ├── FieldExtensions.cs
│ ├── FileExtensions.cs
│ ├── ListExtensions.cs
│ ├── UserCustomActionCollectionExtensions.cs
│ └── WebExtensions.cs
├── LogEventArgs.cs
├── ModernizationScanJob.cs
├── Options.cs
├── Properties
│ └── AssemblyInfo.cs
├── Reports
│ ├── Generator.cs
│ ├── Readme.txt
│ ├── ReportStream.cs
│ ├── ScanSummary.cs
│ ├── blogmaster.xlsx
│ ├── groupifymaster.xlsx
│ ├── infopathmaster.xlsx
│ ├── listmaster.xlsx
│ ├── pagemaster.xlsx
│ ├── publishingmaster.xlsx
│ └── workflowmaster.xlsx
├── Results
│ ├── BlogPageScanResult.cs
│ ├── BlogWebScanResult.cs
│ ├── CustomizedFormsScanResult.cs
│ ├── InfoPathScanResult.cs
│ ├── ListScanResult.cs
│ ├── PageScanResult.cs
│ ├── PublishingPageScanResult.cs
│ ├── PublishingSiteScanResult.cs
│ ├── PublishingWebScanResult.cs
│ ├── SiteScanResult.cs
│ ├── UserCustomActionResult.cs
│ ├── WebScanResult.cs
│ ├── WorkflowScanResult.cs
│ └── XsltViewWebPartCompatability.cs
├── Scan.cs
├── ScanError.cs
├── ScanJob.cs
├── SharePointPnP.Modernization.Scanner.Core.csproj
├── Telemetry
│ ├── ScannerTelemetry.cs
│ ├── TelemetryEvents.cs
│ └── VersionCheck.cs
├── Utilities
│ ├── AppOnlyManager.cs
│ ├── PageTransformationManager.cs
│ └── WebpartMappingLoader.cs
├── Workflow
│ ├── WorkFlowActions.cs
│ ├── WorkflowActionAnalysis.cs
│ ├── WorkflowManager.cs
│ ├── WorkflowTriggerAnalysis.cs
│ ├── sp2010wfmodel.cs
│ ├── sp2010wfmodel.xml
│ ├── sp2010wfmodel.xsd
│ ├── sp2013wfmodel.cs
│ ├── sp2013wfmodel.xml
│ ├── sp2013wfmodel.xsd
│ └── xsd.txt
├── app.config
├── packages.config
└── webpartmapping.xml
├── SharePointPnP.Modernization.Scanner
├── App.config
├── FodyWeavers.xml
├── Forms
│ ├── Wizard.Designer.cs
│ ├── Wizard.cs
│ └── Wizard.resx
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── SharePointPnP.Modernization.Scanner.csproj
├── packages.config
└── webpartmapping.xml
├── SharePointPnP.Modernization.sln
└── binaries
├── OfficeDevPnP.Core.XML
├── OfficeDevPnP.Core.dll
├── lastrelease-signed
├── OfficeDevPnP.Core.XML
└── OfficeDevPnP.Core.dll
└── lastrelease-unsigned
├── OfficeDevPnP.Core.XML
└── OfficeDevPnP.Core.dll
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 |
2 | blank_issues_enabled: false
3 | contact_links:
4 | - name: PnP Modernization Discussions
5 | url: https://github.com/pnp/pnp-modernization/discussions
6 | about: Please ask and answer questions here.
7 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: "[FEATURE]"
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # PnP Changelog
2 | *Please do not commit changes to this file, it is maintained by the repo owner.*
3 |
4 | All notable changes to this project will be documented in this file.
5 |
6 | The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
7 |
8 | ## Changelog references
9 |
10 | - [Page Transformation](https://github.com/SharePoint/sp-dev-modernization/blob/master/Tools/SharePoint.Modernization/Modernization%20Framework%20release%20notes.md)
11 | - [Page Transformation UI](https://github.com/SharePoint/sp-dev-modernization/blob/master/Solutions/Page%20transformation%20UI%20release%20notes.md)
12 | - [Modernization scanner](https://github.com/SharePoint/sp-dev-modernization/blob/master/Tools/SharePoint.Modernization/Modernization%20Scanner%20release%20notes.md)
13 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Microsoft Corporation. All rights reserved.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE
22 |
--------------------------------------------------------------------------------
/Modernization partner guidance/Microsoft Teamwork Transformation Customer Offer Presentation.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Modernization partner guidance/Microsoft Teamwork Transformation Customer Offer Presentation.pptx
--------------------------------------------------------------------------------
/Modernization partner guidance/Microsoft Teamwork Transformation Delivery Guide.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Modernization partner guidance/Microsoft Teamwork Transformation Delivery Guide.pptx
--------------------------------------------------------------------------------
/Modernization partner guidance/Microsoft Teamwork Transformation Workshop.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Modernization partner guidance/Microsoft Teamwork Transformation Workshop.pptx
--------------------------------------------------------------------------------
/Modernization partner guidance/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Partner modernization guidance
3 |
4 | This folder contains content that partners (and customers) can use to run modernization projects. See https://aka.ms/sppnp-modernization-partnerguidance to learn more.
5 |
--------------------------------------------------------------------------------
/Modernization partner guidance/Teamwork Transformation - April 2021.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Modernization partner guidance/Teamwork Transformation - April 2021.pptx
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # The sp-dev-modernization repository
3 |
4 | Welcome to the home of all SharePoint modernization tools and solutions. Modernization means **transforming current "classic" SharePoint usage into "modern" usage**, e.g. using modern site pages instead of classic pages, Office 365 Group connecting of classic sites, modernizing your classic publishing portals,... In this repository you'll find all the SharePoint PnP open source scripts, tools and solutions that will help you modernize your SharePoint environment. To read up on our modernization guidance check https://aka.ms/sppnp-modernize.
5 |
6 | Please use [http://aka.ms/sppnp](http://aka.ms/sppnp) for getting latest information around the *SharePoint Patterns and Practices program*.
7 |
8 | *"Sharing is Caring"*
9 |
10 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
--------------------------------------------------------------------------------
/Scripts/HomePageModernizationOptOut/SitesWithUncustomizedHomePages.csv:
--------------------------------------------------------------------------------
1 | "https://contoso.sharepoint.com/sites/siteA"
2 | "https://contoso.sharepoint.com/sites/siteB"
3 | "https://contoso.sharepoint.com/sites/siteB/subsite1"
4 | "https://contoso.sharepoint.com/sites/siteB/subsite2"
--------------------------------------------------------------------------------
/Scripts/HomePageModernizationOptOut/readme.md:
--------------------------------------------------------------------------------
1 | # Modern List and library scripts
2 |
3 | ## Summary
4 |
5 | Uncustomized classic home pages of team sites will be automatically upgraded to a modern home page. Use this script to do a bulk enabling/disabling of a web scoped feature that prevents this automatic upgrade from happening.
6 |
7 | ## Applies to
8 |
9 | - Office 365 Multi-Tenant (MT)
10 |
11 | ## Prerequisites
12 |
13 | - SharePoint PnP PowerShell
14 |
15 | ## Solution
16 |
17 | Solution|Author(s)
18 | --------|---------
19 | HomePageModernizationOptOut.ps1 | Bert Jansen (**Microsoft**)
20 |
21 | ## Version history
22 |
23 | Version|Date|Comments
24 | -------|----|--------
25 | 1.0 | January 16th 2020 | Initial commit
26 |
27 | ## Disclaimer
28 |
29 | THIS CODE IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANT ABILITY, OR NON-INFRINGEMENT.
30 |
31 | ---
32 |
33 | ## HomePageModernizationOptOut.ps1
34 |
35 | This scripts will enable or disable the automatic upgrade of uncustomized classic home pages to a modern home page. The script can handle a single site or a list of sites provided via a CSV file. To get the CSV file you can run the Modernization Scanner, version 2.8 or higher, and use the "Wiki/Webpart Page transformation readiness (home pages)" mode (see https://aka.ms/sppnp-modernizationscanner) or alternatively create the file yourselves. Simply run the script and provide the needed input on the command prompt.
36 |
37 | ### Structure for the CSV file
38 |
39 | The CSV file is simple list of site URL's without a header as shown in below sample:
40 |
41 | ```Text
42 | "https://contoso.sharepoint.com/sites/siteA"
43 | "https://contoso.sharepoint.com/sites/siteB"
44 | "https://contoso.sharepoint.com/sites/siteB/subsite1"
45 | "https://contoso.sharepoint.com/sites/siteB/subsite2"
46 | ```
47 |
--------------------------------------------------------------------------------
/Scripts/ListsAndLibraries/SitesWithCustomizations.csv:
--------------------------------------------------------------------------------
1 | "https://contoso.sharepoint.com/sites/siteA"
2 | "https://contoso.sharepoint.com/sites/siteB"
3 | "https://contoso.sharepoint.com/sites/siteC"
4 | "https://contoso.sharepoint.com/sites/siteD"
--------------------------------------------------------------------------------
/Scripts/ModernizeSiteCollection/sitecollections.csv:
--------------------------------------------------------------------------------
1 | SiteUrl,O365GroupAlias,O365GroupIsPublic,AddTeamsTeam,ModernizePages,ModernizeBranding,TenantTheme,Classification
2 | https://contoso010a.sharepoint.com/sites/bjansen4,bjansen4,false,true,true,true,"Contoso Electronics",
3 |
4 |
--------------------------------------------------------------------------------
/Scripts/O365GroupConnect/sitecollections.csv:
--------------------------------------------------------------------------------
1 | Url,Alias,IsPublic,Classification
2 | https://a830edad9050849523e17050400.sharepoint.com/sites/groupify_me_15,groupify_me_ 15,false,Low Impact
3 | https://a830edad9050849523e17050400.sharepoint.com/sites/groupify_me_bb,google,false,Low Impact
4 | https://a830edad9050849523e17050400.sharepoint.com/sites/groupify_me_15,groupify_me_15_new,false,Medium Impact
5 | https://a830edad9050849523e17050400.sharepoint.com/sites/espc2017teamsite1,espcteamsite1alias,true,Low Impact
6 | https://a830edad9050849523e17050400.sharepoint.com/sites/espc2017teamsite3,espcteamsite3alias,true,Wrong Impact
7 | https://a830edad9050849523e17050400.sharepoint.com/sites/espc2017teamsite2,espcteamsite1alias,true
8 | https://a830edad9050849523e17050400.sharepoint.com/sites/espc2017teamsite4,espcteamsite4alias,true,High Impact
9 |
10 |
--------------------------------------------------------------------------------
/Scripts/PageTransformation/TransformPages.ps1:
--------------------------------------------------------------------------------
1 | <#
2 | .SYNOPSIS
3 | Modernizes the pages of a site.
4 |
5 | IMPORTANT: this requires the PnP PowerShell version 3.16.1912.* (December 2019) or higher to work!
6 | Version: 1.1
7 |
8 | .EXAMPLE
9 | PS C:\> .\modernizesitecollection.ps1
10 | #>
11 |
12 | # Connect to the web holding the pages to modernize
13 | Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/modernizationme
14 |
15 | # Get all the pages in the site pages library. SitePages is the only supported library for using modern pages
16 | # Use paging (-PageSize parameter) to ensure the query works when there are more than 5000 items in the list
17 | $pages = Get-PnPListItem -List sitepages -PageSize 500
18 |
19 | # Iterate over the pages
20 | foreach($page in $pages)
21 | {
22 | # Optionally filter the pages you want to modernize, filtering on FileLeafRef is filterigng on page name. In below
23 | # sample all the classic pages that start with a t are transformed
24 | if ($page.FieldValues["FileLeafRef"].StartsWith(("t")))
25 | {
26 | # No need to convert modern pages again
27 | if ($page.FieldValues["ClientSideApplicationId"] -eq "b6917cb1-93a0-4b97-a84d-7cf49975d4ec" )
28 | {
29 | Write-Host "Page " $page.FieldValues["FileLeafRef"] " is modern, no need to modernize it again"
30 | }
31 | else
32 | {
33 | # Create a modern version of this page
34 | Write-Host "Modernizing " $page.FieldValues["FileLeafRef"] "..."
35 | # Use the PageID value instead of the page name in the Identity parameter as that is more performant + it works when there are more than 5000 items in the list
36 | $modernPage = ConvertTo-PnPClientSidePage -Identity $page.FieldValues["ID"] -Overwrite
37 | Write-Host "Done" -ForegroundColor Green
38 | }
39 | }
40 | }
41 |
42 | Disconnect-PnPOnline
43 |
44 |
--------------------------------------------------------------------------------
/Scripts/PageTransformation/readme.md:
--------------------------------------------------------------------------------
1 | # Transforming pages using PowerShell
2 |
3 | ## Summary
4 |
5 | The page transformation engine can also be used from PowerShell. This allows it to be integrated in a site modernization script that besides page transformation also does other things like installing solution, connecting the site to an Office 365 group and applying tenant branding. Below samples shows how to get started.
6 |
7 | ## Applies to
8 |
9 | - Office 365 Multi-Tenant (MT)
10 |
11 | ## Prerequisites
12 |
13 | - SharePoint PnP PowerShell version 3.16.1912.0 or higher (December 2019)
14 |
15 | ## Solution
16 |
17 | Solution|Author(s)
18 | --------|---------
19 | Convert-WikiAndWebPartPages.ps1 | Bert Jansen (**Microsoft**)
20 | Convert-PublishingPages.ps1 | Paul Bullock (CaPa Creative Ltd)
21 | Convert-OnPremisesPublishingPages.ps1 | Paul Bullock (CaPa Creative Ltd)
22 | Convert-BlogPages.ps1 | Bert Jansen (**Microsoft**)
23 | Convert-DelveBlogPages.ps1 | Bert Jansen (**Microsoft**)
24 |
25 | ## Version history
26 |
27 | Version|Date|Comments
28 | -------|----|--------
29 | 1.0 | November 1st 2018 | Initial commit
30 | 1.1 | June 26th 2019 | Added new sample
31 | 1.2 | August 8th 2019 | Added on-premises sample
32 | 1.3 | October 23rd 2019 | Added blog sample
33 | 1.4 | November 27th 2019 | Added Delve blog sample
34 | 1.5 | January 16th 2020 | Updated wiki/webpart page sample to be inline with the other samples
35 |
36 | ## Disclaimer
37 |
38 | THIS CODE IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANT ABILITY, OR NON-INFRINGEMENT.
39 |
40 | ---
41 |
42 | ## Learn more about using PowerShell to modernize pages
43 |
44 | Checkout the [Transforming to modern site pages using PowerShell](https://docs.microsoft.com/en-us/sharepoint/dev/transform/modernize-userinterface-site-pages-powershell) article on docs.microsoft.com.
--------------------------------------------------------------------------------
/Scripts/readme.md:
--------------------------------------------------------------------------------
1 |
2 | # Modernization scripts
3 |
4 | Contains scripts that can be used to help with the modernization of your environment.
5 |
6 | Folder | Description
7 | -------|------------
8 | O365GroupConnect | Contains scripts that show how to perform a bulk Office 365 Group connect. This is useful when you want to group connect multiple site collections instead of leaving group connect as a task for your site owners
9 | PageTransformation | Holds scripts that can be used to modernize classic wiki, web part and publishing pages
10 | ModernizeSiteCollection | End to end modernization scripts that show how to fully modernize a site collection
11 | ListAndLibraries | Scripts to configure modern lists and libraries
12 |
--------------------------------------------------------------------------------
/Solutions/Page transformation UI release notes.md:
--------------------------------------------------------------------------------
1 | # Modernization Page Transformation UI release notes
2 |
3 | ## How to get and use
4 |
5 | See https://aka.ms/sppnp-pagetransformationui
6 |
7 | ## [Beta release]
8 |
9 | ### Added
10 |
11 | - Banner on classic pages
12 | - Support for alternative modernization center site collection URL
13 |
14 | ### Changed
15 |
16 | - Improved setup automation + troubleshooting guide
17 | - Correctly supports sub sites
18 | - Performance improvements
19 |
20 | ## [Preview release]
21 |
22 | ### Added
23 |
24 | - First public release
25 |
26 | ### Changed
27 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/assets/modernize16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/assets/modernize16x16.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/assets/modernize32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/assets/modernize32x32.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/assets/sharepointpnp-pagetransformation-central.sppkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/assets/sharepointpnp-pagetransformation-central.sppkg
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/assets/sharepointpnp-pagetransformation-client.sppkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/assets/sharepointpnp-pagetransformation-client.sppkg
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/images/PageTransformationUIarchitecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/images/PageTransformationUIarchitecture.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/images/enablepagetransformationwebpart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/images/enablepagetransformationwebpart.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/images/pagebannerwebpart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/images/pagebannerwebpart.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/images/pagetransformatorwebpart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/images/pagetransformatorwebpart.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/images/troubleshoot_AADST65001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/images/troubleshoot_AADST65001.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/images/troubleshoot_AADSTS50001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/images/troubleshoot_AADSTS50001.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/images/troubleshoot_ClearPageCache.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/images/troubleshoot_ClearPageCache.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_app_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_app_1.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_app_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_app_2.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_app_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_app_3.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_app_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_app_4.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_app_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_app_5.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_function_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_function_1.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_function_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_function_2.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_function_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_function_3.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_function_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_function_4.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_function_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_function_5.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_multitenant_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_multitenant_1.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/azure_multitenant_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/azure_multitenant_2.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_app_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_app_1.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_app_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_app_2.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_app_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_app_3.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_app_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_app_4.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_site_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_site_1.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_site_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/docs/manual setup/images/sharepoint_site_2.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/modernization-ui-multitenant-setup.md:
--------------------------------------------------------------------------------
1 |
2 | # Setting up your created Azure Function as multi-tenant function
3 |
4 | Companies often have multiple (test) tenants and then it makes sense to have only one Azure function app setup for page transformation. This can be done by first configuring you Azure function app for multi-tenant usage:
5 |
6 | ## Azure AD configuration
7 |
8 | - Navigation to https://admin.microsoft.com which will load up the Office 365 Admin Center
9 | - Expand the **Admin centers** dropdown in the left navigation and select **Azure Active Directory** which will load the Azure Active Directory admin center
10 | - Click on **Azure Active Directory** in the left navigation
11 | - Click on **App registrations** in the Manage section
12 | - Enter **SharePointPnP.Modernization** in the filter and select **All apps**. This should find the earlier created Azure AD application
13 | - Open up **Settings** pane and select **Properties** and toggle the **Multi-tenanted** toggle
14 |
15 | ## Azure Function App configuration
16 |
17 | - Navigation to https://portal.azure.com and open the earlier created Azure Function App
18 | - Click on **Platform features** and select **Cors** from the **Api** section
19 | - Remove all URL's and add a star (*) as **Allowed origin** and hit **Save**
20 |
21 | 
22 |
23 | - Click on **Platform features** and select **Application settings** from the **General settings** section
24 | - Scroll down to the **Application settings** section and the following application settings:
25 |
26 | - **AllowedTenants**: this contains a comma delimited list of tenants that you allow to use this function e.g. **bertonline.onmicrosoft.com,officedevpnp.onmicrosoft.com**
27 |
28 | - Press **Save** to persist the changes
29 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/modernization-ui-multitenant-use.md:
--------------------------------------------------------------------------------
1 |
2 | # Using a multi-tenant Azure Function app for the Page Transformation UI
3 |
4 | If you've setup a multi-tenant Azure Function App or were allowed to access an existing one then follow these steps.
5 |
6 | ## Azure AD setup
7 |
8 | - Ensure you've received the application ID of the Azure AD application that's used to protect the multi-tenant Azure Function app
9 | - Craft a URL to admin consent this Azure AD application:
10 |
11 | - Use this URL, but replace the client_id guid with the application ID you've received: https://login.microsoftonline.com/common/oauth2/authorize?client_id=99ad0500-1230-4f7a-a5bb-5e83ce9374f4&response_type=code&prompt=admin_consent
12 | - Login with your Azure AD admin credentials and consent the application
13 |
14 | ## SharePoint setup
15 |
16 | - Use [PnP PowerShell](http://aka.ms/sppnp-powershell) to point your setup to the multi-tenant service
17 |
18 | ```PowerShell
19 | Set-PnPStorageEntity -Key "Modernization_AzureADApp" -Value "99ad0500-1230-4f7a-a5bb-5e83ce9374f4" -Description "ID of the multi-tenant Azure AD app is used for page transformation"
20 | Set-PnPStorageEntity -Key "Modernization_FunctionHost" -Value "https://multitenantmodernization.azurewebsites.net" -Description "Host of the multi-tenant SharePoint PnP Modernization service"
21 | ```
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/manual setup/readme.md:
--------------------------------------------------------------------------------
1 | # Manual setup of the Page Transformation UI
2 |
3 | If you want to manually configure the Page Transformation UI, if you want to get deep understanding of the solution is built then reading the manual setup guide will help you. This setup guide consists out of a mandatory part and an optional part for multi-tenant service usage.
4 |
5 | ## Mandatory steps in setting up the Page Transformation UI
6 |
7 | Since the Page Transformation UI solution depends on Azure and SharePoint the setup is split accordingly. Follow below 2 guides to get up and running:
8 |
9 | 1. [Configure Azure (Azure AD application and Azure Function app)](modernization-ui-manual-azure.md)
10 | 2. [Configure SharePoint (solution deployment, modernization center site and enabling page transformation for your sites)](modernization-ui-manual-sharepoint.md)
11 |
12 | ## Optional steps
13 |
14 | You can also configure the Azure Function app created in previous chapter as a multi-tenant function which will than allow you to share this Azure function app with multiple tenants needing page transformation.
15 |
16 | - [Configure your Azure Function app to be used from multiple tenants](modernization-ui-multitenant-setup.md)
17 | - [Configure your SharePoint tenant to consume a multi-tenant page transformation service](modernization-ui-multitenant-use.md)
18 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/docs/readme.md:
--------------------------------------------------------------------------------
1 | # Documentation
2 |
3 | This section of the repository contains the documentation you need to understand, setup and configure the Page Transformation UI solution. Currently available documentation is:
4 |
5 | - [Automated deployment of the Page Transformation UI solution (recommended)](deploymentguide.md)
6 | - [Upgrading an earlier deployment of the Page Transformation UI solution (recommended)](upgradeguide.md)
7 | - [Manual setup of the Page Transformation UI solution](/Solutions/PageTransformationUI/docs/manual%20setup)
8 | - [Frequently Asked Questions](modernization-ui-faq.md)
9 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/provisioning/BuildSiteCSV.ps1:
--------------------------------------------------------------------------------
1 | <#
2 | .SYNOPSIS
3 | Shows how to obtain a list of site collections based upon a filter and then export them to a CSV file
4 |
5 | .EXAMPLE
6 | PS C:\> .\BuildSiteCSV.ps1
7 | #>
8 |
9 | # List of sites that will be exported to CSV
10 | $array = @()
11 | $csvFileName = ".\sites.csv"
12 |
13 | # Get a list of sites, e.g. filter on Template
14 | $sites = get-pnptenantsite | where-object {$_.Template -eq "STS#0" -and $_.Url -like "*espc*"}
15 |
16 | foreach($site in $sites)
17 | {
18 | #if ($site.Url -like "*espctest*")
19 | #{
20 | $array += New-Object PsObject -property @{'SiteCollectionUrl' = $site.Url }
21 | #}
22 | }
23 |
24 | $array | export-csv -NoTypeInformation -Path $csvFileName
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/provisioning/Disable-PageTransformation.ps1:
--------------------------------------------------------------------------------
1 | <#
2 | .SYNOPSIS
3 | Disable page transformation UI integration for the currently connected site collection
4 |
5 | .EXAMPLE
6 | PS C:\> .\Disable-PageTransformation.ps1
7 | #>
8 |
9 | $site = Get-PnPSite -Includes ServerRelativeUrl
10 | Write-Host "Disabling page transformation for $($site.ServerRelativeUrl)" -ForegroundColor White
11 |
12 | Remove-PnPCustomAction -Identity "CA_PnP_Modernize_SitePages_RIBBON" -Scope Site -Force
13 | Remove-PnPCustomAction -Identity "CA_PnP_Modernize_SitePages_ECB" -Scope Site -Force
14 | Remove-PnPCustomAction -Identity "CA_PnP_Modernize_WikiPage_RIBBON" -Scope Site -Force
15 | Remove-PnPCustomAction -Identity "CA_PnP_Modernize_WebPartPage_RIBBON" -Scope Site -Force
16 | Remove-PnPCustomAction -Identity "CA_PnP_Modernize_ClassicBanner" -Scope Site -Force
17 |
18 | Write-Host "Done" -ForegroundColor Green
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/provisioning/README.md:
--------------------------------------------------------------------------------
1 | # Provisioning scripts
2 |
3 | This folder contains the script you need to provision and configure the Page Transformation UI solution.
4 |
5 | Check out the [deployment guide](/Solutions/PageTransformationUI/docs/deploymentguide.md) for the needed instructions.
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/provisioning/UpdatingPnPFile.md:
--------------------------------------------------------------------------------
1 | # Using a .pnp file
2 |
3 | When you use the .xml template you'll also need the assets folder present as the .xml version of the template refers to assets. It's often easier to use the provided .pnp template or package your own version of the .pnp file via:
4 |
5 | ```Powershell
6 | $t = Read-PnPTenantTemplate modernization.xml
7 | Save-PnPTenantTemplate -Template $t -Out modernization.pnp
8 | ```
9 |
10 | Applying the SharePoint PnP template then works like this:
11 |
12 | ```Powershell
13 | # Deploy SharePoint component
14 | Apply-PnPTenantTemplate -Path .\modernization.pnp -Parameters @{"AzureAppID"="79ad0500-1230-4f7a-a5bb-5e83ce9174f4";"AzureFunction"="https://contosomodernization.azurewebsites.net"}
15 | ```
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/provisioning/modernization.pnp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/provisioning/modernization.pnp
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/provisioning/sharepointpnpmodernizationeurope.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/provisioning/sharepointpnpmodernizationeurope.zip
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/services/ModernizationService/ModernizationFunction/ModernizationFunction.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net461
4 | v1
5 | SharePointPnP.ModernizationFunction
6 |
7 |
8 |
9 |
10 |
11 |
12 | Always
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | PreserveNewest
26 |
27 |
28 | PreserveNewest
29 | Never
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/services/ModernizationService/ModernizationFunction/OAuthTokenResponse.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using System;
3 |
4 | namespace SharePointPnP.ModernizationFunction
5 | {
6 |
7 | public class OAuthTokenResponse
8 | {
9 | [JsonProperty("token_type")]
10 | public String TokenType { get; set; }
11 |
12 | [JsonProperty("scope")]
13 | public String Scope { get; set; }
14 |
15 | [JsonProperty("expires_in")]
16 | public Int64 ExpiresIn { get; set; }
17 |
18 | [JsonProperty("ext_expires_in")]
19 | public Int64 ExtExpiresIn { get; set; }
20 |
21 | [JsonProperty("expires_on")]
22 | public Int64 ExpiresOn { get; set; }
23 |
24 | [JsonProperty("not_before")]
25 | public Int64 NotBefore { get; set; }
26 |
27 | [JsonProperty("resource")]
28 | public String Resource { get; set; }
29 |
30 | [JsonProperty("access_token")]
31 | public String AccessToken { get; set; }
32 |
33 | [JsonProperty("refresh_token")]
34 | public String RefreshToken { get; set; }
35 |
36 | [JsonProperty("id_token")]
37 | public String IdToken { get; set; }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/services/ModernizationService/ModernizationFunction/host.json:
--------------------------------------------------------------------------------
1 | {
2 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/services/ModernizationService/ModernizationFunction/readme.txt:
--------------------------------------------------------------------------------
1 | Multi-tenant admin consent url: https://login.microsoftonline.com/common/oauth2/authorize?client_id=79ad0500-1230-4f7a-a5bb-5e83ce9174f4&response_type=code&prompt=admin_consent
2 | Sample URLs to test this demo function:
3 | https://sharepointpnpmodernizationdemo.azurewebsites.net/api/Demo?SiteUrl=https%3A%2F%2Fbertonline.sharepoint.com%2Fsites%2Fpermissive
4 | https://sharepointpnpmodernizationdemo.azurewebsites.net/api/Demo?SiteUrl=https%3A%2F%2Fbertonline.sharepoint.com%2Fsites%2Fpermissive&PageUrl=https%3A%2F%2Fbertonline.sharepoint.com%2Fsites%2Fpermissive%2FSitePages%2FClassicPage.aspx
5 | https://sharepointpnpmodernizationdemo.azurewebsites.net/api/Demo?SiteUrl=https%3A%2F%2Fofficedevpnp.sharepoint.com%2Fsites%2Fmodernizeme5&PageUrl=https%3A%2F%2Fofficedevpnp.sharepoint.com%2Fsites%2Fmodernizeme5%2FSitePages%2Fgiro2018.aspx
6 |
7 | Background:
8 | Multi-tenant Azure Function: https://stackoverflow.com/questions/44720343/connect-azure-function-to-microsoft-graph-as-a-multi-tenant-application-using-az
9 | App Service authentication overview: https://docs.microsoft.com/en-us/azure/app-service/app-service-authentication-overview
10 |
11 |
12 | Host.json details: https://github.com/Azure/azure-functions-host/wiki/host.json
13 |
14 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/services/ModernizationService/ModernizationService.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.28010.2046
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModernizationFunction", "ModernizationFunction\ModernizationFunction.csproj", "{9BC867F7-A151-4A94-8020-D3A0B3E1DF20}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {9BC867F7-A151-4A94-8020-D3A0B3E1DF20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {9BC867F7-A151-4A94-8020-D3A0B3E1DF20}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {9BC867F7-A151-4A94-8020-D3A0B3E1DF20}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {9BC867F7-A151-4A94-8020-D3A0B3E1DF20}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {713A3190-A367-4233-AA7E-4DC9273B1EE1}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/services/readme.md:
--------------------------------------------------------------------------------
1 | # The back end services
2 |
3 | The Page Transformation UI solution does require a backend service that will execute the requests for transforming a page. Checkout the **ModernizationService** Visual Studio solution to see how we've implemented this service.
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/README.md:
--------------------------------------------------------------------------------
1 | # SharePoint Framework solutions
2 |
3 | This folder contains the SharePoint Framework (SPFX) components of the Page Transformation UI solution. Following SharePoint Framework components are used:
4 |
5 | **A PageTransformator web part**: this web part is hosted on a central page (modernize.aspx) in the modernization center site collection. This web part is responsible for calling the Azure AD secured Azure Function on behalf of the current user
6 |
7 | 
8 |
9 | **A PageAcceptBanner web part**: this web part will be added on the transformed pages and does allow an end users to accept/decline to transformed page
10 |
11 | 
12 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent
2 | # coding styles between different editors and IDEs
3 | # editorconfig.org
4 |
5 | root = true
6 |
7 |
8 | [*]
9 |
10 | # change these settings to your own preference
11 | indent_style = space
12 | indent_size = 2
13 |
14 | # we recommend you to keep these unchanged
15 | end_of_line = lf
16 | charset = utf-8
17 | trim_trailing_whitespace = true
18 | insert_final_newline = true
19 |
20 | [*.md]
21 | trim_trailing_whitespace = false
22 |
23 | [{package,bower}.json]
24 | indent_style = space
25 | indent_size = 2
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 |
6 | # Dependency directories
7 | node_modules
8 |
9 | # Build generated files
10 | dist
11 | lib
12 | solution
13 | temp
14 | *.sppkg
15 |
16 | # Coverage directory used by tools like istanbul
17 | coverage
18 |
19 | # OSX
20 | .DS_Store
21 |
22 | # Visual Studio files
23 | .ntvs_analysis.dat
24 | .vs
25 | bin
26 | obj
27 |
28 | # Resx Generated Code
29 | *.resx.ts
30 |
31 | # Styles Generated Code
32 | *.scss.ts
33 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "msjsdiag.debugger-for-chrome"
4 | ]
5 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | /**
3 | * Install Chrome Debugger Extension for Visual Studio Code to debug your components with the
4 | * Chrome browser: https://aka.ms/spfx-debugger-extensions
5 | */
6 | "version": "0.2.0",
7 | "configurations": [{
8 | "name": "Local workbench",
9 | "type": "chrome",
10 | "request": "launch",
11 | "url": "https://localhost:4321/temp/workbench.html",
12 | "webRoot": "${workspaceRoot}",
13 | "sourceMaps": true,
14 | "sourceMapPathOverrides": {
15 | "webpack:///../../../src/*": "${webRoot}/src/*",
16 | "webpack:///../../../../src/*": "${webRoot}/src/*",
17 | "webpack:///../../../../../src/*": "${webRoot}/src/*"
18 | },
19 | "runtimeArgs": [
20 | "--remote-debugging-port=9222"
21 | ]
22 | },
23 | {
24 | "name": "Hosted workbench",
25 | "type": "chrome",
26 | "request": "launch",
27 | "url": "https://enter-your-SharePoint-site/_layouts/workbench.aspx",
28 | "webRoot": "${workspaceRoot}",
29 | "sourceMaps": true,
30 | "sourceMapPathOverrides": {
31 | "webpack:///../../../src/*": "${webRoot}/src/*",
32 | "webpack:///../../../../src/*": "${webRoot}/src/*",
33 | "webpack:///../../../../../src/*": "${webRoot}/src/*"
34 | },
35 | "runtimeArgs": [
36 | "--remote-debugging-port=9222",
37 | "-incognito"
38 | ]
39 | }
40 | ]
41 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | // Place your settings in this file to overwrite default and user settings.
2 | {
3 | // Configure glob patterns for excluding files and folders in the file explorer.
4 | "files.exclude": {
5 | "**/.git": true,
6 | "**/.DS_Store": true,
7 | "**/bower_components": true,
8 | "**/coverage": true,
9 | "**/lib-amd": true,
10 | "src/**/*.scss.ts": true
11 | },
12 | "typescript.tsdk": ".\\node_modules\\typescript\\lib"
13 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/.yo-rc.json:
--------------------------------------------------------------------------------
1 | {
2 | "@microsoft/generator-sharepoint": {
3 | "isCreatingSolution": true,
4 | "environment": "spo",
5 | "version": "1.7.0",
6 | "libraryName": "sharepointpnp-pagetransformation-central",
7 | "libraryId": "eeca9e77-32ae-43fb-b279-2436ac62a842",
8 | "packageManager": "npm",
9 | "isDomainIsolated": false,
10 | "componentType": "webpart"
11 | }
12 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/README.md:
--------------------------------------------------------------------------------
1 | ## sharepointpnp-pagetransformation-central
2 |
3 | This is where you include your WebPart documentation.
4 |
5 | ### Building the code
6 |
7 | ```bash
8 | git clone the repo
9 | npm i
10 | npm i -g gulp
11 | gulp
12 | ```
13 |
14 | This package produces the following:
15 |
16 | * lib/* - intermediate-stage commonjs build artifacts
17 | * dist/* - the bundled script, along with other resources
18 | * deploy/* - all resources which should be uploaded to a CDN.
19 |
20 | ### Build options
21 |
22 | gulp clean - TODO
23 | gulp test - TODO
24 | gulp serve - TODO
25 | gulp bundle - TODO
26 | gulp package-solution - TODO
27 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/config/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/config.2.0.schema.json",
3 | "version": "2.0",
4 | "bundles": {
5 | "page-transformator-web-part": {
6 | "components": [
7 | {
8 | "entrypoint": "./lib/webparts/pageTransformator/PageTransformatorWebPart.js",
9 | "manifest": "./src/webparts/pageTransformator/PageTransformatorWebPart.manifest.json"
10 | }
11 | ]
12 | },
13 | "page-transformator-admin-web-part" : {
14 | "components": [
15 | {
16 | "entrypoint": "./lib/webparts/pageTransformatorAdmin/PageTransformatorAdminWebPart.js",
17 | "manifest": "./src/webparts/pageTransformatorAdmin/PageTransformatorAdminWebPart.manifest.json"
18 | }
19 | ]
20 | }
21 | },
22 | "externals": {},
23 | "localizedResources": {
24 | "PageTransformatorWebPartStrings": "lib/webparts/pageTransformator/loc/{locale}.js",
25 | "PageTransformatorAdminWebPartStrings": "lib/webparts/pageTransformatorAdmin/loc/{locale}.js"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/config/copy-assets.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/copy-assets.schema.json",
3 | "deployCdnPath": "temp/deploy"
4 | }
5 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/config/deploy-azure-storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/deploy-azure-storage.schema.json",
3 | "workingDir": "./temp/deploy/",
4 | "account": "",
5 | "container": "sharepointpnp-pagetransformation-central",
6 | "accessKey": ""
7 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/config/package-solution.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/package-solution.schema.json",
3 | "solution": {
4 | "name": "sharepointpnp-pagetransformation-central-solution",
5 | "id": "eeca9e77-32ae-43fb-b279-2436ac62a842",
6 | "version": "1.0.0.4",
7 | "includeClientSideAssets": true,
8 | "isDomainIsolated": false,
9 | "webApiPermissionRequests": [
10 | {
11 | "resource": "SharePointPnP.Modernization",
12 | "scope": "user_impersonation"
13 | }
14 | ]
15 | },
16 | "paths": {
17 | "zippedPackage": "solution/sharepointpnp-pagetransformation-central.sppkg"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/config/serve.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/core-build/serve.schema.json",
3 | "port": 4321,
4 | "https": true,
5 | "initialPage": "https://localhost:5432/workbench",
6 | "api": {
7 | "port": 5432,
8 | "entryPath": "node_modules/@microsoft/sp-webpart-workbench/lib/api/"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/config/write-manifests.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/write-manifests.schema.json",
3 | "cdnBasePath": ""
4 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/gulpfile.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const gulp = require('gulp');
4 | const build = require('@microsoft/sp-build-web');
5 | build.addSuppression(`Warning - [sass] The local CSS class 'ms-Grid' is not camelCase and will not be type-safe.`);
6 |
7 | build.initialize(gulp);
8 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sharepointpnp-pagetransformation-central",
3 | "version": "0.0.3",
4 | "private": true,
5 | "engines": {
6 | "node": ">=0.10.0"
7 | },
8 | "scripts": {
9 | "build": "gulp bundle",
10 | "clean": "gulp clean",
11 | "test": "gulp test"
12 | },
13 | "dependencies": {
14 | "@microsoft/gulp-core-build-karma": "^4.6.54",
15 | "@microsoft/sp-core-library": "1.7.0",
16 | "@microsoft/sp-lodash-subset": "1.7.0",
17 | "@microsoft/sp-office-ui-fabric-core": "1.7.0",
18 | "@microsoft/sp-webpart-base": "1.7.0",
19 | "@pnp/common": "^1.2.6",
20 | "@pnp/logging": "^1.2.6",
21 | "@pnp/odata": "^1.2.6",
22 | "@pnp/sp": "^1.2.6",
23 | "@types/es6-promise": "0.0.33",
24 | "@types/react": "16.4.2",
25 | "@types/react-dom": "16.0.5",
26 | "@types/webpack-env": "1.13.1",
27 | "react": "16.3.2",
28 | "react-dom": "16.3.3"
29 | },
30 | "devDependencies": {
31 | "@microsoft/sp-build-web": "1.7.0",
32 | "@microsoft/sp-tslint-rules": "1.7.0",
33 | "@microsoft/sp-module-interfaces": "1.7.0",
34 | "@microsoft/sp-webpart-workbench": "1.7.0",
35 | "gulp": "~3.9.1",
36 | "@types/chai": "3.4.34",
37 | "@types/mocha": "2.2.38",
38 | "ajv": "~5.2.2"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/index.ts:
--------------------------------------------------------------------------------
1 | // A file is required to be in the root of the /src directory by the TypeScript compiler
2 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformator/PageTransformatorWebPart.manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx/client-side-web-part-manifest.schema.json",
3 | "id": "c732da60-5eee-4dd0-8879-b89eec6d89df",
4 | "alias": "PageTransformatorWebPart",
5 | "componentType": "WebPart",
6 |
7 | // The "*" signifies that the version should be taken from the package.json
8 | "version": "*",
9 | "manifestVersion": 2,
10 |
11 | // If true, the component can only be installed on sites where Custom Script is allowed.
12 | // Components that allow authors to embed arbitrary script code should set this to true.
13 | // https://support.office.com/en-us/article/Turn-scripting-capabilities-on-or-off-1f2c515f-5d7e-448a-9fd7-835da935584f
14 | "requiresCustomScript": false,
15 |
16 | "preconfiguredEntries": [{
17 | "groupId": "5c03119e-3074-46fd-976b-c60198311f70", // Other
18 | "group": { "default": "Other" },
19 | "title": { "default": "pageTransformator" },
20 | "description": { "default": "Calls the page transformation service on behalf of the user to create a modern version of the page" },
21 | "officeFabricIconFontName": "Lightbulb",
22 | "properties": {
23 | "description": "pageTransformator"
24 | }
25 | }]
26 | }
27 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformator/components/IPageTransformatorProps.ts:
--------------------------------------------------------------------------------
1 | import { AadHttpClient } from '@microsoft/sp-http';
2 | import { IStorageEntities } from './IStorageEntities';
3 |
4 | export interface IPageTransformatorProps {
5 | modernizationClient: AadHttpClient;
6 | modernizationApi: string;
7 | siteUrl: string;
8 | pageUrl: string;
9 | editMode: boolean;
10 | storageEntitiesSet: boolean;
11 | storageEntities: IStorageEntities;
12 | }
13 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformator/components/IPageTransformatorState.ts:
--------------------------------------------------------------------------------
1 | export interface IPageTransformatorState {
2 | editMode: boolean;
3 | errorString: string;
4 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformator/components/IStorageEntities.ts:
--------------------------------------------------------------------------------
1 | export interface IStorageEntities {
2 | azureADApp: string;
3 | functionHost: string;
4 | pageTransformationEndpoint: string;
5 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformator/components/IStorageEntity.ts:
--------------------------------------------------------------------------------
1 | export interface IStorageEntity {
2 | '@odata.context': string;
3 | '@odata.type': string;
4 | '@odata.id': string;
5 | '@odata.editLink': string;
6 | Comment: string;
7 | Description: string;
8 | Value: string;
9 | error?: any;
10 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformator/components/PageTransformator.module.scss:
--------------------------------------------------------------------------------
1 | @import '~@microsoft/sp-office-ui-fabric-core/dist/sass/SPFabricCore.scss';
2 |
3 | .pageTransformator {
4 |
5 | .container {
6 | margin: 0px auto;
7 | }
8 |
9 | .centeralign {
10 | text-align: center;
11 | }
12 |
13 | .row {
14 | @include ms-Grid-row;
15 | @include ms-fontColor-white;
16 | background-color: $ms-color-white;
17 | padding: 5px;
18 | }
19 |
20 | .column {
21 | @include ms-Grid-col;
22 | }
23 |
24 | .title {
25 | @include ms-font-xl;
26 | @include ms-fontColor-white;
27 | }
28 |
29 | .subTitle {
30 | @include ms-font-l;
31 | @include ms-fontColor-white;
32 | }
33 |
34 | .description {
35 | @include ms-font-l;
36 | @include ms-fontColor-white;
37 | }
38 |
39 | .button {
40 | // Our button
41 | text-decoration: none;
42 | height: 32px;
43 |
44 | // Primary Button
45 | min-width: 80px;
46 | background-color: $ms-color-themePrimary;
47 | border-color: $ms-color-themePrimary;
48 | color: $ms-color-white;
49 |
50 | // Basic Button
51 | outline: transparent;
52 | position: relative;
53 | font-family: "Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;
54 | -webkit-font-smoothing: antialiased;
55 | font-size: $ms-font-size-m;
56 | font-weight: $ms-font-weight-regular;
57 | border-width: 0;
58 | text-align: center;
59 | cursor: pointer;
60 | display: inline-block;
61 | padding: 0 16px;
62 |
63 | .label {
64 | font-weight: $ms-font-weight-semibold;
65 | font-size: $ms-font-size-m;
66 | height: 32px;
67 | line-height: 32px;
68 | margin: 0 4px;
69 | vertical-align: top;
70 | display: inline-block;
71 | }
72 | }
73 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformator/loc/en-us.js:
--------------------------------------------------------------------------------
1 | define([], function() {
2 | return {
3 | "PropertyPaneDescription": "Description",
4 | "BasicGroupName": "Group Name",
5 | "DescriptionFieldLabel": "Description Field"
6 | }
7 | });
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformator/loc/mystrings.d.ts:
--------------------------------------------------------------------------------
1 | declare interface IPageTransformatorWebPartStrings {
2 | PropertyPaneDescription: string;
3 | BasicGroupName: string;
4 | DescriptionFieldLabel: string;
5 | }
6 |
7 | declare module 'PageTransformatorWebPartStrings' {
8 | const strings: IPageTransformatorWebPartStrings;
9 | export = strings;
10 | }
11 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformatorAdmin/PageTransformatorAdminWebPart.manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx/client-side-web-part-manifest.schema.json",
3 | "id": "d44fe952-072d-4f11-866b-d41185c5e8f2",
4 | "alias": "PageTransformatorAdminWebPart",
5 | "componentType": "WebPart",
6 |
7 | // The "*" signifies that the version should be taken from the package.json
8 | "version": "*",
9 | "manifestVersion": 2,
10 |
11 | // If true, the component can only be installed on sites where Custom Script is allowed.
12 | // Components that allow authors to embed arbitrary script code should set this to true.
13 | // https://support.office.com/en-us/article/Turn-scripting-capabilities-on-or-off-1f2c515f-5d7e-448a-9fd7-835da935584f
14 | "requiresCustomScript": false,
15 |
16 | "preconfiguredEntries": [{
17 | "groupId": "5c03119e-3074-46fd-976b-c60198311f70", // Other
18 | "group": { "default": "Other" },
19 | "title": { "default": "PageTransformatorAdmin" },
20 | "description": { "default": "Allows administrators to enable or disable sites for page transformation" },
21 | "officeFabricIconFontName": "Page",
22 | "properties": {
23 | "description": "PageTransformatorAdmin"
24 | }
25 | }]
26 | }
27 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformatorAdmin/PageTransformatorAdminWebPart.ts:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import * as ReactDom from 'react-dom';
3 | import { Version } from '@microsoft/sp-core-library';
4 | import {
5 | BaseClientSideWebPart,
6 | IPropertyPaneConfiguration,
7 | PropertyPaneTextField
8 | } from '@microsoft/sp-webpart-base';
9 |
10 | import * as strings from 'PageTransformatorAdminWebPartStrings';
11 | import PageTransformatorAdmin from './components/PageTransformatorAdmin';
12 | import { IPageTransformatorAdminProps } from './components/IPageTransformatorAdminProps';
13 |
14 | export interface IPageTransformatorAdminWebPartProps {
15 | description: string;
16 | }
17 |
18 | export default class PageTransformatorAdminWebPart extends BaseClientSideWebPart {
19 |
20 | public render(): void {
21 | const element: React.ReactElement = React.createElement(
22 | PageTransformatorAdmin,
23 | {
24 | description: this.properties.description,
25 | context: this.context
26 | }
27 | );
28 |
29 | ReactDom.render(element, this.domElement);
30 | }
31 |
32 | protected onDispose(): void {
33 | ReactDom.unmountComponentAtNode(this.domElement);
34 | }
35 |
36 | protected get dataVersion(): Version {
37 | return Version.parse('1.0');
38 | }
39 |
40 | protected getPropertyPaneConfiguration(): IPropertyPaneConfiguration {
41 | return {
42 | pages: [
43 | {
44 | header: {
45 | description: strings.PropertyPaneDescription
46 | },
47 | groups: [
48 | {
49 | groupName: strings.BasicGroupName,
50 | groupFields: [
51 | PropertyPaneTextField('description', {
52 | label: strings.DescriptionFieldLabel
53 | })
54 | ]
55 | }
56 | ]
57 | }
58 | ]
59 | };
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformatorAdmin/components/IPageTransformatorAdminProps.ts:
--------------------------------------------------------------------------------
1 | import { WebPartContext } from "@microsoft/sp-webpart-base";
2 | import { MessageBarType } from "office-ui-fabric-react/lib/MessageBar";
3 |
4 | export interface IPageTransformatorAdminProps {
5 | description: string;
6 | context: WebPartContext;
7 | }
8 |
9 | export interface IPageTransformatorAdminState {
10 | siteUrl: string;
11 | buttonsDisabled: boolean;
12 | resultMessage :string;
13 | resultMessageType: MessageBarType;
14 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformatorAdmin/components/PageTransformatorAdmin.module.scss:
--------------------------------------------------------------------------------
1 | @import '~@microsoft/sp-office-ui-fabric-core/dist/sass/SPFabricCore.scss';
2 |
3 | .pageTransformatorAdmin {
4 |
5 | .actions {
6 | margin-top: 16px;
7 |
8 | button:first-child {
9 | margin-right: 16px;
10 | }
11 | }
12 |
13 | .messages {
14 | margin-top: 16px;
15 | }
16 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformatorAdmin/loc/en-us.js:
--------------------------------------------------------------------------------
1 | define([], function() {
2 | return {
3 | "PropertyPaneDescription": "Description",
4 | "BasicGroupName": "Group Name",
5 | "DescriptionFieldLabel": "Description Field"
6 | }
7 | });
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/src/webparts/pageTransformatorAdmin/loc/mystrings.d.ts:
--------------------------------------------------------------------------------
1 | declare interface IPageTransformatorAdminWebPartStrings {
2 | PropertyPaneDescription: string;
3 | BasicGroupName: string;
4 | DescriptionFieldLabel: string;
5 | }
6 |
7 | declare module 'PageTransformatorAdminWebPartStrings' {
8 | const strings: IPageTransformatorAdminWebPartStrings;
9 | export = strings;
10 | }
11 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/teams/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.2/MicrosoftTeams.schema.json",
3 | "manifestVersion": "1.2",
4 | "packageName": "PageTransformator",
5 | "id": "c732da60-5eee-4dd0-8879-b89eec6d89df",
6 | "version": "0.1",
7 | "developer": {
8 | "name": "SPFx + Teams Dev",
9 | "websiteUrl": "https://products.office.com/en-us/sharepoint/collaboration",
10 | "privacyUrl": "https://privacy.microsoft.com/en-us/privacystatement",
11 | "termsOfUseUrl": "https://www.microsoft.com/en-us/servicesagreement"
12 | },
13 | "name": {
14 | "short": "PageTransformator"
15 | },
16 | "description": {
17 | "short": "Calls the page transformation service on behalf of the user to create a modern version of the page",
18 | "full": "Calls the page transformation service on behalf of the user to create a modern version of the page"
19 | },
20 | "icons": {
21 | "outline": "tab20x20.png",
22 | "color": "tab96x96.png"
23 | },
24 | "accentColor": "#004578",
25 | "configurableTabs": [
26 | {
27 | "configurationUrl": "https://{teamSiteDomain}{teamSitePath}/_layouts/15/TeamsLogon.aspx?SPFX=true&dest={teamSitePath}/_layouts/15/teamshostedapp.aspx%3FopenPropertyPane=true%26teams%26componentId=c732da60-5eee-4dd0-8879-b89eec6d89df",
28 | "canUpdateConfiguration": false,
29 | "scopes": [
30 | "team"
31 | ]
32 | }
33 | ],
34 | "validDomains": [
35 | "*.login.microsoftonline.com",
36 | "*.sharepoint.com",
37 | "*.sharepoint-df.com",
38 | "spoppe-a.akamaihd.net",
39 | "spoprod-a.akamaihd.net",
40 | "resourceseng.blob.core.windows.net",
41 | "msft.spoppe.com"
42 | ],
43 | "webApplicationInfo": {
44 | "resource": "https://{teamSiteDomain}",
45 | "id": "00000003-0000-0ff1-ce00-000000000000"
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/teams/tab20x20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/spfx/central/teams/tab20x20.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/teams/tab96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/spfx/central/teams/tab96x96.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "forceConsistentCasingInFileNames": true,
5 | "module": "esnext",
6 | "moduleResolution": "node",
7 | "jsx": "react",
8 | "declaration": true,
9 | "sourceMap": true,
10 | "experimentalDecorators": true,
11 | "skipLibCheck": true,
12 | "outDir": "lib",
13 | "typeRoots": [
14 | "./node_modules/@types",
15 | "./node_modules/@microsoft"
16 | ],
17 | "types": [
18 | "es6-promise",
19 | "webpack-env"
20 | ],
21 | "lib": [
22 | "es5",
23 | "dom",
24 | "es2015.collection"
25 | ]
26 | },
27 | "include": [
28 | "src/**/*.ts"
29 | ],
30 | "exclude": [
31 | "node_modules",
32 | "lib"
33 | ]
34 | }
35 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/central/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@microsoft/sp-tslint-rules/base-tslint.json",
3 | "rules": {
4 | "class-name": false,
5 | "export-name": false,
6 | "forin": false,
7 | "label-position": false,
8 | "member-access": true,
9 | "no-arg": false,
10 | "no-console": false,
11 | "no-construct": false,
12 | "no-duplicate-variable": true,
13 | "no-eval": false,
14 | "no-function-expression": true,
15 | "no-internal-module": true,
16 | "no-shadowed-variable": true,
17 | "no-switch-case-fall-through": true,
18 | "no-unnecessary-semicolons": true,
19 | "no-unused-expression": true,
20 | "no-use-before-declare": true,
21 | "no-with-statement": true,
22 | "semicolon": true,
23 | "trailing-comma": false,
24 | "typedef": false,
25 | "typedef-whitespace": false,
26 | "use-named-parameter": true,
27 | "variable-name": false,
28 | "whitespace": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "lockfileVersion": 1
3 | }
4 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent
2 | # coding styles between different editors and IDEs
3 | # editorconfig.org
4 |
5 | root = true
6 |
7 |
8 | [*]
9 |
10 | # change these settings to your own preference
11 | indent_style = space
12 | indent_size = 2
13 |
14 | # we recommend you to keep these unchanged
15 | end_of_line = lf
16 | charset = utf-8
17 | trim_trailing_whitespace = true
18 | insert_final_newline = true
19 |
20 | [*.md]
21 | trim_trailing_whitespace = false
22 |
23 | [{package,bower}.json]
24 | indent_style = space
25 | indent_size = 2
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 |
6 | # Dependency directories
7 | node_modules
8 |
9 | # Build generated files
10 | dist
11 | lib
12 | solution
13 | temp
14 | *.sppkg
15 |
16 | # Coverage directory used by tools like istanbul
17 | coverage
18 |
19 | # OSX
20 | .DS_Store
21 |
22 | # Visual Studio files
23 | .ntvs_analysis.dat
24 | .vs
25 | bin
26 | obj
27 |
28 | # Resx Generated Code
29 | *.resx.ts
30 |
31 | # Styles Generated Code
32 | *.scss.ts
33 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "msjsdiag.debugger-for-chrome"
4 | ]
5 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | /**
3 | * Install Chrome Debugger Extension for Visual Studio Code to debug your components with the
4 | * Chrome browser: https://aka.ms/spfx-debugger-extensions
5 | */
6 | "version": "0.2.0",
7 | "configurations": [{
8 | "name": "Local workbench",
9 | "type": "chrome",
10 | "request": "launch",
11 | "url": "https://localhost:4321/temp/workbench.html",
12 | "webRoot": "${workspaceRoot}",
13 | "sourceMaps": true,
14 | "sourceMapPathOverrides": {
15 | "webpack:///../../../src/*": "${webRoot}/src/*",
16 | "webpack:///../../../../src/*": "${webRoot}/src/*",
17 | "webpack:///../../../../../src/*": "${webRoot}/src/*"
18 | },
19 | "runtimeArgs": [
20 | "--remote-debugging-port=9222"
21 | ]
22 | },
23 | {
24 | "name": "Hosted workbench",
25 | "type": "chrome",
26 | "request": "launch",
27 | "url": "https://enter-your-SharePoint-site/_layouts/workbench.aspx",
28 | "webRoot": "${workspaceRoot}",
29 | "sourceMaps": true,
30 | "sourceMapPathOverrides": {
31 | "webpack:///../../../src/*": "${webRoot}/src/*",
32 | "webpack:///../../../../src/*": "${webRoot}/src/*",
33 | "webpack:///../../../../../src/*": "${webRoot}/src/*"
34 | },
35 | "runtimeArgs": [
36 | "--remote-debugging-port=9222",
37 | "-incognito"
38 | ]
39 | }
40 | ]
41 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | // Place your settings in this file to overwrite default and user settings.
2 | {
3 | // Configure glob patterns for excluding files and folders in the file explorer.
4 | "files.exclude": {
5 | "**/.git": true,
6 | "**/.DS_Store": true,
7 | "**/bower_components": true,
8 | "**/coverage": true,
9 | "**/lib-amd": true,
10 | "src/**/*.scss.ts": true
11 | },
12 | "typescript.tsdk": ".\\node_modules\\typescript\\lib"
13 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/.yo-rc.json:
--------------------------------------------------------------------------------
1 | {
2 | "@microsoft/generator-sharepoint": {
3 | "isCreatingSolution": true,
4 | "environment": "spo",
5 | "version": "1.7.0",
6 | "libraryName": "sharepointpnp-pagetransformation-client",
7 | "libraryId": "34abc8e8-c631-4815-8ea5-c3ab783d4175",
8 | "packageManager": "npm",
9 | "isDomainIsolated": false,
10 | "componentType": "webpart"
11 | }
12 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/README.md:
--------------------------------------------------------------------------------
1 | ## sharepointpnp-pagetransformation-client
2 |
3 | This is where you include your WebPart documentation.
4 |
5 | ### Building the code
6 |
7 | ```bash
8 | git clone the repo
9 | npm i
10 | npm i -g gulp
11 | gulp
12 | ```
13 |
14 | This package produces the following:
15 |
16 | * lib/* - intermediate-stage commonjs build artifacts
17 | * dist/* - the bundled script, along with other resources
18 | * deploy/* - all resources which should be uploaded to a CDN.
19 |
20 | ### Build options
21 |
22 | gulp clean - TODO
23 | gulp test - TODO
24 | gulp serve - TODO
25 | gulp bundle - TODO
26 | gulp package-solution - TODO
27 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/config/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/config.2.0.schema.json",
3 | "version": "2.0",
4 | "bundles": {
5 | "page-banner-web-part": {
6 | "components": [
7 | {
8 | "entrypoint": "./lib/webparts/pageBanner/PageBannerWebPart.js",
9 | "manifest": "./src/webparts/pageBanner/PageBannerWebPart.manifest.json"
10 | }
11 | ]
12 | }
13 | },
14 | "externals": {},
15 | "localizedResources": {
16 | "PageBannerWebPartStrings": "lib/webparts/pageBanner/loc/{locale}.js"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/config/copy-assets.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/copy-assets.schema.json",
3 | "deployCdnPath": "temp/deploy"
4 | }
5 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/config/deploy-azure-storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/deploy-azure-storage.schema.json",
3 | "workingDir": "./temp/deploy/",
4 | "account": "",
5 | "container": "sharepointpnp-pagetransformation-client",
6 | "accessKey": ""
7 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/config/package-solution.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/package-solution.schema.json",
3 | "solution": {
4 | "name": "sharepointpnp-pagetransformation-client-solution",
5 | "id": "34abc8e8-c631-4815-8ea5-c3ab783d4175",
6 | "version": "1.0.0.2",
7 | "includeClientSideAssets": true,
8 | "skipFeatureDeployment": true,
9 | "isDomainIsolated": false
10 | },
11 | "paths": {
12 | "zippedPackage": "solution/sharepointpnp-pagetransformation-client.sppkg"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/config/serve.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/core-build/serve.schema.json",
3 | "port": 4321,
4 | "https": true,
5 | "initialPage": "https://localhost:5432/workbench",
6 | "api": {
7 | "port": 5432,
8 | "entryPath": "node_modules/@microsoft/sp-webpart-workbench/lib/api/"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/config/write-manifests.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/write-manifests.schema.json",
3 | "cdnBasePath": ""
4 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/gulpfile.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const gulp = require('gulp');
4 | const build = require('@microsoft/sp-build-web');
5 | build.addSuppression(`Warning - [sass] The local CSS class 'ms-Grid' is not camelCase and will not be type-safe.`);
6 |
7 | build.initialize(gulp);
8 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sharepointpnp-pagetransformation-client",
3 | "version": "0.0.1",
4 | "private": true,
5 | "engines": {
6 | "node": ">=0.10.0"
7 | },
8 | "scripts": {
9 | "build": "gulp bundle",
10 | "clean": "gulp clean",
11 | "test": "gulp test"
12 | },
13 | "dependencies": {
14 | "@microsoft/sp-core-library": "1.7.0",
15 | "@microsoft/sp-dialog": "^1.7.0",
16 | "@microsoft/sp-lodash-subset": "1.7.0",
17 | "@microsoft/sp-office-ui-fabric-core": "1.7.0",
18 | "@microsoft/sp-webpart-base": "1.7.0",
19 | "@pnp/common": "^1.3.1",
20 | "@pnp/logging": "^1.3.1",
21 | "@pnp/odata": "^1.3.1",
22 | "@pnp/sp": "^1.3.1",
23 | "@types/es6-promise": "0.0.33",
24 | "@types/react": "16.4.2",
25 | "@types/react-dom": "16.0.5",
26 | "@types/webpack-env": "1.13.1",
27 | "applicationinsights-js": "^1.0.20",
28 | "react": "16.3.2",
29 | "react-dom": "16.3.3"
30 | },
31 | "devDependencies": {
32 | "@microsoft/sp-build-web": "1.7.0",
33 | "@microsoft/sp-tslint-rules": "1.7.0",
34 | "@microsoft/sp-module-interfaces": "1.7.0",
35 | "@microsoft/sp-webpart-workbench": "1.7.0",
36 | "gulp": "~3.9.1",
37 | "@types/chai": "3.4.34",
38 | "@types/mocha": "2.2.38",
39 | "ajv": "~5.2.2"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/src/index.ts:
--------------------------------------------------------------------------------
1 | // A file is required to be in the root of the /src directory by the TypeScript compiler
2 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/src/webparts/pageBanner/PageBannerWebPart.manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/json-schemas/spfx/client-side-web-part-manifest.schema.json",
3 | "id": "d462a7c4-b2e1-4e80-867a-7b46d279c161",
4 | "alias": "PageBannerWebPart",
5 | "componentType": "WebPart",
6 |
7 | // The "*" signifies that the version should be taken from the package.json
8 | "version": "*",
9 | "manifestVersion": 2,
10 |
11 | // If true, the component can only be installed on sites where Custom Script is allowed.
12 | // Components that allow authors to embed arbitrary script code should set this to true.
13 | // https://support.office.com/en-us/article/Turn-scripting-capabilities-on-or-off-1f2c515f-5d7e-448a-9fd7-835da935584f
14 | "requiresCustomScript": false,
15 | "hiddenFromToolbox": true,
16 |
17 | "preconfiguredEntries": [{
18 | "groupId": "5c03119e-3074-46fd-976b-c60198311f70", // Other
19 | "group": { "default": "Other" },
20 | "title": { "default": "pageBanner" },
21 | "description": { "default": "This web part allows a user to accept/discard the created modern client side page" },
22 | "officeFabricIconFontName": "Lightbulb",
23 | "properties": {
24 | "sourcePage": "",
25 | "targetPage": ""
26 | }
27 | }]
28 | }
29 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/src/webparts/pageBanner/components/IPageBannerProps.ts:
--------------------------------------------------------------------------------
1 | import { PageContext } from "@microsoft/sp-page-context";
2 |
3 | export interface IPageBannerProps {
4 | pageContext: PageContext;
5 | sourcePage: string;
6 | targetPage: string;
7 | modernizationCenterUrl: string;
8 | feedbackList: string;
9 | learnMoreUrl: string;
10 | }
11 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/src/webparts/pageBanner/components/IPageBannerState.ts:
--------------------------------------------------------------------------------
1 | export interface IPageBannerState {
2 | progressMessage: string;
3 | errorString: string;
4 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/src/webparts/pageBanner/components/IStorageEntities.ts:
--------------------------------------------------------------------------------
1 | import { StorageEntity } from "@pnp/sp";
2 |
3 | export interface IStorageEntities {
4 | modernizationCenterUrl: StorageEntity;
5 | feedbackList: StorageEntity;
6 | learnMoreUrl: StorageEntity;
7 | }
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/src/webparts/pageBanner/loc/en-us.js:
--------------------------------------------------------------------------------
1 | define([], function() {
2 | return {
3 | "PropertyPaneDescription": "Holds the information needed for page transformation",
4 | "BasicGroupName": "Page modernization",
5 | "SourcePageFieldLabel" : "Source Page",
6 | "TargetPageFieldLabel" : "Target Page"
7 | }
8 | });
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/src/webparts/pageBanner/loc/mystrings.d.ts:
--------------------------------------------------------------------------------
1 | declare interface IPageBannerWebPartStrings {
2 | PropertyPaneDescription: string;
3 | BasicGroupName: string;
4 | SourcePageFieldLabel: string;
5 | TargetPageFieldLabel: string;
6 | }
7 |
8 | declare module 'PageBannerWebPartStrings' {
9 | const strings: IPageBannerWebPartStrings;
10 | export = strings;
11 | }
12 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/teams/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.2/MicrosoftTeams.schema.json",
3 | "manifestVersion": "1.2",
4 | "packageName": "PageBanner",
5 | "id": "d462a7c4-b2e1-4e80-867a-7b46d279c161",
6 | "version": "0.1",
7 | "developer": {
8 | "name": "SPFx + Teams Dev",
9 | "websiteUrl": "https://products.office.com/en-us/sharepoint/collaboration",
10 | "privacyUrl": "https://privacy.microsoft.com/en-us/privacystatement",
11 | "termsOfUseUrl": "https://www.microsoft.com/en-us/servicesagreement"
12 | },
13 | "name": {
14 | "short": "PageBanner"
15 | },
16 | "description": {
17 | "short": "This web part allows a user to accept/discard the created modern client side page",
18 | "full": "This web part allows a user to accept/discard the created modern client side page"
19 | },
20 | "icons": {
21 | "outline": "tab20x20.png",
22 | "color": "tab96x96.png"
23 | },
24 | "accentColor": "#004578",
25 | "configurableTabs": [
26 | {
27 | "configurationUrl": "https://{teamSiteDomain}{teamSitePath}/_layouts/15/TeamsLogon.aspx?SPFX=true&dest={teamSitePath}/_layouts/15/teamshostedapp.aspx%3FopenPropertyPane=true%26teams%26componentId=d462a7c4-b2e1-4e80-867a-7b46d279c161",
28 | "canUpdateConfiguration": false,
29 | "scopes": [
30 | "team"
31 | ]
32 | }
33 | ],
34 | "validDomains": [
35 | "*.login.microsoftonline.com",
36 | "*.sharepoint.com",
37 | "*.sharepoint-df.com",
38 | "spoppe-a.akamaihd.net",
39 | "spoprod-a.akamaihd.net",
40 | "resourceseng.blob.core.windows.net",
41 | "msft.spoppe.com"
42 | ],
43 | "webApplicationInfo": {
44 | "resource": "https://{teamSiteDomain}",
45 | "id": "00000003-0000-0ff1-ce00-000000000000"
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/teams/tab20x20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/spfx/user/teams/tab20x20.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/teams/tab96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Solutions/PageTransformationUI/spfx/user/teams/tab96x96.png
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "forceConsistentCasingInFileNames": true,
5 | "module": "esnext",
6 | "moduleResolution": "node",
7 | "jsx": "react",
8 | "declaration": true,
9 | "sourceMap": true,
10 | "experimentalDecorators": true,
11 | "skipLibCheck": true,
12 | "outDir": "lib",
13 | "typeRoots": [
14 | "./node_modules/@types",
15 | "./node_modules/@microsoft"
16 | ],
17 | "types": [
18 | "es6-promise",
19 | "webpack-env"
20 | ],
21 | "lib": [
22 | "es5",
23 | "dom",
24 | "es2015.collection"
25 | ]
26 | },
27 | "include": [
28 | "src/**/*.ts"
29 | ],
30 | "exclude": [
31 | "node_modules",
32 | "lib"
33 | ]
34 | }
35 |
--------------------------------------------------------------------------------
/Solutions/PageTransformationUI/spfx/user/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@microsoft/sp-tslint-rules/base-tslint.json",
3 | "rules": {
4 | "class-name": false,
5 | "export-name": false,
6 | "forin": false,
7 | "label-position": false,
8 | "member-access": true,
9 | "no-arg": false,
10 | "no-console": false,
11 | "no-construct": false,
12 | "no-duplicate-variable": true,
13 | "no-eval": false,
14 | "no-function-expression": true,
15 | "no-internal-module": true,
16 | "no-shadowed-variable": true,
17 | "no-switch-case-fall-through": true,
18 | "no-unnecessary-semicolons": true,
19 | "no-unused-expression": true,
20 | "no-use-before-declare": true,
21 | "no-with-statement": true,
22 | "semicolon": true,
23 | "trailing-comma": false,
24 | "typedef": false,
25 | "typedef-whitespace": false,
26 | "use-named-parameter": true,
27 | "variable-name": false,
28 | "whitespace": false
29 | }
30 | }
--------------------------------------------------------------------------------
/Solutions/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Modernization solutions
3 |
4 | Contains end-to-end solutions that you can use to perform modernization tasks.
5 |
6 | Folder | Description
7 | -------|------------
8 | **PageTransformationUI** | This solution provides self-service page transformation (modernizing classic wiki and web part pages) for your end users. 
9 |
--------------------------------------------------------------------------------
/Tools/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Tools
3 |
4 | This section of the modernization repository holds the tools, scripts and utilities that you use as part of your modernization efforts. To get started with modernization your classic SharePoint sites go to https://aka.ms/sppnp-modernize.
5 |
6 | Folder | Description
7 | -------|------------
8 | SharePoint.Modernization | Holds the SharePoint Modernization framework. This framework consists out of [SharePoint Modernization Framework](https://aka.ms/sppnp-pagetransformation) and a [SharePoint Modernization scanner](https://aka.ms/sppnp-modernizationscanner).
9 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/README.md:
--------------------------------------------------------------------------------
1 | # SharePoint Modernization tools
2 |
3 | The SharePointPnP.Modernization solution contains tools to help you with modernizing your classic SharePoint sites.
4 |
5 | ## The SharePoint Modernization scanner
6 |
7 | Using the modernization scanner you can prepare your classic sites for modernization via connecting these sites to an Office 365 group, modernizing the pages and in case of a publishing portal designing a modern publishing portal. This scanner is a key tool to use if you want to prepare for modernizing your classic sites. Next to that the scanner will also provide you data about your classic workflow and InfoPath usage as these are candidates to be reworked using Microsoft Flow and PowerApps.
8 |
9 | - [Getting started with the Modernization Scanner](https://aka.ms/sppnp-modernizationscanner)
10 | - [Modernization scanner release notes](Modernization%20Scanner%20release%20notes.md)
11 |
12 | ## Page Transformation (Modernization framework)
13 |
14 | Page Transformation allows you to transform classic wiki, webpart and publishing pages into modern client side pages. When you modernize your sites, being able to also modernize your classic pages is essential and this tool enables you to do so.
15 |
16 | - [Page transformation documentation](https://aka.ms/sppnp-pagetransformation)
17 | - [Getting started with page transformation videos](https://aka.ms/sppnp-pagetransformationvideos)
18 | - [Page transformation release notes](Modernization%20Framework%20release%20notes.md)
19 |
20 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/Releases/SharePoint.Modernization.Scanner.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/Releases/SharePoint.Modernization.Scanner.exe
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/Releases/SharePoint.Modernization.Scanner.exe.SHA512:
--------------------------------------------------------------------------------
1 | 359D9772C5AB035D56732F46668727FE6AF0888CDEC82D693A8AE953BDD3F3DAA630B573373A1365FBA4DA41C83D4A13D8248DDAF162C55F00EAABE84FF959D8
2 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/Releases/readme.md:
--------------------------------------------------------------------------------
1 | # Releases
2 |
3 | This folder contains the latest release of the SharePoint Modernization Scanner.
4 |
5 | ## Verify download via hash
6 |
7 | When you download the SharePoint.Modernization.Scanner.exe you can verify the download was successful by calculating a SHA512 hash from your downloaded version and comparing it with the value stored in the SharePoint.Modernization.Scanner.exe.SHA512 file.
8 |
9 | ```PowerShell
10 | (Get-FileHash -Algorithm SHA512 -Path .\SharePoint.Modernization.Scanner.exe).Hash
11 | ```
12 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/Releases/version.txt:
--------------------------------------------------------------------------------
1 | 2.19.0.0
2 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.DocsGenerator/Model/Function.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace SharePointPnP.Modernization.DocsGenerator.Model
8 | {
9 | public class Function
10 | {
11 |
12 | public Function()
13 | {
14 | this.Inputs = new List();
15 | this.Outputs = new List();
16 | }
17 |
18 | public string Name { get; set; }
19 | public string Description { get; set; }
20 | public string Example { get; set; }
21 | public List Inputs { get; set; }
22 | public List Outputs { get; set; }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.DocsGenerator/Model/FunctionParameter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace SharePointPnP.Modernization.DocsGenerator.Model
8 | {
9 | public class FunctionParameter
10 | {
11 | public string Name { get; set; }
12 | public string Description { get; set; }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.DocsGenerator/Model/Selector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace SharePointPnP.Modernization.DocsGenerator.Model
8 | {
9 | public class Selector
10 | {
11 | public Selector()
12 | {
13 | this.Inputs = new List();
14 | this.Outputs = new List();
15 | }
16 |
17 | public string Name { get; set; }
18 | public string Description { get; set; }
19 | public string Example { get; set; }
20 | public List Inputs { get; set; }
21 | public List Outputs { get; set; }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.DocsGenerator/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("SharePointPnP.Modernization.DocsGenerator")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("SharePointPnP.Modernization.DocsGenerator")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("92b96a1a-f2a3-45f6-b77c-36e4df823bf4")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.DocsGenerator/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Profiler/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("SharePointPnP.Modernization.Framework.Profiler")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("SharePointPnP.Modernization.Framework.Profiler")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("184b8275-f8ea-4011-bce6-e44e03ecff01")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.SampleAddOn/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("SharePoint.Modernization.Framework.SampleAddOn")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("SharePoint.Modernization.Framework.SampleAddOn")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("7a31933f-bdad-4b95-a774-edd4b0f47908")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | [assembly: AssemblyTitle("SharePoint.Modernization.Framework.Tests")]
6 | [assembly: AssemblyDescription("")]
7 | [assembly: AssemblyConfiguration("")]
8 | [assembly: AssemblyCompany("")]
9 | [assembly: AssemblyProduct("SharePoint.Modernization.Framework.Tests")]
10 | [assembly: AssemblyCopyright("Copyright © 2018")]
11 | [assembly: AssemblyTrademark("")]
12 | [assembly: AssemblyCulture("")]
13 |
14 | [assembly: ComVisible(false)]
15 |
16 | [assembly: Guid("07492d38-21de-4d09-a07d-aa1369819464")]
17 |
18 | // [assembly: AssemblyVersion("1.0.*")]
19 | [assembly: AssemblyVersion("1.0.0.0")]
20 | [assembly: AssemblyFileVersion("1.0.0.0")]
21 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Common/Assets/tonys-chocolate-1-1024x664.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Common/Assets/tonys-chocolate-1-1024x664.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Common/Readme.md:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Documents/Contoso_Report.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Documents/Contoso_Report.pptx
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/contoso-electronics-transp-1200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/contoso-electronics-transp-1200.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/contoso-electronics-transp-300.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/contoso-electronics-transp-300.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/contoso-electronics-transp-600.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/contoso-electronics-transp-600.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/contoso-sale-site.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/contoso-sale-site.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/contoso_logo_twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/contoso_logo_twitter.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo-files.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo-files.xml
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_IT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_IT.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_benefits.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_benefits.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_data_center_technologies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_data_center_technologies.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_design_tools_software.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_design_tools_software.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_finance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_finance.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_graphics_visual_technologies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_graphics_visual_technologies.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_hr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_hr.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_legal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_legal.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_memory_networking_technologies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_memory_networking_technologies.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_sales_web_site.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_sales_web_site.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_technologies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_technologies.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_01.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_03.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_08.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_11.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_14.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_15.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_16.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Logos/logo_v_19.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Allison-Linn_Head-Shot-215x215.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Allison-Linn_Head-Shot-215x215.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Commercial16_smallmeeting_02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Commercial16_smallmeeting_02.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Craig-Mundie-_20-Ann.-768x983.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Craig-Mundie-_20-Ann.-768x983.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/EDU18_Teachers_013-960x640.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/EDU18_Teachers_013-960x640.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/FN5A5682-683x1024.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/FN5A5682-683x1024.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/KLAPSTUK-TU-Delft-Qutech-5-of-113-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/KLAPSTUK-TU-Delft-Qutech-5-of-113-3.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/MS-Stories-Station-Q-Freedman-Michael-12-1024x683.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/MS-Stories-Station-Q-Freedman-Michael-12-1024x683.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/MSSurface_Pro4_SMB_Seattle_0578.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/MSSurface_Pro4_SMB_Seattle_0578.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Security-Feature-Header-rs.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Security-Feature-Header-rs.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Suz-spring-2016_3674-215x215.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Suz-spring-2016_3674-215x215.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/WCO18_ITHelp_004.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/WCO18_ITHelp_004.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/WCO18_whiteboard_002.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/WCO18_whiteboard_002.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Win17_15021_00_N9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/Win17_15021_00_N9.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra2.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra3.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra4.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra5.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra6.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra7.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra8.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra8_500x500.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra8_500x500.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/extra9.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/hero.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/hero.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/meeting-rooms.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/meeting-rooms.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/modernOffice_002.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/modernOffice_002.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/modernOffice_007.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/modernOffice_007.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/modernOffice_011.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/modernOffice_011.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/news.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/news.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/news2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/news2.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/news3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/news3.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/news4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/news4.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-faq.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-faq.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-feedback.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-feedback.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-financial-results.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-financial-results.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-hr.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-hr.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-my-profile.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-my-profile.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-people-directory.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-people-directory.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-support.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-support.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-training.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-training.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-travel-instructions.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/page-travel-instructions.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/pexels-photo-335907.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/pexels-photo-335907.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/photo-files.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/photo-files.xml
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/wirebonding_qubit.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/wirebonding_qubit.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/work-life-balance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/work-life-balance.png
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/working-methods.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Images/Photos/working-methods.jpg
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Provision/Readme.md:
--------------------------------------------------------------------------------
1 | # Unit Testing Provisioning
2 |
3 | This area of unit testing is to provision a lightweight source site in SharePoint in which to transform from.
4 |
5 | ### Applies to ###
6 |
7 | - SharePoint Online
8 |
9 | ## Provision Publishing Site
10 |
11 | The publishing site uses an existing sample from PnP > Business Starter Kit from Franck Cornu @aequos
12 | This serves as a strong base to get started with a publishing portal, additonal page layouts can then be added to serve as scenarios in which to test out the transformation tool.
13 |
14 | For installation please follow these instructions: [https://github.com/SharePoint/PnP/tree/master/Solutions/Business.StarterIntranet#set-up-your-environment](https://github.com/SharePoint/PnP/tree/master/Solutions/Business.StarterIntranet#set-up-your-environment)
15 |
16 |
17 |
18 | ## Provison Team Site
19 |
20 | To provision a team site, we have prepared a sample set of pages using the PnP Provisioning engine.
21 | Please create a new team site and then run the PnP PowerShell command:
22 |
23 | ```powershell
24 |
25 | Connect-PnPOnline https://.sharepoint.com/sites/
26 | Apply-PnProvisioningTemplate -Path "ClassicTeamSite-SampleData.xml"
27 |
28 | ```
29 |
30 | ## Assets
31 |
32 | Logos and sample files are used from the PnP-Starter-Kit project, if you need more assets then, these projects can help:
33 |
34 | -[https://github.com/SharePoint/sp-dev-provisioning-templates](https://github.com/SharePoint/sp-dev-provisioning-templates)
35 | -[https://github.com/SharePoint/sp-starter-kit](https://github.com/SharePoint/sp-starter-kit)
36 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/TestCategories.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace SharePointPnP.Modernization.Framework.Tests
8 | {
9 | public class TestCategories
10 | {
11 | public const string SP2010 = "SharePoint 2010";
12 | public const string SP2013 = "SharePoint 2013";
13 | public const string SP2016 = "SharePoint 2016";
14 | public const string SP2019 = "SharePoint 2019";
15 | public const string SPO = "SharePoint Online";
16 |
17 | public const string PublishingPage = "Publishing Page";
18 | public const string WebPartPage = "Web Part Page";
19 | public const string WikiPage = "Wiki Page";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/TestExtensions.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.SharePoint.Client;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using Microsoft.VisualStudio.TestTools.UnitTesting;
8 |
9 | namespace SharePointPnP.Modernization.Framework
10 | {
11 | public static class TestExtensions
12 | {
13 | ///
14 | /// Fail test if collection has no items
15 | ///
16 | ///
17 | public static void FailTestIfZero(this ListItemCollection collection)
18 | {
19 | if (collection == null || collection.Count == 0)
20 | {
21 | Assert.Fail("No pages found");
22 | }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Transform/CommonTests/Readme.md:
--------------------------------------------------------------------------------
1 | # Common Platform Tests
2 |
3 | These set of unit tests are designed to run on any source version of SharePoint.
4 | This requires an element of consistance with the source content with the following rules:
5 |
6 | * Page File Names MUST be the same in the source system but can be different in target system
7 | * A method is provided that will rename the target to enable easy cross examination e.g. WelcomePage-1.aspx in the source is suffixed with version to become WelcomePage-1-SP2013.aspx
8 | * Content on each source platform must be identically configured see provision folder for assets and content
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Transform/ContextTests.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.SharePoint.Client;
3 | using Microsoft.VisualStudio.TestTools.UnitTesting;
4 |
5 | namespace SharePointPnP.Modernization.Framework.Tests.Transform
6 | {
7 | [TestClass]
8 | public class ContextTests
9 | {
10 | [TestMethod]
11 | public void ContextSPO_BasicTest()
12 | {
13 | using (var clientContext = TestCommon.CreateClientContext())
14 | {
15 | var web = clientContext.Web;
16 | var title = web.EnsureProperty(o => o.Title);
17 | Console.WriteLine(title);
18 | Assert.IsTrue(!string.IsNullOrEmpty(title));
19 | }
20 | }
21 |
22 | [TestMethod]
23 | public void ContextSPOnPremises_BasicTest()
24 | {
25 | using (var clientContext = TestCommon.CreateOnPremisesClientContext())
26 | {
27 | var web = clientContext.Web;
28 | var title = web.EnsureProperty(o => o.Title);
29 | Console.WriteLine(title);
30 | Assert.IsTrue(!string.IsNullOrEmpty(title));
31 | }
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Transform/Mapping/term_mapping_paths_sample.csv:
--------------------------------------------------------------------------------
1 | PnP|Sauce|PnPTransform|On-Premises|Classic Page,PnP|Katchup|PnPTransform|Online|Modern Page
2 | PnP|Sauce|PnPTransform|On-Premises|Publishing Page,PnP|Katchup|PnPTransform|Online|Modern Page
3 | PnP|Sauce|PnPTransform|On-Premises|Site Page,PnP|Katchup|PnPTransform|Online|Modern Page
4 | PnP|Sauce|PnPTransform|On-Premises|Site Page,PnP|Katchup|PnPTransform|From|SharePoint 2013
5 |
6 | PnP|Sauce|PnPTransform|On-Premises|SitePages,PnP|Katchup|PnPTransform|From|NodeDoesNotExist
7 | PnP|Sauce|PnPTransform|On-Premises|NodeDoesNotExist,PnP|Katchup|PnPTransform|From|SharePoint 2013
8 |
9 | DEFAULT|Sauce|Team Site|Wiki Page,PnP|Katchup|PnPTransform|From|SharePoint 2010
10 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Transform/Mapping/term_mapping_sample.csv:
--------------------------------------------------------------------------------
1 | PnP|Sauce|PnPTransform|On-Premises|Classic Page,PnP|Katchup|PnPTransform|Online|Modern Page
2 | PnP|Sauce|PnPTransform|On-Premises|Publishing Page,PnP|Katchup|PnPTransform|Online|Modern Page
3 | PnP|Sauce|PnPTransform|On-Premises|Site Page,PnP|Katchup|PnPTransform|Online|Modern Page
4 | PnP|Sauce|PnPTransform|On-Premises|Site Page,PnP|Katchup|PnPTransform|From|SharePoint 2013
5 |
6 | PnP|Sauce|PnPTransform|On-Premises|SitePages,PnP|Katchup|PnPTransform|From|NodeDoesNotExist
7 | PnP|Sauce|PnPTransform|On-Premises|NodeDoesNotExist,PnP|Katchup|PnPTransform|From|SharePoint 2013
8 |
9 | f0b1b6aa-b00b-4198-b8dd-ef4393e3ad05,fec05391-6a39-4ad5-a2a1-a01020d94efd
10 | 469bf4e8-3f92-4d94-9ebb-034da8917b18,fec05391-6a39-4ad5-a2a1-a01020d94efd
11 | c578cdb1-910d-4809-88a5-c7e3836eeaa7,fec05391-6a39-4ad5-a2a1-a01020d94efd
12 |
13 | 2d42d4fa-1dde-45a0-81cc-0bc19acae8db,6558ed84-4a37-46e8-99df-5de2be42f06c
14 | 69475f27-e66a-49d7-8935-f955a187dae5,9be9c990-2a3e-4f68-8ec0-c1e3326586cc
15 | f6020784-3191-4ae9-993c-e5fd4e2de499,335b95c3-52db-4bda-89be-55e7555fe97b
16 |
17 | ffab27a8-8648-4d28-b140-14834e07f0f6,335b95c3-52db-4bda-89be-55e7555fe97b
18 | f68f4f52-db5c-4a73-a28f-bf129f5931cc,9be9c990-2a3e-4f68-8ec0-c1e3326586cc
19 | 6558ed84-4a37-46e8-99df-5de2be42f06c,6558ed84-4a37-46e8-99df-5de2be42f06c
20 |
21 | 309e0928-7212-48db-9802-d05016971716,6558ed84-4a37-46e8-99df-5de2be42f06c
22 | ac625b0a-0459-4d23-bc96-0970abd1029d,6558ed84-4a37-46e8-99df-5de2be42f06c
23 |
24 | 239d84a1-b03a-4300-9a1b-82f95f560f53,6558ed84-4a37-46e8-99df-5de2be42f06c
25 | abeeb936-3ab9-40ce-aba1-a2e236c915d3,335b95c3-52db-4bda-89be-55e7555fe97b
26 | 04a0448a-e5ed-4476-af89-5e73f25536b1,9be9c990-2a3e-4f68-8ec0-c1e3326586cc
27 |
28 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Transform/Mapping/termmapping_sample2.csv:
--------------------------------------------------------------------------------
1 | Enterprise|Classification|HBI,Enterprise|Classification|LBI
2 | Enterprise|Classification|MBI,Enterprise|Classification|LBI
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Transform/Mapping/urlmapping_sample.csv:
--------------------------------------------------------------------------------
1 | https://aka.ms/sppnp-modernize,https://aka.ms/sppnp-pagetransformation
2 | /sites/modernizationtestportal,/sites/blabla
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Transform/Mapping/usermapping_sample.csv:
--------------------------------------------------------------------------------
1 | ALPHADELTA\SPInstall,AdeleV@capadevtest.onmicrosoft.com
2 | S-1-5-21-2364077317-3999105188-691961326-1103,AdeleV@capadevtest.onmicrosoft.com
3 | c:0+.w|s-1-5-21-2364077317-3999105188-691961326-1129,c:0t.c|tenant|c293ebb4-5999-414f-b0c5-16e7a618db21
4 | s-1-5-21-2364077317-3999105188-691961326-1128,Transform-Group
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Transform/Mapping/usermapping_sample2.csv:
--------------------------------------------------------------------------------
1 | sharepoint\system,bert.jansen@bertonline.onmicrosoft.com
2 | pnp\pnpadmin,kevinc@bertonline.onmicrosoft.com
3 | sp2013\pnpadmin,kevinc@bertonline.onmicrosoft.com
4 | pnp\vesaj,annal@bertonline.onmicrosoft.com
5 | s-1-5-21-3138640143-967965215-2549001177-3604,TestPermissions
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Transform/OnPremises/OnPremisesUtilityTests.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.SharePoint.Client;
3 | using Microsoft.VisualStudio.TestTools.UnitTesting;
4 |
5 | namespace SharePointPnP.Modernization.Framework.Tests.Transform.OnPremises
6 | {
7 | [TestClass]
8 | public class OnPremisesUtilityTests
9 | {
10 | [TestMethod]
11 | public void Basic_GetListByNameTest()
12 | {
13 | TestGetListByName("Pages");
14 | }
15 |
16 | [TestMethod]
17 | public void Basic_GetListByName_UpperCaseTest()
18 | {
19 | TestGetListByName("PAGES");
20 | }
21 |
22 | [TestMethod]
23 | public void Basic_GetListByName_LowerCaseTest()
24 | {
25 | TestGetListByName("pages");
26 | }
27 |
28 | private void TestGetListByName(string listName)
29 | {
30 | using (var context = TestCommon.CreateOnPremisesClientContext(TestCommon.AppSetting("SPOnPremDevSiteUrl")))
31 | {
32 | var list = context.Web.GetListByName(listName);
33 | Assert.IsNotNull(list);
34 | }
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Transform/Publishing/AdHocTests.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.SharePoint.Client;
2 | using Microsoft.VisualStudio.TestTools.UnitTesting;
3 | using SharePointPnP.Modernization.Framework.Publishing;
4 |
5 | namespace SharePointPnP.Modernization.Framework.Tests.Transform.Publishing
6 | {
7 | [TestClass]
8 | public class AdHocTests
9 | {
10 |
11 | [TestMethod]
12 | public void TestMethod1()
13 | {
14 | using (ClientContext cc = TestCommon.CreateClientContext())
15 | {
16 | PageLayoutManager m = new PageLayoutManager(null);
17 | var result = m.LoadPageLayoutMappingFile(@"..\..\..\SharePointPnP.Modernization.Framework\Publishing\pagelayoutmapping_sample.xml");
18 | }
19 | }
20 |
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework.Tests/Transform/Utility/WebExtensionsTest.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Microsoft.SharePoint.Client;
3 | using Microsoft.VisualStudio.TestTools.UnitTesting;
4 |
5 | namespace SharePointPnP.Modernization.Framework.Tests.Transform.Utility
6 | {
7 | [TestClass]
8 | public class WebExtensionsTest
9 | {
10 | [TestMethod]
11 | public void WebExtensions_GetUrl()
12 | {
13 | using (var ctx = TestCommon.CreateClientContext(TestCommon.AppSetting("SPOTargetSiteUrl")))
14 | {
15 | var expectedUrl = TestCommon.AppSetting("SPOTargetSiteUrl");
16 | var result = ctx.Web.GetUrl();
17 |
18 | Assert.AreEqual(expectedUrl, result);
19 |
20 | }
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Cache/CacheOptions.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Extensions.Caching.Distributed;
2 | using Microsoft.Extensions.Caching.Memory;
3 | using Microsoft.Extensions.Options;
4 |
5 | namespace SharePointPnP.Modernization.Framework.Cache
6 | {
7 | ///
8 | /// MemoryDistributedCache options class
9 | ///
10 | ///
11 | /// MemoryDistributedCache options class
12 | ///
13 | public class CacheOptions : MemoryDistributedCacheOptions, IOptions, ICacheOptions
14 | {
15 | public CacheOptions()
16 | {
17 | this.EntryOptions = new DistributedCacheEntryOptions() { };
18 | }
19 |
20 | MemoryDistributedCacheOptions IOptions.Value => this;
21 |
22 | ///
23 | /// Prefix value that will be prepended to the provided key value
24 | ///
25 | public string KeyPrefix { get; set; }
26 |
27 | ///
28 | /// Default cache entry configuration, will be used to save items to the cache
29 | ///
30 | public DistributedCacheEntryOptions EntryOptions { get; set; }
31 |
32 | ///
33 | /// Returns the key value to use by the caching system, in this case this will mean prepending the KeyPrefix
34 | ///
35 | /// Provided key
36 | /// Key to use by the caching system
37 | public string GetKey(string key)
38 | {
39 | if (!string.IsNullOrEmpty(KeyPrefix))
40 | {
41 | return $"{KeyPrefix}|{key}";
42 | }
43 | else
44 | {
45 | return key;
46 | }
47 | }
48 |
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Cache/FieldData.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Cache
4 | {
5 | ///
6 | /// Field data used to transfer information about a field
7 | ///
8 | [Serializable]
9 | public class FieldData
10 | {
11 | ///
12 | /// Internal name of the field
13 | ///
14 | public string FieldName { get; set; }
15 |
16 | ///
17 | /// Id of the field
18 | ///
19 | public Guid FieldId { get; set; }
20 |
21 | ///
22 | /// Type of the field
23 | ///
24 | public string FieldType { get; set; }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Cache/ICacheOptions.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Extensions.Caching.Distributed;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Cache
4 | {
5 | ///
6 | /// Interface to be implemented by each cache options implementation
7 | ///
8 | public interface ICacheOptions
9 | {
10 | ///
11 | /// Prefix value that will be prepended to the provided key value
12 | ///
13 | string KeyPrefix { get; set; }
14 |
15 | ///
16 | /// Returns the key value to use by the caching system, typically this will mean prepending the KeyPrefix
17 | ///
18 | /// Provided key
19 | /// Key to use by the caching system
20 | string GetKey(string key);
21 |
22 | ///
23 | /// Default cache entry configuration, will be used to save items to the cache
24 | ///
25 | DistributedCacheEntryOptions EntryOptions { get; set; }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/FieldReferenceFunctionType.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder
2 | {
3 | ///
4 | /// Specifies the function that is applied to a totals column or a calculated column.
5 | ///
6 | public enum FieldReferenceFunctionType
7 | {
8 | Average,
9 | Count,
10 | Maximum,
11 | Minimum,
12 | Sum,
13 | StandardDeviation,
14 | Variance
15 | }
16 | }
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/Internal/Operators/ComplexOperator.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder.Internal.Operators
2 | {
3 | internal class ComplexOperator : Operator
4 | {
5 | public Value Value { get; }
6 |
7 | internal ComplexOperator(
8 | OperatorType operatorType,
9 | FieldReference fieldRef,
10 | Value value)
11 | : base(operatorType, fieldRef)
12 | {
13 | Value = value;
14 | }
15 |
16 | public override string GetCaml()
17 | {
18 | return $@"<{OperatorTypeString}>{FieldReference.GetCaml()}{Value.GetCaml()}{OperatorTypeString}>";
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/Internal/Operators/InOperator.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder.Internal.Operators
2 | {
3 | using System.Collections.Generic;
4 | using System.Linq;
5 |
6 | internal class InOperator : Operator
7 | {
8 | public Value[] Values { get; }
9 |
10 | internal InOperator(
11 | FieldReference fieldRef,
12 | IEnumerable values)
13 | : base(OperatorType.In, fieldRef)
14 | {
15 | Values = values.ToArray();
16 | }
17 |
18 | public override string GetCaml()
19 | {
20 | return $@"<{OperatorTypeString}>{FieldReference.GetCaml()}{string.Join("\n", Values.Select(v => v.GetCaml()))}{OperatorTypeString}>";
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/Internal/Operators/MembershipOperator.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder.Internal.Operators
2 | {
3 | using System;
4 |
5 | internal class MembershipOperator : Operator
6 | {
7 | private readonly MembershipType membershipType;
8 |
9 | public MembershipOperator(FieldReference fieldRef, MembershipType membershipType)
10 | : base(OperatorType.Membership, fieldRef)
11 | {
12 | this.membershipType = membershipType;
13 | }
14 |
15 | private string GetMembershipTypeString()
16 | {
17 | switch (membershipType)
18 | {
19 | case MembershipType.SpWebAllUsers:
20 | return "SPWeb.AllUsers";
21 | case MembershipType.SpGroup:
22 | return "SPGroup";
23 | case MembershipType.SpWebGroups:
24 | return "SPWeb.Groups";
25 | case MembershipType.CurrentUserGroups:
26 | return "CurrentUserGroups";
27 | case MembershipType.SpWebUsers:
28 | return "SPWeb.Users";
29 | default:
30 | throw new ArgumentOutOfRangeException();
31 | }
32 | }
33 |
34 | public override string GetCaml()
35 | {
36 | return $@"<{OperatorTypeString} Type='{GetMembershipTypeString()}'>{FieldReference.GetCaml()}{OperatorTypeString}>";
37 | }
38 | }
39 | }
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/Internal/Operators/SimpleOperator.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder.Internal.Operators
2 | {
3 | internal class SimpleOperator : Operator
4 | {
5 | internal SimpleOperator(
6 | OperatorType operatorType,
7 | FieldReference fieldRef)
8 | : base(operatorType, fieldRef)
9 | {
10 | }
11 |
12 | public override string GetCaml() => $@"<{OperatorTypeString}>{FieldReference.GetCaml()}{OperatorTypeString}>";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/Internal/Values/AnyValue.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder.Internal.Values
2 | {
3 | internal class AnyValue : Value
4 | {
5 | private readonly object anyValue;
6 |
7 | public AnyValue(ValueType type, bool? includeTimeValue, object anyValue)
8 | : base(type, includeTimeValue)
9 | {
10 | this.anyValue = anyValue;
11 | }
12 |
13 | protected override string GetCamlValue()
14 | {
15 | return anyValue.ToString();
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/Internal/Values/MonthValue.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder.Internal.Values
2 | {
3 | internal class MonthValue : Value
4 | {
5 | public MonthValue(bool? includeTimeValue)
6 | : base(ValueType.DateTime, includeTimeValue)
7 | {
8 | }
9 |
10 | protected override string GetCamlValue()
11 | {
12 | return "";
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/Internal/Values/NowValue.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder.Internal.Values
2 | {
3 | internal class NowValue : Value
4 | {
5 | public NowValue(bool? includeTimeValue)
6 | : base(ValueType.DateTime, includeTimeValue)
7 | {
8 | }
9 |
10 | protected override string GetCamlValue()
11 | {
12 | return "";
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/Internal/Values/TodayValue.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder.Internal.Values
2 | {
3 | internal class TodayValue : Value
4 | {
5 | private readonly int? offset;
6 |
7 | public TodayValue(bool? includeTimeValue, int? offset)
8 | : base(ValueType.DateTime, includeTimeValue)
9 | {
10 | this.offset = offset;
11 | }
12 |
13 | public TodayValue(bool? includeTimeValue)
14 | : this(includeTimeValue, null)
15 | {
16 | }
17 |
18 | protected override string GetCamlValue()
19 | {
20 | return offset.HasValue
21 | ? $""
22 | : "";
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/Internal/Values/UserIdValue.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder.Internal.Values
2 | {
3 | internal class UserIdValue : Value
4 | {
5 | public UserIdValue()
6 | : base(ValueType.Integer)
7 | {
8 | }
9 |
10 | protected override string GetCamlValue()
11 | {
12 | return "";
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/LogicalJoinType.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder
2 | {
3 | ///
4 | /// Specifies logical join types.
5 | ///
6 | public enum LogicalJoinType
7 | {
8 | ///
9 | /// Indicates an Or logical join.
10 | ///
11 | Or,
12 |
13 | ///
14 | /// Indicates an And logical join.
15 | ///
16 | And
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/MembershipType.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder
2 | {
3 | ///
4 | /// Defines membership types used by Membership operator.
5 | ///
6 | ///
7 | public enum MembershipType
8 | {
9 | ///
10 | /// Indicates SPWeb.AllUsers membership.
11 | ///
12 | SpWebAllUsers,
13 |
14 | ///
15 | /// Indicates SPGroup membership.
16 | ///
17 | SpGroup,
18 |
19 | ///
20 | /// Indicates SPWebGroups membership.
21 | ///
22 | SpWebGroups,
23 |
24 | ///
25 | /// Indicates CurrentUserGroups membership.
26 | ///
27 | CurrentUserGroups,
28 |
29 | ///
30 | /// Indicates SPWebUsers membership.
31 | ///
32 | SpWebUsers
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/OrderByFieldOrder.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder
2 | {
3 | ///
4 | /// Specifies the order of query result.
5 | ///
6 | public enum OrderByFieldOrder
7 | {
8 | ///
9 | /// Defines ascending order.
10 | ///
11 | Ascending,
12 | ///
13 | /// Specifies descending order.
14 | ///
15 | Descending
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/Statement.cs:
--------------------------------------------------------------------------------
1 | namespace CamlBuilder
2 | {
3 | ///
4 | /// Defines a CAML statement. It can be a or a .
5 | ///
6 | public abstract class Statement
7 | {
8 | public abstract string GetCaml();
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Caml/credits.txt:
--------------------------------------------------------------------------------
1 | Code in this folder is a modified version from https://github.com/joaope/camlbuilder.
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Entities/AssetTransferredEntity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Entities
4 | {
5 | ///
6 | /// Model for asset transfer status for references
7 | ///
8 | [Serializable]
9 | public class AssetTransferredEntity
10 | {
11 | ///
12 | /// Source web part URL reference - for checking if transfer occurred before
13 | ///
14 | public string SourceAssetUrl { get; set; }
15 |
16 | ///
17 | /// Target web part URL reference - for checking if transfer occurred before
18 | ///
19 | public string TargetAssetFolderUrl { get; set; }
20 |
21 | ///
22 | /// Store the final URL for the asset that has been transferred
23 | ///
24 | public string TargetAssetTransferredUrl { get; set; }
25 |
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Entities/AudienceEntity.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Entities
4 | {
5 | ///
6 | /// Holds information about the defined audiences (used by modernization scanner)
7 | ///
8 | public class AudienceEntity
9 | {
10 | ///
11 | /// Default constructor
12 | ///
13 | public AudienceEntity()
14 | {
15 | this.GlobalAudiences = new List();
16 | this.SecurityGroups = new List();
17 | this.SharePointGroups = new List();
18 | }
19 |
20 | ///
21 | /// List of defined global audiences
22 | ///
23 | public List GlobalAudiences { get; set; }
24 | ///
25 | /// List of security group based audiences
26 | ///
27 | public List SecurityGroups { get; set; }
28 | ///
29 | /// List of SharePoint group based audiences
30 | ///
31 | public List SharePointGroups { get; set; }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Entities/ListItemPermission.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.SharePoint.Client;
2 | using System.Collections.Generic;
3 |
4 | namespace SharePointPnP.Modernization.Framework.Entities
5 | {
6 | ///
7 | /// Class used to temporarily hold list item level permissions that need to be re-applied
8 | ///
9 | public class ListItemPermission
10 | {
11 | ///
12 | /// Roles assigned to the list item
13 | ///
14 | public RoleAssignmentCollection RoleAssignments { get; set; }
15 |
16 | ///
17 | /// Resolved principals used in those roles, kept for performance reasons
18 | ///
19 | public Dictionary Principals { get; set; }
20 |
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Entities/ResolvedUser.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Entities
4 | {
5 | ///
6 | /// Class used to cache a user that was resolved via EnsureUser
7 | ///
8 | [Serializable]
9 | public class ResolvedUser
10 | {
11 | ///
12 | /// Loginname of the user
13 | ///
14 | public string LoginName { get; set; }
15 | ///
16 | /// Id of the user
17 | ///
18 | public int Id { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Entities/TermData.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Entities
4 | {
5 | [Serializable]
6 | public class TermData
7 | {
8 | ///
9 | /// Term Guid
10 | ///
11 | public Guid TermGuid { get; set; }
12 |
13 | ///
14 | /// Term Label
15 | ///
16 | public string TermLabel { get; set; }
17 |
18 | ///
19 | /// Term Path
20 | ///
21 | public string TermPath { get; set; }
22 |
23 | ///
24 | /// Term Set ID
25 | ///
26 | public Guid TermSetId { get; set; }
27 |
28 | ///
29 | /// Marks the term data validation against the term store
30 | ///
31 | public bool IsTermResolved { get; set; }
32 |
33 | ///
34 | /// Is the term a source term
35 | ///
36 | public bool IsSourceTerm { get; set; }
37 |
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Entities/TermMapping.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Entities
4 | {
5 | [Serializable]
6 | public class TermMapping
7 | {
8 | public string SourceTerm { get; set; }
9 | public string TargetTerm { get; set; }
10 |
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Entities/UrlMapping.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Entities
4 | {
5 | ///
6 | /// Url map entry
7 | ///
8 | [Serializable]
9 | public class UrlMapping
10 | {
11 | ///
12 | /// Url to be replaced
13 | ///
14 | public string SourceUrl { get; set; }
15 |
16 | ///
17 | /// Url replacement value
18 | ///
19 | public string TargetUrl { get; set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Entities/UserEntity.cs:
--------------------------------------------------------------------------------
1 | using Newtonsoft.Json;
2 | using System;
3 |
4 | namespace SharePointPnP.Modernization.Framework.Entities
5 | {
6 | ///
7 | /// Class to hold information about a given user
8 | ///
9 | [Serializable]
10 | public class UserEntity
11 | {
12 | ///
13 | /// Id of the user
14 | ///
15 | [JsonProperty(PropertyName = "id")]
16 | public string Id { get; set; }
17 |
18 | ///
19 | /// Upn of the user
20 | ///
21 | [JsonProperty(PropertyName = "upn")]
22 | public string Upn { get; set; }
23 |
24 | ///
25 | /// Name of the user
26 | ///
27 | [JsonProperty(PropertyName = "name")]
28 | public string Name { get; set; }
29 |
30 | ///
31 | /// Role of the user
32 | ///
33 | [JsonProperty(PropertyName = "role")]
34 | public string Role { get; set; }
35 |
36 | ///
37 | /// Loginname of the user
38 | ///
39 | [JsonIgnore]
40 | public string LoginName { get; set; }
41 |
42 | ///
43 | /// Is this a group?
44 | ///
45 | [JsonIgnore]
46 | public bool IsGroup { get; set; }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Entities/UserMappingEntity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Entities
4 | {
5 | ///
6 | /// Class to hold a mapping between a user in the source site and a user in the target site
7 | ///
8 | [Serializable]
9 | public class UserMappingEntity
10 | {
11 | ///
12 | /// Source user reference
13 | ///
14 | public string SourceUser { get; set; }
15 |
16 | ///
17 | /// Target user reference
18 | ///
19 | public string TargetUser { get; set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Extensions/AngleSharpExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace AngleSharp.Dom
4 | {
5 |
6 | ///
7 | /// Extension methods for AngleSharp
8 | ///
9 | public static partial class AngleSharpExtensions
10 | {
11 | ///
12 | /// Performs a partial match on a list of tokens (e.g. classes on an element)
13 | ///
14 | /// List of tokens to search in
15 | /// Partial token to match via an StartsWidth
16 | /// First matching token if found, null if no match
17 | public static string PartialMatch(this ITokenList tokenList, string filter)
18 | {
19 | // No tokens then bail out
20 | if (tokenList.Length == 0)
21 | {
22 | return null;
23 | }
24 |
25 | foreach(var token in tokenList)
26 | {
27 | if (token.StartsWith(filter, StringComparison.InvariantCultureIgnoreCase))
28 | {
29 | return token;
30 | }
31 | }
32 |
33 | return null;
34 | }
35 |
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Extensions/HttpWebRequestExtensions.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.SharePoint.Client;
2 | using SharePointPnP.Modernization.Framework.Utilities;
3 |
4 | namespace System.Net
5 | {
6 | ///
7 | /// HttpWebRequest extension methods
8 | ///
9 | public static class HttpWebRequestExtensions
10 | {
11 | ///
12 | /// Grabs authenticaiton data from the passed client context and attaches that to the http request
13 | ///
14 | /// http request to update
15 | /// ClientContext object to grab authentication data from
16 | public static void AddAuthenticationData(this HttpWebRequest httpWebRequest, ClientContext cc)
17 | {
18 | if (cc.Credentials != null)
19 | {
20 | // Copy credentials if set
21 | httpWebRequest.Credentials = cc.Credentials;
22 | }
23 | else
24 | {
25 | // If authentication happened via a cookie based approach (e.g. ADFS) then get the cookies that are currently linked to the context and reuse them
26 | httpWebRequest.CookieContainer = new CookieManager().GetCookies(cc);
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Functions/FunctionsBase.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.SharePoint.Client;
2 | using SharePointPnP.Modernization.Framework.Transform;
3 |
4 | namespace SharePointPnP.Modernization.Framework.Functions
5 | {
6 | ///
7 | /// Base class for all function libraries
8 | ///
9 | public abstract class FunctionsBase: BaseTransform
10 | {
11 | protected ClientContext clientContext;
12 |
13 | #region Construction
14 | ///
15 | /// Instantiates a function library class
16 | ///
17 | /// ClientContext object for the site holding the page being transformed
18 | public FunctionsBase(ClientContext clientContext)
19 | {
20 | this.clientContext = clientContext;
21 | }
22 | #endregion
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Functions/MediaWebpartConfigurationException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Functions
4 | {
5 | ///
6 | /// Exception class thrown when a SharePoint resource (e.g. file) is not available
7 | ///
8 | public class MediaWebpartConfigurationException: Exception
9 | {
10 | ///
11 | /// Throws a ResourceNotFoundException message
12 | ///
13 | /// Error message
14 | public MediaWebpartConfigurationException(string message) : base(message) { }
15 |
16 | ///
17 | /// Throws a ResourceNotFoundException message
18 | ///
19 | /// Error message
20 | /// Inner exception object
21 | public MediaWebpartConfigurationException(string message, Exception innerException) : base(message, innerException) { }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Functions/NotAvailableAtTargetException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Functions
4 | {
5 | ///
6 | /// Exception class thrown when a SharePoint object (e.g. list) is not available at the target site
7 | ///
8 | public class NotAvailableAtTargetException: Exception
9 | {
10 | ///
11 | /// Throws a NotAvailableAtTargetException message
12 | ///
13 | /// Error message
14 | public NotAvailableAtTargetException(string message): base(message) { }
15 |
16 | ///
17 | /// Throws a NotAvailableAtTargetException message
18 | ///
19 | /// Error message
20 | /// Inner exception object
21 | public NotAvailableAtTargetException(string message, Exception innerException) : base(message, innerException) { }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Functions/XmlEqualityResult.cs:
--------------------------------------------------------------------------------
1 | // Eli Algranti Copyright © 2013
2 | // Code taken from http://xmlspecificationcompare.codeplex.com/
3 | using System.Xml.Linq;
4 |
5 | namespace SharePointPnP.Modernization.Framework.Functions
6 | {
7 | ///
8 | /// The result of an equiality comparison with
9 | ///
10 | public class XmlEqualityResult
11 | {
12 | private const string DefaultError = "Can't find match for subtree.";
13 | private const string SuccessMessage = "Success";
14 | private string errorMessage;
15 |
16 | ///
17 | /// Gets whether the match was successful
18 | ///
19 | public bool Success
20 | {
21 | get { return FailObject == null; }
22 | }
23 |
24 | ///
25 | /// Gets or sets the object that failed the match
26 | ///
27 | public XObject FailObject { get; set; }
28 |
29 | ///
30 | /// Gets or sets a descriptive error message if the match failed.
31 | ///
32 | ///
33 | /// If set to null or not set the default Error Message is returned.
34 | ///
35 | public string ErrorMessage
36 | {
37 | get
38 | {
39 | return errorMessage ?? (Success ? SuccessMessage : DefaultError);
40 | }
41 |
42 | set
43 | {
44 | errorMessage = value;
45 | }
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/KQL/KQLElement.cs:
--------------------------------------------------------------------------------
1 | namespace SharePointPnP.Modernization.Framework.KQL
2 | {
3 | ///
4 | /// Element in KQL query
5 | ///
6 | public class KQLElement
7 | {
8 | ///
9 | /// Filter attribute name
10 | ///
11 | public string Filter { get; set; }
12 |
13 | ///
14 | /// Value of the filter
15 | ///
16 | public string Value { get; set; }
17 |
18 | ///
19 | /// Type of filter
20 | ///
21 | public KQLFilterType Type { get; set; }
22 |
23 | ///
24 | /// Filter operator
25 | ///
26 | public KQLPropertyOperator Operator { get; set; }
27 |
28 | ///
29 | /// Filter group
30 | ///
31 | public int Group { get; set; }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/KQL/KQLPropertyOperator.cs:
--------------------------------------------------------------------------------
1 | namespace SharePointPnP.Modernization.Framework.KQL
2 | {
3 | ///
4 | /// Operators on KQL property filters
5 | ///
6 | public enum KQLPropertyOperator
7 | {
8 | Matches = 0,
9 | EqualTo = 1,
10 | LesserThan = 2,
11 | GreaterThan = 3,
12 | LesserThanOrEqualTo = 4,
13 | GreaterThanOrEqualTo = 5,
14 | DoesNoEqual = 6,
15 | Restriction = 7,
16 | Undefined = 100
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/KQL/KQLPropertyType.cs:
--------------------------------------------------------------------------------
1 | namespace SharePointPnP.Modernization.Framework.KQL
2 | {
3 | ///
4 | /// KQL filter types
5 | ///
6 | public enum KQLFilterType
7 | {
8 | Text = 0,
9 | KeywordFilter = 1,
10 | PropertyFilter = 2,
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Pages/PageLayout.cs:
--------------------------------------------------------------------------------
1 | namespace SharePointPnP.Modernization.Framework.Pages
2 | {
3 | ///
4 | /// Possible layouts used by wiki or webpart pages
5 | ///
6 | public enum PageLayout
7 | {
8 | Wiki_OneColumn = 0,
9 | Wiki_TwoColumns = 1,
10 | Wiki_TwoColumnsWithSidebar = 2,
11 | Wiki_TwoColumnsWithHeader = 3,
12 | Wiki_TwoColumnsWithHeaderAndFooter = 4,
13 | Wiki_ThreeColumns = 5,
14 | Wiki_ThreeColumnsWithHeader = 6,
15 | Wiki_ThreeColumnsWithHeaderAndFooter = 7,
16 | Wiki_Custom = 8,
17 | WebPart_HeaderFooterThreeColumns = 20,
18 | WebPart_FullPageVertical = 21,
19 | WebPart_HeaderLeftColumnBody = 22,
20 | WebPart_HeaderRightColumnBody = 23,
21 | WebPart_HeaderFooter2Columns4Rows = 24,
22 | WebPart_HeaderFooter4ColumnsTopRow = 25,
23 | WebPart_LeftColumnHeaderFooterTopRow3Columns = 26,
24 | WebPart_RightColumnHeaderFooterTopRow3Columns = 27,
25 | WebPart_Custom = 28,
26 | WebPart_2010_TwoColumnsLeft = 29,
27 | PublishingPage_AutoDetect = 40,
28 | PublishingPage_AutoDetectWithVerticalColumn = 41
29 |
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("SharePointPnP.Modernization.Framework")]
9 | [assembly: AssemblyDescription("SharePoint modernization framework for SharePoint Online")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("SharePointPnP.Modernization.Framework")]
13 | [assembly: AssemblyCopyright("Copyright © Microsoft")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("2c80435c-340a-4e6b-b4e3-f13451abb6c9")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.2012.0")]
36 | [assembly: AssemblyFileVersion("1.0.2012.0")]
37 |
38 | [assembly: InternalsVisibleTo("SharePointPnP.Modernization.Framework.Tests")]
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Publishing/Layouts/PageLayoutFieldControlEntity.cs:
--------------------------------------------------------------------------------
1 | namespace SharePointPnP.Modernization.Framework.Publishing.Layouts
2 | {
3 | ///
4 | /// Class for holding data properties for field to web part mapping
5 | ///
6 | internal class PageLayoutWebPartFieldEntity
7 | {
8 | internal string TargetWebPart { get; set; }
9 | internal string FieldType { get; set; }
10 | internal string Name { get; set; }
11 | internal string Type { get; set; }
12 | internal string Functions { get; set; }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Publishing/Layouts/PageLayoutHeaderFieldEntity.cs:
--------------------------------------------------------------------------------
1 | namespace SharePointPnP.Modernization.Framework.Publishing.Layouts
2 | {
3 | ///
4 | /// Class for holding data properties for the fields that will be used in the page header
5 | ///
6 | internal class PageLayoutHeaderFieldEntity
7 | {
8 | internal string Type { get; set; }
9 | internal string Name { get; set; }
10 | internal string HeaderProperty { get; set; }
11 | internal string Functions { get; set; }
12 | internal string Alignment { get; set; }
13 | internal bool ShowPublishedDate { get; set; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Publishing/Layouts/PageLayoutMetadataEntity.cs:
--------------------------------------------------------------------------------
1 | namespace SharePointPnP.Modernization.Framework.Publishing.Layouts
2 | {
3 | ///
4 | /// Class that will be used to hold the fields that will be used the field to metadata mapping
5 | ///
6 | internal class PageLayoutMetadataEntity
7 | {
8 | internal string FieldName { get; set; }
9 | internal string TargetFieldName { get; set; }
10 | internal string Functions { get; set; }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Samples/urlmapping_sample.csv:
--------------------------------------------------------------------------------
1 | https://aka.ms/sppnp-modernize,https://aka.ms/sppnp-pagetransformation
2 | /sites/modernizationtestportal,/sites/blabla
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Telemetry/ILogObserver.cs:
--------------------------------------------------------------------------------
1 | namespace SharePointPnP.Modernization.Framework.Telemetry
2 | {
3 | ///
4 | /// Interface that needs to be implemented by any logger
5 | ///
6 | public interface ILogObserver
7 | {
8 | ///
9 | /// Log Information
10 | ///
11 | /// LogEntry object
12 | void Info(LogEntry entry);
13 | ///
14 | /// Warning Log
15 | ///
16 | /// LogEntry object
17 | void Warning(LogEntry entry);
18 | ///
19 | /// Error Log
20 | ///
21 | /// LogEntry object
22 | void Error(LogEntry entry);
23 | ///
24 | /// Debug Log
25 | ///
26 | /// LogEntry object
27 | void Debug(LogEntry entry);
28 |
29 | ///
30 | /// Pushes all output to destination and clears the cached log information
31 | ///
32 | void Flush();
33 |
34 | ///
35 | /// Pushes all output to destination and clears the cached log information if needed
36 | ///
37 | void Flush(bool clearLogData);
38 |
39 | ///
40 | /// Sets the id of the page that's being transformed
41 | ///
42 | /// id of the page
43 | void SetPageId(string pageId);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Telemetry/LogLevel.cs:
--------------------------------------------------------------------------------
1 | namespace SharePointPnP.Modernization.Framework.Telemetry
2 | {
3 | ///
4 | /// Availabe logging levels
5 | ///
6 | public enum LogLevel
7 | {
8 | ///
9 | /// Debug Log Level
10 | ///
11 | Debug,
12 | ///
13 | /// Error Log Level
14 | ///
15 | Error,
16 | ///
17 | /// Warning Log Level
18 | ///
19 | Warning,
20 | ///
21 | /// Information Log Level
22 | ///
23 | Information
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Transform/IContentTransformator.cs:
--------------------------------------------------------------------------------
1 | using SharePointPnP.Modernization.Framework.Entities;
2 | using System.Collections.Generic;
3 |
4 | namespace SharePointPnP.Modernization.Framework.Transform
5 | {
6 | ///
7 | /// Interface implemented by all content transformators
8 | ///
9 | public interface IContentTransformator
10 | {
11 |
12 | ///
13 | /// Transforms the passed web parts into the loaded client side page
14 | ///
15 | /// List of web parts that need to be transformed
16 | void Transform(List webParts);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Transform/IHtmlTransformator.cs:
--------------------------------------------------------------------------------
1 | namespace SharePointPnP.Modernization.Framework.Transform
2 | {
3 | ///
4 | /// Interface implemented by all html transformators
5 | ///
6 | public interface IHtmlTransformator
7 | {
8 |
9 | ///
10 | /// Transforms the passed html to be usable by the client side text part
11 | ///
12 | /// Html to be transformed
13 | /// Insert placeholders for images and iframe tags
14 | /// Html that can be used and edited via the client side text part
15 | string Transform(string text, bool usePlaceHolder);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Transform/ILayoutTransformator.cs:
--------------------------------------------------------------------------------
1 | using SharePointPnP.Modernization.Framework.Entities;
2 | using System;
3 | using System.Collections.Generic;
4 |
5 | namespace SharePointPnP.Modernization.Framework.Transform
6 | {
7 | ///
8 | /// Interface implemented by all layout transformators
9 | ///
10 | public interface ILayoutTransformator
11 | {
12 | ///
13 | /// Transforms a classic wiki/webpart page layout into a modern client side page layout
14 | ///
15 | /// Information about the analyed page
16 | void Transform(Tuple> pageData);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Transform/ModernizationCenterInformation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePointPnP.Modernization.Framework.Transform
4 | {
5 | ///
6 | /// This class defines the page transformation configuration for when there's a ModernizationCenter hooked up
7 | ///
8 | public class ModernizationCenterInformation
9 | {
10 | ///
11 | /// Url to the customer's modernization center site
12 | ///
13 | public Uri ModernizationCenterUri { get; set; }
14 |
15 | ///
16 | /// Add a page accept banner solution on the generated pages
17 | ///
18 | public bool AddPageAcceptBanner { get; set; }
19 |
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Transform/SPVersion.cs:
--------------------------------------------------------------------------------
1 | namespace SharePointPnP.Modernization.Framework.Transform
2 | {
3 | ///
4 | /// Enum listing the SharePoint versions as used by the transformation engine
5 | ///
6 | public enum SPVersion
7 | {
8 | SPO = 0,
9 | SP2019 = 1,
10 | SP2016 = 2,
11 | SP2016Legacy= 3,
12 | SP2013 = 4,
13 | SP2013Legacy = 5,
14 | SP2010 = 6,
15 | Unknown = 100
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/webpartmapping.xsc:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/webpartmapping.xss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/xsd.txt:
--------------------------------------------------------------------------------
1 | xsd.exe webpartmapping.xsd /c /n:SharePointPnP.Modernization.Framework
2 | xsd.exe pagelayoutmapping.xsd /c /n:SharePointPnP.Modernization.Framework.Publishing
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Analyzers/IBaseAnalyzer.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.SharePoint.Client;
2 | using System;
3 |
4 | namespace SharePoint.Modernization.Scanner.Core.Analyzers
5 | {
6 | ///
7 | /// Interface that all analyzers need to implement
8 | ///
9 | public interface IBaseAnalyzer
10 | {
11 |
12 | ///
13 | /// Analyzer run
14 | ///
15 | /// ClientContext of the web to be analyzed
16 | /// Duration of the analysis
17 | TimeSpan Analyze(ClientContext cc);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/LogEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePointPnP.Modernization.Scanner.Core
4 | {
5 | public enum LogSeverity
6 | {
7 | Information = 0,
8 | Warning = 1,
9 | Error = 2
10 | }
11 |
12 | public class LogEventArgs: EventArgs
13 | {
14 | public string Message { get; set; }
15 | public LogSeverity Severity { get; set; }
16 | public DateTime TriggeredAt { get; set; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("SharePointPnP.Modernization.Scanner.Core")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("SharePointPnP.Modernization.Scanner.Core")]
13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2020")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("71316f85-a108-47c4-a115-c16c5b79e46c")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("2.19.0.0")]
36 | [assembly: AssemblyFileVersion("2.19.0.0")]
37 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/Readme.txt:
--------------------------------------------------------------------------------
1 | How to correctly add data to the Excel template
2 |
3 | 1. Go to empty sheet
4 | 2. Data -> From Text/CSV -> Import your CSV file
5 | 3. Name sheet (e.g. PubPages)
6 | 4. Data -> Queries and Connections -> Delete the query that was added due to CSV import
7 | 5. Select created table -> Table Design -> Convert to Range to remove the created table 'name'
8 | 5. Formulas -> Name Manager -> Create 'dynamic' range like shown here: PubPagesData=OFFSET(PubPages!$A$1;0;0;COUNTA(PubPages!$A:$A);COUNTA(PubPages!$1:$1))
9 | 6. Data -> Get Data -> From Table/Range -> define range as the dynamic name (e.g PubPagesData)
10 | 7. Close Power Query Editor that was opened -> Keep
11 | 8. Delete the added sheet (as it's a duplicate)
12 | 9. Data -> Queries and Connections -> Rename table if needed + "Load to...", check "Add this data to the data model" -> OK
13 | 10. Data -> Manage Data Model -> Add relationships + further data configuration
14 | 11. Data -> Manage Data Model -> Insert PivotCharts and/or PivotTables
15 | 12. Hide the "original" sheet with imported data
16 | 13. Data -> Queries and Connections -> your query -> ... --> Properties --> toggle "Refresh data when opening file" and "Enable fast data load"
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/ReportStream.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 |
3 | namespace SharePointPnP.Modernization.Scanner.Core.Reports
4 | {
5 | public class ReportStream
6 | {
7 | public string Source { get; set; }
8 | public string Name { get; set; }
9 | public Stream DataStream { get; set; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/ScanSummary.cs:
--------------------------------------------------------------------------------
1 | namespace SharePoint.Modernization.Scanner.Core.Reports
2 | {
3 | public class ScanSummary
4 | {
5 | public int? SiteCollections { get; set; }
6 | public int? Webs { get; set; }
7 | public int? Lists { get; set; }
8 | public string Duration { get; set; }
9 | public string Version { get; set; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/blogmaster.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/blogmaster.xlsx
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/groupifymaster.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/groupifymaster.xlsx
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/infopathmaster.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/infopathmaster.xlsx
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/listmaster.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/listmaster.xlsx
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/pagemaster.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/pagemaster.xlsx
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/publishingmaster.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/publishingmaster.xlsx
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/workflowmaster.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Reports/workflowmaster.xlsx
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Results/BlogPageScanResult.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePoint.Modernization.Scanner.Core.Results
4 | {
5 | ///
6 | /// Stores information about a found blog page
7 | ///
8 | public class BlogPageScanResult: Scan
9 | {
10 |
11 | public BlogPageScanResult()
12 | {
13 | this.BlogType = BlogType.Classic;
14 | }
15 |
16 | ///
17 | /// Type of blog page
18 | ///
19 | public BlogType BlogType { get; set; }
20 |
21 | ///
22 | /// Web relative Url
23 | ///
24 | public string WebRelativeUrl { get; set; }
25 |
26 | ///
27 | /// page relative Url
28 | ///
29 | public string PageRelativeUrl { get; set; }
30 |
31 | ///
32 | /// Title of the scanned blog page
33 | ///
34 | public string PageTitle { get; set; }
35 |
36 | // Page modification information
37 | public DateTime ModifiedAt { get; set; }
38 | public string ModifiedBy { get; set; }
39 |
40 | ///
41 | /// Blog publishing date
42 | ///
43 | public DateTime PublishedDate { get; set; }
44 |
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Results/BlogWebScanResult.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SharePoint.Modernization.Scanner.Core.Results
4 | {
5 |
6 | ///
7 | /// Blog page types
8 | ///
9 | public enum BlogType
10 | {
11 | Classic,
12 | Delve
13 | }
14 |
15 | ///
16 | /// Stores information about a found blog site
17 | ///
18 | public class BlogWebScanResult: Scan
19 | {
20 | public BlogWebScanResult()
21 | {
22 | this.LastRecentBlogPageChange = DateTime.MinValue;
23 | this.LastRecentBlogPagePublish = DateTime.MinValue;
24 | this.BlogType = BlogType.Classic;
25 | }
26 |
27 | ///
28 | /// Type of blog page
29 | ///
30 | public BlogType BlogType { get; set; }
31 |
32 | ///
33 | /// Web relative Url
34 | ///
35 | public string WebRelativeUrl { get; set; }
36 |
37 | ///
38 | /// Web template (e.g. STS#0)
39 | ///
40 | public string WebTemplate { get; set; }
41 |
42 | ///
43 | /// Language of the used blog site
44 | ///
45 | public uint Language { get; set; }
46 |
47 | ///
48 | /// Number of blog pages in this site
49 | ///
50 | public int BlogPageCount { get; set; }
51 |
52 | ///
53 | /// Most recent blog change date
54 | ///
55 | public DateTime LastRecentBlogPageChange { get; set; }
56 |
57 | ///
58 | /// Most recent blog publish date
59 | ///
60 | public DateTime LastRecentBlogPagePublish { get; set; }
61 |
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Results/CustomizedFormsScanResult.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.SharePoint.Client;
2 | using System;
3 |
4 | namespace SharePoint.Modernization.Scanner.Core.Results
5 | {
6 | public class CustomizedFormsScanResult : Scan
7 | {
8 | ///
9 | /// Type of form page
10 | ///
11 | public PageType FormType { get; set; }
12 |
13 | ///
14 | /// Id of the form page
15 | ///
16 | public Guid PageId { get; set; }
17 |
18 | ///
19 | /// Url of the form page
20 | ///
21 | public string Url { get; set; }
22 |
23 | ///
24 | /// Id of the web part on the form page
25 | ///
26 | public Guid WebpartId { get; set; }
27 |
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Results/InfoPathScanResult.cs:
--------------------------------------------------------------------------------
1 | using OfficeDevPnP.Core.Entities;
2 | using System;
3 | using System.Collections.Generic;
4 |
5 | namespace SharePoint.Modernization.Scanner.Core.Results
6 | {
7 | public class InfoPathScanResult: Scan
8 | {
9 | public string ListUrl { get; set; }
10 |
11 | public string ListTitle { get; set; }
12 |
13 | public Guid ListId { get; set; }
14 |
15 | ///
16 | /// Indicates how InfoPath is used here: form library or customization of the list form pages
17 | ///
18 | public string InfoPathUsage { get; set; }
19 |
20 | public string InfoPathTemplate { get; set; }
21 |
22 | public bool Enabled { get; set; }
23 |
24 | public int ItemCount { get; set; }
25 |
26 | public DateTime LastItemUserModifiedDate { get; set; }
27 |
28 | ///
29 | /// Site administrators
30 | ///
31 | public List Admins { get; set; }
32 | ///
33 | /// Site owners
34 | ///
35 | public List Owners { get; set; }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Results/PageScanResult.cs:
--------------------------------------------------------------------------------
1 | using SharePointPnP.Modernization.Framework.Entities;
2 | using System;
3 | using System.Collections.Generic;
4 |
5 | namespace SharePoint.Modernization.Scanner.Core.Results
6 | {
7 | ///
8 | /// Stores the result of scanned page
9 | ///
10 | public class PageScanResult: Scan
11 | {
12 | public string PageUrl { get; set; }
13 | public string PageType { get; set; }
14 | public string Library { get; set; }
15 | public string Layout { get; set; }
16 | public bool HomePage { get; set; }
17 | public bool UncustomizedHomePage { get; set; }
18 |
19 | // Page modification information
20 | public DateTime ModifiedAt { get; set; }
21 | public String ModifiedBy { get; set; }
22 | public int ViewsRecent { get; set; }
23 | public int ViewsRecentUniqueUsers { get; set; }
24 | public int ViewsLifeTime { get; set; }
25 | public int ViewsLifeTimeUniqueUsers { get; set; }
26 |
27 | // Page web part information
28 | public List WebParts { get; set; }
29 |
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Results/UserCustomActionResult.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.SharePoint.Client;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace SharePoint.Modernization.Scanner.Core.Results
9 | {
10 | public class UserCustomActionResult: Scan
11 | {
12 | public string Title { get; set; }
13 |
14 | public string Name { get; set; }
15 |
16 | public string Location { get; set; }
17 |
18 | public UserCustomActionRegistrationType RegistrationType { get; set; }
19 |
20 | public string RegistrationId { get; set; }
21 |
22 | public string CommandAction { get; set; }
23 |
24 | public string ScriptBlock { get; set; }
25 |
26 | public string ScriptSrc { get; set; }
27 |
28 | public string Problem { get; set; }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Results/XsltViewWebPartCompatability.cs:
--------------------------------------------------------------------------------
1 | namespace SharePoint.Modernization.Scanner.Core.Results
2 | {
3 | public class XsltViewWebPartCompatibility
4 | {
5 | public bool BlockedByJSLink { get; set; }
6 | public string JSLink { get; set; }
7 | public bool BlockedByXslLink { get; set; }
8 | public string XslLink { get; set; }
9 | public bool BlockedByXsl { get; set; }
10 | public bool BlockedByJSLinkField { get; set; }
11 | public string JSLinkFields { get; set; }
12 | public bool BlockedByBusinessDataField { get; set; }
13 | public string BusinessDataFields { get; set; }
14 | public bool BlockedByTaskOutcomeField { get; set; }
15 | public string TaskOutcomeFields { get; set; }
16 | public bool BlockedByPublishingField { get; set; }
17 | public string PublishingFields { get; set; }
18 | public bool BlockedByGeoLocationField { get; set; }
19 | public string GeoLocationFields { get; set; }
20 | public bool BlockedByListCustomAction { get; set; }
21 | public string ListCustomActions { get; set; }
22 | public bool BlockedByManagedMetadataNavFeature { get; set; }
23 | public bool BlockedByViewType { get; set; }
24 | public string ViewType { get; set; }
25 | public bool BlockedByListBaseTemplate { get; set; }
26 | public int ListBaseTemplate { get; set; }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Scan.cs:
--------------------------------------------------------------------------------
1 | namespace SharePoint.Modernization.Scanner.Core
2 | {
3 | ///
4 | /// Base class for scan results
5 | ///
6 | public class Scan
7 | {
8 | public string SiteURL { get; set; }
9 | public string SiteColUrl { get; set; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/ScanError.cs:
--------------------------------------------------------------------------------
1 | namespace SharePoint.Modernization.Scanner.Core
2 | {
3 | ///
4 | /// Generic class to hold scan errors
5 | ///
6 | public class ScanError: Scan
7 | {
8 | public string Error { get; set; }
9 | public string Field1 { get; set; }
10 | public string Field2 { get; set; }
11 | public string Field3 { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Utilities/WebpartMappingLoader.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 |
3 | namespace SharePoint.Modernization.Scanner.Core.Utilities
4 | {
5 | ///
6 | /// Class to support the embedded webpartmapping.xml file
7 | ///
8 | public static class WebpartMappingLoader
9 | {
10 | ///
11 | /// Load the webpartmapping file from the embedded resources
12 | ///
13 | /// Fully qualified path to file
14 | /// String contents
15 | public static string LoadFile(string fileName)
16 | {
17 | var fileContent = "";
18 | using (Stream stream = typeof(WebpartMappingLoader).Assembly.GetManifestResourceStream(fileName))
19 | {
20 | using (StreamReader reader = new StreamReader(stream))
21 | {
22 | fileContent = reader.ReadToEnd();
23 | }
24 | }
25 |
26 | return fileContent;
27 | }
28 |
29 | ///
30 | /// Transforms a string into a stream
31 | ///
32 | /// String to transform
33 | /// Stream
34 | public static Stream GenerateStreamFromString(string s)
35 | {
36 | var stream = new MemoryStream();
37 | var writer = new StreamWriter(stream);
38 | writer.Write(s);
39 | writer.Flush();
40 | stream.Position = 0;
41 | return stream;
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Workflow/WorkFlowActions.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace SharePoint.Modernization.Scanner.Core.Workflow
4 | {
5 |
6 | ///
7 | /// Workflow types
8 | ///
9 | public enum WorkflowTypes
10 | {
11 | SP2010,
12 | SP2013
13 | }
14 |
15 | ///
16 | /// Workflow action class
17 | ///
18 | public class WorkflowAction
19 | {
20 | public string ActionName { get; set; }
21 | public string ActionNameShort { get; set; }
22 | }
23 |
24 | ///
25 | /// Class holding the default workflow actions for 2010/2013 SharePoint workflow
26 | ///
27 | public class WorkflowActions
28 | {
29 | public WorkflowActions()
30 | {
31 | SP2010DefaultActions = new List();
32 | SP2013DefaultActions = new List();
33 | }
34 |
35 | public List SP2010DefaultActions { get; set; }
36 | public List SP2013DefaultActions { get; set; }
37 |
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Workflow/WorkflowActionAnalysis.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace SharePoint.Modernization.Scanner.Core.Workflow
4 | {
5 | public class WorkflowActionAnalysis
6 | {
7 |
8 | public WorkflowActionAnalysis()
9 | {
10 | this.WorkflowActions = new List();
11 | this.UnsupportedActions = new List();
12 | }
13 |
14 | public List WorkflowActions { get; set; }
15 | public int ActionCount { get; set; }
16 | public List UnsupportedActions { get; set; }
17 | public int UnsupportedAccountCount { get; set; }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Workflow/WorkflowTriggerAnalysis.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace SharePoint.Modernization.Scanner.Core.Workflow
8 | {
9 | public class WorkflowTriggerAnalysis
10 | {
11 | public WorkflowTriggerAnalysis()
12 | {
13 | this.WorkflowTriggers = new List();
14 | this.UnSupportedTriggers = new List();
15 | }
16 |
17 | public List WorkflowTriggers { get; set; }
18 | public List UnSupportedTriggers { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner.Core/Workflow/xsd.txt:
--------------------------------------------------------------------------------
1 | xsd.exe sp2010wfmodel.xsd /c /n:SharePoint.Modernization.Scanner.Core.Workflow.SP2010
2 | xsd.exe sp2013wfmodel.xsd /c /n:SharePoint.Modernization.Scanner.Core.Workflow.SP2013
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Scanner/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("SharePoint.Modernization.Scanner")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("SharePoint.Modernization.Scanner")]
12 | [assembly: AssemblyCopyright("Copyright © Microsoft 2020")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("74e4621e-6ed0-4138-80c4-0adf70dfc202")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Build and Revision Numbers
32 | // by using the '*' as shown below:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("2.19.0.0")]
35 | [assembly: AssemblyFileVersion("2.19.0.0")]
36 |
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/binaries/OfficeDevPnP.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/binaries/OfficeDevPnP.Core.dll
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/binaries/lastrelease-signed/OfficeDevPnP.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/binaries/lastrelease-signed/OfficeDevPnP.Core.dll
--------------------------------------------------------------------------------
/Tools/SharePoint.Modernization/binaries/lastrelease-unsigned/OfficeDevPnP.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pnp/modernization/7591e0fc98f631ef9730b8c53238ee5fcf074e98/Tools/SharePoint.Modernization/binaries/lastrelease-unsigned/OfficeDevPnP.Core.dll
--------------------------------------------------------------------------------