caterpillar 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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