protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var definition = webPartModel.WithAssertAndCast<PageViewerWebPartDefinition>("model", value => value.RequireNotNull()); var wpXml = WebpartXmlExtensions .LoadWebpartXmlDocument(BuiltInWebPartTemplates.PageViewerWebPart); if (!string.IsNullOrEmpty(definition.ContentLink)) { var contentLinkValue = definition.ContentLink ?? string.Empty; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Original contentLinkValue: [{0}]", contentLinkValue); contentLinkValue = TokenReplacementService.ReplaceTokens(new TokenReplacementContext { Value = contentLinkValue, Context = listItemModelHost }).Value; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Token replaced contentLinkValue: [{0}]", contentLinkValue); wpXml.SetOrUpdatePageViewerWebPartProperty("ContentLink", contentLinkValue); } if (!string.IsNullOrEmpty(definition.SourceType)) { wpXml.SetOrUpdatePageViewerWebPartProperty("SourceType", definition.SourceType); } return wpXml.ToString(); }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var typedModel = webPartModel.WithAssertAndCast<ContentEditorWebPartDefinition>("model", value => value.RequireNotNull()); var wpXml = WebpartXmlExtensions.LoadWebpartXmlDocument(BuiltInWebPartTemplates.ContentEditorWebPart); if (!string.IsNullOrEmpty(typedModel.Content)) wpXml.SetOrUpdateContentEditorWebPartProperty("Content", typedModel.Content, true); if (!string.IsNullOrEmpty(typedModel.ContentLink)) { var urlValue = typedModel.ContentLink ?? string.Empty; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Original value: [{0}]", urlValue); urlValue = TokenReplacementService.ReplaceTokens(new TokenReplacementContext { Value = urlValue, Context = listItemModelHost.HostClientContext }).Value; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Token replaced value: [{0}]", urlValue); wpXml.SetOrUpdateContentEditorWebPartProperty("ContentLink", urlValue); } return wpXml.ToString(); }
protected override string GetWebpartXmlDefinition( ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var typedDefinition = webPartModel.WithAssertAndCast<SilverlightWebPartDefinition>("model", value => value.RequireNotNull()); var wpXml = WebpartXmlExtensions.LoadWebpartXmlDocument(this.ProcessCommonWebpartProperties(BuiltInWebPartTemplates.SilverlightWebPart, webPartModel)); if (!string.IsNullOrEmpty(typedDefinition.Url)) { var linkValue = typedDefinition.Url; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Original Url: [{0}]", linkValue); linkValue = TokenReplacementService.ReplaceTokens(new TokenReplacementContext { Value = linkValue, Context = listItemModelHost.HostClientContext }).Value; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Token replaced Url: [{0}]", linkValue); wpXml.SetOrUpdateProperty("Url", linkValue); } if (!string.IsNullOrEmpty(typedDefinition.CustomInitParameters)) { wpXml.SetOrUpdateProperty("CustomInitParameters", typedDefinition.CustomInitParameters); } return wpXml.ToString(); }
protected File GetCurrentPageFile(ListItemModelHost listItemModelHost) { if (listItemModelHost.HostFile != null) return listItemModelHost.HostFile; return listItemModelHost.HostListItem.File; }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { if (!listItemModelHost.HostWeb.IsObjectPropertyInstantiated("Id")) { var webContext = listItemModelHost.HostWeb.Context; webContext.Load(listItemModelHost.HostWeb, w => w.Id); webContext.ExecuteQueryWithTrace(); } var webId = listItemModelHost.HostWeb.Id.ToString(); var wpModel = webPartModel.WithAssertAndCast<ClientWebPartDefinition>("model", value => value.RequireNotNull()); // Enhance 'ClientWebPart' provision - ProductWebId should be current web by default #623 // https://github.com/SubPointSolutions/spmeta2/issues/623 var productId = wpModel.ProductId; if (!productId.HasGuidValue()) productId = listItemModelHost.HostWeb.Id; var wpXml = WebpartXmlExtensions .LoadWebpartXmlDocument(BuiltInWebPartTemplates.ClientWebPart) .SetOrUpdateProperty("FeatureId", wpModel.FeatureId.ToString()) .SetOrUpdateProperty("ProductId", productId.ToString()) .SetOrUpdateProperty("WebPartName", wpModel.WebPartName) .SetOrUpdateProperty("ProductWebId", webId) .ToString(); return wpXml; }
protected override void OnBeforeDeploy(ListItemModelHost host, WebPartDefinitionBase webpart) { base.OnBeforeDeploy(host, webpart); // pre-load web id if (!host.HostWeb.IsPropertyAvailable("Id")) { host.HostWeb.Context.Load(host.HostWeb, w => w.Id); host.HostWeb.Context.ExecuteQueryWithTrace(); } var context = host.HostClientContext; var wpModel = webpart.WithAssertAndCast<ListViewWebPartDefinition>("model", value => value.RequireNotNull()); // save the old default view ID, then restore in OnAfterDeploy _currentListBindContext = XsltListViewWebPartModelHandler.LookupBindContext(host, wpModel.WebUrl, wpModel.WebId, wpModel.ListUrl, wpModel.ListTitle, wpModel.ListId, wpModel.ViewName, wpModel.ViewId, wpModel.TitleUrl); if (_currentListBindContext.TargetView != null) { _currentListBindContext.TargetView.DefaultView = true; _currentListBindContext.TargetView.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; }
internal static ListBindContext LookupBindContext(ListItemModelHost listItemModelHost, XsltListViewWebPartDefinition wpModel) { return LookupBindContext(listItemModelHost, wpModel.WebUrl, wpModel.WebId, wpModel.ListUrl, wpModel.ListTitle, wpModel.ListId, wpModel.ViewName, wpModel.ViewId, wpModel.TitleUrl); }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var wpModel = webPartModel.WithAssertAndCast<SiteFeedWebPartDefinition>("model", value => value.RequireNotNull()); var wpXml = WebpartXmlExtensions .LoadWebpartXmlDocument(BuiltInWebPartTemplates.SiteFeedWebPart) .ToString(); return wpXml; }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var typedModel = webPartModel.WithAssertAndCast<PictureLibrarySlideshowWebPartDefinition>("model", value => value.RequireNotNull()); var wpXml = WebpartXmlExtensions.LoadWebpartXmlDocument(BuiltInWebPartTemplates.PictureLibrarySlideshowWebPart); // TODO, specific XML processing return wpXml.ToString(); }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var wpModel = webPartModel.WithAssertAndCast<MyMembershipWebPartDefinition>("model", value => value.RequireNotNull()); var wpXml = WebpartXmlExtensions .LoadWebpartXmlDocument(BuiltInWebPartTemplates.MyMembershipWebPart); // TODO, process XML return wpXml.ToString(); }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var wpModel = webPartModel.WithAssertAndCast<ScriptEditorWebPartDefinition>("model", value => value.RequireNotNull()); var wpXml = WebpartXmlExtensions .LoadWebpartXmlDocument(BuiltInWebPartTemplates.ScriptEditorWebPart) //.SetOrUpdateProperty("Content", HttpUtility.HtmlEncode(wpModel.Content)) .SetOrUpdateProperty("Content", wpModel.Content, true) .ToString(); return wpXml; }
private ListBindContext LookupBindContext(ListItemModelHost listItemModelHost, XsltListViewWebPartDefinition wpModel) { var result = new 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; }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var definition = webPartModel.WithAssertAndCast<RefinementScriptWebPartDefinition>("model", value => value.RequireNotNull()); var xml = WebpartXmlExtensions.LoadWebpartXmlDocument(ProcessCommonWebpartProperties(BuiltInWebPartTemplates.RefinementScriptWebPart, webPartModel)); if (!string.IsNullOrEmpty(definition.SelectedRefinementControlsJson)) xml.SetOrUpdateProperty("SelectedRefinementControlsJson", definition.SelectedRefinementControlsJson); if (!string.IsNullOrEmpty(definition.EmptyMessage)) xml.SetOrUpdateProperty("EmptyMessage", definition.EmptyMessage); return xml.ToString(); }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { throw new SPMeta2NotSupportedException("UserCode web part provision is not supported by CSOM (SP API limitations) - https://officespdev.uservoice.com/forums/224641-general/suggestions/7300326-add-support-for-spusercodewebpart-import-via-limit"); var wpModel = webPartModel.WithAssertAndCast<UserCodeWebPartDefinition>("model", value => value.RequireNotNull()); var wpXml = WebpartXmlExtensions .LoadWebpartXmlDocument(BuiltInWebPartTemplates.UserCodeWebPart) .SetOrUpdateMetadataPropertyAttribute("type", "name", wpModel.AssemblyFullName) .SetOrUpdateMetadataPropertyAttribute("Solution", "SolutionId", wpModel.SolutionId.ToString("D")) //.SetOrUpdateMetadataPropertyAttribute("Solution", "xmlns", "http://schemas.microsoft.com/sharepoint/") .ToString(); return wpXml; }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var wpModel = webPartModel.WithAssertAndCast<ListViewWebPartDefinition>("model", value => value.RequireNotNull()); var bindContext = LookupBindContext(listItemModelHost, wpModel); var wpXml = WebpartXmlExtensions.LoadWebpartXmlDocument(BuiltInWebPartTemplates.ListViewWebPart) .SetOrUpdateListVieweWebPartProperty("ListName", bindContext.ListId.ToString("B")) .SetOrUpdateListVieweWebPartProperty("ListId", bindContext.ListId.ToString("D").ToLower()) //.SetOrUpdateListVieweWebPartProperty("ViewGuid", bindContext.ViewId.ToString("D").ToLower()) .SetTitleUrl(bindContext.TitleUrl) .ToString(); return wpXml; }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var definition = webPartModel.WithAssertAndCast<ContentBySearchWebPartDefinition>("model", value => value.RequireNotNull()); var xml = WebpartXmlExtensions.LoadWebpartXmlDocument(BuiltInWebPartTemplates.ContentBySearchWebPart); // JSON if (!string.IsNullOrEmpty(definition.DataProviderJSON)) xml.SetDataProviderJSON(definition.DataProviderJSON); // templates if (!string.IsNullOrEmpty(definition.GroupTemplateId)) xml.SetGroupTemplateId(definition.GroupTemplateId); if (!string.IsNullOrEmpty(definition.ItemTemplateId)) xml.SetItemTemplateId(definition.ItemTemplateId); if (!string.IsNullOrEmpty(definition.RenderTemplateId)) xml.SetRenderTemplateId(definition.RenderTemplateId); // item counts if (definition.NumberOfItems.HasValue) xml.SetNumberOfItems(definition.NumberOfItems.Value); if (definition.ResultsPerPage.HasValue) xml.SetResultsPerPage(definition.ResultsPerPage.Value); // misc if (!string.IsNullOrEmpty(definition.PropertyMappings)) xml.SetPropertyMappings(definition.PropertyMappings); if (definition.OverwriteResultPath.HasValue) xml.SetOverwriteResultPath(definition.OverwriteResultPath.Value); if (definition.ShouldHideControlWhenEmpty.HasValue) xml.SetShouldHideControlWhenEmpty(definition.ShouldHideControlWhenEmpty.Value); if (definition.LogAnalyticsViewEvent.HasValue) xml.SetLogAnalyticsViewEvent(definition.LogAnalyticsViewEvent.Value); if (definition.AddSEOPropertiesFromSearch.HasValue) xml.SetAddSEOPropertiesFromSearch(definition.AddSEOPropertiesFromSearch.Value); if (definition.StartingItemIndex.HasValue) xml.SetStartingItemIndex(definition.StartingItemIndex.Value); return xml.ToString(); }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var wpModel = webPartModel.WithAssertAndCast<XsltListViewWebPartDefinition>("model", value => value.RequireNotNull()); var bindContext = LookupBindContext(listItemModelHost, wpModel); var wpXml = WebpartXmlExtensions.LoadWebpartXmlDocument(BuiltInWebPartTemplates.XsltListViewWebPart) .SetListName(bindContext.ListId.ToString()) .SetListId(bindContext.ListId.ToString()) .SetTitleUrl(bindContext.TitleUrl) .SetJSLink(wpModel.JSLink); if (wpModel.CacheXslStorage.HasValue) wpXml.SetOrUpdateProperty("CacheXslStorage", wpModel.CacheXslStorage.Value.ToString()); if (wpModel.CacheXslTimeOut.HasValue) wpXml.SetOrUpdateProperty("CacheXslTimeOut", wpModel.CacheXslTimeOut.Value.ToString()); if (!string.IsNullOrEmpty(wpModel.BaseXsltHashKey)) wpXml.SetOrUpdateProperty("BaseXsltHashKey", wpModel.BaseXsltHashKey); // xsl if (!string.IsNullOrEmpty(wpModel.Xsl)) wpXml.SetOrUpdateCDataProperty("Xsl", wpModel.Xsl); if (!string.IsNullOrEmpty(wpModel.XslLink)) wpXml.SetOrUpdateProperty("XslLink", wpModel.XslLink); if (!string.IsNullOrEmpty(wpModel.GhostedXslLink)) wpXml.SetOrUpdateProperty("GhostedXslLink", wpModel.GhostedXslLink); // xml if (!string.IsNullOrEmpty(wpModel.XmlDefinition)) wpXml.SetOrUpdateCDataProperty("XmlDefinition", wpModel.Xsl); if (!string.IsNullOrEmpty(wpModel.XmlDefinitionLink)) wpXml.SetOrUpdateProperty("XmlDefinitionLink", wpModel.XmlDefinitionLink); #if !NET35 if (wpModel.ShowTimelineIfAvailable.HasValue) wpXml.SetOrUpdateProperty("ShowTimelineIfAvailable", wpModel.ShowTimelineIfAvailable.Value.ToString()); #endif return wpXml.ToString(); }
private void ProcessFieldValues(ListItemModelHost modelHost, ListItem listItem, ListItemFieldValuesDefinition fieldValues) { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = listItem, ObjectType = typeof(ListItem), ObjectDefinition = fieldValues, ModelHost = modelHost }); foreach (var fieldValue in fieldValues.Values) { if (!string.IsNullOrEmpty(fieldValue.FieldName)) { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Processing field value with Name: [{0}] and value: [{1}]", new object[] { fieldValue.FieldName, fieldValue.Value }); listItem[fieldValue.FieldName] = fieldValue.Value; } } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = listItem, ObjectType = typeof(ListItem), ObjectDefinition = fieldValues, ModelHost = modelHost }); }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { if (!listItemModelHost.HostWeb.IsObjectPropertyInstantiated("Id")) { var webContext = listItemModelHost.HostWeb.Context; webContext.Load(listItemModelHost.HostWeb, w => w.Id); webContext.ExecuteQueryWithTrace(); } var webId = listItemModelHost.HostWeb.Id.ToString(); var wpModel = webPartModel.WithAssertAndCast<ClientWebPartDefinition>("model", value => value.RequireNotNull()); var wpXml = WebpartXmlExtensions .LoadWebpartXmlDocument(BuiltInWebPartTemplates.ClientWebPart) .SetOrUpdateProperty("FeatureId", wpModel.FeatureId.ToString()) .SetOrUpdateProperty("ProductId", wpModel.ProductId.ToString()) .SetOrUpdateProperty("WebPartName", wpModel.WebPartName) .SetOrUpdateProperty("ProductWebId", webId) .ToString(); return wpXml; }
private static List LookupList(ListItemModelHost listItemModelHost, XsltListViewWebPartDefinition wpModel) { return LookupList(listItemModelHost.HostWeb, wpModel.ListUrl, wpModel.ListTitle, wpModel.ListId); }
public override void WithResolvingModelHost(ModelHostResolveContext modelHostContext) { var modelHost = modelHostContext.ModelHost; var model = modelHostContext.Model; var childModelType = modelHostContext.ChildModelType; var action = modelHostContext.Action; var listModeHost = modelHost.WithAssertAndCast<ListModelHost>("modelHost", value => value.RequireNotNull()); var listItemModel = model.WithAssertAndCast<ListItemDefinition>("model", value => value.RequireNotNull()); List list = null; Folder rootFolder = null; if (modelHost is ListModelHost) { list = (modelHost as ListModelHost).HostList; rootFolder = (modelHost as ListModelHost).HostList.RootFolder; if (!rootFolder.IsPropertyAvailable("ServerRelativeUrl")) { rootFolder.Context.Load(rootFolder, f => f.ServerRelativeUrl); rootFolder.Context.ExecuteQueryWithTrace(); } } else if (modelHost is FolderModelHost) { list = (modelHost as FolderModelHost).CurrentList; rootFolder = (modelHost as FolderModelHost).CurrentListItem.Folder; if (!rootFolder.IsPropertyAvailable("ServerRelativeUrl")) { rootFolder.Context.Load(rootFolder, f => f.ServerRelativeUrl); rootFolder.Context.ExecuteQueryWithTrace(); } } var item = EnsureListItem(list, rootFolder, listItemModel); var context = list.Context; // naaaaah, just gonna get a new one list item // keep it simple and safe, really really really safe with all that SharePoint stuff... // var currentItem = list.GetItemById(item.Id); //context.Load(currentItem); //context.ExecuteQueryWithTrace(); if (childModelType == typeof(ListItemFieldValueDefinition) || childModelType == typeof(ListItemFieldValuesDefinition)) { var listItemPropertyHost = new ListItemModelHost { HostListItem = item }; action(listItemPropertyHost); } else { action(item); } item.Update(); context.ExecuteQueryWithTrace(); }
protected override string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var typedDefinition = webPartModel.WithAssertAndCast<ContentByQueryWebPartDefinition>("model", value => value.RequireNotNull()); var wpXml = WebpartXmlExtensions.LoadWebpartXmlDocument(this.ProcessCommonWebpartProperties(BuiltInWebPartTemplates.ContentByQueryWebPart, webPartModel)); // xslt links if (!string.IsNullOrEmpty(typedDefinition.MainXslLink)) { var linkValue = typedDefinition.MainXslLink; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Original MainXslLink: [{0}]", linkValue); linkValue = TokenReplacementService.ReplaceTokens(new TokenReplacementContext { Value = linkValue, Context = listItemModelHost.HostClientContext }).Value; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Token replaced MainXslLink: [{0}]", linkValue); wpXml.SetOrUpdateProperty("MainXslLink", linkValue); } if (!string.IsNullOrEmpty(typedDefinition.ItemXslLink)) { var linkValue = typedDefinition.ItemXslLink; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Original ItemXslLink: [{0}]", linkValue); linkValue = TokenReplacementService.ReplaceTokens(new TokenReplacementContext { Value = linkValue, Context = listItemModelHost.HostClientContext }).Value; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Token replaced ItemXslLink: [{0}]", linkValue); wpXml.SetOrUpdateProperty("ItemXslLink", linkValue); } if (!string.IsNullOrEmpty(typedDefinition.HeaderXslLink)) { var linkValue = typedDefinition.HeaderXslLink; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Original HeaderXslLink: [{0}]", linkValue); linkValue = TokenReplacementService.ReplaceTokens(new TokenReplacementContext { Value = linkValue, Context = listItemModelHost.HostClientContext }).Value; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Token replaced HeaderXslLink: [{0}]", linkValue); wpXml.SetOrUpdateProperty("HeaderXslLink", linkValue); } // styles if (!string.IsNullOrEmpty(typedDefinition.ItemStyle)) wpXml.SetItemStyle(typedDefinition.ItemStyle); if (!string.IsNullOrEmpty(typedDefinition.GroupStyle)) wpXml.SetGroupStyle(typedDefinition.GroupStyle); // cache settings if (typedDefinition.UseCache.HasValue) wpXml.SetUseCache(typedDefinition.UseCache.ToString()); if (typedDefinition.CacheXslStorage.HasValue) wpXml.SetOrUpdateProperty("CacheXslStorage", typedDefinition.CacheXslStorage.ToString()); if (typedDefinition.CacheXslTimeOut.HasValue) wpXml.SetOrUpdateProperty("CacheXslTimeOut", typedDefinition.CacheXslTimeOut.ToString()); // item limit if (typedDefinition.ItemLimit.HasValue) wpXml.SetOrUpdateProperty("ItemLimit", typedDefinition.ItemLimit.ToString()); // mappings if (!string.IsNullOrEmpty(typedDefinition.DataMappings)) wpXml.SetOrUpdateProperty("DataMappings", typedDefinition.DataMappings); if (!string.IsNullOrEmpty(typedDefinition.DataMappingViewFields)) wpXml.SetOrUpdateProperty("DataMappingViewFields", typedDefinition.DataMappingViewFields); // misc if (typedDefinition.ShowUntargetedItems.HasValue) wpXml.SetOrUpdateProperty("ShowUntargetedItems", typedDefinition.ShowUntargetedItems.ToString()); if (typedDefinition.PlayMediaInBrowser.HasValue) wpXml.SetOrUpdateProperty("PlayMediaInBrowser", typedDefinition.PlayMediaInBrowser.ToString()); // FilterTypeXXX if (!string.IsNullOrEmpty(typedDefinition.FilterType1)) wpXml.SetOrUpdateProperty("FilterType1", typedDefinition.FilterType1); if (!string.IsNullOrEmpty(typedDefinition.FilterType2)) wpXml.SetOrUpdateProperty("FilterType2", typedDefinition.FilterType2); if (!string.IsNullOrEmpty(typedDefinition.FilterType3)) wpXml.SetOrUpdateProperty("FilterType3", typedDefinition.FilterType3); // FilterFieldXXX if (!string.IsNullOrEmpty(typedDefinition.FilterField1)) wpXml.SetOrUpdateProperty("FilterField1", typedDefinition.FilterField1); if (!string.IsNullOrEmpty(typedDefinition.FilterField2)) wpXml.SetOrUpdateProperty("FilterField2", typedDefinition.FilterField2); if (!string.IsNullOrEmpty(typedDefinition.FilterField3)) wpXml.SetOrUpdateProperty("FilterField3", typedDefinition.FilterField3); // FilterXXXIsCustomValue if (typedDefinition.Filter1IsCustomValue.HasValue) wpXml.SetOrUpdateProperty("Filter1IsCustomValue", typedDefinition.Filter1IsCustomValue.ToString()); if (typedDefinition.Filter2IsCustomValue.HasValue) wpXml.SetOrUpdateProperty("Filter2IsCustomValue", typedDefinition.Filter2IsCustomValue.ToString()); if (typedDefinition.Filter3IsCustomValue.HasValue) wpXml.SetOrUpdateProperty("Filter3IsCustomValue", typedDefinition.Filter3IsCustomValue.ToString()); // FilterValueXXX if (!string.IsNullOrEmpty(typedDefinition.FilterValue1)) wpXml.SetOrUpdateProperty("FilterValue1", typedDefinition.FilterValue1); if (!string.IsNullOrEmpty(typedDefinition.FilterValue2)) wpXml.SetOrUpdateProperty("FilterValue2", typedDefinition.FilterValue2); if (!string.IsNullOrEmpty(typedDefinition.FilterValue3)) wpXml.SetOrUpdateProperty("FilterValue3", typedDefinition.FilterValue3); var filterChainingOperatorType = "Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart+FilterChainingOperator, Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"; if (!string.IsNullOrEmpty(typedDefinition.Filter1ChainingOperator)) wpXml.SetTypedProperty("Filter1ChainingOperator", typedDefinition.Filter1ChainingOperator, filterChainingOperatorType); if (!string.IsNullOrEmpty(typedDefinition.Filter2ChainingOperator)) wpXml.SetTypedProperty("Filter2ChainingOperator", typedDefinition.Filter2ChainingOperator, filterChainingOperatorType); // sorting if (!string.IsNullOrEmpty(typedDefinition.SortBy)) wpXml.SetOrUpdateProperty("SortBy", typedDefinition.SortBy); if (!string.IsNullOrEmpty(typedDefinition.SortByDirection)) wpXml.SetTypedProperty("SortByDirection", typedDefinition.SortByDirection, "Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart+SortDirection, Microsoft.SharePoint.Publishing, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"); if (!string.IsNullOrEmpty(typedDefinition.SortByFieldType)) wpXml.SetOrUpdateProperty("SortByFieldType", typedDefinition.SortByFieldType); if (!string.IsNullOrEmpty(typedDefinition.GroupByDirection)) wpXml.SetTypedProperty("GroupByDirection", typedDefinition.GroupByDirection, "Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart+SortDirection, Microsoft.SharePoint.Publishing, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"); var filterOperatorType = "Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart+FilterFieldQueryOperator, Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"; // FilterOperatorXXX if (!string.IsNullOrEmpty(typedDefinition.FilterOperator1)) wpXml.SetTypedProperty("FilterOperator1", typedDefinition.FilterOperator1, filterOperatorType); if (!string.IsNullOrEmpty(typedDefinition.FilterOperator2)) wpXml.SetTypedProperty("FilterOperator2", typedDefinition.FilterOperator2, filterOperatorType); if (!string.IsNullOrEmpty(typedDefinition.FilterOperator3)) wpXml.SetTypedProperty("FilterOperator3", typedDefinition.FilterOperator3, filterOperatorType); // FilterDisplayValueXXX if (!string.IsNullOrEmpty(typedDefinition.FilterDisplayValue1)) wpXml.SetOrUpdateProperty("FilterDisplayValue1", typedDefinition.FilterDisplayValue1); if (!string.IsNullOrEmpty(typedDefinition.FilterDisplayValue2)) wpXml.SetOrUpdateProperty("FilterDisplayValue2", typedDefinition.FilterDisplayValue2); if (!string.IsNullOrEmpty(typedDefinition.FilterDisplayValue3)) wpXml.SetOrUpdateProperty("FilterDisplayValue3", typedDefinition.FilterDisplayValue3); // bindings if (typedDefinition.ServerTemplate.HasValue) wpXml.SetOrUpdateProperty("ServerTemplate", typedDefinition.ServerTemplate.ToString()); if (!string.IsNullOrEmpty(typedDefinition.ContentTypeName)) wpXml.SetOrUpdateProperty("ContentTypeName", typedDefinition.ContentTypeName); if (!string.IsNullOrEmpty(typedDefinition.ContentTypeBeginsWithId)) wpXml.SetOrUpdateProperty("ContentTypeBeginsWithId", typedDefinition.ContentTypeBeginsWithId); if (typedDefinition.ListId.HasGuidValue()) wpXml.SetTypedProperty("ListId", typedDefinition.ListId.Value.ToString("D"), "Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart+FilterChainingOperator, Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"); if (typedDefinition.ListGuid.HasGuidValue()) wpXml.SetOrUpdateProperty("ListGuid", typedDefinition.ListGuid.Value.ToString("D")); if (!string.IsNullOrEmpty(typedDefinition.ListName)) wpXml.SetOrUpdateProperty("ListName", typedDefinition.ListName); if (!string.IsNullOrEmpty(typedDefinition.WebUrl)) wpXml.SetOrUpdateProperty("WebUrl", typedDefinition.WebUrl); // overrides if (!string.IsNullOrEmpty(typedDefinition.ListsOverride)) wpXml.SetOrUpdateProperty("ListsOverride", typedDefinition.ListsOverride); if (!string.IsNullOrEmpty(typedDefinition.ViewFieldsOverride)) wpXml.SetOrUpdateProperty("ViewFieldsOverride", typedDefinition.ViewFieldsOverride); if (!string.IsNullOrEmpty(typedDefinition.QueryOverride)) wpXml.SetOrUpdateProperty("QueryOverride", typedDefinition.QueryOverride); if (!string.IsNullOrEmpty(typedDefinition.CommonViewFields)) wpXml.SetOrUpdateProperty("CommonViewFields", typedDefinition.CommonViewFields); if (typedDefinition.FilterByAudience.HasValue) wpXml.SetOrUpdateProperty("FilterByAudience", typedDefinition.FilterByAudience.ToString()); return wpXml.ToString(); }
private ClientXsltListViewWebPartDefinitionValidator.ListBindContext 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); else if (!string.IsNullOrEmpty(wpModel.ViewUrl)) { var views = list.Views; context.Load(views, v => v.Include(r => r.ServerRelativeUrl)); context.ExecuteQueryWithTrace(); view = views.ToArray() .FirstOrDefault(v => v.ServerRelativeUrl.ToUpper().EndsWith(wpModel.ViewUrl.ToUpper())); } 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; }
protected override void OnAfterDeploy(ListItemModelHost host, WebPartDefinitionBase webpart) { if (_currentListBindContext != null) { var context = host.HostClientContext; var wpModel = webpart.WithAssertAndCast<ListViewWebPartDefinition>("model", value => value.RequireNotNull()); var bindingContext = XsltListViewWebPartModelHandler.LookupBindContext(host, wpModel.WebUrl, wpModel.WebId, wpModel.ListUrl, wpModel.ListTitle, wpModel.ListId, wpModel.ViewName, wpModel.ViewId, wpModel.TitleUrl); // reverting back the dafult view var view = bindingContext.List.GetView(_currentListBindContext.DefaultViewId); view.DefaultView = true; view.Update(); context.ExecuteQueryWithTrace(); } }
protected override void OnBeforeDeploy(ListItemModelHost host, WebPartDefinitionBase webpart) { base.OnBeforeDeploy(host, webpart); var context = host.HostClientContext; var wpModel = webpart.WithAssertAndCast<XsltListViewWebPartDefinition>("model", value => value.RequireNotNull()); // save the old default view ID, then restore in OnAfterDeploy _currentListBindContext = LookupBindContext(host, wpModel); if (_currentListBindContext.TargetView != null) { _currentListBindContext.TargetView.DefaultView = true; _currentListBindContext.TargetView.Update(); context.ExecuteQueryWithTrace(); } }
public override void WithResolvingModelHost(ModelHostResolveContext modelHostContext) { var modelHost = modelHostContext.ModelHost; var model = modelHostContext.Model; var childModelType = modelHostContext.ChildModelType; var action = modelHostContext.Action; var folderHost = modelHost.WithAssertAndCast<FolderModelHost>("modelHost", value => value.RequireNotNull()); var moduleFile = model.WithAssertAndCast<ModuleFileDefinition>("model", value => value.RequireNotNull()); var web = folderHost.CurrentWeb; var file = ProcessFile(folderHost, moduleFile); var context = file.Context; if (childModelType == typeof(ListItemFieldValueDefinition)) { var fileListItem = file.ListItemAllFields; context.Load(fileListItem, i => i.Id, i => i.ParentList); context.ExecuteQueryWithTrace(); var list = fileListItem.ParentList; var item = list.GetItemById(fileListItem.Id); context.ExecuteQueryWithTrace(); var listItemPropertyHost = new ListItemModelHost { HostListItem = item }; action(listItemPropertyHost); item.Update(); context.ExecuteQueryWithTrace(); } else if (childModelType == typeof(PropertyDefinition)) { var propModelHost = new PropertyModelHost { CurrentFile = file }; action(propModelHost); context.ExecuteQueryWithTrace(); } else { action(file); context.ExecuteQueryWithTrace(); } }
internal static ListBindContext LookupBindContext(ListItemModelHost listItemModelHost, string webUrl, Guid? webId, string listUrl, string listTitle, Guid? listId, string viewTitle, Guid? viewId, string webPartTitleUrl ) { var result = new ListBindContext { }; var web = listItemModelHost.HostWeb; var context = listItemModelHost.HostWeb.Context; var targetWeb = listItemModelHost.HostWeb; if (webId.HasGuidValue() || !string.IsNullOrEmpty(webUrl)) { targetWeb = new LookupFieldModelHandler() .GetTargetWeb(listItemModelHost.HostClientContext.Site, webUrl, webId); } var list = LookupList(targetWeb, listUrl, listTitle, listId); View view = null; if (viewId.HasValue && viewId != default(Guid)) view = list.Views.GetById(viewId.Value); else if (!string.IsNullOrEmpty(viewTitle)) view = list.Views.GetByTitle(viewTitle); context.Load(list, l => l.Id); context.Load(list, l => l.DefaultViewUrl); context.Load(list, l => l.Title); // TODO, https://github.com/SubPointSolutions/spmeta2/issues/765 // list.DefaultView is not available, so a full fetch for list view is a must for SP2010. #if !NET35 context.Load(list, l => l.DefaultView); #endif if (view != null) { context.Load(view); context.ExecuteQueryWithTrace(); #if !NET35 result.OriginalView = list.DefaultView; result.OriginalViewId = list.DefaultView.Id; #endif result.TargetView = view; result.TargetViewId = view.Id; result.TitleUrl = view.ServerRelativeUrl; } else { context.ExecuteQueryWithTrace(); } result.ListId = list.Id; result.List = list; if (webPartTitleUrl == null) { if (string.IsNullOrEmpty(result.TitleUrl)) result.TitleUrl = list.DefaultViewUrl; } #if !NET35 result.DefaultViewId = list.DefaultView.Id; #endif return result; }
protected File GetCurrentPageFile(ListItemModelHost listItemModelHost) { var listItem = listItemModelHost.HostListItem; var filePath = listItem["FileRef"].ToString(); var web = listItem.ParentList.ParentWeb; return web.GetFileByServerRelativeUrl(filePath); }
protected virtual string GetWebpartXmlDefinition(ListItemModelHost listItemModelHost, WebPartDefinitionBase webPartModel) { var result = string.Empty; var context = listItemModelHost.HostListItem.Context; if (!string.IsNullOrEmpty(webPartModel.WebpartFileName)) { lock (_wpCacheLock) { var wpKey = webPartModel.WebpartFileName.ToLower(); if (_wpCache.ContainsKey(wpKey)) result = _wpCache[wpKey]; else { var rootWeb = listItemModelHost.HostSite.RootWeb; var rootWebContext = rootWeb.Context; var webPartCatalog = rootWeb.QueryAndGetListByUrl(BuiltInListDefinitions.Calalogs.Wp.GetListUrl()); //var webParts = webPartCatalog.GetItems(CamlQuery.CreateAllItemsQuery()); //rootWebContext.Load(webParts); //rootWebcontext.ExecuteQueryWithTrace(); ListItem targetWebPart = SearchItemByName(webPartCatalog, webPartCatalog.RootFolder, webPartModel.WebpartFileName); //foreach (var webPart in webParts) // if (webPart["FileLeafRef"].ToString().ToUpper() == webPartModel.WebpartFileName.ToUpper()) // targetWebPart = webPart; if (targetWebPart == null) throw new SPMeta2Exception(string.Format("Cannot find web part file by name:[{0}]", webPartModel.WebpartFileName)); var webPartFile = targetWebPart.File; rootWebContext.Load(webPartFile); rootWebContext.ExecuteQueryWithTrace(); // does not work for apps - https://github.com/SubPointSolutions/spmeta2/issues/174 //var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(listItemModelHost.HostclientContext, webPartFile.ServerRelativeUrl); //using (var reader = new StreamReader(fileInfo.Stream)) //{ // webPartXML = reader.ReadToEnd(); //} var data = webPartFile.OpenBinaryStream(); context.Load(webPartFile); context.ExecuteQueryWithTrace(); using (var reader = new StreamReader(data.Value)) { result = reader.ReadToEnd(); } if (!_wpCache.ContainsKey(wpKey)) _wpCache.Add(wpKey, result); else _wpCache[wpKey] = result; } } } if (!string.IsNullOrEmpty(webPartModel.WebpartType)) throw new Exception("WebpartType is not supported yet."); if (!string.IsNullOrEmpty(webPartModel.WebpartXmlTemplate)) result = webPartModel.WebpartXmlTemplate; return result; }