private static string ImageUrlFromXml(RazorLibraryCore ctx, DynamicXml media, string cropProperty, string cropName) { string url = null; if (media != null) { var crop = new DynamicXml(media.DescendantsOrSelf(x => x.Name == cropProperty).FirstOrDefault().ToXml()); try { if (crop != null) { dynamic c = crop.Find("@name", cropName); url = (string)c.url; } } catch { } if (string.IsNullOrWhiteSpace(url)) { var f = media.Descendants(x => x.Name == "umbracoFile").FirstOrDefault(); if (f != null) { url = f.InnerText; } } } return(url ?? ""); }
void ExamineEventsInternal_GatheringNodeData(object sender, IndexingNodeDataEventArgs e) { //need to fudge rte field so that we have internal link nodeids in the internal index var rteFields = RteFields; if (e.IndexType == IndexTypes.Content) { var d = new Document(e.NodeId); foreach (var rteField in rteFields) { if (d.getProperty(rteField) != null && d.getProperty(rteField).Value != null) { var rteEncoded = HttpUtility.HtmlEncode(d.getProperty(rteField).Value.ToString().Replace("localLink:", "localLink: ").Replace("}", " } ")); e.Fields.Add("rteLink" + rteField, rteEncoded); } } var treePickerFields = TreePickerFields; foreach (var treePickerField in treePickerFields) { if (e.Fields.ContainsKey(treePickerField)) { var content = e.Fields[treePickerField]; // if it's a csv type and there's more than one item, // separate with a space so the nodes are indexed separately if (content.Contains(",")) { content = content.Replace(",", " "); } else { // if it's an XML type tree picker, get the xml and transform into a space separated list var node = new Node(e.NodeId); var value = node.GetProperty(treePickerField).Value; if (value.Contains("<MultiNodePicker")) { var dynamicXml = new DynamicXml(value); content = string.Join(" ", dynamicXml.Descendants().Select(de => de.InnerText)); } } e.Fields[treePickerField] = content; } } e.Fields.Add("IsPublished", d.Published.ToString()); } }