protected virtual SPListTemplate ResolveListTemplate(SPWeb web, ListDefinition listModel) { // internal names would be with '.STP', so just a little bit easier to define and find var templateName = listModel.TemplateName.ToUpper().Replace(".STP", string.Empty); var listTemplate = web.ListTemplates .OfType <SPListTemplate>() .FirstOrDefault(t => t.InternalName.ToUpper().Replace(".STP", string.Empty) == templateName); if (listTemplate == null) { TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Searching list template in Site.GetCustomListTemplates(web)"); var customListTemplates = web.Site.GetCustomListTemplates(web); listTemplate = customListTemplates .OfType <SPListTemplate>() .FirstOrDefault(t => t.InternalName.ToUpper().Replace(".STP", string.Empty) == templateName); } if (listTemplate == null) { throw new SPMeta2Exception(string.Format("Can't find custom list template with internal Name:[{0}]", listModel.TemplateName)); } return(listTemplate); }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanDeployDocumentItemContentTypeLinkDefinition() { var customerReportContentType = new ContentTypeDefinition { Name = "Customer Report", Id = new Guid("1836765c-6264-479b-a95b-a553a3d14ba3"), ParentContentTypeId = BuiltInContentTypeId.Document, Group = "SPMeta2.Samples" }; var customerInfoList = new ListDefinition { Title = "Customer Reports", Description = "A list to store customer reports.", TemplateType = BuiltInListTemplateTypeId.DocumentLibrary, Url = "CustomerReports", ContentTypesEnabled = true }; var model = SPMeta2Model.NewWebModel(web => { web.AddList(customerInfoList, list => { list.AddContentTypeLink(customerReportContentType); }); }); DeployModel(model); }
public void CanDeployResetRoleInheritanceDefinition_OnList() { var listDef = new ListDefinition { Title = "Public records", TemplateType = BuiltInListTemplateTypeId.GenericList, CustomUrl = "lists/public-records", }; var model = SPMeta2Model.NewWebModel(web => { web.AddList(listDef, list => { list.AddResetRoleInheritance(new ResetRoleInheritanceDefinition(), resetList => { // resetList is your list but after resetting role inheritance // build your model as usual // resetList.AddListView(...) }); }); }); DeployModel(model); }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanDeployListItemContentTypeLinkDefinition() { var customerInfoContentType = new ContentTypeDefinition { Name = "Customer Information", Id = new Guid("e33acc19-6d61-43b0-a313-4177065cd7c3"), ParentContentTypeId = BuiltInContentTypeId.Item, Group = "SPMeta2.Samples" }; var customerInfoList = new ListDefinition { Title = "Customer Information", Description = "A list to store customer information.", TemplateType = BuiltInListTemplateTypeId.GenericList, Url = "CustomerInfo", ContentTypesEnabled = true }; var model = SPMeta2Model.NewWebModel(web => { web.AddList(customerInfoList, list => { list.AddContentTypeLink(customerInfoContentType); }); }); DeployModel(model); }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanDeployListByTemplateId() { var genericList = new ListDefinition { Title = "Generic list", Description = "A generic list.", TemplateType = BuiltInListTemplateTypeId.GenericList, Url = "GenericList" }; var documentLibrary = new ListDefinition { Title = "Document library", Description = "A document library.", TemplateType = BuiltInListTemplateTypeId.DocumentLibrary, Url = "DocumentLibrary" }; var model = SPMeta2Model.NewWebModel(web => { web.AddList(genericList); web.AddList(documentLibrary); }); DeployModel(model); }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanDeploySimpleListFieldLinkDefinition() { var fieldDef = new TextFieldDefinition { Title = "Customer number", InternalName = "m2CustomNumber", Id = new Guid("87247c7d-1ecc-4503-bfd5-21f107b442fb") }; var listDef = new ListDefinition { Title = "Customers", TemplateType = BuiltInListTemplateTypeId.GenericList, CustomUrl = "lists/customers", }; var siteModel = SPMeta2Model.NewSiteModel(site => { site.AddTextField(fieldDef); }); var webModel = SPMeta2Model.NewWebModel(web => { web.AddList(listDef, list => { // will add a link to the site level field list.AddListFieldLink(fieldDef); }); }); DeployModel(siteModel); DeployModel(webModel); }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanDeploySimpleListViewsWithCustomUrl() { var returnedDocuments = new ListViewDefinition { Title = "Returned Documents", Url = "Returned.aspx", Fields = new Collection <string> { BuiltInInternalFieldNames.ID, BuiltInInternalFieldNames.FileLeafRef } }; var documentLibrary = new ListDefinition { Title = "CustomerDocuments", Description = "A customr document library.", TemplateType = BuiltInListTemplateTypeId.DocumentLibrary, Url = "CustomerDocuments" }; var model = SPMeta2Model.NewWebModel(web => { web.AddList(documentLibrary, list => { list.AddListView(returnedDocuments); }); }); DeployModel(model); }
public static string GetServerRelativeUrl(this ListDefinition listDef, Web web) { #pragma warning disable 618 return(UrlUtility.CombineUrl(web.ServerRelativeUrl, listDef.GetListUrl())); #pragma warning restore 618 }
public FolderDefinition(ListDefinition parent, string name) { Name = name; Parent = parent; roleAssociations = new List <RoleAssociation <FolderDefinition> >(); }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanDeploySimpleSecurityGroupLinkDefinitionToList() { var auditors = new SecurityGroupDefinition { Name = "External Auditors", Description = "External auditors group." }; var auditorsList = new ListDefinition { Title = "Auditors documents", TemplateType = BuiltInListTemplateTypeId.DocumentLibrary, CustomUrl = "audit-docs" }; // add group to the site first var siteModel = SPMeta2Model.NewSiteModel(site => { site.AddSecurityGroup(auditors); }); // assign group to the list, via .AddSecurityGroupLink() method var webModel = SPMeta2Model.NewWebModel(web => { web.AddList(auditorsList, list => { list.AddSecurityGroupLink(auditors); }); }); DeployModel(siteModel); DeployModel(webModel); }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanDeployPropertyBagUnderList() { var listTag = new PropertyDefinition { Key = "m2_list_tag", Value = "m2_list_tag_value", }; var listType = new PropertyDefinition { Key = "m2_web_type", Value = "m2_web_type_value", }; var listWithProperties = new ListDefinition { Title = "List with properties", Description = "List with some properties.", TemplateType = BuiltInListTemplateTypeId.GenericList, Url = "ListWithProperties" }; var model = SPMeta2Model.NewWebModel(web => { web.AddList(listWithProperties, list => { list .AddProperty(listTag) .AddProperty(listType); }); }); DeployModel(model); }
public void Deploy_Lists() { // Step 1, define lists var customerDocuments = new ListDefinition { Title = "Customer documents", Url = "CustomerDocs", Description = "Stores customer related documents.", TemplateType = BuiltInListTemplateTypeId.DocumentLibrary }; var customerTasks = new ListDefinition { Title = "Customer tasks", Url = "CustomerTasks", Description = "Stores customer related tasks.", TemplateType = BuiltInListTemplateTypeId.TasksWithTimelineAndHierarchy }; // Step 2, define web model and artifact relationships - add feature to the web var model = SPMeta2Model .NewWebModel(web => { web .AddList(customerDocuments) .AddList(customerTasks); }); // Step 3, deploy model DeployWebModel(model); }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanDeploySimpleFolders() { var activeDocsFolder = new FolderDefinition { Name = "Active documents" }; var archiveFolder = new FolderDefinition { Name = "Archive" }; var listWithFolders = new ListDefinition { Title = "List with folders", Description = "Custom list with folders.", TemplateType = BuiltInListTemplateTypeId.GenericList, Url = "ListWithFolders" }; var model = SPMeta2Model.NewWebModel(web => { web.AddList(listWithFolders, list => { list .AddFolder(activeDocsFolder) .AddFolder(archiveFolder); }); }); DeployModel(model); }
private void TestModuleFileDeploymentToList(ListDefinition list) { var blogSite = ModelGeneratorService.GetRandomDefinition <WebDefinition>(def => { def.WebTemplate = BuiltInWebTemplates.Collaboration.Blog; }); var model = SPMeta2Model .NewWebModel(web => { web.AddWeb(blogSite, blogWeb => { blogWeb.AddList(list, rndList => { rndList.AddModuleFile(new ModuleFileDefinition { FileName = "AllItems.aspx", Content = Encoding.Default.GetBytes(PageTemplates.CustomAllItemsPage), Overwrite = true }); rndList.AddWelcomePage(new WelcomePageDefinition { Url = "AllItems.aspx" }); }); }); }); TestModels(new ModelNode[] { model }); }
private static IActionDefinition[] GetActions(FormItem form) { var list = new List <IActionDefinition>(); var actionDefinitions = new[] { ListDefinition.Parse(form.SaveActions), ListDefinition.Parse(form.CheckActions) }; foreach (var actionDefinition in actionDefinitions) { if (actionDefinition.Groups.Any() && actionDefinition.Groups.First().ListItems.Any()) { foreach (var groupDefinition in actionDefinition.Groups) { list.AddRange( groupDefinition.ListItems.Select(li => new ActionDefinition(li.ItemID, li.Parameters) { UniqueKey = li.Unicid })); } } } return(list.ToArray()); }
public static void ListElement(object id, string element) { if (lists.ContainsKey(id.ToString())) { ListDefinition def = lists [id.ToString()]; if (lastListId != id.ToString()) { EndList(); Console.Write(def.Begin); LogFileWrite(def.Begin); } Console.Write(def.Before); Console.Write(element.ToString()); Console.Write(def.After); LogFileWrite(def.Before); LogFileWrite(element.ToString()); LogFileWrite(def.After); lastListId = id.ToString(); } else { Message("Error! Invalid list ID in ListElement (", id, ", ", element, ")"); } }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanHideContentTypesInList() { var newAnnualReportContentType = new ContentTypeDefinition { Name = "M2 Annual Report 2015", Id = new Guid("7B3378FF-11DF-430B-830F-C63FABA4712F"), ParentContentTypeId = BuiltInContentTypeId.Item, Group = "SPMeta2.Samples" }; var oldAnnualReportContentType = new ContentTypeDefinition { Name = "M2 Annual Report 2014", Id = new Guid("DEB586C5-ED08-4D06-98F6-9FC5002986D2"), ParentContentTypeId = BuiltInContentTypeId.Item, Group = "SPMeta2.Samples" }; var annualReportsList = new ListDefinition { Title = "M2 Annual Reports", Description = "A generic list.", TemplateType = BuiltInListTemplateTypeId.GenericList, ContentTypesEnabled = true, Url = "M2AnnualReports" }; var siteModel = SPMeta2Model.NewSiteModel(site => { site .AddContentType(newAnnualReportContentType) .AddContentType(oldAnnualReportContentType); }); var webModel = SPMeta2Model.NewWebModel(web => { web.AddList(annualReportsList, list => { list .AddContentTypeLink(newAnnualReportContentType) .AddContentTypeLink(oldAnnualReportContentType) .AddHideContentTypeLinks(new HideContentTypeLinksDefinition { ContentTypes = new List <ContentTypeLinkValue> { new ContentTypeLinkValue { ContentTypeName = "Item" }, new ContentTypeLinkValue { ContentTypeName = oldAnnualReportContentType.Name } } }); }); }); DeployModel(siteModel); DeployModel(webModel); }
protected virtual void ProcessLocalization(List obj, ListDefinition definition) { ProcessGenericLocalization(obj, new Dictionary <string, List <ValueForUICulture> > { { "TitleResource", definition.TitleResource }, { "DescriptionResource", definition.DescriptionResource }, }); }
private SPList GetOrCreateList( object modelHost, SPWeb web, ListDefinition listModel) { var result = GetListByUrl(web, listModel); if (result == null) { var listId = default(Guid); // "SPBug", there are two ways to create lists // (1) by TemplateName (2) by TemplateType if (listModel.TemplateType > 0) { listId = web.Lists.Add(listModel.Url, listModel.Description, (SPListTemplateType)listModel.TemplateType); } else if (!string.IsNullOrEmpty(listModel.TemplateName)) { // TODO, add some validation var listTemplate = web.ListTemplates[listModel.TemplateName]; web.Lists.Add(listModel.Url, listModel.Description, listTemplate); } else { throw new ArgumentException("TemplateType or TemplateName must be defined"); } result = web.Lists[listId]; InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = result, ObjectType = typeof(SPList), ObjectDefinition = listModel, ModelHost = modelHost }); } else { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = result, ObjectType = typeof(SPList), ObjectDefinition = listModel, ModelHost = modelHost }); } return(result); }
//[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); }
private void Create() { belongToProjectField = GetBelognToProjectField(); documentResponsibleField = GetDocumentResponsibleField(); documentTypeField = GetDocumentTypeField(); expirationDateField = GetExpirationDateField(); projectDocumentsList = GetProjectDocumentsList(); projectDocumentContemtType = GetProjectDocumentContemtType(); projectDocumentsListView = GetProjectDocumentsListView(); }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanDeployLookupFieldBindedToList() { var leadTypeLookup = new LookupFieldDefinition { Title = "Lead Type", InternalName = "m2LeadType", Group = "SPMeta2.Samples", Id = new Guid("FEFC30A7-3B38-4034-BB2A-FFD538D46A63") }; var lookupFieldModel = SPMeta2Model.NewSiteModel(site => { site .AddField(leadTypeLookup); }); var leadRecords = new ListDefinition { Title = "Lead Records", Description = "A generic list.", TemplateType = BuiltInListTemplateTypeId.GenericList, Url = "m2LeadRecordsList" }; var leadRecordTypes = new ListDefinition { Title = "Lead Record Types", Description = "A generic list.", TemplateType = BuiltInListTemplateTypeId.GenericList, Url = "m2LeadRecordTypesList" }; var webModel = SPMeta2Model.NewWebModel(web => { web .AddList(leadRecords, list => { list.AddListFieldLink(leadTypeLookup); }) .AddList(leadRecordTypes); }); // 1. deploy lookup field without bindings DeployModel(lookupFieldModel); // 2. deploy lists DeployModel(webModel); // 3. update binding for the lookup field // LookupList/LookupListId could also be used leadTypeLookup.LookupListTitle = leadRecordTypes.Title; // 4. deploy lookup field again, so that it will be binded DeployModel(lookupFieldModel); }
public void Deploy_ContentTypesToList() { // Step 1, define security groups var contractsList = new ListDefinition { Title = "Customer contracts", Url = "CustomerContracts", Description = "Stores customer related contracts.", TemplateType = BuiltInListTemplateTypeId.DocumentLibrary, ContentTypesEnabled = true }; var standardContract = new ContentTypeDefinition { Id = new Guid("49fbbb62-f8cd-4372-94a0-756e55a8945e"), Name = "Standard Contract", ParentContentTypeId = BuiltInContentTypeId.Document, Group = SampleConsts.DefaultMetadataGroup }; var legacyContract = new ContentTypeDefinition { Id = new Guid("ba049ddb-962a-4b8e-80a0-2bd10a6c4a88"), Name = "Legacy Contract", ParentContentTypeId = BuiltInContentTypeId.Document, Group = SampleConsts.DefaultMetadataGroup }; // Step 2, define web model and artifact relationships - add security groups t the web // Deploy site model first - content types to site var siteModel = SPMeta2Model .NewSiteModel(site => { site .AddContentType(standardContract) .AddContentType(legacyContract); }); DeploySiteModel(siteModel); // deploy web model - list and add content type links to list var webModel = SPMeta2Model .NewWebModel(web => { web .AddList(contractsList, list => { list .AddContentTypeLink(standardContract) .AddContentTypeLink(legacyContract); }); }); DeployWebModel(webModel); }
private static void List(object id, object before, object after, object begin, object end) { ListDefinition def = new ListDefinition { Id = id.ToString(), Before = before.ToString(), After = after.ToString(), Begin = begin.ToString(), End = end.ToString() }; lists [def.Id] = def; }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanDeploySimpleSP2013WorkflowSubscriptionToList() { var writeToHistoryListWorkflow = new SP2013WorkflowDefinition { DisplayName = "M2 - Write to history list", Override = true, Xaml = WorkflowTemplates.WriteToHistoryListWorkflow }; var taskList = new ListDefinition { Title = "Workflow Enabled List Tasks", TemplateType = BuiltInListTemplateTypeId.Tasks, Url = "m2WorkflowEnabledListTasks" }; var historyList = new ListDefinition { Title = "Workflow Enabled List History", TemplateType = BuiltInListTemplateTypeId.WorkflowHistory, Url = "m2WorkflowEnabledListHistory" }; var workflowEnabledList = new ListDefinition { Title = "Workflow Enabled List", Description = "Workflow enabled list.", TemplateType = BuiltInListTemplateTypeId.GenericList, Url = "WorkflowEnabledList" }; var model = SPMeta2Model.NewWebModel(web => { web .AddSP2013Workflow(writeToHistoryListWorkflow) .AddList(historyList) .AddList(taskList) .AddList(workflowEnabledList, list => { list .AddSP2013WorkflowSubscription(new SP2013WorkflowSubscriptionDefinition { Name = "Write To History List Workflow", WorkflowDisplayName = writeToHistoryListWorkflow.DisplayName, HistoryListUrl = historyList.GetListUrl(), TaskListUrl = taskList.GetListUrl() }); }); }); DeployModel(model); }
public void Create() { projectStatusField = GetProjectStatusField(); startDateField = GetStartDateField(); teamField = GetTeamField(); departmentField = GetDepartmentField(); endDateField = GetEndDateField(); projectManagerField = GetProjectManagerField(); projectValueField = GetProjectValueField(); projectContemtType = GetProjectContemtType(); projectsList = GetProjectsList(); managedProjectsListView = GetManagedProjectsListView(); }
public void TranslateListDefinition(List <string> output, ListDefinition list) { output.Add("["); for (int i = 0; i < list.Items.Length; ++i) { if (i > 0) { output.Add(", "); } this.TranslateExpression(output, list.Items[i]); } output.Add("]"); }
//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)] public void CanDeployPropertyBagUnderFolder() { var folderTag = new PropertyDefinition { Key = "m2_folder_tag", Value = "m2_folder_tag_value", }; var folderType = new PropertyDefinition { Key = "m2_folder_type", Value = "m2_folder_type_value", }; var listWithProperties = new ListDefinition { Title = "List with properties", Description = "List with some properties.", TemplateType = BuiltInListTemplateTypeId.GenericList, Url = "ListWithProperties" }; var fodlerWithProperties = new FolderDefinition { Name = "folder with properties" }; var model = SPMeta2Model.NewWebModel(web => { web.AddList(listWithProperties, list => { list.AddFolder(fodlerWithProperties, folder => { // Syntax miss - folder should support adding props #669 // https://github.com/SubPointSolutions/spmeta2/issues/669 //folder // .AddProperty(folderTag) // .AddProperty(folderType); folder .AddDefinitionNode(folderTag) .AddDefinitionNode(folderType); }); }); }); DeployModel(model); }
public ListDefinition getListDefinition() { var listDefinition = new ListDefinition(); listDefinition.Title = ListName; listDefinition.CustomUrl = ListUrl; listDefinition.Description = ""; listDefinition.TemplateType = BuiltInListTemplateTypeId.GenericList; listDefinition.EnableVersioning = true; listDefinition.ContentTypesEnabled = true; listDefinition.OnQuickLaunch = true; listDefinition.EnableFolderCreation = false; return(listDefinition); }
private static SPList GetListByUrl(SPWeb web, ListDefinition listModel) { SPList result; try { var targetListUrl = SPUrlUtility.CombineUrl(web.Url, listModel.GetListUrl()); result = web.GetList(targetListUrl); } catch { result = null; } return(result); }
private static void List(object id, object before, object after, object begin, object end) { ListDefinition def = new ListDefinition { Id = id.ToString (), Before = before.ToString (), After = after.ToString (), Begin = begin.ToString (), End = end.ToString () }; lists [def.Id] = def; }
public void EditList(string originalName, ListDefinition list) { var editor = new DialogViewController (null, true); var name = new EntryElement (Locale.GetText ("Name"), null, list.Name); name.Changed += delegate { editor.NavigationItem.RightBarButtonItem.Enabled = !String.IsNullOrEmpty (name.Value); }; var description = new EntryElement (Locale.GetText ("Description"), Locale.GetText ("optional"), list.Description); var privacy = new RootElement (Locale.GetText ("Privacy"), new RadioGroup ("key", (int) list.Privacy)){ new Section () { new RadioElement (Locale.GetText ("Public")), new RadioElement (Locale.GetText ("Private")) } }; editor.NavigationItem.SetLeftBarButtonItem (new UIBarButtonItem (UIBarButtonSystemItem.Cancel, delegate { DeactivateController (true); }), false); editor.NavigationItem.SetRightBarButtonItem (new UIBarButtonItem (UIBarButtonSystemItem.Save, delegate { string url = String.Format ("http://api.twitter.com/1/{0}/lists{1}.json?name={2}&mode={3}{4}", TwitterAccount.CurrentAccount.Username, originalName == null ? "" : "/" + originalName, OAuth.PercentEncode (name.Value), privacy.RadioSelected == 0 ? "public" : "private", description.Value == null ? "" : "&description=" + OAuth.PercentEncode (description.Value)); TwitterAccount.CurrentAccount.Post (url, ""); }), false); editor.NavigationItem.RightBarButtonItem.Enabled = !String.IsNullOrEmpty (name.Value); editor.Root = new RootElement (Locale.GetText ("New List")) { new Section () { name, description, privacy } }; ActivateController (editor); }