diff --git a/lib/gollum/app.rb b/lib/gollum/app.rb index be3e19c6..20deb6e4 100644 --- a/lib/gollum/app.rb +++ b/lib/gollum/app.rb @@ -28,7 +28,7 @@ class String self # Do not transliterate utf-8 url's unless using Grit end end - + # _Header => header which causes errors def to_url return nil if self.nil? @@ -149,7 +149,7 @@ module Precious @allow_uploads = wiki.allow_uploads if page = wikip.page if wiki.live_preview && page.format.to_s.include?('markdown') && supported_useragent?(request.user_agent) - live_preview_url = '/livepreview/index.html?page=' + encodeURIComponent(@name) + live_preview_url = '/livepreview/?page=' + encodeURIComponent(@name) if @path live_preview_url << '&path=' + encodeURIComponent(@path) end @@ -363,6 +363,12 @@ module Precious mustache :page end + get '/livepreview/' do + wiki = wiki_new + @mathjax = wiki.mathjax + mustache :livepreview, { :layout => false } + end + get '/history/*' do @page = wiki_page(params[:splat].first).page @page_num = [params[:page].to_i, 1].max @@ -380,7 +386,7 @@ module Precious @versions = @wiki.latest_changes({:max_count => max_count}) mustache :latest_changes end - + post '/compare/*' do @file = encodeURIComponent(params[:splat].first) @versions = params[:versions] || [] diff --git a/lib/gollum/public/gollum/livepreview/js/livepreview.js b/lib/gollum/public/gollum/livepreview/js/livepreview.js index c39662dc..5d90607c 100644 --- a/lib/gollum/public/gollum/livepreview/js/livepreview.js +++ b/lib/gollum/public/gollum/livepreview/js/livepreview.js @@ -315,6 +315,10 @@ var makePreviewHtml = function () { // preview.innerHTML = text; // this doesn't work on IE. previewSet( text ); + if (win.MathJax) { + win.MathJax.Hub.Queue(['Typeset', win.MathJax.Hub, 'contentframe']); + } + // highlight code blocks. var codeElements = preview.getElementsByTagName( 'pre' ); var codeElementsLength = codeElements.length; @@ -374,19 +378,19 @@ var applyTimeout = function () { ~-1 == false; !~-1 == true; */ if ( !~ location.host.indexOf( 'github.com' ) ) { - + // returns unescaped key with leading slashes removed function key_no_leading_slash( key ) { return unescape( $.key( key ) || '' ).replace( /^\/+/, '' ); } - + // ensure leading / is removed from path and that it ends with / var path = key_no_leading_slash( 'path' ); // don't append '/' if path is empty from removing leading slash if ( path !== '' && path.charAt( path.length - 1 ) !== '/' ) { - path += '/'; + path += '/'; } - + jQuery.ajax( { type: 'GET', url: baseUrl + '/data/' + path + key_no_leading_slash( 'page' ), diff --git a/lib/gollum/templates/layout.mustache b/lib/gollum/templates/layout.mustache index 0453e897..41ae03b5 100644 --- a/lib/gollum/templates/layout.mustache +++ b/lib/gollum/templates/layout.mustache @@ -38,7 +38,7 @@ +{{#mathjax}} +{{^mathjax_config}} + +{{/mathjax_config}} +{{#mathjax_config}} + +{{/mathjax_config}} +{{/mathjax}} diff --git a/lib/gollum/views/livepreview.rb b/lib/gollum/views/livepreview.rb new file mode 100644 index 00000000..ee4c1249 --- /dev/null +++ b/lib/gollum/views/livepreview.rb @@ -0,0 +1,13 @@ +module Precious + module Views + class Livepreview < Layout + def mathjax + @mathjax + end + + def mathjax_config + @mathjax_config + end + end + end +end