archangel 0.0.2

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 (517) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +17 -0
  3. data/.editorconfig +19 -0
  4. data/.eslintignore +6 -0
  5. data/.eslintrc.json +40 -0
  6. data/.github/ISSUE_TEMPLATE.md +23 -0
  7. data/.github/PULL_REQUEST_TEMPLATE.md +18 -0
  8. data/.gitignore +22 -0
  9. data/.hound.yml +21 -0
  10. data/.mdlrc +2 -0
  11. data/.reek +35 -0
  12. data/.rspec +4 -0
  13. data/.rubocop.yml +28 -0
  14. data/.rubocop_disabled.yml +2 -0
  15. data/.rubocop_enabled.yml +2 -0
  16. data/.rubocop_todo.yml +7 -0
  17. data/.scss-lint.yml +22 -0
  18. data/.travis.yml +16 -0
  19. data/.yardopts +10 -0
  20. data/CODE_OF_CONDUCT.md +43 -0
  21. data/CONTRIBUTING.md +150 -0
  22. data/Gemfile +36 -0
  23. data/MIT-LICENSE +21 -0
  24. data/README.md +129 -0
  25. data/Rakefile +27 -0
  26. data/app/assets/config/archangel_manifest.js +14 -0
  27. data/app/assets/images/archangel/fallback/asset.png +0 -0
  28. data/app/assets/images/archangel/fallback/avatar.png +0 -0
  29. data/app/assets/images/archangel/fallback/default.png +0 -0
  30. data/app/assets/images/archangel/fallback/favicon.ico +0 -0
  31. data/app/assets/images/archangel/fallback/large_avatar.png +0 -0
  32. data/app/assets/images/archangel/fallback/large_logo.png +0 -0
  33. data/app/assets/images/archangel/fallback/logo.png +0 -0
  34. data/app/assets/images/archangel/fallback/medium_avatar.png +0 -0
  35. data/app/assets/images/archangel/fallback/medium_logo.png +0 -0
  36. data/app/assets/images/archangel/fallback/small_asset.png +0 -0
  37. data/app/assets/images/archangel/fallback/small_avatar.png +0 -0
  38. data/app/assets/images/archangel/fallback/small_logo.png +0 -0
  39. data/app/assets/images/archangel/fallback/tiny_asset.png +0 -0
  40. data/app/assets/images/archangel/fallback/tiny_avatar.png +0 -0
  41. data/app/assets/images/archangel/fallback/tiny_logo.png +0 -0
  42. data/app/assets/javascripts/archangel/input/datetime_picker.js +46 -0
  43. data/app/assets/javascripts/archangel/input/meta_keywords.js +22 -0
  44. data/app/assets/javascripts/archangel/input/parent/collection.js +0 -0
  45. data/app/assets/javascripts/archangel/input/parent/field.js +0 -0
  46. data/app/assets/javascripts/archangel/input/parent/page.js +0 -0
  47. data/app/assets/javascripts/archangel/input/wysiwyg.js.erb +51 -0
  48. data/app/assets/javascripts/archangel/object/flash.js +49 -0
  49. data/app/assets/javascripts/archangel/object/routes/auth.js +22 -0
  50. data/app/assets/javascripts/archangel/object/routes/backend.js +103 -0
  51. data/app/assets/javascripts/archangel/object/routes/frontend.js +24 -0
  52. data/app/assets/javascripts/archangel/object/routes.js.erb +84 -0
  53. data/app/assets/javascripts/archangel/object/translate/datetime_picker.js.erb +26 -0
  54. data/app/assets/javascripts/archangel/object/translate/sortable.js.erb +10 -0
  55. data/app/assets/javascripts/archangel/object/translate.js +8 -0
  56. data/app/assets/javascripts/archangel/object/url.js +24 -0
  57. data/app/assets/javascripts/archangel/object.js +25 -0
  58. data/app/assets/javascripts/archangel/sortable.js +72 -0
  59. data/app/assets/stylesheets/archangel/.keep +0 -0
  60. data/app/controllers/archangel/application_controller.rb +177 -0
  61. data/app/controllers/archangel/auth/registrations_controller.rb +22 -0
  62. data/app/controllers/archangel/auth_controller.rb +20 -0
  63. data/app/controllers/archangel/backend/assets_controller.rb +338 -0
  64. data/app/controllers/archangel/backend/collections_controller.rb +257 -0
  65. data/app/controllers/archangel/backend/dashboards_controller.rb +27 -0
  66. data/app/controllers/archangel/backend/entries_controller.rb +344 -0
  67. data/app/controllers/archangel/backend/pages_controller.rb +299 -0
  68. data/app/controllers/archangel/backend/profiles_controller.rb +211 -0
  69. data/app/controllers/archangel/backend/sites_controller.rb +175 -0
  70. data/app/controllers/archangel/backend/templates_controller.rb +270 -0
  71. data/app/controllers/archangel/backend/users_controller.rb +366 -0
  72. data/app/controllers/archangel/backend/widgets_controller.rb +264 -0
  73. data/app/controllers/archangel/backend_controller.rb +21 -0
  74. data/app/controllers/archangel/frontend/pages_controller.rb +158 -0
  75. data/app/controllers/archangel/frontend_controller.rb +10 -0
  76. data/app/controllers/concerns/archangel/actionable_concern.rb +152 -0
  77. data/app/controllers/concerns/archangel/authenticatable_concern.rb +14 -0
  78. data/app/controllers/concerns/archangel/authorizable_concern.rb +14 -0
  79. data/app/controllers/concerns/archangel/paginatable_concern.rb +34 -0
  80. data/app/controllers/concerns/archangel/seoable_concern.rb +40 -0
  81. data/app/controllers/concerns/archangel/skip_authorizable_concern.rb +14 -0
  82. data/app/controllers/concerns/archangel/themable_concern.rb +27 -0
  83. data/app/helpers/archangel/application_helper.rb +34 -0
  84. data/app/helpers/archangel/auth_helper.rb +9 -0
  85. data/app/helpers/archangel/backend/assets_helper.rb +14 -0
  86. data/app/helpers/archangel/backend/collections_helper.rb +14 -0
  87. data/app/helpers/archangel/backend/dashboards_helper.rb +14 -0
  88. data/app/helpers/archangel/backend/entries_helper.rb +14 -0
  89. data/app/helpers/archangel/backend/pages_helper.rb +14 -0
  90. data/app/helpers/archangel/backend/sites_helper.rb +14 -0
  91. data/app/helpers/archangel/backend/templates_helper.rb +14 -0
  92. data/app/helpers/archangel/backend/users_helper.rb +14 -0
  93. data/app/helpers/archangel/backend/widgets_helper.rb +14 -0
  94. data/app/helpers/archangel/backend_helper.rb +9 -0
  95. data/app/helpers/archangel/flash_helper.rb +22 -0
  96. data/app/helpers/archangel/frontend/pages_helper.rb +14 -0
  97. data/app/helpers/archangel/frontend_helper.rb +9 -0
  98. data/app/inputs/archangel/date_picker_input.rb +27 -0
  99. data/app/inputs/archangel/date_time_picker_input.rb +27 -0
  100. data/app/inputs/archangel/field_classification_input.rb +32 -0
  101. data/app/inputs/archangel/language_input.rb +31 -0
  102. data/app/inputs/archangel/meta_keywords_input.rb +27 -0
  103. data/app/inputs/archangel/role_input.rb +31 -0
  104. data/app/inputs/archangel/theme_input.rb +29 -0
  105. data/app/inputs/archangel/time_picker_input.rb +27 -0
  106. data/app/inputs/archangel/wysiwyg_input.rb +15 -0
  107. data/app/jobs/archangel/application_job.rb +9 -0
  108. data/app/mailers/archangel/application_mailer.rb +12 -0
  109. data/app/models/archangel/application_record.rb +10 -0
  110. data/app/models/archangel/asset.rb +42 -0
  111. data/app/models/archangel/collection.rb +51 -0
  112. data/app/models/archangel/entry.rb +22 -0
  113. data/app/models/archangel/field.rb +30 -0
  114. data/app/models/archangel/page.rb +123 -0
  115. data/app/models/archangel/site.rb +54 -0
  116. data/app/models/archangel/template.rb +37 -0
  117. data/app/models/archangel/user.rb +62 -0
  118. data/app/models/archangel/widget.rb +62 -0
  119. data/app/policies/archangel/application_policy.rb +142 -0
  120. data/app/policies/archangel/asset_policy.rb +17 -0
  121. data/app/policies/archangel/collection_policy.rb +9 -0
  122. data/app/policies/archangel/entry_policy.rb +17 -0
  123. data/app/policies/archangel/page_policy.rb +9 -0
  124. data/app/policies/archangel/site_policy.rb +27 -0
  125. data/app/policies/archangel/template_policy.rb +9 -0
  126. data/app/policies/archangel/user_policy.rb +9 -0
  127. data/app/policies/archangel/widget_policy.rb +9 -0
  128. data/app/services/archangel/render_service.rb +98 -0
  129. data/app/services/archangel/template_render_service.rb +40 -0
  130. data/app/themes/default/assets/javascripts/default/auth/.keep +0 -0
  131. data/app/themes/default/assets/javascripts/default/auth.js +18 -0
  132. data/app/themes/default/assets/javascripts/default/backend/core.js +7 -0
  133. data/app/themes/default/assets/javascripts/default/backend.js +50 -0
  134. data/app/themes/default/assets/javascripts/default/common/cards.js +28 -0
  135. data/app/themes/default/assets/javascripts/default/common/flash.js +48 -0
  136. data/app/themes/default/assets/javascripts/default/common/navigation.js +30 -0
  137. data/app/themes/default/assets/javascripts/default/common/sidebar.js +114 -0
  138. data/app/themes/default/assets/javascripts/default/frontend/.keep +0 -0
  139. data/app/themes/default/assets/javascripts/default/frontend.js +18 -0
  140. data/app/themes/default/assets/stylesheets/default/auth/core.scss +15 -0
  141. data/app/themes/default/assets/stylesheets/default/auth.css +13 -0
  142. data/app/themes/default/assets/stylesheets/default/backend/core.scss +22 -0
  143. data/app/themes/default/assets/stylesheets/default/backend.css +13 -0
  144. data/app/themes/default/assets/stylesheets/default/common/_bootstrap.scss +49 -0
  145. data/app/themes/default/assets/stylesheets/default/common/_selectize.scss +299 -0
  146. data/app/themes/default/assets/stylesheets/default/common/_variables.scss +82 -0
  147. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_animate.scss +27 -0
  148. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_aside.scss +67 -0
  149. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_avatars.scss +42 -0
  150. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_badge.scss +3 -0
  151. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_breadcrumb-menu.scss +36 -0
  152. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_breadcrumb.scss +4 -0
  153. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_buttons.scss +408 -0
  154. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_callout.scss +58 -0
  155. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_card.scss +199 -0
  156. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_charts.scss +9 -0
  157. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_dropdown-menu-right.scss +8 -0
  158. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_dropdown.scss +70 -0
  159. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_footer.scss +9 -0
  160. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_forms.scss +4 -0
  161. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_grid.scss +15 -0
  162. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_input-group.scss +5 -0
  163. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_layout.scss +390 -0
  164. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_loading.scss +128 -0
  165. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_mixins.scss +1 -0
  166. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_mobile.scss +0 -0
  167. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_modal.scss +12 -0
  168. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_nav.scss +39 -0
  169. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_navbar.scss +122 -0
  170. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_others.scss +4 -0
  171. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_progress.scss +15 -0
  172. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_rtl.scss +287 -0
  173. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_sidebar.scss +462 -0
  174. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_switches.scss +286 -0
  175. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_tables.scss +20 -0
  176. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_temp.scss +39 -0
  177. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_typography.scss +36 -0
  178. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_utilities.scss +3 -0
  179. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_variables.scss +208 -0
  180. data/app/themes/default/assets/stylesheets/default/common/bootstrap/_widgets.scss +251 -0
  181. data/app/themes/default/assets/stylesheets/default/common/bootstrap/mixins/_all.scss +117 -0
  182. data/app/themes/default/assets/stylesheets/default/common/bootstrap/utilities/_background.scss +20 -0
  183. data/app/themes/default/assets/stylesheets/default/common/bootstrap/utilities/_borders.scss +17 -0
  184. data/app/themes/default/assets/stylesheets/default/common/bootstrap/utilities/_display.scss +14 -0
  185. data/app/themes/default/assets/stylesheets/default/frontend/core.scss +15 -0
  186. data/app/themes/default/assets/stylesheets/default/frontend.css +13 -0
  187. data/app/themes/default/views/layouts/auth.html.erb +35 -0
  188. data/app/themes/default/views/layouts/backend/_footer.html.erb +7 -0
  189. data/app/themes/default/views/layouts/backend/_header.html.erb +31 -0
  190. data/app/themes/default/views/layouts/backend/_sidebar.html.erb +53 -0
  191. data/app/themes/default/views/layouts/backend.html.erb +37 -0
  192. data/app/themes/default/views/layouts/frontend.liquid +22 -0
  193. data/app/uploaders/archangel/application_uploader.rb +65 -0
  194. data/app/uploaders/archangel/asset_uploader.rb +52 -0
  195. data/app/uploaders/archangel/avatar_uploader.rb +44 -0
  196. data/app/uploaders/archangel/favicon_uploader.rb +38 -0
  197. data/app/uploaders/archangel/logo_uploader.rb +44 -0
  198. data/app/views/archangel/backend/assets/_buttons.html.erb +18 -0
  199. data/app/views/archangel/backend/assets/_form.html.erb +27 -0
  200. data/app/views/archangel/backend/assets/edit.html.erb +21 -0
  201. data/app/views/archangel/backend/assets/index.html.erb +64 -0
  202. data/app/views/archangel/backend/assets/new.html.erb +21 -0
  203. data/app/views/archangel/backend/assets/show.html.erb +53 -0
  204. data/app/views/archangel/backend/collections/_buttons.html.erb +20 -0
  205. data/app/views/archangel/backend/collections/_field_fields.html.erb +9 -0
  206. data/app/views/archangel/backend/collections/_form.html.erb +24 -0
  207. data/app/views/archangel/backend/collections/edit.html.erb +21 -0
  208. data/app/views/archangel/backend/collections/index.html.erb +60 -0
  209. data/app/views/archangel/backend/collections/new.html.erb +21 -0
  210. data/app/views/archangel/backend/collections/show.html.erb +44 -0
  211. data/app/views/archangel/backend/dashboards/_buttons.html.erb +3 -0
  212. data/app/views/archangel/backend/dashboards/show.html.erb +23 -0
  213. data/app/views/archangel/backend/entries/_buttons.html.erb +20 -0
  214. data/app/views/archangel/backend/entries/_form.html.erb +25 -0
  215. data/app/views/archangel/backend/entries/edit.html.erb +21 -0
  216. data/app/views/archangel/backend/entries/index.html.erb +68 -0
  217. data/app/views/archangel/backend/entries/new.html.erb +21 -0
  218. data/app/views/archangel/backend/entries/show.html.erb +28 -0
  219. data/app/views/archangel/backend/pages/_buttons.html.erb +18 -0
  220. data/app/views/archangel/backend/pages/_form.html.erb +19 -0
  221. data/app/views/archangel/backend/pages/edit.html.erb +21 -0
  222. data/app/views/archangel/backend/pages/index.html.erb +68 -0
  223. data/app/views/archangel/backend/pages/new.html.erb +21 -0
  224. data/app/views/archangel/backend/pages/show.html.erb +49 -0
  225. data/app/views/archangel/backend/profiles/_buttons.html.erb +9 -0
  226. data/app/views/archangel/backend/profiles/_form.html.erb +31 -0
  227. data/app/views/archangel/backend/profiles/edit.html.erb +21 -0
  228. data/app/views/archangel/backend/profiles/show.html.erb +36 -0
  229. data/app/views/archangel/backend/sites/_additional_colors.html.erb +49 -0
  230. data/app/views/archangel/backend/sites/_alerts.html.erb +130 -0
  231. data/app/views/archangel/backend/sites/_badge.html.erb +99 -0
  232. data/app/views/archangel/backend/sites/_button.html.erb +243 -0
  233. data/app/views/archangel/backend/sites/_buttons.html.erb +9 -0
  234. data/app/views/archangel/backend/sites/_buttons_group.html.erb +230 -0
  235. data/app/views/archangel/backend/sites/_cards.html.erb +441 -0
  236. data/app/views/archangel/backend/sites/_carousel.html.erb +159 -0
  237. data/app/views/archangel/backend/sites/_colors.html.erb +41 -0
  238. data/app/views/archangel/backend/sites/_display_headings.html.erb +41 -0
  239. data/app/views/archangel/backend/sites/_dl.html.erb +38 -0
  240. data/app/views/archangel/backend/sites/_dropdowns.html.erb +475 -0
  241. data/app/views/archangel/backend/sites/_form.html.erb +37 -0
  242. data/app/views/archangel/backend/sites/_forms.html.erb +1176 -0
  243. data/app/views/archangel/backend/sites/_grays.html.erb +21 -0
  244. data/app/views/archangel/backend/sites/_headings.html.erb +21 -0
  245. data/app/views/archangel/backend/sites/_inline_text.html.erb +45 -0
  246. data/app/views/archangel/backend/sites/_jumbotron.html.erb +45 -0
  247. data/app/views/archangel/backend/sites/_list_group.html.erb +254 -0
  248. data/app/views/archangel/backend/sites/_modals.html.erb +41 -0
  249. data/app/views/archangel/backend/sites/_navs.html.erb +389 -0
  250. data/app/views/archangel/backend/sites/_pagination.html.erb +160 -0
  251. data/app/views/archangel/backend/sites/_social_buttons.html.erb +746 -0
  252. data/app/views/archangel/backend/sites/_tables.html.erb +372 -0
  253. data/app/views/archangel/backend/sites/edit.html.erb +21 -0
  254. data/app/views/archangel/backend/sites/sample.html.erb +38 -0
  255. data/app/views/archangel/backend/sites/show.html.erb +48 -0
  256. data/app/views/archangel/backend/templates/_buttons.html.erb +18 -0
  257. data/app/views/archangel/backend/templates/_form.html.erb +14 -0
  258. data/app/views/archangel/backend/templates/edit.html.erb +21 -0
  259. data/app/views/archangel/backend/templates/index.html.erb +60 -0
  260. data/app/views/archangel/backend/templates/new.html.erb +21 -0
  261. data/app/views/archangel/backend/templates/show.html.erb +34 -0
  262. data/app/views/archangel/backend/users/_buttons.html.erb +18 -0
  263. data/app/views/archangel/backend/users/_form.html.erb +24 -0
  264. data/app/views/archangel/backend/users/edit.html.erb +21 -0
  265. data/app/views/archangel/backend/users/index.html.erb +62 -0
  266. data/app/views/archangel/backend/users/new.html.erb +21 -0
  267. data/app/views/archangel/backend/users/show.html.erb +36 -0
  268. data/app/views/archangel/backend/widgets/_buttons.html.erb +18 -0
  269. data/app/views/archangel/backend/widgets/_form.html.erb +14 -0
  270. data/app/views/archangel/backend/widgets/edit.html.erb +21 -0
  271. data/app/views/archangel/backend/widgets/index.html.erb +60 -0
  272. data/app/views/archangel/backend/widgets/new.html.erb +21 -0
  273. data/app/views/archangel/backend/widgets/show.html.erb +42 -0
  274. data/app/views/archangel/errors/error_401.html.erb +13 -0
  275. data/app/views/archangel/errors/error_401.json.erb +4 -0
  276. data/app/views/archangel/errors/error_404.html.erb +13 -0
  277. data/app/views/archangel/errors/error_404.json.erb +4 -0
  278. data/app/views/archangel/frontend/pages/show.json.jbuilder +9 -0
  279. data/app/views/archangel/shared/_auth_token.html.erb +8 -0
  280. data/app/views/archangel/shared/_flash_messages.html.erb +9 -0
  281. data/app/views/devise/confirmations/new.html.erb +18 -0
  282. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  283. data/app/views/devise/mailer/email_changed.html.erb +7 -0
  284. data/app/views/devise/mailer/password_change.html.erb +3 -0
  285. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  286. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  287. data/app/views/devise/passwords/edit.html.erb +28 -0
  288. data/app/views/devise/passwords/new.html.erb +18 -0
  289. data/app/views/devise/registrations/edit.html.erb +45 -0
  290. data/app/views/devise/registrations/new.html.erb +41 -0
  291. data/app/views/devise/sessions/new.html.erb +28 -0
  292. data/app/views/devise/shared/_links.html.erb +41 -0
  293. data/app/views/devise/unlocks/new.html.erb +18 -0
  294. data/app/views/kaminari/_first_page.html.erb +11 -0
  295. data/app/views/kaminari/_gap.html.erb +8 -0
  296. data/app/views/kaminari/_last_page.html.erb +11 -0
  297. data/app/views/kaminari/_next_page.html.erb +11 -0
  298. data/app/views/kaminari/_page.html.erb +12 -0
  299. data/app/views/kaminari/_paginator.html.erb +25 -0
  300. data/app/views/kaminari/_prev_page.html.erb +11 -0
  301. data/archangel.gemspec +52 -0
  302. data/archangel.png +0 -0
  303. data/bin/rails +13 -0
  304. data/config/brakeman.yml +3 -0
  305. data/config/initializers/assets.rb +12 -0
  306. data/config/initializers/carrierwave.rb +14 -0
  307. data/config/initializers/devise.rb +341 -0
  308. data/config/initializers/kaminari.rb +13 -0
  309. data/config/initializers/liquid.rb +4 -0
  310. data/config/initializers/meta_tags.rb +31 -0
  311. data/config/initializers/simple_form.rb +177 -0
  312. data/config/initializers/simple_form_bootstrap.rb +177 -0
  313. data/config/locales/active_record.en.yml +80 -0
  314. data/config/locales/devise.en.yml +64 -0
  315. data/config/locales/devise_invitable.en.yml +31 -0
  316. data/config/locales/en.yml +109 -0
  317. data/config/locales/kaminari.en.yml +17 -0
  318. data/config/locales/responders.en.yml +12 -0
  319. data/config/locales/simple_form.en.yml +34 -0
  320. data/config/routes.rb +176 -0
  321. data/db/migrate/20171003191001_create_archangel_sites.rb +19 -0
  322. data/db/migrate/20171003210347_create_archangel_users.rb +68 -0
  323. data/db/migrate/20171005205520_create_archangel_templates.rb +18 -0
  324. data/db/migrate/20171005224054_create_archangel_pages.rb +30 -0
  325. data/db/migrate/20171006175939_create_archangel_widgets.rb +20 -0
  326. data/db/migrate/20171006184844_create_archangel_assets.rb +18 -0
  327. data/db/migrate/20171006194044_create_archangel_collections.rb +17 -0
  328. data/db/migrate/20171006194855_create_archangel_fields.rb +23 -0
  329. data/db/migrate/20171006195023_create_archangel_entries.rb +18 -0
  330. data/db/seeds.rb +65 -0
  331. data/docs/Developers.md +3 -0
  332. data/docs/ExtensionDevelopers.md +3 -0
  333. data/docs/ExtensionIdeas.md +132 -0
  334. data/docs/Release.md +25 -0
  335. data/docs/ThemeDevelopers.md +3 -0
  336. data/lib/archangel/application_responder.rb +15 -0
  337. data/lib/archangel/config.rb +21 -0
  338. data/lib/archangel/constants/language.rb +13 -0
  339. data/lib/archangel/constants/role.rb +13 -0
  340. data/lib/archangel/constants/theme.rb +18 -0
  341. data/lib/archangel/engine.rb +70 -0
  342. data/lib/archangel/i18n.rb +40 -0
  343. data/lib/archangel/liquid/drop.rb +119 -0
  344. data/lib/archangel/liquid/drops/page_drop.rb +33 -0
  345. data/lib/archangel/liquid/drops/site_drop.rb +30 -0
  346. data/lib/archangel/liquid/filters/link_to_filter.rb +35 -0
  347. data/lib/archangel/liquid/tags/application_tag.rb +17 -0
  348. data/lib/archangel/liquid/tags/asset_tag.rb +146 -0
  349. data/lib/archangel/liquid/tags/collection_tag.rb +135 -0
  350. data/lib/archangel/liquid/tags/collectionfor_tag.rb +91 -0
  351. data/lib/archangel/liquid/tags/csrf_meta_tags_tag.rb +28 -0
  352. data/lib/archangel/liquid/tags/gist_tag.rb +102 -0
  353. data/lib/archangel/liquid/tags/locale_tag.rb +27 -0
  354. data/lib/archangel/liquid/tags/meta_tags_tag.rb +30 -0
  355. data/lib/archangel/liquid/tags/text_direction_tag.rb +28 -0
  356. data/lib/archangel/liquid/tags/theme_javascript_tag.rb +30 -0
  357. data/lib/archangel/liquid/tags/theme_stylesheet_tag.rb +30 -0
  358. data/lib/archangel/liquid/tags/vimeo_tag.rb +125 -0
  359. data/lib/archangel/liquid/tags/widget_tag.rb +91 -0
  360. data/lib/archangel/liquid/tags/youtube_tag.rb +138 -0
  361. data/lib/archangel/liquid_view.rb +92 -0
  362. data/lib/archangel/testing_support/context/view_controller_context.rb +55 -0
  363. data/lib/archangel/testing_support/factories/archangel_assets.rb +20 -0
  364. data/lib/archangel/testing_support/factories/archangel_collections.rb +23 -0
  365. data/lib/archangel/testing_support/factories/archangel_entries.rb +17 -0
  366. data/lib/archangel/testing_support/factories/archangel_fields.rb +20 -0
  367. data/lib/archangel/testing_support/factories/archangel_pages.rb +39 -0
  368. data/lib/archangel/testing_support/factories/archangel_sites.rb +22 -0
  369. data/lib/archangel/testing_support/factories/archangel_templates.rb +22 -0
  370. data/lib/archangel/testing_support/factories/archangel_users.rb +53 -0
  371. data/lib/archangel/testing_support/factories/archangel_widgets.rb +19 -0
  372. data/lib/archangel/testing_support/fixtures/favicon.png +0 -0
  373. data/lib/archangel/testing_support/fixtures/image.gif +0 -0
  374. data/lib/archangel/testing_support/fixtures/stylesheet.css +3 -0
  375. data/lib/archangel/testing_support/helpers/authorization_helpers.rb +58 -0
  376. data/lib/archangel/testing_support/helpers/controller_helpers.rb +20 -0
  377. data/lib/archangel/testing_support/helpers/form_helpers.rb +18 -0
  378. data/lib/archangel/testing_support/helpers/routing_helpers.rb +22 -0
  379. data/lib/archangel/testing_support/matchers/match_stdout.rb +37 -0
  380. data/lib/archangel/testing_support/matchers/pundit.rb +17 -0
  381. data/lib/archangel/testing_support/rake/dummy_rake.rb +63 -0
  382. data/lib/archangel/testing_support/shared_contexts/rake.rb +26 -0
  383. data/lib/archangel/testing_support/support/capybara.rb +9 -0
  384. data/lib/archangel/testing_support/support/carrierwave.rb +13 -0
  385. data/lib/archangel/testing_support/support/controller.rb +11 -0
  386. data/lib/archangel/testing_support/support/database_cleaner.rb +22 -0
  387. data/lib/archangel/testing_support/support/devise.rb +7 -0
  388. data/lib/archangel/testing_support/support/factory_bot.rb +17 -0
  389. data/lib/archangel/testing_support/support/inputs.rb +24 -0
  390. data/lib/archangel/testing_support/support/liquid_filters.rb +23 -0
  391. data/lib/archangel/testing_support/support/liquid_tags.rb +23 -0
  392. data/lib/archangel/testing_support/support/shoulda.rb +12 -0
  393. data/lib/archangel/testing_support/support/verify_partial_doubles.rb +21 -0
  394. data/lib/archangel/testing_support/support.rb +26 -0
  395. data/lib/archangel/theme/themable_controller.rb +90 -0
  396. data/lib/archangel/version.rb +16 -0
  397. data/lib/archangel.rb +93 -0
  398. data/lib/generators/archangel/dummy/dummy_generator.rb +148 -0
  399. data/lib/generators/archangel/dummy/templates/config/database.yml +48 -0
  400. data/lib/generators/archangel/install/install_generator.rb +202 -0
  401. data/lib/generators/archangel/install/templates/.env.sample +4 -0
  402. data/lib/generators/archangel/install/templates/config/archangel.yml +54 -0
  403. data/lib/generators/archangel/install/templates/config/initializers/carrierwave.rb +15 -0
  404. data/lib/generators/archangel/install/templates/config/initializers/devise.rb +17 -0
  405. data/lib/generators/archangel/install/templates/vendor/assets/javascripts/archangel/auth.js +3 -0
  406. data/lib/generators/archangel/install/templates/vendor/assets/javascripts/archangel/backend.js +3 -0
  407. data/lib/generators/archangel/install/templates/vendor/assets/javascripts/archangel/frontend.js +3 -0
  408. data/lib/generators/archangel/install/templates/vendor/assets/stylesheets/archangel/auth.css +5 -0
  409. data/lib/generators/archangel/install/templates/vendor/assets/stylesheets/archangel/backend.css +5 -0
  410. data/lib/generators/archangel/install/templates/vendor/assets/stylesheets/archangel/frontend.css +5 -0
  411. data/lib/tasks/archangel/version_task.rake +8 -0
  412. data/lib/templates/erb/scaffold/_form.html.erb +13 -0
  413. data/package.json +33 -0
  414. data/spec/controllers/archangel/application_controller_spec.rb +183 -0
  415. data/spec/controllers/archangel/auth/registrations_controller_spec.rb +10 -0
  416. data/spec/controllers/archangel/auth_controller_spec.rb +8 -0
  417. data/spec/controllers/archangel/backend/assets_controller_spec.rb +237 -0
  418. data/spec/controllers/archangel/backend/collections_controller_spec.rb +252 -0
  419. data/spec/controllers/archangel/backend/dashboards_controller_spec.rb +27 -0
  420. data/spec/controllers/archangel/backend/entries_controller_spec.rb +273 -0
  421. data/spec/controllers/archangel/backend/pages_controller_spec.rb +204 -0
  422. data/spec/controllers/archangel/backend/profiles_controller_spec.rb +115 -0
  423. data/spec/controllers/archangel/backend/sites_controller_spec.rb +137 -0
  424. data/spec/controllers/archangel/backend/templates_controller_spec.rb +190 -0
  425. data/spec/controllers/archangel/backend/users_controller_spec.rb +181 -0
  426. data/spec/controllers/archangel/backend/widgets_controller_spec.rb +190 -0
  427. data/spec/controllers/archangel/backend_controller_spec.rb +8 -0
  428. data/spec/controllers/archangel/frontend/pages_controller_spec.rb +54 -0
  429. data/spec/controllers/archangel/frontend_controller_spec.rb +8 -0
  430. data/spec/features/auth/log_in_spec.rb +96 -0
  431. data/spec/features/auth/log_out_spec.rb +18 -0
  432. data/spec/features/auth/registration_spec.rb +27 -0
  433. data/spec/features/backend/duplicate_page_slugs_spec.rb +41 -0
  434. data/spec/features/frontend/drop_variables_spec.rb +125 -0
  435. data/spec/features/frontend/homepage_redirect_spec.rb +15 -0
  436. data/spec/helpers/archangel/application_helper_spec.rb +30 -0
  437. data/spec/helpers/archangel/auth_helper_spec.rb +8 -0
  438. data/spec/helpers/archangel/backend/assets_helper_spec.rb +10 -0
  439. data/spec/helpers/archangel/backend/collections_helper_spec.rb +10 -0
  440. data/spec/helpers/archangel/backend/dashboards_helper_spec.rb +10 -0
  441. data/spec/helpers/archangel/backend/entries_helper_spec.rb +10 -0
  442. data/spec/helpers/archangel/backend/pages_helper_spec.rb +10 -0
  443. data/spec/helpers/archangel/backend/sites_helper_spec.rb +10 -0
  444. data/spec/helpers/archangel/backend/templates_helper_spec.rb +10 -0
  445. data/spec/helpers/archangel/backend/users_helper_spec.rb +10 -0
  446. data/spec/helpers/archangel/backend/widgets_helper_spec.rb +10 -0
  447. data/spec/helpers/archangel/backend_helper_spec.rb +8 -0
  448. data/spec/helpers/archangel/flash_helper_spec.rb +29 -0
  449. data/spec/helpers/archangel/frontend/pages_helper_spec.rb +10 -0
  450. data/spec/helpers/archangel/frontend_helper_spec.rb +8 -0
  451. data/spec/inputs/archangel/date_picker_input_spec.rb +15 -0
  452. data/spec/inputs/archangel/date_time_picker_input_spec.rb +15 -0
  453. data/spec/inputs/archangel/field_classification_input_spec.rb +19 -0
  454. data/spec/inputs/archangel/language_input_spec.rb +17 -0
  455. data/spec/inputs/archangel/meta_keywords_input_spec.rb +13 -0
  456. data/spec/inputs/archangel/role_input_spec.rb +18 -0
  457. data/spec/inputs/archangel/theme_input_spec.rb +17 -0
  458. data/spec/inputs/archangel/time_picker_input_spec.rb +15 -0
  459. data/spec/inputs/archangel/wysiwyg_input_spec.rb +15 -0
  460. data/spec/jobs/archangel/application_job_spec.rb +8 -0
  461. data/spec/lib/archangel/liquid/filters/link_to_filter_spec.rb +63 -0
  462. data/spec/lib/archangel/liquid/tags/application_tag_spec.rb +12 -0
  463. data/spec/lib/archangel/liquid/tags/asset_tag_spec.rb +90 -0
  464. data/spec/lib/archangel/liquid/tags/collection_tag_spec.rb +105 -0
  465. data/spec/lib/archangel/liquid/tags/collectionfor_tag_spec.rb +164 -0
  466. data/spec/lib/archangel/liquid/tags/csrf_meta_tags_tag_spec.rb +33 -0
  467. data/spec/lib/archangel/liquid/tags/gist_tag_spec.rb +42 -0
  468. data/spec/lib/archangel/liquid/tags/locale_tag_spec.rb +22 -0
  469. data/spec/lib/archangel/liquid/tags/meta_tags_tag_spec.rb +24 -0
  470. data/spec/lib/archangel/liquid/tags/text_direction_tag_spec.rb +32 -0
  471. data/spec/lib/archangel/liquid/tags/theme_javascript_tag_spec.rb +25 -0
  472. data/spec/lib/archangel/liquid/tags/theme_stylesheet_tag_spec.rb +27 -0
  473. data/spec/lib/archangel/liquid/tags/vimeo_tag_spec.rb +39 -0
  474. data/spec/lib/archangel/liquid/tags/widget_tag_spec.rb +59 -0
  475. data/spec/lib/archangel/liquid/tags/youtube_tag_spec.rb +39 -0
  476. data/spec/lib/tasks/archangel/version_task_spec.rb +13 -0
  477. data/spec/mailers/archangel/application_job_spec.rb +8 -0
  478. data/spec/models/archangel/asset_spec.rb +32 -0
  479. data/spec/models/archangel/collection_spec.rb +25 -0
  480. data/spec/models/archangel/entry_spec.rb +20 -0
  481. data/spec/models/archangel/field_spec.rb +29 -0
  482. data/spec/models/archangel/page_spec.rb +94 -0
  483. data/spec/models/archangel/site_spec.rb +11 -0
  484. data/spec/models/archangel/template_spec.rb +24 -0
  485. data/spec/models/archangel/user_spec.rb +66 -0
  486. data/spec/models/archangel/widget_spec.rb +29 -0
  487. data/spec/policies/archangel/application_policy_spec.rb +8 -0
  488. data/spec/policies/archangel/asset_policy_spec.rb +22 -0
  489. data/spec/policies/archangel/collection_policy_spec.rb +20 -0
  490. data/spec/policies/archangel/entries_policy_spec.rb +22 -0
  491. data/spec/policies/archangel/page_policy_spec.rb +20 -0
  492. data/spec/policies/archangel/site_policy_spec.rb +30 -0
  493. data/spec/policies/archangel/template_policy_spec.rb +20 -0
  494. data/spec/policies/archangel/user_policy_spec.rb +20 -0
  495. data/spec/policies/archangel/widget_policy_spec.rb +20 -0
  496. data/spec/rails_helper.rb +46 -0
  497. data/spec/services/archangel/render_service_spec.rb +37 -0
  498. data/spec/services/archangel/template_render_service_spec.rb +42 -0
  499. data/spec/spec_helper.rb +23 -0
  500. data/spec/support/coveralls.rb +5 -0
  501. data/spec/uploaders/archangel/application_uploader_spec.rb +15 -0
  502. data/spec/uploaders/archangel/asset_uploader_spec.rb +71 -0
  503. data/spec/uploaders/archangel/avatar_uploader_spec.rb +50 -0
  504. data/spec/uploaders/archangel/favicon_uploader_spec.rb +39 -0
  505. data/spec/uploaders/archangel/logo_uploader_spec.rb +50 -0
  506. data/vendor/assets/icons/trumbowyg/icons.svg +1 -0
  507. data/vendor/assets/javascripts/sortable/sortable.js +3 -0
  508. data/vendor/assets/javascripts/trumbowyg/plugins/allowtagsfrompaste/trumbowyg.allowtagsfrompaste.js +143 -0
  509. data/vendor/assets/javascripts/trumbowyg/plugins/base64/trumbowyg.base64.js +129 -0
  510. data/vendor/assets/javascripts/trumbowyg/plugins/cleanpaste/trumbowyg.cleanpaste.js +110 -0
  511. data/vendor/assets/javascripts/trumbowyg/plugins/colors/trumbowyg.colors.js +183 -0
  512. data/vendor/assets/javascripts/trumbowyg/plugins/noembed/trumbowyg.noembed.js +104 -0
  513. data/vendor/assets/javascripts/trumbowyg/plugins/upload/trumbowyg.upload.js +261 -0
  514. data/vendor/assets/javascripts/trumbowyg/trumbowyg.js +1765 -0
  515. data/vendor/assets/stylesheets/trumbowyg/_trumbowyg.scss +831 -0
  516. data/vendor/assets/stylesheets/trumbowyg/plugins/colors/_trumbowyg.colors.scss +38 -0
  517. metadata +1003 -0
@@ -0,0 +1,34 @@
1
+ en:
2
+ simple_form:
3
+ 'yes': 'Yes'
4
+ 'no': 'No'
5
+ required:
6
+ text: 'required'
7
+ mark: '*'
8
+ # You can uncomment the line below if you need to overwrite the whole required html.
9
+ # When using html, text and mark won't be used.
10
+ # html: '<abbr title="required">*</abbr>'
11
+ error_notification:
12
+ default_message: "Please review the problems below:"
13
+ # labels:
14
+ # defaults:
15
+ # password: 'Password'
16
+ # user:
17
+ # new:
18
+ # email: 'E-mail to sign in.'
19
+ # edit:
20
+ # email: 'E-mail.'
21
+ hints:
22
+ template:
23
+ partial: Partial templates can only be used with Widgets
24
+ # include_blanks:
25
+ # defaults:
26
+ # age: 'Rather not say'
27
+ prompts:
28
+ page:
29
+ parent: Select parent page
30
+ template: Select template
31
+ template:
32
+ parent: Select parent template
33
+ widget:
34
+ template: Select template
data/config/routes.rb ADDED
@@ -0,0 +1,176 @@
1
+ # frozen_string_literal: true
2
+
3
+ Archangel::Engine.routes.draw do
4
+ # Pagination
5
+ concern :paginatable do
6
+ get "(page/:page)", action: :index, on: :collection, as: ""
7
+ end
8
+
9
+ # GET /account/login
10
+ # POST /account/login
11
+ # DELETE /account/logout
12
+ # POST /account/password
13
+ # GET /account/password/new
14
+ # GET /account/password/edit
15
+ # PATCH /account/password
16
+ # PUT /account/password
17
+ # GET /account/cancel
18
+ # POST /account
19
+ # GET /account/register
20
+ # GET /account/edit
21
+ # PATCH /account
22
+ # PUT /account
23
+ # DELETE /account
24
+ # POST /account/verification
25
+ # GET /account/verification/new
26
+ # GET /account/verification
27
+ # POST /account/unlock
28
+ # GET /account/unlock/new
29
+ # GET /account/unlock
30
+ # GET /account/invitation/accept
31
+ # GET /account/invitation/remove
32
+ # POST /account/invitation
33
+ # GET /account/invitation/new
34
+ # PATCH /account/invitation
35
+ # PUT /account/invitation
36
+ devise_for :users,
37
+ module: :devise,
38
+ class_name: "Archangel::User",
39
+ controllers: {
40
+ registrations: "archangel/auth/registrations"
41
+ },
42
+ path: "",
43
+ path_prefix: Archangel.config.auth_path,
44
+ skip: %i[omniauth_callbacks],
45
+ path_names: {
46
+ sign_in: "login",
47
+ sign_out: "logout",
48
+ sign_up: "register",
49
+ password: "password",
50
+ confirmation: "verification",
51
+ unlock: "unlock"
52
+ }
53
+
54
+ # GET /account => /account/login
55
+ get Archangel.config.auth_path,
56
+ to: redirect("#{Archangel.config.auth_path}/login")
57
+
58
+ namespace :backend, path: Archangel.config.backend_path do
59
+ # GET /backend/profile/edit
60
+ # GET /backend/profile
61
+ # PATCH /backend/profile
62
+ # PUT /backend/profile
63
+ # DELETE /backend/profile
64
+ resource :profile, except: %i[create new]
65
+
66
+ # GET /backend/site/edit
67
+ # GET /backend/site
68
+ # PATCH /backend/site
69
+ # PUT /backend/site
70
+ resource :site, only: %i[edit show update] do
71
+ # GET /backend/site/sample
72
+ get :sample
73
+ end
74
+
75
+ # GET /backend/assets
76
+ # GET /backend/assets/page/[PAGE]
77
+ # POST /backend/assets
78
+ # GET /backend/assets/new
79
+ # GET /backend/assets/[ID]/edit
80
+ # GET /backend/assets/[ID]
81
+ # PATCH /backend/assets/[ID]
82
+ # PUT /backend/assets/[ID]
83
+ # DELETE /backend/assets/[ID]
84
+ resources :assets, concerns: %i[paginatable] do
85
+ # POST /backend/assets/wysiwyg
86
+ post "wysiwyg", on: :collection
87
+ end
88
+
89
+ # GET /backend/collections
90
+ # GET /backend/collections/page/[PAGE]
91
+ # POST /backend/collections
92
+ # GET /backend/collections/new
93
+ # GET /backend/collections/[SLUG]/edit
94
+ # GET /backend/collections/[SLUG]
95
+ # PATCH /backend/collections/[SLUG]
96
+ # PUT /backend/collections/[SLUG]
97
+ # DELETE /backend/collections/[SLUG]
98
+ resources :collections, concerns: %i[paginatable] do
99
+ # GET /backend/collections/[COLLECTION_SLUG]/entries
100
+ # GET /backend/collections/[COLLECTION_SLUG]/entries/page/[PAGE]
101
+ # POST /backend/collections/[COLLECTION_SLUG]/entries
102
+ # GET /backend/collections/[COLLECTION_SLUG]/entries/new
103
+ # GET /backend/collections/[COLLECTION_SLUG]/entries/[ID]/edit
104
+ # GET /backend/collections/[COLLECTION_SLUG]/entries/[ID]
105
+ # PATCH /backend/collections/[COLLECTION_SLUG]/entries/[ID]
106
+ # PUT /backend/collections/[COLLECTION_SLUG]/entries/[ID]
107
+ # DELETE /backend/collections/[COLLECTION_SLUG]/entries/[ID]
108
+ resources :entries, concerns: %i[paginatable] do
109
+ # POST /backend/collections/[COLLECTION_SLUG]/entries/sort
110
+ # POST /backend/collections/[COLLECTION_SLUG]/entries/sort.json
111
+ post "sort", on: :collection, defaults: { format: :json }
112
+ end
113
+ end
114
+
115
+ # GET /backend/pages
116
+ # GET /backend/pages/page/[PAGE]
117
+ # POST /backend/pages
118
+ # GET /backend/pages/new
119
+ # GET /backend/pages/[ID]/edit
120
+ # GET /backend/pages/[ID]
121
+ # PATCH /backend/pages/[ID]
122
+ # PUT /backend/pages/[ID]
123
+ # DELETE /backend/pages/[ID]
124
+ resources :pages, concerns: %i[paginatable]
125
+
126
+ # GET /backend/templates
127
+ # GET /backend/templates/page/[PAGE]
128
+ # POST /backend/templates
129
+ # GET /backend/templates/new
130
+ # GET /backend/templates/[ID]/edit
131
+ # GET /backend/templates/[ID]
132
+ # PATCH /backend/templates/[ID]
133
+ # PUT /backend/templates/[ID]
134
+ # DELETE /backend/templates/[ID]
135
+ resources :templates, concerns: %i[paginatable]
136
+
137
+ # GET /backend/users
138
+ # GET /backend/users/page/[PAGE]
139
+ # POST /backend/users
140
+ # GET /backend/users/new
141
+ # GET /backend/users/[USERNAME]/edit
142
+ # GET /backend/users/[USERNAME]
143
+ # PATCH /backend/users/[USERNAME]
144
+ # PUT /backend/users/[USERNAME]
145
+ # DELETE /backend/users/[USERNAME]
146
+ resources :users, concerns: %i[paginatable]
147
+
148
+ # GET /backend/widgets
149
+ # GET /backend/widgets/page/[PAGE]
150
+ # POST /backend/widgets
151
+ # GET /backend/widgets/new
152
+ # GET /backend/widgets/[SLUG]/edit
153
+ # GET /backend/widgets/[SLUG]
154
+ # PATCH /backend/widgets/[SLUG]
155
+ # PUT /backend/widgets/[SLUG]
156
+ # DELETE /backend/widgets/[SLUG]
157
+ resources :widgets, concerns: %i[paginatable]
158
+
159
+ # GET /backend
160
+ root to: "dashboards#show"
161
+ end
162
+
163
+ namespace :frontend, path: Archangel.config.frontend_path do
164
+ # GET /[PATH]
165
+ get ":path", to: "pages#show", as: :page,
166
+ constraints: {
167
+ path: %r{[\w\-\/]+}
168
+ }
169
+
170
+ # GET /
171
+ root to: "pages#show"
172
+ end
173
+
174
+ # GET /
175
+ root to: "frontend/pages#show"
176
+ end
@@ -0,0 +1,19 @@
1
+ class CreateArchangelSites < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :archangel_sites do |t|
4
+ t.string :name, null: false, default: "Archangel"
5
+ t.string :theme
6
+ t.string :locale, null: false, default: "en"
7
+ t.string :logo
8
+ t.string :favicon
9
+ t.string :meta_keywords
10
+ t.string :meta_description
11
+ t.datetime :deleted_at
12
+
13
+ t.timestamps
14
+ end
15
+
16
+ add_index :archangel_sites, :deleted_at
17
+ add_index :archangel_sites, :name
18
+ end
19
+ end
@@ -0,0 +1,68 @@
1
+ class CreateArchangelUsers < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :archangel_users do |t|
4
+ ## Common
5
+ t.integer :site_id, null: false
6
+ t.string :name, null: false, default: ""
7
+ t.string :username, null: false, default: ""
8
+ t.string :role
9
+ t.string :avatar
10
+
11
+ ## Database authenticatable
12
+ t.string :email, null: false, default: ""
13
+ t.string :encrypted_password, null: false, default: ""
14
+
15
+ ## Recoverable
16
+ t.string :reset_password_token
17
+ t.datetime :reset_password_sent_at
18
+
19
+ ## Rememberable
20
+ t.datetime :remember_created_at
21
+
22
+ ## Trackable
23
+ t.integer :sign_in_count, default: 0, null: false
24
+ t.datetime :current_sign_in_at
25
+ t.datetime :last_sign_in_at
26
+ t.string :current_sign_in_ip
27
+ t.string :last_sign_in_ip
28
+
29
+ ## Confirmable
30
+ t.string :confirmation_token
31
+ t.datetime :confirmed_at
32
+ t.datetime :confirmation_sent_at
33
+ t.string :unconfirmed_email # Only if using reconfirmable
34
+
35
+ ## Lockable
36
+ t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
37
+ t.string :unlock_token # Only if unlock strategy is :email or :both
38
+ t.datetime :locked_at
39
+
40
+ ## Invitable
41
+ t.string :invitation_token
42
+ t.datetime :invitation_created_at
43
+ t.datetime :invitation_sent_at
44
+ t.datetime :invitation_accepted_at
45
+ t.integer :invitation_limit
46
+ t.references :invited_by, polymorphic: true
47
+ t.integer :invitations_count, default: 0
48
+
49
+ ## Common
50
+ t.datetime :deleted_at
51
+
52
+ t.timestamps null: false
53
+ end
54
+
55
+ add_index :archangel_users, :email, unique: true
56
+ add_index :archangel_users, :reset_password_token, unique: true
57
+ add_index :archangel_users, :confirmation_token, unique: true
58
+ add_index :archangel_users, :unlock_token, unique: true
59
+ add_index :archangel_users, :deleted_at
60
+ add_index :archangel_users, :name
61
+ add_index :archangel_users, :role
62
+ add_index :archangel_users, :site_id
63
+ add_index :archangel_users, :username, unique: true
64
+ add_index :archangel_users, :invitations_count
65
+ add_index :archangel_users, :invitation_token, unique: true
66
+ add_index :archangel_users, :invited_by_id
67
+ end
68
+ end
@@ -0,0 +1,18 @@
1
+ class CreateArchangelTemplates < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :archangel_templates do |t|
4
+ t.integer :site_id, null: false
5
+ t.integer :parent_id
6
+ t.string :name
7
+ t.text :content, default: ""
8
+ t.boolean :partial
9
+ t.datetime :deleted_at
10
+
11
+ t.timestamps
12
+ end
13
+
14
+ add_index :archangel_templates, :deleted_at
15
+ add_index :archangel_templates, :parent_id
16
+ add_index :archangel_templates, :site_id
17
+ end
18
+ end
@@ -0,0 +1,30 @@
1
+ class CreateArchangelPages < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :archangel_pages do |t|
4
+ t.integer :site_id, null: false
5
+ t.integer :parent_id
6
+ t.integer :template_id
7
+ t.string :title
8
+ t.string :slug
9
+ t.string :path
10
+ t.text :content, default: ""
11
+ t.boolean :homepage, default: false
12
+ t.string :meta_keywords
13
+ t.string :meta_description
14
+ t.datetime :published_at
15
+ t.datetime :deleted_at
16
+
17
+ t.timestamps
18
+ end
19
+
20
+ add_index :archangel_pages, :deleted_at
21
+ add_index :archangel_pages, :homepage
22
+ add_index :archangel_pages, :parent_id
23
+ add_index :archangel_pages, :path, unique: true
24
+ add_index :archangel_pages, :published_at
25
+ add_index :archangel_pages, :site_id
26
+ add_index :archangel_pages, :slug
27
+ add_index :archangel_pages, :template_id
28
+ add_index :archangel_pages, :title
29
+ end
30
+ end
@@ -0,0 +1,20 @@
1
+ class CreateArchangelWidgets < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :archangel_widgets do |t|
4
+ t.integer :site_id, null: false
5
+ t.string :name
6
+ t.string :slug
7
+ t.text :content
8
+ t.integer :template_id
9
+ t.datetime :deleted_at
10
+
11
+ t.timestamps
12
+ end
13
+
14
+ add_index :archangel_widgets, :deleted_at
15
+ add_index :archangel_widgets, :name
16
+ add_index :archangel_widgets, :site_id
17
+ add_index :archangel_widgets, :slug, unique: true
18
+ add_index :archangel_widgets, :template_id
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ class CreateArchangelAssets < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :archangel_assets do |t|
4
+ t.integer :site_id, null: false
5
+ t.string :file_name
6
+ t.string :file
7
+ t.string :content_type
8
+ t.integer :file_size
9
+ t.datetime :deleted_at
10
+
11
+ t.timestamps
12
+ end
13
+
14
+ add_index :archangel_assets, :deleted_at
15
+ add_index :archangel_assets, :file_name, unique: true
16
+ add_index :archangel_assets, :site_id
17
+ end
18
+ end
@@ -0,0 +1,17 @@
1
+ class CreateArchangelCollections < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :archangel_collections do |t|
4
+ t.integer :site_id, null: false
5
+ t.string :name
6
+ t.string :slug
7
+ t.datetime :deleted_at
8
+
9
+ t.timestamps
10
+ end
11
+
12
+ add_index :archangel_collections, :deleted_at
13
+ add_index :archangel_collections, :name
14
+ add_index :archangel_collections, :site_id
15
+ add_index :archangel_collections, :slug, unique: true
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ class CreateArchangelFields < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :archangel_fields do |t|
4
+ t.integer :collection_id, null: false
5
+ t.string :label
6
+ t.string :slug
7
+ t.string :value
8
+ t.string :classification
9
+ t.boolean :required
10
+ t.integer :position
11
+ t.datetime :deleted_at
12
+
13
+ t.timestamps
14
+ end
15
+
16
+ add_index :archangel_fields, :classification
17
+ add_index :archangel_fields, :collection_id
18
+ add_index :archangel_fields, :deleted_at
19
+ add_index :archangel_fields, :label
20
+ add_index :archangel_fields, :required
21
+ add_index :archangel_fields, :slug
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ class CreateArchangelEntries < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :archangel_entries do |t|
4
+ t.integer :collection_id, null: false
5
+ t.text :value
6
+ t.integer :position
7
+ t.datetime :available_at
8
+ t.datetime :deleted_at
9
+
10
+ t.timestamps
11
+ end
12
+
13
+ add_index :archangel_entries, :available_at
14
+ add_index :archangel_entries, :collection_id
15
+ add_index :archangel_entries, :deleted_at
16
+ add_index :archangel_entries, :position
17
+ end
18
+ end
data/db/seeds.rb ADDED
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "highline/import"
4
+
5
+ def prompt_for_admin_email
6
+ ENV.fetch("ADMIN_EMAIL") do
7
+ ask("Email address: ") do |question|
8
+ question.default = "archangel@example.com"
9
+ end
10
+ end
11
+ end
12
+
13
+ def prompt_for_admin_name
14
+ ENV.fetch("ADMIN_NAME") do
15
+ ask("Name: ") { |question| question.default = "Archangel User" }
16
+ end
17
+ end
18
+
19
+ def prompt_for_admin_username
20
+ ENV.fetch("ADMIN_USERNAME") do
21
+ ask("Username: ") { |question| question.default = "administrator" }
22
+ end
23
+ end
24
+
25
+ def prompt_for_admin_password
26
+ ENV.fetch("ADMIN_PASWORD") do
27
+ ask("Password: ") { |question| question.echo = "*" }
28
+ end
29
+ end
30
+
31
+ # Site
32
+ site = Archangel::Site.first_or_create! do |item|
33
+ item.name = "Archangel"
34
+ item.locale = "en"
35
+ end
36
+
37
+ # User
38
+ unless Archangel::User.first
39
+ email = prompt_for_admin_email
40
+ name = prompt_for_admin_name
41
+ username = prompt_for_admin_username
42
+ password = prompt_for_admin_password
43
+
44
+ attributes = {
45
+ site: site,
46
+ email: email,
47
+ username: username,
48
+ name: name,
49
+ role: "admin",
50
+ password: password,
51
+ password_confirmation: password,
52
+ confirmed_at: Time.current
53
+ }
54
+
55
+ Archangel::User.create!(attributes)
56
+ end
57
+
58
+ # Homepage
59
+ Archangel::Page.published
60
+ .find_or_create_by!(site: site, homepage: true) do |item|
61
+ item.slug = "homepage-#{Time.now.to_i}"
62
+ item.title = "Welcome to Archangel"
63
+ item.content = "<p>Welcome to your new site.</p>"
64
+ item.published_at = Time.current
65
+ end
@@ -0,0 +1,3 @@
1
+ # Archangel Development
2
+
3
+ TODO
@@ -0,0 +1,3 @@
1
+ # Extension Developers
2
+
3
+ TODO
@@ -0,0 +1,132 @@
1
+ # Extension Ideas
2
+
3
+ In no particular order
4
+
5
+ - Preview
6
+ - Page preview
7
+ - Angular
8
+ - Helper extension to include for themes built with Angular
9
+ - React
10
+ - Helper extension to include for themes built with React
11
+ - Vue
12
+ - Helper extension to include for themes built with Vue
13
+ - Aurelia
14
+ - Helper extension to include for themes built with Aurelia
15
+ - Search
16
+ - Elasticsearch
17
+ - Ransack
18
+ - Comments
19
+ - Facebook
20
+ - Disqus
21
+ - Database
22
+ - Auto approve
23
+ - Manual approve
24
+ - Migrate
25
+ - Export for Wordpress
26
+ - Export for Refinary
27
+ - Import from Wordpress
28
+ - Import from Refinary
29
+ - Forms
30
+ - WYSIWYG form custom form builder
31
+ - Honeypot
32
+ - Time
33
+ - Captcha
34
+ - Multi-tenant
35
+ - Types
36
+ - Domain
37
+ - Subdomain
38
+ - Schema switching
39
+ - Manage domains
40
+ - CLI to create schemas
41
+ - Worker to create schemas
42
+ - Notifications
43
+ - Notify when errors happen
44
+ - Adapaters
45
+ - Slack
46
+ - Hipchat
47
+ - Email
48
+ - json_ld
49
+ - API
50
+ - CORS
51
+ - Rate limits
52
+ - GraphQL
53
+ - Social Like
54
+ - Types
55
+ - Facebook
56
+ - Database
57
+ - Toggle enabled/disabled by default
58
+ - Toggle enabled/disabled per page
59
+ - Social Share
60
+ - Toggle enabled/disabled by default
61
+ - Toggle enabled/disabled per page
62
+ - robots.txt
63
+ - RSS feed
64
+ - Sitemap
65
+ - Columns
66
+ - changefreq
67
+ - always
68
+ - hourly
69
+ - daily
70
+ - weekly
71
+ - monthly
72
+ - yearly
73
+ - never
74
+ - priority
75
+ - 0.0..1.0
76
+ - sitemap.xml
77
+ - sitemap.xml.gz
78
+ - Update robots.txt
79
+ - Rebuild on Page save (worker)
80
+ - Notify search engines
81
+ - 2FA
82
+ - Opt-in
83
+ - Force all
84
+ - Oauth
85
+ - Splash Page
86
+ - Types
87
+ - Overlay
88
+ - Redirect
89
+ - Start At
90
+ - End At
91
+ - Remember with Javascript cookie
92
+ - Cookie lifetime
93
+ - Pixel trackers
94
+ - Location
95
+ - Head
96
+ - Body (top)
97
+ - Body (bottom)
98
+ - Statistics/Analytics
99
+ - Google Analytics
100
+ - Graphs/Charts
101
+ - History/Versions
102
+ - Roll back to previous versions
103
+ - Activity
104
+ - Log activity in backend
105
+ - Icons
106
+ - favicon
107
+ - Apple
108
+ - Android
109
+ - Windows
110
+ - Stylesheet
111
+ - Site Stylesheet
112
+ - Per page Stylesheet
113
+ - Javascript
114
+ - Site Javascript
115
+ - Per page Javascript
116
+ - Community
117
+ - Allow registering
118
+ - User listing
119
+ - User profile
120
+ - User search/filter
121
+ - Friends/Followers
122
+ - Events
123
+ - Calendar
124
+ - Reoccurring events
125
+ - Reminders
126
+ - sms
127
+ - email
128
+ - Static
129
+ - Generate static frontend site
130
+ - Help
131
+ - Help and instructions for each section in Backend
132
+ - Monetize YouTube videos
data/docs/Release.md ADDED
@@ -0,0 +1,25 @@
1
+ # Releasing Gem
2
+
3
+ 1. Bump the gem version in `lib/archangel/version.rb`
4
+
5
+ Follow the rules of [Semantic Versioning](https://semver.org/). For example:
6
+
7
+ * `1.2.3`
8
+ * `1.3.0-beta`
9
+ * `2.0.0-rc.1`
10
+
11
+ 2. Build the gem
12
+
13
+ ```
14
+ $ bundle exec rake build
15
+ ```
16
+
17
+ This will create a new .gem file in `pkg/`. Fix any errors or warnings that come up.
18
+
19
+ 3. Create the gem, tag it in Github and release to Rubygems
20
+
21
+ ```
22
+ $ bundle exec rake release
23
+ ```
24
+
25
+ 4. Profit!
@@ -0,0 +1,3 @@
1
+ # Theme Developers
2
+
3
+ TODO