adva-core 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. data/app/controllers/admin/base_controller.rb +21 -0
  2. data/app/controllers/admin/pages_controller.rb +9 -0
  3. data/app/controllers/admin/sections_controller.rb +36 -0
  4. data/app/controllers/admin/sites_controller.rb +18 -0
  5. data/app/controllers/articles_controller.rb +3 -0
  6. data/app/controllers/base_controller.rb +22 -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 +17 -0
  17. data/app/models/section.rb +59 -0
  18. data/app/models/site.rb +26 -0
  19. data/app/views/admin/pages/_menu.html.rb +30 -0
  20. data/app/views/admin/pages/new.html.rb +19 -0
  21. data/app/views/admin/pages/show.html.rb +25 -0
  22. data/app/views/admin/sections/_menu.html.rb +12 -0
  23. data/app/views/admin/sections/_section.html.rb +7 -0
  24. data/app/views/admin/sections/_select_type.html.rb +16 -0
  25. data/app/views/admin/sections/index.html.rb +28 -0
  26. data/app/views/admin/sites/_menu.html.rb +6 -0
  27. data/app/views/admin/sites/edit.html.rb +22 -0
  28. data/app/views/admin/sites/index.html.rb +12 -0
  29. data/app/views/admin/sites/new.html.rb +39 -0
  30. data/app/views/admin/sites/show.html.rb +7 -0
  31. data/app/views/installations/new.html.rb +39 -0
  32. data/app/views/installations/show.html.rb +9 -0
  33. data/app/views/layouts/_flash.html.rb +9 -0
  34. data/app/views/layouts/admin.rb +38 -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 +56 -0
  38. data/app/views/layouts/base.rb +58 -0
  39. data/app/views/layouts/default.rb +31 -0
  40. data/app/views/layouts/default/_menu.rb +24 -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 +137 -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 +37 -0
  49. data/lib/adva/active_record/has_options.rb +55 -0
  50. data/lib/adva/cli.rb +16 -0
  51. data/lib/adva/controller.rb +7 -0
  52. data/lib/adva/controller/abstract_actions.rb +87 -0
  53. data/lib/adva/controller/internal_redirect.rb +26 -0
  54. data/lib/adva/controller/references.rb +28 -0
  55. data/lib/adva/core.rb +84 -0
  56. data/lib/adva/engine.rb +64 -0
  57. data/lib/adva/engine/sliced_models.rb +35 -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 +57 -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/menu.rb +51 -0
  88. data/lib/adva/view/menu/admin.rb +48 -0
  89. data/lib/adva/view/tabs.rb +28 -0
  90. data/lib/core_ext/rails/action_view/has_many_through_collection_helpers.rb +27 -0
  91. data/lib/core_ext/rails/active_record/skip_callbacks.rb +51 -0
  92. data/lib/core_ext/ruby/array/flatten_once.rb +9 -0
  93. data/lib/core_ext/ruby/kernel/silence_stream.rb +17 -0
  94. data/lib/core_ext/ruby/module/include_anonymous.rb +36 -0
  95. data/lib/core_ext/ruby/module/option_reader.rb +9 -0
  96. data/lib/patches/arel/table_initialization_fixes.rb +68 -0
  97. data/lib/patches/inherited_resources.rb +34 -0
  98. data/lib/patches/rails/arel_table_options_fix.rb +13 -0
  99. data/lib/patches/rails/asset_expansion_multiple_registrations.rb +21 -0
  100. data/lib/patches/rails/recognize_path_env.rb +43 -0
  101. data/lib/patches/rails/route_set_to_param.rb +25 -0
  102. data/lib/patches/rails/sti_associations.rb +17 -0
  103. data/lib/patches/rails/template_resolver_caching.rb +9 -0
  104. data/lib/patches/rails/url_for.rb +60 -0
  105. data/lib/patches/simple_form.rb +37 -0
  106. data/lib/patches/thor/core_ext/hash.rb +7 -0
  107. data/lib/patches/thor/group/symbolized_options.rb +8 -0
  108. data/lib/patches/webrat/links-data-method.rb +19 -0
  109. data/lib/patches/webrat/logger.rb +19 -0
  110. data/lib/patches/webrat/upload_file.rb +28 -0
  111. data/lib/testing/assertions.rb +19 -0
  112. data/lib/testing/factories.rb +30 -0
  113. data/lib/testing/helpers/global_helpers.rb +9 -0
  114. data/lib/testing/paths.rb +54 -0
  115. data/lib/testing/step_definitions/common_steps.rb +279 -0
  116. data/lib/testing/step_definitions/menu_steps.rb +11 -0
  117. data/lib/testing/step_definitions/routes_steps.rb +18 -0
  118. data/lib/testing/step_definitions/transforms.rb +43 -0
  119. data/lib/testing/step_definitions/webrat_steps.rb +291 -0
  120. data/lib/testing/step_definitions/within_steps.rb +17 -0
  121. data/lib/webrat/integrations/rails.rb +33 -0
  122. data/public/images/adva-core/admin/header_bg.png +0 -0
  123. data/public/images/adva-core/admin/menu_checkmark.png +0 -0
  124. data/public/images/adva-core/admin/section_menu_bg.png +0 -0
  125. data/public/images/adva-core/admin/tab_action_active.png +0 -0
  126. data/public/images/adva-core/admin/tab_main_active.png +0 -0
  127. data/public/images/adva-core/admin/tab_sidebar_active.png +0 -0
  128. data/public/images/adva-core/admin/tab_top_active.png +0 -0
  129. data/public/images/adva-core/asset_selected.png +0 -0
  130. data/public/images/adva-core/avatar.gif +0 -0
  131. data/public/images/adva-core/feed.mini.png +0 -0
  132. data/public/images/adva-core/filter-bg.png +0 -0
  133. data/public/images/adva-core/grid.png +0 -0
  134. data/public/images/adva-core/icons/accept.png +0 -0
  135. data/public/images/adva-core/icons/add.png +0 -0
  136. data/public/images/adva-core/icons/arrow_cross.png +0 -0
  137. data/public/images/adva-core/icons/arrow_cross_2.png +0 -0
  138. data/public/images/adva-core/icons/arrow_cross_3.png +0 -0
  139. data/public/images/adva-core/icons/arrow_up_down.png +0 -0
  140. data/public/images/adva-core/icons/assets/audio.png +0 -0
  141. data/public/images/adva-core/icons/assets/doc.png +0 -0
  142. data/public/images/adva-core/icons/assets/pdf.png +0 -0
  143. data/public/images/adva-core/icons/assets/video.png +0 -0
  144. data/public/images/adva-core/icons/attach.png +0 -0
  145. data/public/images/adva-core/icons/bin.png +0 -0
  146. data/public/images/adva-core/icons/bin_closed.png +0 -0
  147. data/public/images/adva-core/icons/bin_empty.png +0 -0
  148. data/public/images/adva-core/icons/bullet_black.png +0 -0
  149. data/public/images/adva-core/icons/bullet_delete.png +0 -0
  150. data/public/images/adva-core/icons/bullet_error.png +0 -0
  151. data/public/images/adva-core/icons/bullet_go.png +0 -0
  152. data/public/images/adva-core/icons/bullet_red.png +0 -0
  153. data/public/images/adva-core/icons/bullet_white.png +0 -0
  154. data/public/images/adva-core/icons/bullet_yellow.png +0 -0
  155. data/public/images/adva-core/icons/cancel.png +0 -0
  156. data/public/images/adva-core/icons/comment.gif +0 -0
  157. data/public/images/adva-core/icons/comment.png +0 -0
  158. data/public/images/adva-core/icons/comment_add.png +0 -0
  159. data/public/images/adva-core/icons/comment_blue.gif +0 -0
  160. data/public/images/adva-core/icons/comment_delete.png +0 -0
  161. data/public/images/adva-core/icons/comment_edit.png +0 -0
  162. data/public/images/adva-core/icons/comment_yellow.gif +0 -0
  163. data/public/images/adva-core/icons/cross.png +0 -0
  164. data/public/images/adva-core/icons/delete.png +0 -0
  165. data/public/images/adva-core/icons/eye.png +0 -0
  166. data/public/images/adva-core/icons/favorites.png +0 -0
  167. data/public/images/adva-core/icons/help.png +0 -0
  168. data/public/images/adva-core/icons/hourglass.png +0 -0
  169. data/public/images/adva-core/icons/icon_attachment.gif +0 -0
  170. data/public/images/adva-core/icons/icon_padlock.gif +0 -0
  171. data/public/images/adva-core/icons/link.png +0 -0
  172. data/public/images/adva-core/icons/lock.png +0 -0
  173. data/public/images/adva-core/icons/magnifier.png +0 -0
  174. data/public/images/adva-core/icons/minus.gif +0 -0
  175. data/public/images/adva-core/icons/page_add.png +0 -0
  176. data/public/images/adva-core/icons/page_delete.png +0 -0
  177. data/public/images/adva-core/icons/page_edit.png +0 -0
  178. data/public/images/adva-core/icons/page_favorites.png +0 -0
  179. data/public/images/adva-core/icons/page_go.png +0 -0
  180. data/public/images/adva-core/icons/page_green.png +0 -0
  181. data/public/images/adva-core/icons/page_red.png +0 -0
  182. data/public/images/adva-core/icons/page_white_add.png +0 -0
  183. data/public/images/adva-core/icons/page_white_delete.png +0 -0
  184. data/public/images/adva-core/icons/page_white_edit.png +0 -0
  185. data/public/images/adva-core/icons/page_white_go.png +0 -0
  186. data/public/images/adva-core/icons/page_white_link.png +0 -0
  187. data/public/images/adva-core/icons/page_white_magnify.png +0 -0
  188. data/public/images/adva-core/icons/pencil.png +0 -0
  189. data/public/images/adva-core/icons/star.png +0 -0
  190. data/public/images/adva-core/icons/stop.png +0 -0
  191. data/public/images/adva-core/icons/tag_green.png +0 -0
  192. data/public/images/adva-core/icons/tick.png +0 -0
  193. data/public/images/adva-core/icons/zoom.png +0 -0
  194. data/public/images/adva-core/indicator.gif +0 -0
  195. data/public/images/adva-core/lines.png +0 -0
  196. data/public/images/adva-core/preview.png +0 -0
  197. data/public/images/adva-core/rails.png +0 -0
  198. data/public/images/adva-core/sortable_tree/drag.png +0 -0
  199. data/public/images/adva-core/theme_selected.png +0 -0
  200. data/public/javascripts/adva-core/admin.js +21 -0
  201. data/public/javascripts/adva-core/jquery/jquery-1.4.2.min.js +154 -0
  202. data/public/javascripts/adva-core/jquery/jquery.table_tree.js +292 -0
  203. data/public/javascripts/adva-core/jquery/jquery.tablednd_0_5.js +386 -0
  204. data/public/javascripts/adva-core/rails.js +127 -0
  205. data/public/javascripts/backup/admin/jquery.admin.js +77 -0
  206. data/public/javascripts/backup/admin/jquery.article.js +22 -0
  207. data/public/javascripts/backup/admin/jquery.cached_pages.js +14 -0
  208. data/public/javascripts/backup/admin/jquery.table_tree.backup.js +279 -0
  209. data/public/javascripts/backup/admin/jquery.table_tree.js +10 -0
  210. data/public/javascripts/backup/application.js +38 -0
  211. data/public/javascripts/backup/application.prototype.js +135 -0
  212. data/public/javascripts/backup/builder.js +136 -0
  213. data/public/javascripts/backup/controls.js +965 -0
  214. data/public/javascripts/backup/cookie.js +49 -0
  215. data/public/javascripts/backup/dragdrop.js +975 -0
  216. data/public/javascripts/backup/effects.js +1130 -0
  217. data/public/javascripts/backup/flash.js +49 -0
  218. data/public/javascripts/backup/jquery.dates.js +49 -0
  219. data/public/javascripts/backup/jquery.flash.js +40 -0
  220. data/public/javascripts/backup/jquery.roles.js +23 -0
  221. data/public/javascripts/backup/jquery/jquery-lowpro.js +224 -0
  222. data/public/javascripts/backup/jquery/jquery-ui.js +273 -0
  223. data/public/javascripts/backup/jquery/jquery.js +19 -0
  224. data/public/javascripts/backup/jquery/jquery.qtip.min.js +15 -0
  225. data/public/javascripts/backup/json.js +139 -0
  226. data/public/javascripts/backup/lowpro.js +320 -0
  227. data/public/javascripts/backup/parseuri.js +39 -0
  228. data/public/javascripts/backup/prototype.js +4320 -0
  229. data/public/javascripts/backup/roles.js +16 -0
  230. data/public/javascripts/backup/scriptaculous.js +60 -0
  231. data/public/javascripts/backup/slider.js +275 -0
  232. data/public/javascripts/backup/sound.js +55 -0
  233. data/public/javascripts/backup/unittest.js +568 -0
  234. data/public/stylesheets/adva-core/admin/forms.css +172 -0
  235. data/public/stylesheets/adva-core/admin/layout.css +38 -0
  236. data/public/stylesheets/adva-core/admin/lists.css +54 -0
  237. data/public/stylesheets/adva-core/admin/navigation.css +234 -0
  238. data/public/stylesheets/adva-core/admin/sidebar.css +87 -0
  239. data/public/stylesheets/adva-core/admin/styles.css +128 -0
  240. data/public/stylesheets/adva-core/common/forms.css +174 -0
  241. data/public/stylesheets/adva-core/common/layout.css +93 -0
  242. data/public/stylesheets/adva-core/common/reset.css +42 -0
  243. data/public/stylesheets/adva-core/common/styles.css +41 -0
  244. data/public/stylesheets/adva-core/default/layout.css +0 -0
  245. data/public/stylesheets/adva-core/default/styles.css +30 -0
  246. data/public/stylesheets/adva-core/simple/layout.css +11 -0
  247. data/public/stylesheets/backup/alternate/common.css +76 -0
  248. data/public/stylesheets/backup/alternate/forms.css +121 -0
  249. data/public/stylesheets/backup/alternate/header.css +125 -0
  250. data/public/stylesheets/backup/alternate/layout.css +103 -0
  251. data/public/stylesheets/backup/alternate/lists.css +153 -0
  252. data/public/stylesheets/backup/alternate/sidebar.css +65 -0
  253. data/public/stylesheets/backup/alternate/top.css +123 -0
  254. data/public/stylesheets/backup/content.css +11 -0
  255. data/public/stylesheets/backup/helptip.css +35 -0
  256. data/public/stylesheets/backup/jquery/alternate/jquery.tooltip.css +13 -0
  257. data/public/stylesheets/backup/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  258. data/public/stylesheets/backup/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  259. data/public/stylesheets/backup/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  260. data/public/stylesheets/backup/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  261. data/public/stylesheets/backup/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  262. data/public/stylesheets/backup/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  263. data/public/stylesheets/backup/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  264. data/public/stylesheets/backup/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  265. data/public/stylesheets/backup/jquery/images/ui-icons_222222_256x240.png +0 -0
  266. data/public/stylesheets/backup/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
  267. data/public/stylesheets/backup/jquery/images/ui-icons_454545_256x240.png +0 -0
  268. data/public/stylesheets/backup/jquery/images/ui-icons_888888_256x240.png +0 -0
  269. data/public/stylesheets/backup/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
  270. data/public/stylesheets/backup/jquery/jquery-ui.css +406 -0
  271. data/public/stylesheets/backup/jquery/jquery.tooltip.css +10 -0
  272. data/public/stylesheets/backup/layout.css +22 -0
  273. data/public/stylesheets/backup/lists.css +17 -0
  274. data/public/stylesheets/backup/menu.css +129 -0
  275. data/public/stylesheets/backup/projection.css +118 -0
  276. data/public/stylesheets/backup/screen/top.css +8 -0
  277. data/public/stylesheets/backup/themes.css +49 -0
  278. data/public/stylesheets/backup/users.css +40 -0
  279. metadata +536 -0
@@ -0,0 +1,7 @@
1
+ class Pages::Show < Minimal::Template
2
+ include do
3
+ def to_html
4
+ self << resource.article.body.html_safe
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,53 @@
1
+ require 'simple_form'
2
+ # Use this setup block to configure all options available in SimpleForm.
3
+ SimpleForm.setup do |config|
4
+
5
+ # Components used by the form builder to generate a complete input. You can remove
6
+ # any of them, change the order, or even add your own components to the stack.
7
+ # config.components = [ :label_input, :hint, :error ]
8
+
9
+ # Default tag used on hints.
10
+ # config.hint_tag = :span
11
+
12
+ # Default tag used on errors.
13
+ # config.error_tag = :span
14
+
15
+ # Method used to tidy up errors.
16
+ # config.error_method = :first
17
+
18
+ # Default tag used for error notification helper.
19
+ # config.error_notification_tag = :p
20
+
21
+ # You can wrap all inputs in a pre-defined tag.
22
+ # config.wrapper_tag = :div
23
+
24
+ # CSS class to add to all wrapper tags.
25
+ # config.wrapper_class = :input
26
+
27
+ # CSS class to add to the wrapper if the field has errors.
28
+ # config.wrapper_error_class = :field_with_errors
29
+
30
+ # How the label text should be generated altogether with the required text.
31
+ config.label_text = lambda { |label, required| "#{label}#{required}" }
32
+
33
+ # Whether attributes are required by default (or not). Default is true.
34
+ # config.required_by_default = true
35
+
36
+ # Series of attemps to detect a default label method for collection.
37
+ # config.collection_label_methods = [ :to_label, :name, :title, :to_s ]
38
+
39
+ # Series of attemps to detect a default value method for collection.
40
+ # config.collection_value_methods = [ :id, :to_s ]
41
+
42
+ # Collection of methods to detect if a file type was given.
43
+ # config.file_methods = [ :file?, :public_filename ]
44
+
45
+ # Default priority for time_zone inputs.
46
+ # config.time_zone_priority = nil
47
+
48
+ # Default priority for country inputs.
49
+ # config.country_priority = nil
50
+
51
+ # Default size for text inputs.
52
+ # config.default_input_size = 50
53
+ end
@@ -0,0 +1,137 @@
1
+ en:
2
+ a_or_b: '%{a} or %{b}'
3
+ flash:
4
+ actions:
5
+ create:
6
+ notice: '%{resource_name} successfully created.'
7
+ alert: '%{resource_name} could not be created.'
8
+ update:
9
+ notice: '%{resource_name} successfully updated.'
10
+ alert: '%{resource_name} could not be updated.'
11
+ destroy:
12
+ notice: '%{resource_name} successfully deleted.'
13
+ alert: '%{resource_name} could not be deleted.'
14
+ installation:
15
+ protected: "Installation for %{host} is already complete. Please log in with your admin account."
16
+ confirm:
17
+ delete: 'Do you really want to delete this %{model_name}?'
18
+
19
+ installations:
20
+ new:
21
+ title: adva-cms installation
22
+ welcome: |
23
+ Welcome to the adva-cms less-than-one-minute installation process:
24
+ Just fill in a name for your site below and you're done.
25
+ Don't worry. You can always change everything later.
26
+ section_name: Section Name
27
+ show:
28
+ title: Success!
29
+ confirm: You have successfully created your site. Enjoy!
30
+ link_to_admin: "Manage your new site &raquo;"
31
+
32
+ sections:
33
+ columns:
34
+ section: Section
35
+ actions: ""
36
+
37
+ admin:
38
+ sites:
39
+ index:
40
+ title: Sites
41
+ new:
42
+ title: Create a New Site
43
+ section_name: Section Name
44
+ edit:
45
+ title: Site Settings
46
+ show:
47
+ section:
48
+ new: New Section
49
+ site:
50
+ new: New Site
51
+ sections: All Sections
52
+ menu:
53
+ new: New Site
54
+ edit: Edit
55
+ destroy: Delete
56
+ new_item: New Section
57
+ confirm_destroy: "Do you really want to delete this %{model_name}?"
58
+ sections:
59
+ index:
60
+ title: Sections
61
+ view: View
62
+ edit: Edit
63
+ destroy: Delete
64
+ published: Published
65
+ confirm_destroy: "Do you really want to delete this %{model_name}?"
66
+ new:
67
+ title: Create a New Section
68
+ show:
69
+ title: Settings
70
+ menu:
71
+ sections: Sections
72
+ new: New
73
+ reorder: Reorder
74
+ pages:
75
+ show:
76
+ title: Edit Page
77
+ new:
78
+ title: Create a New Section
79
+ menu:
80
+ sections: Sections
81
+ new: New
82
+ show: Page
83
+ view: View
84
+ destroy: Delete
85
+ confirm_destroy: "Do you really want to delete this %{model_name}?"
86
+ posts:
87
+ edit:
88
+ title: Settings
89
+
90
+ tabs:
91
+ options: Options
92
+ assets: Assets
93
+ layouts:
94
+ default:
95
+ made_with: "Made with <a href=\"http://github.com/svenfuchs/adva-cms2\">adva cms 2</a>"
96
+ admin:
97
+ top:
98
+ sites: Sites
99
+ new_site: New Site
100
+ site: Overview
101
+ sections: Sections
102
+ new_section: New Section
103
+ settings: Settings
104
+ assets: Assets
105
+ header:
106
+ sign_in: "Sign in"
107
+ sign_out: "Sign out %{user}"
108
+ change_language: "Change language:"
109
+ website: "Website »"
110
+
111
+ section:
112
+ types:
113
+ page: Page
114
+ default_name: Home
115
+
116
+ simple_form:
117
+ "yes": 'Yes'
118
+ "no": 'No'
119
+ required:
120
+ text: required
121
+ mark: '*'
122
+ # You can uncomment the line below if you need to overwrite the whole required html.
123
+ # When using html, text and mark won't be used.
124
+ # html: '<abbr title="required">*</abbr>'
125
+ error_notification:
126
+ default_message: "Some errors were found, please take a look:"
127
+ # Labels and hints examples
128
+ # labels:
129
+ # password: 'Password'
130
+ # user:
131
+ # new:
132
+ # email: 'E-mail para efetuar o sign in.'
133
+ # edit:
134
+ # email: 'E-mail.'
135
+ # hints:
136
+ # username: 'User name to sign in.'
137
+ # password: 'No special characters, please.'
@@ -0,0 +1,8 @@
1
+ Adva::Registry.set :redirect, {
2
+ 'installations#create' => lambda { |c| c.installation_url(c.resource) },
3
+ 'articles#show' => lambda { |c| c.show_parent_url },
4
+
5
+ 'admin/sites#update' => lambda { |c| c.edit_url },
6
+ 'admin/pages#update' => lambda { |c| c.show_url },
7
+ 'admin/pages#destroy' => lambda { |c| c.index_url }
8
+ }
@@ -0,0 +1,21 @@
1
+ require 'routing_filter'
2
+ require 'adva/routing_filters/section_root'
3
+ require 'adva/routing_filters/section_path'
4
+
5
+ Rails.application.routes.draw do
6
+ filter :section_path, :section_root
7
+
8
+ namespace :admin do
9
+ resources :sites do
10
+ resources :sections, :only => [:index, :new, :create]
11
+ resources :pages
12
+ end
13
+ end
14
+
15
+ match 'pages/:id', :to => 'pages#show', :as => :page
16
+ match 'pages/:page_id/article', :to => 'articles#show', :as => :page_article
17
+
18
+ resources :installations, :only => [:new, :create, :show]
19
+
20
+ root :to => redirect('/installations/new') # should only match if no root section is present
21
+ end
@@ -0,0 +1 @@
1
+ require 'adva/core'
@@ -0,0 +1,37 @@
1
+ require 'rails/engine'
2
+
3
+ module Adva
4
+ autoload :Engine, 'adva/engine'
5
+ autoload :Generators, 'adva/generators'
6
+ autoload :Rack, 'adva/rack'
7
+ autoload :Registry, 'adva/registry'
8
+ autoload :Responder, 'adva/responder'
9
+ autoload :Tasks, 'adva/tasks/core'
10
+ autoload :Testing, 'adva/testing'
11
+ autoload :View, 'adva/view'
12
+
13
+ mattr_accessor :out
14
+ self.out = $stdout
15
+
16
+ class << self
17
+ def engines
18
+ @engines ||= constants.map do |name|
19
+ constant = const_get(name)
20
+ constant if constant != Adva::Core && constant.is_a?(Class) && constant < ::Rails::Engine
21
+ end.compact.sort { |lft, rgt| lft.name <=> rgt.name }.unshift(Adva::Core)
22
+ end
23
+
24
+ def engine(name)
25
+ name = "Adva::#{name.camelize}" unless name.to_s.starts_with?('Adva::')
26
+ engines.detect { |engine| engine.name == name }
27
+ end
28
+
29
+ def engine_names
30
+ @engine_names ||= engines.map { |constant| constant.name.split('::').last.underscore.to_sym }
31
+ end
32
+
33
+ def engine?(name)
34
+ engine_names.include?(name)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,55 @@
1
+ module HasOptions
2
+ def has_option(*names)
3
+ unless respond_to?(:option_definitions)
4
+ include InstanceMethods
5
+ cattr_accessor :option_definitions
6
+ self.option_definitions ||= {}
7
+ serialize :options
8
+ end
9
+
10
+ definition = names.extract_options!
11
+ names.map(&:to_sym).each do |name|
12
+ self.option_definitions[name] = definition
13
+
14
+ class_eval <<-rb, __FILE__, __LINE__
15
+ def #{name}
16
+ self.options ||= {}
17
+ options.key?(:#{name}) ? options[:#{name}] : option_default(:#{name})
18
+ end
19
+ # alias #{name}_before_type_cast #{name}
20
+
21
+ def #{name}=(value)
22
+ options_will_change!
23
+ self.options ||= {}
24
+ options[:#{name}] = option_type_cast(:#{name}, value)
25
+ end
26
+ rb
27
+ end
28
+ end
29
+
30
+ module InstanceMethods
31
+ OPTION_DEFAULTS = { :default => nil, :type => :string }
32
+
33
+ [:type, :default].each do |reader|
34
+ define_method(:"option_#{reader}") do |name|
35
+ self.class.option_definitions[name].key?(reader) ? self.class.option_definitions[name][reader] : OPTION_DEFAULTS[reader]
36
+ end
37
+ end
38
+
39
+ define_method :option_type_cast do |name, value|
40
+ return nil if value.nil?
41
+ case option_type(name)
42
+ when :string then value.to_s
43
+ when :integer then value.to_i rescue value ? 1 : 0
44
+ when :float then value.to_f
45
+ when :datetime then ActiveRecord::ConnectionAdapters::Column.string_to_time(value)
46
+ when :time then ActiveRecord::ConnectionAdapters::Column.string_to_dummy_time(value)
47
+ when :date then ActiveRecord::ConnectionAdapters::Column.string_to_date(value)
48
+ when :boolean then ActiveRecord::ConnectionAdapters::Column.value_to_boolean(value)
49
+ else value
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ ActiveRecord::Base.extend(HasOptions)
@@ -0,0 +1,16 @@
1
+ # TODO, needs to use the local Gemfile if we're in an app
2
+ ENV['BUNDLE_GEMFILE'] = File.expand_path('../../../../Gemfile', __FILE__)
3
+
4
+ require 'rubygems'
5
+ require 'bundler/setup'
6
+ Bundler.require(:default)
7
+
8
+ Adva.engines.each { |engine| engine.new.load_tasks }
9
+
10
+ if task = Thor::Util.find_by_namespace("adva:#{ARGV.first}")
11
+ ARGV.shift
12
+ else
13
+ task = Thor::Util.find_by_namespace("adva:app")
14
+ end
15
+
16
+ task.start
@@ -0,0 +1,7 @@
1
+ module Adva
2
+ module Controller
3
+ autoload :AbstractActions, 'adva/controller/abstract_actions'
4
+ autoload :References, 'adva/controller/references'
5
+ autoload :InternalRedirect, 'adva/controller/internal_redirect'
6
+ end
7
+ end
@@ -0,0 +1,87 @@
1
+ require 'action_controller'
2
+
3
+ # abstract_actions makes a base controller transparently use a concrete controller
4
+ # for certain actions. E.g. with an sti base model like Section and concrete model
5
+ # like Page if the route points to the SectionsController it still will use a
6
+ # PagesController if the current resource is a Page.
7
+
8
+ module Adva
9
+ module Controller
10
+ module AbstractActions
11
+ module ActMacro
12
+ def abstract_actions(options = {})
13
+ unless abstract_actions?
14
+ include InternalRedirect
15
+ include InstanceMethods
16
+
17
+ class_inheritable_accessor :abstract_action_options
18
+ self.abstract_action_options = options.reverse_merge(:except => [])
19
+
20
+ before_filter :internal_redirect
21
+ end
22
+ end
23
+
24
+ def abstract_actions?
25
+ included_modules.include?(InstanceMethods)
26
+ end
27
+ end
28
+
29
+ module InstanceMethods
30
+ def internal_redirect
31
+ if redirect_to_concretion?
32
+ internal_redirect_to_concretion
33
+ elsif redirect_to_abstraction?
34
+ internal_redirect_to_abstraction
35
+ end
36
+ end
37
+
38
+ protected
39
+
40
+ def redirect_to_abstraction?
41
+ concrete_controller? && !concrete_action?
42
+ end
43
+
44
+ def redirect_to_concretion?
45
+ !concrete_controller? && concrete_action?
46
+ end
47
+
48
+ def internal_redirect_to_abstraction
49
+ params[abstract_instance_name] = params.delete(instance_name)
50
+ internal_redirect_to("#{abstract_controller_class.controller_path}##{params[:action]}")
51
+ end
52
+
53
+ def internal_redirect_to_concretion
54
+ params[instance_name] = params.delete(abstract_instance_name)
55
+ internal_redirect_to("#{controller_namespace}/#{collection_name}##{params[:action]}")
56
+ end
57
+
58
+ def concrete_controller?
59
+ !self.instance_of?(abstract_controller_class)
60
+ end
61
+
62
+ def concrete_action?
63
+ !Array(abstract_action_options[:except]).include?(params[:action].to_sym)
64
+ end
65
+
66
+ def abstract_controller_class
67
+ @abstract_controller_class ||= begin
68
+ abstract = self.class
69
+ abstract = abstract.superclass until abstract.superclass.controller_name == 'base'
70
+ abstract
71
+ end
72
+ end
73
+
74
+ def abstract_instance_name
75
+ @abstract_instance_name ||= abstract_controller_class.controller_name.singularize
76
+ end
77
+
78
+ def controller_namespace
79
+ @controller_namespace ||= controller_path.split('/')[0..-2].join('/')
80
+ end
81
+ end
82
+
83
+ ActionController::Base.extend(ActMacro)
84
+ end
85
+ end
86
+ end
87
+
@@ -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