예제 #1
0
        private static void DeployAttachmentsLibrary(ClientContext clientContext, List targetList)
        {
            var csomProvisionService = new CSOMProvisionService();

            var webModel = SPMeta2Model.NewWebModel();

            webModel.AddList(Assets.listDefinition);

            csomProvisionService.DeployWebModel(clientContext, webModel);

            var attachmentsFieldDefinition = new LookupFieldDefinition
            {
                Title                      = "ParentItemID",
                InternalName               = "ParentItemID",
                Group                      = "Angular",
                Id                         = new Guid("FEF440A7-3228-4034-BB2A-FFD538D46A62"),
                LookupListTitle            = targetList.Title,
                LookupWebId                = clientContext.Web.Id,
                LookupField                = "ID",
                RelationshipDeleteBehavior = "Cascade",
                Indexed                    = true
            };

            var lookupFieldModel = SPMeta2Model.NewWebModel(web =>
            {
                web.AddField(attachmentsFieldDefinition);
            });

            webModel.AddList(Attachments.listDefinition, list => list.AddField(attachmentsFieldDefinition));
            csomProvisionService.DeployWebModel(clientContext, webModel);
        }
예제 #2
0
        public static void DeployWeb(ModelNode model)
        {
            var clientContext    = GetClientcontext();
            var provisionService = new CSOMProvisionService();

            provisionService.DeployWebModel(clientContext, model);
        }
예제 #3
0
        static void Main(string[] args)
        {
            var siteUrl          = "http://portal";
            var o365UserName     = "******";
            var o365UserPassword = "******";

            var consoleUtils = new ConsoleUtils();

            consoleUtils.WithO365Context(siteUrl, o365UserName, o365UserPassword, context =>
            {
                // replace it with your M2 models
                var siteModel   = default(ModelNode);
                var rotWebModel = default(ModelNode);

                // create a provision service - CSOMProvisionService or StandardCSOMProvisionService
                var provisionService = new CSOMProvisionService();

                // little nice thing, tracing the progress
                consoleUtils.TraceDeploymentProgress(provisionService);

                // deploy!
                provisionService.DeploySiteModel(context, siteModel);
                provisionService.DeployWebModel(context, rotWebModel);
            });
        }
예제 #4
0
        static void Main(string[] args)
        {
            var model            = GoogleMapsModel.GetModel();
            var siteUrl          = "http://dev";
            var context          = new ClientContext(siteUrl);
            var provisionService = new CSOMProvisionService();

            provisionService.DeployWebModel(context, model);
        }
예제 #5
0
        public static void PreProvision(ClientContext context,
                                        CSOMProvisionService provisioningService)
        {
            var webModel = SPMeta2Model.NewWebModel(web =>
            {
                web.AddWeb(SubWeb, subweb => {
                });
            });

            provisioningService.DeployWebModel(context, webModel);
        }
        public void CanProvisionIntranet_SiteModel()
        {
            WithCSOMContext(context =>
            {
                var siteModel    = new M2ProjectPrefixSiteModel();
                var rootWebModel = new M2ProjectPrefixRootWebModel();

                var provisionService = new CSOMProvisionService();

                // site
                provisionService.DeploySiteModel(context, siteModel.GetSiteFeaturesModel());
                provisionService.DeploySiteModel(context, siteModel.GetUserCustomActionModel());
                provisionService.DeploySiteModel(context, siteModel.GetSiteSecurityModel());

                provisionService.DeploySiteModel(context, siteModel.GetFieldsAndContentTypesModel());
                provisionService.DeploySiteModel(context, siteModel.GetSandboxSolutionsModel());

                // root web
                provisionService.DeployWebModel(context, rootWebModel.GetStyleLibraryModel());
                provisionService.DeployWebModel(context, rootWebModel.GetModel());
            });
        }
예제 #7
0
        /// <summary>
        /// Creates the content for the web object. E.g. List, libraries, permissions etc.
        /// </summary>
        /// <param name="weburl">The url of the web object (sitecollection + url part)</param>
        /// <param name="username">Username for authentication</param>
        /// <param name="password">Password for authentication</param>
        public static void CreateSharePointWebContent(string weburl, string username, string password)
        {
            using (var ctx = new ClientContext(weburl))
            {
                ctx.Credentials = new SharePointOnlineCredentials(username, GetSecurePassword(password));

                //create a new SPMeta2 provisioning service
                var provisionService = new CSOMProvisionService();
                //deploy the model with SPMeta2
                provisionService.DeployWebModel(ctx, GetListModel());

                //delete the quick launch items
                DeleteQuickLaunchNodes(ctx);

                //then create the new quick launch items
                provisionService.DeployWebModel(ctx, GetNavigationModel());

                //set homepage
                ctx.Web.RootFolder.WelcomePage = "General";
                ctx.Web.RootFolder.Update();
                ctx.ExecuteQuery();
            }
        }
예제 #8
0
        public static void Provision(ClientContext context,
                                     CSOMProvisionService provisioningService)
        {
            var webModel = SPMeta2Model.NewWebModel(web =>
            {
                web.AddWeb(SubWeb, subweb => {
                    // this is not working this is the point to fix within the issue #11
                    setupWeb(subweb, true);
                });
                setupWeb(web, true);
            });

            provisioningService.DeployWebModel(context, webModel);
        }
예제 #9
0
        public void RegisterCustomModelHandlerWithSyntax()
        {
            var csomProvisionService = new CSOMProvisionService();

            csomProvisionService.RegisterModelHandler(new ChangeWebTitleAndDescriptionModelHandler());

            var webModel = SPMeta2Model.NewWebModel(web =>
            {
                web.AddChangeWebTitleAndDescription(new ChangeWebTitleAndDescriptionDefinition
                {
                    Title       = "A new name for the web",
                    Description = "Some changes done by ChangeWebTitleAndDescriptionDefinition"
                });
            });

            using (var clientContext = new ClientContext(CSOMSiteUrl))
                csomProvisionService.DeployWebModel(clientContext, webModel);
        }
예제 #10
0
        public void Deploy_WebModel_CSOM()
        {
            // setup url
            var webUrl = "";

            // create you model
            var webModel = SPMeta2Model.NewWebModel(web =>
            {
            });

            // setup client context
            using (var clientContext = new ClientContext(webUrl))
            {
                // deploy web model with SharePoint Foundation CSOM API
                var foundationProvisionService = new CSOMProvisionService();
                foundationProvisionService.DeployWebModel(clientContext, webModel);

                // deploy web model with SharePoint Standard CSOM API
                var standardProvisionService = new StandardCSOMProvisionService();
                standardProvisionService.DeployWebModel(clientContext, webModel);
            }
        }
예제 #11
0
        public void RegisterCustomModelHandlerWithEvents()
        {
            var csomProvisionService = new CSOMProvisionService();

            csomProvisionService.RegisterModelHandler(new ChangeWebTitleAndDescriptionModelHandler());

            var webModel = SPMeta2Model.NewWebModel(web =>
            {
                web.AddChangeWebTitleAndDescription(new ChangeWebTitleAndDescriptionDefinition
                {
                    Title       = "A new name for the web",
                    Description = "Some changes done by ChangeWebTitleAndDescriptionDefinition"
                },
                                                    changeWebAndTitle =>
                {
                    changeWebAndTitle.OnProvisioning <Web, ChangeWebTitleAndDescriptionDefinition>(cntx =>
                    {
                        var cntxWeb = cntx.Object;
                        var cntxDef = cntx.ObjectDefinition;

                        // do stuff
                    });

                    changeWebAndTitle.OnProvisioned <Web, ChangeWebTitleAndDescriptionDefinition>(cntx =>
                    {
                        var cntxWeb = cntx.Object;
                        var cntxDef = cntx.ObjectDefinition;

                        // do stuff
                    });
                });
            });

            using (var clientContext = new ClientContext(CSOMSiteUrl))
                csomProvisionService.DeployWebModel(clientContext, webModel);
        }
예제 #12
0
        public static void Provision(ClientContext context, CSOMProvisionService provisioningService)
        {
            var webModel = SPMeta2Model.NewWebModel(web =>
            {
                web.AddNintexWorkflow(webWorkflow, workflowModel =>
                {
                    #region Events
                    workflowModel.OnProvisioning <Object>
                        (spMetaCtx =>
                    {
                        Console.WriteLine("About to provision the workflow on the web");
                    });
                    workflowModel.OnProvisioned <Object>
                        (spMetaCtx =>
                    {
                        Console.WriteLine("Provisioned the web workflow");
                        Console.WriteLine("The result is {0}", spMetaCtx.Object);
                    });
                    #endregion
                });

                web.AddList(TestList, list =>
                {
                    // this refers to SPMeta2.NintexExt.Core.Syntax.Default;
                    list.AddNintexForm(form, formmodel => {
                        #region Events
                        formmodel.OnProvisioning <Object>
                            (spMetaCtx =>
                        {
                            Console.WriteLine("About to provision the form for {0}", ((NintexFormDefinition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId);
                        });
                        formmodel.OnProvisioned <string>
                            (spMetaCtx =>
                        {
                            Console.WriteLine("Provisoined the form for {0}", ((NintexFormDefinition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId);
                            Console.WriteLine("The result is {0}", spMetaCtx.Object);
                        });
                        #endregion
                    });
                    // if you do not use the syntax default, you can use the line below
                    //list.AddDefinitionNode(form);

                    list.AddNintexWorkflow(listWorkflow, workflowModel =>
                    {
                        #region Events
                        workflowModel.OnProvisioning <Object>
                            (spMetaCtx =>
                        {
                            Console.WriteLine("About to provision the workflow on the list");
                        });
                        workflowModel.OnProvisioned <Object>
                            (spMetaCtx =>
                        {
                            Console.WriteLine("Provisioned the workflow");
                            Console.WriteLine("The result is {0}", spMetaCtx.Object);
                        });
                        #endregion
                    });
                });
                // same here, same list, testing that it works when the list is already there
                web.AddHostList(TestList, list =>
                {
                    // this refers to SPMeta2.NintexExt.Core.Syntax.Default;
                    list.AddNintexForm(form, formmodel => {
                        #region Events
                        formmodel.OnProvisioning <Object>
                            (spMetaCtx =>
                        {
                            Console.WriteLine("About to provision the form for {0}", ((NintexFormDefinition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId);
                        });
                        formmodel.OnProvisioned <string>
                            (spMetaCtx =>
                        {
                            Console.WriteLine("Provisoined the form for {0}", ((NintexFormDefinition)spMetaCtx.ObjectDefinition).ListContentTypeNameOrId);
                            Console.WriteLine("The result is {0}", spMetaCtx.Object);
                        });
                        #endregion
                    });
                    // if you do not use the syntax default, you can use the line below
                    //list.AddDefinitionNode(form);

                    list.AddNintexWorkflow(listWorkflow, workflowModel =>
                    {
                        #region Events
                        workflowModel.OnProvisioning <Object>
                            (spMetaCtx =>
                        {
                            Console.WriteLine("About to provision the workflow on the list");
                        });
                        workflowModel.OnProvisioned <Object>
                            (spMetaCtx =>
                        {
                            Console.WriteLine("Provisioned the workflow");
                            Console.WriteLine("The result is {0}", spMetaCtx.Object);
                        });
                        #endregion
                    });
                });
            });

            provisioningService.DeployWebModel(context, webModel);
        }