diff --git a/app/assets/javascripts/discourse/components/markdown.js b/app/assets/javascripts/discourse/components/markdown.js
index 76bce7255..33528c425 100644
--- a/app/assets/javascripts/discourse/components/markdown.js
+++ b/app/assets/javascripts/discourse/components/markdown.js
@@ -106,6 +106,7 @@ Discourse.Markdown = {
     });
 
     converter.hooks.chain("preConversion", function(text) {
+      Discourse.Markdown.textResult = null;
       Discourse.Markdown.trigger('beforeCook', { detail: text, opts: opts });
       return Discourse.Markdown.textResult || text;
     });
diff --git a/lib/plugin.rb b/lib/plugin.rb
index faef47caf..75c6e4b74 100644
--- a/lib/plugin.rb
+++ b/lib/plugin.rb
@@ -103,6 +103,16 @@ class Plugin
     @javascripts << js
   end
 
+
+  def register_asset(file,opts=nil)
+    full_path = File.dirname(path) << "/assets/" << file
+    assets << full_path
+    if opts == :server_side
+      @server_side_javascripts ||= []
+      @server_side_javascripts << full_path
+    end
+  end
+
   def automatic_assets
     css = ""
     js = "(function(){"
@@ -149,19 +159,24 @@ class Plugin
       assets.concat auto_assets
     end
     unless assets.blank?
-      paths = []
       assets.each do |asset|
         if asset =~ /\.js$/
           DiscoursePluginRegistry.javascripts << asset
         elsif asset =~ /\.css$|\.scss$/
           DiscoursePluginRegistry.stylesheets << asset
         end
-        paths << File.dirname(asset)
       end
+
       # TODO possibly amend this to a rails engine
       Rails.configuration.assets.paths << auto_generated_path
       Rails.configuration.assets.paths << File.dirname(path) + "/assets"
     end
+
+    if @server_side_javascripts
+      @server_side_javascripts.each do |js|
+        DiscoursePluginRegistry.server_side_javascripts << js
+      end
+    end
   end
 
   def auth_provider(type, opts)
diff --git a/vendor/gems/discourse_emoji/vendor/assets/javascripts/discourse_emoji.js b/vendor/gems/discourse_emoji/vendor/assets/javascripts/discourse_emoji.js
index bd524438b..296d64935 100644
--- a/vendor/gems/discourse_emoji/vendor/assets/javascripts/discourse_emoji.js
+++ b/vendor/gems/discourse_emoji/vendor/assets/javascripts/discourse_emoji.js
@@ -4,7 +4,7 @@
 
   // Regiest a before cook event
   Discourse.Markdown.on("beforeCook", function(event) {
-    var text = event.detail;
+    var text = this.textResult || event.detail;
     var opts = event.opts;
 
     this.textResult = text.replace(/\:([a-z\_\+\-0-9]+)\:/g, function (m1, m2) {