wheels 0.0.17 → 0.0.18
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/VERSION +1 -1
- data/app/controllers/blogs_controller.rb +7 -6
- data/app/controllers/galleries_controller.rb +3 -3
- data/app/controllers/pages_controller.rb +11 -0
- data/app/controllers/profiles_controller.rb +1 -1
- data/app/helpers/blogs_helper.rb +10 -0
- data/app/helpers/pages_helper.rb +11 -0
- data/app/models/ability.rb +20 -3
- data/app/models/blog.rb +2 -1
- data/app/models/image.rb +3 -1
- data/app/models/page.rb +5 -0
- data/app/models/page_revision.rb +2 -0
- data/app/models/profile.rb +1 -0
- data/app/models/tagging.rb +4 -0
- data/app/models/user.rb +17 -12
- data/app/views/blogs/_form.html.haml +4 -10
- data/app/views/blogs/index.html.haml +4 -0
- data/app/views/blogs/show.html.haml +3 -4
- data/app/views/galleries/_form.html.haml +3 -2
- data/app/views/galleries/_show.html.haml +2 -2
- data/app/views/galleries/show.html.haml +2 -2
- data/app/views/layouts/application.html.haml +48 -0
- data/app/views/pages/_form.html.haml +19 -0
- data/app/views/pages/edit.html.haml +7 -0
- data/app/views/pages/index.html.haml +21 -0
- data/app/views/pages/new.html.haml +5 -0
- data/app/views/pages/show.html.haml +6 -0
- data/db/migrate/create_blogs.rb +1 -1
- data/db/migrate/create_roles.rb +0 -3
- data/db/migrate/insert_admin_user_and_roles.rb +4 -4
- data/lib/generators/app_layout/LICENCE +20 -0
- data/lib/generators/app_layout/USAGE +8 -0
- data/lib/generators/app_layout/app_layout_generator.rb +18 -0
- data/lib/generators/app_layout/core_extensions.rb +51 -0
- data/lib/generators/update_wheels/LICENCE +20 -0
- data/lib/generators/update_wheels/USAGE +8 -0
- data/lib/generators/update_wheels/core_extensions.rb +51 -0
- data/lib/generators/update_wheels/recipes/wheels.rb +11 -0
- data/lib/generators/update_wheels/templates/cancan/ability.rb +13 -0
- data/lib/generators/update_wheels/templates/database/postgresql.yml +19 -0
- data/lib/generators/update_wheels/templates/git/gitignore +8 -0
- data/lib/generators/update_wheels/templates/haml/app/views/layouts/application.html.haml +9 -0
- data/lib/generators/update_wheels/templates/mongoid/features/step_definitions/mongoid_steps.rb +4 -0
- data/lib/generators/update_wheels/templates/mongoid/features/support/hooks.rb +3 -0
- data/lib/generators/update_wheels/update_wheels_generator.rb +43 -0
- data/lib/generators/wheels/recipes/cancan.rb +3 -3
- data/lib/generators/wheels/recipes/haml.rb +2 -2
- data/lib/generators/wheels/recipes/recipes.rb +164 -0
- data/lib/generators/wheels/recipes/wheels.rb +41 -35
- data/lib/generators/wheels/templates/haml/app/views/layouts/application.html.haml +0 -9
- data/lib/generators/wheels/views_generator.rb +15 -0
- data/lib/generators/wheels/wheels_generator.rb +1 -1
- data/lib/generators/wheels_views/LICENCE +20 -0
- data/lib/generators/wheels_views/USAGE +8 -0
- data/lib/generators/wheels_views/wheels_views_generator.rb +15 -0
- data/lib/wheels/action_view_helper_extensions.rb +9 -0
- data/lib/wheels/active_record_extensions.rb +44 -0
- data/lib/wheels/active_record_user_extensions.rb +34 -0
- data/lib/wheels/user.rb +32 -0
- data/lib/wheels/wheels_engine.rb +7 -0
- data/lib/wheels.rb +2 -0
- data/public/javascripts/galleries/configure_ckeditor.js +8 -0
- data/public/javascripts/jqUrl.js +28 -0
- data/public/stylesheets/dreamy.css +3 -1
- data/public/stylesheets/sass/dreamy.sass +3 -0
- data/public/stylesheets/sass/wheels.sass +25 -0
- data/wheels.gemspec +42 -2
- metadata +44 -4
@@ -0,0 +1,19 @@
|
|
1
|
+
development:
|
2
|
+
adapter: postgresql
|
3
|
+
encoding: unicode
|
4
|
+
database: %database_name%
|
5
|
+
pool: 5
|
6
|
+
username: %database_username%
|
7
|
+
password: %database_password%
|
8
|
+
host: localhost
|
9
|
+
port: 5432
|
10
|
+
|
11
|
+
# Warning: The database defined as "test" will be erased and
|
12
|
+
# re-generated from your development database when you run "rake".
|
13
|
+
# Do not set this db to the same as development or production.
|
14
|
+
test:
|
15
|
+
adapter: sqlite3
|
16
|
+
database: db/test.sqlite3
|
17
|
+
pool: 5
|
18
|
+
timeout: 5000
|
19
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/migration'
|
3
|
+
require 'rails/generators/generated_attribute'
|
4
|
+
require 'rails/generators/active_record'
|
5
|
+
|
6
|
+
class UpdateWheelsGenerator < Rails::Generators::Base
|
7
|
+
include Rails::Generators::Migration
|
8
|
+
require File.join(File.dirname(__FILE__), 'core_extensions.rb')
|
9
|
+
source_root File.expand_path('../../../../', __FILE__)
|
10
|
+
desc "Installs files needed for App Template gem."
|
11
|
+
|
12
|
+
def init
|
13
|
+
initialize_templater
|
14
|
+
end
|
15
|
+
|
16
|
+
def load_recipes
|
17
|
+
# required_recipes = %w(default jquery haml devise cancan postgresql)
|
18
|
+
# required_recipes.each {|required_recipe| apply recipe(required_recipe)}
|
19
|
+
apply recipe('wheels')
|
20
|
+
end
|
21
|
+
|
22
|
+
# def bundle_install
|
23
|
+
# run 'bundle install'
|
24
|
+
# end
|
25
|
+
|
26
|
+
def execute
|
27
|
+
execute_stategies
|
28
|
+
end
|
29
|
+
|
30
|
+
def init_git
|
31
|
+
git :add => "."
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.next_migration_number(dirname)
|
35
|
+
|
36
|
+
if ActiveRecord::Base.timestamped_migrations
|
37
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
38
|
+
else
|
39
|
+
"%.3d" % (current_migration_number(dirname) + 1)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
@@ -1,8 +1,8 @@
|
|
1
1
|
gem 'haml'
|
2
2
|
|
3
3
|
remove_file 'app/views/layouts/application.html.erb'
|
4
|
-
create_file 'app/views/layouts/application.html.haml', load_template('app/views/layouts/application.html.haml','haml')
|
5
4
|
|
6
5
|
initializer 'haml.rb',<<EOF
|
7
6
|
Haml::Template.options[:format] = :html5
|
8
|
-
EOF
|
7
|
+
EOF
|
8
|
+
|
@@ -0,0 +1,164 @@
|
|
1
|
+
gem 'cancan'
|
2
|
+
gsub_file 'Gemfile', /(gem "rspec-rails".*:group =>) \[:development, :test\]/, '\1 [:development, :test, :cucumber]'
|
3
|
+
gsub_file 'Gemfile', /(gem "factory_girl_rails".*:group =>) :test/, '\1 [:test, :cucumber]'
|
4
|
+
|
5
|
+
append_file 'Gemfile', <<-EOF
|
6
|
+
group :cucumber do
|
7
|
+
gem 'capybara'
|
8
|
+
gem 'cucumber-rails'
|
9
|
+
gem 'spork'
|
10
|
+
gem 'launchy'
|
11
|
+
end
|
12
|
+
EOF
|
13
|
+
|
14
|
+
# Delete all unnecessary files
|
15
|
+
remove_file "README"
|
16
|
+
remove_file "public/index.html"
|
17
|
+
remove_file "public/robots.txt"
|
18
|
+
remove_file "public/images/rails.png"
|
19
|
+
|
20
|
+
create_file 'README'
|
21
|
+
create_file 'log/.gitkeep'
|
22
|
+
create_file 'tmp/.gitkeep'
|
23
|
+
|
24
|
+
gsub_file 'config/application.rb', 'require "rails/test_unit/railtie"', '# require "rails/test_unit/railtie"'
|
25
|
+
|
26
|
+
get "http://html5shiv.googlecode.com/svn/trunk/html5.js", "public/javascripts/html5.js"
|
27
|
+
|
28
|
+
git :init
|
29
|
+
|
30
|
+
append_file '.gitignore', load_template('gitignore','git')
|
31
|
+
|
32
|
+
if template_options[:design] == "compass"
|
33
|
+
gem 'compass'
|
34
|
+
|
35
|
+
# TODO: support more than one framework from compass
|
36
|
+
compass_sass_dir = "app/stylesheets"
|
37
|
+
compass_css_dir = "public/stylesheets/compiled"
|
38
|
+
|
39
|
+
compass_command = "compass init rails . --using blueprint/semantic --css-dir=#{compass_css_dir} --sass-dir=#{compass_sass_dir} "
|
40
|
+
|
41
|
+
stategies << lambda do
|
42
|
+
puts "Beginning Compass setup"
|
43
|
+
run compass_command
|
44
|
+
puts "Compass has been setup"
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
gem 'devise', '1.1.rc2'
|
49
|
+
gem 'factory_girl_rails', :group => :test
|
50
|
+
|
51
|
+
|
52
|
+
create_file 'app/models/ability.rb', load_template('ability.rb', 'cancan')
|
53
|
+
generate 'cucumber:install --rspec --capybara --skip-database'
|
54
|
+
generate "devise:install"
|
55
|
+
generate "devise User"
|
56
|
+
route "devise_for :users"
|
57
|
+
inject_into_file 'spec/spec_helper.rb', "\nrequire 'factory_girl'", :after => "require 'rspec/rails'"
|
58
|
+
endgem 'haml'
|
59
|
+
|
60
|
+
remove_file 'app/views/layouts/application.html.erb'
|
61
|
+
|
62
|
+
initializer 'haml.rb',<<EOF
|
63
|
+
Haml::Template.options[:format] = :html5
|
64
|
+
EOF
|
65
|
+
|
66
|
+
# Initialize jQuery
|
67
|
+
get "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "public/javascripts/jquery.js"
|
68
|
+
get "http://github.com/rails/jquery-ujs/raw/master/src/rails.js", "public/javascripts/rails.js"
|
69
|
+
|
70
|
+
# Set default JavaScript files
|
71
|
+
environment "config.action_view.javascript_expansions = { :defaults => ['jquery', 'rails'] }"gem 'mongoid', '>= 2.0.0.beta.14'
|
72
|
+
gem 'bson_ext', '1.0.4'
|
73
|
+
|
74
|
+
stategies << lambda do
|
75
|
+
generate 'mongoid:config'
|
76
|
+
run 'cp config/mongoid.yml config/mongoid.yml.example'
|
77
|
+
end
|
78
|
+
gem 'pg'
|
79
|
+
|
80
|
+
stategies << lambda do
|
81
|
+
opts = {}
|
82
|
+
opts[:database_name] = ask("What's the name of the database?")
|
83
|
+
opts[:database_username] = ask("Database username?")
|
84
|
+
opts[:database_password] = ask("Password? *** Will show in plain text on your screen")
|
85
|
+
create_file 'config/database.yml',
|
86
|
+
load_template('postgresql.yml', 'database', opts)
|
87
|
+
end
|
88
|
+
|
89
|
+
gem 'remarkable_activemodel', '>=4.0.0.alpha4', :group => :test
|
90
|
+
if recipes.include? 'mongoid'
|
91
|
+
gem 'remarkable_mongoid', :group => :test
|
92
|
+
|
93
|
+
stategies << lambda do
|
94
|
+
inject_into_file 'spec/spec_helper.rb', "\nrequire 'remarkable/active_model'\nrequire 'remarkable/mongoid'", :after => "require 'rspec/rails'"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
gem 'rspec-rails', '>= 2.0.0.beta.19', :group => [:development, :test]
|
99
|
+
|
100
|
+
stategies << lambda do
|
101
|
+
generate 'rspec:install'
|
102
|
+
|
103
|
+
spec_helper_path = 'spec/spec_helper.rb'
|
104
|
+
|
105
|
+
gsub_file spec_helper_path, 'config.fixture_path = "#{::Rails.root}/spec/fixtures"', ''
|
106
|
+
gsub_file spec_helper_path, /(config.use_transactional_fixtures = true)/, '# \1'
|
107
|
+
|
108
|
+
if recipes.include? 'mongoid'
|
109
|
+
mongoid_rspec_truncation = <<-MONGOID
|
110
|
+
|
111
|
+
config.before :each do
|
112
|
+
Mongoid.master.collections.select {|c| c.name !~ /system/ }.each(&:drop)
|
113
|
+
end
|
114
|
+
|
115
|
+
MONGOID
|
116
|
+
|
117
|
+
inject_into_file spec_helper_path, mongoid_rspec_truncation, :after => "# config.use_transactional_fixtures = true\n"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
gem 'rails3-generators'
|
122
|
+
gem 'RedCloth'
|
123
|
+
gem 'acts-as-taggable-on'
|
124
|
+
gem 'da_huangs_ruby_extensions'
|
125
|
+
gem 'casey_jones'
|
126
|
+
gem 'inherited_resources', '1.1.2'
|
127
|
+
gem 'has_scope'
|
128
|
+
gem 'paperclip'
|
129
|
+
gem 'aws-s3'
|
130
|
+
|
131
|
+
route "root :to => \"blogs#index\""
|
132
|
+
route "wheels_resources"
|
133
|
+
|
134
|
+
migration_template 'db/migrate/add_fields_to_users.rb', 'db/migrate/add_fields_to_users'
|
135
|
+
generate "acts_as_taggable_on:migration"
|
136
|
+
migration_template 'db/migrate/create_blogs.rb', 'db/migrate/create_blogs'; sleep 1
|
137
|
+
migration_template 'db/migrate/create_galleries.rb', 'db/migrate/create_galleries'; sleep 1
|
138
|
+
migration_template 'db/migrate/create_images.rb', 'db/migrate/create_images'; sleep 1
|
139
|
+
migration_template 'db/migrate/create_profiles.rb', 'db/migrate/create_profiles'; sleep 1
|
140
|
+
migration_template 'db/migrate/create_roles.rb', 'db/migrate/create_roles'
|
141
|
+
|
142
|
+
user_attr = %w(user_email user_password user_first_name user_last_name user_blog_title user_alias)
|
143
|
+
for attrib in user_attr
|
144
|
+
class_eval "attr_accessor :#{attrib}"
|
145
|
+
send "#{attrib}=", ask("Please enter #{attrib}...")
|
146
|
+
end
|
147
|
+
|
148
|
+
migration_template 'db/migrate/insert_admin_user_and_roles.rb',
|
149
|
+
'db/migrate/insert_admin_user_and_roles'
|
150
|
+
class_eval do
|
151
|
+
attr_accessor :bucket, :access_key_id, :secret_access_key
|
152
|
+
end
|
153
|
+
say ("If you have your S3 info handy, put it in now.")
|
154
|
+
for attribute in %w(bucket access_key_id secret_access_key)
|
155
|
+
self.send "#{attribute}=", ask("What's the #{attribute}?")
|
156
|
+
end
|
157
|
+
|
158
|
+
|
159
|
+
template 'config/amazon_s3.yml', 'config/amazon_s3.yml'
|
160
|
+
run "git submodule add git://github.com/tylergannon/ckeditor.git public/ckeditor"
|
161
|
+
|
162
|
+
directory 'public', 'public'
|
163
|
+
run "git submodule add -b rails3 http://github.com/mislav/will_paginate.git vendor/plugins/will_paginate"
|
164
|
+
|
@@ -1,47 +1,53 @@
|
|
1
|
-
gem 'rails3-generators'
|
2
|
-
gem 'RedCloth'
|
3
1
|
gem 'acts-as-taggable-on'
|
4
|
-
gem '
|
2
|
+
gem 'aws-s3'
|
5
3
|
gem 'casey_jones'
|
6
|
-
gem '
|
4
|
+
gem 'da_huangs_ruby_extensions'
|
5
|
+
gem 'devise', '1.1.rc2'
|
7
6
|
gem 'has_scope'
|
7
|
+
gem 'inherited_resources', '1.1.2'
|
8
|
+
gem 'paperclip'
|
9
|
+
gem 'rails3-generators'
|
10
|
+
gem 'RedCloth'
|
11
|
+
|
12
|
+
route "root :to => \"blogs#index\""
|
13
|
+
|
14
|
+
|
15
|
+
user_attr = %w(user_email user_password user_first_name user_last_name user_blog_title user_alias)
|
16
|
+
for attrib in user_attr
|
17
|
+
class_eval "attr_accessor :#{attrib}"
|
18
|
+
send "#{attrib}=", ask("Please enter #{attrib}...")
|
19
|
+
end
|
20
|
+
|
21
|
+
class_eval do
|
22
|
+
attr_accessor :bucket, :access_key_id, :secret_access_key
|
23
|
+
end
|
24
|
+
say ("If you have your S3 info handy, put it in now.")
|
25
|
+
for attribute in %w(bucket access_key_id secret_access_key)
|
26
|
+
self.send "#{attribute}=", ask("What's the #{attribute}?")
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
template 'config/amazon_s3.yml', 'config/amazon_s3.yml'
|
31
|
+
run "git submodule add git://github.com/tylergannon/ckeditor.git public/ckeditor"
|
32
|
+
|
33
|
+
directory 'public', 'public'
|
34
|
+
run "git submodule add -b rails3 http://github.com/mislav/will_paginate.git vendor/plugins/will_paginate"
|
8
35
|
|
9
36
|
stategies << lambda do
|
37
|
+
generate "devise:install"
|
38
|
+
generate "devise User"
|
10
39
|
migration_template 'db/migrate/add_fields_to_users.rb', 'db/migrate/add_fields_to_users'
|
11
|
-
|
12
|
-
migration_template 'db/migrate/create_blogs.rb', 'db/migrate/create_blogs'
|
13
|
-
sleep 1
|
14
|
-
migration_template 'db/migrate/
|
15
|
-
sleep 1
|
16
|
-
migration_template 'db/migrate/create_images.rb', 'db/migrate/create_images'
|
17
|
-
sleep 1
|
18
|
-
migration_template 'db/migrate/create_profiles.rb', 'db/migrate/create_profiles'
|
19
|
-
sleep 1
|
40
|
+
generate "acts_as_taggable_on:migration"
|
41
|
+
migration_template 'db/migrate/create_blogs.rb', 'db/migrate/create_blogs'; sleep 1
|
42
|
+
migration_template 'db/migrate/create_galleries.rb', 'db/migrate/create_galleries'; sleep 1
|
43
|
+
migration_template 'db/migrate/create_images.rb', 'db/migrate/create_images'; sleep 1
|
44
|
+
migration_template 'db/migrate/create_profiles.rb', 'db/migrate/create_profiles'; sleep 1
|
20
45
|
migration_template 'db/migrate/create_roles.rb', 'db/migrate/create_roles'
|
21
|
-
|
22
|
-
user_attr = %w(user_email user_password user_first_name user_last_name user_blog_title user_alias)
|
23
|
-
for attrib in user_attr
|
24
|
-
class_eval "attr_accessor :#{attrib}"
|
25
|
-
send "#{attrib}=", ask("Please enter #{attrib}...")
|
26
|
-
end
|
27
|
-
|
28
46
|
migration_template 'db/migrate/insert_admin_user_and_roles.rb',
|
29
|
-
|
47
|
+
'db/migrate/insert_admin_user_and_roles'
|
30
48
|
|
49
|
+
# create wheels_resources first so that devise_for :users will appear first in routes.rb
|
31
50
|
route "wheels_resources"
|
32
|
-
|
33
|
-
attr_accessor :bucket, :access_key_id, :secret_access_key
|
34
|
-
end
|
35
|
-
say ("If you have your S3 info handy, put it in now.")
|
36
|
-
for attribute in %w(bucket access_key_id secret_access_key)
|
37
|
-
self.send "#{attribute}=", ask("What's the #{attribute}?")
|
38
|
-
end
|
39
|
-
|
40
|
-
template 'config/amazon_s3.yml', 'config/amazon_s3.yml'
|
41
|
-
run "git submodule add git://github.com/tylergannon/ckeditor.git public/ckeditor"
|
42
|
-
|
43
|
-
directory 'public', 'public'
|
44
|
-
gem "will_paginate", :git=>"http://github.com/mislav/will_paginate.git",
|
45
|
-
:branch=>"rails3"
|
51
|
+
route "devise_for :users"
|
46
52
|
end
|
47
53
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/migration'
|
3
|
+
require 'rails/generators/generated_attribute'
|
4
|
+
require 'rails/generators/active_record'
|
5
|
+
|
6
|
+
class ViewsGenerator < Rails::Generators::Base
|
7
|
+
include Rails::Generators::Migration
|
8
|
+
source_root File.expand_path('../../../../', __FILE__)
|
9
|
+
desc "Installs files needed for App Template gem."
|
10
|
+
|
11
|
+
def copy_files
|
12
|
+
directory 'app/views', 'app/views'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
@@ -20,7 +20,7 @@ class WheelsGenerator < Rails::Generators::Base
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def load_recipes
|
23
|
-
required_recipes = %w(default jquery haml
|
23
|
+
required_recipes = %w(default jquery haml cancan postgresql)
|
24
24
|
required_recipes.each {|required_recipe| apply recipe(required_recipe)}
|
25
25
|
|
26
26
|
# apply recipe(ask("Which database? (m)ongoid or (p)ostgresql")=='m' ? 'mongoid' : 'postgresql')
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2010 Kevin Faustino
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/migration'
|
3
|
+
require 'rails/generators/generated_attribute'
|
4
|
+
require 'rails/generators/active_record'
|
5
|
+
|
6
|
+
class WheelsViewsGenerator < Rails::Generators::Base
|
7
|
+
include Rails::Generators::Migration
|
8
|
+
source_root File.expand_path('../../../../', __FILE__)
|
9
|
+
desc "Installs files needed for App Template gem."
|
10
|
+
|
11
|
+
def copy_files
|
12
|
+
directory 'app/views', 'app/views'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Wheels
|
2
|
+
module ActiveRecordExtensions
|
3
|
+
def commentable_tags
|
4
|
+
class_eval do
|
5
|
+
after_save.reject! {|callback| callback.method.to_s == 'save_tags' }
|
6
|
+
|
7
|
+
def save_commentable_tags
|
8
|
+
tagging_contexts.each do |context|
|
9
|
+
next unless tag_list_cache_set_on(context)
|
10
|
+
|
11
|
+
tag_list = tag_list_cache_on(context).uniq
|
12
|
+
|
13
|
+
# Do it normal like, but get the taggings, too.
|
14
|
+
|
15
|
+
|
16
|
+
# Find existing tags or create non-existing tags:
|
17
|
+
tag_list = ActsAsTaggableOn::Tag.find_or_create_all_with_like_by_name(tag_list)
|
18
|
+
|
19
|
+
current_tags = tags_on(context)
|
20
|
+
old_tags = current_tags - tag_list
|
21
|
+
new_tags = tag_list - current_tags
|
22
|
+
|
23
|
+
# Find taggings to remove:
|
24
|
+
old_taggings = taggings.where(:tagger_type => nil, :tagger_id => nil,
|
25
|
+
:context => context.to_s, :tag_id => old_tags).all
|
26
|
+
|
27
|
+
if old_taggings.present?
|
28
|
+
# Destroy old taggings:
|
29
|
+
ActsAsTaggableOn::Tagging.destroy_all :id => old_taggings.map(&:id)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Create new taggings:
|
33
|
+
new_tags.each do |tag|
|
34
|
+
taggings.create!(:tag_id => tag.id, :context => context.to_s, :taggable => self)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
after_save :save_commentable_tags
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Wheels
|
2
|
+
module ActiveRecordUserExtensions
|
3
|
+
def create_profile
|
4
|
+
self.profile ||= Profile.create(:user => self)
|
5
|
+
end
|
6
|
+
|
7
|
+
def role=(role)
|
8
|
+
if role.kind_of? Role
|
9
|
+
self.role_id = role.id
|
10
|
+
else
|
11
|
+
role = role.to_s.camelize
|
12
|
+
if role.is_numeric?
|
13
|
+
self.role_id= role
|
14
|
+
else
|
15
|
+
self.role_id= Role.find_by_name(role).id
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def confirm!
|
21
|
+
self.confirmed_at = DateTime::now
|
22
|
+
save
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
User.send :include, Wheels::ActiveRecordExtensions
|
28
|
+
|
29
|
+
User.before_create :create_profile
|
30
|
+
User.belongs_to :role
|
31
|
+
User.has_many :blogs, :dependent => :destroy
|
32
|
+
User.has_one :profile, :dependent => :destroy
|
33
|
+
User.has_many :galleries, :dependent => :destroy
|
34
|
+
|
data/lib/wheels/user.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
class User < ActiveRecord::Base
|
2
|
+
before_create :create_profile
|
3
|
+
belongs_to :role
|
4
|
+
has_many :blogs, :dependent => :destroy
|
5
|
+
has_one :profile, :dependent => :destroy
|
6
|
+
has_many :galleries, :dependent => :destroy
|
7
|
+
|
8
|
+
|
9
|
+
def create_profile
|
10
|
+
self.profile ||= Profile.create(:user => self)
|
11
|
+
end
|
12
|
+
|
13
|
+
def role=(role)
|
14
|
+
if role.kind_of? Role
|
15
|
+
self.role_id = role.id
|
16
|
+
else
|
17
|
+
role = role.to_s.camelize
|
18
|
+
if role.is_numeric?
|
19
|
+
self.role_id= role
|
20
|
+
else
|
21
|
+
self.role_id= Role.find_by_name(role).id
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def confirm!
|
27
|
+
self.confirmed_at = DateTime::now
|
28
|
+
save
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
data/lib/wheels.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
function QSObject(querystring){
|
2
|
+
//Create regular expression object to retrieve the qs part
|
3
|
+
var qsReg = new RegExp("[?][^#]*","i");
|
4
|
+
hRef = unescape(querystring);
|
5
|
+
var qsMatch = hRef.match(qsReg);
|
6
|
+
|
7
|
+
//removes the question mark from the url
|
8
|
+
qsMatch = new String(qsMatch);
|
9
|
+
qsMatch = qsMatch.substr(1, qsMatch.length -1);
|
10
|
+
|
11
|
+
//split it up
|
12
|
+
var rootArr = qsMatch.split("&");
|
13
|
+
for(i=0;i<rootArr.length;i++){
|
14
|
+
var tempArr = rootArr[i].split("=");
|
15
|
+
if(tempArr.length ==2){
|
16
|
+
tempArr[0] = unescape(tempArr[0]);
|
17
|
+
tempArr[1] = unescape(tempArr[1]);
|
18
|
+
|
19
|
+
this[tempArr[0]]= tempArr[1];
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
function queryParamFor(jsFile) {
|
25
|
+
url = $('script[src~='+jsFile+']').attr('src').toLowerCase();
|
26
|
+
return new QSObject(url);
|
27
|
+
}
|
28
|
+
|