OSDN Git Service

Added a sample plugin.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 23 Sep 2007 18:50:53 +0000 (18:50 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 23 Sep 2007 18:50:53 +0000 (18:50 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@753 e93f8b46-1217-0410-a6f0-8f06a7374b81

extra/sample_plugin/README [new file with mode: 0644]
extra/sample_plugin/app/controllers/example_controller.rb [new file with mode: 0644]
extra/sample_plugin/app/views/example/say_goodbye.rhtml [new file with mode: 0644]
extra/sample_plugin/app/views/example/say_hello.rhtml [new file with mode: 0644]
extra/sample_plugin/app/views/settings/_settings.rhtml [new file with mode: 0644]
extra/sample_plugin/assets/images/it_works.png [new file with mode: 0644]
extra/sample_plugin/assets/stylesheets/example.css [new file with mode: 0644]
extra/sample_plugin/db/migrate/001_create_some_models.rb [new file with mode: 0644]
extra/sample_plugin/init.rb [new file with mode: 0644]
extra/sample_plugin/lang/en.yml [new file with mode: 0644]
extra/sample_plugin/lang/fr.yml [new file with mode: 0644]

diff --git a/extra/sample_plugin/README b/extra/sample_plugin/README
new file mode 100644 (file)
index 0000000..eed8b9a
--- /dev/null
@@ -0,0 +1,24 @@
+== Sample plugin
+
+This is a sample plugin for Redmine
+
+== Installation
+
+=== Adding plugin support to Redmine
+
+1. Install engines plugin
+   See: http://rails-engines.org/
+
+2. Uncomment this line in config/environment.rb:
+   config.plugins = ["engines", "*"]
+
+=== Plugin installation
+
+1. Copy the plugin directory into the vendor/plugins directory
+
+2. Migrate plugin:
+   rake db:migrate_plugins
+
+3. Start Redmine
+
+Installed plugins are listed on 'Admin -> Information' screen.
diff --git a/extra/sample_plugin/app/controllers/example_controller.rb b/extra/sample_plugin/app/controllers/example_controller.rb
new file mode 100644 (file)
index 0000000..9bdaf44
--- /dev/null
@@ -0,0 +1,17 @@
+# Sample plugin controller
+class ExampleController < ApplicationController
+  layout 'base'  
+  before_filter :find_project, :authorize
+    
+  def say_hello
+    @value = Setting.plugin_sample_plugin['sample_setting']
+  end
+
+  def say_goodbye
+  end
+  
+private
+  def find_project   
+    @project=Project.find(params[:id])
+  end
+end
diff --git a/extra/sample_plugin/app/views/example/say_goodbye.rhtml b/extra/sample_plugin/app/views/example/say_goodbye.rhtml
new file mode 100644 (file)
index 0000000..3f4d63d
--- /dev/null
@@ -0,0 +1,5 @@
+<p class="icon icon-example-works"><%= l(:text_say_goodbye) %></p>
+
+<% content_for :header_tags do %>
+  <%= stylesheet_link_tag "example.css", :plugin => "sample_plugin", :media => "screen" %>
+<% end %>
diff --git a/extra/sample_plugin/app/views/example/say_hello.rhtml b/extra/sample_plugin/app/views/example/say_hello.rhtml
new file mode 100644 (file)
index 0000000..17aca7b
--- /dev/null
@@ -0,0 +1,9 @@
+<p class="icon icon-example-works"><%= l(:text_say_hello) %></p>
+
+<p><label>Example setting</label>: <%= @value %></p>
+
+<%= link_to_if_authorized 'Good bye', :action => 'say_goodbye', :id => @project %>
+
+<% content_for :header_tags do %>
+  <%= stylesheet_link_tag "example.css", :plugin => "sample_plugin", :media => "screen" %>
+<% end %>
diff --git a/extra/sample_plugin/app/views/settings/_settings.rhtml b/extra/sample_plugin/app/views/settings/_settings.rhtml
new file mode 100644 (file)
index 0000000..bf06e26
--- /dev/null
@@ -0,0 +1,3 @@
+<p><label>Example setting</label><%= text_field_tag 'settings[sample_setting]', @settings['sample_setting'] %></p>
+
+<p><label>Foo</label><%= text_field_tag 'settings[foo]', @settings['foo'] %></p>
diff --git a/extra/sample_plugin/assets/images/it_works.png b/extra/sample_plugin/assets/images/it_works.png
new file mode 100644 (file)
index 0000000..441f368
Binary files /dev/null and b/extra/sample_plugin/assets/images/it_works.png differ
diff --git a/extra/sample_plugin/assets/stylesheets/example.css b/extra/sample_plugin/assets/stylesheets/example.css
new file mode 100644 (file)
index 0000000..8038567
--- /dev/null
@@ -0,0 +1 @@
+.icon-example-works { background-image: url(../images/it_works.png); }
diff --git a/extra/sample_plugin/db/migrate/001_create_some_models.rb b/extra/sample_plugin/db/migrate/001_create_some_models.rb
new file mode 100644 (file)
index 0000000..39d58a6
--- /dev/null
@@ -0,0 +1,13 @@
+# Sample plugin migration
+# Use rake db:migrate_plugins to migrate installed plugins
+class CreateSomeModels < ActiveRecord::Migration
+  def self.up
+    create_table :example_plugin_model, :force => true do |t|
+      t.column "example_attribute", :integer
+    end
+  end
+
+  def self.down
+    drop_table :example_plugin_model
+  end
+end
diff --git a/extra/sample_plugin/init.rb b/extra/sample_plugin/init.rb
new file mode 100644 (file)
index 0000000..48a5d93
--- /dev/null
@@ -0,0 +1,25 @@
+# Redmine sample plugin
+require 'redmine'
+
+RAILS_DEFAULT_LOGGER.info 'Starting Example plugin for RedMine'
+
+Redmine::Plugin.register :sample_plugin do
+  name 'Example plugin'
+  author 'Author name'
+  description 'This is a sample plugin for Redmine'
+  version '0.0.1'
+  settings :default => {'sample_setting' => 'value', 'foo'=>'bar'}, :partial => 'settings/settings'
+
+  # This plugin adds a project module
+  # It can be enabled/disabled at project level (Project settings -> Modules)
+  project_module :example_module do
+    # A public action
+    permission :example_say_hello, {:example => [:say_hello]}, :public => true
+    # This permission has to be explicitly given
+    # It will be listed on the permissions screen
+    permission :example_say_goodbye, {:example => [:say_goodbye]}
+  end
+
+  # A new item is added to the project menu
+  menu :project_menu, :label_plugin_example, :controller => 'example', :action => 'say_hello'
+end
diff --git a/extra/sample_plugin/lang/en.yml b/extra/sample_plugin/lang/en.yml
new file mode 100644 (file)
index 0000000..bf62bc3
--- /dev/null
@@ -0,0 +1,4 @@
+# Sample plugin
+label_plugin_example: Sample Plugin
+text_say_hello: Plugin say 'Hello'
+text_say_goodbye: Plugin say 'Good bye'
diff --git a/extra/sample_plugin/lang/fr.yml b/extra/sample_plugin/lang/fr.yml
new file mode 100644 (file)
index 0000000..2c0829c
--- /dev/null
@@ -0,0 +1,4 @@
+# Sample plugin
+label_plugin_example: Plugin exemple
+text_say_hello: Plugin dit 'Bonjour'
+text_say_goodbye: Plugin dit 'Au revoir'