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 ?? "");
        }
        /// <summary>
        /// Inits the specified current node id.
        /// </summary>
        /// <param name="CurrentNodeId">The current node id.</param>
        /// <param name="PropertyData">The property data.</param>
        /// <param name="instance">The instance.</param>
        /// <returns></returns>
        public bool Init(int CurrentNodeId, string PropertyData, out object instance)
        {
            if (!Settings.RazorModelBindingEnabled)
            {
                instance = PropertyData;
                return true;
            }

            var nodeIds = uQuery.GetCsvIds(PropertyData);
            var library = new RazorLibraryCore(null);

            instance = (library.NodesById(nodeIds) as DynamicNodeList);

            return true;
        }
Example #3
0
        /// <summary>
        /// Inits the specified current node id.
        /// </summary>
        /// <param name="CurrentNodeId">The current node id.</param>
        /// <param name="PropertyData">The property data.</param>
        /// <param name="instance">The instance.</param>
        /// <returns></returns>
        public bool Init(int CurrentNodeId, string PropertyData, out object instance)
        {
            if (!Settings.RazorModelBindingEnabled)
            {
                instance = PropertyData;
                return(true);
            }

            var nodeIds = uQuery.GetCsvIds(PropertyData);
            var library = new RazorLibraryCore(null);

            instance = (library.NodesById(nodeIds) as DynamicNodeList);

            return(true);
        }
        public static IEnumerable<dynamic> GetInternalLinkNodes(dynamic linksProperty)
        {
            var nodes = new List<dynamic>();
            var library = new RazorLibraryCore(Node.GetCurrent());
            dynamic links = linksProperty.BaseElement.Elements("link");
            foreach (dynamic link in links)
            {
                if (link.Attribute("type").Value == "internal")
                {
                    int relatedNodeId = int.Parse(link.Attribute("link").Value);
                    nodes.Add(library.NodeById(relatedNodeId));
                }
            }

            return nodes;
        }
        public static IEnumerable<string> GetInternalLinkUrls(dynamic linksProperty)
        {
            var urls = new List<string>();
            var library = new RazorLibraryCore(Node.GetCurrent());
            dynamic links = linksProperty.BaseElement.Elements("link");
            foreach (dynamic link in links)
            {
                if (link.Attribute("type").Value == "internal")
                {
                    int relatedNodeId = int.Parse(link.Attribute("link").Value);
                    dynamic relatedNode = library.NodeById(relatedNodeId);
                    urls.Add((string)relatedNode.Url);
                }
            }

            return urls;
        }
        public static dynamic GetLinkedNode(dynamic linkProperty)
        {
            dynamic node = null;
            try
            {
                dynamic link = linkProperty.BaseElement.Element("link");
                if (link.Attribute("type").Value == "internal")
                {
                    int relatedNodeId = int.Parse(link.Attribute("link").Value);
                    node = new RazorLibraryCore(Node.GetCurrent()).NodeById(relatedNodeId);
                }
            }
            catch (Exception ex)
            {
                node = null;
            }

            return node;
        }
        private static string ImageUrlFromMediaItem(RazorLibraryCore ctx, int mediaId, string cropProperty, string cropName)
        {
            string       url   = null;
            DynamicMedia media = ctx.MediaById(mediaId);

            if (media != null)
            {
                if (media.HasProperty(cropProperty))
                {
                    dynamic d = new DynamicXml(media.GetPropertyValue(cropProperty)).Find("@name", cropName);
                    url = (string)d.url;
                }

                if (string.IsNullOrWhiteSpace(url) && media.HasValue("umbracoFile"))
                {
                    url = media.GetPropertyValue("umbracoFile");
                }
            }
            return(url ?? "");
        }
        public static string GetLinkUrl(dynamic linkProperty, out bool isInternal)
        {
            dynamic link = linkProperty.BaseElement.Element("link");
            if (link == null)
            {
                isInternal = true;
                return "/";
            }

            if (link.Attribute("type").Value == "internal")
            {
                int relatedNodeId = int.Parse(link.Attribute("link").Value);
                dynamic relatedNode = new RazorLibraryCore(Node.GetCurrent()).NodeById(relatedNodeId);
                isInternal = true;
                return relatedNode.Url;
            }

            isInternal = false;
            return link.Attribute("link").Value;
        }
Example #9
0
        /// <summary>
        /// Inits the specified current node id.
        /// </summary>
        /// <param name="CurrentNodeId">The current node id.</param>
        /// <param name="PropertyData">The property data.</param>
        /// <param name="instance">The instance.</param>
        /// <returns></returns>
        public bool Init(int CurrentNodeId, string PropertyData, out object instance)
        {
            if (!Settings.RazorModelBindingEnabled)
            {
                if (Helper.Xml.CouldItBeXml(PropertyData))
                {
#pragma warning disable 0618
                    instance = new DynamicXml(PropertyData);
#pragma warning restore 0618
                    return(true);
                }

                instance = PropertyData;
                return(true);
            }

            var nodeIds = Helper.Xml.CouldItBeXml(PropertyData) ? umbraco.uQuery.GetXmlIds(PropertyData) : umbraco.uQuery.ConvertToIntArray(umbraco.uQuery.GetCsvIds(PropertyData));
            var library = new RazorLibraryCore(null);

            instance = (library.NodesById(nodeIds.ToList()) as DynamicNodeList);

            return(true);
        }
        /// <summary>
        /// Inits the specified current node id.
        /// </summary>
        /// <param name="CurrentNodeId">The current node id.</param>
        /// <param name="PropertyData">The property data.</param>
        /// <param name="instance">The instance.</param>
        /// <returns></returns>
        public bool Init(int CurrentNodeId, string PropertyData, out object instance)
        {
            if (!Settings.RazorModelBindingEnabled)
            {
                if (Helper.Xml.CouldItBeXml(PropertyData))
                {
            #pragma warning disable 0618
                    instance = new DynamicXml(PropertyData);
            #pragma warning restore 0618
                    return true;
                }

                instance = PropertyData;
                return true;
            }

            var nodeIds = Helper.Xml.CouldItBeXml(PropertyData) ? umbraco.uQuery.GetXmlIds(PropertyData) : umbraco.uQuery.ConvertToIntArray(umbraco.uQuery.GetCsvIds(PropertyData));
            var library = new RazorLibraryCore(null);

            instance = (library.NodesById(nodeIds.ToList()) as DynamicNodeList);

            return true;
        }
        public static IEnumerable <string> ImageUrls(this RazorLibraryCore ctx, DynamicNode node, string alias, string cropProperty, string cropName)
        {
            var mediaProp = node.GetProperty(alias);

            if (mediaProp != null && !string.IsNullOrWhiteSpace(mediaProp.Value))
            {
                if (mediaProp.Value.Contains('<'))
                {
                    foreach (var m in new DynamicXml(mediaProp.Value).OfType <DynamicXml>())
                    {
                        var url = ImageUrlFromXml(ctx, m, cropProperty, cropName);
                        if (!url.IsNullOrWhiteSpace())
                        {
                            yield return(url);
                        }
                    }
                }
                else
                {
                    //we look like a list ofr ids
                    foreach (var val in mediaProp.Value.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                    {
                        int mediaId = 0;
                        if (int.TryParse(val, out mediaId))
                        {
                            var url = ImageUrlFromMediaItem(ctx, mediaId, cropProperty, cropName);
                            if (!url.IsNullOrWhiteSpace())
                            {
                                yield return(url);
                            }
                        }
                    }
                    //we look like xml
                }
            }
        }
 public static string ImageUrl(this RazorLibraryCore ctx, DynamicNode node, string alias, string cropProperty, string cropName)
 {
     return(ImageUrls(ctx, node, alias, cropProperty, cropName).FirstOrDefault());
 }
        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 ?? "";
        }
        private static string ImageUrlFromMediaItem(RazorLibraryCore ctx, int mediaId, string cropProperty, string cropName)
        {
            string url = null;
            DynamicMedia media = ctx.MediaById(mediaId);
            if (media != null)
            {
                if (media.HasProperty(cropProperty))
                {
                    dynamic d = new DynamicXml(media.GetPropertyValue(cropProperty)).Find("@name", cropName);
                    url = (string)d.url;
                }

                if (string.IsNullOrWhiteSpace(url) && media.HasValue("umbracoFile"))
                {
                    url = media.GetPropertyValue("umbracoFile");
                }
            }
            return url ?? "";
        }
 public static IHtmlString RenderMacro(this RazorLibraryCore ctx, string aliasOrPath, params object[] properties)
 {
     //wrap the control returned in a ControlHtmlString that is used to render the control to a
     //string then exposes that string as a HtmlString so Razor will render the contents correctly
     return(new LazyHtmlString(() => RenderMacro(ctx.Node.Id, aliasOrPath, properties)));
 }
        public static IHtmlString RichText(this RazorLibraryCore ctx, string alias)
        {
            var dyNode = new DynamicNode(ctx.Node);

            return(ctx.RichText(dyNode, alias));
        }
 public static IHtmlString RichText(this RazorLibraryCore ctx, DynamicNode item, string alias)
 {
     return(new LazyHtmlString(() => umbraco.library.RenderMacroContent(item.GetPropertyValue(alias), ctx.Node.Id)));
 }
 public static string ImageUrl(this RazorLibraryCore ctx, string alias, string cropProperty, string cropName)
 {
     return(ImageUrl(ctx, new DynamicNode(ctx.Node), alias, cropProperty, cropName));
 }