예제 #1
0
        public void CanDeployWebPartPages()
        {
            var customersReportPage = new WebPartPageDefinition
            {
                Title              = "Customer reports",
                FileName           = "Customers-report.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var parthesReportPage = new WebPartPageDefinition
            {
                Title              = "Parthers reports",
                FileName           = "Parthers-report.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd2
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web.AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list
                    .AddWebPartPage(customersReportPage)
                    .AddWebPartPage(parthesReportPage);
                });
            });

            DeployModel(model);
        }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanDeploEmptyContentEditorWebpart()
        {
            var cewp = new ContentEditorWebPartDefinition
            {
                Title     = "Empty Content Editor Webpart",
                Id        = "m2EmptyCEWP",
                ZoneIndex = 10,
                ZoneId    = "Main"
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 CEWP provision",
                FileName           = "cewp-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web.AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddContentEditorWebPart(cewp);
                    });
                });
            });

            DeployModel(model);
        }
예제 #3
0
        protected virtual string GetSP2010WebPartPageTemplateContent(WebPartPageDefinition webPartPageModel)
        {
            switch (webPartPageModel.PageLayoutTemplate)
            {
            case 1:
                return(SP2010WebPartPageTemplates.spstd1);

            case 2:
                return(SP2010WebPartPageTemplates.spstd2);

            case 3:
                return(SP2010WebPartPageTemplates.spstd3);

            case 4:
                return(SP2010WebPartPageTemplates.spstd4);

            case 5:
                return(SP2010WebPartPageTemplates.spstd5);

            case 6:
                return(SP2010WebPartPageTemplates.spstd6);

            case 7:
                return(SP2010WebPartPageTemplates.spstd7);

            case 8:
                return(SP2010WebPartPageTemplates.spstd8);
            }

            throw new Exception(string.Format("PageLayoutTemplate: [{0}] is not supported.", webPartPageModel.PageLayoutTemplate));
        }
예제 #4
0
        public virtual string GetWebPartPageTemplateContent(WebPartPageDefinition webPartPageModel)
        {
            var spRuntimeVersion = typeof(SPField).Assembly.GetName().Version;
            var service          = ServiceContainer.Instance.GetService <WebPartPageTemplatesServiceBase>();

            return(service.GetPageLayoutTemplate(webPartPageModel.PageLayoutTemplate, spRuntimeVersion));
        }
예제 #5
0
        public static string GetWebPartTemplateContent(WebPartPageDefinition webPartPageModel)
        {
            // gosh! would u like to offer a better way?
            switch (webPartPageModel.PageLayoutTemplate)
            {
            case 1:
                return(WebPartPageTemplates.spstd1);

            case 2:
                return(WebPartPageTemplates.spstd2);

            case 3:
                return(WebPartPageTemplates.spstd3);

            case 4:
                return(WebPartPageTemplates.spstd4);

            case 5:
                return(WebPartPageTemplates.spstd5);

            case 6:
                return(WebPartPageTemplates.spstd6);

            case 7:
                return(WebPartPageTemplates.spstd7);

            case 8:
                return(WebPartPageTemplates.spstd8);
            }

            throw new Exception(string.Format("PageLayoutTemplate: [{0}] is not supported.", webPartPageModel.PageLayoutTemplate));
        }
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var item    = (reverseHost as WebPartPageReverseHost).HostWebPartPageFile;
            var context = (reverseHost as WebPartPageReverseHost).HostClientContext;

            var def = new WebPartPageDefinition();

            def.FileName = item.Name;
            def.Title    = item.Title;

            // always reverse to CustomPageLayout
            // we don't know what is the content of the web part page
            using (var stream = File.OpenBinaryDirect(
                       context,
                       item.ServerRelativeUrl).Stream)
            {
                def.CustomPageLayout = Encoding.UTF8.GetString(ModuleFileUtils.ReadFully(stream));
            }

            def.NeedOverride = true;

            return(new WebPartPageModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanDeploySimpleSiteFeedWebPartDefinition()
        {
            var siteFeed = new SiteFeedWebPartDefinition
            {
                Title     = "Site Feed",
                Id        = "m2SiteFeed",
                ZoneIndex = 10,
                ZoneId    = "Main"
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 Site Feed provision",
                FileName           = "site-feed-webpart-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web
                .AddWebFeature(BuiltInWebFeatures.SiteFeed.Inherit().Enable())
                .AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddSiteFeedWebPart(siteFeed);
                    });
                });
            });

            DeployModel(model);
        }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanDeployScriptEditorWebPartwithContent()
        {
            var scriptEditor = new ScriptEditorWebPartDefinition
            {
                Title     = "Pre-provisioned Script Editor",
                Id        = "m2ScriptEditorWithLoggerWhichMustBeMoreThan32Chars",
                ZoneIndex = 20,
                ZoneId    = "Main",
                Content   = " <script> console.log('script editor log');  </script> Pre-provisioned Script Editor Content"
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 Script Editor provision",
                FileName           = "script-editor-webpart-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web
                .AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddScriptEditorWebPart(scriptEditor);
                    });
                });
            });

            DeployModel(model);
        }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanDeploySimpleScriptEditorWebPartDefinition()
        {
            var scriptEditor = new ScriptEditorWebPartDefinition
            {
                Title     = "Empty Script Editor",
                Id        = "m2EmptyScriptEditorrWhichMustBeMoreThan32Chars",
                ZoneIndex = 10,
                ZoneId    = "Main"
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 Script Editor provision",
                FileName           = "script-editor-webpart-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web
                .AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddScriptEditorWebPart(scriptEditor);
                    });
                });
            });

            DeployModel(model);
        }
예제 #10
0
        public void CanDeploy_WebpartTo_VideoContentType_VideoPlayerPage()
        {
            // aiming to deploy a web part to the following page with in a library
            // forms/videocontenttype/videoplayerpage.aspx

            var listDef = ModelGeneratorService.GetRandomDefinition <ListDefinition>(def =>
            {
                def.ContentTypesEnabled = true;
                def.TemplateType        = BuiltInListTemplateTypeId.DocumentLibrary;
            });

            var contentTypeName    = "Video";
            var contentTypeLinkDef = new ContentTypeLinkDefinition
            {
                ContentTypeName = contentTypeName,
                ContentTypeId   = BuiltInSiteContentTypeId.Video
            };

            var formsFolder = new FolderDefinition
            {
                Name = "Forms"
            };

            var contentTypeFolder = new FolderDefinition
            {
                Name = contentTypeName
            };

            var pageDefinition = new WebPartPageDefinition
            {
                FileName           = "videoplayerpage.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1,
                NeedOverride       = false
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web.AddList(listDef, list =>
                {
                    list.AddContentTypeLink(contentTypeLinkDef);

                    list.AddFolder(formsFolder, forms =>
                    {
                        forms.AddFolder(contentTypeFolder, folder =>
                        {
                            folder.AddHostWebPartPage(pageDefinition, page =>
                            {
                                page.AddRandomWebpart();
                                page.AddRandomWebpart();
                                page.AddRandomWebpart();
                            });
                        });
                    });
                });
            });

            TestModel(model);
        }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanBindListViewWebPartByListViewTitle()
        {
            var incidentsLibrary = new ListDefinition
            {
                Title        = "Incidents library",
                Description  = "A document library.",
                TemplateType = BuiltInListTemplateTypeId.DocumentLibrary,
                Url          = "m2Incidents"
            };

            var incidentsView = new ListViewDefinition
            {
                Title  = "Last Incidents",
                Fields = new Collection <string>
                {
                    BuiltInInternalFieldNames.Edit,
                    BuiltInInternalFieldNames.ID,
                    BuiltInInternalFieldNames.FileLeafRef
                },
                RowLimit = 10
            };

            var listView = new ListViewWebPartDefinition
            {
                Title     = "Last Incidents binding by List View Title",
                Id        = "m2LastIncidentsView",
                ZoneIndex = 10,
                ZoneId    = "Main",
                ListUrl   = incidentsLibrary.GetListUrl(),
                ViewName  = incidentsView.Title
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 List View provision",
                FileName           = "listview-webpart-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web
                .AddList(incidentsLibrary, list =>
                {
                    list.AddListView(incidentsView);
                })
                .AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddListViewWebPart(listView);
                    });
                });
            });

            DeployModel(model);
        }
예제 #12
0
        protected SPListItem FindWebPartPage(SPList list, WebPartPageDefinition webpartPageModel)
        {
            var webPartPageName = GetSafeWebPartPageFileName(webpartPageModel);

            if (!webPartPageName.EndsWith(".aspx"))
            {
                webPartPageName += ".aspx";
            }

            return(list.Items.OfType <SPListItem>().FirstOrDefault(i => string.Compare(i.Name, webPartPageName, true) == 0));
        }
예제 #13
0
        protected string GetSafeWebPartPageFileName(WebPartPageDefinition webPartPageModel)
        {
            var fileName = webPartPageModel.FileName;

            if (!fileName.EndsWith(".aspx"))
            {
                fileName += ".aspx";
            }

            return(fileName);
        }
예제 #14
0
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]

        public void CanDeployWebpartWithPreprocessedXML()
        {
            // this shows how to use M2 API to pre-process web part XML

            // here is a web part XML template
            // usually, you export that XML from SharePoint page, but M2 has pre-build class
            var contentEditorWebPartXml = BuiltInWebPartTemplates.ContentEditorWebPart;

            // let' set new some properties, shall we?
            // we load XML by WebpartXmlExtensions.LoadWebpartXmlDocument() method
            // it works well web both V2/V3 web part XML
            // then change properties and seehow it goes
            // then call ToString() to get string out of XML
            var wpXml = WebpartXmlExtensions
                        .LoadWebpartXmlDocument(contentEditorWebPartXml)
                        .SetOrUpdateProperty("FrameType", "Standard")
                        .SetOrUpdateProperty("Width", "500")
                        .SetOrUpdateProperty("Heigth", "200")
                        .SetOrUpdateContentEditorWebPartProperty("Content", "This is a new content!", true)
                        .ToString();

            var contentEditorWebPart = new WebPartDefinition
            {
                Title = "New content",
                Id    = "m2AboutSharePointnewContent",
                WebpartXmlTemplate = wpXml,
                ZoneIndex          = 20,
                ZoneId             = "Main"
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 webparts provision",
                FileName           = "web-parts-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web.AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddWebPart(contentEditorWebPart);
                    });
                });
            });

            DeployCSOMModel(model);
        }
        public void Deploy_WebParts()
        {
            // Step 1, define security groups
            var gettingStarted = new SPMeta2.Definitions.WebPartDefinition
            {
                Title              = "Getting started with site",
                Id                 = "spmGettingStarted",
                ZoneId             = "Main",
                ZoneIndex          = 100,
                WebpartXmlTemplate = ResourceReader.ReadFromResourceName("Templates.Webparts.Get started with your site.webpart")
            };

            var contentEditor = new SPMeta2.Definitions.WebPartDefinition
            {
                Title              = "SPMeta2 Content Editor Webpart",
                Id                 = "spmContentEditorWebpart",
                ZoneId             = "Main",
                ZoneIndex          = 200,
                WebpartXmlTemplate = ResourceReader.ReadFromResourceName("Templates.Webparts.Content Editor.dwp")
            };

            var webpartPage = new WebPartPageDefinition
            {
                Title              = "Getting started",
                FileName           = "Getting-Started.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            // Step 2, define web model and artifact relationships - add security groups t the web
            var model = SPMeta2Model
                        .NewWebModel(web =>
            {
                web
                .AddList(BuiltInListDefinitions.SitePages, list =>
                {
                    list
                    .AddWebPartPage(webpartPage, page =>
                    {
                        page
                        .AddWebPart(gettingStarted)
                        .AddWebPart(contentEditor);
                    });
                });
            });

            // Step 3, deploy model
            DeployWebModel(model);
        }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanDeploContentEditorWebpartWithUrlLink()
        {
            var htmlContent = new ModuleFileDefinition
            {
                FileName  = "m2-cewp-content.html",
                Content   = Encoding.UTF8.GetBytes("M2 is everything you need to deploy stuff to Sharepoint"),
                Overwrite = true,
            };

            var cewp = new ContentEditorWebPartDefinition
            {
                Title       = "Content Editor Webpart with URL link",
                Id          = "m2ContentLinkCEWP",
                ZoneIndex   = 20,
                ZoneId      = "Main",
                ContentLink = UrlUtility.CombineUrl(new string[] {
                    "~sitecollection",
                    BuiltInListDefinitions.StyleLibrary.GetListUrl(),
                    htmlContent.FileName
                })
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 CEWP provision",
                FileName           = "cewp-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web
                .AddHostList(BuiltInListDefinitions.StyleLibrary, list =>
                {
                    list.AddModuleFile(htmlContent);
                })
                .AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddContentEditorWebPart(cewp);
                    });
                });
            });

            DeployModel(model);
        }
예제 #17
0
        protected SPListItem FindWebPartPage(SPFolder folder, WebPartPageDefinition webpartPageModel)
        {
            var webPartPageName = GetSafeWebPartPageFileName(webpartPageModel);

            if (!webPartPageName.EndsWith(".aspx"))
            {
                webPartPageName += ".aspx";
            }

            foreach (SPFile file in folder.Files)
            {
                if (file.Name.ToUpper() == webPartPageName.ToUpper())
                {
                    return(file.Item);
                }
            }

            return(null);
        }
예제 #18
0
        public virtual string GetWebPartPageTemplateContent(WebPartPageDefinition webPartPageModel)
        {
            // TODO, add support for SP2016
            // Built-in web part page templates should be correctly resolved for SP2010/2013 #683

            var spRuntimeVersion = typeof(SPField).Assembly.GetName().Version;

            if (spRuntimeVersion.Major == 14)
            {
                return(GetSP2010WebPartPageTemplateContent(webPartPageModel));
            }

            if (spRuntimeVersion.Major == 15)
            {
                return(GetSP2013WebPartPageTemplateContent(webPartPageModel));
            }

            throw new Exception(string.Format("PageLayoutTemplate: [{0}] is not supported.", webPartPageModel.PageLayoutTemplate));
        }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanBindListViewWebPartToCalendarView()
        {
            var companyEvents = new ListDefinition
            {
                Title        = "Company Events",
                Description  = "A document library.",
                TemplateType = BuiltInListTemplateTypeId.Events,
                Url          = "m2CompanyEvents"
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 List View provision",
                FileName           = "listview-webpart-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var listView = new ListViewWebPartDefinition
            {
                Title     = "Company Events by List View Title",
                Id        = "m2CompanyEvents",
                ZoneIndex = 10,
                ZoneId    = "Main",
                ListUrl   = companyEvents.GetListUrl(),
                ViewName  = "Calendar"
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web
                .AddList(companyEvents)
                .AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddListViewWebPart(listView);
                    });
                });
            });

            DeployModel(model);
        }
예제 #20
0
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanDeployWebPartPageWithCustomTemplate()
        {
            var customizedWebPartPage = new WebPartPageDefinition
            {
                Title            = "Customers report",
                FileName         = "Customers-report.aspx",
                CustomPageLayout = "___ a custom web part page template here ___ "
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web.AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list
                    .AddWebPartPage(customizedWebPartPage);
                });
            });

            DeployModel(model);
        }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanBindXsltListViewWebPartByListTitle()
        {
            var inventoryLibrary = new ListDefinition
            {
                Title        = "Inventory library",
                Description  = "A document library.",
                TemplateType = BuiltInListTemplateTypeId.DocumentLibrary,
                Url          = "InventoryLibrary"
            };

            var xsltListView = new XsltListViewWebPartDefinition
            {
                Title     = "Inventory Default View by List Title",
                Id        = "m2InventoryView",
                ZoneIndex = 10,
                ZoneId    = "Main",
                ListTitle = inventoryLibrary.Title
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 Xslt List View provision",
                FileName           = "xslt-listview-webpart-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web
                .AddList(inventoryLibrary)
                .AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddXsltListViewWebPart(xsltListView);
                    });
                });
            });

            DeployModel(model);
        }
        public void Deploy_WebPartPages()
        {
            // Step 1, define security groups
            var sales = new WebPartPageDefinition
            {
                Title              = "Sales Dashboard",
                FileName           = "Sales-Dashboard.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var ratings = new WebPartPageDefinition
            {
                Title              = "Ratings Dashboard",
                FileName           = "Ratings-Dashboard.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd2
            };

            var performance = new WebPartPageDefinition
            {
                Title              = "Performance Dashboard",
                FileName           = "Performance-Dashboard.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd3
            };

            // Step 2, define web model and artifact relationships - add security groups t the web
            var model = SPMeta2Model
                        .NewWebModel(web =>
            {
                web
                .AddList(BuiltInListDefinitions.SitePages, list =>
                {
                    list
                    .AddWebPartPage(sales)
                    .AddWebPartPage(ratings)
                    .AddWebPartPage(performance);
                });
            });

            // Step 3, deploy model
            DeployWebModel(model);
        }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanBindListViewWebPartByListUrl()
        {
            var annualReviewsLibrary = new ListDefinition
            {
                Title        = "Annual Reviews",
                Description  = "A document library.",
                TemplateType = BuiltInListTemplateTypeId.DocumentLibrary,
                Url          = "m2AnnualReviews"
            };

            var listView = new ListViewWebPartDefinition
            {
                Title     = "Annual Reviews Default View by List Url",
                Id        = "m2AnnualReviewsView",
                ZoneIndex = 10,
                ZoneId    = "Main",
                ListUrl   = annualReviewsLibrary.GetListUrl()
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 List View provision",
                FileName           = "listview-webpart-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web
                .AddList(annualReviewsLibrary)
                .AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddListViewWebPart(listView);
                    });
                });
            });

            DeployModel(model);
        }
예제 #24
0
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanDeployWebpartByXML()
        {
            // this whould deploy the web part using WebpartXmlTemplate prop
            // you need to provide an XML template which you get from SharePoint
            // export the wenb part, and put it into WebpartXmlTemplate prop

            // here is a web part XML template
            // usually, you export that XML from SharePoint page, but M2 has pre-build class
            var contentEditorWebPartXml = BuiltInWebPartTemplates.ContentEditorWebPart;

            var contentEditorWebPart = new WebPartDefinition
            {
                Title = "About SharePoint XML",
                Id    = "m2AboutSharePointXML",
                WebpartXmlTemplate = contentEditorWebPartXml,
                ZoneIndex          = 20,
                ZoneId             = "Main"
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 webparts provision",
                FileName           = "web-parts-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web.AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddWebPart(contentEditorWebPart);
                    });
                });
            });

            DeployModel(model);
        }
예제 #25
0
        private SPListItem GetOrCreateNewWebPartPage(SPList list,
                                                     WebPartPageDefinition webpartPageModel)
        {
            var targetPage = FindWebPartPage(list, webpartPageModel);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = targetPage == null ? null : targetPage.File,
                ObjectType       = typeof(SPFile),
                ObjectDefinition = webpartPageModel,
                ModelHost        = list
            });

            if (targetPage == null || webpartPageModel.NeedOverride)
            {
                var webPartPageName = GetSafeWebPartPageFileName(webpartPageModel);

                // web part page name has to be without .aspx extensions in xmlCmd for ProcessBatchData method!
                var xmlCmd = string.Format(WebPartPageCmdTemplate,
                                           new object[] {
                    list.ID.ToString(),
                    Path.GetFileNameWithoutExtension(webPartPageName),
                    (int)webpartPageModel.PageLayoutTemplate,
                    webpartPageModel.NeedOverride.ToString().ToLower()
                });

                var result = list.ParentWeb.ProcessBatchData(xmlCmd);

                // TODO. analyse the result
                // <Result ID="0, NewWebPage" Code="0"></Result>

                targetPage = FindWebPartPage(list, webpartPageModel);
            }

            return(targetPage);
        }
예제 #26
0
        public void CanDeployDeleteWebPartsDefinition_ByTitle()
        {
            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 webparts",
                FileName           = "web-parts.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            // aiming to delete two web part with the following titles:
            // 'My Tasks'
            // 'My Projects'
            var myWebPartDeletionDef = new DeleteWebPartsDefinition
            {
                WebParts = new List <WebPartMatch>(new WebPartMatch[] {
                    new WebPartMatch {
                        Title = "My Tasks"
                    },
                    new WebPartMatch {
                        Title = "My Projects"
                    }
                })
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web.AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddDeleteWebParts(myWebPartDeletionDef);
                    });
                });
            });

            DeployModel(model);
        }
예제 #27
0
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanDeployWebpartByWebpartGalleryFileName()
        {
            // this would deploy the web part using WebpartFileName
            // you need to provide a file name ofthe web part template in the web part gallery
            // M2 would load this file, then use an XML as a web part template

            var contentEditorWebPart = new WebPartDefinition
            {
                Title = "About SharePoint web part gallery",
                Id    = "m2AboutSharePointWebPartGallery",
                // shortcut to "MSContentEditor.dwp",
                WebpartFileName = BuiltInWebpartFileNames.MSContentEditor,
                ZoneIndex       = 20,
                ZoneId          = "Main"
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 webparts provision",
                FileName           = "web-parts-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web.AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddWebPart(contentEditorWebPart);
                    });
                });
            });

            DeployModel(model);
        }
예제 #28
0
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]

        public void CanDeployWebpartByWebpartType()
        {
            // this would deploy a web part using WebpartType prop
            // you need to provide AssemblyQualifiedName of the target web part type
            // M2 would use reflection to create an instane of the web part in the runtime
            // that works only for SSOM, not CSOM support yet

            var contentEditorWebPart = new WebPartDefinition
            {
                Title       = "About SharePoint SSOM",
                Id          = "m2AboutSharePointSSOM",
                WebpartType = typeof(ContentEditorWebPart).AssemblyQualifiedName,
                ZoneIndex   = 10,
                ZoneId      = "Main"
            };

            var webPartPage = new WebPartPageDefinition
            {
                Title              = "M2 webparts provision",
                FileName           = "web-parts-provision.aspx",
                PageLayoutTemplate = BuiltInWebPartPageTemplates.spstd1
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web.AddHostList(BuiltInListDefinitions.SitePages, list =>
                {
                    list.AddWebPartPage(webPartPage, page =>
                    {
                        page.AddWebPart(contentEditorWebPart);
                    });
                });
            });

            DeploySSOMModel(model);
        }
예제 #29
0
        public virtual string GetWebPartTemplateContent(WebPartPageDefinition webPartPageModel)
        {
            // gosh! would u like to offer a better way?
            // always SP2013 for CSOM yet
            // Built-in web part page templates should be correctly resolved for SP2010/2013 #683

            // TODO, sp2016 support, if any
            switch (webPartPageModel.PageLayoutTemplate)
            {
            case 1:
                return(SP2013WebPartPageTemplates.spstd1);

            case 2:
                return(SP2013WebPartPageTemplates.spstd2);

            case 3:
                return(SP2013WebPartPageTemplates.spstd3);

            case 4:
                return(SP2013WebPartPageTemplates.spstd4);

            case 5:
                return(SP2013WebPartPageTemplates.spstd5);

            case 6:
                return(SP2013WebPartPageTemplates.spstd6);

            case 7:
                return(SP2013WebPartPageTemplates.spstd7);

            case 8:
                return(SP2013WebPartPageTemplates.spstd8);
            }

            throw new Exception(string.Format("PageLayoutTemplate: [{0}] is not supported.", webPartPageModel.PageLayoutTemplate));
        }
 public static byte[] GetCustomnPageContent(this WebPartPageDefinition definition)
 {
     return(Encoding.UTF8.GetBytes(definition.CustomPageLayout));
 }