Project

General

Profile

« Previous | Next » 

Revision 2529

Allow My Page blocks to be added to from a plugin (#2840).

Partials must be placed under the app/views/my/blocks directory of the plugin.
An example can be found in the sample plugin.

View differences:

trunk/app/controllers/my_controller.rb
1
# redMine - project management software
2
# Copyright (C) 2006  Jean-Philippe Lang
1
# Redmine - project management software
2
# Copyright (C) 2006-2009  Jean-Philippe Lang
3 3
#
4 4
# This program is free software; you can redistribute it and/or
5 5
# modify it under the terms of the GNU General Public License
......
28 28
             'calendar' => :label_calendar,
29 29
             'documents' => :label_document_plural,
30 30
             'timelog' => :label_spent_time
31
           }.freeze
31
           }.merge(Redmine::Views::MyPage::Block.additional_blocks).freeze
32 32

  
33 33
  DEFAULT_LAYOUT = {  'left' => ['issuesassignedtome'], 
34 34
                      'right' => ['issuesreportedbyme'] 
......
108 108
    session[:page_layout] = @blocks
109 109
    %w(top left right).each {|f| session[:page_layout][f] ||= [] }
110 110
    @block_options = []
111
    BLOCKS.each {|k, v| @block_options << [l(v), k.dasherize]}
111
    BLOCKS.each {|k, v| @block_options << [l_or_humanize(v), k.dasherize]}
112 112
  end
113 113
  
114 114
  # Add a block to user's page
trunk/extra/sample_plugin/app/views/my/blocks/_sample_block.rhtml
1
<h3>Sample block</h3>
2

  
3
You are <strong><%= h(User.current) %></strong> and this is a sample block for My Page added from a plugin.
0 4

  
trunk/lib/redmine/views/my_page/block.rb
1
# Redmine - project management software
2
# Copyright (C) 2006-2009  Jean-Philippe Lang
3
#
4
# This program is free software; you can redistribute it and/or
5
# modify it under the terms of the GNU General Public License
6
# as published by the Free Software Foundation; either version 2
7
# of the License, or (at your option) any later version.
8
# 
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
# 
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17

  
18
module Redmine
19
  module Views
20
    module MyPage
21
      module Block
22
        def self.additional_blocks
23
          @@additional_blocks ||= Dir.glob("#{RAILS_ROOT}/vendor/plugins/*/app/views/my/blocks/_*.{rhtml,erb}").inject({}) do |h,file|
24
            name = File.basename(file).split('.').first.gsub(/^_/, '')
25
            h[name] = name
26
            h
27
          end
28
        end
29
      end
30
    end
31
  end
32
end
0 33

  

Also available in: Unified diff