comfortable_mexican_sofa 1.11.2 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (280) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +7 -2
  3. data/CONTRIBUTING.md +29 -0
  4. data/README.md +24 -15
  5. data/Rakefile +12 -4
  6. data/app/assets/javascripts/comfortable_mexican_sofa/application.js.coffee +11 -10
  7. data/app/assets/javascripts/comfortable_mexican_sofa/lib/diff.js.coffee +9 -0
  8. data/app/assets/javascripts/comfortable_mexican_sofa/lib/diff/diff_match_patch.min.js +49 -0
  9. data/app/assets/javascripts/comfortable_mexican_sofa/lib/diff/pretty_text_diff.min.js +5 -0
  10. data/app/assets/stylesheets/comfortable_mexican_sofa/application.css.sass +7 -9
  11. data/app/assets/stylesheets/comfortable_mexican_sofa/base.css.sass +45 -15
  12. data/app/assets/stylesheets/comfortable_mexican_sofa/bootstrap_overrides.css.sass +21 -41
  13. data/app/controllers/{admin → comfy/admin}/cms/base_controller.rb +9 -8
  14. data/app/controllers/{admin → comfy/admin}/cms/categories_controller.rb +1 -1
  15. data/app/controllers/{admin → comfy/admin}/cms/files_controller.rb +11 -11
  16. data/app/controllers/{admin → comfy/admin}/cms/layouts_controller.rb +10 -10
  17. data/app/controllers/{admin → comfy/admin}/cms/pages_controller.rb +16 -12
  18. data/app/controllers/{admin → comfy/admin}/cms/revisions_controller.rb +12 -12
  19. data/app/controllers/{admin → comfy/admin}/cms/sites_controller.rb +13 -13
  20. data/app/controllers/{admin → comfy/admin}/cms/snippets_controller.rb +9 -9
  21. data/app/controllers/{cms → comfy/cms}/assets_controller.rb +1 -1
  22. data/app/controllers/{cms → comfy/cms}/base_controller.rb +4 -4
  23. data/app/controllers/{cms → comfy/cms}/content_controller.rb +9 -6
  24. data/app/models/{cms → comfy/cms}/block.rb +13 -10
  25. data/app/models/{cms → comfy/cms}/categorization.rb +2 -2
  26. data/app/models/{cms → comfy/cms}/category.rb +2 -2
  27. data/app/models/{cms → comfy/cms}/file.rb +12 -11
  28. data/app/models/{cms → comfy/cms}/layout.rb +10 -8
  29. data/app/models/{cms → comfy/cms}/page.rb +6 -82
  30. data/app/models/{cms → comfy/cms}/revision.rb +2 -2
  31. data/app/models/{cms → comfy/cms}/site.rb +6 -6
  32. data/app/models/{cms → comfy/cms}/snippet.rb +7 -7
  33. data/app/views/{admin → comfy/admin}/cms/categories/_categories.html.haml +0 -0
  34. data/app/views/comfy/admin/cms/categories/_edit.html.haml +6 -0
  35. data/app/views/{admin → comfy/admin}/cms/categories/_form.html.haml +2 -2
  36. data/app/views/comfy/admin/cms/categories/_index.html.haml +25 -0
  37. data/app/views/{admin → comfy/admin}/cms/categories/_show.html.haml +3 -3
  38. data/app/views/{admin → comfy/admin}/cms/categories/create.js.erb +0 -0
  39. data/app/views/{admin → comfy/admin}/cms/categories/destroy.js.erb +0 -0
  40. data/app/views/{admin → comfy/admin}/cms/categories/edit.js.erb +0 -0
  41. data/app/views/{admin → comfy/admin}/cms/categories/update.js.erb +0 -0
  42. data/app/views/{admin → comfy/admin}/cms/files/_file.html.haml +2 -2
  43. data/app/views/comfy/admin/cms/files/_form.html.haml +19 -0
  44. data/app/views/comfy/admin/cms/files/_index.html.haml +11 -0
  45. data/app/views/{admin → comfy/admin}/cms/files/_page_form.html.haml +2 -2
  46. data/app/views/{admin → comfy/admin}/cms/files/destroy.js.coffee +0 -0
  47. data/app/views/{admin → comfy/admin}/cms/files/edit.html.haml +0 -0
  48. data/app/views/comfy/admin/cms/files/index.html.haml +31 -0
  49. data/app/views/{admin → comfy/admin}/cms/files/new.html.haml +0 -0
  50. data/app/views/{admin → comfy/admin}/cms/layouts/_form.html.haml +6 -6
  51. data/app/views/comfy/admin/cms/layouts/_index_branch.html.haml +23 -0
  52. data/app/views/comfy/admin/cms/layouts/edit.html.haml +9 -0
  53. data/app/views/comfy/admin/cms/layouts/index.html.haml +13 -0
  54. data/app/views/{admin → comfy/admin}/cms/layouts/new.html.haml +0 -0
  55. data/app/views/comfy/admin/cms/pages/_form.html.haml +40 -0
  56. data/app/views/{admin → comfy/admin}/cms/pages/_form_blocks.html.haml +4 -3
  57. data/app/views/{admin → comfy/admin}/cms/pages/_index_branch.html.haml +7 -7
  58. data/app/views/comfy/admin/cms/pages/edit.html.haml +9 -0
  59. data/app/views/{admin → comfy/admin}/cms/pages/form_blocks.js.erb +0 -0
  60. data/app/views/comfy/admin/cms/pages/index.html.haml +15 -0
  61. data/app/views/{admin → comfy/admin}/cms/pages/new.html.haml +0 -0
  62. data/app/views/{admin → comfy/admin}/cms/pages/toggle_branch.js.erb +1 -1
  63. data/app/views/{admin → comfy/admin}/cms/partials/_body_before.html.haml +0 -0
  64. data/app/views/{admin → comfy/admin}/cms/partials/_file_form_after.html.haml +0 -0
  65. data/app/views/{admin → comfy/admin}/cms/partials/_file_form_before.html.haml +0 -0
  66. data/app/views/{admin → comfy/admin}/cms/partials/_files_after.html.haml +0 -0
  67. data/app/views/{admin → comfy/admin}/cms/partials/_files_before.html.haml +0 -0
  68. data/app/views/{admin → comfy/admin}/cms/partials/_html_footer.html.haml +0 -0
  69. data/app/views/{admin → comfy/admin}/cms/partials/_html_head.html.haml +0 -0
  70. data/app/views/{admin → comfy/admin}/cms/partials/_layout_form_after.html.haml +0 -0
  71. data/app/views/{admin → comfy/admin}/cms/partials/_layout_form_before.html.haml +0 -0
  72. data/app/views/{admin → comfy/admin}/cms/partials/_layouts_after.html.haml +0 -0
  73. data/app/views/{admin → comfy/admin}/cms/partials/_layouts_before.html.haml +0 -0
  74. data/app/views/{admin → comfy/admin}/cms/partials/_navigation_after.html.haml +0 -0
  75. data/app/views/{admin → comfy/admin}/cms/partials/_navigation_before.html.haml +0 -0
  76. data/app/views/{admin → comfy/admin}/cms/partials/_navigation_inner.html.haml +0 -0
  77. data/app/views/{admin → comfy/admin}/cms/partials/_page_form_after.html.haml +0 -0
  78. data/app/views/{admin → comfy/admin}/cms/partials/_page_form_before.html.haml +0 -0
  79. data/app/views/{admin → comfy/admin}/cms/partials/_page_form_inner.html.haml +0 -0
  80. data/app/views/{admin → comfy/admin}/cms/partials/_pages_after.html.haml +0 -0
  81. data/app/views/{admin → comfy/admin}/cms/partials/_pages_before.html.haml +0 -0
  82. data/app/views/{admin → comfy/admin}/cms/partials/_right_column_after.html.haml +0 -0
  83. data/app/views/{admin → comfy/admin}/cms/partials/_right_column_before.html.haml +0 -0
  84. data/app/views/{admin → comfy/admin}/cms/partials/_site_form_after.html.haml +0 -0
  85. data/app/views/{admin → comfy/admin}/cms/partials/_site_form_before.html.haml +0 -0
  86. data/app/views/{admin → comfy/admin}/cms/partials/_sites_after.html.haml +0 -0
  87. data/app/views/{admin → comfy/admin}/cms/partials/_sites_before.html.haml +0 -0
  88. data/app/views/{admin → comfy/admin}/cms/partials/_snippet_form_after.html.haml +0 -0
  89. data/app/views/{admin → comfy/admin}/cms/partials/_snippet_form_before.html.haml +0 -0
  90. data/app/views/{admin → comfy/admin}/cms/partials/_snippets_after.html.haml +0 -0
  91. data/app/views/{admin → comfy/admin}/cms/partials/_snippets_before.html.haml +0 -0
  92. data/app/views/comfy/admin/cms/revisions/show.html.haml +35 -0
  93. data/app/views/comfy/admin/cms/sites/_form.html.haml +14 -0
  94. data/app/views/comfy/admin/cms/sites/_mirrors.html.haml +18 -0
  95. data/app/views/{admin → comfy/admin}/cms/sites/edit.html.haml +0 -0
  96. data/app/views/comfy/admin/cms/sites/index.html.haml +28 -0
  97. data/app/views/{admin → comfy/admin}/cms/sites/new.html.haml +0 -0
  98. data/app/views/comfy/admin/cms/snippets/_form.html.haml +15 -0
  99. data/app/views/{admin → comfy/admin}/cms/snippets/edit.html.haml +2 -2
  100. data/app/views/comfy/admin/cms/snippets/index.html.haml +32 -0
  101. data/app/views/{admin → comfy/admin}/cms/snippets/new.html.haml +0 -0
  102. data/app/views/{cms → comfy/cms}/content/render_sitemap.xml.builder +0 -0
  103. data/app/views/kaminari/{_first_page.html.haml → comfy/_first_page.html.haml} +0 -0
  104. data/app/views/kaminari/{_gap.html.haml → comfy/_gap.html.haml} +0 -0
  105. data/app/views/kaminari/{_last_page.html.haml → comfy/_last_page.html.haml} +0 -0
  106. data/app/views/kaminari/{_next_page.html.haml → comfy/_next_page.html.haml} +0 -0
  107. data/app/views/kaminari/{_page.html.haml → comfy/_page.html.haml} +0 -0
  108. data/app/views/kaminari/{_paginator.html.haml → comfy/_paginator.html.haml} +0 -0
  109. data/app/views/kaminari/{_prev_page.html.haml → comfy/_prev_page.html.haml} +0 -0
  110. data/app/views/layouts/comfy/admin/cms.html.haml +4 -0
  111. data/app/views/layouts/comfy/admin/cms/_body.html.haml +17 -0
  112. data/app/views/layouts/{admin → comfy/admin}/cms/_center.html.haml +0 -0
  113. data/app/views/layouts/{admin → comfy/admin}/cms/_footer.html.haml +0 -0
  114. data/app/views/layouts/{admin → comfy/admin}/cms/_footer_js.html.haml +2 -2
  115. data/app/views/layouts/{admin → comfy/admin}/cms/_head.html.haml +1 -1
  116. data/app/views/layouts/comfy/admin/cms/_left.html.haml +16 -0
  117. data/app/views/layouts/comfy/admin/cms/_right.html.haml +5 -0
  118. data/comfortable_mexican_sofa.gemspec +6 -4
  119. data/config/initializers/comfortable_mexican_sofa.rb +0 -5
  120. data/config/locales/da.yml +233 -0
  121. data/config/locales/de.yml +203 -214
  122. data/config/locales/en.yml +198 -210
  123. data/config/locales/es.yml +195 -207
  124. data/config/locales/fr.yml +195 -207
  125. data/config/locales/it.yml +201 -212
  126. data/config/locales/ja.yml +195 -208
  127. data/config/locales/nl.yml +201 -213
  128. data/config/locales/pl.yml +195 -207
  129. data/config/locales/pt-BR.yml +196 -208
  130. data/config/locales/ru.yml +203 -213
  131. data/config/locales/sv.yml +194 -206
  132. data/config/locales/zh-CN.yml +201 -213
  133. data/db/cms_fixtures/sample-site/layouts/default/nested/content.haml +3 -0
  134. data/db/cms_fixtures/sample-site/pages/index/child/left.haml +1 -0
  135. data/db/cms_fixtures/sample-site/pages/index/child/thumbnail.png +0 -0
  136. data/db/migrate/01_create_cms.rb +40 -38
  137. data/db/upgrade_migrations/08_upgrade_to_1_12_0.rb +41 -0
  138. data/lib/comfortable_mexican_sofa.rb +1 -0
  139. data/lib/comfortable_mexican_sofa/configuration.rb +2 -8
  140. data/lib/comfortable_mexican_sofa/engine.rb +3 -1
  141. data/lib/comfortable_mexican_sofa/extensions/acts_as_tree.rb +6 -0
  142. data/lib/comfortable_mexican_sofa/extensions/cms_manageable.rb +106 -0
  143. data/lib/comfortable_mexican_sofa/extensions/has_revisions.rb +2 -1
  144. data/lib/comfortable_mexican_sofa/extensions/is_categorized.rb +4 -4
  145. data/lib/comfortable_mexican_sofa/extensions/is_mirrored.rb +8 -8
  146. data/lib/comfortable_mexican_sofa/fixture.rb +2 -9
  147. data/lib/comfortable_mexican_sofa/fixture/category.rb +6 -6
  148. data/lib/comfortable_mexican_sofa/fixture/file.rb +1 -1
  149. data/lib/comfortable_mexican_sofa/fixture/layout.rb +8 -3
  150. data/lib/comfortable_mexican_sofa/fixture/page.rb +13 -3
  151. data/lib/comfortable_mexican_sofa/fixture/snippet.rb +7 -3
  152. data/lib/comfortable_mexican_sofa/form_builder.rb +30 -17
  153. data/lib/comfortable_mexican_sofa/render_methods.rb +58 -50
  154. data/lib/comfortable_mexican_sofa/routes/cms.rb +12 -10
  155. data/lib/comfortable_mexican_sofa/routes/cms_admin.rb +26 -24
  156. data/lib/comfortable_mexican_sofa/tag.rb +14 -14
  157. data/lib/comfortable_mexican_sofa/tags/asset.rb +3 -3
  158. data/lib/comfortable_mexican_sofa/tags/file.rb +2 -2
  159. data/lib/comfortable_mexican_sofa/tags/page_file.rb +29 -18
  160. data/lib/comfortable_mexican_sofa/tags/page_files.rb +34 -35
  161. data/lib/comfortable_mexican_sofa/tags/snippet.rb +3 -3
  162. data/lib/comfortable_mexican_sofa/version.rb +1 -1
  163. data/lib/comfortable_mexican_sofa/view_methods.rb +67 -74
  164. data/lib/generators/comfy/scaffold/scaffold_generator.rb +1 -1
  165. data/lib/generators/comfy/scaffold/templates/controller.rb +4 -4
  166. data/lib/generators/comfy/scaffold/templates/tests/controller.rb +3 -3
  167. data/lib/generators/comfy/scaffold/templates/views/_form.haml +1 -1
  168. data/lib/generators/comfy/scaffold/templates/views/index.haml +6 -6
  169. data/test/controllers/{admin → comfy/admin}/cms/base_controller_test.rb +3 -3
  170. data/test/controllers/comfy/admin/cms/categories_controller_test.rb +70 -0
  171. data/test/controllers/{admin → comfy/admin}/cms/files_controller_test.rb +53 -45
  172. data/test/controllers/{admin → comfy/admin}/cms/layouts_controller_test.rb +29 -29
  173. data/test/controllers/{admin → comfy/admin}/cms/pages_controller_test.rb +111 -110
  174. data/test/controllers/comfy/admin/cms/revisions_controller_test.rb +138 -0
  175. data/test/controllers/{admin → comfy/admin}/cms/sites_controller_test.rb +15 -15
  176. data/test/controllers/{admin → comfy/admin}/cms/snippets_controller_test.rb +29 -29
  177. data/test/controllers/comfy/cms/assets_controller_test.rb +38 -0
  178. data/test/controllers/{cms → comfy/cms}/content_controller_test.rb +28 -28
  179. data/test/fixtures/{cms → comfy/cms}/blocks.yml +2 -2
  180. data/test/fixtures/{cms → comfy/cms}/categories.yml +1 -1
  181. data/test/fixtures/comfy/cms/categorizations.yml +3 -0
  182. data/test/fixtures/{cms → comfy/cms}/files.yml +0 -0
  183. data/test/fixtures/{cms → comfy/cms}/layouts.yml +0 -0
  184. data/test/fixtures/{cms → comfy/cms}/pages.yml +2 -2
  185. data/test/fixtures/{cms → comfy/cms}/revisions.yml +3 -3
  186. data/test/fixtures/{cms → comfy/cms}/sites.yml +0 -0
  187. data/test/fixtures/{cms → comfy/cms}/snippets.yml +0 -0
  188. data/test/fixtures/generators/scaffold/controller.rb +4 -4
  189. data/test/fixtures/generators/scaffold/tests/controller.rb +3 -3
  190. data/test/fixtures/generators/scaffold/views/_form.haml +1 -1
  191. data/test/fixtures/generators/scaffold/views/index.haml +6 -6
  192. data/test/gemfiles/Gemfile.rails.4.0 +4 -2
  193. data/test/gemfiles/Gemfile.rails.4.1 +5 -3
  194. data/test/gemfiles/Gemfile.rails.master +22 -0
  195. data/test/generators/scaffold_generator_test.rb +1 -1
  196. data/test/integration/authentication_test.rb +2 -2
  197. data/test/integration/fixtures_test.rb +26 -24
  198. data/test/integration/mirrors_test.rb +14 -14
  199. data/test/integration/render_cms_test.rb +17 -16
  200. data/test/integration/sites_test.rb +21 -21
  201. data/test/integration/view_hooks_test.rb +7 -7
  202. data/test/lib/configuration_test.rb +1 -5
  203. data/test/lib/fixtures/categories_test.rb +8 -8
  204. data/test/lib/fixtures/files_test.rb +11 -11
  205. data/test/lib/fixtures/layouts_test.rb +19 -19
  206. data/test/lib/fixtures/pages_test.rb +24 -24
  207. data/test/lib/fixtures/snippets_test.rb +14 -14
  208. data/test/lib/fixtures_test.rb +8 -8
  209. data/test/lib/mirrors_test.rb +25 -25
  210. data/test/lib/revisions_test.rb +26 -26
  211. data/test/lib/tag_test.rb +26 -26
  212. data/test/lib/tags/asset_test.rb +11 -11
  213. data/test/lib/tags/collection_test.rb +33 -32
  214. data/test/lib/tags/field_boolean_test.rb +6 -6
  215. data/test/lib/tags/field_datetime_test.rb +6 -6
  216. data/test/lib/tags/field_integer_test.rb +6 -6
  217. data/test/lib/tags/field_rich_text_test.rb +6 -6
  218. data/test/lib/tags/field_string_test.rb +7 -7
  219. data/test/lib/tags/field_text_test.rb +6 -6
  220. data/test/lib/tags/file_test.rb +12 -12
  221. data/test/lib/tags/helper_test.rb +10 -10
  222. data/test/lib/tags/page_datetime_test.rb +6 -6
  223. data/test/lib/tags/page_file_test.rb +11 -11
  224. data/test/lib/tags/page_files_test.rb +12 -11
  225. data/test/lib/tags/page_integer_test.rb +6 -6
  226. data/test/lib/tags/page_markdown_test.rb +6 -6
  227. data/test/lib/tags/page_rich_text_test.rb +6 -6
  228. data/test/lib/tags/page_string_test.rb +6 -6
  229. data/test/lib/tags/page_text_test.rb +7 -7
  230. data/test/lib/tags/partial_test.rb +10 -10
  231. data/test/lib/tags/snippet_test.rb +6 -6
  232. data/test/lib/tags/template_test.rb +7 -7
  233. data/test/lib/view_methods_test.rb +89 -120
  234. data/test/models/block_test.rb +34 -34
  235. data/test/models/categorization_test.rb +25 -25
  236. data/test/models/category_test.rb +9 -9
  237. data/test/models/file_test.rb +38 -21
  238. data/test/models/layout_test.rb +27 -27
  239. data/test/models/page_test.rb +101 -71
  240. data/test/models/site_test.rb +50 -50
  241. data/test/models/snippet_test.rb +9 -9
  242. data/test/test_helper.rb +7 -9
  243. metadata +174 -147
  244. data/app/assets/images/comfortable_mexican_sofa/bootstrap/glyphicons-halflings-white.png +0 -0
  245. data/app/assets/images/comfortable_mexican_sofa/bootstrap/glyphicons-halflings.png +0 -0
  246. data/app/assets/javascripts/comfortable_mexican_sofa/lib/bootstrap-wysihtml5.js +0 -492
  247. data/app/assets/javascripts/comfortable_mexican_sofa/lib/bootstrap.js +0 -6
  248. data/app/assets/javascripts/comfortable_mexican_sofa/lib/wysihtml5.js +0 -261
  249. data/app/assets/stylesheets/comfortable_mexican_sofa/lib/bootstrap-wysihtml5.css +0 -102
  250. data/app/assets/stylesheets/comfortable_mexican_sofa/lib/bootstrap.css +0 -9
  251. data/app/assets/stylesheets/comfortable_mexican_sofa/wysihtml5_overrides.css.sass +0 -5
  252. data/app/models/concerns/cms/base.rb +0 -17
  253. data/app/views/admin/cms/categories/_edit.html.haml +0 -6
  254. data/app/views/admin/cms/categories/_index.html.haml +0 -24
  255. data/app/views/admin/cms/files/_form.html.haml +0 -18
  256. data/app/views/admin/cms/files/_index.html.haml +0 -14
  257. data/app/views/admin/cms/files/index.html.haml +0 -32
  258. data/app/views/admin/cms/layouts/_index_branch.html.haml +0 -23
  259. data/app/views/admin/cms/layouts/edit.html.haml +0 -9
  260. data/app/views/admin/cms/layouts/index.html.haml +0 -13
  261. data/app/views/admin/cms/pages/_form.html.haml +0 -39
  262. data/app/views/admin/cms/pages/edit.html.haml +0 -9
  263. data/app/views/admin/cms/pages/index.html.haml +0 -15
  264. data/app/views/admin/cms/revisions/show.html.haml +0 -29
  265. data/app/views/admin/cms/sites/_form.html.haml +0 -14
  266. data/app/views/admin/cms/sites/_mirrors.html.haml +0 -18
  267. data/app/views/admin/cms/sites/index.html.haml +0 -28
  268. data/app/views/admin/cms/snippets/_form.html.haml +0 -15
  269. data/app/views/admin/cms/snippets/index.html.haml +0 -32
  270. data/app/views/layouts/admin/cms.html.haml +0 -4
  271. data/app/views/layouts/admin/cms/_body.html.haml +0 -17
  272. data/app/views/layouts/admin/cms/_left.html.haml +0 -16
  273. data/app/views/layouts/admin/cms/_right.html.haml +0 -5
  274. data/db/cms_fixtures/sample-site/layouts/default/nested/content.html +0 -2
  275. data/db/cms_fixtures/sample-site/pages/index/child/left.html +0 -1
  276. data/doc/sofa.png +0 -0
  277. data/test/controllers/admin/cms/categories_controller_test.rb +0 -70
  278. data/test/controllers/admin/cms/revisions_controller_test.rb +0 -138
  279. data/test/controllers/cms/assets_controller_test.rb +0 -29
  280. data/test/fixtures/cms/categorizations.yml +0 -3
@@ -11,7 +11,7 @@ module ComfortableMexicanSofa::Fixture
11
11
  def initialize(from, to = from, force_import = false)
12
12
  self.from = from
13
13
  self.to = to
14
- self.site = Cms::Site.where(:identifier => to).first!
14
+ self.site = Comfy::Cms::Site.where(:identifier => to).first!
15
15
  self.fixture_ids = []
16
16
  self.force_import = force_import
17
17
 
@@ -40,13 +40,6 @@ module ComfortableMexicanSofa::Fixture
40
40
  end
41
41
  end
42
42
 
43
- def read_as_haml(path)
44
- content = ::File.open(path).read
45
- Haml::Engine.new(content).render.rstrip
46
- rescue # Bad haml, calls to helpers, who knows?
47
- content
48
- end
49
-
50
43
  def import!
51
44
  ComfortableMexicanSofa::Fixture::Category::Importer.new(from, to, force_import).import!
52
45
  ComfortableMexicanSofa::Fixture::File::Importer.new( from, to, force_import).import!
@@ -65,7 +58,7 @@ module ComfortableMexicanSofa::Fixture
65
58
  def initialize(from, to = from)
66
59
  self.from = from
67
60
  self.to = to
68
- self.site = Cms::Site.where(:identifier => from).first!
61
+ self.site = Comfy::Cms::Site.where(:identifier => from).first!
69
62
  dir = self.class.name.split('::')[2].downcase.pluralize
70
63
  self.path = ::File.join(ComfortableMexicanSofa.config.fixtures_path, to, dir)
71
64
  end
@@ -2,9 +2,9 @@ module ComfortableMexicanSofa::Fixture::Category
2
2
  class Importer < ComfortableMexicanSofa::Fixture::Importer
3
3
  def import!
4
4
  {
5
- 'files' => 'Cms::File',
6
- 'pages' => 'Cms::Page',
7
- 'snippets' => 'Cms::Snippet'
5
+ 'files' => 'Comfy::Cms::File',
6
+ 'pages' => 'Comfy::Cms::Page',
7
+ 'snippets' => 'Comfy::Cms::Snippet'
8
8
  }.each do |file, type|
9
9
  if File.exists?(attrs_path = File.join(path, "#{file}.yml"))
10
10
  categories = get_attributes(attrs_path)
@@ -20,9 +20,9 @@ module ComfortableMexicanSofa::Fixture::Category
20
20
  def export!
21
21
  prepare_folder!(self.path)
22
22
  {
23
- 'files' => 'Cms::File',
24
- 'pages' => 'Cms::Page',
25
- 'snippets' => 'Cms::Snippet'
23
+ 'files' => 'Comfy::Cms::File',
24
+ 'pages' => 'Comfy::Cms::Page',
25
+ 'snippets' => 'Comfy::Cms::Snippet'
26
26
  }.each do |file, type|
27
27
  if (categories = self.site.categories.of_type(type)).present?
28
28
  open(File.join(self.path, "#{file}.yml"), 'w') do |f|
@@ -34,7 +34,7 @@ module ComfortableMexicanSofa::Fixture::File
34
34
  end
35
35
 
36
36
  # cleaning up
37
- self.site.files.where('id NOT IN (?)', fixture_ids).each{ |s| s.destroy }
37
+ self.site.files.where('id NOT IN (?) AND block_id IS NULL', fixture_ids).each{ |s| s.destroy }
38
38
  end
39
39
  end
40
40
 
@@ -19,11 +19,16 @@ module ComfortableMexicanSofa::Fixture::Layout
19
19
  end
20
20
 
21
21
  # setting content
22
- if File.exists?(content_path = File.join(path, 'content.html'))
23
- if fresh_fixture?(layout, content_path)
24
- layout.content = read_as_haml(content_path)
22
+ %w(html haml).each do |extension|
23
+ if File.exists?(content_path = File.join(path, "content.#{extension}"))
24
+ if fresh_fixture?(layout, content_path)
25
+ layout.content = extension == "html" ?
26
+ ::File.open(content_path).read :
27
+ Haml::Engine.new(::File.open(content_path).read).render.rstrip
28
+ end
25
29
  end
26
30
  end
31
+
27
32
  if File.exists?(content_path = File.join(path, 'stylesheet.css'))
28
33
  if fresh_fixture?(layout, content_path)
29
34
  layout.css = File.open(content_path).read
@@ -36,13 +36,23 @@ module ComfortableMexicanSofa::Fixture::Page
36
36
  # setting content
37
37
  blocks_to_clear = page.blocks.collect(&:identifier)
38
38
  blocks_attributes = [ ]
39
- Dir.glob("#{path}/*.html").each do |block_path|
40
- identifier = block_path.split('/').last.gsub(/\.html\z/, '')
39
+ file_extentions = %w(html haml jpg png gif)
40
+ Dir.glob("#{path}/*.{#{file_extentions.join(',')}}").each do |block_path|
41
+ extention = File.extname(block_path)[1..-1]
42
+ identifier = block_path.split('/').last.gsub(/\.(#{file_extentions.join('|')})\z/, '')
41
43
  blocks_to_clear.delete(identifier)
42
44
  if fresh_fixture?(page, block_path)
45
+ content = case extention
46
+ when 'jpg', 'png', 'gif'
47
+ ::File.open(block_path)
48
+ when 'haml'
49
+ Haml::Engine.new(::File.open(block_path).read).render.rstrip
50
+ else
51
+ ::File.open(block_path).read
52
+ end
43
53
  blocks_attributes << {
44
54
  :identifier => identifier,
45
- :content => read_as_haml(block_path)
55
+ :content => content
46
56
  }
47
57
  end
48
58
  end
@@ -18,9 +18,13 @@ module ComfortableMexicanSofa::Fixture::Snippet
18
18
  end
19
19
 
20
20
  # setting content
21
- if File.exists?(content_path = File.join(path, 'content.html'))
22
- if fresh_fixture?(snippet, content_path)
23
- snippet.content = read_as_haml(content_path)
21
+ %w(html haml).each do |extension|
22
+ if File.exists?(content_path = File.join(path, "content.#{extension}"))
23
+ if fresh_fixture?(snippet, content_path)
24
+ snippet.content = extension == "html" ?
25
+ ::File.open(content_path).read :
26
+ Haml::Engine.new(::File.open(content_path).read).render.rstrip
27
+ end
24
28
  end
25
29
  end
26
30
 
@@ -1,16 +1,20 @@
1
- class ComfortableMexicanSofa::FormBuilder < FormattedForm::FormBuilder
1
+ class ComfortableMexicanSofa::FormBuilder < BootstrapForm::FormBuilder
2
+
3
+ def field_name_for(tag)
4
+ tag.blockable.class.name.demodulize.underscore.gsub(/\//,'_')
5
+ end
2
6
 
3
7
  # -- Tag Field Fields -----------------------------------------------------
4
8
  def default_tag_field(tag, index, method = :text_field_tag, options = {})
5
9
 
6
- label = tag.page.class.human_attribute_name(tag.identifier.to_s)
7
- css_class = tag.class.to_s.demodulize.underscore
8
- content = ''
9
-
10
+ label = tag.blockable.class.human_attribute_name(tag.identifier.to_s)
11
+ css_class = tag.class.to_s.demodulize.underscore
12
+ content = ''
13
+ fieldname = field_name_for(tag)
10
14
  case method
11
15
  when :file_field_tag
12
16
  input_params = {:id => nil}
13
- name = "page[blocks_attributes][#{index}][content]"
17
+ name = "#{fieldname}[blocks_attributes][#{index}][content]"
14
18
 
15
19
  if options.delete(:multiple)
16
20
  input_params.merge!(:multiple => true)
@@ -18,13 +22,16 @@ class ComfortableMexicanSofa::FormBuilder < FormattedForm::FormBuilder
18
22
  end
19
23
 
20
24
  content << @template.send(method, name, input_params)
21
- content << @template.render(:partial => 'admin/cms/files/page_form', :object => tag.block)
25
+ content << @template.render(:partial => 'comfy/admin/cms/files/page_form', :object => tag.block)
22
26
  else
23
- content << @template.send(method, "page[blocks_attributes][#{index}][content]", tag.content, options)
27
+ options[:class] = ' form-control'
28
+ content << @template.send(method, "#{fieldname}[blocks_attributes][#{index}][content]", tag.content, options)
24
29
  end
25
- content << @template.hidden_field_tag("page[blocks_attributes][#{index}][identifier]", tag.identifier, :id => nil)
30
+ content << @template.hidden_field_tag("#{fieldname}[blocks_attributes][#{index}][identifier]", tag.identifier, :id => nil)
26
31
 
27
- element(label, content.html_safe)
32
+ form_group :label => {:text => label} do
33
+ content.html_safe
34
+ end
28
35
  end
29
36
 
30
37
  def field_date_time(tag, index)
@@ -48,10 +55,13 @@ class ComfortableMexicanSofa::FormBuilder < FormattedForm::FormBuilder
48
55
  end
49
56
 
50
57
  def field_boolean(tag, index)
51
- content = @template.hidden_field_tag("page[blocks_attributes][#{index}][content]", '', :id => nil)
52
- content << @template.check_box_tag("page[blocks_attributes][#{index}][content]", '1', tag.content.present?, :id => nil)
53
- content << @template.hidden_field_tag("page[blocks_attributes][#{index}][identifier]", tag.identifier, :id => nil)
54
- element(tag.identifier.titleize + "?", content)
58
+ fieldname = field_name_for(tag)
59
+ content = @template.hidden_field_tag("#{fieldname}[blocks_attributes][#{index}][content]", '', :id => nil)
60
+ content << @template.check_box_tag("#{fieldname}[blocks_attributes][#{index}][content]", '1', tag.content.present?, :id => nil)
61
+ content << @template.hidden_field_tag("#{fieldname}[blocks_attributes][#{index}][identifier]", tag.identifier, :id => nil)
62
+ form_group :label => {:text => tag.identifier.titleize + "?"} do
63
+ content
64
+ end
55
65
  end
56
66
 
57
67
  def page_date_time(tag, index)
@@ -92,13 +102,16 @@ class ComfortableMexicanSofa::FormBuilder < FormattedForm::FormBuilder
92
102
  [m.send(tag.collection_title), m.send(tag.collection_identifier)]
93
103
  end
94
104
 
105
+ fieldname = field_name_for(tag)
95
106
  content = @template.select_tag(
96
- "page[blocks_attributes][#{index}][content]",
107
+ "#{fieldname}[blocks_attributes][#{index}][content]",
97
108
  @template.options_for_select(options, :selected => tag.content),
98
109
  :id => nil
99
110
  )
100
- content << @template.hidden_field_tag("page[blocks_attributes][#{index}][identifier]", tag.identifier, :id => nil)
101
- element(tag.identifier.titleize, content, :class => tag.class.to_s.demodulize.underscore )
111
+ content << @template.hidden_field_tag("#{fieldname}[blocks_attributes][#{index}][identifier]", tag.identifier, :id => nil)
112
+ form_group :label => {:text => tag.identifier.titleize}, :class => tag.class.to_s.demodulize.underscore do
113
+ content
114
+ end
102
115
  end
103
116
 
104
117
  end
@@ -36,63 +36,71 @@ module ComfortableMexicanSofa::RenderMethods
36
36
  #
37
37
  def render(options = {}, locals = {}, &block)
38
38
 
39
- if options.is_a?(Hash) && identifier = options.delete(:cms_site)
40
- unless @cms_site = Cms::Site.find_by_identifier(identifier)
41
- raise ComfortableMexicanSofa::MissingSite.new(identifier)
39
+ return super unless options.is_a?(Hash)
40
+
41
+ if site_identifier = options.delete(:cms_site)
42
+ unless @cms_site = Comfy::Cms::Site.find_by_identifier(site_identifier)
43
+ raise ComfortableMexicanSofa::MissingSite.new(site_identifier)
42
44
  end
43
45
  end
44
46
 
45
- if options.is_a?(Hash) && path = options.delete(:cms_page)
46
- @cms_site ||= Cms::Site.find_site(request.host.downcase, request.fullpath)
47
- path.gsub!(/^\/#{@cms_site.path}/, '') if @cms_site && @cms_site.path.present?
48
-
49
- if @cms_page = @cms_site && @cms_site.pages.find_by_full_path(path)
50
- @cms_layout = @cms_page.layout
51
- if (cms_blocks = options.delete(:cms_blocks)).present?
52
- cms_blocks.each do |identifier, value|
53
- content = if value.is_a?(Hash)
54
- render_to_string(value.keys.first.to_sym => value[value.keys.first], :layout => false)
55
- else
56
- value.to_s
57
- end
58
- page_block = @cms_page.blocks.detect{|b| b.identifier == identifier.to_s} ||
59
- @cms_page.blocks.build(:identifier => identifier.to_s)
60
- page_block.content = content
61
- end
62
- end
63
- cms_app_layout = @cms_layout.try(:app_layout)
64
- options[:layout] ||= cms_app_layout.blank?? nil : cms_app_layout
65
- options[:inline] = @cms_page.render
66
- super(options, locals, &block)
67
- else
68
- raise ComfortableMexicanSofa::MissingPage.new(path)
69
- end
70
-
71
- elsif options.is_a?(Hash) && identifier = options.delete(:cms_layout)
72
- @cms_site ||= Cms::Site.find_site(request.host.downcase, request.fullpath)
73
- if @cms_layout = @cms_site && @cms_site.layouts.find_by_identifier(identifier)
74
- cms_app_layout = @cms_layout.try(:app_layout)
75
- cms_page = @cms_site.pages.build(:layout => @cms_layout)
76
- cms_blocks = options.delete(:cms_blocks) || { :content => render_to_string({ :layout => false }.merge(options)) }
77
- cms_blocks.each do |identifier, value|
78
- content = if value.is_a?(Hash)
79
- render_to_string(value.keys.first.to_sym => value[value.keys.first], :layout => false)
80
- else
81
- value.to_s
82
- end
83
- cms_page.blocks.build(:identifier => identifier.to_s, :content => content)
84
- end
85
- options[:layout] ||= cms_app_layout.blank?? nil : cms_app_layout
86
- options[:inline] = cms_page.render
87
- super(options, locals, &block)
88
- else
89
- raise ComfortableMexicanSofa::MissingLayout.new(identifier)
47
+ if (page_path = options.delete(:cms_page)) || (layout_identifier = options.delete(:cms_layout))
48
+ unless @cms_site ||= Comfy::Cms::Site.find_site(request.host.downcase, request.fullpath)
49
+ raise ComfortableMexicanSofa::MissingSite.new("#{request.host.downcase}/#{request.fullpath}")
90
50
  end
91
-
51
+ end
52
+
53
+ if page_path
54
+ render_cms_page(page_path, options, locals, &block)
55
+ elsif layout_identifier
56
+ render_cms_layout(layout_identifier, options, locals, &block)
92
57
  else
93
- super(options, locals, &block)
58
+ super
59
+ end
60
+ end
61
+
62
+ def render_cms_page(path, options = {}, locals = {}, &block)
63
+ path.gsub!(/^\/#{@cms_site.path}/, '') if @cms_site.path.present?
64
+
65
+ unless @cms_page = @cms_site.pages.find_by_full_path(path)
66
+ raise ComfortableMexicanSofa::MissingPage.new(path)
67
+ end
68
+
69
+ @cms_layout = @cms_page.layout
70
+ if (cms_blocks = options.delete(:cms_blocks)).present?
71
+ cms_blocks.each do |identifier, value|
72
+ content = value.is_a?(Hash) ? render_to_string(value.merge(:layout => false)) : value.to_s
73
+ page_block = @cms_page.blocks.detect{|b| b.identifier == identifier.to_s} ||
74
+ @cms_page.blocks.build(:identifier => identifier.to_s)
75
+ page_block.content = content
76
+ end
77
+ end
78
+ cms_app_layout = @cms_layout.app_layout
79
+ options[:layout] ||= cms_app_layout.blank?? nil : cms_app_layout
80
+ options[:inline] = @cms_page.render
81
+
82
+ render(options, locals, &block)
83
+ end
84
+
85
+ def render_cms_layout(identifier, options = {}, locals = {}, &block)
86
+
87
+ unless @cms_layout = @cms_site.layouts.find_by_identifier(identifier)
88
+ raise ComfortableMexicanSofa::MissingLayout.new(identifier)
89
+ end
90
+
91
+ cms_app_layout = @cms_layout.app_layout
92
+ cms_page = @cms_site.pages.build(:layout => @cms_layout)
93
+ cms_blocks = options.delete(:cms_blocks) || { :content => render_to_string({ :layout => false }.merge(options)) }
94
+ cms_blocks.each do |identifier, value|
95
+ content = value.is_a?(Hash) ? render_to_string(value.merge(:layout => false)) : value.to_s
96
+ cms_page.blocks.build(:identifier => identifier.to_s, :content => content)
94
97
  end
98
+ options[:layout] ||= cms_app_layout.blank?? nil : cms_app_layout
99
+ options[:inline] = cms_page.render
100
+
101
+ render(options, locals, &block)
95
102
  end
103
+
96
104
  end
97
105
  end
98
106
 
@@ -1,18 +1,20 @@
1
1
  class ActionDispatch::Routing::Mapper
2
2
 
3
3
  def comfy_route_cms(options = {})
4
- namespace :cms, :path => options[:path] do
5
- get 'cms-css/:site_id/:identifier' => 'assets#render_css', :as => 'render_css'
6
- get 'cms-js/:site_id/:identifier' => 'assets#render_js', :as => 'render_js'
4
+ scope :module => :comfy, :as => :comfy do
5
+ namespace :cms, :path => options[:path] do
6
+ get 'cms-css/:site_id/:identifier' => 'assets#render_css', :as => 'render_css'
7
+ get 'cms-js/:site_id/:identifier' => 'assets#render_js', :as => 'render_js'
7
8
 
8
- if options[:sitemap]
9
- get '(:cms_path)/sitemap' => 'content#render_sitemap',
10
- :as => 'render_sitemap',
11
- :constraints => {:format => /xml/},
12
- :format => :xml
13
- end
9
+ if options[:sitemap]
10
+ get '(:cms_path)/sitemap' => 'content#render_sitemap',
11
+ :as => 'render_sitemap',
12
+ :constraints => {:format => /xml/},
13
+ :format => :xml
14
+ end
14
15
 
15
- get '/:format' => 'content#show', :as => 'render_page', :path => "(*cms_path)"
16
+ get '/:format' => 'content#show', :as => 'render_page', :path => "(*cms_path)"
17
+ end
16
18
  end
17
19
  end
18
20
  end
@@ -3,34 +3,36 @@ class ActionDispatch::Routing::Mapper
3
3
  def comfy_route_cms_admin(options = {})
4
4
  options[:path] ||= 'admin'
5
5
 
6
- scope :module => :admin do
7
- namespace :cms, :as => :admin_cms, :path => options[:path], :except => :show do
8
- get '/', :to => 'base#jump'
9
- resources :sites do
10
- resources :pages do
11
- get :form_blocks, :on => :member
12
- get :toggle_branch, :on => :member
13
- put :reorder, :on => :collection
14
- resources :revisions, :only => [:index, :show, :revert] do
15
- patch :revert, :on => :member
6
+ scope :module => :comfy, :as => :comfy do
7
+ scope :module => :admin do
8
+ namespace :cms, :as => :admin_cms, :path => options[:path], :except => :show do
9
+ get '/', :to => 'base#jump'
10
+ resources :sites do
11
+ resources :pages do
12
+ get :form_blocks, :on => :member
13
+ get :toggle_branch, :on => :member
14
+ put :reorder, :on => :collection
15
+ resources :revisions, :only => [:index, :show, :revert] do
16
+ patch :revert, :on => :member
17
+ end
16
18
  end
17
- end
18
- resources :files do
19
- post :reorder, :on => :collection
20
- end
21
- resources :layouts do
22
- put :reorder, :on => :collection
23
- resources :revisions, :only => [:index, :show, :revert] do
24
- patch :revert, :on => :member
19
+ resources :files do
20
+ post :reorder, :on => :collection
25
21
  end
26
- end
27
- resources :snippets do
28
- put :reorder, :on => :collection
29
- resources :revisions, :only => [:index, :show, :revert] do
30
- patch :revert, :on => :member
22
+ resources :layouts do
23
+ put :reorder, :on => :collection
24
+ resources :revisions, :only => [:index, :show, :revert] do
25
+ patch :revert, :on => :member
26
+ end
27
+ end
28
+ resources :snippets do
29
+ put :reorder, :on => :collection
30
+ resources :revisions, :only => [:index, :show, :revert] do
31
+ patch :revert, :on => :member
32
+ end
31
33
  end
34
+ resources :categories
32
35
  end
33
- resources :categories
34
36
  end
35
37
  end
36
38
  end
@@ -13,7 +13,7 @@ module ComfortableMexicanSofa::Tag
13
13
  TOKENIZER_REGEX = /(\{\{\s*cms:[^{}]*\}\})|((?:\{?[^{])+|\{+)/
14
14
  IDENTIFIER_REGEX = /\w+[\-\.\w]+\w+/
15
15
 
16
- attr_accessor :page,
16
+ attr_accessor :blockable,
17
17
  :identifier,
18
18
  :namespace,
19
19
  :params,
@@ -33,7 +33,7 @@ module ComfortableMexicanSofa::Tag
33
33
  # First capture group in the regex is the tag identifier
34
34
  # Namespace is the string separated by a dot. So if identifier is:
35
35
  # 'sidebar.about' namespace is: 'sidebar'
36
- def initialize_tag(page, tag_signature)
36
+ def initialize_tag(blockable, tag_signature)
37
37
  if match = tag_signature.match(regex_tag_signature)
38
38
 
39
39
  params = begin
@@ -43,7 +43,7 @@ module ComfortableMexicanSofa::Tag
43
43
  end.map{|p| p.gsub(/\\|'/) { |c| "\\#{c}" } }
44
44
 
45
45
  tag = self.new
46
- tag.page = page
46
+ tag.blockable = blockable
47
47
  tag.identifier = match[1]
48
48
  tag.namespace = (ns = tag.identifier.split('.')[0...-1].join('.')).blank?? nil : ns
49
49
  tag.params = params
@@ -85,18 +85,18 @@ module ComfortableMexicanSofa::Tag
85
85
  ComfortableMexicanSofa::Tag.sanitize_irb(content, ignore)
86
86
  end
87
87
 
88
- # Find or initialize Cms::Block object
88
+ # Find or initialize Comfy::Cms::Block object
89
89
  def block
90
- page.blocks.detect{|b| b.identifier == self.identifier.to_s} ||
91
- page.blocks.build(:identifier => self.identifier.to_s)
90
+ blockable.blocks.detect{|b| b.identifier == self.identifier.to_s} ||
91
+ blockable.blocks.build(:identifier => self.identifier.to_s)
92
92
  end
93
93
 
94
- # Checks if this tag is using Cms::Block
94
+ # Checks if this tag is using Comfy::Cms::Block
95
95
  def is_cms_block?
96
96
  %w(page field collection).member?(self.class.to_s.demodulize.underscore.split(/_/).first)
97
97
  end
98
98
 
99
- # Used in displaying form elements for Cms::Block
99
+ # Used in displaying form elements for Comfy::Cms::Block
100
100
  def record_id
101
101
  block.id
102
102
  end
@@ -105,24 +105,24 @@ module ComfortableMexicanSofa::Tag
105
105
  private
106
106
 
107
107
  # Initializes a tag. It's handled by one of the tag classes
108
- def self.initialize_tag(page, tag_signature)
108
+ def self.initialize_tag(blockable, tag_signature)
109
109
  tag_instance = nil
110
- tag_classes.find{ |c| tag_instance = c.initialize_tag(page, tag_signature) }
110
+ tag_classes.find{ |c| tag_instance = c.initialize_tag(blockable, tag_signature) }
111
111
  tag_instance
112
112
  end
113
113
 
114
114
  # Scanning provided content and splitting it into [tag, text] tuples.
115
115
  # Tags are processed further and their content is expanded in the same way.
116
116
  # Tags are defined in the parent tags are ignored and not rendered.
117
- def self.process_content(page, content = '', parent_tag = nil)
117
+ def self.process_content(blockable, content = '', parent_tag = nil)
118
118
  tokens = content.to_s.scan(TOKENIZER_REGEX)
119
119
  tokens.collect do |tag_signature, text|
120
120
  if tag_signature
121
- if tag = self.initialize_tag(page, tag_signature)
121
+ if tag = self.initialize_tag(blockable, tag_signature)
122
122
  tag.parent = parent_tag if parent_tag
123
123
  if tag.ancestors.select{|a| a.id == tag.id}.blank?
124
- page.tags << tag
125
- self.process_content(page, tag.render, tag)
124
+ blockable.tags << tag
125
+ self.process_content(blockable, tag.render, tag)
126
126
  end
127
127
  end
128
128
  else