diff --git a/lib/generators/board_plugin/USAGE b/lib/generators/board_plugin/USAGE
new file mode 100644
index 0000000..817dc18
--- /dev/null
+++ b/lib/generators/board_plugin/USAGE
@@ -0,0 +1,4 @@
+Creates a skeleton for your board plugin.
+
+Usage :
+ script/generate board_plugin [pluginname]
diff --git a/lib/generators/board_plugin/board_plugin_generator.rb b/lib/generators/board_plugin/board_plugin_generator.rb
new file mode 100644
index 0000000..9529449
--- /dev/null
+++ b/lib/generators/board_plugin/board_plugin_generator.rb
@@ -0,0 +1,34 @@
+class BoardPluginGenerator < Rails::Generator::NamedBase
+ attr_reader :plugin_name
+ def initialize(runtime_args, runtime_options = {})
+ super
+ @plugin_name = file_name.underscore
+ end
+
+ def manifest
+ @plugin_name = name
+ record do |m|
+ m.directory "vendor/plugins/#{@plugin_name}/"
+ m.template "init.rb.erb", "vendor/plugins/#{@plugin_name}/init.rb"
+ m.file "README", "vendor/plugins/#{@plugin_name}/REAMDE"
+
+ m.directory "vendor/plugins/#{@plugin_name}/lib/"
+ m.template "lib/helpers.rb.erb", "vendor/plugins/#{@plugin_name}/lib/#{@plugin_name}.rb"
+ m.directory "vendor/plugins/#{@plugin_name}/lib/javascripts"
+ m.directory "vendor/plugins/#{@plugin_name}/lib/stylesheets"
+ m.directory "vendor/plugins/#{@plugin_name}/lib/views"
+ m.file "lib/javascripts/javascripts.js", "vendor/plugins/#{@plugin_name}/lib/javascripts/#{@plugin_name}.js"
+ m.file "lib/stylesheets/stylesheets.css", "vendor/plugins/#{@plugin_name}/lib/stylesheets/#{@plugin_name}.css"
+ m.file "lib/views/_formfor_plugin.html.erb", "vendor/plugins/#{@plugin_name}/lib/views/_formfor_#{@plugin_name}.html.erb"
+ m.file "lib/views/view.html.erb", "vendor/plugins/#{@plugin_name}/lib/views/#{@plugin_name}.html.erb"
+
+ m.directory "vendor/plugins/#{@plugin_name}/test/"
+ m.template "test/plugin_test.rb.erb", "vendor/plugins/#{@plugin_name}/test/#{@plugin_name}_test.rb"
+ m.file "test/test_helper.rb", "vendor/plugins/#{@plugin_name}/test/test_helper.rb"
+
+ m.directory "vendor/plugins/#{@plugin_name}/tasks/"
+ m.template "tasks/plugin_tasks.rake.erb", "vendor/plugins/#{@plugin_name}/tasks/#{@plugin_name}_tasks.rake"
+
+ end
+ end
+end
diff --git a/lib/generators/board_plugin/templates/README b/lib/generators/board_plugin/templates/README
new file mode 100644
index 0000000..7fdd649
--- /dev/null
+++ b/lib/generators/board_plugin/templates/README
@@ -0,0 +1,13 @@
+Title
+====
+
+Introduction goes here.
+
+
+Example
+=======
+
+Example goes here.
+
+
+Copyright (c) 2010 [name of plugin creator], released under the MIT license
diff --git a/lib/generators/board_plugin/templates/Rakefile b/lib/generators/board_plugin/templates/Rakefile
new file mode 100644
index 0000000..9252428
--- /dev/null
+++ b/lib/generators/board_plugin/templates/Rakefile
@@ -0,0 +1,23 @@
+require 'rake'
+require 'rake/testtask'
+require 'rake/rdoctask'
+
+desc 'Default: run unit tests.'
+task :default => :test
+
+desc 'Test the feed plugin.'
+Rake::TestTask.new(:test) do |t|
+ t.libs << 'lib'
+ t.libs << 'test'
+ t.pattern = 'test/**/*_test.rb'
+ t.verbose = true
+end
+
+desc 'Generate documentation for the feed plugin.'
+Rake::RDocTask.new(:rdoc) do |rdoc|
+ rdoc.rdoc_dir = 'rdoc'
+ rdoc.title = 'Feed'
+ rdoc.options << '--line-numbers' << '--inline-source'
+ rdoc.rdoc_files.include('README')
+ rdoc.rdoc_files.include('lib/**/*.rb')
+end
diff --git a/lib/generators/board_plugin/templates/init.rb.erb b/lib/generators/board_plugin/templates/init.rb.erb
new file mode 100644
index 0000000..c1fdf11
--- /dev/null
+++ b/lib/generators/board_plugin/templates/init.rb.erb
@@ -0,0 +1 @@
+ActionView::Base.send :include, <%= plugin_name.capitalize%>
diff --git a/lib/generators/board_plugin/templates/lib/helpers.rb.erb b/lib/generators/board_plugin/templates/lib/helpers.rb.erb
new file mode 100644
index 0000000..2164b05
--- /dev/null
+++ b/lib/generators/board_plugin/templates/lib/helpers.rb.erb
@@ -0,0 +1,3 @@
+module <%= plugin_name.capitalize %>
+ #Your code goes here
+end
diff --git a/lib/generators/board_plugin/templates/lib/javascripts/javascripts.js b/lib/generators/board_plugin/templates/lib/javascripts/javascripts.js
new file mode 100644
index 0000000..e5305e4
--- /dev/null
+++ b/lib/generators/board_plugin/templates/lib/javascripts/javascripts.js
@@ -0,0 +1 @@
+//Your Javascript goes here
diff --git a/lib/generators/board_plugin/templates/lib/stylesheets/stylesheets.css b/lib/generators/board_plugin/templates/lib/stylesheets/stylesheets.css
new file mode 100644
index 0000000..22cc376
--- /dev/null
+++ b/lib/generators/board_plugin/templates/lib/stylesheets/stylesheets.css
@@ -0,0 +1 @@
+/* You CSS goes here*/
diff --git a/lib/generators/board_plugin/templates/lib/views/_formfor_plugin.html.erb b/lib/generators/board_plugin/templates/lib/views/_formfor_plugin.html.erb
new file mode 100644
index 0000000..553fef5
--- /dev/null
+++ b/lib/generators/board_plugin/templates/lib/views/_formfor_plugin.html.erb
@@ -0,0 +1,6 @@
+<% form_remote_tag :html => { :action => url_for(:controller => "griditems", :action =>"create_grid_item"), :id => "form_for"} do %>
+
+ <%= hidden_field_tag "refresh_rate", "0" %>
+ <%= submit_to_remote "create_grid_item", "Create", :url => {:action => "create_grid_item", :type => type}, :html => {:class => "create"} %>
+ <%= submit_to_remote "update_grid_item", "Update", :url => {:action => "update_grid_item", :type => type}, :html => {:class => "update"} %>
+<% end %>
diff --git a/lib/generators/board_plugin/templates/lib/views/view.html.erb b/lib/generators/board_plugin/templates/lib/views/view.html.erb
new file mode 100644
index 0000000..72ddae4
--- /dev/null
+++ b/lib/generators/board_plugin/templates/lib/views/view.html.erb
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/lib/generators/board_plugin/templates/tasks/plugin_tasks.rake.erb b/lib/generators/board_plugin/templates/tasks/plugin_tasks.rake.erb
new file mode 100644
index 0000000..43b3669
--- /dev/null
+++ b/lib/generators/board_plugin/templates/tasks/plugin_tasks.rake.erb
@@ -0,0 +1,12 @@
+namespace :<%= plugin_name.to_sym%> do
+ desc "Sync plugin files with Bernard-Board"
+ task :sync do
+ a = system "rsync -ruv vendor/plugins/<%= plugin_name %>/lib/views/* app/views/griditems/plugins/<%= plugin_name %>"
+ a = system "rsync -ruv vendor/plugins/<%= plugin_name%>/lib/javascripts/* public/javascripts"
+ if a == true
+ system "echo '\n\nSync was successful!'"
+ else
+ system "echo '\n\nSync failed!"
+ end
+ end
+end
diff --git a/lib/generators/board_plugin/templates/test/plugin_test.rb.erb b/lib/generators/board_plugin/templates/test/plugin_test.rb.erb
new file mode 100644
index 0000000..1d90d00
--- /dev/null
+++ b/lib/generators/board_plugin/templates/test/plugin_test.rb.erb
@@ -0,0 +1,8 @@
+require 'test_helper'
+
+class <%=plugin_name%>Test < ActiveSupport::TestCase
+ # Replace this with your real tests.
+ test "the truth" do
+ assert true
+ end
+end
diff --git a/lib/generators/board_plugin/templates/test/test_helper.rb b/lib/generators/board_plugin/templates/test/test_helper.rb
new file mode 100644
index 0000000..cf148b8
--- /dev/null
+++ b/lib/generators/board_plugin/templates/test/test_helper.rb
@@ -0,0 +1,3 @@
+require 'rubygems'
+require 'active_support'
+require 'active_support/test_case'
\ No newline at end of file
diff --git a/log/development.log b/log/development.log
index b391987..6917b79 100644
--- a/log/development.log
+++ b/log/development.log
@@ -259503,3 +259503,41 @@ Processing GriditemsController#create_grid_item (for 87.224.77.66 at 2010-10-11
Rendered griditems/plugins/feed/_feed (685.9ms)
Rendered griditems/_item (687.3ms)
Completed in 699ms (View: 695, DB: 0) | 200 OK [http://dev3.pinetecltd.net/griditems/create_grid_item?type=Feed]
+/!\ FAILSAFE /!\ Tue Oct 12 18:06:31 +0100 2010
+ Status: 500 Internal Server Error
+ No such file or directory - /home/psy/code/bernardplugin/config/routes.rb
+ /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/routing/route_set.rb:297:in `stat'
+ /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/routing/route_set.rb:297:in `routes_changed_at'
+ /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/routing/route_set.rb:296:in `each'
+ /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/routing/route_set.rb:296:in `routes_changed_at'
+ /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/routing/route_set.rb:274:in `reload'
+ /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:59:in `reload_application'
+ /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/reloader.rb:8:in `call'
+ /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/failsafe.rb:11:in `call'
+ /usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call'
+ /usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `synchronize'
+ /usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call'
+ /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:106:in `call'
+ /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/static.rb:31:in `call'
+ /usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:46:in `call'
+ /usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in `each'
+ /usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/urlmap.rb:40:in `call'
+ /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/log_tailer.rb:17:in `call'
+ /usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/content_length.rb:13:in `call'
+ /usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/chunked.rb:15:in `call'
+ /usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/handler/mongrel.rb:64:in `process'
+ /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:in `process_client'
+ /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `each'
+ /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `process_client'
+ /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
+ /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `initialize'
+ /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `new'
+ /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
+ /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `initialize'
+ /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `new'
+ /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `run'
+ /usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/handler/mongrel.rb:34:in `run'
+ /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:111
+ /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
+ /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
+ script/server:3
diff --git a/public/javascripts/feed.js b/public/javascripts/feed.js
new file mode 100644
index 0000000..bec029a
--- /dev/null
+++ b/public/javascripts/feed.js
@@ -0,0 +1,55 @@
+/* Feed plugin javascript functions
+ Pieter Loubser
+ October 2010
+ Version 0.8
+*/
+
+var lastTarget = "";
+
+//Update feed item periodically.
+// - currently hardcoded at 10s.
+function update_feed(size){
+ jQuery('#feed0').show();
+ var feedSize = size;
+ var currentFeed = 0;
+ var container = null;
+ var interval = setInterval(function(){
+ jQuery('.feed').hide();
+ jQuery('#feed' + currentFeed).show();
+ container = jQuery('#feed' + currentFeed).parent().parent();
+ //This deals with the sudden descruction of the item container
+ //Implemented to handle delete from rightclick menu
+ if(jQuery(container).attr("id") == null){
+ clearInterval(interval);
+ }
+ else{
+ resizeText(container, currentFeed);
+ }
+
+ if(currentFeed < feedSize -1){
+ currentFeed++;
+ }
+ else{
+ currentFeed = 0;
+ }
+ }, 10000);
+}
+
+//Resize feed story text to fit in container
+function resizeText(container, currentFeed){
+ var max = 12; //Default max font size. Might change. #Issue 6
+ jQuery('#feed-description' + currentFeed).wrapInner('');
+ var dheight = jQuery(container).height() - jQuery('#feed-header' + currentFeed).height();
+ var cheight = jQuery("#fontfit" + currentFeed).height();
+ var fsize = ((jQuery('#feed-description' + currentFeed).css("font-size")).slice(0,-2))*1;
+ while(cheightdheight-jQuery(container).css("borderWidth").slice(0,-2)*2 || fsize>max && fsize > 1) {
+ fsize-=1;
+ jQuery('#feed-description' + currentFeed).css("font-size",fsize+"px");
+ cheight = jQuery("#fontfit"+ currentFeed).height();
+ }
+}
diff --git a/vendor/plugins/feed/tasks/.feed_tasks.rake.swp b/vendor/plugins/feed/tasks/.feed_tasks.rake.swp
deleted file mode 100644
index 75a49a5..0000000
Binary files a/vendor/plugins/feed/tasks/.feed_tasks.rake.swp and /dev/null differ