Esempio n. 1
0
        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;
            });
        }
Esempio n. 2
0
 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
             });
         }
     });
 }