annotate lib/redmine.rb @ 8:0c83d98252d9 yuya

* Add custom repo prefix and proper auth realm, remove auth cache (seems like an unwise feature), pass DB handle around, various other bits of tidying
author Chris Cannam
date Thu, 12 Aug 2010 15:31:37 +0100
parents 513646585e45
children 1d32c0a0efbf
rev   line source
Chris@0 1 require 'redmine/access_control'
Chris@0 2 require 'redmine/menu_manager'
Chris@0 3 require 'redmine/activity'
Chris@0 4 require 'redmine/search'
Chris@0 5 require 'redmine/custom_field_format'
Chris@0 6 require 'redmine/mime_type'
Chris@0 7 require 'redmine/core_ext'
Chris@0 8 require 'redmine/themes'
Chris@0 9 require 'redmine/hook'
Chris@0 10 require 'redmine/plugin'
Chris@0 11 require 'redmine/wiki_formatting'
Chris@0 12 require 'redmine/scm/base'
Chris@0 13
Chris@0 14 begin
Chris@0 15 require_library_or_gem 'RMagick' unless Object.const_defined?(:Magick)
Chris@0 16 rescue LoadError
Chris@0 17 # RMagick is not available
Chris@0 18 end
Chris@0 19
Chris@0 20 if RUBY_VERSION < '1.9'
Chris@0 21 require 'faster_csv'
Chris@0 22 else
Chris@0 23 require 'csv'
Chris@0 24 FCSV = CSV
Chris@0 25 end
Chris@0 26
Chris@0 27 Redmine::Scm::Base.add "Subversion"
Chris@0 28 Redmine::Scm::Base.add "Darcs"
Chris@0 29 Redmine::Scm::Base.add "Mercurial"
Chris@0 30 Redmine::Scm::Base.add "Cvs"
Chris@0 31 Redmine::Scm::Base.add "Bazaar"
Chris@0 32 Redmine::Scm::Base.add "Git"
Chris@0 33 Redmine::Scm::Base.add "Filesystem"
Chris@0 34
Chris@0 35 Redmine::CustomFieldFormat.map do |fields|
Chris@0 36 fields.register Redmine::CustomFieldFormat.new('string', :label => :label_string, :order => 1)
Chris@0 37 fields.register Redmine::CustomFieldFormat.new('text', :label => :label_text, :order => 2)
Chris@0 38 fields.register Redmine::CustomFieldFormat.new('int', :label => :label_integer, :order => 3)
Chris@0 39 fields.register Redmine::CustomFieldFormat.new('float', :label => :label_float, :order => 4)
Chris@0 40 fields.register Redmine::CustomFieldFormat.new('list', :label => :label_list, :order => 5)
Chris@0 41 fields.register Redmine::CustomFieldFormat.new('date', :label => :label_date, :order => 6)
Chris@0 42 fields.register Redmine::CustomFieldFormat.new('bool', :label => :label_boolean, :order => 7)
Chris@0 43 end
Chris@0 44
Chris@0 45 # Permissions
Chris@0 46 Redmine::AccessControl.map do |map|
Chris@0 47 map.permission :view_project, {:projects => [:show, :activity]}, :public => true
Chris@0 48 map.permission :search_project, {:search => :index}, :public => true
Chris@0 49 map.permission :add_project, {:projects => :add}, :require => :loggedin
Chris@0 50 map.permission :edit_project, {:projects => [:settings, :edit]}, :require => :member
Chris@0 51 map.permission :select_project_modules, {:projects => :modules}, :require => :member
Chris@0 52 map.permission :manage_members, {:projects => :settings, :members => [:new, :edit, :destroy, :autocomplete_for_member]}, :require => :member
Chris@0 53 map.permission :manage_versions, {:projects => :settings, :versions => [:new, :edit, :close_completed, :destroy]}, :require => :member
Chris@0 54 map.permission :add_subprojects, {:projects => :add}, :require => :member
Chris@0 55
Chris@0 56 map.project_module :issue_tracking do |map|
Chris@0 57 # Issue categories
Chris@0 58 map.permission :manage_categories, {:projects => :settings, :issue_categories => [:new, :edit, :destroy]}, :require => :member
Chris@0 59 # Issues
Chris@0 60 map.permission :view_issues, {:projects => :roadmap,
Chris@0 61 :issues => [:index, :changes, :show, :context_menu, :auto_complete],
Chris@0 62 :versions => [:show, :status_by],
Chris@0 63 :queries => :index,
Chris@0 64 :reports => [:issue_report, :issue_report_details]}
Chris@0 65 map.permission :add_issues, {:issues => [:new, :create, :update_form]}
Chris@0 66 map.permission :edit_issues, {:issues => [:edit, :update, :reply, :bulk_edit, :update_form]}
Chris@0 67 map.permission :manage_issue_relations, {:issue_relations => [:new, :destroy]}
Chris@0 68 map.permission :manage_subtasks, {}
Chris@0 69 map.permission :add_issue_notes, {:issues => [:edit, :update, :reply]}
Chris@0 70 map.permission :edit_issue_notes, {:journals => :edit}, :require => :loggedin
Chris@0 71 map.permission :edit_own_issue_notes, {:journals => :edit}, :require => :loggedin
Chris@0 72 map.permission :move_issues, {:issues => :move}, :require => :loggedin
Chris@0 73 map.permission :delete_issues, {:issues => :destroy}, :require => :member
Chris@0 74 # Queries
Chris@0 75 map.permission :manage_public_queries, {:queries => [:new, :edit, :destroy]}, :require => :member
Chris@0 76 map.permission :save_queries, {:queries => [:new, :edit, :destroy]}, :require => :loggedin
Chris@0 77 # Gantt & calendar
Chris@0 78 map.permission :view_gantt, :gantts => :show
Chris@0 79 map.permission :view_calendar, :calendars => :show
Chris@0 80 # Watchers
Chris@0 81 map.permission :view_issue_watchers, {}
Chris@0 82 map.permission :add_issue_watchers, {:watchers => :new}
Chris@0 83 map.permission :delete_issue_watchers, {:watchers => :destroy}
Chris@0 84 end
Chris@0 85
Chris@0 86 map.project_module :time_tracking do |map|
Chris@0 87 map.permission :log_time, {:timelog => :edit}, :require => :loggedin
Chris@0 88 map.permission :view_time_entries, :timelog => [:details, :report]
Chris@0 89 map.permission :edit_time_entries, {:timelog => [:edit, :destroy]}, :require => :member
Chris@0 90 map.permission :edit_own_time_entries, {:timelog => [:edit, :destroy]}, :require => :loggedin
Chris@0 91 map.permission :manage_project_activities, {:projects => [:save_activities, :reset_activities]}, :require => :member
Chris@0 92 end
Chris@0 93
Chris@0 94 map.project_module :news do |map|
Chris@0 95 map.permission :manage_news, {:news => [:new, :edit, :destroy, :destroy_comment]}, :require => :member
Chris@0 96 map.permission :view_news, {:news => [:index, :show]}, :public => true
Chris@0 97 map.permission :comment_news, {:news => :add_comment}
Chris@0 98 end
Chris@0 99
Chris@0 100 map.project_module :documents do |map|
Chris@0 101 map.permission :manage_documents, {:documents => [:new, :edit, :destroy, :add_attachment]}, :require => :loggedin
Chris@0 102 map.permission :view_documents, :documents => [:index, :show, :download]
Chris@0 103 end
Chris@0 104
Chris@0 105 map.project_module :files do |map|
Chris@0 106 map.permission :manage_files, {:projects => :add_file}, :require => :loggedin
Chris@0 107 map.permission :view_files, :projects => :list_files, :versions => :download
Chris@0 108 end
Chris@0 109
Chris@0 110 map.project_module :wiki do |map|
Chris@0 111 map.permission :manage_wiki, {:wikis => [:edit, :destroy]}, :require => :member
Chris@0 112 map.permission :rename_wiki_pages, {:wiki => :rename}, :require => :member
Chris@0 113 map.permission :delete_wiki_pages, {:wiki => :destroy}, :require => :member
Chris@0 114 map.permission :view_wiki_pages, :wiki => [:index, :special]
Chris@0 115 map.permission :export_wiki_pages, {}
Chris@0 116 map.permission :view_wiki_edits, :wiki => [:history, :diff, :annotate]
Chris@0 117 map.permission :edit_wiki_pages, :wiki => [:edit, :preview, :add_attachment]
Chris@0 118 map.permission :delete_wiki_pages_attachments, {}
Chris@0 119 map.permission :protect_wiki_pages, {:wiki => :protect}, :require => :member
Chris@0 120 end
Chris@0 121
Chris@0 122 map.project_module :repository do |map|
Chris@0 123 map.permission :manage_repository, {:repositories => [:edit, :committers, :destroy]}, :require => :member
Chris@0 124 map.permission :browse_repository, :repositories => [:show, :browse, :entry, :annotate, :changes, :diff, :stats, :graph]
Chris@0 125 map.permission :view_changesets, :repositories => [:show, :revisions, :revision]
Chris@0 126 map.permission :commit_access, {}
Chris@0 127 end
Chris@0 128
Chris@0 129 map.project_module :boards do |map|
Chris@0 130 map.permission :manage_boards, {:boards => [:new, :edit, :destroy]}, :require => :member
Chris@0 131 map.permission :view_messages, {:boards => [:index, :show], :messages => [:show]}, :public => true
Chris@0 132 map.permission :add_messages, {:messages => [:new, :reply, :quote]}
Chris@0 133 map.permission :edit_messages, {:messages => :edit}, :require => :member
Chris@0 134 map.permission :edit_own_messages, {:messages => :edit}, :require => :loggedin
Chris@0 135 map.permission :delete_messages, {:messages => :destroy}, :require => :member
Chris@0 136 map.permission :delete_own_messages, {:messages => :destroy}, :require => :loggedin
Chris@0 137 end
Chris@0 138 end
Chris@0 139
Chris@0 140 Redmine::MenuManager.map :top_menu do |menu|
Chris@0 141 menu.push :home, :home_path
Chris@0 142 menu.push :my_page, { :controller => 'my', :action => 'page' }, :if => Proc.new { User.current.logged? }
Chris@0 143 menu.push :projects, { :controller => 'projects', :action => 'index' }, :caption => :label_project_plural
Chris@0 144 menu.push :administration, { :controller => 'admin', :action => 'index' }, :if => Proc.new { User.current.admin? }, :last => true
Chris@0 145 menu.push :help, Redmine::Info.help_url, :last => true
Chris@0 146 end
Chris@0 147
Chris@0 148 Redmine::MenuManager.map :account_menu do |menu|
Chris@0 149 menu.push :login, :signin_path, :if => Proc.new { !User.current.logged? }
Chris@0 150 menu.push :register, { :controller => 'account', :action => 'register' }, :if => Proc.new { !User.current.logged? && Setting.self_registration? }
Chris@0 151 menu.push :my_account, { :controller => 'my', :action => 'account' }, :if => Proc.new { User.current.logged? }
Chris@0 152 menu.push :logout, :signout_path, :if => Proc.new { User.current.logged? }
Chris@0 153 end
Chris@0 154
Chris@0 155 Redmine::MenuManager.map :application_menu do |menu|
Chris@0 156 # Empty
Chris@0 157 end
Chris@0 158
Chris@0 159 Redmine::MenuManager.map :admin_menu do |menu|
Chris@0 160 # Empty
Chris@0 161 end
Chris@0 162
Chris@0 163 Redmine::MenuManager.map :project_menu do |menu|
Chris@0 164 menu.push :overview, { :controller => 'projects', :action => 'show' }
Chris@0 165 menu.push :activity, { :controller => 'projects', :action => 'activity' }
Chris@0 166 menu.push :roadmap, { :controller => 'projects', :action => 'roadmap' },
Chris@0 167 :if => Proc.new { |p| p.shared_versions.any? }
Chris@0 168 menu.push :issues, { :controller => 'issues', :action => 'index' }, :param => :project_id, :caption => :label_issue_plural
Chris@0 169 menu.push :new_issue, { :controller => 'issues', :action => 'new' }, :param => :project_id, :caption => :label_issue_new,
Chris@0 170 :html => { :accesskey => Redmine::AccessKeys.key_for(:new_issue) }
Chris@0 171 menu.push :news, { :controller => 'news', :action => 'index' }, :param => :project_id, :caption => :label_news_plural
Chris@0 172 menu.push :documents, { :controller => 'documents', :action => 'index' }, :param => :project_id, :caption => :label_document_plural
Chris@0 173 menu.push :wiki, { :controller => 'wiki', :action => 'index', :page => nil },
Chris@0 174 :if => Proc.new { |p| p.wiki && !p.wiki.new_record? }
Chris@0 175 menu.push :boards, { :controller => 'boards', :action => 'index', :id => nil }, :param => :project_id,
Chris@0 176 :if => Proc.new { |p| p.boards.any? }, :caption => :label_board_plural
Chris@0 177 menu.push :files, { :controller => 'projects', :action => 'list_files' }, :caption => :label_file_plural
Chris@0 178 menu.push :repository, { :controller => 'repositories', :action => 'show' },
Chris@0 179 :if => Proc.new { |p| p.repository && !p.repository.new_record? }
Chris@0 180 menu.push :settings, { :controller => 'projects', :action => 'settings' }, :last => true
Chris@0 181 end
Chris@0 182
Chris@0 183 Redmine::Activity.map do |activity|
Chris@0 184 activity.register :issues, :class_name => %w(Issue Journal)
Chris@0 185 activity.register :changesets
Chris@0 186 activity.register :news
Chris@0 187 activity.register :documents, :class_name => %w(Document Attachment)
Chris@0 188 activity.register :files, :class_name => 'Attachment'
Chris@0 189 activity.register :wiki_edits, :class_name => 'WikiContent::Version', :default => false
Chris@0 190 activity.register :messages, :default => false
Chris@0 191 activity.register :time_entries, :default => false
Chris@0 192 end
Chris@0 193
Chris@0 194 Redmine::Search.map do |search|
Chris@0 195 search.register :issues
Chris@0 196 search.register :news
Chris@0 197 search.register :documents
Chris@0 198 search.register :changesets
Chris@0 199 search.register :wiki_pages
Chris@0 200 search.register :messages
Chris@0 201 search.register :projects
Chris@0 202 end
Chris@0 203
Chris@0 204 Redmine::WikiFormatting.map do |format|
Chris@0 205 format.register :textile, Redmine::WikiFormatting::Textile::Formatter, Redmine::WikiFormatting::Textile::Helper
Chris@0 206 end