summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2007-09-23 17:19:27 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2007-09-23 17:19:27 +0000
commite4f0864e3a7f17f0e8a282aad29202f53bf11139 (patch)
treea40440471a6b0a8bc8aedf9d89d8bf2ef27e918f /app
parenta42a115b8fa21ab506cd40765a9e5684f022451b (diff)
downloadredmine-e4f0864e3a7f17f0e8a282aad29202f53bf11139.tar.gz
redmine-e4f0864e3a7f17f0e8a282aad29202f53bf11139.zip
Basic plugin support.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@752 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r--app/controllers/admin_controller.rb3
-rw-r--r--app/controllers/settings_controller.rb12
-rw-r--r--app/models/setting.rb6
-rw-r--r--app/views/admin/info.rhtml16
-rw-r--r--app/views/settings/plugin.rhtml8
5 files changed, 43 insertions, 2 deletions
diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb
index ccc107507..bceab361c 100644
--- a/app/controllers/admin_controller.rb
+++ b/app/controllers/admin_controller.rb
@@ -74,6 +74,7 @@ class AdminController < ApplicationController
:default_admin_changed => User.find(:first, :conditions => ["login=? and hashed_password=?", 'admin', User.hash_password('admin')]).nil?,
:file_repository_writable => File.writable?(Attachment.storage_path),
:rmagick_available => Object.const_defined?(:Magick)
- }
+ }
+ @plugins = Redmine::Plugin.registered_plugins
end
end
diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb
index 229a4ab3c..09af63176 100644
--- a/app/controllers/settings_controller.rb
+++ b/app/controllers/settings_controller.rb
@@ -30,4 +30,16 @@ class SettingsController < ApplicationController
redirect_to :action => 'edit' and return
end
end
+
+ def plugin
+ plugin_id = params[:id].to_sym
+ @plugin = Redmine::Plugin.registered_plugins[plugin_id]
+ if request.post?
+ Setting["plugin_#{plugin_id}"] = params[:settings]
+ flash[:notice] = l(:notice_successful_update)
+ redirect_to :action => 'plugin', :id => params[:id]
+ end
+ @partial = "../../vendor/plugins/#{plugin_id}/app/views/" + @plugin.settings[:partial]
+ @settings = Setting["plugin_#{plugin_id}"]
+ end
end
diff --git a/app/models/setting.rb b/app/models/setting.rb
index d661eed75..1c953f4c8 100644
--- a/app/models/setting.rb
+++ b/app/models/setting.rb
@@ -19,7 +19,11 @@ class Setting < ActiveRecord::Base
cattr_accessor :available_settings
@@available_settings = YAML::load(File.open("#{RAILS_ROOT}/config/settings.yml"))
-
+ Redmine::Plugin.registered_plugins.each do |id, plugin|
+ next unless plugin.settings
+ @@available_settings["plugin_#{id}"] = {'default' => plugin.settings[:default], 'serialized' => true}
+ end
+
validates_uniqueness_of :name
validates_inclusion_of :name, :in => @@available_settings.keys
validates_numericality_of :value, :only_integer => true, :if => Proc.new { |setting| @@available_settings[setting.name]['format'] == 'int' }
diff --git a/app/views/admin/info.rhtml b/app/views/admin/info.rhtml
index 59b1c3f26..d84d2ad32 100644
--- a/app/views/admin/info.rhtml
+++ b/app/views/admin/info.rhtml
@@ -7,3 +7,19 @@
<tr class="even"><td>File repository writable</td><td><%= image_tag (@flags[:file_repository_writable] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
<tr class="odd"><td>RMagick available</td><td><%= image_tag (@flags[:rmagick_available] ? 'true.png' : 'false.png'), :style => "vertical-align:bottom;" %></td></tr>
</table>
+
+<% if @plugins.any? %>
+&nbsp;
+<h3 class="icon22 icon22-plugin">Plugins</h3>
+<table class="list">
+ <% @plugins.keys.sort.each do |plugin| %>
+ <tr class="<%= cycle('odd', 'even') %>">
+ <td><%=h @plugins[plugin].name %></td>
+ <td><%=h @plugins[plugin].description %></td>
+ <td><%=h @plugins[plugin].author %></td>
+ <td><%=h @plugins[plugin].version %></td>
+ <td><%= link_to('Configure', :controller => 'settings', :action => 'plugin', :id => plugin.to_s) if @plugins[plugin].configurable? %></td>
+ </tr>
+ <% end %>
+</table>
+<% end %>
diff --git a/app/views/settings/plugin.rhtml b/app/views/settings/plugin.rhtml
new file mode 100644
index 000000000..6f4eb2b70
--- /dev/null
+++ b/app/views/settings/plugin.rhtml
@@ -0,0 +1,8 @@
+<h2><%= l(:label_settings) %>: <%=h @plugin.name %></h2>
+
+<% form_tag({:action => 'plugin'}) do %>
+<div class="box tabular">
+<%= render :partial => @partial, :locals => {:settings => @settings}%>
+</div>
+<%= submit_tag l(:button_apply) %>
+<% end %>