private static void OnTemplateBuildingBlockSave(TemplateBuildingBlock subject, SaveEventArgs e, EventPhases phase) { if (!subject.IsAssemblyTemplateBuildingBlock()) return; using (var session = subject.Session) { var templatingAssembly = new TemplatingAssembly(subject); foreach (var embeddedParameterSchema in templatingAssembly.EmbeddedParameterSchemas) { if (session.IsExistingObject(String.Concat(subject.OrganizationalItem.WebDavUrl, "/", embeddedParameterSchema.Title, ".xsd"))) continue; var parameterSchema = new Schema(session, subject.OrganizationalItem.Id) { Title = embeddedParameterSchema.Title, Description = embeddedParameterSchema.Title, Purpose = SchemaPurpose.TemplateParameters, RootElementName = "Parameters", Xsd = embeddedParameterSchema.Xsd }; parameterSchema.Save(true); } foreach (var cSharpTemplateBuildingBlock in templatingAssembly.CSharpTemplateBuildingBlocks) { //If a TBB already exists if (session.IsExistingObject(String.Concat(subject.OrganizationalItem.WebDavUrl, "/", cSharpTemplateBuildingBlock.Title, ".tbbcs"))) continue; //Create a new C# TBB var templateBuildingBlock = new TemplateBuildingBlock(session, subject.OrganizationalItem.Id) { Title = cSharpTemplateBuildingBlock.Title, TemplateType = TemplateTypes.CSharpTemplate, Content = String.Format(CSharpTemplateBuildingBlockContent, templatingAssembly.Id, cSharpTemplateBuildingBlock.ClassName) }; if (cSharpTemplateBuildingBlock.ParameterSchema != null) { if (cSharpTemplateBuildingBlock.ParameterSchema.ToLower().StartsWith("/webdav/") || cSharpTemplateBuildingBlock.ParameterSchema.ToLower().StartsWith("tcm:")) { var parameterSchema = (Schema) session.GetObject(cSharpTemplateBuildingBlock.ParameterSchema); templateBuildingBlock.ParameterSchema = parameterSchema; } else if (cSharpTemplateBuildingBlock.ParameterSchema.ToLower().StartsWith("resource:")) { var parameterSchemaUrl = String.Concat(subject.OrganizationalItem.WebDavUrl, "/", Regex.Match(cSharpTemplateBuildingBlock.ParameterSchema, @"[\w ]*(?=\.xsd$)").Value, ".xsd"); var parameterSchema = (Schema)session.GetObject(parameterSchemaUrl); templateBuildingBlock.ParameterSchema = parameterSchema; } } templateBuildingBlock.Save(true); } } }
/// <summary> /// Clears the where used items of this template. /// </summary> /// <param name="template"></param> public void ClearWhereUsed(TemplateBuildingBlock template) { UsingItemsFilter filter = new UsingItemsFilter(template.Session); filter.BaseColumns = ListBaseColumns.Id; filter.ItemTypes = new ItemType[] { ItemType.TemplateBuildingBlock }; XmlElement items = template.GetListUsingItems(filter); foreach (XmlElement item in items) { RemoveTemplate(item.Attributes["ID"].Value); } }
/// <summary> /// Initializes a new instance of the <see cref="TransformXml"/> class. /// </summary> /// <param name="engine"><see cref="T:Tridion.ContentManager.Templating.Engine" /></param> /// <param name="package"><see cref="T:Tridion.ContentManager.Templating.Package" /></param> /// <param name="templateBase"><see cref="T:TcmTemplating.TemplateBase" /></param> /// <param name="templateBuildingBlock">Tridion template building block to use as source</param> public TransformXml(Engine engine, Package package, TemplateBase templateBase, Uri templateBuildingBlockUri) : this(engine, package, templateBase) { TemplateBuildingBlock templateBuildingBlock = engine.GetObject(templateBuildingBlockUri.ToString()) as TemplateBuildingBlock; if (templateBuildingBlock == null) { throw new ArgumentException("templateBuildingBlock is not ItemType.TemplateBuildingBlock"); } String content = templateBuildingBlock.Content.Replace("tcm:include", "xsl:include"); using (StringReader sr = new StringReader(content)) { using (XmlReader reader = XmlReader.Create(sr)) { mXslCompiledTransform.Load(reader, XsltSettings, new XmlTcmUriResolver(engine)); } } }
private void OnTBBSavePre(TemplateBuildingBlock tbb, CheckInEventArgs args, EventPhases phase) { configManager = ConfigurationManager.GetInstance(tbb); }
private void OnTBBSavePre(TemplateBuildingBlock tbb, CheckInEventArgs args, EventPhases phase) { configManager = ConfigurationManager.GetInstance(tbb); }
public TemplatingAssembly(TemplateBuildingBlock templateBuildingBlock) { _assembly = Assembly.Load(templateBuildingBlock.BinaryContent.GetByteArray()); Id = templateBuildingBlock.Id; }