protected virtual void FillWebWithTheTestwebPartSuite <TWebpartType>(WebModelNode currentWeb) where TWebpartType : WebPartDefinitionBase, new() { var initialDef = ModelGeneratorService.GetRandomDefinition(typeof(TWebpartType)) as TWebpartType; var wikiWebPartDef = initialDef.Clone <TWebpartType>(); var webpartPageWebPartDef = initialDef.Clone <TWebpartType>(); var publishingPageWebPartDef = initialDef.Clone <TWebpartType>(); // Some web part provision on wiki page give empty markup #693 // https://github.com/SubPointSolutions/spmeta2/issues/693 var webpartPageWebPartAddToPageContentDef1 = initialDef.Clone <TWebpartType>(); webpartPageWebPartAddToPageContentDef1.Title = Rnd.String(); webpartPageWebPartAddToPageContentDef1.Id = "g_" + Guid.NewGuid().ToString("D").Replace('-', '_'); webpartPageWebPartAddToPageContentDef1.ZoneId = "wpz"; webpartPageWebPartAddToPageContentDef1.AddToPageContent = true; var webpartPageWebPartAddToPageContentDef2 = initialDef.Clone <TWebpartType>(); webpartPageWebPartAddToPageContentDef2.Title = Rnd.String(); webpartPageWebPartAddToPageContentDef2.Id = "g_" + Guid.NewGuid().ToString("D").Replace('-', '_'); webpartPageWebPartAddToPageContentDef2.ZoneId = "wpz"; webpartPageWebPartAddToPageContentDef2.AddToPageContent = true; var listWebPartDef = initialDef.Clone <TWebpartType>(); var docWebPartDef = initialDef.Clone <TWebpartType>(); // ensure for the client web part currentWeb.AddRandomApp(); currentWeb /// for the Pages lib & pubnlishing pages .AddWebFeature(BuiltInWebFeatures.SharePointServerPublishing.Inherit(def => { def.Enable = true; def.ForceActivate = true; })) .AddHostList(BuiltInListDefinitions.SitePages, list => { var webpartPageName = string.Empty; var wikiPageName = string.Empty; var wikiPageNameAddToPageContent = string.Empty; if (UseWikiPages) { list // 1 - wiki pages .AddRandomWikiPage(page => { wikiPageName = (page.Value as WikiPageDefinition).FileName; page.AddDefinitionNode(wikiWebPartDef); }); ValidateWebPartPresenceForPage(list, wikiPageName, wikiWebPartDef); } if (UseWebPartPages) { list // 2- web part pages .AddRandomWebPartPage(page => { webpartPageName = (page.Value as WebPartPageDefinition).FileName; page.AddDefinitionNode(webpartPageWebPartDef); }); ValidateWebPartPresenceForPage(list, webpartPageName, webpartPageWebPartDef); } if (UseWikiPages) { list /// 3- adding to the web part page as .AddToPageContent .AddRandomWikiPage(page => { page.RegExcludeFromValidation(); wikiPageNameAddToPageContent = (page.Value as WikiPageDefinition).FileName; page.AddDefinitionNode(webpartPageWebPartAddToPageContentDef1); page.AddDefinitionNode(webpartPageWebPartAddToPageContentDef2); }); ValidateWebPartPresenceForPage(list, wikiPageNameAddToPageContent, webpartPageWebPartAddToPageContentDef1); ValidateWebPartPresenceForPage(list, wikiPageNameAddToPageContent, webpartPageWebPartAddToPageContentDef2); } }); // 3 - publishing pages currentWeb.AddHostList(BuiltInListDefinitions.Pages, list => { var publishingPageName = string.Empty; if (UsePublishingPages) { list .AddRandomPublishingPage(page => { (page.Value as PublishingPageDefinition).PageLayoutFileName = BuiltInPublishingPageLayoutNames.BlankWebPartPage; publishingPageName = (page.Value as PublishingPageDefinition).FileName; page.AddDefinitionNode(publishingPageWebPartDef); }); ValidateWebPartPresenceForPage(list, publishingPageName, publishingPageWebPartDef); } }); if (UseListPages) { // 4 - list related routines - OOTB views, custom views & forms currentWeb.AddRandomList(list => { // OOTB view list.AddHostListView(BuiltInListViewDefinitions.Lists.AllItems, listView => { listView.AddDefinitionNode(listWebPartDef.Inherit()); }); if (ShoudValidatePresenceOnListViews(initialDef)) { ValidateWebPartPresenceForPage(list, BuiltInListViewDefinitions.Lists.AllItems.Url, listWebPartDef); } // custom view var customView = ModelGeneratorService.GetRandomDefinition <ListViewDefinition>(def => { def.Url = Rnd.AspxFileName(); }); list.AddListView(customView, listView => { listView.AddDefinitionNode(listWebPartDef.Inherit()); }); if (ShoudValidatePresenceOnListViews(initialDef)) { ValidateWebPartPresenceForPage(list, customView.Url, listWebPartDef); } // OOTB forms, new - edit - view list.AddHostListView(BuiltInListViewDefinitions.Lists.NewForm, listView => { listView.AddDefinitionNode(listWebPartDef.Inherit()); }); ValidateWebPartPresenceForPage(list, BuiltInListViewDefinitions.Lists.NewForm.Url, listWebPartDef); list.AddHostListView(BuiltInListViewDefinitions.Lists.EditForm, listView => { listView.AddDefinitionNode(listWebPartDef.Inherit()); }); ValidateWebPartPresenceForPage(list, BuiltInListViewDefinitions.Lists.EditForm.Url, listWebPartDef); list.AddHostListView(BuiltInListViewDefinitions.Lists.DispForm, listView => { listView.AddDefinitionNode(listWebPartDef.Inherit()); }); ValidateWebPartPresenceForPage(list, BuiltInListViewDefinitions.Lists.DispForm.Url, listWebPartDef); }); } if (UseLibraryPages) { // 5 - OOTB list view form on the library currentWeb.AddRandomDocumentLibrary(list => { // OOTB view list.AddHostListView(BuiltInListViewDefinitions.Libraries.AllItems, listView => { listView.AddDefinitionNode(docWebPartDef.Inherit()); }); if (ShoudValidatePresenceOnLibraryViews(initialDef)) { ValidateWebPartPresenceForPage(list, "Forms/" + BuiltInListViewDefinitions.Libraries.AllItems.Url, docWebPartDef); } // custom view var customView = ModelGeneratorService.GetRandomDefinition <ListViewDefinition>(def => { def.Url = Rnd.AspxFileName(); }); list.AddListView(customView, listView => { listView.AddDefinitionNode(docWebPartDef.Inherit()); }); if (ShoudValidatePresenceOnLibraryViews(initialDef)) { ValidateWebPartPresenceForPage(list, "Forms/" + customView.Url, docWebPartDef); } // OOTB new - edit - view forms // upload, NOPE! //list.AddHostListView(BuiltInListViewDefinitions.Libraries.Upload, listView => //{ // listView.AddDefinitionNode(docWebPartDef.Inherit()); //}); //ValidateWebPartPresenceForPage(list, "Forms/" + BuiltInListViewDefinitions.Libraries.Upload.Url, docWebPartDef); list.AddHostListView(BuiltInListViewDefinitions.Libraries.EditForm, listView => { listView.AddDefinitionNode(docWebPartDef.Inherit()); }); ValidateWebPartPresenceForPage(list, "Forms/" + BuiltInListViewDefinitions.Libraries.EditForm.Url, docWebPartDef); list.AddHostListView(BuiltInListViewDefinitions.Libraries.DispForm, listView => { listView.AddDefinitionNode(docWebPartDef.Inherit()); }); ValidateWebPartPresenceForPage(list, "Forms/" + BuiltInListViewDefinitions.Libraries.DispForm.Url, docWebPartDef); }); } ; // all web parts chrom currentWeb.WithNodesOfType <WebPartDefinitionBase>(node => { var wp = node.Value as WebPartDefinitionBase; wp.ChromeType = BuiltInPartChromeType.TitleAndBorder; wp.ChromeState = BuiltInPartChromeState.Normal; }); }
private static void setupWeb(WebModelNode web, bool AddNintex = false) { web.AddNintexWorkflowO365(webWorkflow, workflowModel => { #region Events workflowModel.OnProvisioning <Object> (spMetaCtx => { Console.WriteLine("About to provision the workflow on the web"); }); workflowModel.OnProvisioned <NintexO365HandlerOnProvisionedEvent> (spMetaCtx => { Console.WriteLine("Provisoined the workflow for {0}", ((NintexWebWorkflowO365Definition)spMetaCtx.ObjectDefinition).Name); var result = spMetaCtx.Object; if (result.saveResponse != null) { Console.WriteLine("The result of save is {0}", result.saveResponse.Content.ReadAsStringAsync().Result); } if (result.puiblishResponse != null) { Console.WriteLine("The result of publish is {0}", result.puiblishResponse.Content.ReadAsStringAsync().Result); } if (result.assignedUseForProductionValue != null) { Console.WriteLine("The result of assigned use is {0}", result.assignedUseForProductionValue.Content.ReadAsStringAsync().Result); } }); #endregion }); web.AddList(TestList, list => { list.AddContentTypeLink(BuiltInContentTypeId.Issue); // this refers to SPMeta2.NintexExt.Core.Syntax.Default; if (AddNintex) { list.AddNintexFormO365(form, formmodel => { #region Events formmodel.OnProvisioning <Object> (spMetaCtx => { Console.WriteLine("About to provision the form for {0}", ((NintexFormO365Definition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId); }); formmodel.OnProvisioned <NintexO365HandlerOnProvisionedEvent> (spMetaCtx => { Console.WriteLine("Provisoined the form for {0}", ((NintexFormO365Definition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId); var result = spMetaCtx.Object; if (result.saveResponse != null) { Console.WriteLine("The result of save is {0}", result.saveResponse.Content.ReadAsStringAsync().Result); } if (result.puiblishResponse != null) { Console.WriteLine("The result of publish is {0}", result.puiblishResponse.Content.ReadAsStringAsync().Result); } if (result.assignedUseForProductionValue != null) { Console.WriteLine("The result of assigned use is {0}", result.assignedUseForProductionValue.Content.ReadAsStringAsync().Result); } }); #endregion }); // if you do not use the syntax default, you can use the line below //list.AddDefinitionNode(form); list.AddNintexWorkflowO365(listWorkflow, listWorkflow => { #region Events listWorkflow.OnProvisioning <Object> (spMetaCtx => { Console.WriteLine("About to provision the list workflow"); }); listWorkflow.OnProvisioned <Object> (spMetaCtx => { Console.WriteLine("Provisoined the list workflow"); }); //TODO: //listWorkflow.OnProvisioned<NintexFormO365HandlerOnProvisionedEvent> // (spMetaCtx => // { // Console.WriteLine("Provisoined the workflow m for {0}", ((NintexFormO365Definition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId); // var result = spMetaCtx.Object; // if (result.saveResponse != null) // { // Console.WriteLine("The result of save is {0}", result.saveResponse.Content.ReadAsStringAsync().Result); // } // if (result.puiblishResponse != null) // { // Console.WriteLine("The result of publish is {0}", result.puiblishResponse.Content.ReadAsStringAsync().Result); // } // if (result.assignedUseForProductionValue != null) // { // Console.WriteLine("The result of assigned use is {0}", result.assignedUseForProductionValue.Content.ReadAsStringAsync().Result); // } // }); #endregion }); } }); // same here, same list, testing that it works when the list is already there web.AddHostList(TestList, list => { if (AddNintex) { // this refers to SPMeta2.NintexExt.Core.Syntax.Default; list.AddNintexFormO365(form, formmodel => { #region Events formmodel.OnProvisioning <Object> (spMetaCtx => { Console.WriteLine("About to provision the form for {0}", ((NintexFormO365Definition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId); }); formmodel.OnProvisioned <NintexO365HandlerOnProvisionedEvent> (spMetaCtx => { Console.WriteLine("Provisoined the form for {0}", ((NintexFormO365Definition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId); var result = spMetaCtx.Object; if (result.saveResponse != null) { Console.WriteLine("The result of save is {0}", result.saveResponse.Content.ReadAsStringAsync().Result); } if (result.puiblishResponse != null) { Console.WriteLine("The result of publish is {0}", result.puiblishResponse.Content.ReadAsStringAsync().Result); } if (result.assignedUseForProductionValue != null) { Console.WriteLine("The result of assigned use is {0}", result.assignedUseForProductionValue.Content.ReadAsStringAsync().Result); } }); #endregion }); // if you do not use the syntax default, you can use the line below //list.AddDefinitionNode(form); list.AddNintexWorkflowO365(listWorkflow, listWorkflow => { #region Events listWorkflow.OnProvisioning <Object> (spMetaCtx => { Console.WriteLine("About to provision the list workflow"); }); listWorkflow.OnProvisioned <NintexO365HandlerOnProvisionedEvent> (spMetaCtx => { Console.WriteLine("Provisoined the workflow m for {0}", ((NintexListWorkflowO365Definition)spMetaCtx.ObjectDefinition).Name); var result = spMetaCtx.Object; if (result.saveResponse != null) { Console.WriteLine("The result of save is {0}", result.saveResponse.Content.ReadAsStringAsync().Result); } if (result.puiblishResponse != null) { Console.WriteLine("The result of publish is {0}", result.puiblishResponse.Content.ReadAsStringAsync().Result); } if (result.assignedUseForProductionValue != null) { Console.WriteLine("The result of assigned use is {0}", result.assignedUseForProductionValue.Content.ReadAsStringAsync().Result); } }); #endregion }); } }); web.AddList(TestList2, list => { list.AddContentTypeLink(BuiltInContentTypeId.Issue); // this refers to SPMeta2.NintexExt.Core.Syntax.Default; if (AddNintex) { list.AddNintexFormO365(form2_item, formmodel => { #region Events formmodel.OnProvisioning <Object> (spMetaCtx => { Console.WriteLine("About to provision the form for {0}", ((NintexFormO365Definition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId); }); formmodel.OnProvisioned <NintexO365HandlerOnProvisionedEvent> (spMetaCtx => { Console.WriteLine("Provisoined the form for {0}", ((NintexFormO365Definition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId); var result = spMetaCtx.Object; if (result.saveResponse != null) { Console.WriteLine("The result of save is {0}", result.saveResponse.Content.ReadAsStringAsync().Result); } if (result.puiblishResponse != null) { Console.WriteLine("The result of publish is {0}", result.puiblishResponse.Content.ReadAsStringAsync().Result); } if (result.assignedUseForProductionValue != null) { Console.WriteLine("The result of assigned use is {0}", result.assignedUseForProductionValue.Content.ReadAsStringAsync().Result); } }); #endregion }); list.AddNintexFormO365(form2_issue, formmodel => { #region Events formmodel.OnProvisioning <Object> (spMetaCtx => { Console.WriteLine("About to provision the form for {0}", ((NintexFormO365Definition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId); }); formmodel.OnProvisioned <NintexO365HandlerOnProvisionedEvent> (spMetaCtx => { Console.WriteLine("Provisoined the form for {0}", ((NintexFormO365Definition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId); var result = spMetaCtx.Object; if (result.saveResponse != null) { Console.WriteLine("The result of save is {0}", result.saveResponse.Content.ReadAsStringAsync().Result); } if (result.puiblishResponse != null) { Console.WriteLine("The result of publish is {0}", result.puiblishResponse.Content.ReadAsStringAsync().Result); } if (result.assignedUseForProductionValue != null) { Console.WriteLine("The result of assigned use is {0}", result.assignedUseForProductionValue.Content.ReadAsStringAsync().Result); } }); #endregion }); list.AddNintexWorkflowO365(listWorkflow2, listWorkflow => { #region Events listWorkflow.OnProvisioning <Object> (spMetaCtx => { Console.WriteLine("About to provision the list workflow 2"); }); listWorkflow.OnProvisioned <Object> (spMetaCtx => { Console.WriteLine("Provisoined the list workflow 2"); }); #endregion }); } }); }