/// <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;
        }
Exemple #2
0
        /// <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;
        }
Exemple #3
0
        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;
        }
Exemple #6
0
        /// <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);
        }
Exemple #8
0
        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!");
            }
        }
Exemple #9
0
        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;
            }
        }
Exemple #11
0
        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;
        }
Exemple #12
0
        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;
        }