Skip to content

Commit

Permalink
realization this is going to be tricky..
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnMcLear committed Apr 24, 2013
1 parent 64a8d66 commit e219b85
Show file tree
Hide file tree
Showing 10 changed files with 51 additions and 41 deletions.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# MathJax powered LaTeX formulas in ETherpad
# MathJax powered formulas in Etherpad

## How to use..
Enable by clicking Settings Cog --> MathJax LaTeX or by appending ?mathjax=true to the pad URL
Write MathJax style syntax and it will turn your dingdong into formulas

## TODO
* Try to get funding for a few days work to get this done
* Make it work
* http://cdn.mathjax.org/mathjax/latest/test/sample-dynamic-2.html
8 changes: 4 additions & 4 deletions hooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,21 @@ var path = require('path'),
eejs = require("ep_etherpad-lite/node/eejs");

exports.eejsBlock_editbarMenuLeft = function (hook_name, args, cb) {
args.content = args.content + eejs.require("ep_embedmedia/templates/editbarButtons.ejs", {}, module);
args.content = args.content + eejs.require("ep_mathjax/templates/editbarButtons.ejs", {}, module);
return cb();
}

exports.eejsBlock_body = function (hook_name, args, cb) {
args.content = args.content + eejs.require("ep_embedmedia/templates/modals.ejs", {}, module);
args.content = args.content + eejs.require("ep_mathjax/templates/modals.ejs", {}, module);
return cb();
}

exports.eejsBlock_scripts = function (hook_name, args, cb) {
args.content = args.content + eejs.require("ep_embedmedia/templates/scripts.ejs", {}, module);
args.content = args.content + eejs.require("ep_mathjax/templates/scripts.ejs", {}, module);
return cb();
}

exports.eejsBlock_styles = function (hook_name, args, cb) {
args.content = args.content + eejs.require("ep_embedmedia/templates/styles.ejs", {}, module);
args.content = args.content + eejs.require("ep_mathjax/templates/styles.ejs", {}, module);
return cb();
}
8 changes: 4 additions & 4 deletions static/css/ace.css
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
.embedMedia {
.mathjax {
border: 2px solid #bbbbbb;
margin: 2px;
display: inline-block;
line-height: 0;
}

.embedMedia .media {
.mathjax .media {
}

.embedMedia .media iframe {
.mathjax .media iframe {
position: inherit;
}

.embedMedia .character {
.mathjax .character {
/* Do not use display: none, or you'll break backspace for some reason! */
font-size: 0;
opacity: 0;
Expand Down
8 changes: 4 additions & 4 deletions static/css/main.css
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
#embedMediaModal {
#mathjaxModal {
position: absolute;
top: 55px;
right: 20px;
display: none;
z-index:999999;
}

.buttonicon-embed-media { background: url(/static/plugins/ep_embedmedia/static/html/editbar_icon.png) !important; }
.buttonicon-mathjax { background: url(/static/plugins/ep_mathjax/static/html/editbar_icon.png) !important; }

.embedMediaButton {
.mathjaxButton {
padding:10px;
}

#cancelEmbedMedia{
#cancelmathjax{
color:red;
}

Expand Down
19 changes: 12 additions & 7 deletions static/js/hooks.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,34 @@
exports.aceInitInnerdocbodyHead = function(hook_name, args, cb) {
args.iframeHTML.push('<link rel="stylesheet" type="text/css" href="/static/plugins/ep_embedmedia/static/css/ace.css"/>');
args.iframeHTML.push('<link rel="stylesheet" type="text/css" href="/static/plugins/ep_mathjax/static/css/ace.css"/>');
args.iframeHTML.push('<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>');
// args.iframeHTML.push('<script type="text/javascript"> MathJax.Hub.Register.StartupHook("TeX Jax Ready ", function () {top.console.log("MathJax enabled");} );</script>');
args.iframeHTML.push('<script type="text/javascript">MathJax.Hub.Startup.signal.Interest(function (m) {console.log(m)});</script>');
args.iframeHTML.push('<script type="text/javascript">MathJax.Hub.signal.Interest(function (message) {console.log("Hub: "+message)});</script>');

return cb();
};

exports.aceAttribsToClasses = function(hook_name, args, cb) {
if (args.key == 'embedMedia' && args.value != "")
return cb(["embedMedia:" + args.value]);
if (args.key == 'mathjax' && args.value != "")
return cb(["mathjax:" + args.value]);
};

exports.aceCreateDomLine = function(hook_name, args, cb) {
if (args.cls.indexOf('embedMedia:') >= 0) {
if (args.cls.indexOf('mathjax:') >= 0) {
var clss = [];
var argClss = args.cls.split(" ");
var value;

for (var i = 0; i < argClss.length; i++) {
var cls = argClss[i];
if (cls.indexOf("embedMedia:") != -1) {
if (cls.indexOf("mathjax:") != -1) {
value = cls.substr(cls.indexOf(":")+1);
} else {
clss.push(cls);
}
}

return cb([{cls: clss.join(" "), extraOpenTags: "<span class='embedMedia'><span class='media'>" + exports.cleanEmbedCode(unescape(value)) + "</span><span class='character'>", extraCloseTags: '</span>'}]);
return cb([{cls: clss.join(" "), extraOpenTags: "<span class='mathjax'><span class='media'>" + exports.cleanEmbedCode(unescape(value)) + "</span><span class='character'>", extraCloseTags: '</span>'}]);
}

return cb();
Expand Down Expand Up @@ -97,7 +102,7 @@ exports.cleanEmbedCode = function (orig) {
}

if (!res) {
return "<img src='/static/plugins/ep_embedmedia/static/html/invalid.png'>";
return "<img src='/static/plugins/ep_mathjax/static/html/invalid.png'>";
}

return res;
Expand Down
18 changes: 9 additions & 9 deletions static/js/main.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
$(document).ready(function () {
$("#insertEmbedMedia").click(function () {
$("#insertmathjax").click(function () {
// Can not use this yet, fix in main etherpad
// padeditbar.toogleDropDown("embedMediaModal");
// padeditbar.toogleDropDown("mathjaxModal");

var module = $("#embedMediaModal");
var module = $("#mathjaxModal");

if (module.css('display') != "none") {
module.slideUp("fast");
Expand All @@ -12,20 +12,20 @@ $(document).ready(function () {
}
});

$("#doEmbedMedia").click(function () {
$("#domathjax").click(function () {
var padeditor = require('ep_etherpad-lite/static/js/pad_editor').padeditor;

$("#embedMediaModal").slideUp("fast");
$("#mathjaxModal").slideUp("fast");

return padeditor.ace.callWithAce(function (ace) {
rep = ace.ace_getRep();
ace.ace_replaceRange(rep.selStart, rep.selEnd, "E");
ace.ace_performSelectionChange([rep.selStart[0],rep.selStart[1]-1], rep.selStart, false);
ace.ace_performDocumentApplyAttributesToRange(rep.selStart, rep.selEnd, [["embedMedia", escape($("#embedMediaSrc")[0].value)]]);
}, "embedMedia");
ace.ace_performDocumentApplyAttributesToRange(rep.selStart, rep.selEnd, [["mathjax", escape($("#mathjaxSrc")[0].value)]]);
}, "mathjax");
});

$("#cancelEmbedMedia").click(function () {
$("#embedMediaModal").slideUp("fast");
$("#cancelmathjax").click(function () {
$("#mathjaxModal").slideUp("fast");
});
});
6 changes: 3 additions & 3 deletions templates/editbarButtons.ejs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<li id="insertEmbedMedia">
<a title="Embed media">
<span class="buttonicon buttonicon-embed-media"></span>
<li id="insertmathjax">
<a title="Math Jax">
<span class="buttonicon buttonicon-mathjax"></span>
</a>
</li>
10 changes: 5 additions & 5 deletions templates/modals.ejs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<div id="embedMediaModal" class="popup">
<% e.begin_block("embedMediaPopup"); %>
<div id="mathjaxModal" class="popup">
<% e.begin_block("mathjaxPopup"); %>
<h1>Embed media into this pad</h1>
<p>Paste a link or "embed code" here:</p>
<textarea id="embedMediaSrc" rows="10" cols="60"></textarea>
<textarea id="mathjaxSrc" rows="10" cols="60"></textarea>
<div>
<input type="button" class="embedMediaButton" id="doEmbedMedia" value="Insert media">
<input type="button" class="embedMediaButton" id="cancelEmbedMedia" value="Cancel">
<input type="button" class="mathjaxButton" id="domathjax" value="Insert media">
<input type="button" class="mathjaxButton" id="cancelmathjax" value="Cancel">
</div>
<% e.end_block(); %>
</div>
6 changes: 3 additions & 3 deletions templates/scripts.ejs
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
<script src="/static/plugins/ep_embedmedia/static/js/html4-defs.js"></script>
<script src="/static/plugins/ep_embedmedia/static/js/html-sanitizer.js"></script>
<script src="/static/plugins/ep_embedmedia/static/js/main.js"></script>
<script src="/static/plugins/ep_mathjax/static/js/html4-defs.js"></script>
<script src="/static/plugins/ep_mathjax/static/js/html-sanitizer.js"></script>
<script src="/static/plugins/ep_mathjax/static/js/main.js"></script>
2 changes: 1 addition & 1 deletion templates/styles.ejs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<link rel="stylesheet" href="/static/plugins/ep_embedmedia/static/css/main.css" type="text/css" />
<link rel="stylesheet" href="/static/plugins/ep_mathjax/static/css/main.css" type="text/css" />

0 comments on commit e219b85

Please sign in to comment.