using System; using System.Collections.Generic; using System.Linq; using Telligent.Evolution.Extensibility; using Telligent.Evolution.Extensibility.Api.Version1; using Telligent.Evolution.Extensibility.Content.Version1; using IContent = Telligent.Evolution.Extensibility.Content.Version1.IContent; namespace Samples.Links { public class LinkItemContentType : IContentType, IMentionableContentType { IContentStateChanges _contentState = null; #region IPlugin Members public string Description { get { return "Items in a Links collection"; } } public void Initialize() { } public string Name { get { return "Link Items"; } } #endregion #region IContentType Members public Guid[] ApplicationTypes { get { return new Guid[] { ContentTypes.LinksApplicationId }; } } public void AttachChangeEvents(IContentStateChanges stateChanges) { _contentState = stateChanges; } public Guid ContentTypeId { get { return ContentTypes.LinksItemId; } } public string ContentTypeName { get { return "Links Item"; } } public IContent Get(Guid contentId) { return LinksData.GetLink(contentId); } #endregion #region IMentionableContentType public IEnumerable GetMentionables(int userId, string queryText, IMentionableFilter filter) { var links = new List(); var results = LinksData.ListLinks() .Where(r => r.Name.ToLowerInvariant().Contains(queryText.ToLowerInvariant())) .ToList(); foreach (var result in results) { var content = LinksData.GetLink(result.ContentId); if (content != null) { links.Add(content); } } return links; } public string GetMentionPreviewHtml(int userId, Guid contentId) { try { var content = LinksData.GetLink(contentId); if (content != null) { return String.Format("{0} (Link)", content.HtmlName("Web")); } return "(deleted link)"; } catch (Exception) { return "(inaccessible link)"; } } public string GetMentionViewHtml(int userId, Guid contentId) { try { var content = LinksData.GetLink(contentId); if (content != null) { if (!string.IsNullOrEmpty(content.Url)) { return string.Concat("", content.Name, ""); } return content.Name; } return "(deleted link)"; } catch (Exception) { return "(inaccessible link)"; } } #endregion } }