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); }
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; }
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()); }
public static ImportItem CreateComponentTemplate(ComponentTemplateData componentTemplateData) { var importItem = new ImportItem() { ItemType = ItemType.ComponentTemplate, Name = componentTemplateData.Title, Content = componentTemplateData.Content, SourceId = componentTemplateData.Id }; return(importItem); }
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; }
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; } }
/// <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()); }
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; }