wheels 0.1.10 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- data/README +2 -0
- data/Rakefile +22 -22
- data/lib/{generators/core_extensions.rb → core_extensions.rb} +2 -2
- data/lib/generators/{recipes → wheels/recipes}/cancan.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/cucumber.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/default.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/design.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/devise.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/factory_girl.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/haml.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/jquery.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/mongoid.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/postgresql.rb +0 -0
- data/lib/generators/wheels/recipes/public.rb +9 -0
- data/lib/generators/{recipes → wheels/recipes}/recipes.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/remarkable.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/rspec.rb +0 -0
- data/lib/generators/{recipes → wheels/recipes}/wheels.rb +0 -0
- data/lib/generators/{snippets → wheels/snippets}/cucumber/database_config +0 -0
- data/lib/generators/{templates → wheels/templates}/cancan/ability.rb +0 -0
- data/lib/generators/{templates → wheels/templates}/database/postgresql.yml +0 -0
- data/lib/generators/{templates → wheels/templates}/git/gitignore +0 -0
- data/lib/generators/{templates → wheels/templates}/haml/app/views/layouts/application.html.haml +0 -0
- data/lib/generators/{templates → wheels/templates}/mongoid/features/step_definitions/mongoid_steps.rb +0 -0
- data/lib/generators/{templates → wheels/templates}/mongoid/features/support/hooks.rb +0 -0
- data/lib/generators/wheels/wheels_generator.rb +0 -2
- data/lib/generators/wheels_update/core_extensions.3.rb +64 -0
- data/lib/generators/{recipes/wheels_update.rb → wheels_update/recipes/wheels.rb} +0 -0
- data/lib/generators/wheels_update/wheels_update_generator.rb +1 -1
- data/lib/wheels/base.rb +7 -0
- data/lib/wheels/routes.rb +2 -13
- data/test/functional/access_control_entries_controller_test.rb +49 -0
- data/test/functional/app_configs_controller_test.rb +49 -0
- data/test/functional/discussions_controller_test.rb +49 -0
- data/test/functional/external_links_controller_test.rb +49 -0
- data/test/functional/feedback_mailer_test.rb +8 -0
- data/test/functional/feedbacks_controller_test.rb +49 -0
- data/test/functional/forums_controller_test.rb +49 -0
- data/test/functional/layouts_controller_test.rb +49 -0
- data/test/functional/member_pages_controller_test.rb +49 -0
- data/test/functional/members_controller_test.rb +8 -0
- data/test/functional/menus_controller_test.rb +49 -0
- data/test/functional/pages_controller_test.rb +49 -0
- data/test/functional/product_revisions_controller_test.rb +49 -0
- data/test/performance/browsing_test.rb +9 -0
- data/test/test_helper.rb +13 -0
- data/test/unit/access_control_entry_test.rb +8 -0
- data/test/unit/app_config_test.rb +8 -0
- data/test/unit/attachment_test.rb +8 -0
- data/test/unit/discussion_test.rb +8 -0
- data/test/unit/external_link_test.rb +8 -0
- data/test/unit/feedback_test.rb +8 -0
- data/test/unit/forum_message_test.rb +8 -0
- data/test/unit/forum_test.rb +8 -0
- data/test/unit/helpers/access_control_entries_helper_test.rb +4 -0
- data/test/unit/helpers/app_configs_helper_test.rb +4 -0
- data/test/unit/helpers/discussions_helper_test.rb +4 -0
- data/test/unit/helpers/external_links_helper_test.rb +4 -0
- data/test/unit/helpers/feedbacks_helper_test.rb +4 -0
- data/test/unit/helpers/forums_helper_test.rb +4 -0
- data/test/unit/helpers/layouts_helper_test.rb +4 -0
- data/test/unit/helpers/member_pages_helper_test.rb +4 -0
- data/test/unit/helpers/members_helper_test.rb +4 -0
- data/test/unit/helpers/menus_helper_test.rb +4 -0
- data/test/unit/helpers/pages_helper_test.rb +4 -0
- data/test/unit/helpers/product_revisions_helper_test.rb +4 -0
- data/test/unit/layout_test.rb +8 -0
- data/test/unit/member_page_test.rb +8 -0
- data/test/unit/menu_test.rb +8 -0
- data/test/unit/page_revision_test.rb +8 -0
- data/test/unit/page_test.rb +8 -0
- data/test/unit/product_revision_test.rb +8 -0
- data/test/unit/settings_test.rb +8 -0
- data/test/unit/sitemap_test.rb +8 -0
- data/test/unit/user_test.rb +8 -0
- data/wheels.gemspec +122 -252
- metadata +124 -266
- data/LICENSE +0 -20
- data/README.rdoc +0 -17
- data/VERSION +0 -1
- data/app/controllers/access_control_entries_controller.rb +0 -20
- data/app/controllers/app_configs_controller.rb +0 -17
- data/app/controllers/application_controller.rb +0 -39
- data/app/controllers/attachments_controller.rb +0 -16
- data/app/controllers/blogs_controller.rb +0 -39
- data/app/controllers/discussions_controller.rb +0 -10
- data/app/controllers/external_links_controller.rb +0 -5
- data/app/controllers/feedbacks_controller.rb +0 -10
- data/app/controllers/forum_messages_controller.rb +0 -13
- data/app/controllers/forums_controller.rb +0 -2
- data/app/controllers/galleries_controller.rb +0 -60
- data/app/controllers/images_controller.rb +0 -30
- data/app/controllers/menus_controller.rb +0 -2
- data/app/controllers/pages_controller.rb +0 -71
- data/app/controllers/profiles_controller.rb +0 -16
- data/app/controllers/sitemaps_controller.rb +0 -135
- data/app/controllers/users_controller.rb +0 -28
- data/app/helpers/access_control_entries_helper.rb +0 -2
- data/app/helpers/app_configs_helper.rb +0 -2
- data/app/helpers/application_helper.rb +0 -36
- data/app/helpers/blogs_helper.rb +0 -10
- data/app/helpers/discussions_helper.rb +0 -2
- data/app/helpers/external_links_helper.rb +0 -2
- data/app/helpers/feedbacks_helper.rb +0 -2
- data/app/helpers/forums_helper.rb +0 -2
- data/app/helpers/menus_helper.rb +0 -2
- data/app/helpers/pages_helper.rb +0 -192
- data/app/helpers/sitemaps_helper.rb +0 -12
- data/app/mailers/feedback_mailer.rb +0 -10
- data/app/models/ability.rb +0 -43
- data/app/models/access_control_entry.rb +0 -100
- data/app/models/app_config.rb +0 -26
- data/app/models/attachment.rb +0 -10
- data/app/models/blog.rb +0 -10
- data/app/models/discussion.rb +0 -19
- data/app/models/external_link.rb +0 -4
- data/app/models/feedback.rb +0 -11
- data/app/models/forum.rb +0 -4
- data/app/models/forum_message.rb +0 -5
- data/app/models/gallery.rb +0 -5
- data/app/models/image.rb +0 -10
- data/app/models/menu.rb +0 -4
- data/app/models/page.rb +0 -7
- data/app/models/page_revision.rb +0 -2
- data/app/models/profile.rb +0 -12
- data/app/models/role.rb +0 -29
- data/app/models/s3_provider.rb +0 -84
- data/app/models/sitemap.rb +0 -171
- data/app/models/tagging.rb +0 -4
- data/app/models/user.rb +0 -69
- data/app/validators/email_validator.rb +0 -22
- data/app/views/access_control_entries/_form.html.haml +0 -33
- data/app/views/access_control_entries/_index.html.haml +0 -46
- data/app/views/access_control_entries/_show.html.haml +0 -12
- data/app/views/access_control_entries/create.js.haml +0 -3
- data/app/views/access_control_entries/destroy.js.haml +0 -3
- data/app/views/access_control_entries/edit.html.haml +0 -7
- data/app/views/access_control_entries/edit.js.haml +0 -3
- data/app/views/access_control_entries/index.html.haml +0 -2
- data/app/views/access_control_entries/index.js.haml +0 -3
- data/app/views/access_control_entries/new.html.haml +0 -5
- data/app/views/access_control_entries/new.js.haml +0 -3
- data/app/views/access_control_entries/show.html.haml +0 -2
- data/app/views/access_control_entries/show.js.haml +0 -4
- data/app/views/access_control_entries/update.js.haml +0 -3
- data/app/views/app_configs/_form.html.haml +0 -11
- data/app/views/app_configs/_index.html.haml +0 -6
- data/app/views/app_configs/_show.html.haml +0 -4
- data/app/views/app_configs/create.js.haml +0 -3
- data/app/views/app_configs/css.css.haml +0 -2
- data/app/views/app_configs/destroy.js.haml +0 -3
- data/app/views/app_configs/edit.html.haml +0 -2
- data/app/views/app_configs/edit.js.haml +0 -3
- data/app/views/app_configs/index.html.haml +0 -2
- data/app/views/app_configs/index.js.haml +0 -3
- data/app/views/app_configs/new.html.haml +0 -2
- data/app/views/app_configs/new.js.haml +0 -3
- data/app/views/app_configs/show.html.haml +0 -2
- data/app/views/app_configs/show.js.haml +0 -3
- data/app/views/app_configs/update.js.haml +0 -3
- data/app/views/attachments/_form.html.haml +0 -26
- data/app/views/attachments/_index.html.haml +0 -9
- data/app/views/attachments/_show.html.haml +0 -6
- data/app/views/attachments/_uploadify.html.erb +0 -12
- data/app/views/attachments/create.js.haml +0 -3
- data/app/views/attachments/destroy.js.haml +0 -3
- data/app/views/attachments/edit.js.haml +0 -3
- data/app/views/attachments/index.html.haml +0 -2
- data/app/views/attachments/index.js.haml +0 -3
- data/app/views/attachments/new.html.haml +0 -3
- data/app/views/attachments/new.js.haml +0 -3
- data/app/views/attachments/show.html.haml +0 -2
- data/app/views/attachments/show.js.haml +0 -3
- data/app/views/attachments/update.js.haml +0 -3
- data/app/views/blogs/_form.html.haml +0 -22
- data/app/views/blogs/edit.html.haml +0 -8
- data/app/views/blogs/index.html.haml +0 -21
- data/app/views/blogs/index.xml.builder +0 -27
- data/app/views/blogs/new.html.haml +0 -6
- data/app/views/blogs/show.html.haml +0 -25
- data/app/views/discussions/_form.html.haml +0 -16
- data/app/views/discussions/edit.html.haml +0 -7
- data/app/views/discussions/index.html.haml +0 -10
- data/app/views/discussions/new.html.haml +0 -25
- data/app/views/discussions/show.html.haml +0 -16
- data/app/views/external_links/_fields_for.html.haml +0 -2
- data/app/views/external_links/_form.html.haml +0 -18
- data/app/views/external_links/_show.html.haml +0 -7
- data/app/views/external_links/create.js.haml +0 -3
- data/app/views/external_links/destroy.js.haml +0 -3
- data/app/views/external_links/edit.html.haml +0 -7
- data/app/views/external_links/edit.js.haml +0 -3
- data/app/views/external_links/index.html.haml +0 -23
- data/app/views/external_links/index.js.haml +0 -3
- data/app/views/external_links/new.html.haml +0 -5
- data/app/views/external_links/new.js.haml +0 -3
- data/app/views/external_links/show.html.haml +0 -2
- data/app/views/external_links/show.js.haml +0 -3
- data/app/views/external_links/update.js.haml +0 -3
- data/app/views/feedback_mailer/submit_feedback.html.haml +0 -22
- data/app/views/feedbacks/_form.html.haml +0 -37
- data/app/views/feedbacks/index.html.haml +0 -27
- data/app/views/feedbacks/new.html.haml +0 -6
- data/app/views/feedbacks/show.html.haml +0 -19
- data/app/views/forum_messages/_form.html.haml +0 -6
- data/app/views/forum_messages/index.html.haml +0 -11
- data/app/views/forum_messages/new.html.haml +0 -5
- data/app/views/forums/_form.html.haml +0 -13
- data/app/views/forums/edit.html.haml +0 -7
- data/app/views/forums/index.html.haml +0 -23
- data/app/views/forums/new.html.haml +0 -5
- data/app/views/forums/show.html.haml +0 -20
- data/app/views/galleries/_form.html.haml +0 -30
- data/app/views/galleries/_show.html.haml +0 -21
- data/app/views/galleries/edit.html.haml +0 -7
- data/app/views/galleries/index.html.haml +0 -15
- data/app/views/galleries/new.html.haml +0 -5
- data/app/views/galleries/show.html.haml +0 -4
- data/app/views/images/_form.html.haml +0 -10
- data/app/views/images/create.js.haml +0 -3
- data/app/views/images/destroy.js.haml +0 -3
- data/app/views/images/edit.html.haml +0 -7
- data/app/views/images/edit.js.haml +0 -3
- data/app/views/images/index.html.haml +0 -17
- data/app/views/images/index.js.haml +0 -3
- data/app/views/images/new.html.haml +0 -5
- data/app/views/images/new.js.haml +0 -3
- data/app/views/images/show.html.haml +0 -5
- data/app/views/images/show.js.haml +0 -3
- data/app/views/images/update.js.haml +0 -3
- data/app/views/layouts/application.html.haml +0 -59
- data/app/views/layouts/bare.html.haml +0 -2
- data/app/views/layouts/image_dialog.html.haml +0 -18
- data/app/views/loadbehind/_destroy.js.haml +0 -3
- data/app/views/loadbehind/_edit.js.haml +0 -4
- data/app/views/loadbehind/_errors.html.haml +0 -5
- data/app/views/loadbehind/_growl_template.html.haml +0 -65
- data/app/views/loadbehind/_show_box.html.haml +0 -9
- data/app/views/loadbehind/_view.js.haml +0 -4
- data/app/views/loadbehind/growl.js.haml +0 -4
- data/app/views/loadbehind/index.js.haml +0 -4
- data/app/views/menus/_form.html.haml +0 -13
- data/app/views/menus/edit.html.haml +0 -7
- data/app/views/menus/index.html.haml +0 -19
- data/app/views/menus/new.html.haml +0 -5
- data/app/views/menus/show.html.haml +0 -7
- data/app/views/pages/_child_pages_links.html.haml +0 -5
- data/app/views/pages/_control_panel.html.haml +0 -15
- data/app/views/pages/_form.html.haml +0 -27
- data/app/views/pages/_form_fields.html.haml +0 -23
- data/app/views/pages/_show.html.haml +0 -4
- data/app/views/pages/_show_attachment.html.haml +0 -6
- data/app/views/pages/_show_small.html.haml +0 -2
- data/app/views/pages/create.js.haml +0 -3
- data/app/views/pages/destroy.js.haml +0 -3
- data/app/views/pages/edit.html.haml +0 -16
- data/app/views/pages/edit.js.haml +0 -4
- data/app/views/pages/index.html.haml +0 -19
- data/app/views/pages/index.js.haml +0 -3
- data/app/views/pages/new.html.haml +0 -5
- data/app/views/pages/new.js.haml +0 -3
- data/app/views/pages/show.html.haml +0 -20
- data/app/views/pages/show.js.haml +0 -3
- data/app/views/pages/update.js.haml +0 -3
- data/app/views/profiles/_form.html.haml +0 -26
- data/app/views/profiles/edit.html.haml +0 -7
- data/app/views/profiles/index.html.haml +0 -25
- data/app/views/profiles/new.html.haml +0 -5
- data/app/views/profiles/show.html.haml +0 -21
- data/app/views/sitemaps/edit.html.haml +0 -12
- data/app/views/sitemaps/edit.js.erb +0 -0
- data/app/views/sitemaps/index.html.haml +0 -83
- data/app/views/sitemaps/index.json.erb +0 -23
- data/app/views/sitemaps/new.html.haml +0 -8
- data/app/views/sitemaps/new.js.erb +0 -0
- data/app/views/users/edit.html.haml +0 -45
- data/app/views/users/index.html.haml +0 -19
- data/config/amazon_s3.yml +0 -15
- data/db/migrate/0000_devise_create_users.rb +0 -26
- data/db/migrate/0010_add_fields_to_users.rb +0 -28
- data/db/migrate/0020_create_blogs.rb +0 -16
- data/db/migrate/0030_create_galleries.rb +0 -15
- data/db/migrate/0040_create_images.rb +0 -17
- data/db/migrate/0050_create_profiles.rb +0 -24
- data/db/migrate/0060_insert_admin_user_and_roles.rb +0 -24
- data/db/migrate/0070_create_pages.rb +0 -16
- data/db/migrate/0080_create_forums.rb +0 -13
- data/db/migrate/0090_create_discussions.rb +0 -14
- data/db/migrate/0100_create_forum_messages.rb +0 -15
- data/db/migrate/0110_create_access_control_entries.rb +0 -23
- data/db/migrate/0120_create_attachments.rb +0 -17
- data/db/migrate/0130_create_roles.rb +0 -13
- data/db/migrate/0140_create_feedbacks.rb +0 -20
- data/db/migrate/0150_create_external_links.rb +0 -14
- data/db/migrate/0160_create_sitemaps.rb +0 -17
- data/db/migrate/0170_create_menus.rb +0 -14
- data/db/migrate/0180_acts_as_taggable_on_migration.rb +0 -28
- data/init.rb +0 -2
@@ -1,100 +0,0 @@
|
|
1
|
-
class AccessControlEntry < ActiveRecord::Base
|
2
|
-
belongs_to :user
|
3
|
-
belongs_to :role
|
4
|
-
belongs_to :resource, :polymorphic=>true
|
5
|
-
validates :resource_type, :presence=>true
|
6
|
-
|
7
|
-
scope :by_resource, lambda {|resource_type, resource_id|
|
8
|
-
where(:resource_type=>resource_type).
|
9
|
-
where(:resource_id=>resource_id)
|
10
|
-
}
|
11
|
-
scope :by_role, lambda {|role_id|
|
12
|
-
where(:role_id=>role_id)
|
13
|
-
}
|
14
|
-
scope :by_class, lambda {|class_name|
|
15
|
-
where(:resource_type=>class_name)
|
16
|
-
}
|
17
|
-
|
18
|
-
# def resource
|
19
|
-
# @resource ||= self.resource_type.constantize if self.resource_type
|
20
|
-
# end
|
21
|
-
|
22
|
-
# def resource=(res)
|
23
|
-
# @resource = res
|
24
|
-
# if res.type==Class
|
25
|
-
# self.resource_type = res.name
|
26
|
-
# else
|
27
|
-
# self.options[:id] = res.id
|
28
|
-
# self.resource_type = res.class.name
|
29
|
-
# end
|
30
|
-
# end
|
31
|
-
|
32
|
-
def options
|
33
|
-
@options ||= (self.serialized_options ? eval(self.serialized_options) : {})
|
34
|
-
end
|
35
|
-
|
36
|
-
def options_str
|
37
|
-
options.map{|u,v| "#{u.inspect}=>#{v.is_numeric? ? v : v.inspect}"}.join(", ")
|
38
|
-
end
|
39
|
-
def options_str=(str)
|
40
|
-
opts = str.split(",").map(&:strip).map_hash{|keyval|
|
41
|
-
key, val = keyval.split("=>").map(&:strip)
|
42
|
-
val = val.to_i if val.is_numeric?
|
43
|
-
if key.index(":")
|
44
|
-
key = key.gsub(/\:/, "").to_sym
|
45
|
-
end
|
46
|
-
{key=>val}
|
47
|
-
}
|
48
|
-
|
49
|
-
@options = opts
|
50
|
-
self.serialized_options = opts.inspect
|
51
|
-
end
|
52
|
-
|
53
|
-
def configure(ability)
|
54
|
-
raise "I only like Ability" unless ability.class==Ability
|
55
|
-
if self.can
|
56
|
-
puts "can #{verb.to_sym.inspect}, #{resource.inspect}, #{options.inspect}"
|
57
|
-
ability.can verb.to_sym, resource, options
|
58
|
-
else
|
59
|
-
puts "cannot #{verb.to_sym.inspect}, #{resource.inspect}, #{options.inspect}"
|
60
|
-
ability.cannot verb.to_sym, resource, options
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def self.can(verb, resource, options={})
|
65
|
-
AccessControlEntry.new(:can=>true, :verb=> verb, :resource=>resource, :options=>options )
|
66
|
-
end
|
67
|
-
def self.cannot(verb, resource, options)
|
68
|
-
AccessControlEntry.new(:can=>false, :verb=> verb, :resource=>resource, :options=>options )
|
69
|
-
end
|
70
|
-
|
71
|
-
def method_name
|
72
|
-
self.can ? :can : :cannot
|
73
|
-
end
|
74
|
-
|
75
|
-
def user_email
|
76
|
-
self.user.email if self.user
|
77
|
-
end
|
78
|
-
def user_email=(email)
|
79
|
-
self.user = User.find_by_email(email) unless email.blank?
|
80
|
-
end
|
81
|
-
|
82
|
-
def role=(role)
|
83
|
-
unless role.empty?
|
84
|
-
if role.kind_of? Role
|
85
|
-
self.role_id = role.id
|
86
|
-
else
|
87
|
-
role = role.to_s.camelize
|
88
|
-
if role.is_numeric?
|
89
|
-
self.role_id= role
|
90
|
-
else
|
91
|
-
self.role_id= Role.find_by_name(role).id
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
attr_protected :serialized_options
|
98
|
-
|
99
|
-
end
|
100
|
-
|
data/app/models/app_config.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
class AppConfig < ActiveRecord::Base
|
2
|
-
has_many :sitemaps, :as=>:resource
|
3
|
-
after_save :reload
|
4
|
-
|
5
|
-
before_create :set_name
|
6
|
-
|
7
|
-
def self.[](name)
|
8
|
-
val = select{|t| t.name==name}[0].try(:value)
|
9
|
-
if val && (val==val.to_i.to_s)
|
10
|
-
val = val.to_i
|
11
|
-
end
|
12
|
-
val
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.current
|
16
|
-
@current ||= AppConfig.all
|
17
|
-
end
|
18
|
-
def reload
|
19
|
-
AppConfig.instance_variable_set '@current', nil
|
20
|
-
end
|
21
|
-
|
22
|
-
def set_name
|
23
|
-
self.name = sitemaps[0].try(:menu_text) unless self.name
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
data/app/models/attachment.rb
DELETED
data/app/models/blog.rb
DELETED
data/app/models/discussion.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
class Discussion < ActiveRecord::Base
|
2
|
-
belongs_to :forum
|
3
|
-
has_many :forum_messages
|
4
|
-
|
5
|
-
attr_accessor :new_message
|
6
|
-
after_save :save_new_message
|
7
|
-
|
8
|
-
def save_new_message
|
9
|
-
self.new_message.save if self.new_message
|
10
|
-
end
|
11
|
-
|
12
|
-
def new_message_attributes=(attributes)
|
13
|
-
unless attributes["body"].blank?
|
14
|
-
self.new_message ||= ForumMessage.new(:discussion=>self)
|
15
|
-
self.new_message.attributes = attributes
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
data/app/models/external_link.rb
DELETED
data/app/models/feedback.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
class Feedback < ActiveRecord::Base
|
2
|
-
validates :email, :presence=>true, :email=>true
|
3
|
-
validates :name, :presence=>true, :length=>{:minimum=>6}
|
4
|
-
validates :phone
|
5
|
-
validates :subject, :presence=>true
|
6
|
-
|
7
|
-
def self.jq_validation
|
8
|
-
JQueryValidator.new
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
data/app/models/forum.rb
DELETED
data/app/models/forum_message.rb
DELETED
data/app/models/gallery.rb
DELETED
data/app/models/image.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
class Image < ActiveRecord::Base
|
2
|
-
belongs_to :gallery
|
3
|
-
acts_as_taggable
|
4
|
-
has_attached_file :image,
|
5
|
-
:storage => :s3,
|
6
|
-
:s3_credentials => "#{Rails.root}/config/amazon_s3.yml",
|
7
|
-
:path => "/images/:user_email/:style/:filename",
|
8
|
-
:styles => {:large=>"700x700>", :medium => "300x300>", :thumb => "100x100>" }
|
9
|
-
end
|
10
|
-
|
data/app/models/menu.rb
DELETED
data/app/models/page.rb
DELETED
data/app/models/page_revision.rb
DELETED
data/app/models/profile.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
class Profile < ActiveRecord::Base
|
2
|
-
acts_as_tagger
|
3
|
-
belongs_to :user
|
4
|
-
validates_uniqueness_of :alias
|
5
|
-
has_attached_file :image,
|
6
|
-
:storage => :s3,
|
7
|
-
:s3_credentials => "#{Rails.root}/config/amazon_s3.yml",
|
8
|
-
:path => "/:style/:filename",
|
9
|
-
:styles => { :medium => "300x300>", :thumb => "100x100>" }
|
10
|
-
|
11
|
-
end
|
12
|
-
|
data/app/models/role.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
class Role < ActiveRecord::Base
|
2
|
-
has_many :users
|
3
|
-
has_many :access_control_entries
|
4
|
-
|
5
|
-
def self.root
|
6
|
-
@root ||= find_by_name("Super")
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.nobody
|
10
|
-
@nobody ||= find_by_name("Nobody")
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.user
|
14
|
-
@user ||= find_by_name("User")
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.admin
|
18
|
-
@admin ||= find_by_name("Admin")
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.collection_entries
|
22
|
-
roles = [["Not Set", nil]]
|
23
|
-
Role.all.map{|t| [t.name, t.id]}.each do |t|
|
24
|
-
roles << t
|
25
|
-
end
|
26
|
-
roles
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
data/app/models/s3_provider.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
class S3Provider
|
2
|
-
attr_accessor :bucket, :access_key_id, :secret_access_key, :key, :content_type,
|
3
|
-
:acl, :expiration_date, :max_filesize, :policy, :signature, :form_fields
|
4
|
-
|
5
|
-
def initialize(options = {})
|
6
|
-
filename = "#{Rails.root}/config/amazon_s3.yml"
|
7
|
-
config = YAML.load_file(filename)
|
8
|
-
|
9
|
-
self.bucket = config["development"]['bucket']
|
10
|
-
self.access_key_id = config["development"]['access_key_id']
|
11
|
-
self.secret_access_key = config["development"]['secret_access_key']
|
12
|
-
self.key = options[:key] || ''
|
13
|
-
self.content_type = options[:content_type] || ''
|
14
|
-
self.acl = options[:acl] || 'public-read'
|
15
|
-
self.expiration_date = (options[:expiration_date] || 10.hours).from_now.utc.strftime('%Y-%m-%dT%H:%M:%S.000Z')
|
16
|
-
self.max_filesize = options[:max_filesize] || 500.megabyte
|
17
|
-
|
18
|
-
self.policy = Base64.encode64(
|
19
|
-
"{'expiration': '#{self.expiration_date}',
|
20
|
-
'conditions': [
|
21
|
-
{'bucket': '#{self.bucket}'},
|
22
|
-
['starts-with', '$key', '#{self.key}'],
|
23
|
-
{'acl': '#{self.acl}'},
|
24
|
-
{'success_action_status': '201'},
|
25
|
-
['content-length-range', 0, #{self.max_filesize}],
|
26
|
-
['starts-with', '$Content-Type', '']
|
27
|
-
]
|
28
|
-
}").gsub(/\n|\r/, '')
|
29
|
-
|
30
|
-
self.signature = Base64.encode64(
|
31
|
-
OpenSSL::HMAC.digest(
|
32
|
-
OpenSSL::Digest::Digest.new('sha1'),
|
33
|
-
self.secret_access_key, self.policy)).gsub("\n","")
|
34
|
-
|
35
|
-
self.form_fields = %(
|
36
|
-
<form action="#{form_action}" method="post" enctype="multipart/form-data" id="upload-form">
|
37
|
-
<input type="hidden" name="key" value="#{self.key}/${filename}">
|
38
|
-
<input type="hidden" name="AWSAccessKeyId" value="#{self.access_key_id}">
|
39
|
-
<input type="hidden" name="acl" value="#{self.policy}">
|
40
|
-
<input type="hidden" name="success_action_redirect" value="http://localhost/">
|
41
|
-
<input type="hidden" name="policy" value="#{self.policy}">
|
42
|
-
<input type="hidden" name="signature" value="#{self.signature}">
|
43
|
-
<input type="hidden" name="Content-Type" value="image/jpeg">
|
44
|
-
<input name="file" type="file">
|
45
|
-
<input type="submit" value="Upload File to S3">
|
46
|
-
</form>
|
47
|
-
)
|
48
|
-
end
|
49
|
-
def form_action
|
50
|
-
"https://#{self.bucket}.s3.amazonaws.com/"
|
51
|
-
end
|
52
|
-
def script_data
|
53
|
-
%(
|
54
|
-
"AWSAccessKeyId": #{s self.access_key_id},
|
55
|
-
"key": #{s self.key},
|
56
|
-
"acl": #{s self.acl},
|
57
|
-
"policy": #{url_encoded(%("#{self.policy}"), 2)},
|
58
|
-
"signature": #{s self.signature}
|
59
|
-
)
|
60
|
-
end
|
61
|
-
|
62
|
-
def foolbar
|
63
|
-
%(<input type="hidden" name="key" value="#{self.key}/${filename}">
|
64
|
-
<input type="hidden" name="AWSAccessKeyId" value="#{self.access_key_id}">
|
65
|
-
<input type="hidden" name="acl" value="#{self.acl}">
|
66
|
-
<input type="hidden" name="policy" value="#{self.policy}">
|
67
|
-
<input type="hidden" name="signature" value="#{self.signature}">
|
68
|
-
<input type="hidden" name="success_action_status" value="201">
|
69
|
-
<input type="hidden" name="Content-Type" value="#{self.content_type}">
|
70
|
-
<input name="file" type="file" id="file_input" />
|
71
|
-
<input name="submit" value="Upload" type="submit" />)
|
72
|
-
end
|
73
|
-
private
|
74
|
-
def url_encoded(str, num=1)
|
75
|
-
str = url_encoded(str) if num==2
|
76
|
-
"encodeURIComponent(#{str})"
|
77
|
-
end
|
78
|
-
def s(str)
|
79
|
-
"\"#{str}\""
|
80
|
-
end
|
81
|
-
|
82
|
-
|
83
|
-
end
|
84
|
-
|
data/app/models/sitemap.rb
DELETED
@@ -1,171 +0,0 @@
|
|
1
|
-
class Sitemap < ActiveRecord::Base
|
2
|
-
has_many :children, :class_name=>'Sitemap', :foreign_key=>'parent_id', :dependent => :destroy do
|
3
|
-
def sorted
|
4
|
-
sort{|t, u| if t.nil? || t.position.nil?; 1;
|
5
|
-
elsif u.nil? || u.position.nil?; -1;
|
6
|
-
else t.position <=> u.position end}
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.new_main_menu_page(name)
|
11
|
-
Sitemap.create( :parent=>self.main_menu,
|
12
|
-
:menu_text=>name,
|
13
|
-
:resource=>Page.create(:title=>name),
|
14
|
-
:position=>Sitemap.main_menu.children.count)
|
15
|
-
end
|
16
|
-
|
17
|
-
belongs_to :parent, :class_name=>'Sitemap', :foreign_key=>'parent_id'
|
18
|
-
belongs_to :resource, :polymorphic => true
|
19
|
-
after_create :create_resource
|
20
|
-
before_destroy :on_before_destroy
|
21
|
-
after_save :reload_root
|
22
|
-
validates :resource, :presence=>true
|
23
|
-
accepts_nested_attributes_for :children
|
24
|
-
|
25
|
-
def reload_root
|
26
|
-
Sitemap.instance_variable_set('@_root', nil)
|
27
|
-
end
|
28
|
-
|
29
|
-
def on_before_destroy
|
30
|
-
resource.destroy if resource && resource.sitemaps.size==1
|
31
|
-
end
|
32
|
-
|
33
|
-
scope :orphans, where(:parent_id=>nil).where("menu_text <> 'root'")
|
34
|
-
|
35
|
-
def as_json(*a)
|
36
|
-
{
|
37
|
-
:position=>self.position,
|
38
|
-
:data=>{
|
39
|
-
:title=>self.menu_text,
|
40
|
-
:icon=>icon_name,
|
41
|
-
},
|
42
|
-
:attr=>{
|
43
|
-
:id=>"node_#{id}",
|
44
|
-
:rel=>resource_type.underscore,
|
45
|
-
:data_menu_text => self.menu_text,
|
46
|
-
:data_resource_type => self.resource_type,
|
47
|
-
:data_resource_id => self.resource_id,
|
48
|
-
:data_id => self.id
|
49
|
-
},
|
50
|
-
:state=>treeview_state,
|
51
|
-
:children=> children.sorted
|
52
|
-
}.as_json(*a)
|
53
|
-
end
|
54
|
-
|
55
|
-
def resource_attributes=(attrib={})
|
56
|
-
raise "Cant build resource without resource_type" if resource_type.empty?
|
57
|
-
resource = create_resource
|
58
|
-
resource.attributes = attrib
|
59
|
-
resource.save
|
60
|
-
end
|
61
|
-
|
62
|
-
def create_resource
|
63
|
-
if self.resource_type && !self.resource_id
|
64
|
-
self.resource = resource_type.constantize.new
|
65
|
-
self.save
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def url
|
70
|
-
if self == Sitemap.main_menu
|
71
|
-
'/'
|
72
|
-
elsif resource.is_a? ExternalLink
|
73
|
-
resource.url
|
74
|
-
else
|
75
|
-
"#{(a=parent.url)=='/'?'':a}/#{menu_text.gsub(/ /, '_')}"
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
|
80
|
-
#########################################################################
|
81
|
-
#
|
82
|
-
# Class Methods
|
83
|
-
#
|
84
|
-
#########################################################################
|
85
|
-
|
86
|
-
def self.root
|
87
|
-
@_root ||= Sitemap.find_by_menu_text_and_parent_id('root', nil)
|
88
|
-
end
|
89
|
-
|
90
|
-
def self.lost_and_found
|
91
|
-
root.children.select{|t| t.menu_text=='Lost + Found'}[0]
|
92
|
-
end
|
93
|
-
|
94
|
-
def self.main_menu
|
95
|
-
root.children.select{|t| t.menu_text=='Main Menu'}[0]
|
96
|
-
end
|
97
|
-
|
98
|
-
def self.settings
|
99
|
-
root.children.select{|t| t.menu_text=='Settings'}[0]
|
100
|
-
end
|
101
|
-
|
102
|
-
def self.find_by_path(*path_args)
|
103
|
-
path = path_args.reverse
|
104
|
-
path.delete(nil)
|
105
|
-
obj = Sitemap.main_menu
|
106
|
-
while (path_piece=path.pop)
|
107
|
-
obj = obj.children.select{|t| t.menu_text.downcase==path_piece.downcase.gsub(/_/, ' ')}[0]
|
108
|
-
raise "Path error '#{path_piece}' in '#{path_args.join('/')}'" unless obj
|
109
|
-
end
|
110
|
-
return obj
|
111
|
-
end
|
112
|
-
|
113
|
-
#########################################################################
|
114
|
-
#
|
115
|
-
# Private Methods
|
116
|
-
#
|
117
|
-
#########################################################################
|
118
|
-
|
119
|
-
private
|
120
|
-
def build_resource(params={})
|
121
|
-
if resource_class
|
122
|
-
a = resource_class.new(params)
|
123
|
-
self.resource = a
|
124
|
-
a
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
def create_resource(params={})
|
129
|
-
if resource_class
|
130
|
-
a = resource_class.create(params)
|
131
|
-
self.resource = a
|
132
|
-
a
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
def new_model
|
137
|
-
resource_class.new(:sitemaps=>[self]) if resource_class
|
138
|
-
end
|
139
|
-
|
140
|
-
def resource_class
|
141
|
-
resource_type.camelize.constantize unless resource_type.empty?
|
142
|
-
end
|
143
|
-
|
144
|
-
def icon_name
|
145
|
-
case resource_type
|
146
|
-
when "Page"
|
147
|
-
"page"
|
148
|
-
when "ExternalLink"
|
149
|
-
"folder"
|
150
|
-
when "Menu"
|
151
|
-
"drive"
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
def treeview_state
|
156
|
-
if resource.is_a?(Menu)
|
157
|
-
"open"
|
158
|
-
elsif resource.is_a? Page
|
159
|
-
"closed"
|
160
|
-
else
|
161
|
-
"open"
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
class SitemapArray < Array
|
167
|
-
def to_json
|
168
|
-
"[" + map(&:to_json).join(",") + "]"
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
data/app/models/tagging.rb
DELETED
data/app/models/user.rb
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
class User < ActiveRecord::Base
|
2
|
-
belongs_to :role
|
3
|
-
has_many :blogs, :dependent => :destroy
|
4
|
-
has_one :profile, :dependent => :destroy
|
5
|
-
has_many :galleries, :dependent => :destroy
|
6
|
-
has_many :access_control_entries, :dependent=>:destroy
|
7
|
-
|
8
|
-
accepts_nested_attributes_for :profile
|
9
|
-
|
10
|
-
def initialize(*args)
|
11
|
-
super(*args)
|
12
|
-
build_profile unless profile
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.nobody
|
16
|
-
User.new(:role=>Role.nobody)
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.root
|
20
|
-
User.where(:role_id=>Role.root.id)[0]
|
21
|
-
end
|
22
|
-
|
23
|
-
def create_profile
|
24
|
-
|
25
|
-
Profile.create(:user=>self) unless self.profile
|
26
|
-
end
|
27
|
-
|
28
|
-
def role?(role)
|
29
|
-
if role.kind_of?(Role)
|
30
|
-
return role==self.role
|
31
|
-
elsif role.is_numeric?
|
32
|
-
return self.role_id==role
|
33
|
-
else
|
34
|
-
return self.role.name.underscore==role.underscore
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def role=(role)
|
39
|
-
if role.kind_of? Role
|
40
|
-
self.role_id = role.id
|
41
|
-
else
|
42
|
-
role = role.to_s.camelize
|
43
|
-
if role.is_numeric?
|
44
|
-
self.role_id= role
|
45
|
-
else
|
46
|
-
self.role_id= Role.find_by_name(role).id
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def confirm!
|
52
|
-
self.confirmed_at = DateTime::now
|
53
|
-
save
|
54
|
-
end
|
55
|
-
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable, :token_authenticatable, :lockable, :timeoutable
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
class FullyValidatedUser < User
|
60
|
-
def class
|
61
|
-
User
|
62
|
-
end
|
63
|
-
attr_accessor :old_password
|
64
|
-
validates :email, :presence => true, :email => true
|
65
|
-
validates :old_password, :presence=>true , :password=>true
|
66
|
-
validates :password, :presence=>true , :length=>{:minimum=>6}
|
67
|
-
validates :password_confirmation, :equal_to=>{:other=>:password}
|
68
|
-
end
|
69
|
-
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'mail'
|
2
|
-
class EmailValidator < ActiveModel::EachValidator
|
3
|
-
def validate_each(record,attribute,value)
|
4
|
-
begin
|
5
|
-
m = Mail::Address.new(value)
|
6
|
-
# We must check that value contains a domain and that value is an email address
|
7
|
-
r = m.domain && m.address == value
|
8
|
-
t = m.__send__(:tree)
|
9
|
-
# We need to dig into treetop
|
10
|
-
# A valid domain must have dot_atom_text elements size > 1
|
11
|
-
# user@localhost is excluded
|
12
|
-
# treetop must respond to domain
|
13
|
-
# We exclude valid email values like <user@localhost.com>
|
14
|
-
# Hence we use m.__send__(tree).domain
|
15
|
-
r &&= (t.domain.dot_atom_text.elements.size > 1)
|
16
|
-
rescue Exception => e
|
17
|
-
r = false
|
18
|
-
end
|
19
|
-
record.errors[attribute] << (options[:message] || "is invalid") unless r
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
@@ -1,33 +0,0 @@
|
|
1
|
-
= form_for @access_control_entry, :remote=>true do |f|
|
2
|
-
-if @access_control_entry.errors.any?
|
3
|
-
#errorExplanation
|
4
|
-
%h2= "#{pluralize(@access_control_entry.errors.count, "error")} prohibited this access_control_entry from being saved:"
|
5
|
-
%ul
|
6
|
-
- @access_control_entry.errors.full_messages.each do |msg|
|
7
|
-
%li= msg
|
8
|
-
= hidden_field_tag :container, "ace_listing"
|
9
|
-
= hidden_field_tag :ajax_function, "append"
|
10
|
-
%ul.ace_form_fields
|
11
|
-
%li
|
12
|
-
.name Email
|
13
|
-
= f.text_field :user_email, :class=>"email"
|
14
|
-
%li
|
15
|
-
.name Role
|
16
|
-
= f.select :role, Role.collection_entries
|
17
|
-
%li
|
18
|
-
.name Can?
|
19
|
-
= f.check_box :can
|
20
|
-
%li
|
21
|
-
.name verb
|
22
|
-
= f.text_field :verb, :class=>"verb"
|
23
|
-
%li
|
24
|
-
.name Resource
|
25
|
-
= f.select :resource_type, [["Forum", "Forum"], ["Page", "Page"]]
|
26
|
-
= f.hidden_field :resource_id
|
27
|
-
%li
|
28
|
-
.name options
|
29
|
-
= f.text_field :options_str, :class=>"verb"
|
30
|
-
|
31
|
-
%li
|
32
|
-
= f.submit 'Save', :disable_with=>"Saving..."
|
33
|
-
|