Example #1
0
        public static ComponentTemplateResult From(ComponentTemplateData item, ISessionAwareCoreService client, string currentUserId)
        {
            var result = new ComponentTemplateResult
            {
                TemplateType = TextEntry.From(LookUpTemplateType(item.TemplateType, ItemType.ComponentTemplate, client), Resources.LabelTemplateType)
            };

            if (item.IsRepositoryPublishable == true)
            {
                string dynamicTemplate = Resources.DynamicTemplateNotAllowedOnPage;
                if (item.AllowOnPage == true)
                {
                    dynamicTemplate = Resources.DynamicTemplateAllowedOnPage;
                }
                result.DynamicTemplateInfo = TextEntry.From(dynamicTemplate, Resources.LabelDynamicTemplateInfo);
            }

            if (item.Priority != null)
            {
                string priority = Resources.PriorityNeverLink;
                switch (item.Priority.Value)
                {
                case 300: priority = Resources.PriorityHigh; break;

                case 200: priority = Resources.PriorityMedium; break;

                case 100: priority = Resources.PriorityLow; break;
                }
                result.Priority = TextEntry.From(priority, Resources.LabelPriority);
            }

            AddCommonProperties(item, result);
            AddPropertiesForRepositoryLocalObject(item, result, currentUserId);
            return(result);
        }
Example #2
0
        public void TestNoExceptionOnRenderingComponents()
        {
            string componentsOrgItemId = TestContext.Properties["ComponentsOrgItemId"].ToString();

            if (!String.IsNullOrEmpty(componentsOrgItemId))
            {
                OrganizationalItemItemsFilterData filter = new OrganizationalItemItemsFilterData();
                filter.ItemTypes = new ItemType[] { ItemType.Component };
                filter.Recursive = true;

                foreach (XElement element in Client.GetListXml(componentsOrgItemId, filter).Nodes())
                {
                    ComponentData component = Client.Read(element.Attribute("ID").Value, null) as ComponentData;
                    this.LogMessage(String.Format("Running template regression tests for component \"{0}\" ({1})", component.Title, component.Id), true);

                    foreach (XElement componentTemplateElement in GetUsingComponentTemplates(component))
                    {
                        ComponentTemplateData componentTemplate = Client.Read(componentTemplateElement.Attribute("ID").Value, null) as ComponentTemplateData;
                        // Render the component with the component template
                        this.AssertItemRendersWithoutException(component, componentTemplate);
                    }
                    this.renderedTemplates.Clear();

                    this.LogMessage("PASSED! :)");
                }
            }
        }
        public static ComponentTemplateResult From(ComponentTemplateData item, ISessionAwareCoreService client, string currentUserId)
        {
            var result = new ComponentTemplateResult
            {
                TemplateType = TextEntry.From(LookUpTemplateType(item.TemplateType, ItemType.ComponentTemplate, client), Resources.LabelTemplateType)
            };

            if (item.IsRepositoryPublishable == true)
            {
                string dynamicTemplate = Resources.DynamicTemplateNotAllowedOnPage;
                if (item.AllowOnPage == true)
                {
                    dynamicTemplate = Resources.DynamicTemplateAllowedOnPage;
                }
                result.DynamicTemplateInfo = TextEntry.From(dynamicTemplate, Resources.LabelDynamicTemplateInfo);
            }

            if (item.Priority != null)
            {
                string priority = Resources.PriorityNeverLink;
                switch (item.Priority.Value)
                {
                    case 300: priority = Resources.PriorityHigh; break;
                    case 200: priority = Resources.PriorityMedium; break;
                    case 100: priority = Resources.PriorityLow; break;
                }
                result.Priority = TextEntry.From(priority, Resources.LabelPriority);
            }

            AddCommonProperties(item, result);
            AddPropertiesForRepositoryLocalObject(item, result, currentUserId);
            return result;
        }
        internal string GetComponentTemplateForSchema(string schemaId, string componentTemplateTitle, bool dynamic = false)
        {
            string container = GetUriInBlueprintContext(Configuration.TemplateFolderId,
                                                        Configuration.TemplatePublicationId);
            OrganizationalItemItemsFilterData filter = new OrganizationalItemItemsFilterData();

            filter.ItemTypes = new[] { ItemType.ComponentTemplate };
            foreach (XElement node in _client.GetListXml(container, filter).Nodes())
            {
                if (node.Attribute("Title").Value.Equals(componentTemplateTitle))
                {
                    return(node.Attribute("ID").Value);
                }
            }
            ComponentTemplateData ct = (ComponentTemplateData)_client.GetDefaultData(ItemType.ComponentTemplate, container);

            ct.Title = componentTemplateTitle;
            List <LinkToSchemaData> schemaLinks = new List <LinkToSchemaData>();

            schemaLinks.Add(new LinkToSchemaData {
                IdRef = GetUriInBlueprintContext(schemaId, Configuration.TemplatePublicationId)
            });
            ct.RelatedSchemas          = schemaLinks.ToArray();
            ct.IsRepositoryPublishable = dynamic;
            ct = (ComponentTemplateData)_client.Save(ct, _readOptions);
            _client.CheckIn(ct.Id, null);
            return(ct.Id);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComponentTemplate"/> class.
        /// </summary>
        /// <param name="client"><see cref="T:TcmCoreService.Client" /></param>
        /// <param name="componentTemplateData"><see cref="T:Tridion.ContentManager.CoreService.Client.ComponentTemplateData" /></param>
        protected ComponentTemplate(Client client, ComponentTemplateData componentTemplateData)
            : base(client, componentTemplateData)
        {
            if (componentTemplateData == null)
                throw new ArgumentNullException("componentTemplateData");

            mComponentTemplateData = componentTemplateData;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComponentTemplate"/> class.
        /// </summary>
        /// <param name="client"><see cref="T:TcmCoreService.Client" /></param>
        /// <param name="componentTemplateData"><see cref="T:Tridion.ContentManager.CoreService.Client.ComponentTemplateData" /></param>
        protected ComponentTemplate(Client client, ComponentTemplateData componentTemplateData)
            : base(client, componentTemplateData)
        {
            if (componentTemplateData == null)
            {
                throw new ArgumentNullException("componentTemplateData");
            }

            mComponentTemplateData = componentTemplateData;
        }
Example #7
0
 public static string GetContent(this ComponentTemplateData componentTemplateData, ContentType ctype)
 {
     if (ctype == ContentType.Content)
     {
         return(componentTemplateData.Content);
     }
     else
     {
         return(componentTemplateData.Metadata);
     }
 }
        /// <summary>
        /// Gets list of CT's along with the associated schema & view
        /// </summary>
        /// <param>none</param>
        /// <returns></returns>
        public static string GetTemplatesInPublication(string pubID)
        {
            //note: this runs for about 1 minute
            StringBuilder sb = new StringBuilder();
            string        meta = string.Empty, ct = string.Empty, schema = string.Empty;

            byte[]       data = null;
            MemoryStream stm  = null;;
            XDocument    doc  = null;

            try
            {
                cs_client = CoreServiceProvider.CreateCoreService();

                // get the Id of the publication to import into
                RepositoryItemsFilterData templateFilter = SetTemplateFilterCriterias();
                XElement templates = cs_client.GetListXml(pubID, templateFilter);;

                foreach (XElement template in templates.Descendants())
                {
                    ComponentTemplateData t = (ComponentTemplateData)cs_client.Read(CheckAttributeValueOrEmpty(template, "ID"), null);

                    if (t.Metadata != "")
                    {
                        ct   = t.Title;
                        data = Encoding.ASCII.GetBytes(t.Metadata);
                        stm  = new MemoryStream(data, 0, data.Length);
                        doc  = XDocument.Load(stm);
                        meta = doc.Root.Value;

                        if (t.RelatedSchemas.Count() > 0)
                        {
                            schema = t.RelatedSchemas[0].Title;
                        }
                        else
                        {
                            schema = "No Schema Found";
                        }

                        sb.AppendLine(ct + "|" + schema + "|" + meta);
                    }
                }
            }
            catch (Exception ex)
            {
                // throw ex;
            }
            finally
            {
                cs_client.Close();
            }

            return(sb.ToString());
        }
Example #9
0
        public static ImportItem CreateComponentTemplate(ComponentTemplateData componentTemplateData)
        {
            var importItem = new ImportItem()
            {
                ItemType = ItemType.ComponentTemplate,
                Name     = componentTemplateData.Title,
                Content  = componentTemplateData.Content,
                SourceId = componentTemplateData.Id
            };

            return(importItem);
        }
Example #10
0
        private void lstTemplates_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ItemInfo template = this.lstTemplates.SelectedItem as ItemInfo;

            if (template == null)
            {
                return;
            }

            this.TestTemplateTcmId = template.TcmId;
            Common.IsolatedStorage.Service.SaveToIsolatedStorage(Common.IsolatedStorage.Service.GetId("DebugTemplate", this.TbbTcmId), this.TestTemplateTcmId);

            //set test components tree

            string        strTcmIdPath = Common.IsolatedStorage.Service.GetFromIsolatedStorage(Common.IsolatedStorage.Service.GetId("DebugItemPath", this.TbbTcmId, this.TestTemplateTcmId));
            List <string> tcmIdPath    = string.IsNullOrEmpty(strTcmIdPath) ? null : strTcmIdPath.Split('|').ToList();

            if (tcmIdPath == null && !string.IsNullOrEmpty(this.TestItemTcmId))
            {
                tcmIdPath = MainService.GetIdPath(this.CurrentMapping, this.TestItemTcmId);
            }

            if (tcmIdPath != null && string.IsNullOrEmpty(this.TestItemTcmId))
            {
                this.TestItemTcmId = tcmIdPath.First();
            }

            //smart folder detect
            if (string.IsNullOrEmpty(this.TestItemTcmId))
            {
                ComponentTemplateData templateData = MainService.ReadItem(this.CurrentMapping, this.TestTemplateTcmId) as ComponentTemplateData;

                if (templateData != null && templateData.RelatedSchemas.Any())
                {
                    var item = MainService.GetComponents(this.CurrentMapping, templateData.RelatedSchemas[0].IdRef).FirstOrDefault();

                    if (item != null)
                    {
                        this.TestItemTcmId = item.TcmId;
                        tcmIdPath          = MainService.GetIdPath(this.CurrentMapping, this.TestItemTcmId);
                    }
                }
            }

            ItemType            templateType = MainService.GetItemType(this.TestTemplateTcmId);
            TridionSelectorMode treeMode     = templateType == ItemType.PageTemplate ? TridionSelectorMode.StructureGroup | TridionSelectorMode.Page : TridionSelectorMode.Folder | TridionSelectorMode.Component;

            this.treeTridionItem.ItemsSource = MainService.GetPublications(this.CurrentMapping).Expand(this.CurrentMapping, treeMode, tcmIdPath, this.TestItemTcmId).MakeExpandable();

            this.treeTridionItem.IsEnabled = true;
        }
Example #11
0
        public static string GetFieldAsString(this ComponentTemplateData componentData, string fieldName, ContentType ctype)
        {
            var element = XElement.Parse(GetContent(componentData, ctype));

            var e = element.Descendants().FirstOrDefault(x => x.Name.LocalName == fieldName);

            if (null != e)
            {
                return(e.Value);
            }
            else
            {
                return(String.Empty);
            }
        }
        /// <summary>
        /// Reload the <see cref="ComponentTemplate" /> with the specified <see cref="T:Tridion.ContentManager.CoreService.Client.ComponentTemplateData" />
        /// </summary>
        /// <param name="componentTemplateData"><see cref="T:Tridion.ContentManager.CoreService.Client.ComponentTemplateData" /></param>
        protected void Reload(ComponentTemplateData componentTemplateData)
        {
            if (componentTemplateData == null)
            {
                throw new ArgumentNullException("componentTemplateData");
            }

            mComponentTemplateData = componentTemplateData;
            base.Reload(componentTemplateData);

            mApprovalStatus     = null;
            mRelatedSchemas     = null;
            mTrackingCategories = null;
            mWorkflow           = null;
        }
        private ComponentTemplateData GetComponentTemplateData(ComponentTemplate ct)
        {
            var componentTemplateData = new ComponentTemplateData
            {
                Id = GetDxaIdentifier(ct)
            };

            if (ct.Metadata == null || ct.MetadataSchema == null)
            {
                return(componentTemplateData);
            }
            componentTemplateData.Title        = ct.Title;
            componentTemplateData.RevisionDate = ct.RevisionDate;
            componentTemplateData.OutputFormat = ct.OutputFormat;
            componentTemplateData.Metadata     = BuildContentModel(ct.Metadata, Pipeline.Settings.ExpandLinkDepth);
            return(componentTemplateData);
        }
        /// <summary>
        /// Reload the <see cref="ComponentTemplate" /> with the specified <see cref="T:Tridion.ContentManager.CoreService.Client.ComponentTemplateData" />
        /// </summary>
        /// <param name="componentTemplateData"><see cref="T:Tridion.ContentManager.CoreService.Client.ComponentTemplateData" /></param>
        protected void Reload(ComponentTemplateData componentTemplateData)
        {
            if (componentTemplateData == null)
                throw new ArgumentNullException("componentTemplateData");

            mComponentTemplateData = componentTemplateData;
            base.Reload(componentTemplateData);

            mApprovalStatus = null;
            mRelatedSchemas = null;
            mTrackingCategories = null;
            mWorkflow = null;
        }
        public static bool SaveComponentTemplate(MappingInfo mapping, string title, string xml, string tcmContainer, string outputFormat, bool dynamic, out string stackTraceMessage, params string[] allowedSchemaNames)
        {
            stackTraceMessage = "";

            if (!EnsureValidClient(mapping))
                return false;

            List<LinkToSchemaData> schemaList = new List<LinkToSchemaData>();

            string tcmPublication = GetPublicationTcmId(tcmContainer);
            List<ItemInfo> allSchemas = GetSchemas(mapping, tcmPublication);

            if (allowedSchemaNames != null && allowedSchemaNames.Length > 0)
            {
                foreach (string schemaName in allowedSchemaNames)
                {
                    if (allSchemas.Any(x => x.Title == schemaName))
                    {
                        string tcmSchema = allSchemas.First(x => x.Title == schemaName).TcmId;
                        LinkToSchemaData link = new LinkToSchemaData {IdRef = tcmSchema};
                        schemaList.Add(link);
                    }
                }
            }

            if (ExistsItem(mapping, tcmContainer, title))
            {
                string id = GetItemTcmId(mapping, tcmContainer, title);
                if (String.IsNullOrEmpty(id))
                    return false;

                ComponentTemplateData templateData = ReadItem(mapping, id) as ComponentTemplateData;
                if (templateData == null)
                    return false;

                if (templateData.BluePrintInfo.IsShared == true)
                {
                    id = GetBluePrintTopTcmId(mapping, id);

                    templateData = ReadItem(mapping, id) as ComponentTemplateData;
                    if (templateData == null)
                        return false;
                }

                try
                {
                    templateData = Client.CheckOut(templateData.Id, true, new ReadOptions()) as ComponentTemplateData;
                }
                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.OutputFormat = outputFormat;
                templateData.RelatedSchemas = schemaList.ToArray();

                try
                {
                    templateData = Client.Update(templateData, new ReadOptions()) as ComponentTemplateData;
                    if (templateData == null)
                        return false;

                    if (templateData.Content == xml)
                    {
                        Client.CheckIn(templateData.Id, true, "Saved from TridionVSRazorExtension", new ReadOptions());
                        return true;
                    }

                    Client.UndoCheckOut(templateData.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
            {
                ComponentTemplateData templateData = new ComponentTemplateData
                {
                    Content = xml,
                    Title = title,
                    LocationInfo = new LocationInfo { OrganizationalItem = new LinkToOrganizationalItemData { IdRef = tcmContainer } },
                    Id = "tcm:0-0-0",
                    TemplateType = "CompoundTemplate",
                    OutputFormat = outputFormat,
                    IsRepositoryPublishable = dynamic,
                    AllowOnPage = true,
                    RelatedSchemas = schemaList.ToArray()
                };

                templateData = Client.Save(templateData, new ReadOptions()) as ComponentTemplateData;
                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;
            }
        }
Example #16
0
        /// <summary>
        /// Gets list of CT's along with the associated schema & view
        /// </summary>
        /// <param>none</param>
        /// <returns></returns>
        public static string GetAllItemsInPublication(string pubID)
        {
            RepositoryItemsFilterData filter = SetPageFilterCriterias();
            StringBuilder             sb     = new StringBuilder();

            cs_client = CoreServiceProvider.CreateCoreService();
            try
            {
                IdentifiableObjectData[] pages = cs_client.GetList(pubID, filter);

                foreach (IdentifiableObjectData iod in pages)
                {
                    PageData pageData = cs_client.Read(iod.Id, new ReadOptions()) as PageData;

                    sb.AppendLine("Page: " + pageData.LocationInfo.Path);
                    sb.AppendLine("PT: " + pageData.PageTemplate.Title);
                    sb.AppendLine("PM: " + pageData.MetadataSchema.Title);

                    foreach (ComponentPresentationData cpd in pageData.ComponentPresentations)
                    {
                        sb.AppendLine("");
                        sb.AppendLine("CP: " + cpd.Component.Title);

                        ComponentData cp = (ComponentData)cs_client.Read(cpd.Component.IdRef, new ReadOptions());
                        sb.AppendLine("CS: " + cp.Schema.Title);

                        sb.AppendLine("CT: " + cpd.ComponentTemplate.Title);
                        ComponentTemplateData ct = (ComponentTemplateData)cs_client.Read(cpd.ComponentTemplate.IdRef, new ReadOptions());
                        sb.AppendLine("CM: " + ct.MetadataSchema.Title);

                        // load the schema
                        var schemaFields = cs_client.ReadSchemaFields(cp.Schema.IdRef, true, new ReadOptions());

                        // build a  Fields object from it
                        var fields = Fields.ForContentOf(schemaFields, cp);

                        // let's first quickly list all values of all fields
                        foreach (var field in fields)
                        {
                            if (field.GetType() == typeof(EmbeddedSchemaFieldDefinitionData))
                            {
                            }
                            if (field.GetType() == typeof(ComponentLinkFieldDefinitionData))
                            {
                            }
                            if (field.GetType() == typeof(EmbeddedSchemaFieldDefinitionData))
                            {
                            }
                        }
                    }

                    //blank line for readability
                    sb.AppendLine("");
                    sb.AppendLine("");
                }
            }
            catch (Exception ex)
            {
                // throw ex;
            }
            finally
            {
                cs_client.Close();
            }

            return(sb.ToString());
        }
Example #17
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;
        }