wheels 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (298) hide show
  1. data/README +2 -0
  2. data/Rakefile +22 -22
  3. data/lib/{generators/core_extensions.rb → core_extensions.rb} +2 -2
  4. data/lib/generators/{recipes → wheels/recipes}/cancan.rb +0 -0
  5. data/lib/generators/{recipes → wheels/recipes}/cucumber.rb +0 -0
  6. data/lib/generators/{recipes → wheels/recipes}/default.rb +0 -0
  7. data/lib/generators/{recipes → wheels/recipes}/design.rb +0 -0
  8. data/lib/generators/{recipes → wheels/recipes}/devise.rb +0 -0
  9. data/lib/generators/{recipes → wheels/recipes}/factory_girl.rb +0 -0
  10. data/lib/generators/{recipes → wheels/recipes}/haml.rb +0 -0
  11. data/lib/generators/{recipes → wheels/recipes}/jquery.rb +0 -0
  12. data/lib/generators/{recipes → wheels/recipes}/mongoid.rb +0 -0
  13. data/lib/generators/{recipes → wheels/recipes}/postgresql.rb +0 -0
  14. data/lib/generators/wheels/recipes/public.rb +9 -0
  15. data/lib/generators/{recipes → wheels/recipes}/recipes.rb +0 -0
  16. data/lib/generators/{recipes → wheels/recipes}/remarkable.rb +0 -0
  17. data/lib/generators/{recipes → wheels/recipes}/rspec.rb +0 -0
  18. data/lib/generators/{recipes → wheels/recipes}/wheels.rb +0 -0
  19. data/lib/generators/{snippets → wheels/snippets}/cucumber/database_config +0 -0
  20. data/lib/generators/{templates → wheels/templates}/cancan/ability.rb +0 -0
  21. data/lib/generators/{templates → wheels/templates}/database/postgresql.yml +0 -0
  22. data/lib/generators/{templates → wheels/templates}/git/gitignore +0 -0
  23. data/lib/generators/{templates → wheels/templates}/haml/app/views/layouts/application.html.haml +0 -0
  24. data/lib/generators/{templates → wheels/templates}/mongoid/features/step_definitions/mongoid_steps.rb +0 -0
  25. data/lib/generators/{templates → wheels/templates}/mongoid/features/support/hooks.rb +0 -0
  26. data/lib/generators/wheels/wheels_generator.rb +0 -2
  27. data/lib/generators/wheels_update/core_extensions.3.rb +64 -0
  28. data/lib/generators/{recipes/wheels_update.rb → wheels_update/recipes/wheels.rb} +0 -0
  29. data/lib/generators/wheels_update/wheels_update_generator.rb +1 -1
  30. data/lib/wheels/base.rb +7 -0
  31. data/lib/wheels/routes.rb +2 -13
  32. data/test/functional/access_control_entries_controller_test.rb +49 -0
  33. data/test/functional/app_configs_controller_test.rb +49 -0
  34. data/test/functional/discussions_controller_test.rb +49 -0
  35. data/test/functional/external_links_controller_test.rb +49 -0
  36. data/test/functional/feedback_mailer_test.rb +8 -0
  37. data/test/functional/feedbacks_controller_test.rb +49 -0
  38. data/test/functional/forums_controller_test.rb +49 -0
  39. data/test/functional/layouts_controller_test.rb +49 -0
  40. data/test/functional/member_pages_controller_test.rb +49 -0
  41. data/test/functional/members_controller_test.rb +8 -0
  42. data/test/functional/menus_controller_test.rb +49 -0
  43. data/test/functional/pages_controller_test.rb +49 -0
  44. data/test/functional/product_revisions_controller_test.rb +49 -0
  45. data/test/performance/browsing_test.rb +9 -0
  46. data/test/test_helper.rb +13 -0
  47. data/test/unit/access_control_entry_test.rb +8 -0
  48. data/test/unit/app_config_test.rb +8 -0
  49. data/test/unit/attachment_test.rb +8 -0
  50. data/test/unit/discussion_test.rb +8 -0
  51. data/test/unit/external_link_test.rb +8 -0
  52. data/test/unit/feedback_test.rb +8 -0
  53. data/test/unit/forum_message_test.rb +8 -0
  54. data/test/unit/forum_test.rb +8 -0
  55. data/test/unit/helpers/access_control_entries_helper_test.rb +4 -0
  56. data/test/unit/helpers/app_configs_helper_test.rb +4 -0
  57. data/test/unit/helpers/discussions_helper_test.rb +4 -0
  58. data/test/unit/helpers/external_links_helper_test.rb +4 -0
  59. data/test/unit/helpers/feedbacks_helper_test.rb +4 -0
  60. data/test/unit/helpers/forums_helper_test.rb +4 -0
  61. data/test/unit/helpers/layouts_helper_test.rb +4 -0
  62. data/test/unit/helpers/member_pages_helper_test.rb +4 -0
  63. data/test/unit/helpers/members_helper_test.rb +4 -0
  64. data/test/unit/helpers/menus_helper_test.rb +4 -0
  65. data/test/unit/helpers/pages_helper_test.rb +4 -0
  66. data/test/unit/helpers/product_revisions_helper_test.rb +4 -0
  67. data/test/unit/layout_test.rb +8 -0
  68. data/test/unit/member_page_test.rb +8 -0
  69. data/test/unit/menu_test.rb +8 -0
  70. data/test/unit/page_revision_test.rb +8 -0
  71. data/test/unit/page_test.rb +8 -0
  72. data/test/unit/product_revision_test.rb +8 -0
  73. data/test/unit/settings_test.rb +8 -0
  74. data/test/unit/sitemap_test.rb +8 -0
  75. data/test/unit/user_test.rb +8 -0
  76. data/wheels.gemspec +122 -252
  77. metadata +124 -266
  78. data/LICENSE +0 -20
  79. data/README.rdoc +0 -17
  80. data/VERSION +0 -1
  81. data/app/controllers/access_control_entries_controller.rb +0 -20
  82. data/app/controllers/app_configs_controller.rb +0 -17
  83. data/app/controllers/application_controller.rb +0 -39
  84. data/app/controllers/attachments_controller.rb +0 -16
  85. data/app/controllers/blogs_controller.rb +0 -39
  86. data/app/controllers/discussions_controller.rb +0 -10
  87. data/app/controllers/external_links_controller.rb +0 -5
  88. data/app/controllers/feedbacks_controller.rb +0 -10
  89. data/app/controllers/forum_messages_controller.rb +0 -13
  90. data/app/controllers/forums_controller.rb +0 -2
  91. data/app/controllers/galleries_controller.rb +0 -60
  92. data/app/controllers/images_controller.rb +0 -30
  93. data/app/controllers/menus_controller.rb +0 -2
  94. data/app/controllers/pages_controller.rb +0 -71
  95. data/app/controllers/profiles_controller.rb +0 -16
  96. data/app/controllers/sitemaps_controller.rb +0 -135
  97. data/app/controllers/users_controller.rb +0 -28
  98. data/app/helpers/access_control_entries_helper.rb +0 -2
  99. data/app/helpers/app_configs_helper.rb +0 -2
  100. data/app/helpers/application_helper.rb +0 -36
  101. data/app/helpers/blogs_helper.rb +0 -10
  102. data/app/helpers/discussions_helper.rb +0 -2
  103. data/app/helpers/external_links_helper.rb +0 -2
  104. data/app/helpers/feedbacks_helper.rb +0 -2
  105. data/app/helpers/forums_helper.rb +0 -2
  106. data/app/helpers/menus_helper.rb +0 -2
  107. data/app/helpers/pages_helper.rb +0 -192
  108. data/app/helpers/sitemaps_helper.rb +0 -12
  109. data/app/mailers/feedback_mailer.rb +0 -10
  110. data/app/models/ability.rb +0 -43
  111. data/app/models/access_control_entry.rb +0 -100
  112. data/app/models/app_config.rb +0 -26
  113. data/app/models/attachment.rb +0 -10
  114. data/app/models/blog.rb +0 -10
  115. data/app/models/discussion.rb +0 -19
  116. data/app/models/external_link.rb +0 -4
  117. data/app/models/feedback.rb +0 -11
  118. data/app/models/forum.rb +0 -4
  119. data/app/models/forum_message.rb +0 -5
  120. data/app/models/gallery.rb +0 -5
  121. data/app/models/image.rb +0 -10
  122. data/app/models/menu.rb +0 -4
  123. data/app/models/page.rb +0 -7
  124. data/app/models/page_revision.rb +0 -2
  125. data/app/models/profile.rb +0 -12
  126. data/app/models/role.rb +0 -29
  127. data/app/models/s3_provider.rb +0 -84
  128. data/app/models/sitemap.rb +0 -171
  129. data/app/models/tagging.rb +0 -4
  130. data/app/models/user.rb +0 -69
  131. data/app/validators/email_validator.rb +0 -22
  132. data/app/views/access_control_entries/_form.html.haml +0 -33
  133. data/app/views/access_control_entries/_index.html.haml +0 -46
  134. data/app/views/access_control_entries/_show.html.haml +0 -12
  135. data/app/views/access_control_entries/create.js.haml +0 -3
  136. data/app/views/access_control_entries/destroy.js.haml +0 -3
  137. data/app/views/access_control_entries/edit.html.haml +0 -7
  138. data/app/views/access_control_entries/edit.js.haml +0 -3
  139. data/app/views/access_control_entries/index.html.haml +0 -2
  140. data/app/views/access_control_entries/index.js.haml +0 -3
  141. data/app/views/access_control_entries/new.html.haml +0 -5
  142. data/app/views/access_control_entries/new.js.haml +0 -3
  143. data/app/views/access_control_entries/show.html.haml +0 -2
  144. data/app/views/access_control_entries/show.js.haml +0 -4
  145. data/app/views/access_control_entries/update.js.haml +0 -3
  146. data/app/views/app_configs/_form.html.haml +0 -11
  147. data/app/views/app_configs/_index.html.haml +0 -6
  148. data/app/views/app_configs/_show.html.haml +0 -4
  149. data/app/views/app_configs/create.js.haml +0 -3
  150. data/app/views/app_configs/css.css.haml +0 -2
  151. data/app/views/app_configs/destroy.js.haml +0 -3
  152. data/app/views/app_configs/edit.html.haml +0 -2
  153. data/app/views/app_configs/edit.js.haml +0 -3
  154. data/app/views/app_configs/index.html.haml +0 -2
  155. data/app/views/app_configs/index.js.haml +0 -3
  156. data/app/views/app_configs/new.html.haml +0 -2
  157. data/app/views/app_configs/new.js.haml +0 -3
  158. data/app/views/app_configs/show.html.haml +0 -2
  159. data/app/views/app_configs/show.js.haml +0 -3
  160. data/app/views/app_configs/update.js.haml +0 -3
  161. data/app/views/attachments/_form.html.haml +0 -26
  162. data/app/views/attachments/_index.html.haml +0 -9
  163. data/app/views/attachments/_show.html.haml +0 -6
  164. data/app/views/attachments/_uploadify.html.erb +0 -12
  165. data/app/views/attachments/create.js.haml +0 -3
  166. data/app/views/attachments/destroy.js.haml +0 -3
  167. data/app/views/attachments/edit.js.haml +0 -3
  168. data/app/views/attachments/index.html.haml +0 -2
  169. data/app/views/attachments/index.js.haml +0 -3
  170. data/app/views/attachments/new.html.haml +0 -3
  171. data/app/views/attachments/new.js.haml +0 -3
  172. data/app/views/attachments/show.html.haml +0 -2
  173. data/app/views/attachments/show.js.haml +0 -3
  174. data/app/views/attachments/update.js.haml +0 -3
  175. data/app/views/blogs/_form.html.haml +0 -22
  176. data/app/views/blogs/edit.html.haml +0 -8
  177. data/app/views/blogs/index.html.haml +0 -21
  178. data/app/views/blogs/index.xml.builder +0 -27
  179. data/app/views/blogs/new.html.haml +0 -6
  180. data/app/views/blogs/show.html.haml +0 -25
  181. data/app/views/discussions/_form.html.haml +0 -16
  182. data/app/views/discussions/edit.html.haml +0 -7
  183. data/app/views/discussions/index.html.haml +0 -10
  184. data/app/views/discussions/new.html.haml +0 -25
  185. data/app/views/discussions/show.html.haml +0 -16
  186. data/app/views/external_links/_fields_for.html.haml +0 -2
  187. data/app/views/external_links/_form.html.haml +0 -18
  188. data/app/views/external_links/_show.html.haml +0 -7
  189. data/app/views/external_links/create.js.haml +0 -3
  190. data/app/views/external_links/destroy.js.haml +0 -3
  191. data/app/views/external_links/edit.html.haml +0 -7
  192. data/app/views/external_links/edit.js.haml +0 -3
  193. data/app/views/external_links/index.html.haml +0 -23
  194. data/app/views/external_links/index.js.haml +0 -3
  195. data/app/views/external_links/new.html.haml +0 -5
  196. data/app/views/external_links/new.js.haml +0 -3
  197. data/app/views/external_links/show.html.haml +0 -2
  198. data/app/views/external_links/show.js.haml +0 -3
  199. data/app/views/external_links/update.js.haml +0 -3
  200. data/app/views/feedback_mailer/submit_feedback.html.haml +0 -22
  201. data/app/views/feedbacks/_form.html.haml +0 -37
  202. data/app/views/feedbacks/index.html.haml +0 -27
  203. data/app/views/feedbacks/new.html.haml +0 -6
  204. data/app/views/feedbacks/show.html.haml +0 -19
  205. data/app/views/forum_messages/_form.html.haml +0 -6
  206. data/app/views/forum_messages/index.html.haml +0 -11
  207. data/app/views/forum_messages/new.html.haml +0 -5
  208. data/app/views/forums/_form.html.haml +0 -13
  209. data/app/views/forums/edit.html.haml +0 -7
  210. data/app/views/forums/index.html.haml +0 -23
  211. data/app/views/forums/new.html.haml +0 -5
  212. data/app/views/forums/show.html.haml +0 -20
  213. data/app/views/galleries/_form.html.haml +0 -30
  214. data/app/views/galleries/_show.html.haml +0 -21
  215. data/app/views/galleries/edit.html.haml +0 -7
  216. data/app/views/galleries/index.html.haml +0 -15
  217. data/app/views/galleries/new.html.haml +0 -5
  218. data/app/views/galleries/show.html.haml +0 -4
  219. data/app/views/images/_form.html.haml +0 -10
  220. data/app/views/images/create.js.haml +0 -3
  221. data/app/views/images/destroy.js.haml +0 -3
  222. data/app/views/images/edit.html.haml +0 -7
  223. data/app/views/images/edit.js.haml +0 -3
  224. data/app/views/images/index.html.haml +0 -17
  225. data/app/views/images/index.js.haml +0 -3
  226. data/app/views/images/new.html.haml +0 -5
  227. data/app/views/images/new.js.haml +0 -3
  228. data/app/views/images/show.html.haml +0 -5
  229. data/app/views/images/show.js.haml +0 -3
  230. data/app/views/images/update.js.haml +0 -3
  231. data/app/views/layouts/application.html.haml +0 -59
  232. data/app/views/layouts/bare.html.haml +0 -2
  233. data/app/views/layouts/image_dialog.html.haml +0 -18
  234. data/app/views/loadbehind/_destroy.js.haml +0 -3
  235. data/app/views/loadbehind/_edit.js.haml +0 -4
  236. data/app/views/loadbehind/_errors.html.haml +0 -5
  237. data/app/views/loadbehind/_growl_template.html.haml +0 -65
  238. data/app/views/loadbehind/_show_box.html.haml +0 -9
  239. data/app/views/loadbehind/_view.js.haml +0 -4
  240. data/app/views/loadbehind/growl.js.haml +0 -4
  241. data/app/views/loadbehind/index.js.haml +0 -4
  242. data/app/views/menus/_form.html.haml +0 -13
  243. data/app/views/menus/edit.html.haml +0 -7
  244. data/app/views/menus/index.html.haml +0 -19
  245. data/app/views/menus/new.html.haml +0 -5
  246. data/app/views/menus/show.html.haml +0 -7
  247. data/app/views/pages/_child_pages_links.html.haml +0 -5
  248. data/app/views/pages/_control_panel.html.haml +0 -15
  249. data/app/views/pages/_form.html.haml +0 -27
  250. data/app/views/pages/_form_fields.html.haml +0 -23
  251. data/app/views/pages/_show.html.haml +0 -4
  252. data/app/views/pages/_show_attachment.html.haml +0 -6
  253. data/app/views/pages/_show_small.html.haml +0 -2
  254. data/app/views/pages/create.js.haml +0 -3
  255. data/app/views/pages/destroy.js.haml +0 -3
  256. data/app/views/pages/edit.html.haml +0 -16
  257. data/app/views/pages/edit.js.haml +0 -4
  258. data/app/views/pages/index.html.haml +0 -19
  259. data/app/views/pages/index.js.haml +0 -3
  260. data/app/views/pages/new.html.haml +0 -5
  261. data/app/views/pages/new.js.haml +0 -3
  262. data/app/views/pages/show.html.haml +0 -20
  263. data/app/views/pages/show.js.haml +0 -3
  264. data/app/views/pages/update.js.haml +0 -3
  265. data/app/views/profiles/_form.html.haml +0 -26
  266. data/app/views/profiles/edit.html.haml +0 -7
  267. data/app/views/profiles/index.html.haml +0 -25
  268. data/app/views/profiles/new.html.haml +0 -5
  269. data/app/views/profiles/show.html.haml +0 -21
  270. data/app/views/sitemaps/edit.html.haml +0 -12
  271. data/app/views/sitemaps/edit.js.erb +0 -0
  272. data/app/views/sitemaps/index.html.haml +0 -83
  273. data/app/views/sitemaps/index.json.erb +0 -23
  274. data/app/views/sitemaps/new.html.haml +0 -8
  275. data/app/views/sitemaps/new.js.erb +0 -0
  276. data/app/views/users/edit.html.haml +0 -45
  277. data/app/views/users/index.html.haml +0 -19
  278. data/config/amazon_s3.yml +0 -15
  279. data/db/migrate/0000_devise_create_users.rb +0 -26
  280. data/db/migrate/0010_add_fields_to_users.rb +0 -28
  281. data/db/migrate/0020_create_blogs.rb +0 -16
  282. data/db/migrate/0030_create_galleries.rb +0 -15
  283. data/db/migrate/0040_create_images.rb +0 -17
  284. data/db/migrate/0050_create_profiles.rb +0 -24
  285. data/db/migrate/0060_insert_admin_user_and_roles.rb +0 -24
  286. data/db/migrate/0070_create_pages.rb +0 -16
  287. data/db/migrate/0080_create_forums.rb +0 -13
  288. data/db/migrate/0090_create_discussions.rb +0 -14
  289. data/db/migrate/0100_create_forum_messages.rb +0 -15
  290. data/db/migrate/0110_create_access_control_entries.rb +0 -23
  291. data/db/migrate/0120_create_attachments.rb +0 -17
  292. data/db/migrate/0130_create_roles.rb +0 -13
  293. data/db/migrate/0140_create_feedbacks.rb +0 -20
  294. data/db/migrate/0150_create_external_links.rb +0 -14
  295. data/db/migrate/0160_create_sitemaps.rb +0 -17
  296. data/db/migrate/0170_create_menus.rb +0 -14
  297. data/db/migrate/0180_acts_as_taggable_on_migration.rb +0 -28
  298. 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
-
@@ -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
-
@@ -1,10 +0,0 @@
1
- class Attachment < ActiveRecord::Base
2
- validates_presence_of :file, :page_id
3
- belongs_to :page
4
-
5
- has_attached_file :file,
6
- :storage => :s3,
7
- :s3_credentials => "#{Rails.root}/config/amazon_s3.yml",
8
- :path => "/attachments/:filename"
9
- end
10
-
data/app/models/blog.rb DELETED
@@ -1,10 +0,0 @@
1
- class Blog < ActiveRecord::Base
2
- acts_as_taggable
3
- belongs_to :user
4
- validates_presence_of :user_id, :title
5
- acts_as_linkable :parent=>:user, :name=>:title
6
- has_many :images
7
- cattr_reader :per_page
8
- @@per_page = 5
9
- end
10
-
@@ -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
-
@@ -1,4 +0,0 @@
1
- class ExternalLink < ActiveRecord::Base
2
- has_many :sitemaps, :as=>:resource
3
- end
4
-
@@ -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
@@ -1,4 +0,0 @@
1
- class Forum < ActiveRecord::Base
2
- has_many :discussions
3
- end
4
-
@@ -1,5 +0,0 @@
1
- class ForumMessage < ActiveRecord::Base
2
- belongs_to :discussion
3
- belongs_to :author, :class_name=>"User", :foreign_key=>"author_id"
4
- end
5
-
@@ -1,5 +0,0 @@
1
- class Gallery < ActiveRecord::Base
2
- belongs_to :user
3
- has_many :images, :dependent=>:destroy
4
- end
5
-
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
@@ -1,4 +0,0 @@
1
- class Menu < ActiveRecord::Base
2
- has_many :sitemaps, :as=>:resource
3
- end
4
-
data/app/models/page.rb DELETED
@@ -1,7 +0,0 @@
1
- class Page < ActiveRecord::Base
2
- has_many :attachments
3
- has_many :sitemaps, :as=>:resource
4
- has_many :access_control_entries, :as=>:resource
5
- acts_as_taggable
6
- end
7
-
@@ -1,2 +0,0 @@
1
- class PageRevision < ActiveRecord::Base
2
- end
@@ -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
-
@@ -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
-
@@ -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
-
@@ -1,4 +0,0 @@
1
- class ActsAsTaggableOn::Tagging
2
-
3
- end
4
-
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
-