locomotive_cms 2.0.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +3 -3
  3. data/README.textile +7 -7
  4. data/app/assets/images/locomotive/icons/flags/ja.png +0 -0
  5. data/app/assets/javascripts/locomotive/aloha.js.coffee +3 -0
  6. data/app/assets/javascripts/locomotive/models/page.js.coffee +1 -1
  7. data/app/assets/javascripts/locomotive/models/site.js.coffee +16 -6
  8. data/app/assets/javascripts/locomotive/utils/aloha_settings.js.coffee +1 -1
  9. data/app/assets/javascripts/locomotive/views/content_entries/_form_view.js.coffee +5 -0
  10. data/app/assets/javascripts/locomotive/views/my_account/edit_view.js.coffee +14 -0
  11. data/app/assets/javascripts/locomotive/views/pages/_form_view.js.coffee +1 -1
  12. data/app/assets/javascripts/locomotive/views/pages/edit_view.js.coffee +2 -1
  13. data/app/assets/javascripts/tinymce/plugins/locomotive_media/langs/de.js +1 -0
  14. data/app/assets/stylesheets/locomotive.css +1 -0
  15. data/app/assets/stylesheets/locomotive/backoffice/formtastic_changes.css.scss +18 -3
  16. data/app/assets/stylesheets/locomotive/backoffice/layout.css.scss +1 -1
  17. data/app/assets/stylesheets/locomotive/backoffice/menu/main.css.scss +7 -3
  18. data/app/assets/stylesheets/locomotive/backoffice/pagination.css.scss +37 -0
  19. data/app/assets/stylesheets/locomotive/backoffice/tagit_changes.css.scss +49 -0
  20. data/app/cells/locomotive/content_locale_picker/show.html.haml +1 -1
  21. data/app/cells/locomotive/global_actions_cell.rb +8 -8
  22. data/app/cells/locomotive/main_menu/show.html.haml +2 -2
  23. data/app/cells/locomotive/main_menu_cell.rb +2 -2
  24. data/app/cells/locomotive/menu_cell.rb +6 -6
  25. data/app/cells/locomotive/partials_cell.rb +21 -0
  26. data/app/cells/locomotive/settings_menu_cell.rb +4 -4
  27. data/app/cells/locomotive/sub_menu/show.html.haml +2 -2
  28. data/app/cells/locomotive/sub_menu_cell.rb +1 -1
  29. data/app/controllers/locomotive/accounts_controller.rb +4 -4
  30. data/app/controllers/locomotive/api/accounts_controller.rb +1 -0
  31. data/app/controllers/locomotive/api/content_assets_controller.rb +1 -1
  32. data/app/controllers/locomotive/api/content_entries_controller.rb +1 -1
  33. data/app/controllers/locomotive/api/content_types_controller.rb +2 -2
  34. data/app/controllers/locomotive/api/pages_controller.rb +1 -1
  35. data/app/controllers/locomotive/api/snippets_controller.rb +1 -1
  36. data/app/controllers/locomotive/api/theme_assets_controller.rb +47 -0
  37. data/app/controllers/locomotive/api/tokens_controller.rb +2 -2
  38. data/app/controllers/locomotive/base_controller.rb +5 -2
  39. data/app/controllers/locomotive/content_assets_controller.rb +1 -1
  40. data/app/controllers/locomotive/content_entries_controller.rb +22 -9
  41. data/app/controllers/locomotive/content_types_controller.rb +6 -6
  42. data/app/controllers/locomotive/current_site_controller.rb +6 -6
  43. data/app/controllers/locomotive/installation_controller.rb +11 -3
  44. data/app/controllers/locomotive/memberships_controller.rb +6 -6
  45. data/app/controllers/locomotive/my_account_controller.rb +9 -3
  46. data/app/controllers/locomotive/pages_controller.rb +10 -6
  47. data/app/controllers/locomotive/passwords_controller.rb +1 -1
  48. data/app/controllers/locomotive/public/content_entries_controller.rb +1 -1
  49. data/app/controllers/locomotive/public/pages_controller.rb +5 -5
  50. data/app/controllers/locomotive/public/robots_controller.rb +1 -1
  51. data/app/controllers/locomotive/public/sitemaps_controller.rb +1 -1
  52. data/app/controllers/locomotive/sessions_controller.rb +1 -1
  53. data/app/controllers/locomotive/sites_controller.rb +5 -5
  54. data/app/controllers/locomotive/snippets_controller.rb +6 -6
  55. data/app/controllers/locomotive/theme_assets_controller.rb +6 -6
  56. data/app/controllers/locomotive/translations_controller.rb +1 -1
  57. data/app/helpers/locomotive/accounts_helper.rb +1 -1
  58. data/app/helpers/locomotive/base_helper.rb +13 -21
  59. data/app/helpers/locomotive/content_types_helper.rb +3 -3
  60. data/app/helpers/locomotive/custom_fields_helper.rb +5 -5
  61. data/app/helpers/locomotive/installation_helper.rb +1 -1
  62. data/app/helpers/locomotive/pages_helper.rb +5 -5
  63. data/app/helpers/locomotive/snippets_helper.rb +1 -1
  64. data/app/helpers/locomotive/theme_assets_helper.rb +1 -1
  65. data/app/helpers/locomotive/translations_helper.rb +2 -2
  66. data/app/inputs/locomotive/api_key_input.rb +40 -0
  67. data/app/inputs/locomotive/code_input.rb +5 -5
  68. data/app/inputs/locomotive/file_input.rb +6 -6
  69. data/app/inputs/locomotive/locale_input.rb +5 -5
  70. data/app/inputs/locomotive/locales_input.rb +4 -4
  71. data/app/inputs/locomotive/rte_input.rb +1 -1
  72. data/app/inputs/locomotive/small_code_input.rb +1 -1
  73. data/app/inputs/locomotive/subdomain_input.rb +1 -1
  74. data/app/mailers/locomotive/devise_mailer.rb +1 -1
  75. data/app/mailers/locomotive/notifications.rb +3 -3
  76. data/app/models/locomotive/ability.rb +10 -11
  77. data/app/models/locomotive/account.rb +61 -26
  78. data/app/models/locomotive/content_asset.rb +8 -8
  79. data/app/models/locomotive/content_entry.rb +8 -7
  80. data/app/models/locomotive/content_type.rb +12 -7
  81. data/app/models/locomotive/editable_control.rb +2 -2
  82. data/app/models/locomotive/editable_element.rb +13 -8
  83. data/app/models/locomotive/editable_file.rb +5 -3
  84. data/app/models/locomotive/editable_short_text.rb +3 -3
  85. data/app/models/locomotive/extensions/asset/types.rb +2 -2
  86. data/app/models/locomotive/extensions/content_entry/csv.rb +78 -0
  87. data/app/models/locomotive/extensions/content_type/item_template.rb +3 -3
  88. data/app/models/locomotive/extensions/content_type/sync.rb +4 -4
  89. data/app/models/locomotive/extensions/page/editable_elements.rb +1 -1
  90. data/app/models/locomotive/extensions/page/parse.rb +2 -2
  91. data/app/models/locomotive/extensions/page/render.rb +7 -1
  92. data/app/models/locomotive/extensions/page/templatized.rb +20 -15
  93. data/app/models/locomotive/extensions/page/tree.rb +4 -4
  94. data/app/models/locomotive/extensions/shared/seo.rb +3 -3
  95. data/app/models/locomotive/extensions/site/first_installation.rb +5 -2
  96. data/app/models/locomotive/extensions/site/locales.rb +9 -6
  97. data/app/models/locomotive/extensions/site/subdomain_domains.rb +8 -8
  98. data/app/models/locomotive/membership.rb +6 -6
  99. data/app/models/locomotive/page.rb +30 -23
  100. data/app/models/locomotive/site.rb +19 -15
  101. data/app/models/locomotive/snippet.rb +5 -5
  102. data/app/models/locomotive/theme_asset.rb +17 -6
  103. data/app/models/locomotive/translation.rb +21 -16
  104. data/app/presenters/locomotive/account_presenter.rb +1 -1
  105. data/app/presenters/locomotive/content_entry_presenter.rb +2 -2
  106. data/app/presenters/locomotive/content_field_presenter.rb +2 -2
  107. data/app/presenters/locomotive/content_type_presenter.rb +6 -1
  108. data/app/presenters/locomotive/theme_asset_presenter.rb +2 -2
  109. data/app/uploaders/locomotive/editable_file_uploader.rb +1 -1
  110. data/app/uploaders/locomotive/theme_asset_uploader.rb +1 -1
  111. data/app/views/locomotive/accounts/new.html.haml +6 -6
  112. data/app/views/locomotive/content_assets/_asset.html.haml +3 -3
  113. data/app/views/locomotive/content_assets/_picker.html.haml +12 -12
  114. data/app/views/locomotive/content_entries/_form.html.haml +9 -8
  115. data/app/views/locomotive/content_entries/_list.html.haml +8 -5
  116. data/app/views/locomotive/content_entries/edit.html.haml +6 -6
  117. data/app/views/locomotive/content_entries/index.html.haml +8 -6
  118. data/app/views/locomotive/content_entries/new.html.haml +5 -5
  119. data/app/views/locomotive/content_types/_form.html.haml +16 -16
  120. data/app/views/locomotive/content_types/edit.html.haml +5 -5
  121. data/app/views/locomotive/content_types/new.html.haml +3 -3
  122. data/app/views/locomotive/current_site/_form.html.haml +12 -12
  123. data/app/views/locomotive/current_site/edit.html.haml +5 -5
  124. data/app/views/locomotive/custom_fields/_form.html.haml +23 -19
  125. data/app/views/locomotive/custom_fields/_select_templates.html.haml +5 -5
  126. data/app/views/locomotive/custom_fields/types/_belongs_to.html.haml +4 -4
  127. data/app/views/locomotive/custom_fields/types/_boolean.html.haml +3 -3
  128. data/app/views/locomotive/custom_fields/types/_date.html.haml +4 -4
  129. data/app/views/locomotive/custom_fields/types/_email.html.haml +4 -0
  130. data/app/views/locomotive/custom_fields/types/_file.html.haml +3 -3
  131. data/app/views/locomotive/custom_fields/types/_float.html.haml +6 -0
  132. data/app/views/locomotive/custom_fields/types/_has_many.html.haml +10 -10
  133. data/app/views/locomotive/custom_fields/types/_integer.html.haml +5 -0
  134. data/app/views/locomotive/custom_fields/types/_many_to_many.html.haml +10 -10
  135. data/app/views/locomotive/custom_fields/types/_select.html.haml +10 -10
  136. data/app/views/locomotive/custom_fields/types/_string.html.haml +3 -3
  137. data/app/views/locomotive/custom_fields/types/_tags.html.haml +4 -0
  138. data/app/views/locomotive/custom_fields/types/_text.html.haml +4 -4
  139. data/app/views/locomotive/devise_mailer/reset_password_instructions.html.haml +1 -1
  140. data/app/views/locomotive/installation/step_1.html.haml +5 -5
  141. data/app/views/locomotive/installation/step_2.html.haml +6 -6
  142. data/app/views/locomotive/kaminari/_first_page.html.haml +2 -0
  143. data/app/views/locomotive/kaminari/_gap.html.haml +2 -0
  144. data/app/views/locomotive/kaminari/_last_page.html.haml +2 -0
  145. data/app/views/locomotive/kaminari/_next_page.html.haml +2 -0
  146. data/app/views/locomotive/kaminari/_page.html.haml +2 -0
  147. data/app/views/locomotive/kaminari/_paginator.html.haml +11 -0
  148. data/app/views/locomotive/kaminari/_prev_page.html.haml +2 -0
  149. data/app/views/locomotive/layouts/application.html.haml +2 -2
  150. data/app/views/locomotive/layouts/not_logged_in.html.haml +3 -3
  151. data/app/views/locomotive/memberships/new.html.haml +4 -4
  152. data/app/views/locomotive/my_account/edit.html.haml +14 -13
  153. data/app/views/locomotive/notifications/new_content_entry.html.haml +2 -2
  154. data/app/views/locomotive/pages/_editable_elements.html.haml +20 -20
  155. data/app/views/locomotive/pages/_form.html.haml +23 -27
  156. data/app/views/locomotive/pages/_page.html.haml +6 -6
  157. data/app/views/locomotive/pages/edit.html.haml +5 -5
  158. data/app/views/locomotive/pages/index.html.haml +2 -2
  159. data/app/views/locomotive/pages/new.html.haml +4 -4
  160. data/app/views/locomotive/passwords/edit.html.haml +3 -3
  161. data/app/views/locomotive/passwords/new.html.haml +2 -2
  162. data/app/views/locomotive/public/pages/show_toolbar.html.haml +15 -15
  163. data/app/views/locomotive/sessions/new.html.haml +4 -4
  164. data/app/views/locomotive/shared/_footer.html.haml +1 -1
  165. data/app/views/locomotive/shared/_head.html.haml +7 -7
  166. data/app/views/locomotive/shared/_header.html.haml +2 -2
  167. data/app/views/locomotive/shared/_locale_picker_link.html.haml +1 -1
  168. data/app/views/locomotive/shared/_site_picker.html.haml +2 -2
  169. data/app/views/locomotive/shared/actions/_contents.html.haml +1 -1
  170. data/app/views/locomotive/shared/menu/_contents.html.haml +5 -5
  171. data/app/views/locomotive/sites/_domains.html.haml +7 -7
  172. data/app/views/locomotive/sites/_form.html.haml +6 -1
  173. data/app/views/locomotive/sites/_memberships.html.haml +3 -3
  174. data/app/views/locomotive/sites/new.html.haml +3 -3
  175. data/app/views/locomotive/snippets/_form.html.haml +6 -6
  176. data/app/views/locomotive/snippets/_snippet.html.haml +2 -2
  177. data/app/views/locomotive/snippets/edit.html.haml +5 -5
  178. data/app/views/locomotive/snippets/new.html.haml +3 -3
  179. data/app/views/locomotive/theme_assets/_asset.html.haml +2 -2
  180. data/app/views/locomotive/theme_assets/_form.html.haml +10 -10
  181. data/app/views/locomotive/theme_assets/_list.html.haml +3 -3
  182. data/app/views/locomotive/theme_assets/_picker.html.haml +8 -8
  183. data/app/views/locomotive/theme_assets/edit.html.haml +7 -7
  184. data/app/views/locomotive/theme_assets/index.html.haml +6 -6
  185. data/app/views/locomotive/theme_assets/new.html.haml +3 -3
  186. data/app/views/locomotive/translations/_form.html.haml +3 -3
  187. data/app/views/locomotive/translations/edit.html.haml +6 -6
  188. data/app/views/locomotive/translations/index.html.haml +2 -0
  189. data/app/views/locomotive/translations/new.html.haml +2 -2
  190. data/config/initializers/csv_renderer.rb +10 -0
  191. data/config/locales/admin_ui.de.yml +1 -0
  192. data/config/locales/admin_ui.en.yml +12 -0
  193. data/config/locales/admin_ui.es.yml +1 -0
  194. data/config/locales/admin_ui.et.yml +1 -0
  195. data/config/locales/admin_ui.fr.yml +12 -0
  196. data/config/locales/admin_ui.it.yml +1 -0
  197. data/config/locales/admin_ui.ja.yml +335 -0
  198. data/config/locales/admin_ui.nb.yml +1 -0
  199. data/config/locales/admin_ui.nl.yml +1 -0
  200. data/config/locales/admin_ui.pl.yml +1 -0
  201. data/config/locales/admin_ui.pt-BR.yml +8 -0
  202. data/config/locales/admin_ui.ru.yml +1 -0
  203. data/config/locales/carrierwave.ja.yml +4 -0
  204. data/config/locales/default.de.yml +1 -1
  205. data/config/locales/default.en.yml +1 -1
  206. data/config/locales/default.es.yml +3 -0
  207. data/config/locales/default.et.yml +2 -2
  208. data/config/locales/default.fr.yml +1 -1
  209. data/config/locales/default.it.yml +3 -0
  210. data/config/locales/default.ja.yml +94 -0
  211. data/config/locales/default.nb.yml +1 -1
  212. data/config/locales/default.nl.yml +5 -0
  213. data/config/locales/default.pl.yml +2 -2
  214. data/config/locales/default.pt-BR.yml +3 -2
  215. data/config/locales/default.ru.yml +19 -16
  216. data/config/locales/devise.ja.yml +63 -0
  217. data/config/locales/flash.ja.yml +115 -0
  218. data/config/locales/formtastic.en.yml +7 -0
  219. data/config/locales/formtastic.fr.yml +9 -0
  220. data/config/locales/formtastic.ja.yml +103 -0
  221. data/config/locales/formtastic.pt-BR.yml +1 -1
  222. data/config/routes.rb +5 -2
  223. data/features/api/authentication.feature +24 -2
  224. data/features/api/authorization/pages.feature +3 -1
  225. data/features/api/entries_custom_fields.feature +2 -2
  226. data/features/backoffice/authorization/pages.feature +7 -7
  227. data/features/backoffice/content_types/email.feature +26 -0
  228. data/features/backoffice/content_types/has_many.feature +20 -0
  229. data/features/backoffice/content_types/integer.feature +26 -0
  230. data/features/backoffice/content_types/many_to_many.feature +29 -1
  231. data/features/backoffice/content_types/tags.feature +22 -0
  232. data/features/backoffice/content_types/uniqueness.feature +29 -0
  233. data/features/backoffice/contents.feature +16 -0
  234. data/features/backoffice/installation.feature +33 -0
  235. data/features/backoffice/my_account.feature +21 -0
  236. data/features/backoffice/pages.feature +21 -1
  237. data/features/backoffice/site.feature +59 -40
  238. data/features/backoffice/snippets.feature +1 -1
  239. data/features/backoffice/translations.feature +7 -1
  240. data/features/public/basic.feature +1 -1
  241. data/features/public/pages.feature +92 -0
  242. data/features/public/session.feature +40 -0
  243. data/features/public/tags.feature +45 -0
  244. data/features/step_definitions/backoffice_steps.rb +4 -0
  245. data/features/step_definitions/content_types_steps.rb +16 -3
  246. data/features/step_definitions/more_web_steps.rb +35 -4
  247. data/features/step_definitions/page_steps.rb +52 -35
  248. data/features/step_definitions/pagination_steps.rb +4 -4
  249. data/features/step_definitions/site_steps.rb +22 -10
  250. data/features/step_definitions/snippet_steps.rb +1 -1
  251. data/features/step_definitions/theme_asset_steps.rb +2 -2
  252. data/features/step_definitions/translation_steps.rb +1 -1
  253. data/features/step_definitions/web_steps.rb +1 -1
  254. data/features/support/http.rb +1 -1
  255. data/features/support/locales.rb +5 -0
  256. data/lib/generators/locomotive/install/install_generator.rb +1 -6
  257. data/lib/generators/locomotive/install/templates/carrierwave.rb +4 -4
  258. data/lib/generators/locomotive/install/templates/locomotive.rb +12 -7
  259. data/lib/locomotive.rb +4 -4
  260. data/lib/locomotive/action_controller.rb +1 -0
  261. data/lib/locomotive/action_controller/responder.rb +9 -10
  262. data/lib/locomotive/action_controller/section_helpers.rb +1 -1
  263. data/lib/locomotive/action_controller/ssl.rb +11 -0
  264. data/lib/locomotive/action_controller/url_helpers.rb +9 -5
  265. data/lib/locomotive/carrierwave/asset.rb +6 -6
  266. data/lib/locomotive/configuration.rb +28 -26
  267. data/lib/locomotive/core_ext.rb +1 -2
  268. data/lib/locomotive/custom_fields.rb +12 -6
  269. data/lib/locomotive/dependencies.rb +1 -0
  270. data/lib/locomotive/dragonfly.rb +1 -1
  271. data/lib/locomotive/engine.rb +3 -3
  272. data/lib/locomotive/formtastic.rb +1 -1
  273. data/lib/locomotive/httparty/webservice.rb +1 -1
  274. data/lib/locomotive/kaminari.rb +28 -13
  275. data/lib/locomotive/liquid.rb +1 -0
  276. data/lib/locomotive/liquid/drops/content_entry.rb +1 -1
  277. data/lib/locomotive/liquid/drops/content_types.rb +27 -2
  278. data/lib/locomotive/liquid/drops/page.rb +14 -2
  279. data/lib/locomotive/liquid/drops/proxy_collection.rb +4 -0
  280. data/lib/locomotive/liquid/drops/session_proxy.rb +16 -0
  281. data/lib/locomotive/liquid/drops/site.rb +11 -3
  282. data/lib/locomotive/liquid/drops/uploader.rb +1 -1
  283. data/lib/locomotive/liquid/filters/base.rb +1 -1
  284. data/lib/locomotive/liquid/filters/date.rb +2 -2
  285. data/lib/locomotive/liquid/filters/html.rb +12 -12
  286. data/lib/locomotive/liquid/filters/translate.rb +21 -3
  287. data/lib/locomotive/liquid/tags/consume.rb +50 -19
  288. data/lib/locomotive/liquid/tags/editable/base.rb +9 -9
  289. data/lib/locomotive/liquid/tags/editable/control.rb +1 -1
  290. data/lib/locomotive/liquid/tags/editable/file.rb +1 -1
  291. data/lib/locomotive/liquid/tags/editable/short_text.rb +1 -1
  292. data/lib/locomotive/liquid/tags/fetch_page.rb +28 -0
  293. data/lib/locomotive/liquid/tags/hybrid.rb +25 -0
  294. data/lib/locomotive/liquid/tags/inherited_block.rb +2 -2
  295. data/lib/locomotive/liquid/tags/inline_editor.rb +4 -4
  296. data/lib/locomotive/liquid/tags/javascript.rb +16 -0
  297. data/lib/locomotive/liquid/tags/link_to.rb +42 -0
  298. data/lib/locomotive/liquid/tags/locale_switcher.rb +1 -1
  299. data/lib/locomotive/liquid/tags/nav.rb +2 -2
  300. data/lib/locomotive/liquid/tags/paginate.rb +2 -2
  301. data/lib/locomotive/liquid/tags/session_assign.rb +39 -0
  302. data/lib/locomotive/liquid/tags/snippet.rb +1 -1
  303. data/lib/locomotive/liquid/tags/with_scope.rb +6 -2
  304. data/lib/locomotive/logger.rb +1 -1
  305. data/lib/locomotive/middlewares/cache.rb +1 -1
  306. data/lib/locomotive/middlewares/fonts.rb +1 -1
  307. data/lib/locomotive/middlewares/inline_editor.rb +1 -1
  308. data/lib/locomotive/middlewares/permalink.rb +1 -1
  309. data/lib/locomotive/middlewares/seo_trailing_slash.rb +1 -1
  310. data/lib/locomotive/mongoid/patches.rb +21 -21
  311. data/lib/locomotive/rails/action_view.rb +20 -4
  312. data/lib/locomotive/regexps.rb +1 -1
  313. data/lib/locomotive/render.rb +4 -2
  314. data/lib/locomotive/routing/default_constraint.rb +1 -1
  315. data/lib/locomotive/routing/site_dispatcher.rb +1 -1
  316. data/lib/locomotive/session_store.rb +7 -7
  317. data/lib/locomotive/version.rb +1 -1
  318. data/lib/tasks/development.rake +11 -9
  319. data/lib/tasks/locomotive.rake +11 -11
  320. data/mongodb/migrate/20130204072721_make_editable_elements_consistent.rb +3 -1
  321. data/mongodb/migrate/20130326201349_rename_entry_to_content_entry.rb +6 -6
  322. data/mongodb/migrate/20130511121956_generate_checksum_for_theme_assets.rb +14 -0
  323. data/mongodb/migrate/20130530162559_api_key_for_all_accounts.rb +10 -0
  324. data/spec/cells/locomotive/global_actions_spec.rb +11 -11
  325. data/spec/cells/locomotive/main_menu_cell_spec.rb +9 -9
  326. data/spec/cells/locomotive/settings_menu_cell_spec.rb +11 -11
  327. data/spec/dummy/config/environments/development.rb +1 -1
  328. data/spec/dummy/config/initializers/locomotive.rb +16 -11
  329. data/spec/dummy/config/mongoid.yml +99 -18
  330. data/spec/lib/action_view_spec.rb +19 -0
  331. data/spec/lib/core_ext_spec.rb +2 -2
  332. data/spec/lib/locomotive/configuration_spec.rb +1 -1
  333. data/spec/lib/locomotive/httparty/webservice_spec.rb +6 -6
  334. data/spec/lib/locomotive/liquid/drops/content_entry_spec.rb +1 -1
  335. data/spec/lib/locomotive/liquid/drops/current_user.rb +3 -3
  336. data/spec/lib/locomotive/liquid/drops/page_spec.rb +63 -14
  337. data/spec/lib/locomotive/liquid/drops/site_spec.rb +3 -3
  338. data/spec/lib/locomotive/liquid/filters/html_spec.rb +22 -7
  339. data/spec/lib/locomotive/liquid/filters/resize_spec.rb +3 -3
  340. data/spec/lib/locomotive/liquid/filters/translate_spec.rb +26 -12
  341. data/spec/lib/locomotive/liquid/tags/consume_spec.rb +26 -2
  342. data/spec/lib/locomotive/liquid/tags/csrf_spec.rb +3 -3
  343. data/spec/lib/locomotive/liquid/tags/editable/short_text_spec.rb +1 -1
  344. data/spec/lib/locomotive/liquid/tags/extends_spec.rb +5 -5
  345. data/spec/lib/locomotive/liquid/tags/javascript_spec.rb +18 -0
  346. data/spec/lib/locomotive/liquid/tags/locale_switcher_spec.rb +23 -13
  347. data/spec/lib/locomotive/liquid/tags/nav_spec.rb +11 -11
  348. data/spec/lib/locomotive/liquid/tags/paginate_spec.rb +13 -13
  349. data/spec/lib/locomotive/liquid/tags/seo_spec.rb +8 -8
  350. data/spec/lib/locomotive/liquid/tags/with_scope_spec.rb +8 -2
  351. data/spec/lib/locomotive/presentable_spec.rb +10 -10
  352. data/spec/lib/locomotive/render_spec.rb +14 -14
  353. data/spec/mailers/locomotive/notifications_spec.rb +3 -3
  354. data/spec/models/locomotive/ability_spec.rb +23 -9
  355. data/spec/models/locomotive/account_spec.rb +30 -8
  356. data/spec/models/locomotive/content_asset_spec.rb +1 -1
  357. data/spec/models/locomotive/content_entry_spec.rb +57 -2
  358. data/spec/models/locomotive/content_type_spec.rb +42 -41
  359. data/spec/models/locomotive/editable_control_spec.rb +5 -5
  360. data/spec/models/locomotive/editable_file_spec.rb +21 -5
  361. data/spec/models/locomotive/editable_long_text_spec.rb +3 -3
  362. data/spec/models/locomotive/editable_short_text_spec.rb +8 -8
  363. data/spec/models/locomotive/extensions/page/editable_elements_spec.rb +9 -9
  364. data/spec/models/locomotive/extensions/page/redirect_spec.rb +1 -1
  365. data/spec/models/locomotive/extensions/page/render_spec.rb +4 -8
  366. data/spec/models/locomotive/extensions/site/locales_spec.rb +2 -2
  367. data/spec/models/locomotive/membership_spec.rb +5 -5
  368. data/spec/models/locomotive/page_spec.rb +10 -1
  369. data/spec/models/locomotive/site_spec.rb +19 -19
  370. data/spec/models/locomotive/snippet_spec.rb +9 -9
  371. data/spec/models/locomotive/theme_asset_spec.rb +91 -57
  372. data/spec/requests/admin_ssl_spec.rb +25 -0
  373. data/spec/support/factories.rb +32 -27
  374. data/spec/support/locomotive.rb +2 -0
  375. data/vendor/assets/javascripts/locomotive/backbone.sync.js +1 -1
  376. data/vendor/assets/javascripts/locomotive/tag-it.min.js +16 -0
  377. data/vendor/assets/stylesheets/locomotive/jquery.tagit.css +67 -0
  378. metadata +108 -138
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NzBmOTE4ZGVmMDU2MjQ0OWExNjRiYTE5YmNjM2U1MDA2ODcyZGI2NQ==
5
+ data.tar.gz: !binary |-
6
+ MDU5YTVkZDExMzdiYjEwYmJiYzhiNWIyNjMzYTRlMWRlOTViMjQ0ZA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZDNhZDI1Nzk0ZmMwZmI3ZDIwOTc4NzI0NDlhZTljMjQ4MGZjYWM3N2JmNTAx
10
+ MDhlZDA2MGU4ODU0OWU2MzRjMDYxMmFiZWM4YWEwMjdiYmZjZTdjMTMxYTU4
11
+ NDA0MWUxMmNmZGYxMDI2MGVlMWE4MTg4YTExNDg2N2VlMTU1MDQ=
12
+ data.tar.gz: !binary |-
13
+ YzkyMWQ3NmQ3NjY3NTEzYTYyYzk4MzNiNTI3YmUyZGNkNTY2MDA4MDdkNTA4
14
+ NDhmZDc2NTY3ZDIxYTk1M2M2ZDFkNGZiZmY2OTIyNGZmZDczYjRkMTM5MWQw
15
+ YjEyODUyZmI2MmZiODdiODk4NDQ3MTFiNzZkMmYxZWVmMzJkNjg=
data/Gemfile CHANGED
@@ -3,9 +3,6 @@
3
3
 
4
4
  source "https://rubygems.org"
5
5
 
6
- # net-scp 1.0.6 was yanked
7
- gem 'net-scp', '1.0.4'
8
-
9
6
  gemspec # Include gemspec dependencies
10
7
 
11
8
  group :assets do
@@ -24,12 +21,15 @@ end
24
21
 
25
22
  group :development do
26
23
  # gem 'custom_fields', path: '../gems/custom_fields' # for Developers
24
+ # gem 'custom_fields', github: 'locomotivecms/custom_fields'
27
25
  # gem 'custom_fields', git: 'git://github.com/locomotivecms/custom_fields.git', branch: '2.0.0.rc' # Branch on Github
28
26
 
29
27
  # gem 'locomotive-aloha-rails', path: '../gems/aloha-rails' # for Developers
30
28
  # gem 'locomotive-tinymce-rails', path: '../gems/tinymce-rails' # for Developers
31
29
  # gem 'locomotive_liquid', path: '../gems/liquid' # for Developers
32
30
 
31
+ # gem 'carrierwave-mongoid', git: 'git://github.com/locomotivecms/carrierwave-mongoid.git'
32
+
33
33
  gem 'unicorn' # Using unicorn_rails instead of webrick (default server)
34
34
 
35
35
  end
data/README.textile CHANGED
@@ -1,4 +1,4 @@
1
- h1. Locomotive CMS
1
+ h1. LocomotiveCMS
2
2
 
3
3
  "!https://secure.travis-ci.org/locomotivecms/engine.png!":http://travis-ci.org/locomotivecms/engine
4
4
 
@@ -6,7 +6,7 @@ h1. Locomotive CMS
6
6
 
7
7
  "!https://gemnasium.com/locomotivecms/engine.png(Dependency Status)!":https://gemnasium.com/locomotivecms/engine
8
8
 
9
- Locomotive is a simple but powerful CMS based on liquid templates and mongodb database. At my company ("NoCoffee":http://www.nocoffee.fr), we use it for our clients when they request a simple website.
9
+ LocomotiveCMS is a simple but powerful CMS based on liquid templates and mongodb database. At my company ("NoCoffee":http://www.nocoffee.fr), we use it for our clients when they request a simple website.
10
10
 
11
11
  If we have to give a couple of features to describe our application, there will be:
12
12
 
@@ -28,7 +28,7 @@ h2. Gems
28
28
  Here is a short list of main gems / technologies used in the application.
29
29
 
30
30
  * Rails 3.2.13
31
- * Mongoid 2.4.9 (with MongoDB 2.0)
31
+ * Mongoid 3.1.3 (with MongoDB 2.x)
32
32
  * Liquid
33
33
  * Devise
34
34
  * Carrierwave
@@ -39,7 +39,7 @@ Here is a short list of main gems / technologies used in the application.
39
39
 
40
40
  h2. Installation
41
41
 
42
- See the "installation documentation on the official website":http://doc.locomotivecms.com/installation/requirements
42
+ See the "installation documentation on the official website":http://doc.locomotivecms.com
43
43
 
44
44
  h2. Upgrading
45
45
 
@@ -51,9 +51,9 @@ h2. Community
51
51
  * Join us on IRC "#locomotivecms at irc.freenode.net!":http://webchat.freenode.net/
52
52
  * "Follow us on twitter":http://twitter.com/locomotivecms
53
53
 
54
- h2. Contributing to Locomotive
54
+ h2. Contributing to LocomotiveCMS
55
55
 
56
- Locomotive CMS is an open source project, we encourage contributions. If you have found a bug and want to contribute a fix, or have a new feature you would like to add, follow the steps below to get your patch into the project:
56
+ LocomotiveCMS is an open source project, we encourage contributions. If you have found a bug and want to contribute a fix, or have a new feature you would like to add, follow the steps below to get your patch into the project:
57
57
 
58
58
  * Install ruby and mongoDB
59
59
  * Clone the project <code>git clone git@github.com:locomotivecms/engine.git</code>
@@ -81,7 +81,7 @@ h2. Credits
81
81
 
82
82
  "Rodrigo Alvarez":http://blog.codecaster.es/ for his plugin named Congo which gave us a good starting point and for his availability for (very late) tech discussions.
83
83
 
84
- "Emmanuel Grard":http://www.grardesign.com designed the awesome locomotive illustration in the locomotivecms.com landing page.
84
+ "Emmanuel Grard":http://www.grardesign.com designed the awesome locomotive illustration in the old locomotivecms.com landing page.
85
85
 
86
86
  "Font Awesome":http://fortawesome.github.com/Font-Awesome for providing the best icons. Make the whole back-office Retina-ready.
87
87
 
@@ -1,2 +1,5 @@
1
+ #= require aloha/lib/require
2
+ #= require aloha/lib/vendor/jquery-1.7.2
3
+ #= require aloha/lib/vendor/jquery-ui-1.9.0.custom-aloha
1
4
  #= require ./utils/aloha_settings
2
5
  #= require aloha
@@ -16,7 +16,7 @@ class Locomotive.Models.Page extends Backbone.Model
16
16
 
17
17
  toJSON: ->
18
18
  _.tap super, (hash) =>
19
- _.each ['fullpath', 'localized_fullpaths', 'templatized_from_parent', 'target_klass_name_text', 'content_type_id_text', 'edit_url', 'parent_id_text', 'response_type_text'], (key) => delete hash[key]
19
+ _.each ['fullpath', 'localized_fullpaths', 'templatized_from_parent', 'target_klass_name_text', 'content_type_id_text', 'edit_url', 'parent_id_text', 'response_type_text', 'translated_in'], (key) => delete hash[key]
20
20
 
21
21
  delete hash['editable_elements']
22
22
  hash.editable_elements = @get('editable_elements').toJSONForSave() if @get('editable_elements')? && @get('editable_elements').length > 0
@@ -5,13 +5,11 @@ class Locomotive.Models.Site extends Backbone.Model
5
5
  urlRoot: "#{Locomotive.mounted_on}/sites"
6
6
 
7
7
  initialize: ->
8
- # Be careful, domains_without_subdomain becomes domains
9
- domains = _.map @get('domains_without_subdomain'), (name) =>
10
- new Locomotive.Models.Domain(name: name)
11
-
12
- memberships = new Locomotive.Models.MembershipsCollection(@get('memberships'))
8
+ @_fix_attributes()
13
9
 
14
- @set domains: domains, memberships: memberships
10
+ # After save, need to fix the attributes again
11
+ this.on 'sync', ->
12
+ @_fix_attributes()
15
13
 
16
14
  includes_domain: (name_with_port) ->
17
15
  name = name_with_port.replace(/:[0-9]*/, '')
@@ -22,10 +20,22 @@ class Locomotive.Models.Site extends Backbone.Model
22
20
 
23
21
  toJSON: ->
24
22
  _.tap super, (hash) =>
23
+ _.each ['locales_text'], (key) => delete hash[key]
25
24
  delete hash.memberships
26
25
  hash.memberships_attributes = @get('memberships').toJSONForSave() if @get('memberships')? && @get('memberships').length > 0
27
26
  delete hash.domains
28
27
  hash.domains = _.map(@get('domains'), (domain) -> domain.get('name'))
28
+ hash.locales = _.flatten([@get('locales')])
29
+
30
+ _fix_attributes: ->
31
+ # Be careful, domains_without_subdomain becomes domains
32
+ domains = _.map @get('domains_without_subdomain'), (name) =>
33
+ new Locomotive.Models.Domain(name: name)
34
+
35
+ memberships = new Locomotive.Models.MembershipsCollection(@get('memberships'))
36
+
37
+ @set domains: domains, memberships: memberships
38
+
29
39
 
30
40
  class Locomotive.Models.CurrentSite extends Locomotive.Models.Site
31
41
 
@@ -29,7 +29,7 @@ window.Aloha.settings =
29
29
  crop: false
30
30
 
31
31
  i18n:
32
- available: ['en', 'fr', 'pl', 'pt-BR', 'es', 'de', 'no', 'ru', 'nl']
32
+ available: ['en', 'fr', 'pl', 'pt-BR', 'es', 'de', 'no', 'ru', 'nl', 'ja']
33
33
 
34
34
  sidebar:
35
35
  disabled: true
@@ -31,6 +31,8 @@ class Locomotive.Views.ContentEntries.FormView extends Locomotive.Views.Shared.F
31
31
 
32
32
  @enable_checkboxes()
33
33
 
34
+ @enable_tags()
35
+
34
36
  @enable_datepickers()
35
37
 
36
38
  @enable_richtexteditor()
@@ -50,6 +52,9 @@ class Locomotive.Views.ContentEntries.FormView extends Locomotive.Views.Shared.F
50
52
  enable_checkboxes: ->
51
53
  @$('li.input.toggle input[type=checkbox]').checkToggle()
52
54
 
55
+ enable_tags: ->
56
+ @$('li.input.tags input[type=text]').tagit(allowSpaces: true)
57
+
53
58
  enable_datepickers: ->
54
59
  @$('li.input.date input[type=text]').datepicker()
55
60
 
@@ -7,6 +7,7 @@ class Locomotive.Views.MyAccount.EditView extends Locomotive.Views.Shared.FormVi
7
7
  el: '#content'
8
8
 
9
9
  events:
10
+ 'click .api_key.input button': 'regenerate_api_key'
10
11
  'submit': 'save'
11
12
 
12
13
  initialize: ->
@@ -21,4 +22,17 @@ class Locomotive.Views.MyAccount.EditView extends Locomotive.Views.Shared.FormVi
21
22
  if @model.get('locale') == window.locale
22
23
  @save_in_ajax(event)
23
24
 
25
+ regenerate_api_key: (event) ->
26
+ event.stopPropagation() & event.preventDefault()
27
+
28
+ button = $(event.target)
29
+
30
+ if confirm(button.data('confirm'))
31
+ $.rails.ajax
32
+ url: button.data('url')
33
+ type: 'put'
34
+ dataType: 'json'
35
+ success: (data) =>
36
+ button.prev('code').html(data.api_key)
37
+
24
38
 
@@ -115,7 +115,7 @@ class Locomotive.Views.Pages.FormView extends Locomotive.Views.Shared.FormView
115
115
  @$('#page_slug').bind 'change', ((event) => @touched_url = true)
116
116
 
117
117
  listen_for_url_changes: ->
118
- setInterval (=> (@change_page_url() & @touched_url = false) if @touched_url), 2000
118
+ setInterval (=> (@change_page_url() & @touched_url = false) if @touched_url), 1200
119
119
 
120
120
  change_page_url: ->
121
121
  $.rails.ajax
@@ -21,7 +21,8 @@ class Locomotive.Views.Pages.EditView extends Locomotive.Views.Pages.FormView
21
21
  @refresh_editable_elements()
22
22
 
23
23
  # refresh the show link
24
- @$('#local-actions-bar > a.show').attr('href', "/#{@model.get('fullpath')}")
24
+ fullpath = @model.get('localized_fullpaths')[window.content_locale]
25
+ @$('#local-actions-bar > a.show').attr('href', "/#{fullpath}")
25
26
 
26
27
  error: (model, xhr) =>
27
28
  form.trigger('ajax:complete')
@@ -0,0 +1 @@
1
+ tinyMCE.addI18n('de.locomotive_media',{"image_desc": "Medien einfügen"});
@@ -5,6 +5,7 @@
5
5
  *= require_self
6
6
  *= require locomotive/blueprint/screen.css
7
7
  *= require locomotive/jquery/ui.css
8
+ *= require locomotive/jquery.tagit.css
8
9
  *= require locomotive/font-awesome
9
10
  *= require formtastic
10
11
  *= require codemirror
@@ -231,17 +231,20 @@ form.formtastic {
231
231
  }
232
232
  } // div.inline-errors
233
233
 
234
- &.string, &.password {
234
+ &.string, &.password, &.numeric {
235
235
  label {
236
236
  padding-top: 2px;
237
237
  }
238
238
 
239
- input[type=text], input[type=password] {
239
+ input[type=text], input[type=password], input[type=number] {
240
240
  @include default-input-style;
241
-
242
241
  width: 700px;
243
242
  }
244
243
 
244
+ input[type=number] {
245
+ width: 150px;
246
+ }
247
+
245
248
  &.highlighted {
246
249
  label {
247
250
  padding-top: 7px;
@@ -440,6 +443,18 @@ form.formtastic {
440
443
  }
441
444
  } // li.file
442
445
 
446
+ &.api_key {
447
+ code {
448
+ color: #000;
449
+ font-weight: bold;
450
+ font-family: Monaco, monospace;
451
+ }
452
+ button.regenerate {
453
+ @include blue-button;
454
+ margin-left: 10px;
455
+ }
456
+ }
457
+
443
458
  &.subdomain {
444
459
 
445
460
  em {
@@ -66,7 +66,7 @@ body {
66
66
 
67
67
  #global-actions-bar {
68
68
  position: absolute;
69
- top: 75px;
69
+ top: 70px;
70
70
  right: 8px;
71
71
 
72
72
  color: #8b8d9a;
@@ -12,7 +12,10 @@
12
12
  li.entry {
13
13
  float: left;
14
14
  position: relative;
15
- padding: 6px 6px 0 6px;
15
+
16
+ padding: 0px 0px 0 6px;
17
+ margin-left: -42px;
18
+
16
19
  height: 29px;
17
20
  line-height: 29px;
18
21
  overflow: hidden;
@@ -108,6 +111,7 @@
108
111
 
109
112
  &:first-child {
110
113
  z-index: 990;
114
+ margin-left: 0;
111
115
  a {
112
116
  @include border-top-left-radius(4px);
113
117
  padding-left: 10px;
@@ -120,8 +124,8 @@
120
124
  }
121
125
  }
122
126
 
123
- @for $i from 1 through 5 {
124
- &.entry-#{$i} { left: -42px * $i; z-index: 990 - $i; }
127
+ @for $i from 1 through 10 {
128
+ &.entry-#{$i} { z-index: 990 - $i; }
125
129
  }
126
130
  }
127
131
  }
@@ -0,0 +1,37 @@
1
+ @import "compass/css3/border-radius";
2
+ @import "compass/css3/text-shadow";
3
+ @import "locomotive/shared/helpers";
4
+ @import "buttons";
5
+
6
+ /* ___ pagination ___ */
7
+
8
+ nav.pagination {
9
+ text-align: center;
10
+
11
+ a {
12
+ @include gray-button;
13
+ margin: 0px 1px;
14
+ }
15
+
16
+ span.current {
17
+ @include gray-button;
18
+ margin: 0px 1px;
19
+
20
+ @include background-image(linear-gradient(#13496c, #175b88));
21
+ @include box-shadow(rgba(0, 0, 0, 0.9) 0px -1px 0px 0px, rgba(0, 0, 0, 0.7) 0px 1px 0px 0px);
22
+ @include single-text-shadow(#000, 0px, 1px, 0px);
23
+
24
+ color: #fff;
25
+ font-weight: bold;
26
+ padding-top: 0px;
27
+
28
+ &:hover {
29
+ color: #fff;
30
+ }
31
+ }
32
+
33
+ a, span.current {
34
+ padding-left: 12px;
35
+ padding-right: 12px;
36
+ }
37
+ }
@@ -0,0 +1,49 @@
1
+ @import "locomotive/shared/helpers";
2
+
3
+ ul.tagit {
4
+ width: 650px;
5
+ padding: 5px;
6
+ @include default-input-style;
7
+ @include border-radius(0px);
8
+
9
+ li {
10
+ margin: 2px 5px 2px 0;
11
+ line-height: 18px;
12
+ font-size: 11px;
13
+
14
+ &.tagit-choice-read-only {
15
+ padding: 1px 5px 1px;
16
+ }
17
+
18
+ &.tagit-choice-editable {
19
+ padding: 1px 20px 1px 5px;
20
+ }
21
+
22
+ &.tagit-choice-read-only, &.tagit-choice-editable {
23
+ @include border-radius(2px);
24
+ background: #c2e0f0;
25
+ border-color: #719fb8;
26
+ span {
27
+ color: #29739b;
28
+ @include text-shadow(rgba(#fff, 0.7) 0px 1px 0px);
29
+ }
30
+ span.ui-icon-close {
31
+ background: none;
32
+ text-indent: 0px;
33
+ text-align: center;
34
+ &:before {
35
+ position: relative;
36
+ top: -1px;
37
+ text-indent: 0px;
38
+ font-family: FontAwesome;
39
+ font-size: 9px;
40
+ content: "\f00d";
41
+ }
42
+ }
43
+ }
44
+
45
+ &.tagit-new {
46
+ padding: 2px 0 0 0;
47
+ }
48
+ }
49
+ }
@@ -1,7 +1,7 @@
1
1
  #content-locale-picker
2
2
  %ul
3
3
  - @locales.each do |locale|
4
- %li{ :'data-locale' => locale, :class => "#{'selected' if @locale == locale}" }
4
+ %li{ :'data-locale' => locale, class: "#{'selected' if @locale == locale}" }
5
5
  = flag_tag(locale)
6
6
 
7
7
  %span.text= locale
@@ -12,20 +12,20 @@ module Locomotive
12
12
  protected
13
13
 
14
14
  def build_list
15
- add :welcome, :url => edit_my_account_url, :i18n_options => {
16
- :key => 'locomotive.shared.header.welcome',
17
- :arg => :name,
18
- :value => @current_locomotive_account.name
15
+ add :welcome, url: edit_my_account_url, i18n_options: {
16
+ key: 'locomotive.shared.header.welcome',
17
+ arg: :name,
18
+ value: @current_locomotive_account.name
19
19
  }
20
20
 
21
- add :see, :url => current_site_url, :id => 'viewsite', :target => '_blank'
21
+ add :see, url: current_site_url, id: 'viewsite', target: '_blank'
22
22
 
23
23
  if Locomotive.config.multi_sites? && current_locomotive_account.sites.size > 1
24
- add :switch, :url => '#', :id => 'sites-picker-link'
24
+ add :switch, url: '#', id: 'sites-picker-link'
25
25
  end
26
26
 
27
- add :help, :url => 'http://doc.locomotivecms.com/templates/basics', :class => 'tutorial', :id => 'help', :target => '_blank'
28
- add :logout, :url => destroy_locomotive_session_url, :data => { :confirm => t('locomotive.messages.confirm') }, :method => :delete
27
+ add :help, url: 'http://doc.locomotivecms.com', class: 'tutorial', id: 'help', target: '_blank'
28
+ add :logout, url: destroy_locomotive_session_url, data: { confirm: t('locomotive.messages.confirm') }, method: :delete
29
29
  end
30
30
 
31
31
  def localize_label(label, options = {})