article.extra-padding.activity-form
  iframe#activity-iframe src=@activity.module_url(@activity_session)

  javascript:
    jQuery(function ($) {
      window.quill = new Quill('#{@activity.module_url(@activity_session)}')
      quill.listen();
    });

article.extra-padding.activity-form
  iframe#activity-iframe src=@activity.module_url(@activity_session) name=@activity.name

  javascript:
    jQuery(function ($) {
      var moduleUrl = '#{@activity.module_url(@activity_session)}';
      window.quill = new Quill(moduleUrl);
      quill.listen();
      var windowProxy = new Porthole.WindowProxy(moduleUrl, '#{@activity.name}');
      windowProxy.addEventListener(function(message) {
        var data = message.data;
        if (data.id) {
          quill.finishActivity(id);
        } else {
          quill.cheat();
        }
      });
    });

Set up Porthole server side.
Set up Porthole server side.

Porthole allows cross domain communication through iFrames.
It still uses the quill.js library. Porthole just passes
the information.

empirical-org/Empirical-Core,empirical-org/Empirical-Core,empirical-org/Empirical-Core,empirical-org/Empirical-Core,empirical-org/Empirical-Core,empirical-org/Empirical-Core,empirical-org/Empirical-Core