adva-core 0.0.3 → 0.0.4

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.
Files changed (285) hide show
  1. data/app/controllers/admin/base_controller.rb +20 -0
  2. data/app/controllers/admin/pages_controller.rb +7 -0
  3. data/app/controllers/admin/sections_controller.rb +22 -0
  4. data/app/controllers/admin/sites_controller.rb +16 -0
  5. data/app/controllers/articles_controller.rb +3 -0
  6. data/app/controllers/base_controller.rb +18 -0
  7. data/app/controllers/installations_controller.rb +28 -0
  8. data/app/controllers/pages_controller.rb +2 -0
  9. data/app/controllers/sections_controller.rb +3 -0
  10. data/app/helpers/form_helper.rb +13 -0
  11. data/app/helpers/sections_helper.rb +7 -0
  12. data/app/helpers/url_helper.rb +18 -0
  13. data/app/models/account.rb +3 -0
  14. data/app/models/article.rb +2 -0
  15. data/app/models/content.rb +4 -0
  16. data/app/models/page.rb +9 -0
  17. data/app/models/section.rb +49 -0
  18. data/app/models/site.rb +24 -0
  19. data/app/views/admin/contents/_menu.html.rb +17 -0
  20. data/app/views/admin/pages/_menu.html.rb +10 -0
  21. data/app/views/admin/pages/new.html.rb +19 -0
  22. data/app/views/admin/pages/show.html.rb +25 -0
  23. data/app/views/admin/sections/_menu.html.rb +45 -0
  24. data/app/views/admin/sections/_section.html.rb +7 -0
  25. data/app/views/admin/sections/_select_type.html.rb +16 -0
  26. data/app/views/admin/sections/index.html.rb +28 -0
  27. data/app/views/admin/sites/_menu.html.rb +2 -0
  28. data/app/views/admin/sites/edit.html.rb +22 -0
  29. data/app/views/admin/sites/index.html.rb +24 -0
  30. data/app/views/admin/sites/new.html.rb +39 -0
  31. data/app/views/admin/sites/show.html.rb +7 -0
  32. data/app/views/installations/new.html.rb +39 -0
  33. data/app/views/installations/show.html.rb +9 -0
  34. data/app/views/layouts/admin.rb +55 -0
  35. data/app/views/layouts/admin/_header.rb +48 -0
  36. data/app/views/layouts/admin/_tabs.html.rb +18 -0
  37. data/app/views/layouts/admin/_top.rb +62 -0
  38. data/app/views/layouts/base.rb +64 -0
  39. data/app/views/layouts/default.rb +46 -0
  40. data/app/views/layouts/default/_menu.rb +19 -0
  41. data/app/views/layouts/simple.rb +16 -0
  42. data/app/views/pages/show.html.rb +7 -0
  43. data/config/initializers/simple_form.rb +53 -0
  44. data/config/locales/en.yml +129 -0
  45. data/config/redirects.rb +8 -0
  46. data/config/routes.rb +21 -0
  47. data/lib/adva-core.rb +1 -0
  48. data/lib/adva.rb +40 -0
  49. data/lib/adva/active_record/has_one_default.rb +40 -0
  50. data/lib/adva/active_record/has_options.rb +55 -0
  51. data/lib/adva/cli.rb +16 -0
  52. data/lib/adva/controller.rb +7 -0
  53. data/lib/adva/controller/abstract_actions.rb +92 -0
  54. data/lib/adva/controller/internal_redirect.rb +26 -0
  55. data/lib/adva/controller/references.rb +28 -0
  56. data/lib/adva/core.rb +94 -0
  57. data/lib/adva/engine.rb +44 -0
  58. data/lib/adva/generators.rb +8 -0
  59. data/lib/adva/generators/app.rb +121 -0
  60. data/lib/adva/generators/engine.rb +58 -0
  61. data/lib/adva/generators/gemfile.rb +50 -0
  62. data/lib/adva/generators/install.rb +31 -0
  63. data/lib/adva/generators/templates/app/app_template.rb +3 -0
  64. data/lib/adva/generators/templates/engine/Gemfile.erb +3 -0
  65. data/lib/adva/generators/templates/engine/all.rb +1 -0
  66. data/lib/adva/generators/templates/engine/en.yml.erb +2 -0
  67. data/lib/adva/generators/templates/engine/engine.rb.erb +11 -0
  68. data/lib/adva/generators/templates/engine/gemspec.erb +21 -0
  69. data/lib/adva/generators/templates/engine/migration.rb.erb +11 -0
  70. data/lib/adva/generators/templates/engine/redirects.rb.erb +3 -0
  71. data/lib/adva/generators/templates/engine/routes.rb.erb +3 -0
  72. data/lib/adva/generators/templates/engine/test_helper.rb.erb +3 -0
  73. data/lib/adva/rack.rb +5 -0
  74. data/lib/adva/rack/static.rb +50 -0
  75. data/lib/adva/registry.rb +62 -0
  76. data/lib/adva/responder.rb +21 -0
  77. data/lib/adva/responder/redirect.rb +31 -0
  78. data/lib/adva/routing_filters/section_path.rb +72 -0
  79. data/lib/adva/routing_filters/section_root.rb +65 -0
  80. data/lib/adva/tasks/core.rake +9 -0
  81. data/lib/adva/tasks/core.rb +160 -0
  82. data/lib/adva/testing.rb +58 -0
  83. data/lib/adva/testing/engine.rb +37 -0
  84. data/lib/adva/view.rb +7 -0
  85. data/lib/adva/view/form.rb +44 -0
  86. data/lib/adva/view/form/tabs.rb +46 -0
  87. data/lib/adva/view/helper/i18n.rb +10 -0
  88. data/lib/adva/view/menu.rb +73 -0
  89. data/lib/adva/view/menu/admin.rb +100 -0
  90. data/lib/adva/view/menu/items.rb +26 -0
  91. data/lib/adva/view/tabs.rb +28 -0
  92. data/lib/adva_core/version.rb +3 -0
  93. data/lib/core_ext/rails/action_view/has_many_through_collection_helpers.rb +27 -0
  94. data/lib/core_ext/rails/active_record/skip_callbacks.rb +51 -0
  95. data/lib/core_ext/ruby/array/flatten_once.rb +9 -0
  96. data/lib/core_ext/ruby/kernel/silence_stream.rb +17 -0
  97. data/lib/core_ext/ruby/module/include_anonymous.rb +36 -0
  98. data/lib/core_ext/ruby/module/option_reader.rb +9 -0
  99. data/lib/patches/inherited_resources.rb +35 -0
  100. data/lib/patches/rails/asset_expansion_multiple_registrations.rb +21 -0
  101. data/lib/patches/rails/integretion_runner_respond_to.rb +13 -0
  102. data/lib/patches/rails/polymorphic_url_for.rb +115 -0
  103. data/lib/patches/rails/recognize_path_env.rb +42 -0
  104. data/lib/patches/rails/route_set_to_param.rb +25 -0
  105. data/lib/patches/rails/route_set_trailing_segment.rb +13 -0
  106. data/lib/patches/rails/sti_associations.rb +17 -0
  107. data/lib/patches/rails/template_resolver_caching.rb +9 -0
  108. data/lib/patches/rails/translation_helper.rb +18 -0
  109. data/lib/patches/responders/flash_responder.rb +17 -0
  110. data/lib/patches/simple_form.rb +37 -0
  111. data/lib/patches/thor/core_ext/hash.rb +7 -0
  112. data/lib/patches/thor/group/symbolized_options.rb +8 -0
  113. data/lib/patches/webrat/links-data-method.rb +15 -0
  114. data/lib/patches/webrat/logger.rb +14 -0
  115. data/lib/patches/webrat/upload_file.rb +23 -0
  116. data/lib/testing/assertions.rb +19 -0
  117. data/lib/testing/env.rb +41 -0
  118. data/lib/testing/factories.rb +28 -0
  119. data/lib/testing/helpers/global_helpers.rb +9 -0
  120. data/lib/testing/paths.rb +54 -0
  121. data/lib/testing/step_definitions/common_steps.rb +287 -0
  122. data/lib/testing/step_definitions/debug_steps.rb +22 -0
  123. data/lib/testing/step_definitions/menu_steps.rb +11 -0
  124. data/lib/testing/step_definitions/routes_steps.rb +18 -0
  125. data/lib/testing/step_definitions/transforms.rb +50 -0
  126. data/lib/testing/step_definitions/webrat_steps.rb +284 -0
  127. data/lib/testing/step_definitions/within_steps.rb +16 -0
  128. data/lib/webrat/integrations/rails.rb +33 -0
  129. data/public/images/adva-core/admin/header_bg.png +0 -0
  130. data/public/images/adva-core/admin/menu_checkmark.png +0 -0
  131. data/public/images/adva-core/admin/section_menu_bg.png +0 -0
  132. data/public/images/adva-core/admin/tab_action_active.png +0 -0
  133. data/public/images/adva-core/admin/tab_main_active.png +0 -0
  134. data/public/images/adva-core/admin/tab_sidebar_active.png +0 -0
  135. data/public/images/adva-core/admin/tab_top_active.png +0 -0
  136. data/public/images/adva-core/asset_selected.png +0 -0
  137. data/public/images/adva-core/avatar.gif +0 -0
  138. data/public/images/adva-core/feed.mini.png +0 -0
  139. data/public/images/adva-core/filter-bg.png +0 -0
  140. data/public/images/adva-core/grid.png +0 -0
  141. data/public/images/adva-core/icons/accept.png +0 -0
  142. data/public/images/adva-core/icons/add.png +0 -0
  143. data/public/images/adva-core/icons/arrow_cross.png +0 -0
  144. data/public/images/adva-core/icons/arrow_cross_2.png +0 -0
  145. data/public/images/adva-core/icons/arrow_cross_3.png +0 -0
  146. data/public/images/adva-core/icons/arrow_up_down.png +0 -0
  147. data/public/images/adva-core/icons/assets/audio.png +0 -0
  148. data/public/images/adva-core/icons/assets/doc.png +0 -0
  149. data/public/images/adva-core/icons/assets/pdf.png +0 -0
  150. data/public/images/adva-core/icons/assets/video.png +0 -0
  151. data/public/images/adva-core/icons/attach.png +0 -0
  152. data/public/images/adva-core/icons/bin.png +0 -0
  153. data/public/images/adva-core/icons/bin_closed.png +0 -0
  154. data/public/images/adva-core/icons/bin_empty.png +0 -0
  155. data/public/images/adva-core/icons/bullet_black.png +0 -0
  156. data/public/images/adva-core/icons/bullet_delete.png +0 -0
  157. data/public/images/adva-core/icons/bullet_error.png +0 -0
  158. data/public/images/adva-core/icons/bullet_go.png +0 -0
  159. data/public/images/adva-core/icons/bullet_red.png +0 -0
  160. data/public/images/adva-core/icons/bullet_white.png +0 -0
  161. data/public/images/adva-core/icons/bullet_yellow.png +0 -0
  162. data/public/images/adva-core/icons/cancel.png +0 -0
  163. data/public/images/adva-core/icons/comment.gif +0 -0
  164. data/public/images/adva-core/icons/comment.png +0 -0
  165. data/public/images/adva-core/icons/comment_add.png +0 -0
  166. data/public/images/adva-core/icons/comment_blue.gif +0 -0
  167. data/public/images/adva-core/icons/comment_delete.png +0 -0
  168. data/public/images/adva-core/icons/comment_edit.png +0 -0
  169. data/public/images/adva-core/icons/comment_yellow.gif +0 -0
  170. data/public/images/adva-core/icons/cross.png +0 -0
  171. data/public/images/adva-core/icons/delete.png +0 -0
  172. data/public/images/adva-core/icons/eye.png +0 -0
  173. data/public/images/adva-core/icons/favorites.png +0 -0
  174. data/public/images/adva-core/icons/help.png +0 -0
  175. data/public/images/adva-core/icons/hourglass.png +0 -0
  176. data/public/images/adva-core/icons/icon_attachment.gif +0 -0
  177. data/public/images/adva-core/icons/icon_padlock.gif +0 -0
  178. data/public/images/adva-core/icons/link.png +0 -0
  179. data/public/images/adva-core/icons/lock.png +0 -0
  180. data/public/images/adva-core/icons/magnifier.png +0 -0
  181. data/public/images/adva-core/icons/minus.gif +0 -0
  182. data/public/images/adva-core/icons/page_add.png +0 -0
  183. data/public/images/adva-core/icons/page_delete.png +0 -0
  184. data/public/images/adva-core/icons/page_edit.png +0 -0
  185. data/public/images/adva-core/icons/page_favorites.png +0 -0
  186. data/public/images/adva-core/icons/page_go.png +0 -0
  187. data/public/images/adva-core/icons/page_green.png +0 -0
  188. data/public/images/adva-core/icons/page_red.png +0 -0
  189. data/public/images/adva-core/icons/page_white_add.png +0 -0
  190. data/public/images/adva-core/icons/page_white_delete.png +0 -0
  191. data/public/images/adva-core/icons/page_white_edit.png +0 -0
  192. data/public/images/adva-core/icons/page_white_go.png +0 -0
  193. data/public/images/adva-core/icons/page_white_link.png +0 -0
  194. data/public/images/adva-core/icons/page_white_magnify.png +0 -0
  195. data/public/images/adva-core/icons/pencil.png +0 -0
  196. data/public/images/adva-core/icons/star.png +0 -0
  197. data/public/images/adva-core/icons/stop.png +0 -0
  198. data/public/images/adva-core/icons/tag_green.png +0 -0
  199. data/public/images/adva-core/icons/tick.png +0 -0
  200. data/public/images/adva-core/icons/zoom.png +0 -0
  201. data/public/images/adva-core/indicator.gif +0 -0
  202. data/public/images/adva-core/lines.png +0 -0
  203. data/public/images/adva-core/preview.png +0 -0
  204. data/public/images/adva-core/theme_selected.png +0 -0
  205. data/public/javascripts/adva-core/admin.js +22 -0
  206. data/public/javascripts/adva-core/jquery/jquery-1.4.2.min.js +154 -0
  207. data/public/javascripts/adva-core/jquery/jquery.table_tree.js +296 -0
  208. data/public/javascripts/adva-core/jquery/jquery.tablednd_0_5.js +385 -0
  209. data/public/javascripts/adva-core/rails.js +127 -0
  210. data/public/javascripts/backup/admin/jquery.admin.js +75 -0
  211. data/public/javascripts/backup/admin/jquery.article.js +22 -0
  212. data/public/javascripts/backup/admin/jquery.cached_pages.js +14 -0
  213. data/public/javascripts/backup/admin/jquery.table_tree.backup.js +279 -0
  214. data/public/javascripts/backup/admin/jquery.table_tree.js +10 -0
  215. data/public/javascripts/backup/application.js +38 -0
  216. data/public/javascripts/backup/application.prototype.js +135 -0
  217. data/public/javascripts/backup/builder.js +136 -0
  218. data/public/javascripts/backup/controls.js +965 -0
  219. data/public/javascripts/backup/cookie.js +49 -0
  220. data/public/javascripts/backup/dragdrop.js +975 -0
  221. data/public/javascripts/backup/effects.js +1130 -0
  222. data/public/javascripts/backup/flash.js +49 -0
  223. data/public/javascripts/backup/jquery.dates.js +49 -0
  224. data/public/javascripts/backup/jquery.flash.js +40 -0
  225. data/public/javascripts/backup/jquery.roles.js +23 -0
  226. data/public/javascripts/backup/jquery/jquery-lowpro.js +224 -0
  227. data/public/javascripts/backup/jquery/jquery-ui.js +273 -0
  228. data/public/javascripts/backup/jquery/jquery.js +19 -0
  229. data/public/javascripts/backup/jquery/jquery.qtip.min.js +15 -0
  230. data/public/javascripts/backup/json.js +139 -0
  231. data/public/javascripts/backup/lowpro.js +320 -0
  232. data/public/javascripts/backup/parseuri.js +39 -0
  233. data/public/javascripts/backup/prototype.js +4320 -0
  234. data/public/javascripts/backup/roles.js +16 -0
  235. data/public/javascripts/backup/scriptaculous.js +60 -0
  236. data/public/javascripts/backup/slider.js +275 -0
  237. data/public/javascripts/backup/sound.js +55 -0
  238. data/public/javascripts/backup/unittest.js +568 -0
  239. data/public/stylesheets/adva-core/admin/forms.css +172 -0
  240. data/public/stylesheets/adva-core/admin/layout.css +38 -0
  241. data/public/stylesheets/adva-core/admin/lists.css +54 -0
  242. data/public/stylesheets/adva-core/admin/navigation.css +234 -0
  243. data/public/stylesheets/adva-core/admin/sidebar.css +87 -0
  244. data/public/stylesheets/adva-core/admin/styles.css +130 -0
  245. data/public/stylesheets/adva-core/common/forms.css +174 -0
  246. data/public/stylesheets/adva-core/common/layout.css +93 -0
  247. data/public/stylesheets/adva-core/common/reset.css +42 -0
  248. data/public/stylesheets/adva-core/common/styles.css +41 -0
  249. data/public/stylesheets/adva-core/default/layout.css +0 -0
  250. data/public/stylesheets/adva-core/default/styles.css +0 -0
  251. data/public/stylesheets/adva-core/simple/layout.css +11 -0
  252. data/public/stylesheets/backup/alternate/common.css +76 -0
  253. data/public/stylesheets/backup/alternate/forms.css +121 -0
  254. data/public/stylesheets/backup/alternate/header.css +125 -0
  255. data/public/stylesheets/backup/alternate/layout.css +103 -0
  256. data/public/stylesheets/backup/alternate/lists.css +153 -0
  257. data/public/stylesheets/backup/alternate/sidebar.css +65 -0
  258. data/public/stylesheets/backup/alternate/top.css +123 -0
  259. data/public/stylesheets/backup/content.css +11 -0
  260. data/public/stylesheets/backup/helptip.css +35 -0
  261. data/public/stylesheets/backup/jquery/alternate/jquery.tooltip.css +13 -0
  262. data/public/stylesheets/backup/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  263. data/public/stylesheets/backup/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  264. data/public/stylesheets/backup/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  265. data/public/stylesheets/backup/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  266. data/public/stylesheets/backup/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  267. data/public/stylesheets/backup/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  268. data/public/stylesheets/backup/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  269. data/public/stylesheets/backup/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  270. data/public/stylesheets/backup/jquery/images/ui-icons_222222_256x240.png +0 -0
  271. data/public/stylesheets/backup/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
  272. data/public/stylesheets/backup/jquery/images/ui-icons_454545_256x240.png +0 -0
  273. data/public/stylesheets/backup/jquery/images/ui-icons_888888_256x240.png +0 -0
  274. data/public/stylesheets/backup/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
  275. data/public/stylesheets/backup/jquery/jquery-ui.css +405 -0
  276. data/public/stylesheets/backup/jquery/jquery.tooltip.css +10 -0
  277. data/public/stylesheets/backup/layout.css +22 -0
  278. data/public/stylesheets/backup/lists.css +17 -0
  279. data/public/stylesheets/backup/menu.css +129 -0
  280. data/public/stylesheets/backup/projection.css +118 -0
  281. data/public/stylesheets/backup/screen/top.css +8 -0
  282. data/public/stylesheets/backup/themes.css +49 -0
  283. data/public/stylesheets/backup/users.css +40 -0
  284. metadata +338 -40
  285. data/lib/bundler/repository.rb +0 -118
@@ -0,0 +1,26 @@
1
+ # Internally redirects a request to another controller. This is used by the
2
+ # abstract_actions module.
3
+
4
+ module Adva
5
+ module Controller
6
+ module InternalRedirect
7
+ def internal_redirect_to(target, params = nil)
8
+ action, controller = target.split('#').reverse
9
+ controller ||= controller_path
10
+
11
+ params ||= self.params
12
+ params.merge!(:controller => controller, :action => action)
13
+ params = yield(params) if block_given?
14
+
15
+ rack_endpoint = "#{controller}_controller".classify.constantize.action(action)
16
+ env['action_dispatch.request.parameters'] = params
17
+ response = rack_endpoint.call(env)
18
+
19
+ self.status, self.headers, self.response_body = response
20
+ @_response.headers.replace(response[1])
21
+
22
+ response
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ require 'action_controller'
2
+
3
+ begin
4
+ require 'reference_tracking'
5
+ rescue LoadError
6
+ end
7
+
8
+ # Stub methods for ReferenceTracking. Will only be used if ReferenceTracking
9
+ # (which is only required by adva-cache) is not available.
10
+
11
+ module Adva
12
+ module Controller
13
+ module References
14
+ module Stubs
15
+ def self.included(base)
16
+ base.class_eval do
17
+ def self.tracks(*); end
18
+ def self.purges(*); end
19
+ end
20
+ end
21
+ def purge?(*); end
22
+ end
23
+
24
+ ActionController::Base.send(:include, Stubs) unless defined?(ReferenceTracking)
25
+ end
26
+ end
27
+ end
28
+
data/lib/adva/core.rb ADDED
@@ -0,0 +1,94 @@
1
+ require 'rails'
2
+ require 'rails/engine'
3
+ require 'active_support/slices'
4
+ require 'adva'
5
+
6
+ require 'simple_form'
7
+ require 'simple_slugs'
8
+ require 'simple_nested_set'
9
+ require 'simple_table'
10
+ require 'simple_slugs'
11
+ require 'has_many_polymorphs'
12
+ require 'minimal'
13
+ require 'i18n/missing_translations'
14
+ require 'silence_log_tailer'
15
+
16
+ require 'adva/routing_filters/section_path'
17
+ require 'adva/routing_filters/section_root'
18
+ require 'adva/controller/abstract_actions'
19
+ require 'adva/controller/references'
20
+ require 'adva/active_record/has_one_default'
21
+ require 'adva/active_record/has_options'
22
+ require 'adva/view/form'
23
+ require 'adva/view/helper/i18n'
24
+ require 'adva/view/tabs'
25
+
26
+ require 'core_ext/ruby/module/include_anonymous'
27
+ require 'core_ext/rails/action_view/has_many_through_collection_helpers'
28
+ require 'core_ext/rails/active_record/skip_callbacks'
29
+
30
+ at_exit { I18n.missing_translations.dump } if Rails.env.test?
31
+
32
+ module Adva
33
+ class Core < ::Rails::Engine
34
+ include Adva::Engine
35
+
36
+ initializer 'adva-core.register_middlewares.static' do
37
+ config.app_middleware.insert_before('Rack::Lock', Adva::Rack::Static)
38
+ end
39
+
40
+ initializer 'adva-core.register_middlewares.log_missing_translations' do
41
+ config.app_middleware.use(I18n::MissingTranslations) if Rails.env.development?
42
+ end
43
+
44
+ initializer 'adva-core.require_section_types' do
45
+ config.to_prepare { require_dependency 'page' }
46
+ end
47
+
48
+ initializer 'adva-core.setup_minimal' do
49
+ require 'inherited_resources/helpers'
50
+
51
+ Minimal::Template::FormBuilderProxy::PROXY_TAGS << :simple_form_for << :simple_fields_for
52
+ Minimal::Template.class_eval do
53
+ include Minimal::Template::FormBuilderProxy
54
+ include Minimal::Template::TranslatedTags
55
+ include InheritedResources::Helpers::LinkTo
56
+ include FormHelper
57
+ end
58
+ ActionView::Template.register_template_handler('rb', Minimal::Template::Handler)
59
+ end
60
+
61
+ initializer 'adva-core.register_asset_expansions' do
62
+ ActionView::Helpers::AssetTagHelper.register_javascript_expansion(
63
+ :common => %w(),
64
+ :simple => %w(),
65
+ :default => %w(),
66
+ :admin => %w( adva-core/jquery/jquery-1.4.2.min.js
67
+ adva-core/jquery/jquery.tablednd_0_5.js
68
+ adva-core/jquery/jquery.table_tree.js
69
+ adva-core/rails
70
+ adva-core/admin )
71
+ )
72
+
73
+ ActionView::Helpers::AssetTagHelper.register_stylesheet_expansion(
74
+ :common => %w( adva-core/common/reset
75
+ adva-core/common/layout
76
+ adva-core/common/styles
77
+ adva-core/common/forms ),
78
+
79
+ :simple => %w( adva-core/simple/layout ),
80
+
81
+ :default => %w( adva-core/default/layout
82
+ adva-core/default/styles ),
83
+
84
+ :admin => %w( adva-core/common/reset
85
+ adva-core/admin/layout
86
+ adva-core/admin/navigation
87
+ adva-core/admin/sidebar
88
+ adva-core/admin/styles
89
+ adva-core/admin/forms
90
+ adva-core/admin/lists )
91
+ )
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,44 @@
1
+ # Common behaviour that we want included in all adva engines
2
+
3
+ module Adva
4
+ module Engine
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ config.autoload_paths << paths.app.views.to_a.first
9
+ paths.lib.tasks = Dir[root.join('lib/adva/tasks/*.*')]
10
+
11
+ engine_name = name.underscore.split('/').last
12
+
13
+ initializer "adva-#{engine_name}.require_patches" do |app|
14
+ require_patches
15
+ end
16
+
17
+ initializer "adva-#{engine_name}.load_redirects" do |app|
18
+ load_redirects
19
+ end
20
+ end
21
+
22
+ module InstanceMethods
23
+ def require_patches
24
+ Dir[root.join('lib/patches/**/*.rb')].each { |patch| require patch }
25
+ end
26
+
27
+ def load_redirects
28
+ begin
29
+ load root.join('config/redirects.rb')
30
+ rescue LoadError
31
+ end
32
+ end
33
+
34
+ def copy_migrations
35
+ Dir[root.join('db/migrate/*')].map do |source|
36
+ target = File.expand_path(source.gsub(root.to_s, '.'))
37
+ FileUtils.mkdir_p(File.dirname(target))
38
+ FileUtils.cp(source, target)
39
+ target
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,8 @@
1
+ module Adva
2
+ module Generators
3
+ autoload :App, 'adva/generators/app'
4
+ autoload :Engine, 'adva/generators/engine'
5
+ autoload :Gemfile, 'adva/generators/gemfile'
6
+ autoload :Install, 'adva/generators/install'
7
+ end
8
+ end
@@ -0,0 +1,121 @@
1
+ STDOUT.sync = true
2
+
3
+ require 'fileutils'
4
+ require 'active_record'
5
+ require 'active_support/core_ext/hash/reverse_merge'
6
+ require 'rails/generators'
7
+ require 'rails/generators/rails/app/app_generator'
8
+ require 'core_ext/ruby/module/option_reader'
9
+
10
+ module Adva
11
+ module Generators
12
+ class App
13
+ DEFAULT_OPTIONS = {
14
+ :source => File.expand_path('../../../../..', __FILE__),
15
+ :target => File.expand_path('.'),
16
+ :template => File.expand_path('../templates/app/app_template.rb', __FILE__),
17
+ :engines => [:all],
18
+ :resources => false,
19
+ :migrate => false,
20
+ :bundle => false,
21
+ :force => false
22
+ }
23
+
24
+ def initialize(name, options = {}, &block)
25
+ @options = options.reverse_merge!(DEFAULT_OPTIONS)
26
+ @name = name || File.basename(source)
27
+ raise ArgumentError, "#{source.inspect} is not a directory" unless File.directory?(source)
28
+ end
29
+
30
+ def invoke
31
+ if force? || build?
32
+ build
33
+ generate_resources if generate_resources?
34
+ bundle if bundle?
35
+ load_environment if block_given? || migrate?
36
+ exec(&block) if block_given?
37
+ install
38
+ migrate if migrate?
39
+ else
40
+ load_environment
41
+ end
42
+ end
43
+
44
+ protected
45
+
46
+ attr_reader :name
47
+ option_reader :source, :target, :template, :engines, :resources, :migrate, :bundle, :force
48
+
49
+ def root
50
+ "#{target}/#{name}"
51
+ end
52
+
53
+ def build
54
+ puts "Building application ..."
55
+ FileUtils.rm_r(root) if File.exists?(root)
56
+ in_root do
57
+ options = force? || ENV.key?('REGENERATE_APP') ? ['-f'] : []
58
+ generator = Rails::Generators::AppGenerator.new([root], options, :shell => shell)
59
+ generator.invoke_all
60
+ generator.apply(template, :source => Pathname.new(source))
61
+ FileUtils.cp("#{source}/Thorfile", "#{root}/Thorfile")
62
+ end
63
+ end
64
+
65
+ def install
66
+ puts "Installing adva engines ..."
67
+ in_root { Adva::Generators::Install.new(engines).invoke }
68
+ end
69
+
70
+ def migrate
71
+ puts "Migrating database ..."
72
+ in_root { ActiveRecord::Migrator.migrate('db/migrate/') }
73
+ end
74
+
75
+ def bundle
76
+ puts "Bundling gems ..."
77
+ in_root { run 'bundle install' }
78
+ end
79
+
80
+ def load_environment
81
+ puts "Loading environment ..."
82
+ in_root { require "config/environment" }
83
+ end
84
+
85
+ def generate_resources
86
+ puts "Generating resources ..."
87
+ FileUtils.cp(resources, "#{root}/config/resource_layout.rb")
88
+ run "rails generate resource_layout --generator=ingoweiss:scaffold"
89
+ end
90
+
91
+ def exec(&block)
92
+ in_root { self.instance_exec(&block) }
93
+ end
94
+
95
+ def build?
96
+ ENV.key?('REGENERATE_APP') || !exists?
97
+ end
98
+
99
+ def generate_resources?
100
+ resources && File.exists?(resources)
101
+ end
102
+
103
+ def exists?
104
+ File.exists?(root)
105
+ end
106
+
107
+ def in_root(&block)
108
+ FileUtils.mkdir_p(root) unless File.directory?(root)
109
+ Dir.chdir(root) { yield }
110
+ end
111
+
112
+ def run(command, &block)
113
+ in_root { system "#{command}" }
114
+ end
115
+
116
+ def shell
117
+ Thor::Shell::Color.new
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,58 @@
1
+ require 'rails/generators'
2
+
3
+ module Adva
4
+ module Generators
5
+ class Engine < Rails::Generators::Base
6
+ source_root File.expand_path('../templates/engine', __FILE__)
7
+
8
+ attr_reader :name
9
+
10
+ def initialize(name, options = {})
11
+ @name = name
12
+ super()
13
+ end
14
+
15
+ def build
16
+ empty_directory "adva-#{name}"
17
+ template "gemspec.erb", "adva-#{name}/adva-#{name}.gemspec"
18
+ template 'Gemfile.erb', "adva-#{name}/Gemfile"
19
+
20
+ empty_directory "adva-#{name}/app"
21
+ empty_directory "adva-#{name}/app/controllers"
22
+ empty_directory "adva-#{name}/app/models"
23
+ empty_directory "adva-#{name}/app/views"
24
+
25
+ empty_directory "adva-#{name}/config"
26
+ empty_directory "adva-#{name}/config/locales"
27
+ template 'en.yml.erb', "adva-#{name}/config/locales/en.yml"
28
+ template 'redirects.rb.erb', "adva-#{name}/config/redirects.rb"
29
+ template 'routes.rb.erb', "adva-#{name}/config/routes.rb"
30
+
31
+ empty_directory "adva-#{name}/db/migrate"
32
+ template 'migration.rb.erb', "adva-#{name}/db/migrate/#{migration_timestamp}_adva_#{name}_create_tables.rb"
33
+
34
+ empty_directory "adva-#{name}/lib/adva"
35
+ create_file "adva-#{name}/lib/adva-#{name}.rb", "require 'adva/#{name}'"
36
+ template 'engine.rb.erb', "adva-#{name}/lib/adva/#{name}.rb"
37
+
38
+ empty_directory "adva-#{name}/test"
39
+ template 'all.rb', "adva-#{name}/test/all.rb"
40
+ template 'test_helper.rb.erb', "adva-#{name}/test/test_helper.rb"
41
+ end
42
+
43
+ protected
44
+
45
+ def migration_timestamp
46
+ Time.now.strftime('%Y%m%d%H%M%S')
47
+ end
48
+
49
+ def table_name
50
+ name.tableize
51
+ end
52
+
53
+ def class_name
54
+ name.camelize
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,50 @@
1
+ module Adva
2
+ module Generators
3
+ class Gemfile
4
+ attr_reader :source, :target, :engines
5
+
6
+ def initialize(target, options = {})
7
+ self.engines = options[:engines]
8
+ @target = Pathname.new(target)
9
+ @source = options[:source] || raise('no source given') # TODO [cli] should bubble up to find the current Gemfile
10
+ @engines = engines
11
+ end
12
+
13
+ def write
14
+ File.open(target, 'w+') { |f| f.write(with_engines) }
15
+ end
16
+
17
+ protected
18
+
19
+ def engines=(engines)
20
+ engines = engine_names if engines.blank? || Array(engines).include?(:all)
21
+ engines.unshift(:core) unless engines.include?(:core)
22
+ @engines = engines.map(&:to_sym).uniq
23
+ end
24
+
25
+ def with_engines
26
+ lines.join.sub(adva_gem_lines.join, engine_lines.join("\n"))
27
+ end
28
+
29
+ def engine_lines
30
+ engines.map { |engine| engine_line(engine) }
31
+ end
32
+
33
+ def engine_line(engine)
34
+ "gem 'adva-#{engine}', :path => '#{File.expand_path("../adva-#{engine}", source)}'"
35
+ end
36
+
37
+ def engine_names
38
+ Adva.engines.map { |engine| engine.name.demodulize.underscore.to_sym }
39
+ end
40
+
41
+ def adva_gem_lines
42
+ @adva_gem_lines ||= lines.select { |line| line =~ /gem ("|')adva-/ }
43
+ end
44
+
45
+ def lines
46
+ @lines ||= File.readlines(source)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,31 @@
1
+ module Adva
2
+ module Generators
3
+ class Install
4
+ include Thor::Shell
5
+
6
+ attr_reader :engines
7
+
8
+ def initialize(engines)
9
+ self.engines = engines
10
+ end
11
+
12
+ def invoke
13
+ engines.each do |engine|
14
+ engine.new.copy_migrations.each do |path|
15
+ say_status('copy migration', File.basename(path), :green)
16
+ end
17
+ end
18
+ end
19
+
20
+ protected
21
+
22
+ def engines=(engines)
23
+ engines = Array(engines)
24
+ engines = Adva.engines if engines.blank? || engines.include?(:all)
25
+ engines = engines.map { |engine| engine.is_a?(Class) ? engine : Adva.const_get(engine.to_s.classify) }
26
+ engines.unshift(Adva::Core) unless engines.include?(Adva::Core)
27
+ @engines = engines.uniq
28
+ end
29
+ end
30
+ end
31
+ end