/// <summary> /// Initializes a new instance of the <see cref="PageTemplate"/> class. /// </summary> /// <param name="client"><see cref="T:TcmCoreService.Client" /></param> /// <param name="pageTemplateData"><see cref="T:Tridion.ContentManager.CoreService.Client.PageTemplateData" /></param> protected PageTemplate(Client client, PageTemplateData pageTemplateData) : base(client, pageTemplateData) { if (pageTemplateData == null) throw new ArgumentNullException("pageTemplateData"); mPageTemplateData = pageTemplateData; }
/// <summary> /// Initializes a new instance of the <see cref="PageTemplate"/> class. /// </summary> /// <param name="client"><see cref="T:TcmCoreService.Client" /></param> /// <param name="pageTemplateData"><see cref="T:Tridion.ContentManager.CoreService.Client.PageTemplateData" /></param> protected PageTemplate(Client client, PageTemplateData pageTemplateData) : base(client, pageTemplateData) { if (pageTemplateData == null) { throw new ArgumentNullException("pageTemplateData"); } mPageTemplateData = pageTemplateData; }
public static ImportItem CreatePageTemplate(PageTemplateData pageTemplateData) { var importItem = new ImportItem() { ItemType = ItemType.PageTemplate, Name = pageTemplateData.Title, Content = pageTemplateData.Content, SourceId = pageTemplateData.Id }; return(importItem); }
public static PageTemplateResult From(PageTemplateData item, ISessionAwareCoreService client, string currentUserId) { var result = new PageTemplateResult { Extension = TextEntry.From(item.FileExtension, Resources.LabelExtension), TemplateType = TextEntry.From(LookUpTemplateType(item.TemplateType, ItemType.PageTemplate, client), Resources.LabelTemplateType) }; AddCommonProperties(item, result); AddPropertiesForRepositoryLocalObject(item, result, currentUserId); return(result); }
public static PageTemplateResult From(PageTemplateData item, ISessionAwareCoreService client, string currentUserId) { var result = new PageTemplateResult { Extension = TextEntry.From(item.FileExtension, Resources.LabelExtension), TemplateType = TextEntry.From(LookUpTemplateType(item.TemplateType, ItemType.PageTemplate, client), Resources.LabelTemplateType) }; AddCommonProperties(item, result); AddPropertiesForRepositoryLocalObject(item, result, currentUserId); return result; }
/// <summary> /// Reload the <see cref="PageTemplate" /> with the specified <see cref="T:Tridion.ContentManager.CoreService.Client.PageTemplateData" /> /// </summary> /// <param name="pageTemplateData"><see cref="T:Tridion.ContentManager.CoreService.Client.PageTemplateData" /></param> protected void Reload(PageTemplateData pageTemplateData) { if (pageTemplateData == null) { throw new ArgumentNullException("pageTemplateData"); } mPageTemplateData = pageTemplateData; base.Reload(pageTemplateData); mApprovalStatus = null; mPageSchema = null; mWorkflow = null; }
private PageTemplateData GetPageTemplateData(PageTemplate pt) { var pageTemplateData = new PageTemplateData { Id = GetDxaIdentifier(pt), Title = pt.Title, FileExtension = pt.FileExtension, RevisionDate = pt.RevisionDate }; if (pt.Metadata == null || pt.MetadataSchema == null) { return(pageTemplateData); } pageTemplateData.Metadata = BuildContentModel(pt.Metadata, Pipeline.Settings.ExpandLinkDepth);; return(pageTemplateData); }
public void Initialization() { this._page = (PageData)this.Client.Read("/webdav/96%20Content%202%2E0/Root/zz%20System/Tests/Test%20pagina.tpg"); this._template = (PageTemplateData)this.Client.Read("/webdav/96%20Content%202.0/Building%20Blocks/System/Page%20Templates/Algemene%20Pagina%20Template.tptcmp"); this.IsNotNull(this._page, "page is NULL"); this.IsNotNull(this._template, "'Algemene Pagina Template' template is NULL"); this._output = this.GetComponentPresentationAsHtml(this._page.Id, this._template.Id); if (!String.IsNullOrEmpty(this._page.Metadata)) { this._metadata = XDocument.Parse(this._page.Metadata); } else { this.Fail("Page has no metadata!"); } }
public void TestNoExceptionOnRenderingPages() { string pagesOrgItemId = TestContext.Properties["PagesOrgItemId"].ToString(); if (!String.IsNullOrEmpty(pagesOrgItemId)) { OrganizationalItemItemsFilterData filter = new OrganizationalItemItemsFilterData(); filter.ItemTypes = new ItemType[] { ItemType.Page }; filter.Recursive = true; foreach (XElement element in Client.GetListXml(pagesOrgItemId, filter).Nodes()) { PageData page = Client.Read(element.Attribute("ID").Value, null) as PageData; PageTemplateData pageTemplate = Client.Read(page.PageTemplate.IdRef, null) as PageTemplateData; this.LogMessage(String.Format("Running template regression tests for page \"{0}\" ({1})", page.Title, page.Id), true); // Render the page with the page template this.AssertItemRendersWithoutException(page, pageTemplate); this.LogMessage("PASSED! :)"); } this.renderedTemplates.Clear(); } }
public static bool SavePageTemplate(MappingInfo mapping, string title, string xml, string tcmContainer, string fileExtension, out string stackTraceMessage) { stackTraceMessage = ""; if (!EnsureValidClient(mapping)) return false; if (ExistsItem(mapping, tcmContainer, title)) { string id = GetItemTcmId(mapping, tcmContainer, title); if (String.IsNullOrEmpty(id)) return false; PageTemplateData templateData = ReadItem(mapping, id) as PageTemplateData; if (templateData == null) return false; if (templateData.BluePrintInfo.IsShared == true) { id = GetBluePrintTopTcmId(mapping, id); templateData = ReadItem(mapping, id) as PageTemplateData; if (templateData == null) return false; } try { templateData = Client.CheckOut(id, true, new ReadOptions()) as PageTemplateData; } catch (Exception ex) { stackTraceMessage = ex.Message; return false; } if (templateData == null) return false; templateData.Content = xml; templateData.Title = title; templateData.LocationInfo = new LocationInfo { OrganizationalItem = new LinkToOrganizationalItemData { IdRef = tcmContainer } }; templateData.FileExtension = fileExtension; try { templateData = Client.Update(templateData, new ReadOptions()) as PageTemplateData; if (templateData == null) return false; if (templateData.Content == xml) { Client.CheckIn(id, true, "Saved from TridionVSRazorExtension", new ReadOptions()); return true; } Client.UndoCheckOut(id, true, new ReadOptions()); return false; } catch (Exception ex) { stackTraceMessage = ex.Message; if (templateData == null) return false; Client.UndoCheckOut(templateData.Id, true, new ReadOptions()); return false; } } try { PageTemplateData templateData = new PageTemplateData { Content = xml, Title = title, LocationInfo = new LocationInfo { OrganizationalItem = new LinkToOrganizationalItemData { IdRef = tcmContainer } }, Id = "tcm:0-0-0", TemplateType = "CompoundTemplate", FileExtension = fileExtension }; templateData = Client.Save(templateData, new ReadOptions()) as PageTemplateData; if (templateData == null) return false; Client.CheckIn(templateData.Id, true, "Saved from TridionVSRazorExtension", new ReadOptions()); return true; } catch (Exception ex) { stackTraceMessage = ex.Message; return false; } }
private void TreeViewItem_Selected(object sender, RoutedEventArgs e) { ItemInfo item = ((TreeViewItem)e.OriginalSource).DataContext as ItemInfo; if (item == null) { return; } //check if item is valid ItemType itemType = MainService.GetItemType(item.TcmId); ItemType templateType = MainService.GetItemType(this.TestTemplateTcmId); if (itemType == ItemType.Component && templateType == ItemType.ComponentTemplate) { ComponentData component = MainService.GetComponent(this.CurrentMapping, item.TcmId); ComponentTemplateData template = MainService.ReadItem(this.CurrentMapping, this.TestTemplateTcmId) as ComponentTemplateData; if (component == null || template == null) { ((TreeViewItem)e.OriginalSource).IsEnabled = false; MessageBox.Show("Selected component is invalid", "Test item", MessageBoxButton.OK, MessageBoxImage.Hand); return; } if (template.RelatedSchemas.All(x => MainService.GetId(x.IdRef) != MainService.GetId(component.Schema.IdRef))) { ((TreeViewItem)e.OriginalSource).IsEnabled = false; MessageBox.Show("Selected component is invalid", "Test item", MessageBoxButton.OK, MessageBoxImage.Hand); return; } } else if (itemType == ItemType.Page && templateType == ItemType.PageTemplate) { PageData page = MainService.ReadItem(this.CurrentMapping, item.TcmId) as PageData; PageTemplateData template = MainService.ReadItem(this.CurrentMapping, this.TestTemplateTcmId) as PageTemplateData; if (page == null || template == null) { ((TreeViewItem)e.OriginalSource).IsEnabled = false; MessageBox.Show("Selected page is invalid", "Test item", MessageBoxButton.OK, MessageBoxImage.Hand); return; } if (MainService.GetId(page.PageTemplate.IdRef) != MainService.GetId(template.Id)) { ((TreeViewItem)e.OriginalSource).IsEnabled = false; MessageBox.Show("Selected page is invalid", "Test item", MessageBoxButton.OK, MessageBoxImage.Hand); return; } } else { return; } this.TestItemTcmId = item.TcmId; List <ItemInfo> list = new List <ItemInfo>(); MainService.AddPathItem(list, item); Common.IsolatedStorage.Service.SaveToIsolatedStorage(Common.IsolatedStorage.Service.GetId("DebugItemPath", this.TbbTcmId, this.TestTemplateTcmId), string.Join("|", list.Select(x => x.TcmId))); this.btnOk.IsEnabled = true; }
private void ConvertPageTemplate(PageTemplateData pageTemplate) { if (this.ContainsModel(pageTemplate.Id)) { _log.Debug($"page template '{pageTemplate.Title}' is already in the ModelRegistry (type = {this.GetViewModelDefinition(pageTemplate.Id).TypeName}"); return; } _log.Debug($"Converting page template {pageTemplate.Title}"); ModelDefinition pageModel; if (this.ContainsModel(pageTemplate.Id)) { _log.Debug($"model {pageTemplate.Title} was already in the model registry"); pageModel = ViewModels.First(m => m.TcmUri == pageTemplate.Id); } else { _log.Debug($"creating new model definition for page template {pageTemplate.Title}"); pageModel = new ModelDefinition(); pageModel.Title = pageTemplate.Title; pageModel.TcmUri = pageTemplate.Id; pageModel.RootElementName = pageTemplate.Title; pageModel.TypeName = MakeCsName(pageModel.RootElementName, true); pageModel.Purpose = SchemaPurpose.Region; pageModel.PropertyDefinitions = new List <PropertyDefinition>(); } currentViewModel = pageModel; // Note: this code does not work because page templates are not schemas // For Tridion 9+ we need to create models based on the region schema instead //var schemaFieldSets = Client.ReadSchemaFields(pageTemplate.Id, true, new ReadOptions()); //if (schemaFieldSets.MetadataFields != null) //{ // AddFields(pageModel.TypeName, pageModel.PropertyDefinitions, schemaFieldSets.MetadataFields, true); //} PropertyDefinition entitiesPropertyDefinition = new PropertyDefinition(Config) { FieldType = FieldType.Entities, Name = "Entities", IsMultipleValue = true, }; PropertyDefinition regionsPropertyDefinition = new PropertyDefinition(Config) { FieldType = FieldType.Regions, Name = "Regions", IsMultipleValue = true, }; PropertyDefinition pageTitlePropertyDefinition = new PropertyDefinition(Config) { FieldType = FieldType.PageTitle, Name = "PageTitle", IsMultipleValue = false, }; PropertyDefinition pageIdPropertyDefinition = new PropertyDefinition(Config) { FieldType = FieldType.PageId, Name = "PageId", IsMultipleValue = false, }; pageModel.PropertyDefinitions.Add(pageTitlePropertyDefinition); pageModel.PropertyDefinitions.Add(pageIdPropertyDefinition); pageModel.PropertyDefinitions.Add(regionsPropertyDefinition); pageModel.PropertyDefinitions.Add(entitiesPropertyDefinition); // schema was converted into a ViewModelDefinition successfully (possibly with some unresolved fields, but we'll deal with them later!) // we can now add a mapping to the registry ViewModels.Add(pageModel); }
/// <summary> /// Reload the <see cref="PageTemplate" /> with the specified <see cref="T:Tridion.ContentManager.CoreService.Client.PageTemplateData" /> /// </summary> /// <param name="pageTemplateData"><see cref="T:Tridion.ContentManager.CoreService.Client.PageTemplateData" /></param> protected void Reload(PageTemplateData pageTemplateData) { if (pageTemplateData == null) throw new ArgumentNullException("pageTemplateData"); mPageTemplateData = pageTemplateData; base.Reload(pageTemplateData); mApprovalStatus = null; mPageSchema = null; mWorkflow = null; }