public Resource(string conditional, XPathVariable[] variables, IFileProvider fileProvider, string source, string output, ResourceTransform[] transformers) { this.ConditionExpression = conditional; this.FileProvider = fileProvider; this.Source = source; this.Output = output; this.Variables = variables; this.Transforms = transformers; }
private static IPublishedContent FindContentByAlias(ContextualPublishedContentCache cache, int rootNodeId, string alias) { if (alias == null) { throw new ArgumentNullException("alias"); } // the alias may be "foo/bar" or "/foo/bar" // there may be spaces as in "/foo/bar, /foo/nil" // these should probably be taken care of earlier on alias = alias.TrimStart('/'); var xpathBuilder = new StringBuilder(); if (rootNodeId > 0) { xpathBuilder.AppendFormat(XPathStrings.DescendantDocumentById, rootNodeId); } else { xpathBuilder.Append(XPathStringsDefinition.Root); } XPathVariable var = null; if (alias.Contains('\'') || alias.Contains('"')) { // use a var, as escaping gets ugly pretty quickly var = new XPathVariable("alias", alias); alias = "$alias"; } xpathBuilder.AppendFormat(XPathStrings.DescendantDocumentByAlias, alias); var xpath = xpathBuilder.ToString(); // note: it's OK if var is null, will be ignored return(cache.GetSingleByXPath(xpath, var)); }
public IPublishedContent GetDocumentByUrlAlias(UmbracoContext umbracoContext, int rootNodeId, string alias) { if (umbracoContext == null) { throw new ArgumentNullException("umbracoContext"); } if (alias == null) { throw new ArgumentNullException("alias"); } // the alias may be "foo/bar" or "/foo/bar" // there may be spaces as in "/foo/bar, /foo/nil" // these should probably be taken care of earlier on alias = alias.TrimStart('/'); var xpathBuilder = new StringBuilder(); xpathBuilder.Append(XPathStrings.Root); if (rootNodeId > 0) { xpathBuilder.AppendFormat(XPathStrings.DescendantDocumentById, rootNodeId); } XPathVariable var = null; if (alias.Contains('\'') || alias.Contains('"')) { // use a var, escaping gets ugly pretty quickly var = new XPathVariable("alias", alias); alias = "$alias"; } xpathBuilder.AppendFormat(XPathStrings.DescendantDocumentByAlias, alias); var xpath = xpathBuilder.ToString(); return(ConvertToDocument(GetXml(umbracoContext).SelectSingleNode(xpath, var))); }