protected override void MapProperties(object modelHost, ListItem item, ContentPageDefinitionBase definition) { base.MapProperties(modelHost, item, definition); var typedDefinition = definition.WithAssertAndCast <FilterDisplayTemplateDefinition>("model", value => value.RequireNotNull()); item[BuiltInInternalFieldNames.ContentTypeId] = "0x0101002039C03B61C64EC4A04F5361F38510660400F643FF79F6BD764F8A469B6F153396EE"; if (!string.IsNullOrEmpty(typedDefinition.CrawlerXSLFileURL)) { var crawlerXSLFileValue = new FieldUrlValue { Url = typedDefinition.CrawlerXSLFileURL }; if (!string.IsNullOrEmpty(typedDefinition.CrawlerXSLFileDescription)) { crawlerXSLFileValue.Description = typedDefinition.CrawlerXSLFileDescription; } item["CrawlerXSLFile"] = crawlerXSLFileValue; } if (!string.IsNullOrEmpty(typedDefinition.CompatibleManagedProperties)) { item["CompatibleManagedProperties"] = typedDefinition.CompatibleManagedProperties; } if (typedDefinition.CompatibleSearchDataTypes.Count > 0) { item["CompatibleSearchDataTypes"] = typedDefinition.CompatibleSearchDataTypes.ToArray(); } }
protected override void MapProperties(object modelHost, ListItem item, ContentPageDefinitionBase definition) { base.MapProperties(modelHost, item, definition); var typedDefinition = definition.WithAssertAndCast <ItemControlTemplateDefinitionBase>("model", value => value.RequireNotNull()); if (typedDefinition.TargetControlTypes.Count > 0) { item["TargetControlType"] = typedDefinition.TargetControlTypes.ToArray(); } if (!string.IsNullOrEmpty(typedDefinition.PreviewURL)) { var htmlPreviewValue = new FieldUrlValue { Url = typedDefinition.PreviewURL }; if (!string.IsNullOrEmpty(typedDefinition.PreviewDescription)) { htmlPreviewValue.Description = typedDefinition.PreviewDescription; } item["HtmlDesignPreviewUrl"] = htmlPreviewValue; } }
protected override void MapProperties(object modelHost, ListItem item, ContentPageDefinitionBase definition) { var typedDefinition = definition.WithAssertAndCast <TemplateDefinitionBase>("model", value => value.RequireNotNull()); item["TemplateHidden"] = typedDefinition.HiddenTemplate; if (!string.IsNullOrEmpty(typedDefinition.Description)) { item["MasterPageDescription"] = typedDefinition.Description; } }
public override void DeployModel(object modelHost, DefinitionBase model) { var listModelHost = modelHost.WithAssertAndCast <FolderModelHost>("modelHost", value => value.RequireNotNull()); var folder = listModelHost.CurrentLibraryFolder; var templateModel = model.WithAssertAndCast <ContentPageDefinitionBase>("model", value => value.RequireNotNull()); CurrentModel = templateModel; DeployPage(modelHost, listModelHost.CurrentLibrary, folder, templateModel); }
protected string GetSafePageFileName(ContentPageDefinitionBase page) { var fileName = page.FileName; if (!fileName.EndsWith("." + FileExtension)) { fileName += "." + FileExtension; } return(fileName); }
protected override void MapProperties(object modelHost, ListItem item, ContentPageDefinitionBase definition) { var typedDefinition = definition.WithAssertAndCast <MasterPagePreviewDefinition>("model", value => value.RequireNotNull()); item[BuiltInInternalFieldNames.ContentTypeId] = BuiltInContentTypeId.MasterPagePreview; if (typedDefinition.UIVersion.Count > 0) { item["UIVersion"] = string.Join(";#", typedDefinition.UIVersion.ToArray()); } }
private void DeployPage(object modelHost, SPList list, SPFolder folder, ContentPageDefinitionBase definition) { var web = list.ParentWeb; var targetPage = GetCurrentObject(folder, definition); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = targetPage == null ? null : targetPage.File, ObjectType = typeof(SPFile), ObjectDefinition = definition, ModelHost = modelHost }); if (targetPage == null) { targetPage = CreateObject(modelHost, folder, definition); } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = targetPage.File, ObjectType = typeof(SPFile), ObjectDefinition = definition, ModelHost = modelHost }); ModuleFileModelHandler.WithSafeFileOperation(list, folder, targetPage.Url, GetSafePageFileName(definition), definition.Content, definition.NeedOverride, null, afterFile => { var pageItem = afterFile.Properties; pageItem["vti_title"] = definition.Title; MapProperties(modelHost, pageItem, definition); //pageItem.SystemUpdate(); }); }
protected SPListItem GetCurrentObject(SPFolder folder, ContentPageDefinitionBase definition) { // TODO, CAML query var pageName = GetSafePageFileName(definition); foreach (SPFile file in folder.Files) { if (file.Name.ToUpper() == pageName.ToUpper()) { return(file.Item); } } return(null); }
protected override void MapProperties(object modelHost, ListItem item, ContentPageDefinitionBase definition) { base.MapProperties(modelHost, item, definition); var typedDefinition = definition.WithAssertAndCast <ItemDisplayTemplateDefinition>("model", value => value.RequireNotNull()); item[BuiltInInternalFieldNames.ContentTypeId] = "0x0101002039C03B61C64EC4A04F5361F38510660300500DA5E"; //item["DisplayTemplateLevel"] = "Item"; if (!string.IsNullOrEmpty(typedDefinition.ManagedPropertyMappings)) { item["ManagedPropertyMapping"] = typedDefinition.ManagedPropertyMappings; } }
private SPListItem CreateObject(object modelHost, SPFolder folder, ContentPageDefinitionBase definition) { var pageName = GetSafePageFileName(definition); var fileContent = definition.Content; ModuleFileModelHandler.DeployModuleFile(folder, SPUrlUtility.CombineUrl(folder.ServerRelativeUrl, pageName), pageName, fileContent, true, null, null); return(GetCurrentObject(folder, definition)); }
protected override void MapProperties(object modelHost, ListItem item, ContentPageDefinitionBase definition) { var typedDefinition = definition.WithAssertAndCast <WebPartGalleryFileDefinition>("model", value => value.RequireNotNull()); if (!string.IsNullOrEmpty(typedDefinition.Group)) { item["Group"] = typedDefinition.Group; } if (!string.IsNullOrEmpty(typedDefinition.Description)) { item["WebPartDescription"] = typedDefinition.Description; } item["QuickAddGroups"] = typedDefinition.RecommendationSettings.ToArray(); }
protected override void MapProperties(object modelHost, ListItem item, ContentPageDefinitionBase definition) { base.MapProperties(modelHost, item, definition); var typedDefinition = definition.WithAssertAndCast <JavaScriptDisplayTemplateDefinition>("model", value => value.RequireNotNull()); item[BuiltInInternalFieldNames.ContentTypeId] = "0x0101002039C03B61C64EC4A04F5361F3851068"; if (!string.IsNullOrEmpty(typedDefinition.Standalone)) { item["DisplayTemplateJSTemplateType"] = typedDefinition.Standalone; } if (!string.IsNullOrEmpty(typedDefinition.TargetControlType)) { item["DisplayTemplateJSTargetControlType"] = typedDefinition.TargetControlType; } if (!string.IsNullOrEmpty(typedDefinition.TargetListTemplateId)) { item["DisplayTemplateJSTargetListTemplate"] = typedDefinition.TargetListTemplateId; } if (!string.IsNullOrEmpty(typedDefinition.TargetScope)) { item["DisplayTemplateJSTargetScope"] = typedDefinition.TargetScope; } if (!string.IsNullOrEmpty(typedDefinition.IconUrl)) { var iconValue = new FieldUrlValue { Url = typedDefinition.IconUrl }; if (!string.IsNullOrEmpty(typedDefinition.IconDescription)) { iconValue.Description = typedDefinition.IconDescription; } item["DisplayTemplateJSIconUrl"] = iconValue; } }
protected override void MapProperties(object modelHost, ListItem item, ContentPageDefinitionBase definition) { base.MapProperties(modelHost, item, definition); var typedTemplateModel = definition.WithAssertAndCast <ControlDisplayTemplateDefinition>("model", value => value.RequireNotNull()); item[BuiltInInternalFieldNames.ContentTypeId] = "0x0101002039C03B61C64EC4A04F5361F385106601"; if (!string.IsNullOrEmpty(typedTemplateModel.CrawlerXSLFileURL)) { var crawlerXSLFileValue = new FieldUrlValue { Url = typedTemplateModel.CrawlerXSLFileURL }; if (!string.IsNullOrEmpty(typedTemplateModel.CrawlerXSLFileDescription)) { crawlerXSLFileValue.Description = typedTemplateModel.CrawlerXSLFileDescription; } item["CrawlerXSLFile"] = crawlerXSLFileValue; } }
protected override void MapProperties(object modelHost, Hashtable fileProperties, ContentPageDefinitionBase definition) { base.MapProperties(modelHost, fileProperties, definition); var typedDefinition = definition.WithAssertAndCast <FilterDisplayTemplateDefinition>("model", value => value.RequireNotNull()); fileProperties[BuiltInInternalFieldNames.ContentTypeId] = "0x0101002039C03B61C64EC4A04F5361F38510660400F643FF79F6BD764F8A469B6F153396EE"; if (!string.IsNullOrEmpty(typedDefinition.CrawlerXSLFileURL)) { var crawlerXSLFileValue = new SPFieldUrlValue { Url = typedDefinition.CrawlerXSLFileURL }; if (!string.IsNullOrEmpty(typedDefinition.CrawlerXSLFileDescription)) { crawlerXSLFileValue.Description = typedDefinition.CrawlerXSLFileDescription; } fileProperties["CrawlerXSLFile"] = crawlerXSLFileValue.ToString(); } if (!string.IsNullOrEmpty(typedDefinition.CompatibleManagedProperties)) { fileProperties["CompatibleManagedProperties"] = typedDefinition.CompatibleManagedProperties; } if (typedDefinition.CompatibleSearchDataTypes.Count > 0) { var multiChoiceValue = new SPFieldMultiChoiceValue(); foreach (var value in typedDefinition.CompatibleSearchDataTypes) { multiChoiceValue.Add(value); } fileProperties["CompatibleSearchDataTypes"] = multiChoiceValue.ToString(); } }
public override void DeployModel(object modelHost, DefinitionBase model) { var folderModelHost = modelHost.WithAssertAndCast <FolderModelHost>("modelHost", value => value.RequireNotNull()); var definition = model.WithAssertAndCast <ContentPageDefinitionBase>("model", value => value.RequireNotNull()); CurrentModel = definition; //var definition = model.WithAssertAndCast<ControlDisplayTemplateDefinition>("model", value => value.RequireNotNull()); var folder = folderModelHost.CurrentListFolder; var list = folderModelHost.CurrentList; var context = folder.Context; var pageName = GetSafePageFileName(definition); var currentPageFile = GetItemFile(list, folder, pageName); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentPageFile, ObjectType = typeof(File), ObjectDefinition = definition, ModelHost = modelHost }); ModuleFileModelHandler.WithSafeFileOperation(list, currentPageFile, f => { var file = new FileCreationInformation(); file.Url = pageName; file.Content = definition.Content; file.Overwrite = definition.NeedOverride; return(folder.Files.Add(file)); }, newFile => { var newFileItem = newFile.ListItemAllFields; context.Load(newFileItem); context.ExecuteQueryWithTrace(); newFileItem["Title"] = definition.Title; MapProperties(modelHost, newFileItem, definition); newFileItem.Update(); context.ExecuteQueryWithTrace(); }); currentPageFile = GetItemFile(folderModelHost.CurrentList, folder, pageName); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentPageFile, ObjectType = typeof(File), ObjectDefinition = definition, ModelHost = modelHost }); context.ExecuteQueryWithTrace(); }
protected abstract void MapProperties(object modelHost, ListItem item, ContentPageDefinitionBase definition);
protected override void MapProperties(object modelHost, ListItem item, ContentPageDefinitionBase definition) { }
protected override void MapProperties(object modelHost, Hashtable fileProperties, ContentPageDefinitionBase definition) { var typedTemplateModel = definition.WithAssertAndCast <TemplateDefinitionBase>("model", value => value.RequireNotNull()); //fileProperties["TemplateHidden"] = typedTemplateModel.HiddenTemplate.ToString(); fileProperties["TemplateHidden"] = typedTemplateModel.HiddenTemplate.ToString(); if (!string.IsNullOrEmpty(typedTemplateModel.Description)) { fileProperties["MasterPageDescription"] = typedTemplateModel.Description; } }
protected override void MapProperties(object modelHost, System.Collections.Hashtable fileProperties, ContentPageDefinitionBase definition) { }
protected abstract void MapProperties(object modelHost, Hashtable fileProperties, ContentPageDefinitionBase definition);
protected override void MapProperties(object modelHost, System.Collections.Hashtable fileProperties, ContentPageDefinitionBase definition) { var typedTemplateModel = definition.WithAssertAndCast <MasterPagePreviewDefinition>("model", value => value.RequireNotNull()); fileProperties[BuiltInInternalFieldNames.ContentTypeId] = BuiltInContentTypeId.MasterPagePreview; if (typedTemplateModel.UIVersion.Count > 0) { var value = new SPFieldMultiChoiceValue(); foreach (var v in typedTemplateModel.UIVersion) { value.Add(v); } fileProperties["UIVersion"] = value.ToString(); } }
protected override void MapProperties(object modelHost, Hashtable fileProperties, ContentPageDefinitionBase definition) { base.MapProperties(modelHost, fileProperties, definition); var typedTemplateModel = definition.WithAssertAndCast <ItemControlTemplateDefinitionBase>("model", value => value.RequireNotNull()); if (typedTemplateModel.TargetControlTypes.Count > 0) { var multiChoiceValue = new SPFieldMultiChoiceValue(); foreach (var value in typedTemplateModel.TargetControlTypes) { multiChoiceValue.Add(value); } fileProperties["TargetControlType"] = multiChoiceValue.ToString(); } if (!string.IsNullOrEmpty(typedTemplateModel.PreviewURL)) { var htmlPreviewValue = new SPFieldUrlValue { Url = typedTemplateModel.PreviewURL }; if (!string.IsNullOrEmpty(typedTemplateModel.PreviewDescription)) { htmlPreviewValue.Description = typedTemplateModel.PreviewDescription; } fileProperties["HtmlDesignPreviewUrl"] = htmlPreviewValue.ToString(); } }
protected override void MapProperties(object modelHost, Hashtable fileProperties, ContentPageDefinitionBase definition) { var typedDefinition = definition.WithAssertAndCast <WebPartGalleryFileDefinition>("model", value => value.RequireNotNull()); if (!string.IsNullOrEmpty(typedDefinition.Group)) { fileProperties["Group"] = typedDefinition.Group; } if (!string.IsNullOrEmpty(typedDefinition.Description)) { fileProperties["WebPartDescription"] = typedDefinition.Description; } var recSettingsValue = new SPFieldMultiChoiceValue(); foreach (var value in typedDefinition.RecommendationSettings) { recSettingsValue.Add(value); } fileProperties["QuickAddGroups"] = recSettingsValue.ToString(); }
protected override void MapProperties(object modelHost, Hashtable fileProperties, ContentPageDefinitionBase definition) { var typedTemplateModel = definition.WithAssertAndCast <TemplateDefinitionBase>("model", value => value.RequireNotNull()); // SSOM provision for display templates sometimes gives invalid type case error #440 // HiddenTemplate.ToString() happens to fails on some SharePoint's environentns // 1:0 works well // https://github.com/SubPointSolutions/spmeta2/issues/440 fileProperties["TemplateHidden"] = typedTemplateModel.HiddenTemplate ? 1 : 0; if (!string.IsNullOrEmpty(typedTemplateModel.Description)) { fileProperties["MasterPageDescription"] = typedTemplateModel.Description; } }