//protected override void InternalOnAfterWebPartProvision(WebPartProcessingContext provisionContext) //{ // base.InternalOnAfterWebPartProvision(provisionContext); // var webPartModel = provisionContext.WebPartDefinition; // var listItemModelHost = provisionContext.ListItemModelHost; // var wpModel = webPartModel.WithAssertAndCast<ListViewWebPartDefinition>("model", value => value.RequireNotNull()); // var webPartStoreKey = provisionContext.WebPartStoreKey; // var context = provisionContext.ListItemModelHost.HostWeb.Context; // var bindContext = LookupBindContext(listItemModelHost, wpModel); // if (bindContext.TargetViewId.HasValue // && bindContext.TargetViewId != default(Guid) // && provisionContext.WebPartStoreKey.HasValue // && provisionContext.WebPartStoreKey.Value != default(Guid)) // { // var list = LookupList(listItemModelHost, wpModel); // var srcView = list.Views.GetById(bindContext.TargetViewId.Value); // var hiddenView = list.Views.GetById(provisionContext.WebPartStoreKey.Value); // context.Load(srcView, s => s.ViewFields); // context.Load(srcView, s => s.RowLimit); // context.Load(srcView, s => s.ViewQuery); // context.Load(srcView, s => s.JSLink); // context.Load(srcView, s => s.IncludeRootFolder); // context.Load(srcView, s => s.Scope); // context.Load(hiddenView); // context.ExecuteQueryWithTrace(); // hiddenView.ViewFields.RemoveAll(); // foreach (var f in srcView.ViewFields) // hiddenView.ViewFields.Add(f); // hiddenView.RowLimit = srcView.RowLimit; // hiddenView.ViewQuery = srcView.ViewQuery; // hiddenView.JSLink = srcView.JSLink; // hiddenView.IncludeRootFolder = srcView.IncludeRootFolder; // hiddenView.Scope = srcView.Scope; // hiddenView.Update(); // context.ExecuteQueryWithTrace(); // } //} private List LookupList(ListItemModelHost listItemModelHost, ListViewWebPartDefinition wpModel) { var web = listItemModelHost.HostWeb; var context = listItemModelHost.HostWeb.Context; List list = null; if (!string.IsNullOrEmpty(wpModel.ListUrl)) { list = web.QueryAndGetListByUrl(wpModel.ListUrl); } else if (!string.IsNullOrEmpty(wpModel.ListTitle)) { list = web.Lists.GetByTitle(wpModel.ListTitle); } else if (wpModel.ListId != default(Guid)) { list = web.Lists.GetById(wpModel.ListId.Value); } else { throw new SPMeta2Exception("ListUrl, ListTitle or ListId should be defined."); } return(list); }
//[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); }
LookupBindContext(ListItemModelHost listItemModelHost, ListViewWebPartDefinition wpModel) { var result = new ClientXsltListViewWebPartDefinitionValidator.ListBindContext { }; var web = listItemModelHost.HostWeb; var context = listItemModelHost.HostWeb.Context; var list = LookupList(listItemModelHost, wpModel); View view = null; if (wpModel.ViewId.HasValue && wpModel.ViewId != default(Guid)) { view = list.Views.GetById(wpModel.ViewId.Value); } else if (!string.IsNullOrEmpty(wpModel.ViewName)) { view = list.Views.GetByTitle(wpModel.ViewName); } context.Load(list, l => l.Id); context.Load(list, l => l.DefaultViewUrl); context.Load(list, l => l.Title); context.Load(list, l => l.DefaultView); if (view != null) { context.Load(view); context.ExecuteQueryWithTrace(); result.OriginalView = list.DefaultView; result.OriginalViewId = list.DefaultView.Id; result.TargetView = view; result.TargetViewId = view.Id; result.TitleUrl = view.ServerRelativeUrl; } else { context.ExecuteQueryWithTrace(); } result.ListId = list.Id; if (wpModel.TitleUrl == null) { if (string.IsNullOrEmpty(result.TitleUrl)) { result.TitleUrl = list.DefaultViewUrl; } } return(result); }
//[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); }
//[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); }
private ListBindContext LookupBindContext(ListItemModelHost listItemModelHost, ListViewWebPartDefinition wpModel) { var result = new ListBindContext { }; var web = listItemModelHost.HostWeb; var context = listItemModelHost.HostWeb.Context; List list = null; if (!string.IsNullOrEmpty(wpModel.ListUrl)) { list = web.QueryAndGetListByUrl(wpModel.ListUrl); } else if (!string.IsNullOrEmpty(wpModel.ListTitle)) { list = web.Lists.GetByTitle(wpModel.ListTitle); } else if (wpModel.ListId != default(Guid)) { list = web.Lists.GetById(wpModel.ListId.Value); } else { throw new ArgumentException("ListUrl, ListTitle or ListId should be defined."); } context.Load(list, l => l.Id); context.Load(list, l => l.DefaultViewUrl); context.Load(list, l => l.Title); context.Load(list, l => l.DefaultView); context.ExecuteQueryWithTrace(); result.ListId = list.Id; result.TitleUrl = list.DefaultViewUrl; result.ViewId = list.DefaultView.Id; return(result); }
public static TModelNode AddListViewWebPart <TModelNode>(this TModelNode model, ListViewWebPartDefinition definition, Action <ListViewWebPartModelNode> action) where TModelNode : ModelNode, IWebpartHostModelNode, new() { return(model.AddTypedDefinitionNode(definition, action)); }
public static TModelNode AddListViewWebPart <TModelNode>(this TModelNode model, ListViewWebPartDefinition definition) where TModelNode : ModelNode, IWebpartHostModelNode, new() { return(AddListViewWebPart(model, definition, null)); }
public static ModelNode AddListViewWebPart(this ModelNode model, ListViewWebPartDefinition definition, Action <ModelNode> action) { return(model.AddDefinitionNode(definition, action)); }
public static ModelNode AddListViewWebPart(this ModelNode model, ListViewWebPartDefinition definition) { return(AddListViewWebPart(model, definition, null)); }
public void CanDeploy_WebpartToWikiPageContent_As_AddToPageContent() { // Some web part provision on wiki page give empty markup // https://github.com/SubPointSolutions/spmeta2/issues/693 // web part ID, zone and AddToPageContent must be as such // you can move these params into your web part definition var listViewWebPartDef = new ListViewWebPartDefinition { Title = String.Format("ListViewWebPartDefinition - {0}", Rnd.String()), Id = "g_" + Guid.NewGuid().ToString("D").Replace('-', '_'), ZoneIndex = 10, ZoneId = "wpz", AddToPageContent = true, ListUrl = BuiltInListDefinitions.SitePages.CustomUrl }; var webModel = SPMeta2Model .NewWebModel(web => { web .AddHostList(BuiltInListDefinitions.SitePages, list => { list .AddRandomWikiPage(page => { page.RegExcludeFromValidation(); page .AddListViewWebPart(listViewWebPartDef) .AddRandomWebpart(wpNode => { var wp = wpNode.Value as WebPartDefinition; wp.Id = "g_" + Guid.NewGuid().ToString("D").Replace('-', '_'); wp.ZoneId = "wpz"; wp.AddToPageContent = true; }) .AddRandomWebpart(wpNode => { var wp = wpNode.Value as WebPartDefinition; wp.Id = "g_" + Guid.NewGuid().ToString("D").Replace('-', '_'); wp.ZoneId = "wpz"; wp.AddToPageContent = true; }) .AddRandomWebpart(wpNode => { var wp = wpNode.Value as WebPartDefinition; wp.Id = "g_" + Guid.NewGuid().ToString("D").Replace('-', '_'); wp.ZoneId = "wpz"; wp.AddToPageContent = true; }) ; }); }); }); TestModel(webModel); }