cable_menu 0.0.1
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/README +13 -0
- data/Rakefile +23 -0
- data/cable_menu.gemspec +27 -0
- data/generators/cable_menu/USAGE +9 -0
- data/generators/cable_menu/cable_menu_generator.rb +36 -0
- data/generators/cable_menu/templates/cable_menu_migration.rb +16 -0
- data/generators/cable_menu/templates/cable_model.rb +3 -0
- data/lib/cable_menu/acts_as_cable.rb +21 -0
- data/lib/cable_menu/acts_as_cable_menu.rb +29 -0
- data/lib/cable_menu.rb +3 -0
- data/rails/init.rb +2 -0
- metadata +65 -0
data/README
ADDED
data/Rakefile
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require 'rake/testtask'
|
|
3
|
+
require 'rake/rdoctask'
|
|
4
|
+
|
|
5
|
+
desc 'Default: run unit tests.'
|
|
6
|
+
task :default => :test
|
|
7
|
+
|
|
8
|
+
desc 'Test the cable_menu plugin.'
|
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
|
10
|
+
t.libs << 'lib'
|
|
11
|
+
t.libs << 'test'
|
|
12
|
+
t.pattern = 'test/**/*_test.rb'
|
|
13
|
+
t.verbose = true
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
desc 'Generate documentation for the cable_menu plugin.'
|
|
17
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
18
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
19
|
+
rdoc.title = 'CableMenu'
|
|
20
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
|
21
|
+
rdoc.rdoc_files.include('README')
|
|
22
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
23
|
+
end
|
data/cable_menu.gemspec
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Gem::Specification.new do |s|
|
|
2
|
+
s.name = %q{cable_menu}
|
|
3
|
+
s.version = "0.0.1"
|
|
4
|
+
|
|
5
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
|
6
|
+
s.authors = ["Spencer Markowski | The Able Few"]
|
|
7
|
+
s.date = %q{2010-08-29}
|
|
8
|
+
s.description = %q{Cable Menu}
|
|
9
|
+
s.email = %q{spencer@thablefew.com}
|
|
10
|
+
s.files = ["README", "Rakefile", "lib/cable_menu.rb", "cable_menu.gemspec", "lib/cable_menu/acts_as_cable_menu.rb","lib/cable_menu/acts_as_cable.rb","rails/init.rb","generators/cable_menu/cable_menu_generator.rb","generators/cable_menu/templates/cable_menu_migration.rb","generators/cable_menu/templates/cable_model.rb","generators/cable_menu/USAGE"]
|
|
11
|
+
s.has_rdoc = false
|
|
12
|
+
s.homepage = %q{http://theablefew.com/}
|
|
13
|
+
s.require_paths = ["lib"]
|
|
14
|
+
s.rubyforge_project = %q{cable_menu}
|
|
15
|
+
s.rubygems_version = %q{1.3.4}
|
|
16
|
+
s.summary = %q{Create cable menus}
|
|
17
|
+
|
|
18
|
+
if s.respond_to? :specification_version then
|
|
19
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
|
20
|
+
s.specification_version = 3
|
|
21
|
+
|
|
22
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
23
|
+
else
|
|
24
|
+
end
|
|
25
|
+
else
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
class CableMenuGenerator < Rails::Generator::NamedBase
|
|
2
|
+
def manifest
|
|
3
|
+
record do |m|
|
|
4
|
+
m.migration_template 'cable_menu_migration.rb', 'db/migrate', {:assigns => cable_menu_local_assigns,:migration_file_name => "add_cable_menu_fields_to_#{custom_file_name}"}
|
|
5
|
+
m.template 'cable_model.rb', File.join('app/models', class_path, "#{file_name}.rb")
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
def custom_file_name
|
|
11
|
+
custom_name = class_name.underscore.downcase
|
|
12
|
+
custom_name = custom_name.pluralize if ActiveRecord::Base.pluralize_table_names
|
|
13
|
+
custom_name
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def cable_menu_local_assigns
|
|
17
|
+
assigns = {}
|
|
18
|
+
assigns[:migration_action] = "add"
|
|
19
|
+
assigns[:class_name] = "add_cable_menu_fields_to_#{custom_file_name}"
|
|
20
|
+
assigns[:table_name] = custom_file_name
|
|
21
|
+
assigns[:attributes] = default_fields + user_provided_fields
|
|
22
|
+
return assigns
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def default_fields
|
|
26
|
+
[Rails::Generator::GeneratedAttribute.new("title", "string"),
|
|
27
|
+
Rails::Generator::GeneratedAttribute.new("cable_menuable_id", "integer"),
|
|
28
|
+
Rails::Generator::GeneratedAttribute.new("cable_menuable_type", "string"),
|
|
29
|
+
Rails::Generator::GeneratedAttribute.new("parent_id", "integer"),
|
|
30
|
+
Rails::Generator::GeneratedAttribute.new("url", "string")]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def user_provided_fields
|
|
34
|
+
args.collect{|user_arg| Rails::Generator::GeneratedAttribute.new(user_arg.split(":").first.to_s, user_arg.split(":").last.to_s) }
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class <%= class_name.camelize %> < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :<%= table_name %> do |t|
|
|
4
|
+
<% for attribute in attributes -%>
|
|
5
|
+
t.<%= attribute.type %> :<%= attribute.name %>
|
|
6
|
+
<% end -%>
|
|
7
|
+
<% unless options[:skip_timestamps] %>
|
|
8
|
+
t.timestamps
|
|
9
|
+
<% end -%>
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.down
|
|
14
|
+
drop_table :<%= table_name %>
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Cable
|
|
2
|
+
|
|
3
|
+
def self.included( base )
|
|
4
|
+
base.send :extend, ClassMethods
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
module ClassMethods
|
|
8
|
+
def acts_as_cable
|
|
9
|
+
send :include, InstanceMethods
|
|
10
|
+
has_one :menu, :as => :cable_menuable
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
module InstanceMethods
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
ActiveRecord::Base.send :include, Cable
|
|
20
|
+
|
|
21
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module CableMenu
|
|
2
|
+
|
|
3
|
+
def self.included( base )
|
|
4
|
+
base.send :extend, ClassMethods
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
module ClassMethods
|
|
8
|
+
def acts_as_cable_menu
|
|
9
|
+
send :include, InstanceMethods
|
|
10
|
+
belongs_to :cable_menuable, :polymorphic => true
|
|
11
|
+
acts_as_tree
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
module InstanceMethods
|
|
16
|
+
|
|
17
|
+
def resource
|
|
18
|
+
self.cable_menuable
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def route
|
|
22
|
+
(self.ancestors.collect{|an| an.url } << self.url).join
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
ActiveRecord::Base.send :include, CableMenu
|
|
28
|
+
|
|
29
|
+
end
|
data/lib/cable_menu.rb
ADDED
data/rails/init.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: cable_menu
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Spencer Markowski | The Able Few
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
|
|
12
|
+
date: 2010-08-29 00:00:00 -04:00
|
|
13
|
+
default_executable:
|
|
14
|
+
dependencies: []
|
|
15
|
+
|
|
16
|
+
description: Cable Menu
|
|
17
|
+
email: spencer@thablefew.com
|
|
18
|
+
executables: []
|
|
19
|
+
|
|
20
|
+
extensions: []
|
|
21
|
+
|
|
22
|
+
extra_rdoc_files: []
|
|
23
|
+
|
|
24
|
+
files:
|
|
25
|
+
- README
|
|
26
|
+
- Rakefile
|
|
27
|
+
- lib/cable_menu.rb
|
|
28
|
+
- cable_menu.gemspec
|
|
29
|
+
- lib/cable_menu/acts_as_cable_menu.rb
|
|
30
|
+
- lib/cable_menu/acts_as_cable.rb
|
|
31
|
+
- rails/init.rb
|
|
32
|
+
- generators/cable_menu/cable_menu_generator.rb
|
|
33
|
+
- generators/cable_menu/templates/cable_menu_migration.rb
|
|
34
|
+
- generators/cable_menu/templates/cable_model.rb
|
|
35
|
+
- generators/cable_menu/USAGE
|
|
36
|
+
has_rdoc: false
|
|
37
|
+
homepage: http://theablefew.com/
|
|
38
|
+
licenses: []
|
|
39
|
+
|
|
40
|
+
post_install_message:
|
|
41
|
+
rdoc_options: []
|
|
42
|
+
|
|
43
|
+
require_paths:
|
|
44
|
+
- lib
|
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
46
|
+
requirements:
|
|
47
|
+
- - ">="
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: "0"
|
|
50
|
+
version:
|
|
51
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
|
+
requirements:
|
|
53
|
+
- - ">="
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: "1.2"
|
|
56
|
+
version:
|
|
57
|
+
requirements: []
|
|
58
|
+
|
|
59
|
+
rubyforge_project: cable_menu
|
|
60
|
+
rubygems_version: 1.3.5
|
|
61
|
+
signing_key:
|
|
62
|
+
specification_version: 3
|
|
63
|
+
summary: Create cable menus
|
|
64
|
+
test_files: []
|
|
65
|
+
|