1
|
module Highlightjs
|
2
|
module Hooks
|
3
|
class ViewHighlightedHook < Redmine::Hook::ViewListener
|
4
|
def view_layouts_base_html_head(context={})
|
5
|
|
6
|
request = context[:request].env['HTTP_USER_AGENT']
|
7
|
user_agent = UserAgent.parse(request)
|
8
|
|
9
|
if SupportedBrowsers.detect { |browser| user_agent >= browser }
|
10
|
Rails.logger.info "redmine_highlightjs2: supported browser: #{user_agent}"
|
11
|
begin
|
12
|
Redmine::SyntaxHighlighting.highlighter = 'HighlightJsSyntaxHighlighting'
|
13
|
rescue
|
14
|
Rails.logger.info "redmine_highlightjs2: cannot turn off CodeRay"
|
15
|
end
|
16
|
setting = User.current.preference.code_theme unless Setting.plugin_redmine_highlightjs[:allow_redefine].nil? ||
|
17
|
User.current.preference.nil?
|
18
|
setting = Setting.plugin_redmine_highlightjs['theme'] if setting.nil? || setting.empty? || setting == CodeThemeUserSetting::DEFAULT_CODE_THEME
|
19
|
setting = 'monokai_sublime' if setting.nil? || setting.empty?
|
20
|
return stylesheet_link_tag("themes/#{setting}.css", :plugin => "redmine_highlightjs", :media => "screen") +
|
21
|
stylesheet_link_tag("fixes.css", :plugin => "redmine_highlightjs", :media => "screen") +
|
22
|
javascript_include_tag('highlight.pack.min.js', :plugin => 'redmine_highlightjs') +
|
23
|
javascript_include_tag('loader.js', :plugin => 'redmine_highlightjs')
|
24
|
else
|
25
|
Rails.logger.info "redmine_highlightjs2: *NOT* supported browser: #{user_agent}"
|
26
|
return '';
|
27
|
end
|
28
|
|
29
|
end
|
30
|
end
|
31
|
|
32
|
private
|
33
|
|
34
|
Browser = Struct.new(:browser, :version)
|
35
|
|
36
|
SupportedBrowsers = [
|
37
|
Browser.new('Safari', '2'),
|
38
|
Browser.new('Firefox', '3'),
|
39
|
Browser.new('Chrome', '10'),
|
40
|
Browser.new('Internet Explorer', '9')
|
41
|
]
|
42
|
|
43
|
end
|
44
|
end
|