When I load my rich text editor (from within an Admin Panel) I don't see any embeddables. And when I try to add an image, I don't see the "upload" link. Any Ideas?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Telligent.Evolution.Extensibility; using Telligent.Evolution.Extensibility.Api.Version1; using Telligent.Evolution.Extensibility.Content.Version1; using Telligent.Evolution.Extensibility.EmbeddableContent.Version2; using Telligent.Evolution.Extensibility.Storage.Version1; namespace HearingFirst.Learning.Content { public class RequirementContentType : IContentType, IContentEmbeddableContentType, IFileEmbeddableContentType { private IFileEmbeddableContentTypeController _embeddedFileController; private IContentEmbeddableContentTypeController _embeddedController; IContentStateChanges _contentState; #region IPLugin public string Name => "Hearing First Learning - Requirement Content Type"; public string Description => "The content type definition for requirements"; public void Initialize() { // Embeds Events.RequirementEvents.Events.OnBeforeRequirementUpdated += RequirementBeforeUpdate; Events.RequirementEvents.Events.OnBeforeRequirementCreated += RequirementBeforeCreate; // Auditing Events.RequirementEvents.Events.OnBeforeRequirementUpdated += AuditRequirementUpdate; Events.CourseRegistrationEvents.Events.OnBeforeCourseRegistrationUpdated += AuditRegistrationUpdated; } #endregion #region ICOntentType public string ContentTypeName => "Course Requirement"; public Guid ContentTypeId => Components.Requirements.CONTENT_TYPE_ID; public Guid[] ApplicationTypes => new Guid[] { Apis.Get<IGroups>().ApplicationTypeId }; public void AttachChangeEvents(IContentStateChanges stateChanges) { _contentState = stateChanges; } public IContent Get(Guid contentId) { return Components.Requirements.Get(contentId); } #endregion #region IContentEmbeddableContentTypeController Members public void SetController(IContentEmbeddableContentTypeController controller) { _embeddedController = controller; } #endregion #region IFileEmbeddableContentType Members public void SetController(IFileEmbeddableContentTypeController controller) { _embeddedFileController = controller; } public bool CanAddFiles(int userId) { return true; } #endregion #region Event Handlers private void RequirementBeforeUpdate(Events.RequirementEventArgs e) { if (_embeddedFileController == null || _embeddedController == null) { return; } if (_embeddedController != null) { _embeddedController.Updated(e.Requirement.ContentId, null, (updater) => { e.Requirement.Body = updater.Update(e.Requirement.Body); }); } var hasPermission = true; var targetFileStore = CentralizedFileStorage.GetFileStore(Plugins.CourseFileStorage.FILE_STORAGE_KEY); e.Requirement.Body = _embeddedFileController.SaveFilesInHtml(e.Requirement.Body, f => { if (!hasPermission) { _embeddedFileController.InvalidFile(f, "You do not have permission to add files to a course."); } if (f.FileStoreKey.Contains("hfle23")) { return targetFileStore.GetFile(f.Path, f.FileName); } using (var stream = f.OpenReadStream()) { var targetFile = targetFileStore.AddFile(e.Requirement.Id.ToString("N"), String.Format("{0}_{1}", e.Requirement.Id.ToString(), f.FileName), stream, true); if (targetFile != null) { return targetFile; } else { _embeddedFileController.InvalidFile(f, "An error occurred while saving an embedded file to the session."); } } return null; }); } private void RequirementBeforeCreate(Events.RequirementEventArgs e) { if (_embeddedFileController == null || _embeddedController == null) { return; } if (_embeddedController != null) { _embeddedController.Updated(e.Requirement.ContentId, null, (updater) => { e.Requirement.Body = updater.Update(e.Requirement.Body); }); } var hasPermission = true; var targetFileStore = CentralizedFileStorage.GetFileStore(Plugins.CourseFileStorage.FILE_STORAGE_KEY); e.Requirement.Body = _embeddedFileController.SaveFilesInHtml(e.Requirement.Body, f => { if (!hasPermission) { _embeddedFileController.InvalidFile(f, "You do not have permission to add files to a course."); } if (f.FileStoreKey.Contains("hfle23")) { return targetFileStore.GetFile(f.Path, f.FileName); } using (var stream = f.OpenReadStream()) { var targetFile = targetFileStore.AddFile(e.Requirement.Id.ToString("N"), String.Format("{0}_{1}", e.Requirement.Id.ToString(), f.FileName), stream, true); if (targetFile != null) { return targetFile; } else { _embeddedFileController.InvalidFile(f, "An error occurred while saving an embedded file to the session."); } } return null; }); } private void AuditRequirementUpdate(Events.RequirementEventArgs e) { var _auditing = Apis.Get<IAuditing>(); var requirement = Components.Requirements.Get(e.Requirement.Id); _auditing.Edited(requirement, e.Requirement); } private void AuditRegistrationUpdated(Events.CourseRegistrationEventArgs e) { var _auditing = Apis.Get<IAuditing>(); var registration = Components.Registrations.Get(e.CourseRegistration.Id); _auditing.Edited(registration, e.CourseRegistration); } #endregion } }