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.
- checksums.yaml +4 -4
- data/.travis.yml +7 -2
- data/CONTRIBUTING.md +29 -0
- data/README.md +24 -15
- data/Rakefile +12 -4
- data/app/assets/javascripts/comfortable_mexican_sofa/application.js.coffee +11 -10
- data/app/assets/javascripts/comfortable_mexican_sofa/lib/diff.js.coffee +9 -0
- data/app/assets/javascripts/comfortable_mexican_sofa/lib/diff/diff_match_patch.min.js +49 -0
- data/app/assets/javascripts/comfortable_mexican_sofa/lib/diff/pretty_text_diff.min.js +5 -0
- data/app/assets/stylesheets/comfortable_mexican_sofa/application.css.sass +7 -9
- data/app/assets/stylesheets/comfortable_mexican_sofa/base.css.sass +45 -15
- data/app/assets/stylesheets/comfortable_mexican_sofa/bootstrap_overrides.css.sass +21 -41
- data/app/controllers/{admin → comfy/admin}/cms/base_controller.rb +9 -8
- data/app/controllers/{admin → comfy/admin}/cms/categories_controller.rb +1 -1
- data/app/controllers/{admin → comfy/admin}/cms/files_controller.rb +11 -11
- data/app/controllers/{admin → comfy/admin}/cms/layouts_controller.rb +10 -10
- data/app/controllers/{admin → comfy/admin}/cms/pages_controller.rb +16 -12
- data/app/controllers/{admin → comfy/admin}/cms/revisions_controller.rb +12 -12
- data/app/controllers/{admin → comfy/admin}/cms/sites_controller.rb +13 -13
- data/app/controllers/{admin → comfy/admin}/cms/snippets_controller.rb +9 -9
- data/app/controllers/{cms → comfy/cms}/assets_controller.rb +1 -1
- data/app/controllers/{cms → comfy/cms}/base_controller.rb +4 -4
- data/app/controllers/{cms → comfy/cms}/content_controller.rb +9 -6
- data/app/models/{cms → comfy/cms}/block.rb +13 -10
- data/app/models/{cms → comfy/cms}/categorization.rb +2 -2
- data/app/models/{cms → comfy/cms}/category.rb +2 -2
- data/app/models/{cms → comfy/cms}/file.rb +12 -11
- data/app/models/{cms → comfy/cms}/layout.rb +10 -8
- data/app/models/{cms → comfy/cms}/page.rb +6 -82
- data/app/models/{cms → comfy/cms}/revision.rb +2 -2
- data/app/models/{cms → comfy/cms}/site.rb +6 -6
- data/app/models/{cms → comfy/cms}/snippet.rb +7 -7
- data/app/views/{admin → comfy/admin}/cms/categories/_categories.html.haml +0 -0
- data/app/views/comfy/admin/cms/categories/_edit.html.haml +6 -0
- data/app/views/{admin → comfy/admin}/cms/categories/_form.html.haml +2 -2
- data/app/views/comfy/admin/cms/categories/_index.html.haml +25 -0
- data/app/views/{admin → comfy/admin}/cms/categories/_show.html.haml +3 -3
- data/app/views/{admin → comfy/admin}/cms/categories/create.js.erb +0 -0
- data/app/views/{admin → comfy/admin}/cms/categories/destroy.js.erb +0 -0
- data/app/views/{admin → comfy/admin}/cms/categories/edit.js.erb +0 -0
- data/app/views/{admin → comfy/admin}/cms/categories/update.js.erb +0 -0
- data/app/views/{admin → comfy/admin}/cms/files/_file.html.haml +2 -2
- data/app/views/comfy/admin/cms/files/_form.html.haml +19 -0
- data/app/views/comfy/admin/cms/files/_index.html.haml +11 -0
- data/app/views/{admin → comfy/admin}/cms/files/_page_form.html.haml +2 -2
- data/app/views/{admin → comfy/admin}/cms/files/destroy.js.coffee +0 -0
- data/app/views/{admin → comfy/admin}/cms/files/edit.html.haml +0 -0
- data/app/views/comfy/admin/cms/files/index.html.haml +31 -0
- data/app/views/{admin → comfy/admin}/cms/files/new.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/layouts/_form.html.haml +6 -6
- data/app/views/comfy/admin/cms/layouts/_index_branch.html.haml +23 -0
- data/app/views/comfy/admin/cms/layouts/edit.html.haml +9 -0
- data/app/views/comfy/admin/cms/layouts/index.html.haml +13 -0
- data/app/views/{admin → comfy/admin}/cms/layouts/new.html.haml +0 -0
- data/app/views/comfy/admin/cms/pages/_form.html.haml +40 -0
- data/app/views/{admin → comfy/admin}/cms/pages/_form_blocks.html.haml +4 -3
- data/app/views/{admin → comfy/admin}/cms/pages/_index_branch.html.haml +7 -7
- data/app/views/comfy/admin/cms/pages/edit.html.haml +9 -0
- data/app/views/{admin → comfy/admin}/cms/pages/form_blocks.js.erb +0 -0
- data/app/views/comfy/admin/cms/pages/index.html.haml +15 -0
- data/app/views/{admin → comfy/admin}/cms/pages/new.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/pages/toggle_branch.js.erb +1 -1
- data/app/views/{admin → comfy/admin}/cms/partials/_body_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_file_form_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_file_form_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_files_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_files_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_html_footer.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_html_head.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_layout_form_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_layout_form_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_layouts_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_layouts_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_navigation_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_navigation_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_navigation_inner.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_page_form_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_page_form_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_page_form_inner.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_pages_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_pages_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_right_column_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_right_column_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_site_form_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_site_form_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_sites_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_sites_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_snippet_form_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_snippet_form_before.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_snippets_after.html.haml +0 -0
- data/app/views/{admin → comfy/admin}/cms/partials/_snippets_before.html.haml +0 -0
- data/app/views/comfy/admin/cms/revisions/show.html.haml +35 -0
- data/app/views/comfy/admin/cms/sites/_form.html.haml +14 -0
- data/app/views/comfy/admin/cms/sites/_mirrors.html.haml +18 -0
- data/app/views/{admin → comfy/admin}/cms/sites/edit.html.haml +0 -0
- data/app/views/comfy/admin/cms/sites/index.html.haml +28 -0
- data/app/views/{admin → comfy/admin}/cms/sites/new.html.haml +0 -0
- data/app/views/comfy/admin/cms/snippets/_form.html.haml +15 -0
- data/app/views/{admin → comfy/admin}/cms/snippets/edit.html.haml +2 -2
- data/app/views/comfy/admin/cms/snippets/index.html.haml +32 -0
- data/app/views/{admin → comfy/admin}/cms/snippets/new.html.haml +0 -0
- data/app/views/{cms → comfy/cms}/content/render_sitemap.xml.builder +0 -0
- data/app/views/kaminari/{_first_page.html.haml → comfy/_first_page.html.haml} +0 -0
- data/app/views/kaminari/{_gap.html.haml → comfy/_gap.html.haml} +0 -0
- data/app/views/kaminari/{_last_page.html.haml → comfy/_last_page.html.haml} +0 -0
- data/app/views/kaminari/{_next_page.html.haml → comfy/_next_page.html.haml} +0 -0
- data/app/views/kaminari/{_page.html.haml → comfy/_page.html.haml} +0 -0
- data/app/views/kaminari/{_paginator.html.haml → comfy/_paginator.html.haml} +0 -0
- data/app/views/kaminari/{_prev_page.html.haml → comfy/_prev_page.html.haml} +0 -0
- data/app/views/layouts/comfy/admin/cms.html.haml +4 -0
- data/app/views/layouts/comfy/admin/cms/_body.html.haml +17 -0
- data/app/views/layouts/{admin → comfy/admin}/cms/_center.html.haml +0 -0
- data/app/views/layouts/{admin → comfy/admin}/cms/_footer.html.haml +0 -0
- data/app/views/layouts/{admin → comfy/admin}/cms/_footer_js.html.haml +2 -2
- data/app/views/layouts/{admin → comfy/admin}/cms/_head.html.haml +1 -1
- data/app/views/layouts/comfy/admin/cms/_left.html.haml +16 -0
- data/app/views/layouts/comfy/admin/cms/_right.html.haml +5 -0
- data/comfortable_mexican_sofa.gemspec +6 -4
- data/config/initializers/comfortable_mexican_sofa.rb +0 -5
- data/config/locales/da.yml +233 -0
- data/config/locales/de.yml +203 -214
- data/config/locales/en.yml +198 -210
- data/config/locales/es.yml +195 -207
- data/config/locales/fr.yml +195 -207
- data/config/locales/it.yml +201 -212
- data/config/locales/ja.yml +195 -208
- data/config/locales/nl.yml +201 -213
- data/config/locales/pl.yml +195 -207
- data/config/locales/pt-BR.yml +196 -208
- data/config/locales/ru.yml +203 -213
- data/config/locales/sv.yml +194 -206
- data/config/locales/zh-CN.yml +201 -213
- data/db/cms_fixtures/sample-site/layouts/default/nested/content.haml +3 -0
- data/db/cms_fixtures/sample-site/pages/index/child/left.haml +1 -0
- data/db/cms_fixtures/sample-site/pages/index/child/thumbnail.png +0 -0
- data/db/migrate/01_create_cms.rb +40 -38
- data/db/upgrade_migrations/08_upgrade_to_1_12_0.rb +41 -0
- data/lib/comfortable_mexican_sofa.rb +1 -0
- data/lib/comfortable_mexican_sofa/configuration.rb +2 -8
- data/lib/comfortable_mexican_sofa/engine.rb +3 -1
- data/lib/comfortable_mexican_sofa/extensions/acts_as_tree.rb +6 -0
- data/lib/comfortable_mexican_sofa/extensions/cms_manageable.rb +106 -0
- data/lib/comfortable_mexican_sofa/extensions/has_revisions.rb +2 -1
- data/lib/comfortable_mexican_sofa/extensions/is_categorized.rb +4 -4
- data/lib/comfortable_mexican_sofa/extensions/is_mirrored.rb +8 -8
- data/lib/comfortable_mexican_sofa/fixture.rb +2 -9
- data/lib/comfortable_mexican_sofa/fixture/category.rb +6 -6
- data/lib/comfortable_mexican_sofa/fixture/file.rb +1 -1
- data/lib/comfortable_mexican_sofa/fixture/layout.rb +8 -3
- data/lib/comfortable_mexican_sofa/fixture/page.rb +13 -3
- data/lib/comfortable_mexican_sofa/fixture/snippet.rb +7 -3
- data/lib/comfortable_mexican_sofa/form_builder.rb +30 -17
- data/lib/comfortable_mexican_sofa/render_methods.rb +58 -50
- data/lib/comfortable_mexican_sofa/routes/cms.rb +12 -10
- data/lib/comfortable_mexican_sofa/routes/cms_admin.rb +26 -24
- data/lib/comfortable_mexican_sofa/tag.rb +14 -14
- data/lib/comfortable_mexican_sofa/tags/asset.rb +3 -3
- data/lib/comfortable_mexican_sofa/tags/file.rb +2 -2
- data/lib/comfortable_mexican_sofa/tags/page_file.rb +29 -18
- data/lib/comfortable_mexican_sofa/tags/page_files.rb +34 -35
- data/lib/comfortable_mexican_sofa/tags/snippet.rb +3 -3
- data/lib/comfortable_mexican_sofa/version.rb +1 -1
- data/lib/comfortable_mexican_sofa/view_methods.rb +67 -74
- data/lib/generators/comfy/scaffold/scaffold_generator.rb +1 -1
- data/lib/generators/comfy/scaffold/templates/controller.rb +4 -4
- data/lib/generators/comfy/scaffold/templates/tests/controller.rb +3 -3
- data/lib/generators/comfy/scaffold/templates/views/_form.haml +1 -1
- data/lib/generators/comfy/scaffold/templates/views/index.haml +6 -6
- data/test/controllers/{admin → comfy/admin}/cms/base_controller_test.rb +3 -3
- data/test/controllers/comfy/admin/cms/categories_controller_test.rb +70 -0
- data/test/controllers/{admin → comfy/admin}/cms/files_controller_test.rb +53 -45
- data/test/controllers/{admin → comfy/admin}/cms/layouts_controller_test.rb +29 -29
- data/test/controllers/{admin → comfy/admin}/cms/pages_controller_test.rb +111 -110
- data/test/controllers/comfy/admin/cms/revisions_controller_test.rb +138 -0
- data/test/controllers/{admin → comfy/admin}/cms/sites_controller_test.rb +15 -15
- data/test/controllers/{admin → comfy/admin}/cms/snippets_controller_test.rb +29 -29
- data/test/controllers/comfy/cms/assets_controller_test.rb +38 -0
- data/test/controllers/{cms → comfy/cms}/content_controller_test.rb +28 -28
- data/test/fixtures/{cms → comfy/cms}/blocks.yml +2 -2
- data/test/fixtures/{cms → comfy/cms}/categories.yml +1 -1
- data/test/fixtures/comfy/cms/categorizations.yml +3 -0
- data/test/fixtures/{cms → comfy/cms}/files.yml +0 -0
- data/test/fixtures/{cms → comfy/cms}/layouts.yml +0 -0
- data/test/fixtures/{cms → comfy/cms}/pages.yml +2 -2
- data/test/fixtures/{cms → comfy/cms}/revisions.yml +3 -3
- data/test/fixtures/{cms → comfy/cms}/sites.yml +0 -0
- data/test/fixtures/{cms → comfy/cms}/snippets.yml +0 -0
- data/test/fixtures/generators/scaffold/controller.rb +4 -4
- data/test/fixtures/generators/scaffold/tests/controller.rb +3 -3
- data/test/fixtures/generators/scaffold/views/_form.haml +1 -1
- data/test/fixtures/generators/scaffold/views/index.haml +6 -6
- data/test/gemfiles/Gemfile.rails.4.0 +4 -2
- data/test/gemfiles/Gemfile.rails.4.1 +5 -3
- data/test/gemfiles/Gemfile.rails.master +22 -0
- data/test/generators/scaffold_generator_test.rb +1 -1
- data/test/integration/authentication_test.rb +2 -2
- data/test/integration/fixtures_test.rb +26 -24
- data/test/integration/mirrors_test.rb +14 -14
- data/test/integration/render_cms_test.rb +17 -16
- data/test/integration/sites_test.rb +21 -21
- data/test/integration/view_hooks_test.rb +7 -7
- data/test/lib/configuration_test.rb +1 -5
- data/test/lib/fixtures/categories_test.rb +8 -8
- data/test/lib/fixtures/files_test.rb +11 -11
- data/test/lib/fixtures/layouts_test.rb +19 -19
- data/test/lib/fixtures/pages_test.rb +24 -24
- data/test/lib/fixtures/snippets_test.rb +14 -14
- data/test/lib/fixtures_test.rb +8 -8
- data/test/lib/mirrors_test.rb +25 -25
- data/test/lib/revisions_test.rb +26 -26
- data/test/lib/tag_test.rb +26 -26
- data/test/lib/tags/asset_test.rb +11 -11
- data/test/lib/tags/collection_test.rb +33 -32
- data/test/lib/tags/field_boolean_test.rb +6 -6
- data/test/lib/tags/field_datetime_test.rb +6 -6
- data/test/lib/tags/field_integer_test.rb +6 -6
- data/test/lib/tags/field_rich_text_test.rb +6 -6
- data/test/lib/tags/field_string_test.rb +7 -7
- data/test/lib/tags/field_text_test.rb +6 -6
- data/test/lib/tags/file_test.rb +12 -12
- data/test/lib/tags/helper_test.rb +10 -10
- data/test/lib/tags/page_datetime_test.rb +6 -6
- data/test/lib/tags/page_file_test.rb +11 -11
- data/test/lib/tags/page_files_test.rb +12 -11
- data/test/lib/tags/page_integer_test.rb +6 -6
- data/test/lib/tags/page_markdown_test.rb +6 -6
- data/test/lib/tags/page_rich_text_test.rb +6 -6
- data/test/lib/tags/page_string_test.rb +6 -6
- data/test/lib/tags/page_text_test.rb +7 -7
- data/test/lib/tags/partial_test.rb +10 -10
- data/test/lib/tags/snippet_test.rb +6 -6
- data/test/lib/tags/template_test.rb +7 -7
- data/test/lib/view_methods_test.rb +89 -120
- data/test/models/block_test.rb +34 -34
- data/test/models/categorization_test.rb +25 -25
- data/test/models/category_test.rb +9 -9
- data/test/models/file_test.rb +38 -21
- data/test/models/layout_test.rb +27 -27
- data/test/models/page_test.rb +101 -71
- data/test/models/site_test.rb +50 -50
- data/test/models/snippet_test.rb +9 -9
- data/test/test_helper.rb +7 -9
- metadata +174 -147
- data/app/assets/images/comfortable_mexican_sofa/bootstrap/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/comfortable_mexican_sofa/bootstrap/glyphicons-halflings.png +0 -0
- data/app/assets/javascripts/comfortable_mexican_sofa/lib/bootstrap-wysihtml5.js +0 -492
- data/app/assets/javascripts/comfortable_mexican_sofa/lib/bootstrap.js +0 -6
- data/app/assets/javascripts/comfortable_mexican_sofa/lib/wysihtml5.js +0 -261
- data/app/assets/stylesheets/comfortable_mexican_sofa/lib/bootstrap-wysihtml5.css +0 -102
- data/app/assets/stylesheets/comfortable_mexican_sofa/lib/bootstrap.css +0 -9
- data/app/assets/stylesheets/comfortable_mexican_sofa/wysihtml5_overrides.css.sass +0 -5
- data/app/models/concerns/cms/base.rb +0 -17
- data/app/views/admin/cms/categories/_edit.html.haml +0 -6
- data/app/views/admin/cms/categories/_index.html.haml +0 -24
- data/app/views/admin/cms/files/_form.html.haml +0 -18
- data/app/views/admin/cms/files/_index.html.haml +0 -14
- data/app/views/admin/cms/files/index.html.haml +0 -32
- data/app/views/admin/cms/layouts/_index_branch.html.haml +0 -23
- data/app/views/admin/cms/layouts/edit.html.haml +0 -9
- data/app/views/admin/cms/layouts/index.html.haml +0 -13
- data/app/views/admin/cms/pages/_form.html.haml +0 -39
- data/app/views/admin/cms/pages/edit.html.haml +0 -9
- data/app/views/admin/cms/pages/index.html.haml +0 -15
- data/app/views/admin/cms/revisions/show.html.haml +0 -29
- data/app/views/admin/cms/sites/_form.html.haml +0 -14
- data/app/views/admin/cms/sites/_mirrors.html.haml +0 -18
- data/app/views/admin/cms/sites/index.html.haml +0 -28
- data/app/views/admin/cms/snippets/_form.html.haml +0 -15
- data/app/views/admin/cms/snippets/index.html.haml +0 -32
- data/app/views/layouts/admin/cms.html.haml +0 -4
- data/app/views/layouts/admin/cms/_body.html.haml +0 -17
- data/app/views/layouts/admin/cms/_left.html.haml +0 -16
- data/app/views/layouts/admin/cms/_right.html.haml +0 -5
- data/db/cms_fixtures/sample-site/layouts/default/nested/content.html +0 -2
- data/db/cms_fixtures/sample-site/pages/index/child/left.html +0 -1
- data/doc/sofa.png +0 -0
- data/test/controllers/admin/cms/categories_controller_test.rb +0 -70
- data/test/controllers/admin/cms/revisions_controller_test.rb +0 -138
- data/test/controllers/cms/assets_controller_test.rb +0 -29
- 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
|
-
|
23
|
-
if
|
24
|
-
layout
|
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
|
-
|
40
|
-
|
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 =>
|
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
|
-
|
22
|
-
if
|
23
|
-
snippet
|
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 <
|
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
|
7
|
-
css_class
|
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 = "
|
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
|
-
|
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("
|
30
|
+
content << @template.hidden_field_tag("#{fieldname}[blocks_attributes][#{index}][identifier]", tag.identifier, :id => nil)
|
26
31
|
|
27
|
-
|
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
|
-
|
52
|
-
content
|
53
|
-
content << @template.
|
54
|
-
|
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
|
-
"
|
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("
|
101
|
-
|
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
|
-
|
40
|
-
|
41
|
-
|
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.
|
46
|
-
@cms_site ||= Cms::Site.find_site(request.host.downcase, request.fullpath)
|
47
|
-
|
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
|
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
|
-
|
5
|
-
|
6
|
-
|
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
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
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 => :
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
resources :
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
18
|
-
|
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
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
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 :
|
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(
|
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.
|
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
|
-
|
91
|
-
|
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(
|
108
|
+
def self.initialize_tag(blockable, tag_signature)
|
109
109
|
tag_instance = nil
|
110
|
-
tag_classes.find{ |c| tag_instance = c.initialize_tag(
|
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(
|
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(
|
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
|
-
|
125
|
-
self.process_content(
|
124
|
+
blockable.tags << tag
|
125
|
+
self.process_content(blockable, tag.render, tag)
|
126
126
|
end
|
127
127
|
end
|
128
128
|
else
|