TinyMCE plugin in add-on

Ted
Ted
Vote:
 

Hi!

I would like to add a TinyMCE plugin inside an Episerver add-on.

The add-on itself works just fine, and it properly registers the TinyMCE plugin like so (additional attribute parameters excluded for brevity):

[TinyMCEPluginNonVisual(PlugInName = "mycustomplugin")]
public class MyCustomTinyMcePlugin
{

}

However, the plugin itself fails to load. Episerver simply returns a 404 when trying to get the plugin from: /Util/Editor/tinymce/plugins/mycustomplugin/editor_plugin.js

My add-on is contained within a zip file, which in turn contains the TinyMCE plugin.

I can access the plugin JavaScript file if I request the add-on VPP path configured for the add-on, like:

/Episerver/My.Custom.Addon/Util/Editor/tinymce/plugins/mycustomplugin/editor_plugin.js

However, this doesn't help as the TinyMCE editor always loads plugins from:

/Util/Editor/tinymce/plugins

Is there any way to make files in my add-on available under the /Util path, or is there some other clever way of enabling the plugin?

I would like to avoid registering a VirtualPathProvider, as my add-on won't be able to tell what the actual path will be (the add-on is supposed to be re-usable).

Any tips or pointers are greatly appreciated! :)

#147667
Apr 20, 2016 20:53
Ted
Vote:
 

For now I'll just do something like this in an IHttpInitializableModule in the add-on assembly (this way the plugin script file will be served by the VPP automatically registered for the add-on zip file):

public void InitializeHttpEvents(HttpApplication application)
{
   application.BeginRequest += RewritePluginPath;
}

private void RewritePluginPath(object sender, EventArgs e)
{
   const string pluginFolderPath = "/Util/Editor/tinymce/plugins/mycustomplugin/editor_plugin.js";

   if (HttpContext.Current.Request.Url.AbsolutePath.StartsWith(pluginFolderPath))
   {
      HttpContext.Current.RewritePath(string.Concat("/Episerver/My.Custom.Addon/", pluginFolderPath));
   }
}


                        
#147698
Edited, Apr 21, 2016 14:40
This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.