caterpillar 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/LICENSES.txt ADDED
@@ -0,0 +1,25 @@
1
+ = Caterpillar
2
+
3
+ Caterpillar is provided under the terms of the MIT license.
4
+
5
+ (c) Copyright 2008 Cel'Amanzi Ltd and Mikael Lammentausta
6
+
7
+ Permission is hereby granted, free of charge, to any person
8
+ obtaining a copy of this software and associated documentation files
9
+ (the "Software"), to deal in the Software without restriction,
10
+ including without limitation the rights to use, copy, modify, merge,
11
+ publish, distribute, sublicense, and/or sell copies of the Software,
12
+ and to permit persons to whom the Software is furnished to do so,
13
+ subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be
16
+ included in all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
22
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
23
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ SOFTWARE.
data/README ADDED
@@ -0,0 +1,21 @@
1
+ Caterpillar helps you with building Rails applications to be used in Java
2
+ JSR286 portlets. This is possible with the help of Rails-portlet[http://rails-portlet.rubyforge.org].
3
+
4
+ Rails portlets have been used on Liferay and the helpers offer specialized methods to support better Liferay integration.
5
+
6
+ This package offers these functionalities:
7
+
8
+ - processes the portlet XML configuration in accordance with the named routes
9
+ See Caterpillar::Config
10
+
11
+ - provides a navigation view in development (you will have to enable it manually)
12
+ See Caterpillar::Navigation
13
+
14
+ - offers a set of migrations to help with Liferay integration
15
+
16
+ - provides a Rake task 'fixtures', which imports live data
17
+ from the production database for testing
18
+
19
+
20
+
21
+ See the rdoc documentation and caterpillar --describe for the feature list.
data/Rakefile ADDED
@@ -0,0 +1,26 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+
5
+ desc 'Default: create API doc.'
6
+ task :default => :rdoc
7
+
8
+ desc 'Test the example plugin.'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'lib'
11
+ t.pattern = 'test/**/*_test.rb'
12
+ t.verbose = true
13
+ end
14
+
15
+ desc 'Generate documentation for the example plugin.'
16
+ Rake::RDocTask.new(:rdoc) do |rdoc|
17
+ rdoc.rdoc_dir = 'rdoc'
18
+ rdoc.title = 'Caterpillar'
19
+ rdoc.main = 'README'
20
+ rdoc.rdoc_files.include('README')
21
+ rdoc.rdoc_files.include('lib/**/*.rb')
22
+ rdoc.rdoc_files.include('generators/**/*.rb')
23
+ rdoc.options << '--line-numbers' << '--inline-source' << '-U'
24
+ end
25
+
26
+
data/bin/caterpillar ADDED
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ #--
4
+ # (c) Copyright 2008 Mikael Lammentausta, Cel'Amanzi Ltd
5
+ #
6
+ # Constructed heavily upon Warbler's structure.
7
+ # Thanks to Nick Sieger!
8
+ #
9
+ # See the file LICENSES.txt included with the distribution for
10
+ # software license details.
11
+ #++
12
+
13
+ require 'rubygems'
14
+ require 'rake'
15
+ require 'caterpillar'
16
+
17
+ application = Rake.application
18
+
19
+ # Load any application rakefiles to aid in autodetecting applications
20
+ Caterpillar.project_application = Rake::Application.new
21
+ Rake.application = Caterpillar.project_application
22
+ Rake::Application::DEFAULT_RAKEFILES.each do |rf|
23
+ if File.exist?(rf)
24
+ load rf
25
+ break
26
+ end
27
+ end
28
+
29
+ Rake.application = application
30
+ application.standard_exception_handling do
31
+ application.init
32
+
33
+ # Load the main tasks - choose the namespace
34
+ Caterpillar::Task.new(ARGV[0] ? ARGV[0].gsub(/:.*/,'') : :usage)
35
+
36
+ task :default => :usage
37
+
38
+ application.top_level
39
+ end
@@ -0,0 +1,12 @@
1
+ class LportalPortlets < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :lportal_portlets do |t|
4
+ t.column :name, :string
5
+ t.column :title, :string
6
+ end
7
+ end
8
+
9
+ def self.down
10
+ drop_table :lportal_portlets
11
+ end
12
+ end
@@ -0,0 +1,50 @@
1
+ require 'lportal'
2
+
3
+ class LportalSequences < ActiveRecord::Migration
4
+ @@tables = [
5
+ Account,
6
+ Address,
7
+ Asset,
8
+ Contact,
9
+ Group,
10
+ Permission,
11
+ Phone,
12
+ ResourceCode,
13
+ Resource,
14
+ Role,
15
+ User,
16
+ MB::Message,
17
+ MB::Thread,
18
+ MB::Discussion,
19
+ MB::Category,
20
+ Tag::Entry,
21
+ Tag::Property,
22
+ Web::Layout,
23
+ Web::LayoutSet,
24
+ Web::PortletPreferences,
25
+ Web::Portlet
26
+ ]
27
+
28
+ def self.up
29
+ # start = 8400000 # bigint = 8^8 bytes = 16 million bits, this is halfway up the possible range, rounded up
30
+ # sql = ""
31
+ # @@tables.each do |model|
32
+ # table = model.table_name
33
+ # primkey = model.primary_key
34
+ # seq = table+'_'+primkey+'_seq'
35
+ # sql += "CREATE SEQUENCE #{seq} START #{start}; ALTER TABLE #{table} ALTER #{primkey} SET default nextval('#{seq}');"
36
+ # end
37
+ # ActiveRecord::Base.connection.execute(sql)
38
+ end
39
+
40
+ def self.down
41
+ # sql = ""
42
+ # @@tables.each do |model|
43
+ # table = model.table_name
44
+ # primkey = model.primary_key
45
+ # seq = table+'_'+primkey+'_seq'
46
+ # sql += "ALTER TABLE #{table} ALTER #{primkey} DROP default; DROP SEQUENCE #{seq};"
47
+ # end
48
+ # ActiveRecord::Base.connection.execute(sql)
49
+ end
50
+ end
@@ -0,0 +1 @@
1
+ This writes a set of Caterpillar files into the Rails application.
@@ -0,0 +1,52 @@
1
+ # This generator installs the required files into the main Rails application.
2
+ # This generator should always be run after upgrading the plugin.
3
+ class CaterpillarGenerator < Rails::Generator::Base
4
+ def manifest
5
+
6
+ require 'find'
7
+ file = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__
8
+ this_dir = File.dirname(File.expand_path(file))
9
+ tmpl = this_dir+'/templates'
10
+
11
+ STDOUT.puts ' * Installing config, stylesheets and images'
12
+
13
+ record do |m|
14
+
15
+ ### migrations ###
16
+ m.directory('config')
17
+ file = 'portlets.rb'
18
+ m.file('config/'+file, 'config/'+file)
19
+ ####################################
20
+
21
+
22
+ ### stylesheet ###
23
+ target = 'public/stylesheets/caterpillar'
24
+ m.directory(target)
25
+ file = 'caterpillar.css'
26
+ m.file('stylesheets/caterpillar/'+file, target+'/'+file)
27
+ ####################################
28
+
29
+ ### javascript ###
30
+ target = 'public/javascripts/caterpillar'
31
+ m.directory(target)
32
+ file = 'caterpillar.js'
33
+ m.file('javascripts/caterpillar/'+file, target+'/'+file)
34
+ ####################################
35
+
36
+ ### images ###
37
+ target = 'public/images/caterpillar'
38
+ m.directory(target)
39
+ file = 'caterpillar.gif'
40
+ m.file('images/caterpillar/'+file, target+'/'+file)
41
+ ####################################
42
+
43
+ # ### views ###
44
+ # target = 'app/views/caterpillar'
45
+ # m.directory(target)
46
+ # file = '_navigation.html.erb'
47
+ # m.file('views/caterpillar/'+file, target+'/'+file)
48
+ # ####################################
49
+ #
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,59 @@
1
+ Caterpillar::Config.new do |portlet|
2
+
3
+ # The portlet container.
4
+ # By default only portlet.xml is created.
5
+ # Currently only Liferay is supported. You may optionally define the version.
6
+ portlet.container = Liferay
7
+ # portlet.container.version = '5.1.1'
8
+
9
+ # Dince liferay-display-ext.xml does not exist, all portlets are categorized in
10
+ # liferay-display.xml. If you intend to keep other portlets still intact,
11
+ # you need to specify the location of WEB-INF.
12
+ # No changes are made to any of the files in this directory.
13
+ portlet.container.WEB_INF = '/usr/local/liferay/webapps/ROOT/WEB-INF/'
14
+
15
+ # The hostname and port.
16
+ # By default the values are taken from the request.
17
+ # portlet.host
18
+
19
+ # If the Rails is running inside a servlet container such as Tomcat,
20
+ # you can define the servlet here.
21
+ # By default the servlet is the name of the Rails app.
22
+ # Remember to update this if you override Warbler's default.
23
+ # portlet.servlet
24
+
25
+ # Portlet category. This is only available for Liferay.
26
+ # By default this is the same as the servlet.
27
+ # portlet.category = 'Zcore'
28
+
29
+ # Portlet instances.
30
+ #
31
+ # Each named route is mapped to a portlet.
32
+ #
33
+ # All keys except for 'name' are obligatory. If the name does not map to a route,
34
+ # you have to define the route here.
35
+ # You may override the host, servlet and category here.
36
+ # Most likely you will want to let ActionController::Routing to set the route.
37
+ #
38
+ # Available keys are:
39
+ # - :name -- named route
40
+ # - :category -- portlet category (Liferay only)
41
+ # - :title -- the title in portlet container's category (Liferay only)
42
+ # - :javascripts -- portlet-specific javascripts that are not in the HTML head section (Liferay only)
43
+ # - :host
44
+ # - :servlet
45
+ # - :path -- unless you're using named routes, you can define the path here
46
+
47
+ # example:
48
+ # portlet.instances << {
49
+ # :name => 'rails286_test',
50
+ # :title => 'Rails-portlet testing application',
51
+ # :category => 'Testing',
52
+ # :servlet => 'RailsTestBench',
53
+ # :path => '/'
54
+ # }
55
+
56
+ # this will include all named routes without further configuration
57
+ portlet.include_all_named_routes = true
58
+
59
+ end
@@ -0,0 +1,15 @@
1
+ function cp_toggle_category(c,categories) {
2
+ c_el = document.getElementById(c);
3
+ p_el = document.getElementById(c+'_portlets');
4
+
5
+ if (p_el.style.display=='none') {
6
+ p_el.style.display='block';
7
+ c_el.style.background='yellow';
8
+ }
9
+ else {
10
+ p_el.style.display='none';
11
+ c_el.style.background='white';
12
+ }
13
+
14
+
15
+ }
@@ -0,0 +1,48 @@
1
+ .caterpillar_navigation {
2
+ background: url('/images/caterpillar/caterpillar.gif') no-repeat;
3
+ padding: 10px 0 0 50px;
4
+ margin-left: 10px;
5
+ min-height: 50px;
6
+ filter:alpha(opacity=81);-moz-opacity:.81;opacity:.81;
7
+ /* css3 tags, works on Firefox and Safari */
8
+ -moz-border-radius: 15px;
9
+ -webkit-border-radius: 15px;
10
+ }
11
+
12
+ .caterpillar_navigation ul {
13
+ list-style-type: none;
14
+ }
15
+
16
+ .cp_category {
17
+ float: left;
18
+ border: 3px double blue;
19
+ margin: 0 14px 5px 14px;
20
+ padding: 5px;
21
+ -moz-border-radius: 12px;
22
+ -webkit-border-radius: 12px;
23
+ background: white;
24
+ }
25
+
26
+ .cp_portlets {
27
+ float: break;
28
+ overflow: hidden;
29
+ margin: 0 40px 10px 40px;
30
+ border: 3px double green;
31
+ padding: 5px;
32
+ }
33
+
34
+ .navlink {
35
+ margin: 5px 14px 5px 14px;
36
+ padding: 5px;
37
+ -moz-border-radius: 12px;
38
+ -webkit-border-radius: 12px;
39
+ }
40
+
41
+ .navlink a {
42
+ text-decoration: none;
43
+ }
44
+
45
+ .navlink a:hover {
46
+ -moz-border-radius: 8px;
47
+ -webkit-border-radius: 8px;
48
+ }
data/init.rb ADDED
@@ -0,0 +1,8 @@
1
+ file = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__
2
+ this_dir = File.dirname(File.expand_path(file))
3
+
4
+ # append the views path
5
+ ActionController::Base.append_view_path File.join(this_dir, 'views')
6
+
7
+ # load the main file
8
+ require File.join(this_dir, 'lib', 'caterpillar')
data/install.rb ADDED
@@ -0,0 +1,3 @@
1
+ # This will install required files into the main Rails application.
2
+ system('./script/generate caterpillar')
3
+
@@ -0,0 +1,27 @@
1
+ #--
2
+ # (c) Copyright 2008 Mikael Lammentausta
3
+ # See the file LICENSES.txt included with the distribution for
4
+ # software license details.
5
+ #++
6
+
7
+
8
+ module Caterpillar
9
+ end
10
+
11
+ file = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__
12
+ this_dir = File.dirname(File.expand_path(file))
13
+
14
+ require 'find'
15
+
16
+ # include all ruby files
17
+ Find.find(this_dir) do |file|
18
+ if FileTest.directory?(file)
19
+ if File.basename(file) == 'deprecated'
20
+ Find.prune # Don't look any further into this directory.
21
+ else
22
+ next
23
+ end
24
+ else
25
+ require file if file[/.rb$/]
26
+ end
27
+ end
@@ -0,0 +1,57 @@
1
+ #--
2
+ # (c) Copyright 2008 Mikael Lammentausta
3
+ # See the file LICENSES.txt included with the distribution for
4
+ # software license details.
5
+ #++
6
+
7
+ module Caterpillar
8
+ # Portlet configuration. The config file 'config/portlets.rb' should be installed in your Rails application. See the comments in the configuration file for more specific information about each option.
9
+ class Config
10
+ FILE = "config/portlets.rb"
11
+
12
+ # Are all named routes used, or only the ones specifically defined in the config FILE?
13
+ attr_accessor :include_all_named_routes
14
+
15
+ attr_accessor :category
16
+
17
+ attr_accessor :host
18
+
19
+ attr_accessor :servlet
20
+
21
+ attr_accessor :instances
22
+
23
+ attr_reader :rails_root
24
+
25
+ attr_accessor :_container
26
+
27
+ attr_accessor :javascripts
28
+
29
+ attr_accessor :routes
30
+
31
+ # Sets sane defaults that are overridden in the config file.
32
+ def initialize
33
+ @rails_root = File.expand_path(defined?(RAILS_ROOT) ? RAILS_ROOT : Dir.getwd)
34
+ @servlet = File.basename(@rails_root)
35
+ @category = @servlet
36
+ @instances = []
37
+ @javascripts = []
38
+ @include_all_named_routes = true
39
+
40
+ yield self if block_given?
41
+ end
42
+
43
+ # The container class is used for parsing XML files.
44
+ #
45
+ # Possible values: Liferay
46
+ def container
47
+ self._container
48
+ end
49
+
50
+ # Accepts the configuration option, and instantates the container class.
51
+ def container=(_class)
52
+ self._container = _class.new
53
+ end
54
+
55
+
56
+ end
57
+ end