diff --git a/src/Skybrud.LinkPicker/LinkPickerItem.cs b/src/Skybrud.LinkPicker/LinkPickerItem.cs index c6dbe51..4efc166 100644 --- a/src/Skybrud.LinkPicker/LinkPickerItem.cs +++ b/src/Skybrud.LinkPicker/LinkPickerItem.cs @@ -1,7 +1,11 @@ using System; +using AutoMapper.Mappers; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Skybrud.LinkPicker.Extensions.Json; +using Skybrud.LinkPicker.Json.Converters; +using umbraco.cms.helpers; +using Umbraco.Core.Models; namespace Skybrud.LinkPicker { @@ -62,6 +66,23 @@ public bool IsValid { internal LinkPickerItem() { } + /// + /// Initializes a new link picker item. + /// + /// The ID of the content or media item. + /// The name (text) of the link. + /// The URL of the link. + /// The target of the link. + /// The mode of the link - either , + /// or . + public LinkPickerItem(int id, string name, string url, string target, LinkPickerMode mode) { + Id = id; + Name = name; + Url = url; + Target = target; + Mode = mode; + } + #endregion #region Static methods @@ -103,6 +124,35 @@ public static LinkPickerItem Parse(JObject obj) { } + public static LinkPickerItem GetFromContent(IPublishedContent content) { + if (content == null) throw new ArgumentNullException("content"); + return new LinkPickerItem { + Id = content.Id, + Name = content.Name, + Url = content.Url, + Mode = LinkPickerMode.Content + }; + } + + public static LinkPickerItem GetFromMedia(IPublishedContent media) { + if (media == null) throw new ArgumentNullException("media"); + return new LinkPickerItem { + Id = media.Id, + Name = media.Name, + Url = media.Url, + Mode = LinkPickerMode.Media + }; + } + + public static LinkPickerItem GetFromUrl(string url, string name = null, string target = null) { + if (String.IsNullOrWhiteSpace(url)) throw new ArgumentNullException("url"); + return new LinkPickerItem { + Name = name + "", + Url = url, + Mode = LinkPickerMode.Url + }; + } + #endregion }