locomotivecms 3.0.0.pre.alpha.3 → 3.0.0.pre.beta.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 (361) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -8
  3. data/app/api/locomotive/api.rb +1 -0
  4. data/app/api/locomotive/api/entities/content_entry_entity.rb +1 -0
  5. data/app/api/locomotive/api/entities/content_type_entity.rb +2 -1
  6. data/app/api/locomotive/api/entities/site_entity.rb +4 -0
  7. data/app/api/locomotive/api/entities/theme_asset_entity.rb +3 -3
  8. data/app/api/locomotive/api/forms/base_form.rb +0 -6
  9. data/app/api/locomotive/api/forms/content_type_field_form.rb +6 -10
  10. data/app/api/locomotive/api/forms/content_type_form.rb +26 -4
  11. data/app/api/locomotive/api/middlewares/params_decoder_middleware.rb +91 -0
  12. data/app/api/locomotive/api/resources/content_type_resource.rb +7 -2
  13. data/app/api/locomotive/api/resources/current_site_resource.rb +10 -2
  14. data/app/assets/images/locomotive/favicon.png +0 -0
  15. data/app/assets/javascripts/locomotive/not_logged_in.js.coffee +11 -1
  16. data/app/assets/javascripts/locomotive/views/application_view.js.coffee +0 -76
  17. data/app/assets/javascripts/locomotive/views/content_assets/edit_image_view.js.coffee +3 -1
  18. data/app/assets/javascripts/locomotive/views/dashboard/show_view.js.coffee +33 -1
  19. data/app/assets/javascripts/locomotive/views/developers_documentation/show_view.js.coffee +9 -0
  20. data/app/assets/javascripts/locomotive/views/editable_elements/edit_view.js.coffee +3 -1
  21. data/app/assets/javascripts/locomotive/views/editable_elements/index_view.js.coffee +11 -11
  22. data/app/assets/javascripts/locomotive/views/inputs/text_view.js.coffee +16 -0
  23. data/app/assets/javascripts/locomotive/views/pages/_form_view.js.coffee +0 -158
  24. data/app/assets/javascripts/locomotive/views/pages/edit_view.js.coffee +0 -41
  25. data/app/assets/javascripts/locomotive/views/public_submission_accounts/edit_view.js.coffee +7 -0
  26. data/app/assets/javascripts/locomotive/views/shared/form_view.js.coffee +11 -3
  27. data/app/assets/javascripts/locomotive/views/shared/list_view.js.coffee +4 -2
  28. data/app/assets/javascripts/locomotive/views/translations/index_view.js.coffee +5 -0
  29. data/app/assets/stylesheets/locomotive/application.scss +4 -0
  30. data/app/assets/stylesheets/locomotive/base/_fonts.scss +5 -5
  31. data/app/assets/stylesheets/locomotive/base/form/_base.scss +9 -1
  32. data/app/assets/stylesheets/locomotive/components/_activity_feed.scss +66 -0
  33. data/app/assets/stylesheets/locomotive/components/_content_assets.scss +27 -8
  34. data/app/assets/stylesheets/locomotive/components/_developers.scss +34 -0
  35. data/app/assets/stylesheets/locomotive/components/_error.scss +37 -0
  36. data/app/assets/stylesheets/locomotive/components/_list.scss +6 -0
  37. data/app/assets/stylesheets/locomotive/components/_main.scss +4 -0
  38. data/app/assets/stylesheets/locomotive/components/_misc.scss +1 -0
  39. data/app/assets/stylesheets/locomotive/components/_translations.scss +13 -0
  40. data/app/assets/stylesheets/locomotive/components/header/_base.scss +7 -2
  41. data/app/assets/stylesheets/locomotive/components/misc/_modal.scss +13 -0
  42. data/app/assets/stylesheets/locomotive/components/misc/_notify.scss +2 -2
  43. data/app/assets/stylesheets/locomotive/components/not_logged_in/_sign_in_and_up.scss +11 -1
  44. data/app/assets/stylesheets/locomotive/components/sidebar/_pages_tree.scss +2 -2
  45. data/app/assets/stylesheets/locomotive/error.scss +12 -0
  46. data/app/assets/stylesheets/locomotive/globals/_bootstrap.scss +1 -1
  47. data/app/assets/stylesheets/locomotive/globals/_mixins.scss +8 -4
  48. data/app/assets/stylesheets/locomotive/globals/_variables.scss +2 -0
  49. data/app/assets/stylesheets/locomotive/not_logged_in.scss +4 -0
  50. data/app/controllers/locomotive/accounts_controller.rb +6 -1
  51. data/app/controllers/locomotive/base_controller.rb +1 -1
  52. data/app/controllers/locomotive/concerns/exception_controller.rb +2 -1
  53. data/app/controllers/locomotive/concerns/site_dispatcher_controller.rb +2 -1
  54. data/app/controllers/locomotive/content_assets_controller.rb +2 -2
  55. data/app/controllers/locomotive/content_entries_controller.rb +2 -2
  56. data/app/controllers/locomotive/current_site_controller.rb +5 -1
  57. data/app/controllers/locomotive/custom_fields/select_options_controller.rb +1 -1
  58. data/app/controllers/locomotive/dashboard_controller.rb +2 -0
  59. data/app/controllers/locomotive/developers_documentation_controller.rb +11 -0
  60. data/app/controllers/locomotive/editable_elements_controller.rb +11 -10
  61. data/app/controllers/locomotive/errors_controller.rb +15 -0
  62. data/app/controllers/locomotive/pages_controller.rb +3 -3
  63. data/app/controllers/locomotive/public_submission_accounts_controller.rb +42 -0
  64. data/app/controllers/locomotive/translations_controller.rb +9 -23
  65. data/app/helpers/locomotive/base_helper.rb +25 -23
  66. data/app/helpers/locomotive/content_assets_helper.rb +8 -0
  67. data/app/helpers/locomotive/content_entries_helper.rb +13 -19
  68. data/app/helpers/locomotive/content_types_helper.rb +9 -12
  69. data/app/helpers/locomotive/custom_fields_helper.rb +1 -0
  70. data/app/helpers/locomotive/dashboard_helper.rb +91 -0
  71. data/app/helpers/locomotive/developers_documentation_helper.rb +32 -0
  72. data/app/helpers/locomotive/editable_elements_helper.rb +25 -14
  73. data/app/helpers/locomotive/errors_helper.rb +21 -0
  74. data/app/helpers/locomotive/my_account_helper.rb +10 -8
  75. data/app/helpers/locomotive/pages_helper.rb +1 -1
  76. data/app/helpers/locomotive/public_submission_accounts_helper.rb +11 -0
  77. data/app/helpers/locomotive/shared/accounts_helper.rb +2 -2
  78. data/app/helpers/locomotive/sites_helper.rb +15 -11
  79. data/app/helpers/locomotive/translations_helper.rb +21 -13
  80. data/app/inputs/locomotive/api_key_input.rb +2 -0
  81. data/app/inputs/locomotive/array_input.rb +8 -3
  82. data/app/inputs/locomotive/code_input.rb +1 -47
  83. data/app/inputs/locomotive/document_picker_input.rb +1 -0
  84. data/app/inputs/locomotive/rte_input.rb +2 -0
  85. data/app/inputs/locomotive/toggle_input.rb +2 -0
  86. data/app/models/locomotive/activity.rb +32 -0
  87. data/app/models/locomotive/concerns/content_entry/localized.rb +12 -1
  88. data/app/models/locomotive/concerns/content_type/entry_template.rb +52 -0
  89. data/app/models/locomotive/concerns/page/editable_elements.rb +0 -111
  90. data/app/models/locomotive/concerns/page/layout.rb +21 -6
  91. data/app/models/locomotive/concerns/site/access_points.rb +24 -3
  92. data/app/models/locomotive/concerns/site/locales.rb +7 -27
  93. data/app/models/locomotive/content_asset.rb +0 -4
  94. data/app/models/locomotive/content_entry.rb +10 -8
  95. data/app/models/locomotive/content_type.rb +12 -1
  96. data/app/models/locomotive/editable_element.rb +11 -106
  97. data/app/models/locomotive/editable_file.rb +6 -53
  98. data/app/models/locomotive/editable_model.rb +13 -0
  99. data/app/models/locomotive/editable_text.rb +0 -51
  100. data/app/models/locomotive/page.rb +31 -17
  101. data/app/models/locomotive/site.rb +12 -13
  102. data/app/models/locomotive/theme_asset.rb +0 -4
  103. data/app/models/locomotive/translation.rb +50 -35
  104. data/app/policies/locomotive/content_type_policy.rb +4 -0
  105. data/app/policies/locomotive/site_policy.rb +4 -0
  106. data/app/services/locomotive/concerns/activity_service.rb +27 -0
  107. data/app/services/locomotive/content_asset_service.rb +16 -2
  108. data/app/services/locomotive/content_entry_service.rb +77 -8
  109. data/app/services/locomotive/content_type_service.rb +6 -2
  110. data/app/services/locomotive/editable_element_service.rb +11 -4
  111. data/app/services/locomotive/membership_service.rb +20 -4
  112. data/app/services/locomotive/page_parsing_service.rb +94 -23
  113. data/app/services/locomotive/page_service.rb +61 -3
  114. data/app/services/locomotive/site_service.rb +43 -1
  115. data/app/services/locomotive/translation_service.rb +51 -0
  116. data/app/uploaders/locomotive/picture_uploader.rb +5 -1
  117. data/app/views/locomotive/accounts/{new.html.haml → new.html.slim} +0 -0
  118. data/app/views/locomotive/content_assets/{_dropzone.html.haml → _dropzone.html.slim} +4 -3
  119. data/app/views/locomotive/content_assets/{_list.html.haml → _list.html.slim} +11 -9
  120. data/app/views/locomotive/content_assets/{_nav.html.haml → _nav.html.slim} +5 -5
  121. data/app/views/locomotive/content_assets/{_search_form.html.haml → _search_form.html.slim} +1 -1
  122. data/app/views/locomotive/content_assets/edit_in_drawer.html.slim +27 -0
  123. data/app/views/locomotive/content_assets/{index.html.haml → index.html.slim} +4 -4
  124. data/app/views/locomotive/content_assets/{index_in_drawer.html.haml → index_in_drawer.html.slim} +1 -1
  125. data/app/views/locomotive/content_entries/{_entry.html.haml → _entry.html.slim} +3 -3
  126. data/app/views/locomotive/content_entries/{_list.html.haml → _list.html.slim} +9 -8
  127. data/app/views/locomotive/content_entries/{edit.html.haml → edit.html.slim} +5 -0
  128. data/app/views/locomotive/content_entries/form/{_actions.html.haml → _actions.html.slim} +0 -0
  129. data/app/views/locomotive/content_entries/form/{_advanced.html.haml → _advanced.html.slim} +0 -0
  130. data/app/views/locomotive/content_entries/form/{_main.html.haml → _main.html.slim} +0 -0
  131. data/app/views/locomotive/content_entries/form/{_panes.html.haml → _panes.html.slim} +0 -0
  132. data/app/views/locomotive/content_entries/form/{_seo.html.haml → _seo.html.slim} +0 -0
  133. data/app/views/locomotive/content_entries/form/_tabs.html.slim +13 -0
  134. data/app/views/locomotive/content_entries/{index.html.haml → index.html.slim} +22 -9
  135. data/app/views/locomotive/content_entries/{new.html.haml → new.html.slim} +0 -0
  136. data/app/views/locomotive/current_site/{_domain.html.haml → _domain.html.slim} +3 -3
  137. data/app/views/locomotive/current_site/{_locale.html.haml → _locale.html.slim} +4 -4
  138. data/app/views/locomotive/current_site/{_membership.html.haml → _membership.html.slim} +7 -6
  139. data/app/views/locomotive/current_site/{edit.html.haml → edit.html.slim} +1 -1
  140. data/app/views/locomotive/current_site/form/{_access_points.html.haml → _access_points.html.slim} +1 -0
  141. data/app/views/locomotive/current_site/form/{_advanced.html.haml → _advanced.html.slim} +0 -0
  142. data/app/views/locomotive/current_site/form/{_main.html.haml → _main.html.slim} +0 -0
  143. data/app/views/locomotive/current_site/form/{_panes.html.haml → _panes.html.slim} +0 -0
  144. data/app/views/locomotive/current_site/form/{_seo.html.haml → _seo.html.slim} +0 -0
  145. data/app/views/locomotive/current_site/form/_tabs.html.slim +14 -0
  146. data/app/views/locomotive/custom_fields/select_options/{_option.html.haml → _option.html.slim} +7 -7
  147. data/app/views/locomotive/custom_fields/select_options/{edit.html.haml → edit.html.slim} +0 -0
  148. data/app/views/locomotive/dashboard/show.html.slim +28 -0
  149. data/app/views/locomotive/developers_documentation/_api.html.slim +44 -0
  150. data/app/views/locomotive/developers_documentation/_wagon.html.slim +42 -0
  151. data/app/views/locomotive/developers_documentation/show.html.slim +11 -0
  152. data/app/views/locomotive/devise_mailer/reset_password_instructions.html.slim +12 -0
  153. data/app/views/locomotive/editable_elements/_edit.html.slim +52 -0
  154. data/app/views/locomotive/editable_elements/{_form.html.haml → _form.html.slim} +12 -3
  155. data/app/views/locomotive/editable_elements/index.html.slim +8 -0
  156. data/app/views/locomotive/editable_elements/{index_without_preview.html.haml → index_without_preview.html.slim} +5 -4
  157. data/app/views/locomotive/errors/404.html.slim +2 -0
  158. data/app/views/locomotive/errors/500.html.slim +2 -0
  159. data/app/views/locomotive/errors/no_site.html.slim +7 -0
  160. data/app/views/locomotive/layouts/application.html.slim +42 -0
  161. data/app/views/locomotive/layouts/error.html.slim +24 -0
  162. data/app/views/locomotive/layouts/{live_editing.html.haml → live_editing.html.slim} +10 -10
  163. data/app/views/locomotive/layouts/not_logged_in.html.slim +26 -0
  164. data/app/views/locomotive/layouts/{without_site.html.haml → without_site.html.slim} +9 -6
  165. data/app/views/locomotive/memberships/{edit.html.haml → edit.html.slim} +0 -0
  166. data/app/views/locomotive/memberships/{new.html.haml → new.html.slim} +0 -0
  167. data/app/views/locomotive/my_account/{edit.html.haml → edit.html.slim} +1 -1
  168. data/app/views/locomotive/my_account/form/{_actions.html.haml → _actions.html.slim} +0 -0
  169. data/app/views/locomotive/my_account/form/{_api.html.haml → _api.html.slim} +0 -1
  170. data/app/views/locomotive/my_account/form/{_credentials.html.haml → _credentials.html.slim} +0 -0
  171. data/app/views/locomotive/my_account/form/{_main.html.haml → _main.html.slim} +0 -0
  172. data/app/views/locomotive/my_account/form/{_panes.html.haml → _panes.html.slim} +1 -1
  173. data/app/views/locomotive/my_account/form/_tabs.html.slim +7 -0
  174. data/app/views/locomotive/notifications/{new_content_entry.html.haml → new_content_entry.html.slim} +11 -11
  175. data/app/views/locomotive/pages/{edit.html.haml → edit.html.slim} +0 -0
  176. data/app/views/locomotive/pages/form/{_actions.html.haml → _actions.html.slim} +0 -0
  177. data/app/views/locomotive/pages/form/{_main.html.haml → _main.html.slim} +0 -0
  178. data/app/views/locomotive/pages/form/{_panes.html.haml → _panes.html.slim} +0 -0
  179. data/app/views/locomotive/pages/form/{_seo.html.haml → _seo.html.slim} +0 -0
  180. data/app/views/locomotive/pages/form/{_tabs.html.haml → _tabs.html.slim} +1 -1
  181. data/app/views/locomotive/pages/{new.html.haml → new.html.slim} +0 -0
  182. data/app/views/locomotive/pages/show.html.slim +2 -0
  183. data/app/views/locomotive/passwords/{edit.html.haml → edit.html.slim} +6 -6
  184. data/app/views/locomotive/passwords/{new.html.haml → new.html.slim} +6 -6
  185. data/app/views/locomotive/public_submission_accounts/_account.html.slim +19 -0
  186. data/app/views/locomotive/public_submission_accounts/edit.html.slim +16 -0
  187. data/app/views/locomotive/registrations/{new.html.haml → new.html.slim} +2 -4
  188. data/app/views/locomotive/sessions/{new.html.haml → new.html.slim} +2 -4
  189. data/app/views/locomotive/shared/_footer.html.slim +2 -0
  190. data/app/views/locomotive/shared/{_form_actions.html.haml → _form_actions.html.slim} +4 -4
  191. data/app/views/locomotive/shared/_head.html.slim +39 -0
  192. data/app/views/locomotive/shared/{_header.html.haml → _header.html.slim} +10 -10
  193. data/app/views/locomotive/shared/_locale_picker_link.html.slim +11 -0
  194. data/app/views/locomotive/shared/{_main_app_head.html.haml → _main_app_head.html.slim} +0 -0
  195. data/app/views/locomotive/shared/{_main_app_head_before_backbone.html.haml → _main_app_head_before_backbone.html.slim} +0 -0
  196. data/app/views/locomotive/shared/{_main_app_header.html.haml → _main_app_header.html.slim} +0 -0
  197. data/app/views/locomotive/shared/{_sidebar.html.haml → _sidebar.html.slim} +6 -0
  198. data/app/views/locomotive/shared/{_sidebar_without_site.html.haml → _sidebar_without_site.html.slim} +0 -0
  199. data/app/views/locomotive/shared/actions/{_contents.html.haml → _contents.html.slim} +1 -1
  200. data/app/views/locomotive/shared/header/{_account.html.haml → _account.html.slim} +1 -1
  201. data/app/views/locomotive/shared/header/_account_menu.html.slim +5 -0
  202. data/app/views/locomotive/shared/header/_brand.html.slim +5 -0
  203. data/app/views/locomotive/shared/header/{_site.html.haml → _site.html.slim} +2 -2
  204. data/app/views/locomotive/shared/rte/{_image_popover.html.haml → _image_popover.html.slim} +5 -5
  205. data/app/views/locomotive/shared/rte/{_link_popover.html.haml → _link_popover.html.slim} +5 -5
  206. data/app/views/locomotive/shared/rte/_toolbar.html.slim +62 -0
  207. data/app/views/locomotive/shared/sidebar/_content_types.html.slim +16 -0
  208. data/app/views/locomotive/shared/sidebar/_link.html.slim +10 -0
  209. data/app/views/locomotive/shared/sidebar/{_my_account.html.haml → _my_account.html.slim} +2 -2
  210. data/app/views/locomotive/shared/sidebar/_page.html.slim +33 -0
  211. data/app/views/locomotive/shared/sidebar/_pages.html.slim +11 -0
  212. data/app/views/locomotive/sites/{_site.html.haml → _site.html.slim} +3 -3
  213. data/app/views/locomotive/sites/{index.html.haml → index.html.slim} +3 -3
  214. data/app/views/locomotive/sites/{new.html.haml → new.html.slim} +0 -0
  215. data/app/views/locomotive/translations/_form.html.slim +9 -0
  216. data/app/views/locomotive/translations/edit.html.slim +7 -0
  217. data/app/views/locomotive/translations/index.html.slim +41 -0
  218. data/config/initializers/slim.rb +1 -0
  219. data/config/initializers/time_format.rb +15 -0
  220. data/config/locales/admin_ui.en.yml +65 -49
  221. data/config/locales/default.en.yml +3 -0
  222. data/config/locales/default.fr.yml +4 -1
  223. data/config/locales/simple_form.en.yml +14 -8
  224. data/config/routes.rb +6 -0
  225. data/features/support/env.rb +1 -1
  226. data/lib/generators/locomotive/install/install_generator.rb +48 -0
  227. data/lib/generators/locomotive/install/templates/heroku.rb +29 -0
  228. data/lib/generators/locomotive/install/templates/locomotive.rb +5 -2
  229. data/lib/generators/locomotive/install/templates/mongoid.yml +1 -1
  230. data/lib/generators/locomotive/install/templates/mongoid_heroku.yml +78 -0
  231. data/lib/locomotive.rb +0 -1
  232. data/lib/locomotive/configuration.rb +2 -6
  233. data/lib/locomotive/dependencies.rb +1 -2
  234. data/lib/locomotive/dragonfly.rb +4 -5
  235. data/lib/locomotive/engine.rb +10 -13
  236. data/lib/locomotive/middlewares.rb +0 -1
  237. data/lib/locomotive/middlewares/custom_public_exceptions.rb +19 -0
  238. data/lib/locomotive/middlewares/site.rb +49 -16
  239. data/lib/locomotive/simple_form.rb +67 -26
  240. data/lib/locomotive/steam/middlewares/missing_translations.rb +48 -0
  241. data/lib/locomotive/steam/middlewares/page_editing.rb +48 -0
  242. data/lib/locomotive/steam/services/api_entry_submission_service.rb +38 -0
  243. data/lib/locomotive/steam_adaptor.rb +25 -6
  244. data/lib/locomotive/version.rb +1 -1
  245. data/lib/tasks/locomotive.rake +27 -47
  246. data/spec/dummy/app/views/foo/index.html.slim +1 -0
  247. data/spec/dummy/app/views/locomotive/shared/{_main_app_head.html.haml → _main_app_head.html.slim} +0 -0
  248. data/spec/dummy/config.ru +4 -0
  249. data/spec/dummy/config/application.rb +4 -0
  250. data/spec/dummy/config/environments/profile.rb +48 -0
  251. data/spec/dummy/config/mongoid.yml +6 -6
  252. data/spec/lib/locomotive/steam/services/api_entry_submission_service_spec.rb +39 -0
  253. data/spec/models/locomotive/concerns/content_type/entry_template_spec.rb +55 -0
  254. data/spec/models/locomotive/concerns/page/layout_spec.rb +2 -2
  255. data/spec/models/locomotive/concerns/site/access_points_spec.rb +87 -2
  256. data/spec/models/locomotive/concerns/site/locales_spec.rb +2 -3
  257. data/spec/models/locomotive/content_entry_spec.rb +22 -37
  258. data/spec/models/locomotive/page_spec.rb +11 -0
  259. data/spec/models/locomotive/site_spec.rb +0 -36
  260. data/spec/requests/site_spec.rb +28 -0
  261. data/spec/support/capybara.rb +27 -0
  262. data/spec/support/factories.rb +9 -0
  263. data/spec/support/features/session_helpers.rb +21 -0
  264. data/spec/support/locomotive.rb +0 -4
  265. data/spec/support/matchers.rb +0 -25
  266. data/vendor/assets/javascripts/locomotive/highlight.pack.js +1 -0
  267. data/vendor/assets/stylesheets/locomotive/highlightjs/default.css +155 -0
  268. data/vendor/assets/stylesheets/locomotive/highlightjs/github.css +123 -0
  269. metadata +179 -195
  270. data/app/assets/images/locomotive/background/body.png +0 -0
  271. data/app/assets/images/locomotive/form/error-arrow.png +0 -0
  272. data/app/assets/images/locomotive/form/input-sep.png +0 -0
  273. data/app/assets/images/locomotive/icons/start.png +0 -0
  274. data/app/assets/images/locomotive/list/empty.png +0 -0
  275. data/app/assets/images/locomotive/list/item-left.png +0 -0
  276. data/app/assets/images/locomotive/nocoffee.png +0 -0
  277. data/app/assets/images/locomotive/plugins/sites_picker_top_arrow.png +0 -0
  278. data/app/assets/images/locomotive/rails.png +0 -0
  279. data/app/assets/javascripts/locomotive/views/pages/index_view.js.coffee +0 -11
  280. data/app/cells/locomotive/content_locale_picker/show.html.haml +0 -7
  281. data/app/cells/locomotive/content_locale_picker_cell.rb +0 -21
  282. data/app/helpers/locomotive/installation_helper.rb +0 -9
  283. data/app/inputs/locomotive/locale_input.rb +0 -41
  284. data/app/inputs/locomotive/small_code_input.rb +0 -23
  285. data/app/models/locomotive/concerns/content_entry/notifications.rb +0 -33
  286. data/app/models/locomotive/concerns/content_type/item_template.rb +0 -49
  287. data/app/models/locomotive/concerns/page/parse.rb +0 -133
  288. data/app/presenters/locomotive/account_presenter.rb +0 -20
  289. data/app/presenters/locomotive/base_presenter.rb +0 -144
  290. data/app/presenters/locomotive/content_asset_presenter.rb +0 -51
  291. data/app/presenters/locomotive/content_entry_presenter.rb +0 -177
  292. data/app/presenters/locomotive/content_field_presenter.rb +0 -76
  293. data/app/presenters/locomotive/content_type_presenter.rb +0 -82
  294. data/app/presenters/locomotive/editable_control_presenter.rb +0 -19
  295. data/app/presenters/locomotive/editable_element_presenter.rb +0 -46
  296. data/app/presenters/locomotive/editable_file_presenter.rb +0 -36
  297. data/app/presenters/locomotive/editable_text_presenter.rb +0 -40
  298. data/app/presenters/locomotive/membership_presenter.rb +0 -35
  299. data/app/presenters/locomotive/page_presenter.rb +0 -81
  300. data/app/presenters/locomotive/site_presenter.rb +0 -40
  301. data/app/presenters/locomotive/snippet_presenter.rb +0 -22
  302. data/app/presenters/locomotive/theme_asset_presenter.rb +0 -61
  303. data/app/presenters/locomotive/translation_presenter.rb +0 -9
  304. data/app/views/locomotive/content_assets/edit_in_drawer.html.haml +0 -26
  305. data/app/views/locomotive/content_entries/form/_tabs.html.haml +0 -9
  306. data/app/views/locomotive/current_site/form/_tabs.html.haml +0 -14
  307. data/app/views/locomotive/dashboard/show.html.haml +0 -0
  308. data/app/views/locomotive/devise_mailer/reset_password_instructions.html.haml +0 -12
  309. data/app/views/locomotive/editable_elements/_edit.html.haml +0 -49
  310. data/app/views/locomotive/editable_elements/_edit_with_content_entry.html.haml +0 -21
  311. data/app/views/locomotive/editable_elements/index.html.haml +0 -8
  312. data/app/views/locomotive/errors/404.html.haml +0 -7
  313. data/app/views/locomotive/errors/500.html.haml +0 -7
  314. data/app/views/locomotive/errors/no_page.html.haml +0 -1
  315. data/app/views/locomotive/errors/no_site.html.haml +0 -1
  316. data/app/views/locomotive/layouts/application.html.haml +0 -42
  317. data/app/views/locomotive/layouts/error.html.haml +0 -1
  318. data/app/views/locomotive/layouts/not_logged_in.html.haml +0 -18
  319. data/app/views/locomotive/my_account/form/_tabs.html.haml +0 -7
  320. data/app/views/locomotive/pages/_editable_elements.html.haml +0 -64
  321. data/app/views/locomotive/pages/index.html.haml +0 -22
  322. data/app/views/locomotive/pages/show.html.haml +0 -2
  323. data/app/views/locomotive/shared/_footer.html.haml +0 -2
  324. data/app/views/locomotive/shared/_head.html.haml +0 -40
  325. data/app/views/locomotive/shared/_locale_picker_link.html.haml +0 -6
  326. data/app/views/locomotive/shared/header/_account_menu.html.haml +0 -5
  327. data/app/views/locomotive/shared/header/_brand.html.haml +0 -4
  328. data/app/views/locomotive/shared/rte/_toolbar.html.haml +0 -62
  329. data/app/views/locomotive/shared/sidebar/_content_types.html.haml +0 -15
  330. data/app/views/locomotive/shared/sidebar/_link.html.haml +0 -10
  331. data/app/views/locomotive/shared/sidebar/_page.html.haml +0 -33
  332. data/app/views/locomotive/shared/sidebar/_pages.html.haml +0 -11
  333. data/app/views/locomotive/translations/_form.html.haml +0 -12
  334. data/app/views/locomotive/translations/edit.html.haml +0 -15
  335. data/app/views/locomotive/translations/index.html.haml +0 -30
  336. data/app/views/locomotive/translations/new.html.haml +0 -12
  337. data/config/initializers/haml.rb +0 -2
  338. data/config/initializers/locomotive_loaded_first.rb +0 -19
  339. data/config/locales/formtastic.bg.yml +0 -113
  340. data/config/locales/formtastic.cs.yml +0 -125
  341. data/config/locales/formtastic.de.yml +0 -106
  342. data/config/locales/formtastic.es.yml +0 -84
  343. data/config/locales/formtastic.et.yml +0 -103
  344. data/config/locales/formtastic.fr.yml +0 -109
  345. data/config/locales/formtastic.it.yml +0 -99
  346. data/config/locales/formtastic.ja.yml +0 -103
  347. data/config/locales/formtastic.nb.yml +0 -103
  348. data/config/locales/formtastic.nl.yml +0 -85
  349. data/config/locales/formtastic.pl.yml +0 -105
  350. data/config/locales/formtastic.pt-BR.yml +0 -70
  351. data/config/locales/formtastic.pt.yml +0 -70
  352. data/config/locales/formtastic.ru.yml +0 -106
  353. data/config/locales/formtastic.sk.yml +0 -125
  354. data/config/locales/formtastic.sr.yml +0 -112
  355. data/config/locales/formtastic.zh-CN.yml +0 -112
  356. data/lib/locomotive/haml.rb +0 -1
  357. data/lib/locomotive/middlewares/page_editing.rb +0 -41
  358. data/spec/dummy/app/views/foo/index.html.haml +0 -1
  359. data/spec/dummy/config/initializers/haml.rb +0 -2
  360. data/spec/support/asset_host_stubs.rb +0 -17
  361. data/spec/support/controller.rb +0 -32
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d4e648a311d3ce09779e9d4fed45788a010785e6
4
- data.tar.gz: 27930ac44850b8afc52dc064057092c20433212a
3
+ metadata.gz: 6b4009f2488429e00c7d89ed8d530b3063ce5ebe
4
+ data.tar.gz: 523238ddc19928abc3f801e8d09d096baf5a8701
5
5
  SHA512:
6
- metadata.gz: a199883b73bc3ba82d6e103bd9afbd6a1f87c7d3819dc38b78af40f869d699a353cfb9b5f0bbeceffbe0f6884ec3c07935f321635fc45e3d84e6c0501fa32be6
7
- data.tar.gz: be98674b892846c91b6001dc6fd17e8d85b90b4e2b24737acefee63f9db30b116612b356ab66618a67d4a4f8ba17a6700c2f4fe8283e34744613317281558336
6
+ metadata.gz: 75a9d1de7dab0849ba152f7844ba387dff44dc97ac4bb17da20d3ca7a352085dd46757a9681db1f4e141a39943c11b7a0e8b827976f66ae51bfb5b07173b827a
7
+ data.tar.gz: 40665a5be1905a6405f88d476091a79fe2be2530b78abfebe879bf5102c4c969e9ced4ec74bc8f7adefa33b7ae85a48dd14a327e1b343c2a759c266c7eb8a6d0
data/Gemfile CHANGED
@@ -22,7 +22,7 @@ group :development do
22
22
  # gem 'custom_fields', github: 'locomotivecms/custom_fields', ref: '15cceb66ed'
23
23
 
24
24
  # gem 'locomotivecms_steam', path: '../in_progress/steam', require: false
25
- # gem 'locomotivecms_steam', github: 'locomotivecms/steam', ref: 'c56798fc5d4a332', require: false
25
+ # gem 'locomotivecms_steam', github: 'locomotivecms/steam', ref: '2650a1c', require: false
26
26
 
27
27
  # gem 'locomotive-aloha-rails', path: '../gems/aloha-rails' # for Developers
28
28
  # gem 'locomotive-tinymce-rails', path: '../gems/tinymce-rails' # for Developers
@@ -32,33 +32,40 @@ group :development do
32
32
  # gem 'carrierwave-mongoid', git: 'git://github.com/locomotivecms/carrierwave-mongoid.git'
33
33
 
34
34
  gem 'thor'
35
- gem 'github_api'
36
35
 
37
36
  gem 'quiet_assets'
38
37
 
39
- gem 'ruby-prof'
40
-
41
38
  gem 'better_errors'
42
39
  gem 'binding_of_caller'
40
+ gem 'pry-byebug'
43
41
 
44
42
  # gem 'unicorn-rails' # Using unicorn_rails instead of webrick (default server)
45
43
  # gem 'thin'
46
44
  gem 'puma'
47
45
  end
48
46
 
47
+ group :profile, :development do
48
+ gem 'ruby-prof'
49
+ end
50
+
49
51
  group :test do
50
52
  # gem 'launchy'
51
53
  # gem 'capybara', '~> 2.0.2'
52
54
  # gem 'cucumber-rails', require: false
53
- # gem 'poltergeist'
55
+ gem 'simplecov'
56
+
57
+
58
+ gem 'capybara', '~> 2.4.4'
59
+ gem 'poltergeist'
54
60
 
55
- gem 'shoulda-matchers', '~> 2.7.0'
56
61
  gem 'grape-entity-matchers'
62
+ gem 'shoulda-matchers', '2.7.0'
63
+
57
64
  gem 'factory_girl_rails'
58
65
  gem 'pickle'
59
- gem 'json_spec', '~> 1.1.4'
66
+ gem 'json_spec', '~> 1.1.4'
60
67
  gem 'database_cleaner'
61
- gem 'timecop', '~> 0.7.1'
68
+ gem 'timecop', '~> 0.7.1'
62
69
 
63
70
  # gem 'debugger', git: 'git://github.com/cldwalker/debugger.git'
64
71
  end
@@ -8,6 +8,7 @@ module Locomotive
8
8
  Rack::Builder.new do
9
9
  use Locomotive::API::Middlewares::LocaleMiddleware
10
10
  use Locomotive::API::Middlewares::LoggerMiddleware
11
+ use Locomotive::API::Middlewares::ParamsDecoderMiddleware
11
12
  run Locomotive::API::Dispatch
12
13
  end
13
14
  end
@@ -28,6 +28,7 @@ module Locomotive
28
28
  method_name = :"expose_#{field.type}_field"
29
29
 
30
30
  hash[name] = send(method_name, name) if respond_to?(method_name)
31
+
31
32
  hash
32
33
  end
33
34
  end
@@ -4,7 +4,8 @@ module Locomotive
4
4
 
5
5
  class ContentTypeEntity < BaseEntity
6
6
 
7
- expose :name, :slug, :description, :label_field_name, :order_direction, :public_submission_enabled, :raw_item_template
7
+ expose :name, :slug, :description, :label_field_name, :order_direction,
8
+ :public_submission_enabled, :entry_template, :display_settings
8
9
 
9
10
  expose :fields, using: ContentTypeFieldEntity do |content_type, _|
10
11
  content_type.ordered_entries_custom_fields || []
@@ -19,6 +19,10 @@ module Locomotive
19
19
  site.picture.url
20
20
  end
21
21
 
22
+ expose :picture_thumbnail_url do |site, _|
23
+ Locomotive::Dragonfly.resize_url site.picture.url, '100x100#'
24
+ end
25
+
22
26
  end
23
27
 
24
28
  end
@@ -4,10 +4,10 @@ module Locomotive
4
4
 
5
5
  class ThemeAssetEntity < BaseEntity
6
6
 
7
- expose :content_type, :folder, :checksum
7
+ expose :content_type, :local_path, :folder, :checksum
8
8
 
9
- expose :local_path do |theme_asset, _|
10
- theme_asset.local_path(true)
9
+ expose :filename do |theme_asset, _|
10
+ theme_asset.read_attribute(:source_filename)
11
11
  end
12
12
 
13
13
  expose :url do |theme_asset, _|
@@ -66,12 +66,6 @@ module Locomotive
66
66
  instance_variable_set("@#{name}", value)
67
67
  end
68
68
 
69
- # def attributes
70
- # self.class.attributes.inject({}) do |hash, attribute|
71
- # hash.merge(attribute => send(attribute))
72
- # end
73
- # end
74
-
75
69
  end
76
70
 
77
71
  end
@@ -4,17 +4,17 @@ module Locomotive
4
4
 
5
5
  class ContentTypeFieldForm < BaseForm
6
6
 
7
- attr_accessor :content_type_service, :content_type
7
+ attr_accessor :content_type_service, :existing_field
8
8
 
9
9
  attrs :_id, :name, :type, :label, :hint,
10
10
  :required, :localized, :unique, :position,
11
11
  :text_formatting, :select_options_attributes,
12
12
  :target, :inverse_of, :order_by, :ui_enabled,
13
- :class_name
13
+ :class_name, :_destroy
14
14
 
15
- def initialize(content_type_service, content_type, attributes)
15
+ def initialize(content_type_service, existing_field, attributes)
16
16
  self.content_type_service = content_type_service
17
- self.content_type = content_type
17
+ self.existing_field = existing_field
18
18
  super(attributes)
19
19
  end
20
20
 
@@ -41,12 +41,8 @@ module Locomotive
41
41
  private
42
42
 
43
43
  def attach_id_to_option(name, attributes)
44
- field = content_type.try(:find_entries_custom_field, self.name)
45
-
46
- return if field.nil?
47
-
48
- if option = field.select_options.where(name: name).first
49
- # update the option instead of creating it
44
+ return if existing_field.nil?
45
+ if option = existing_field.select_options.where(name: name).first
50
46
  attributes[:_id] = option._id
51
47
  end
52
48
  end
@@ -10,8 +10,9 @@ module Locomotive
10
10
  :order_by, :order_direction, :group_by,
11
11
  :public_submission_enabled,
12
12
  :public_submission_accounts,
13
- :raw_item_template,
14
- :entries_custom_fields_attributes
13
+ :entry_template,
14
+ :entries_custom_fields_attributes,
15
+ :display_settings
15
16
 
16
17
  # @param [ Site ] the current site, or site to scope to
17
18
  def initialize(site, attributes = {})
@@ -20,8 +21,8 @@ module Locomotive
20
21
  end
21
22
 
22
23
  # If the current content type exists, look up the fields and add their IDs
23
- # to the attributes hash. If not, set the entries_custom_fields_attributes
24
- # as-is
24
+ # to the attributes hash. If not, set the entries_custom_fields_attributes
25
+ # as-is
25
26
  def fields=(fields)
26
27
  self.entries_custom_fields_attributes = fields.map do |attrs|
27
28
  if field = existing_content_type.try(:find_entries_custom_field, attrs[:name])
@@ -38,6 +39,27 @@ module Locomotive
38
39
  end.compact.map(&:id)
39
40
  end
40
41
 
42
+ # deprecated
43
+ def raw_item_template=(template)
44
+ set_attribute(:entry_template, template)
45
+ end
46
+
47
+ def order_by=(field)
48
+ field = '_position' if field == 'manually'
49
+ set_attribute(:order_by, field)
50
+ end
51
+
52
+ def display_settings=(settings)
53
+ (settings || {}).each do |k, v|
54
+ if k == 'position'
55
+ settings[k] = v.to_i
56
+ else
57
+ settings[k] = v == 'true'
58
+ end
59
+ end
60
+ set_attribute(:display_settings, settings)
61
+ end
62
+
41
63
  private
42
64
 
43
65
  def existing_content_type
@@ -0,0 +1,91 @@
1
+ # Issue here: https://github.com/ruby-grape/grape/issues/1028
2
+ # Solution: https://github.com/typhoeus/typhoeus/blob/master/lib/rack/typhoeus/middleware/params_decoder/helper.rb
3
+ #
4
+ # MIT License Paul Dix, David Balatero, Hans Hasselberg
5
+ #
6
+ module Locomotive
7
+ module API
8
+ module Middlewares
9
+
10
+ class ParamsDecoderMiddleware
11
+
12
+ def initialize(app)
13
+ @app = app
14
+ end
15
+
16
+ def call(env)
17
+ request = Rack::Request.new(env)
18
+ decode(request.params).each_pair { |k, v| update_params request, k, v }
19
+ @app.call(env)
20
+ end
21
+
22
+ private
23
+
24
+ # Persist params change in environment. Extracted from:
25
+ # https://github.com/rack/rack/blob/master/lib/rack/request.rb#L243
26
+ def update_params(req, k, v)
27
+ found = false
28
+ if req.GET.has_key?(k)
29
+ found = true
30
+ req.GET[k] = v
31
+ end
32
+ if req.POST.has_key?(k)
33
+ found = true
34
+ req.POST[k] = v
35
+ end
36
+ unless found
37
+ req.GET[k] = v
38
+ end
39
+ end
40
+
41
+ def decode!(hash)
42
+ return hash unless hash.is_a?(Hash)
43
+ hash.each_pair do |key,value|
44
+ if value.is_a?(Hash)
45
+ decode!(value)
46
+ hash[key] = convert(value)
47
+ end
48
+ end
49
+ hash
50
+ end
51
+
52
+ def decode(hash)
53
+ decode!(hash.dup)
54
+ end
55
+
56
+ # Checks if Hash is an Array encoded as a Hash.
57
+ # Specifically will check for the Hash to have this
58
+ # form: {'0' => v0, '1' => v1, .., 'n' => vN }
59
+ #
60
+ # @param hash [Hash]
61
+ #
62
+ # @return [Boolean] True if its a encoded Array, else false.
63
+ def encoded?(hash)
64
+ return false if hash.empty?
65
+ if hash.keys.size > 1
66
+ keys = hash.keys.map{|i| i.to_i if i.respond_to?(:to_i)}.sort
67
+ keys == hash.keys.size.times.to_a
68
+ else
69
+ hash.keys.first =~ /0/
70
+ end
71
+ end
72
+
73
+ # If the Hash is an array encoded by typhoeus an array is returned
74
+ # else the self is returned
75
+ #
76
+ # @param hash [Hash] The Hash to convert into an Array.
77
+ #
78
+ # @return [Arraya/Hash]
79
+ def convert(hash)
80
+ if encoded?(hash)
81
+ hash.sort{ |a, b| a[0].to_i <=> b[0].to_i }.map{ |key, value| value }
82
+ else
83
+ hash
84
+ end
85
+ end
86
+
87
+ end
88
+
89
+ end
90
+ end
91
+ end
@@ -58,7 +58,9 @@ module Locomotive
58
58
  optional :order_direction
59
59
  optional :group_by
60
60
  optional :label_field_name
61
- optional :raw_item_template
61
+ optional :entry_template
62
+ optional :raw_item_template # deprecated
63
+ optional :display_settings
62
64
  optional :public_submission_account_emails
63
65
  optional :public_submission_accounts
64
66
  end
@@ -94,12 +96,15 @@ module Locomotive
94
96
  optional :inverse_of
95
97
  optional :order_by
96
98
  optional :ui_enabled
99
+ optional :_destroy
97
100
  end
98
101
  optional :order_by
99
102
  optional :order_direction
100
103
  optional :group_by
101
104
  optional :label_field_name
102
- optional :raw_item_template
105
+ optional :entry_template
106
+ optional :raw_item_template # deprecated
107
+ optional :display_settings
103
108
  optional :public_submission_account_emails
104
109
  optional :public_submission_accounts
105
110
  end
@@ -11,6 +11,14 @@ module Locomotive
11
11
  authenticate_locomotive_account!
12
12
  end
13
13
 
14
+ helpers do
15
+
16
+ def service
17
+ @service ||= Locomotive::SiteService.new(current_account)
18
+ end
19
+
20
+ end
21
+
14
22
  desc 'Show current_site'
15
23
  get do
16
24
  authorize current_site, :show?
@@ -31,14 +39,14 @@ module Locomotive
31
39
  optional :locales, type: Array
32
40
  optional :domains, type: Array
33
41
  optional :timezone
42
+ optional :picture
34
43
  end
35
44
  end
36
45
  put do
37
46
  authorize current_site, :update?
38
47
 
39
48
  current_site_form = Forms::SiteForm.new(permitted_params[:site])
40
- current_site.assign_attributes(current_site_form.serializable_hash)
41
- current_site.save
49
+ service.update(current_site, current_site_form.serializable_hash)
42
50
 
43
51
  present current_site, with: entity_klass
44
52
  end
@@ -1 +1,11 @@
1
- #= require jquery
1
+ #= require jquery
2
+ #= require_self
3
+ #= require underscore
4
+ #= require locomotive/bootstrap-notify
5
+ #= require ./utils/notify
6
+
7
+ window.Locomotive = {}
8
+
9
+ $ ->
10
+ _.each window.flash_messages, (couple) ->
11
+ Locomotive.notify couple[1], couple[0]
@@ -42,79 +42,3 @@ class Locomotive.Views.ApplicationView extends Backbone.View
42
42
  height = max_height - @header_view.height()
43
43
 
44
44
  @$('> .wrapper').height(height)
45
-
46
- # center_ui_dialog: ->
47
- # $(window).resize ->
48
- # $('.ui-dialog-content:visible').dialog('option', 'position', 'center')
49
-
50
- # add_submenu_behaviours: ->
51
- # $('#submenu ul li.hoverable').each ->
52
- # timer = null
53
- # link = $(@)
54
- # (popup = link.find('.popup')).removeClass('popup').addClass('submenu-popup'
55
- # ).bind('show', ->
56
- # link.find('a').addClass('hover') & popup.css(
57
- # top: link.offset().top + link.height() - 2
58
- # left: link.offset().left - parseInt(popup.css('padding-left'))
59
- # ).show()
60
- # ).bind('hide', ->
61
- # link.find('a').removeClass('hover') & $(@).hide()
62
- # ).bind('mouseleave', -> popup.trigger('hide')
63
- # ).bind 'mouseenter', -> clearTimeout(timer)
64
-
65
- # $(document.body).append(popup)
66
-
67
- # link.hover(
68
- # -> popup.trigger('show')
69
- # -> timer = window.setTimeout (-> popup.trigger('hide')), 30
70
- # )
71
-
72
- # css = $('#submenu > ul').attr('class')
73
- # $("#submenu > ul > li.#{css}").addClass('on') if css != ''
74
-
75
- # enable_sites_picker: ->
76
- # link = @$('#sites-picker-link')
77
- # picker = @$('#sites-picker')
78
-
79
- # return if picker.size() == 0
80
-
81
- # left = link.position().left + link.parent().position().left - (picker.width() - link.width())
82
- # picker.css('left', left)
83
-
84
- # link.bind 'click', (event) ->
85
- # event.stopPropagation() & event.preventDefault()
86
- # picker.toggle()
87
-
88
- # enable_content_locale_picker: ->
89
- # link = @$('#content-locale-picker-link')
90
- # picker = @$('#content-locale-picker')
91
-
92
- # return if picker.size() == 0
93
-
94
- # link.bind 'click', (event) ->
95
- # event.stopPropagation() & event.preventDefault()
96
- # picker.toggle()
97
-
98
- # picker.find('li').bind 'click', (event) ->
99
- # locale = $(@).data('locale')
100
- # window.addParameterToURL 'content_locale', locale
101
-
102
- # set_locale_for_tinymce_widgets: ->
103
- # # tinyMCE likes only lowercase locales
104
- # tinymce_locale = window.locale.toLowerCase()
105
-
106
- # # pt-BR does not exist, pt does though
107
- # tinymce_locale = 'pt' if tinymce_locale == 'pt-br'
108
-
109
- # # set the default tinyMCE language
110
- # window.Locomotive.tinyMCE.defaultSettings.language = tinymce_locale
111
- # window.Locomotive.tinyMCE.minimalSettings.language = tinymce_locale
112
- # window.Locomotive.tinyMCE.popupSettings.language = tinymce_locale
113
-
114
- unique_dialog_zindex: ->
115
- # returns the number of jQuery UI modals created in order to set a valid zIndex for each of them.
116
- # Each modal window should have a different zIndex, otherwise there will be conflicts between them.
117
- window.Locomotive.jQueryModals ||= 0
118
-
119
- # 998 + window.Locomotive.jQueryModals++
120
- 300000 + window.Locomotive.jQueryModals++