udongo 0.1.0

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 (280) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +26 -0
  4. data/app/assets/fonts/FontAwesome.otf +0 -0
  5. data/app/assets/fonts/fontawesome-webfont.eot +0 -0
  6. data/app/assets/fonts/fontawesome-webfont.svg +685 -0
  7. data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
  8. data/app/assets/fonts/fontawesome-webfont.woff +0 -0
  9. data/app/assets/fonts/fontawesome-webfont.woff2 +0 -0
  10. data/app/assets/javascripts/backend/application.js +22 -0
  11. data/app/assets/javascripts/backend/bootstrap.js +3560 -0
  12. data/app/assets/javascripts/backend/datepickers.js +67 -0
  13. data/app/assets/javascripts/backend/general.js +7 -0
  14. data/app/assets/javascripts/backend/pages.js +7 -0
  15. data/app/assets/javascripts/backend/plugins/autocomplete.js +147 -0
  16. data/app/assets/javascripts/backend/plugins/tagbox.js +52 -0
  17. data/app/assets/javascripts/backend/sortable.js +46 -0
  18. data/app/assets/javascripts/backend/tags.js +37 -0
  19. data/app/assets/javascripts/backend/tree.js +158 -0
  20. data/app/assets/stylesheets/backend/application.scss +18 -0
  21. data/app/assets/stylesheets/backend/bootstrap.scss +6211 -0
  22. data/app/assets/stylesheets/backend/components/_breadcrumb.scss +7 -0
  23. data/app/assets/stylesheets/backend/components/_form.scss +23 -0
  24. data/app/assets/stylesheets/backend/components/_nav.scss +3 -0
  25. data/app/assets/stylesheets/backend/components/_navbar.scss +3 -0
  26. data/app/assets/stylesheets/backend/components/_tabs.scss +3 -0
  27. data/app/assets/stylesheets/backend/font-awesome.scss +2182 -0
  28. data/app/assets/stylesheets/backend/pages/_flexible_content.scss +11 -0
  29. data/app/assets/stylesheets/backend/pages/_logged_in.scss +3 -0
  30. data/app/assets/stylesheets/backend/pages/_login.scss +3 -0
  31. data/app/assets/stylesheets/backend/udongo.scss +17 -0
  32. data/app/controllers/backend/admins_controller.rb +56 -0
  33. data/app/controllers/backend/content/rows/columns_controller.rb +75 -0
  34. data/app/controllers/backend/content/rows/images_controller.rb +6 -0
  35. data/app/controllers/backend/content/rows/texts_controller.rb +6 -0
  36. data/app/controllers/backend/content/rows_controller.rb +45 -0
  37. data/app/controllers/backend/dashboard_controller.rb +2 -0
  38. data/app/controllers/backend/email_templates_controller.rb +50 -0
  39. data/app/controllers/backend/emails_controller.rb +18 -0
  40. data/app/controllers/backend/navigation/items_controller.rb +64 -0
  41. data/app/controllers/backend/navigations_controller.rb +7 -0
  42. data/app/controllers/backend/pages_controller.rb +89 -0
  43. data/app/controllers/backend/redirects_controller.rb +50 -0
  44. data/app/controllers/backend/seo_controller.rb +6 -0
  45. data/app/controllers/backend/sessions_controller.rb +22 -0
  46. data/app/controllers/backend/snippets_controller.rb +49 -0
  47. data/app/controllers/backend/tagbox_controller.rb +52 -0
  48. data/app/controllers/backend/webserver_controller.rb +6 -0
  49. data/app/controllers/backend_controller.rb +34 -0
  50. data/app/controllers/catch_all_controller.rb +12 -0
  51. data/app/controllers/concerns/backend/content_type_controller.rb +44 -0
  52. data/app/controllers/concerns/backend/positionable_controller.rb +12 -0
  53. data/app/controllers/concerns/backend/translatable_controller.rb +41 -0
  54. data/app/controllers/concerns/pagination_controller.rb +38 -0
  55. data/app/controllers/redirects_controller.rb +18 -0
  56. data/app/decorators/content_image_decorator.rb +7 -0
  57. data/app/decorators/content_text_decorator.rb +11 -0
  58. data/app/decorators/navigation_item_decorator.rb +29 -0
  59. data/app/decorators/page_decorator.rb +29 -0
  60. data/app/decorators/redirect_decorator.rb +13 -0
  61. data/app/decorators/snippet_decorator.rb +11 -0
  62. data/app/forms/backend/email_template_translation_form.rb +11 -0
  63. data/app/forms/backend/navigation_item_translation_form.rb +8 -0
  64. data/app/forms/backend/page_translation_form.rb +17 -0
  65. data/app/forms/backend/snippet_translation_form.rb +8 -0
  66. data/app/helpers/backend/dropdown_helper.rb +9 -0
  67. data/app/helpers/backend/pagination_helper.rb +17 -0
  68. data/app/helpers/icon_helper.rb +6 -0
  69. data/app/helpers/link_helper.rb +33 -0
  70. data/app/helpers/snippet_helper.rb +5 -0
  71. data/app/helpers/udongo_helper.rb +27 -0
  72. data/app/inputs/date_picker_input.rb +30 -0
  73. data/app/inputs/date_range_picker_input.rb +13 -0
  74. data/app/mailers/general_mailer.rb +13 -0
  75. data/app/models/address.rb +5 -0
  76. data/app/models/admin.rb +9 -0
  77. data/app/models/ckeditor/asset.rb +7 -0
  78. data/app/models/ckeditor/attachment_file.rb +7 -0
  79. data/app/models/ckeditor/picture.rb +7 -0
  80. data/app/models/comment.rb +39 -0
  81. data/app/models/concerns/cacheable.rb +37 -0
  82. data/app/models/concerns/commentable.rb +9 -0
  83. data/app/models/concerns/content_type.rb +13 -0
  84. data/app/models/concerns/deletable.rb +13 -0
  85. data/app/models/concerns/draggable.rb +13 -0
  86. data/app/models/concerns/emailable.rb +7 -0
  87. data/app/models/concerns/flexible_content.rb +9 -0
  88. data/app/models/concerns/locale.rb +10 -0
  89. data/app/models/concerns/loggable.rb +13 -0
  90. data/app/models/concerns/notable.rb +9 -0
  91. data/app/models/concerns/parentable.rb +39 -0
  92. data/app/models/concerns/person.rb +7 -0
  93. data/app/models/concerns/publishable.rb +22 -0
  94. data/app/models/concerns/seo.rb +31 -0
  95. data/app/models/concerns/sortable.rb +30 -0
  96. data/app/models/concerns/spammable.rb +38 -0
  97. data/app/models/concerns/storable/collection.rb +117 -0
  98. data/app/models/concerns/storable/config.rb +40 -0
  99. data/app/models/concerns/storable.rb +32 -0
  100. data/app/models/concerns/taggable.rb +29 -0
  101. data/app/models/concerns/translatable/collection.rb +60 -0
  102. data/app/models/concerns/translatable/config.rb +19 -0
  103. data/app/models/concerns/translatable.rb +39 -0
  104. data/app/models/concerns/visible.rb +24 -0
  105. data/app/models/content_column.rb +14 -0
  106. data/app/models/content_image.rb +9 -0
  107. data/app/models/content_row.rb +11 -0
  108. data/app/models/content_text.rb +7 -0
  109. data/app/models/email.rb +13 -0
  110. data/app/models/email_template.rb +10 -0
  111. data/app/models/form.rb +9 -0
  112. data/app/models/form_field.rb +15 -0
  113. data/app/models/form_field_validation.rb +11 -0
  114. data/app/models/form_submission.rb +16 -0
  115. data/app/models/form_submission_data.rb +5 -0
  116. data/app/models/log.rb +7 -0
  117. data/app/models/meta.rb +11 -0
  118. data/app/models/navigation.rb +6 -0
  119. data/app/models/navigation_item.rb +12 -0
  120. data/app/models/note.rb +7 -0
  121. data/app/models/page.rb +23 -0
  122. data/app/models/queued_task.rb +45 -0
  123. data/app/models/redirect.rb +16 -0
  124. data/app/models/setting.rb +13 -0
  125. data/app/models/snippet.rb +10 -0
  126. data/app/models/store.rb +10 -0
  127. data/app/models/tag.rb +6 -0
  128. data/app/models/tagged_item.rb +8 -0
  129. data/app/models/translation.rb +10 -0
  130. data/app/uploaders/ckeditor_attachment_file_uploader.rb +36 -0
  131. data/app/uploaders/ckeditor_picture_uploader.rb +47 -0
  132. data/app/uploaders/content_image_uploader.rb +52 -0
  133. data/app/validators/email_validator.rb +7 -0
  134. data/app/validators/url_validator.rb +13 -0
  135. data/app/views/backend/_breadcrumbs.html.erb +18 -0
  136. data/app/views/backend/_flash_messages.html.erb +9 -0
  137. data/app/views/backend/_form_actions.html.erb +4 -0
  138. data/app/views/backend/_form_errors.html.erb +15 -0
  139. data/app/views/backend/_navigation.html.erb +8 -0
  140. data/app/views/backend/_seo_form.html.erb +13 -0
  141. data/app/views/backend/_tags.html.erb +18 -0
  142. data/app/views/backend/admins/_form.html.erb +32 -0
  143. data/app/views/backend/admins/edit.html.erb +4 -0
  144. data/app/views/backend/admins/index.html.erb +33 -0
  145. data/app/views/backend/admins/new.html.erb +4 -0
  146. data/app/views/backend/content/_image.html.erb +17 -0
  147. data/app/views/backend/content/_rows.html.erb +63 -0
  148. data/app/views/backend/content/_text.html.erb +1 -0
  149. data/app/views/backend/content/rows/columns/edit.html.erb +25 -0
  150. data/app/views/backend/content/rows/columns/new.html.erb +25 -0
  151. data/app/views/backend/content/rows/images/edit.html.erb +22 -0
  152. data/app/views/backend/content/rows/texts/edit.html.erb +13 -0
  153. data/app/views/backend/dashboard/show.html.erb +1 -0
  154. data/app/views/backend/email_templates/_form.html.erb +31 -0
  155. data/app/views/backend/email_templates/_tabs.html.erb +21 -0
  156. data/app/views/backend/email_templates/edit.html.erb +6 -0
  157. data/app/views/backend/email_templates/edit_translation.html.erb +51 -0
  158. data/app/views/backend/email_templates/index.html.erb +27 -0
  159. data/app/views/backend/email_templates/new.html.erb +4 -0
  160. data/app/views/backend/emails/index.html.erb +50 -0
  161. data/app/views/backend/emails/show.html.erb +68 -0
  162. data/app/views/backend/navigation/items/_form.html.erb +22 -0
  163. data/app/views/backend/navigation/items/_tabs.html.erb +21 -0
  164. data/app/views/backend/navigation/items/edit.html.erb +7 -0
  165. data/app/views/backend/navigation/items/edit_translation.html.erb +21 -0
  166. data/app/views/backend/navigation/items/new.html.erb +4 -0
  167. data/app/views/backend/navigations/index.html.erb +59 -0
  168. data/app/views/backend/pages/_form.html.erb +30 -0
  169. data/app/views/backend/pages/_tabs.html.erb +21 -0
  170. data/app/views/backend/pages/edit.html.erb +6 -0
  171. data/app/views/backend/pages/edit_translation.html.erb +35 -0
  172. data/app/views/backend/pages/index.html.erb +19 -0
  173. data/app/views/backend/pages/new.html.erb +4 -0
  174. data/app/views/backend/redirects/_filter.html.erb +21 -0
  175. data/app/views/backend/redirects/_form.html.erb +36 -0
  176. data/app/views/backend/redirects/edit.html.erb +4 -0
  177. data/app/views/backend/redirects/index.html.erb +50 -0
  178. data/app/views/backend/redirects/new.html.erb +3 -0
  179. data/app/views/backend/sessions/new.html.erb +19 -0
  180. data/app/views/backend/snippets/_form.html.erb +18 -0
  181. data/app/views/backend/snippets/_tabs.html.erb +21 -0
  182. data/app/views/backend/snippets/edit.html.erb +6 -0
  183. data/app/views/backend/snippets/edit_translation.html.erb +23 -0
  184. data/app/views/backend/snippets/index.html.erb +26 -0
  185. data/app/views/backend/snippets/new.html.erb +4 -0
  186. data/app/views/layouts/backend/_top_navigation.html.erb +27 -0
  187. data/app/views/layouts/backend/application.html.erb +27 -0
  188. data/app/views/layouts/backend/lightbox.html.erb +21 -0
  189. data/app/views/layouts/backend/login.html.erb +21 -0
  190. data/app/views/layouts/frontend/application.html.erb +16 -0
  191. data/config/initializers/assets.rb +13 -0
  192. data/config/initializers/ckeditor.rb +38 -0
  193. data/config/initializers/core_ext/string.rb +8 -0
  194. data/config/initializers/inflections.rb +20 -0
  195. data/config/initializers/simple_form_bootstrap.rb +150 -0
  196. data/config/locales/de.yml +196 -0
  197. data/config/locales/en.yml +206 -0
  198. data/config/locales/fr.yml +214 -0
  199. data/config/locales/nl.yml +212 -0
  200. data/config/locales/nl_backend.yml +106 -0
  201. data/config/locales/nl_forms.yml +68 -0
  202. data/config/routes.rb +83 -0
  203. data/config/spring.rb +1 -0
  204. data/db/migrate/20150404133314_create_udongo_admins.rb +12 -0
  205. data/db/migrate/20150404203549_remove_udongo_admins.rb +5 -0
  206. data/db/migrate/20150404203648_add_admins_table.rb +12 -0
  207. data/db/migrate/20150405202002_create_logs.rb +15 -0
  208. data/db/migrate/20150411152042_create_addresses.rb +19 -0
  209. data/db/migrate/20150411152619_create_comments.rb +21 -0
  210. data/db/migrate/20150411200227_create_notes.rb +14 -0
  211. data/db/migrate/20150412094419_create_settings.rb +13 -0
  212. data/db/migrate/20150412095257_create_meta.rb +21 -0
  213. data/db/migrate/20150413190019_create_tags.rb +15 -0
  214. data/db/migrate/20150413190713_create_tagged_items.rb +14 -0
  215. data/db/migrate/20150417113400_create_translations.rb +15 -0
  216. data/db/migrate/20150515113332_content_tables.rb +42 -0
  217. data/db/migrate/20150515134044_create_pages.rb +22 -0
  218. data/db/migrate/20150620121834_remove_trashed_from_page.rb +5 -0
  219. data/db/migrate/20150629120253_add_locales_to_translatables.rb +5 -0
  220. data/db/migrate/20150706083925_create_snippets.rb +13 -0
  221. data/db/migrate/20150706084145_add_locales_to_snippet.rb +5 -0
  222. data/db/migrate/20150706085213_add_description_to_snippet.rb +5 -0
  223. data/db/migrate/20150706085733_change_snippet_desc_field.rb +5 -0
  224. data/db/migrate/20150706093016_change_desc_column_for_snippet.rb +5 -0
  225. data/db/migrate/20150706113918_create_ckeditor_assets.rb +26 -0
  226. data/db/migrate/20150824090457_create_redirects.rb +12 -0
  227. data/db/migrate/20150824113723_rename_source_and_destination_to_redirects.rb +6 -0
  228. data/db/migrate/20150825094254_create_shortened_urls.rb +11 -0
  229. data/db/migrate/20150826084004_remove_shortened_urls.rb +5 -0
  230. data/db/migrate/20150826084234_add_times_used_to_redirect.rb +5 -0
  231. data/db/migrate/20150826134153_add_index_on_page_visible.rb +5 -0
  232. data/db/migrate/20151003191846_add_some_indexes.rb +15 -0
  233. data/db/migrate/20151006131720_add_editable_content_to_page.rb +5 -0
  234. data/db/migrate/20151007090541_create_navigations.rb +10 -0
  235. data/db/migrate/20151007091131_create_navigation_items.rb +12 -0
  236. data/db/migrate/20151007092529_add_index_to_nav_items.rb +5 -0
  237. data/db/migrate/20151007093812_change_nav_description_type.rb +5 -0
  238. data/db/migrate/20151007173557_add_route_to_page.rb +5 -0
  239. data/db/migrate/20151008114433_add_extra_to_navigation_item.rb +5 -0
  240. data/db/migrate/20151009114823_create_forms.rb +9 -0
  241. data/db/migrate/20151009115326_create_form_fields.rb +12 -0
  242. data/db/migrate/20151009115803_create_form_field_validations.rb +11 -0
  243. data/db/migrate/20151009131957_create_form_submissions.rb +10 -0
  244. data/db/migrate/20151009132657_create_form_submission_data.rb +11 -0
  245. data/db/migrate/20151009140754_rename_form_field_id_to_field_id_for_form_field_validations.rb +5 -0
  246. data/db/migrate/20151009141123_rename_form_submission_id_to_submission_id_for_form_submission_data.rb +5 -0
  247. data/db/migrate/20151009141822_add_locales_to_form_fields.rb +5 -0
  248. data/db/migrate/20151009142242_add_locales_to_form_field_validations.rb +5 -0
  249. data/db/migrate/20151023135358_add_locales_to_forms.rb +5 -0
  250. data/db/migrate/20151117190950_add_external_reference_to_tags.rb +6 -0
  251. data/db/migrate/20151205202815_rename_nav_name_to_identifier.rb +5 -0
  252. data/db/migrate/20160108100104_create_stores.rb +13 -0
  253. data/db/migrate/20160125154648_rename_name_to_identifier_for_forms.rb +5 -0
  254. data/db/migrate/20160128080029_create_email_templates.rb +18 -0
  255. data/db/migrate/20160201121021_create_emails.rb +17 -0
  256. data/db/migrate/20160201123128_create_queued_tasks.rb +13 -0
  257. data/db/migrate/20160205132009_reoraganize_snippet_html_fields.rb +7 -0
  258. data/db/migrate/20160303141417_add_data_to_logs.rb +5 -0
  259. data/db/migrate/20160513110925_addd_more_column_widths.rb +9 -0
  260. data/lib/generators/udongo/form/form_generator.rb +63 -0
  261. data/lib/generators/udongo/form/templates/form.rb +18 -0
  262. data/lib/tasks/task_extras.rb +10 -0
  263. data/lib/tasks/udongo_tasks.rake +41 -0
  264. data/lib/udongo/active_model_simulator.rb +21 -0
  265. data/lib/udongo/assets/loader.rb +40 -0
  266. data/lib/udongo/assets/precompiler.rb +50 -0
  267. data/lib/udongo/breadcrumb.rb +27 -0
  268. data/lib/udongo/config.rb +26 -0
  269. data/lib/udongo/crypt.rb +19 -0
  270. data/lib/udongo/cryptography.rb +5 -0
  271. data/lib/udongo/email_vars/address.rb +19 -0
  272. data/lib/udongo/email_vars/form_submission.rb +18 -0
  273. data/lib/udongo/email_vars_parser.rb +31 -0
  274. data/lib/udongo/engine.rb +10 -0
  275. data/lib/udongo/meta_info.rb +12 -0
  276. data/lib/udongo/object_path.rb +24 -0
  277. data/lib/udongo/version.rb +3 -0
  278. data/lib/udongo/will_paginate/renderer.rb +26 -0
  279. data/lib/udongo.rb +44 -0
  280. metadata +772 -0
@@ -0,0 +1,42 @@
1
+ class ContentTables < ActiveRecord::Migration
2
+ def change
3
+ create_table "content_columns", force: true do |t|
4
+ t.integer "row_id"
5
+ t.integer "width"
6
+ t.integer "position"
7
+ t.string "content_type"
8
+ t.integer "content_id"
9
+ t.datetime "created_at"
10
+ t.datetime "updated_at"
11
+ end
12
+
13
+ add_index "content_columns", ["content_id"], name: "idx_content_columns_on_content_id", using: :btree
14
+ add_index "content_columns", ["content_type"], name: "idx_content_columns_on_content_type", using: :btree
15
+
16
+ create_table "content_images", force: true do |t|
17
+ t.string "file"
18
+ t.text "caption"
19
+ t.datetime "created_at"
20
+ t.datetime "updated_at"
21
+ t.text "url"
22
+ end
23
+
24
+ create_table "content_rows", force: true do |t|
25
+ t.string "locale"
26
+ t.string "rowable_type"
27
+ t.integer "rowable_id"
28
+ t.integer "position"
29
+ t.datetime "created_at"
30
+ t.datetime "updated_at"
31
+ end
32
+
33
+ add_index "content_rows", ["rowable_id"], name: "idx_content_rows_on_rowable_id", using: :btree
34
+ add_index "content_rows", ["rowable_type"], name: "idx_content_rows_on_rowable_type", using: :btree
35
+
36
+ create_table "content_texts", force: true do |t|
37
+ t.text "content"
38
+ t.datetime "created_at"
39
+ t.datetime "updated_at"
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,22 @@
1
+ class CreatePages < ActiveRecord::Migration
2
+ def up
3
+ create_table :pages do |t|
4
+ t.string :identifier
5
+ t.string :description
6
+ t.integer :parent_id
7
+ t.integer :position
8
+ t.boolean :visible
9
+ t.boolean :deletable
10
+ t.boolean :draggable
11
+ t.boolean :trashed
12
+
13
+ t.timestamps
14
+ end
15
+
16
+ add_index :pages, :parent_id, name: :index_page_parent_id, using: :btree
17
+ end
18
+
19
+ def down
20
+ drop_table :pages
21
+ end
22
+ end
@@ -0,0 +1,5 @@
1
+ class RemoveTrashedFromPage < ActiveRecord::Migration
2
+ def change
3
+ remove_column :pages, :trashed
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddLocalesToTranslatables < ActiveRecord::Migration
2
+ def change
3
+ add_column :pages, :locales, :text, after: 'draggable'
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ class CreateSnippets < ActiveRecord::Migration
2
+ def change
3
+ create_table :snippets do |t|
4
+ t.string :identifier
5
+ t.boolean :html_title
6
+ t.boolean :html_content
7
+
8
+ t.timestamps null: false
9
+ end
10
+
11
+ add_index :snippets, :identifier
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ class AddLocalesToSnippet < ActiveRecord::Migration
2
+ def change
3
+ add_column :snippets, :locales, :text, after: 'html_content'
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddDescriptionToSnippet < ActiveRecord::Migration
2
+ def change
3
+ add_column :snippets, :description, :text, after: 'identifier'
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class ChangeSnippetDescField < ActiveRecord::Migration
2
+ def change
3
+ change_column :snippets, :description, :string
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class ChangeDescColumnForSnippet < ActiveRecord::Migration
2
+ def change
3
+ change_column :snippets, :description, :string
4
+ end
5
+ end
@@ -0,0 +1,26 @@
1
+ class CreateCkeditorAssets < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :ckeditor_assets do |t|
4
+ t.string :data_file_name, :null => false
5
+ t.string :data_content_type
6
+ t.integer :data_file_size
7
+
8
+ t.integer :assetable_id
9
+ t.string :assetable_type, :limit => 30
10
+ t.string :type, :limit => 30
11
+
12
+ # Uncomment it to save images dimensions, if your need it
13
+ t.integer :width
14
+ t.integer :height
15
+
16
+ t.timestamps
17
+ end
18
+
19
+ add_index "ckeditor_assets", ["assetable_type", "type", "assetable_id"], :name => "idx_ckeditor_assetable_type"
20
+ add_index "ckeditor_assets", ["assetable_type", "assetable_id"], :name => "idx_ckeditor_assetable"
21
+ end
22
+
23
+ def self.down
24
+ drop_table :ckeditor_assets
25
+ end
26
+ end
@@ -0,0 +1,12 @@
1
+ class CreateRedirects < ActiveRecord::Migration
2
+ def change
3
+ create_table :redirects do |t|
4
+ t.string :source
5
+ t.string :destination
6
+ t.integer :status_code
7
+ t.boolean :disabled
8
+
9
+ t.timestamps null: false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+ class RenameSourceAndDestinationToRedirects < ActiveRecord::Migration
2
+ def change
3
+ rename_column :redirects, :source, :source_uri
4
+ rename_column :redirects, :destination, :destination_uri
5
+ end
6
+ end
@@ -0,0 +1,11 @@
1
+ class CreateShortenedUrls < ActiveRecord::Migration
2
+ def change
3
+ create_table :shortened_urls do |t|
4
+ t.string :code
5
+ t.string :url
6
+ t.integer :times_used
7
+
8
+ t.timestamps null: false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class RemoveShortenedUrls < ActiveRecord::Migration
2
+ def change
3
+ drop_table :shortened_urls
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddTimesUsedToRedirect < ActiveRecord::Migration
2
+ def change
3
+ add_column :redirects, :times_used, :integer, after: 'disabled'
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddIndexOnPageVisible < ActiveRecord::Migration
2
+ def change
3
+ add_index :pages, :visible
4
+ end
5
+ end
@@ -0,0 +1,15 @@
1
+ class AddSomeIndexes < ActiveRecord::Migration
2
+ def change
3
+ add_index :comments, :locale
4
+ add_index :comments, :parent_id
5
+ add_index :comments, :status
6
+ add_index :content_columns, :row_id
7
+ add_index :content_columns, :position
8
+ add_index :content_rows, :locale
9
+ add_index :content_rows, :position
10
+ add_index :logs, :category
11
+ add_index :pages, :identifier
12
+ add_index :pages, :position
13
+ add_index :redirects, :source_uri
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ class AddEditableContentToPage < ActiveRecord::Migration
2
+ def change
3
+ add_column :pages, :content_disabled, :boolean, after: 'draggable'
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ class CreateNavigations < ActiveRecord::Migration
2
+ def change
3
+ create_table :navigations do |t|
4
+ t.string :name
5
+ t.text :description
6
+
7
+ t.timestamps null: false
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ class CreateNavigationItems < ActiveRecord::Migration
2
+ def change
3
+ create_table :navigation_items do |t|
4
+ t.references :navigation, index: true
5
+ t.references :page, index: true
6
+ t.text :locales
7
+ t.integer :position
8
+
9
+ t.timestamps null: false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,5 @@
1
+ class AddIndexToNavItems < ActiveRecord::Migration
2
+ def change
3
+ add_index :navigation_items, :position
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class ChangeNavDescriptionType < ActiveRecord::Migration
2
+ def change
3
+ change_column :navigations, :description, :string
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddRouteToPage < ActiveRecord::Migration
2
+ def change
3
+ add_column :pages, :route, :string, after: 'locales'
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddExtraToNavigationItem < ActiveRecord::Migration
2
+ def change
3
+ add_column :navigation_items, :extra, :string
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ class CreateForms < ActiveRecord::Migration
2
+ def change
3
+ create_table :forms do |t|
4
+ t.string :name
5
+
6
+ t.timestamps null: false
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ class CreateFormFields < ActiveRecord::Migration
2
+ def change
3
+ create_table :form_fields do |t|
4
+ t.references :form, index: true
5
+ t.string :name
6
+ t.string :field_type
7
+ t.integer :position
8
+
9
+ t.timestamps null: false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ class CreateFormFieldValidations < ActiveRecord::Migration
2
+ def change
3
+ create_table :form_field_validations do |t|
4
+ t.references :form_field, index: true
5
+ t.string :validation_class
6
+ t.integer :position
7
+
8
+ t.timestamps null: false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ class CreateFormSubmissions < ActiveRecord::Migration
2
+ def change
3
+ create_table :form_submissions do |t|
4
+ t.references :form, index: true
5
+ t.text :extra_info
6
+
7
+ t.timestamps null: false
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ class CreateFormSubmissionData < ActiveRecord::Migration
2
+ def change
3
+ create_table :form_submission_data do |t|
4
+ t.references :form_submission, index: true
5
+ t.string :name
6
+ t.text :value
7
+
8
+ t.timestamps null: false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class RenameFormFieldIdToFieldIdForFormFieldValidations < ActiveRecord::Migration
2
+ def change
3
+ rename_column :form_field_validations, :form_field_id, :field_id
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class RenameFormSubmissionIdToSubmissionIdForFormSubmissionData < ActiveRecord::Migration
2
+ def change
3
+ rename_column :form_submission_data, :form_submission_id, :submission_id
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddLocalesToFormFields < ActiveRecord::Migration
2
+ def change
3
+ add_column :form_fields, :locales, :text, after: :form_id
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddLocalesToFormFieldValidations < ActiveRecord::Migration
2
+ def change
3
+ add_column :form_field_validations, :locales, :text, after: :field_id
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddLocalesToForms < ActiveRecord::Migration
2
+ def change
3
+ add_column :forms, :locales, :text, after: :id
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ class AddExternalReferenceToTags < ActiveRecord::Migration
2
+ def change
3
+ add_column :tags, :external_reference, :string, after: 'slug'
4
+ add_index :tags, :external_reference
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ class RenameNavNameToIdentifier < ActiveRecord::Migration
2
+ def change
3
+ rename_column :navigations, :name, :identifier
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ class CreateStores < ActiveRecord::Migration
2
+ def change
3
+ create_table :stores do |t|
4
+ t.string :storable_type, index: true
5
+ t.integer :storable_id, index: true
6
+ t.string :name
7
+ t.text :value
8
+ t.string :klass
9
+
10
+ t.timestamps null: false
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ class RenameNameToIdentifierForForms < ActiveRecord::Migration
2
+ def change
3
+ rename_column :forms, :name, :identifier
4
+ end
5
+ end
@@ -0,0 +1,18 @@
1
+ class CreateEmailTemplates < ActiveRecord::Migration
2
+ def change
3
+ create_table :email_templates do |t|
4
+ t.string :identifier
5
+ t.string :description
6
+ t.text :locales
7
+ t.string :from_name
8
+ t.string :from_email
9
+ t.boolean :optional
10
+ t.text :vars
11
+ t.integer :position
12
+
13
+ t.timestamps null: false
14
+ end
15
+
16
+ add_index :email_templates, :identifier
17
+ end
18
+ end
@@ -0,0 +1,17 @@
1
+ class CreateEmails < ActiveRecord::Migration
2
+ def change
3
+ create_table :emails do |t|
4
+ t.string :from_name
5
+ t.string :from_email
6
+ t.string :to_name
7
+ t.string :to_email
8
+ t.string :subject
9
+ t.text :plain_content
10
+ t.text :html_content
11
+ t.string :locale
12
+ t.datetime :sent_at
13
+
14
+ t.timestamps null: false
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ class CreateQueuedTasks < ActiveRecord::Migration
2
+ def change
3
+ create_table :queued_tasks do |t|
4
+ t.string :klass
5
+ t.text :data
6
+ t.boolean :locked
7
+
8
+ t.timestamps null: false
9
+ end
10
+
11
+ add_index :queued_tasks, :locked
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ class ReoraganizeSnippetHtmlFields < ActiveRecord::Migration
2
+ def change
3
+ rename_column :snippets, :html_title, :allow_html_in_title
4
+ rename_column :snippets, :html_content, :editor_for_content
5
+ add_column :snippets, :allow_html_in_content, :boolean, after: 'allow_html_in_title'
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ class AddDataToLogs < ActiveRecord::Migration
2
+ def change
3
+ add_column :logs, :data, :text, after: 'content'
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ class AdddMoreColumnWidths < ActiveRecord::Migration
2
+ def change
3
+ rename_column :content_columns, :width, :width_md
4
+ add_column :content_columns, :width_xs, :integer, after: 'width_md'
5
+ add_column :content_columns, :width_sm, :integer, after: 'width_xs'
6
+ add_column :content_columns, :width_lg, :integer, after: 'width_md'
7
+ add_column :content_columns, :width_xl, :integer, after: 'width_lg'
8
+ end
9
+ end
@@ -0,0 +1,63 @@
1
+ require 'rails/generators/generated_attribute'
2
+
3
+ class Udongo::FormGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+ argument :name, type: :string, required: true, banner: 'name'
6
+ argument :namespace, type: :string, banner: 'app namespace', default: 'frontend'
7
+
8
+ class_option :fields, type: :string, required: true, banner: 'field_name:type', desc: 'Creates the specified form fields for this form.'
9
+
10
+ def initialize(*args, &block)
11
+ super
12
+ filter_fields
13
+ end
14
+
15
+ def class_name
16
+ "#{namespace.camelcase}::#{name.camelcase}Form"
17
+ end
18
+
19
+ def copy_form_class
20
+ say_status 'OK', "Copying to #{destination_file}", :yellow
21
+ copy_file 'form.rb', destination_file
22
+ gsub_file destination_file, 'klass', class_name
23
+ gsub_file destination_file, 'form_name', name
24
+ end
25
+
26
+ def create_database_records
27
+ f = ::Form.create!(locales: Udongo.config.locales, identifier: name)
28
+
29
+ @fields.each do |field|
30
+ field_object = f.fields.create!(locales: Udongo.config.locales, name: field.name, field_type: field.type)
31
+ # TODO: validations
32
+ #field_object.validations.create!(locales: Udongo.config.locales, validation_class: 'Udongo::FormValidations::Required')
33
+ end
34
+
35
+ inject_into_file destination_file, after: "class #{class_name} < Udongo::ActiveModelSimulator\n" do
36
+ <<-RUBY
37
+ attr_accessor :#{f.fields.map(&:name).join(', :')}
38
+ RUBY
39
+ end
40
+ end
41
+
42
+ def destination_file
43
+ "app/forms/#{namespace.underscore}/#{name.underscore}_form.rb"
44
+ end
45
+
46
+ def filter_fields
47
+ @fields = options.fields.split(',').inject([]) do |fields, f|
48
+ if f.to_s.include?(':')
49
+ attr = f.split(':')[0]
50
+ type = f.split(':')[1].to_sym
51
+ else
52
+ attr = f
53
+ type = :text
54
+ end
55
+
56
+ fields << Rails::Generators::GeneratedAttribute.new(attr, type)
57
+ end
58
+ end
59
+
60
+ def fields
61
+ @fields || []
62
+ end
63
+ end
@@ -0,0 +1,18 @@
1
+ class klass < Udongo::ActiveModelSimulator
2
+
3
+ def form_instance
4
+ Form.find_by(name: 'form_name')
5
+ end
6
+
7
+ def save
8
+ if valid?
9
+ submission = form_instance.submissions.create!
10
+ form_instance.fields.each do |field|
11
+ submission.data.new(name: field.name, value: send(field.name.to_sym))
12
+ end
13
+ submission.save!
14
+ else
15
+ false
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,10 @@
1
+ module TaskExtras
2
+ def user_input(message, field = nil)
3
+ if field && ENV[field.to_s]
4
+ ENV[field.to_s]
5
+ else
6
+ puts message
7
+ STDIN.gets.strip
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,41 @@
1
+ require File.join(Udongo::PATH, 'lib/tasks/task_extras.rb')
2
+
3
+ namespace :udongo do
4
+ include TaskExtras
5
+
6
+ namespace :sortable do
7
+ desc 'Generates new positions for a given model.'
8
+ task :generate_positions_for_model do
9
+ class_name = user_input 'What model needs the positions?'
10
+ class_name.to_s.camelcase.constantize.all.each_with_index do |o, index|
11
+ o.update_attribute(:position, index + 1)
12
+ end
13
+ end
14
+ end
15
+
16
+ namespace :content_images do
17
+ desc 'Regenerate all the image versions.'
18
+ task regenerate: :environment do
19
+ ::ContentImage.find_each do |i|
20
+ if i.file?
21
+ i.file.recreate_versions!
22
+ i.save!
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ namespace :queue do
29
+ desc 'Checks the queue for tasks and executes at most 3 of them'
30
+ task process: :environment do
31
+
32
+ # This code will process at most 3 records from the queue. The attempts
33
+ # are done 1 by 1, because if you would fetch all the 5 tasks at once you
34
+ # might risk another process already completed the task which leaves only
35
+ # some already executed task.
36
+ 3.times do
37
+ QueuedTask.not_locked.limit(1).each { |t| t.process! }
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,21 @@
1
+ module Udongo
2
+ class ActiveModelSimulator
3
+ include ActiveModel::Model
4
+
5
+ def initialize(attributes = {})
6
+ attributes ||= {}
7
+ attributes.each do |name, value|
8
+ send("#{name}=", value)
9
+ end
10
+ end
11
+
12
+ def persisted?
13
+ false
14
+ end
15
+
16
+ # This method exists so the related factory tests pass
17
+ def save!
18
+ valid?
19
+ end
20
+ end
21
+ end