Project

General

Profile

Defect #27685 » view_highlighted_hook.rb

original file - Alexey Prohasko, 2017-12-01 07:06

 
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
(2-2/2)