comfypress 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.travis.yml +22 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +175 -0
- data/LICENSE +20 -0
- data/README.md +79 -0
- data/Rakefile +5 -0
- data/app/assets/images/comfypress/arrow_bottom.gif +0 -0
- data/app/assets/images/comfypress/arrow_right.gif +0 -0
- data/app/assets/images/comfypress/bootstrap/glyphicons-halflings-white.png +0 -0
- data/app/assets/images/comfypress/bootstrap/glyphicons-halflings.png +0 -0
- data/app/assets/images/comfypress/checkerboard.gif +0 -0
- data/app/assets/images/comfypress/icon_draft.gif +0 -0
- data/app/assets/images/comfypress/icon_file.gif +0 -0
- data/app/assets/images/comfypress/icon_layout.gif +0 -0
- data/app/assets/images/comfypress/icon_move.gif +0 -0
- data/app/assets/images/comfypress/icon_page.gif +0 -0
- data/app/assets/images/comfypress/icon_site.gif +0 -0
- data/app/assets/images/comfypress/icon_snippet.gif +0 -0
- data/app/assets/images/comfypress/nav_arrow.png +0 -0
- data/app/assets/javascripts/comfypress/admin/application.js +1 -0
- data/app/assets/javascripts/comfypress/application.js.coffee +175 -0
- data/app/assets/javascripts/comfypress/lib/bootstrap-datetimepicker.js +21 -0
- data/app/assets/javascripts/comfypress/lib/bootstrap-wysihtml5.js +492 -0
- data/app/assets/javascripts/comfypress/lib/bootstrap.js +6 -0
- data/app/assets/javascripts/comfypress/lib/codemirror.js +10 -0
- data/app/assets/javascripts/comfypress/lib/wysihtml5.js +261 -0
- data/app/assets/stylesheets/comfypress/admin/application.css +1 -0
- data/app/assets/stylesheets/comfypress/application.css.sass +8 -0
- data/app/assets/stylesheets/comfypress/base.css.sass +333 -0
- data/app/assets/stylesheets/comfypress/bootstrap_overrides.css.sass +45 -0
- data/app/assets/stylesheets/comfypress/codemirror_overrides.css.sass +27 -0
- data/app/assets/stylesheets/comfypress/lib/bootstrap-datetimepicker.css +9 -0
- data/app/assets/stylesheets/comfypress/lib/bootstrap-wysihtml5.css +102 -0
- data/app/assets/stylesheets/comfypress/lib/bootstrap.css +9 -0
- data/app/assets/stylesheets/comfypress/lib/codemirror.css +240 -0
- data/app/assets/stylesheets/comfypress/wysihtml5_overrides.css.sass +5 -0
- data/app/controllers/application_controller.rb +5 -0
- data/app/controllers/cms_admin/base_controller.rb +51 -0
- data/app/controllers/cms_admin/categories_controller.rb +35 -0
- data/app/controllers/cms_admin/files_controller.rb +108 -0
- data/app/controllers/cms_admin/layouts_controller.rb +67 -0
- data/app/controllers/cms_admin/menu_items_controller.rb +65 -0
- data/app/controllers/cms_admin/menus_controller.rb +60 -0
- data/app/controllers/cms_admin/pages_controller.rb +112 -0
- data/app/controllers/cms_admin/revisions_controller.rb +57 -0
- data/app/controllers/cms_admin/sites_controller.rb +64 -0
- data/app/controllers/cms_admin/snippets_controller.rb +64 -0
- data/app/controllers/cms_content_controller.rb +79 -0
- data/app/helpers/application_helper.rb +16 -0
- data/app/models/cms/block.rb +48 -0
- data/app/models/cms/categorization.rb +21 -0
- data/app/models/cms/category.rb +30 -0
- data/app/models/cms/file.rb +75 -0
- data/app/models/cms/layout.rb +99 -0
- data/app/models/cms/menu.rb +26 -0
- data/app/models/cms/menu_item.rb +14 -0
- data/app/models/cms/page.rb +202 -0
- data/app/models/cms/revision.rb +17 -0
- data/app/models/cms/site.rb +113 -0
- data/app/models/cms/snippet.rb +58 -0
- data/app/models/cms.rb +5 -0
- data/app/views/cms_admin/categories/_categories.html.haml +3 -0
- data/app/views/cms_admin/categories/_edit.html.haml +6 -0
- data/app/views/cms_admin/categories/_form.html.haml +8 -0
- data/app/views/cms_admin/categories/_index.html.haml +24 -0
- data/app/views/cms_admin/categories/_show.html.haml +13 -0
- data/app/views/cms_admin/categories/create.js.erb +7 -0
- data/app/views/cms_admin/categories/destroy.js.erb +3 -0
- data/app/views/cms_admin/categories/edit.js.erb +3 -0
- data/app/views/cms_admin/categories/update.js.erb +6 -0
- data/app/views/cms_admin/files/_file.html.haml +13 -0
- data/app/views/cms_admin/files/_form.html.haml +14 -0
- data/app/views/cms_admin/files/_index.html.haml +14 -0
- data/app/views/cms_admin/files/_page_form.html.haml +9 -0
- data/app/views/cms_admin/files/destroy.js.coffee +2 -0
- data/app/views/cms_admin/files/edit.html.haml +5 -0
- data/app/views/cms_admin/files/index.html.haml +28 -0
- data/app/views/cms_admin/files/new.html.haml +5 -0
- data/app/views/cms_admin/layouts/_form.html.haml +17 -0
- data/app/views/cms_admin/layouts/_index_branch.html.haml +23 -0
- data/app/views/cms_admin/layouts/edit.html.haml +9 -0
- data/app/views/cms_admin/layouts/index.html.haml +9 -0
- data/app/views/cms_admin/layouts/new.html.haml +5 -0
- data/app/views/cms_admin/menu_items/_form.html.haml +22 -0
- data/app/views/cms_admin/menu_items/edit.html.haml +8 -0
- data/app/views/cms_admin/menu_items/index.html.haml +24 -0
- data/app/views/cms_admin/menu_items/new.html.haml +5 -0
- data/app/views/cms_admin/menus/_form.html.haml +8 -0
- data/app/views/cms_admin/menus/edit.html.haml +8 -0
- data/app/views/cms_admin/menus/index.html.haml +24 -0
- data/app/views/cms_admin/menus/new.html.haml +5 -0
- data/app/views/cms_admin/pages/_form.html.haml +38 -0
- data/app/views/cms_admin/pages/_form_blocks.html.haml +28 -0
- data/app/views/cms_admin/pages/_index_branch.html.haml +35 -0
- data/app/views/cms_admin/pages/edit.html.haml +9 -0
- data/app/views/cms_admin/pages/form_blocks.js.erb +2 -0
- data/app/views/cms_admin/pages/index.html.haml +11 -0
- data/app/views/cms_admin/pages/new.html.haml +5 -0
- data/app/views/cms_admin/pages/toggle_branch.js.erb +11 -0
- data/app/views/cms_admin/revisions/show.html.haml +28 -0
- data/app/views/cms_admin/sites/_form.html.haml +14 -0
- data/app/views/cms_admin/sites/_mirrors.html.haml +17 -0
- data/app/views/cms_admin/sites/edit.html.haml +5 -0
- data/app/views/cms_admin/sites/index.html.haml +24 -0
- data/app/views/cms_admin/sites/new.html.haml +5 -0
- data/app/views/cms_admin/snippets/_form.html.haml +11 -0
- data/app/views/cms_admin/snippets/edit.html.haml +9 -0
- data/app/views/cms_admin/snippets/index.html.haml +28 -0
- data/app/views/cms_admin/snippets/new.html.haml +5 -0
- data/app/views/cms_content/_menu.html.haml +5 -0
- data/app/views/cms_content/render_sitemap.xml.builder +15 -0
- data/app/views/layouts/cms_admin/_body.html.haml +16 -0
- data/app/views/layouts/cms_admin/_center.html.haml +7 -0
- data/app/views/layouts/cms_admin/_footer.html.haml +3 -0
- data/app/views/layouts/cms_admin/_footer_js.html.haml +7 -0
- data/app/views/layouts/cms_admin/_head.html.haml +12 -0
- data/app/views/layouts/cms_admin/_left.html.haml +11 -0
- data/app/views/layouts/cms_admin/_right.html.haml +1 -0
- data/app/views/layouts/cms_admin.html.haml +4 -0
- data/comfypress.gemspec +28 -0
- data/config/application.rb +69 -0
- data/config/boot.rb +6 -0
- data/config/database.sqlite.yml +47 -0
- data/config/database.yml +47 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +39 -0
- data/config/environments/production.rb +67 -0
- data/config/environments/test.rb +39 -0
- data/config/initializers/comfypress.rb +100 -0
- data/config/initializers/paperclip.rb +3 -0
- data/config/locales/de.yml +236 -0
- data/config/locales/en.yml +285 -0
- data/config/locales/es.yml +236 -0
- data/config/locales/fr.yml +236 -0
- data/config/locales/ja.yml +237 -0
- data/config/locales/pl.yml +236 -0
- data/config/locales/pt-BR.yml +236 -0
- data/config/locales/ru.yml +236 -0
- data/config/locales/sv.yml +236 -0
- data/config/locales/zh-CN.yml +236 -0
- data/config/routes.rb +10 -0
- data/config.ru +4 -0
- data/db/cms_fixtures/sample-site/layouts/default/_default.yml +1 -0
- data/db/cms_fixtures/sample-site/layouts/default/content.html +5 -0
- data/db/cms_fixtures/sample-site/layouts/default/css.css +1 -0
- data/db/cms_fixtures/sample-site/layouts/default/js.js +1 -0
- data/db/cms_fixtures/sample-site/layouts/default/nested/_nested.yml +2 -0
- data/db/cms_fixtures/sample-site/layouts/default/nested/content.html +2 -0
- data/db/cms_fixtures/sample-site/layouts/default/nested/css.css +1 -0
- data/db/cms_fixtures/sample-site/layouts/default/nested/js.js +1 -0
- data/db/cms_fixtures/sample-site/pages/index/_index.yml +2 -0
- data/db/cms_fixtures/sample-site/pages/index/child/_child.yml +3 -0
- data/db/cms_fixtures/sample-site/pages/index/child/left.html +1 -0
- data/db/cms_fixtures/sample-site/pages/index/child/right.html +1 -0
- data/db/cms_fixtures/sample-site/pages/index/content.html +2 -0
- data/db/cms_fixtures/sample-site/snippets/default/_default.yml +1 -0
- data/db/cms_fixtures/sample-site/snippets/default/content.html +1 -0
- data/db/migrate/01_create_cms.rb +163 -0
- data/db/seeds.rb +9 -0
- data/db/upgrade_migrations/02_upgrade_to_1_1_0.rb +19 -0
- data/db/upgrade_migrations/03_upgrade_to_1_2_0.rb +15 -0
- data/db/upgrade_migrations/04_upgrade_to_1_3_0.rb +23 -0
- data/db/upgrade_migrations/05_upgrade_to_1_4_0.rb +33 -0
- data/db/upgrade_migrations/06_upgrade_to_1_5_0.rb +21 -0
- data/db/upgrade_migrations/07_upgrade_to_1_6_0.rb +25 -0
- data/doc/preview.png +0 -0
- data/doc/sofa.png +0 -0
- data/lib/comfypress/authentication/dummy_auth.rb +8 -0
- data/lib/comfypress/authentication/http_auth.rb +18 -0
- data/lib/comfypress/configuration.rb +99 -0
- data/lib/comfypress/engine.rb +18 -0
- data/lib/comfypress/error.rb +24 -0
- data/lib/comfypress/extensions/acts_as_tree.rb +102 -0
- data/lib/comfypress/extensions/has_revisions.rb +64 -0
- data/lib/comfypress/extensions/is_categorized.rb +49 -0
- data/lib/comfypress/extensions/is_mirrored.rb +85 -0
- data/lib/comfypress/extensions/rails.rb +24 -0
- data/lib/comfypress/fixtures.rb +289 -0
- data/lib/comfypress/form_builder.rb +97 -0
- data/lib/comfypress/render_methods.rb +85 -0
- data/lib/comfypress/routing.rb +62 -0
- data/lib/comfypress/sitemap.rb +27 -0
- data/lib/comfypress/tag.rb +154 -0
- data/lib/comfypress/tags/asset.rb +25 -0
- data/lib/comfypress/tags/collection.rb +64 -0
- data/lib/comfypress/tags/field_datetime.rb +17 -0
- data/lib/comfypress/tags/field_integer.rb +17 -0
- data/lib/comfypress/tags/field_rich_text.rb +17 -0
- data/lib/comfypress/tags/field_string.rb +17 -0
- data/lib/comfypress/tags/field_text.rb +17 -0
- data/lib/comfypress/tags/file.rb +29 -0
- data/lib/comfypress/tags/helper.rb +24 -0
- data/lib/comfypress/tags/menu.rb +27 -0
- data/lib/comfypress/tags/page_datetime.rb +13 -0
- data/lib/comfypress/tags/page_file.rb +51 -0
- data/lib/comfypress/tags/page_files.rb +52 -0
- data/lib/comfypress/tags/page_integer.rb +13 -0
- data/lib/comfypress/tags/page_markdown.rb +22 -0
- data/lib/comfypress/tags/page_rich_text.rb +13 -0
- data/lib/comfypress/tags/page_string.rb +13 -0
- data/lib/comfypress/tags/page_text.rb +13 -0
- data/lib/comfypress/tags/partial.rb +23 -0
- data/lib/comfypress/tags/snippet.rb +19 -0
- data/lib/comfypress/version.rb +3 -0
- data/lib/comfypress/view_hooks.rb +32 -0
- data/lib/comfypress/view_methods.rb +52 -0
- data/lib/comfypress.rb +66 -0
- data/lib/generators/comfy/cms/README +10 -0
- data/lib/generators/comfy/cms/cms_generator.rb +57 -0
- data/lib/tasks/comfypress.rake +45 -0
- data/script/rails +6 -0
- data/test/fixtures/cms/blocks.yml +12 -0
- data/test/fixtures/cms/categories.yml +4 -0
- data/test/fixtures/cms/categorizations.yml +3 -0
- data/test/fixtures/cms/files.yml +9 -0
- data/test/fixtures/cms/layouts.yml +40 -0
- data/test/fixtures/cms/menu_items.yml +15 -0
- data/test/fixtures/cms/menus.yml +9 -0
- data/test/fixtures/cms/pages.yml +39 -0
- data/test/fixtures/cms/revisions.yml +21 -0
- data/test/fixtures/cms/sites.yml +6 -0
- data/test/fixtures/cms/snippets.yml +6 -0
- data/test/fixtures/files/data.zip +0 -0
- data/test/fixtures/files/document.pdf +0 -0
- data/test/fixtures/files/image.gif +0 -0
- data/test/fixtures/files/image.jpg +0 -0
- data/test/fixtures/views/_nav_hook.html.erb +1 -0
- data/test/fixtures/views/_nav_hook_2.html.erb +1 -0
- data/test/fixtures/views/render_test/_test.html.erb +1 -0
- data/test/fixtures/views/render_test/new.html.erb +1 -0
- data/test/fixtures/views/render_test/render_layout.html.erb +1 -0
- data/test/functional/cms_admin/base_controller_test.rb +18 -0
- data/test/functional/cms_admin/categories_controller_test.rb +70 -0
- data/test/functional/cms_admin/files_controller_test.rb +216 -0
- data/test/functional/cms_admin/layouts_controller_test.rb +123 -0
- data/test/functional/cms_admin/pages_controller_test.rb +450 -0
- data/test/functional/cms_admin/revisions_controller_test.rb +138 -0
- data/test/functional/cms_admin/sites_controller_test.rb +105 -0
- data/test/functional/cms_admin/snippets_controller_test.rb +140 -0
- data/test/functional/cms_content_controller_test.rb +205 -0
- data/test/gemfiles/Gemfile.rails.3.1 +16 -0
- data/test/gemfiles/Gemfile.rails.3.2 +16 -0
- data/test/gemfiles/Gemfile.rails.4.0 +16 -0
- data/test/integration/authentication_test.rb +48 -0
- data/test/integration/fixtures_test.rb +61 -0
- data/test/integration/mirrors_test.rb +72 -0
- data/test/integration/render_cms_test.rb +233 -0
- data/test/integration/sites_test.rb +120 -0
- data/test/integration/view_hooks_test.rb +43 -0
- data/test/test_helper.rb +124 -0
- data/test/unit/cms/menu_item_test.rb +7 -0
- data/test/unit/cms/menu_test.rb +7 -0
- data/test/unit/configuration_test.rb +42 -0
- data/test/unit/fixtures_test.rb +357 -0
- data/test/unit/mirrors_test.rb +242 -0
- data/test/unit/models/block_test.rb +199 -0
- data/test/unit/models/categorization_test.rb +76 -0
- data/test/unit/models/category_test.rb +39 -0
- data/test/unit/models/file_test.rb +89 -0
- data/test/unit/models/layout_test.rb +125 -0
- data/test/unit/models/page_test.rb +255 -0
- data/test/unit/models/site_test.rb +152 -0
- data/test/unit/models/snippet_test.rb +49 -0
- data/test/unit/revisions_test.rb +185 -0
- data/test/unit/sitemap_test.rb +20 -0
- data/test/unit/tag_test.rb +308 -0
- data/test/unit/tags/asset_test.rb +56 -0
- data/test/unit/tags/collection_test.rb +116 -0
- data/test/unit/tags/field_datetime_test.rb +50 -0
- data/test/unit/tags/field_integer_test.rb +49 -0
- data/test/unit/tags/field_rich_text_test.rb +49 -0
- data/test/unit/tags/field_string_test.rb +52 -0
- data/test/unit/tags/field_text_test.rb +48 -0
- data/test/unit/tags/file_test.rb +67 -0
- data/test/unit/tags/helper_test.rb +86 -0
- data/test/unit/tags/page_datetime_test.rb +50 -0
- data/test/unit/tags/page_file_test.rb +119 -0
- data/test/unit/tags/page_files_test.rb +113 -0
- data/test/unit/tags/page_integer_test.rb +49 -0
- data/test/unit/tags/page_markdown_test.rb +48 -0
- data/test/unit/tags/page_rich_text_test.rb +49 -0
- data/test/unit/tags/page_string_test.rb +49 -0
- data/test/unit/tags/page_text_test.rb +52 -0
- data/test/unit/tags/partial_test.rb +76 -0
- data/test/unit/tags/snippet_test.rb +45 -0
- data/test/unit/view_methods_test.rb +80 -0
- metadata +457 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
class Cms::Snippet < ActiveRecord::Base
|
2
|
+
|
3
|
+
ComfyPress.establish_connection(self)
|
4
|
+
|
5
|
+
self.table_name = 'cms_snippets'
|
6
|
+
|
7
|
+
cms_is_categorized
|
8
|
+
cms_is_mirrored
|
9
|
+
cms_has_revisions_for :content
|
10
|
+
|
11
|
+
attr_accessible :identifier,
|
12
|
+
:label,
|
13
|
+
:content,
|
14
|
+
:category_ids
|
15
|
+
|
16
|
+
# -- Relationships --------------------------------------------------------
|
17
|
+
belongs_to :site
|
18
|
+
|
19
|
+
# -- Callbacks ------------------------------------------------------------
|
20
|
+
before_validation :assign_label
|
21
|
+
before_create :assign_position
|
22
|
+
after_save :clear_cached_page_content
|
23
|
+
after_destroy :clear_cached_page_content
|
24
|
+
|
25
|
+
# -- Validations ----------------------------------------------------------
|
26
|
+
validates :site_id,
|
27
|
+
:presence => true
|
28
|
+
validates :label,
|
29
|
+
:presence => true
|
30
|
+
validates :identifier,
|
31
|
+
:presence => true,
|
32
|
+
:uniqueness => { :scope => :site_id },
|
33
|
+
:format => { :with => /^\w[a-z0-9_-]*$/i }
|
34
|
+
|
35
|
+
# -- Scopes ---------------------------------------------------------------
|
36
|
+
default_scope order('cms_snippets.position')
|
37
|
+
|
38
|
+
protected
|
39
|
+
|
40
|
+
def assign_label
|
41
|
+
self.label = self.label.blank?? self.identifier.try(:titleize) : self.label
|
42
|
+
end
|
43
|
+
|
44
|
+
# Note: This might be slow. We have no idea where the snippet is used, so
|
45
|
+
# gotta reload every single page. Kinda sucks, but might be ok unless there
|
46
|
+
# are hundreds of pages.
|
47
|
+
def clear_cached_page_content
|
48
|
+
site.pages.all.each do |p|
|
49
|
+
Cms::Page.where(:id => p.id).update_all(:content => p.content(true))
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def assign_position
|
54
|
+
max = self.site.snippets.maximum(:position)
|
55
|
+
self.position = max ? max + 1 : 0
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
data/app/models/cms.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
- object = form.object
|
2
|
+
- if (categories = @site.categories.of_type(object.class.to_s)).present?
|
3
|
+
= form.element t('.label'), nil, :class => 'categories' do
|
4
|
+
- categories.each do |category|
|
5
|
+
= hidden_field_tag "#{object.class.to_s.demodulize.underscore.downcase}[category_ids][#{category.id}]", 0, :id => nil
|
6
|
+
%label.checkbox.inline
|
7
|
+
= check_box_tag "#{object.class.to_s.demodulize.underscore.downcase}[category_ids][#{category.id}]", 1, object.categories.member?(category), :id => nil
|
8
|
+
= category.label
|
@@ -0,0 +1,24 @@
|
|
1
|
+
- type ||= index
|
2
|
+
|
3
|
+
.categories-widget
|
4
|
+
.categories-widget-label= t('.label')
|
5
|
+
|
6
|
+
.action-links
|
7
|
+
.edit= link_to t('.edit'), '#', :class => 'btn btn-mini'
|
8
|
+
.done= link_to t('.done'), '#', :class => 'btn btn-mini'
|
9
|
+
|
10
|
+
.categories.read
|
11
|
+
.category.all{:class => params[:category].blank?? 'active' : nil}
|
12
|
+
= link_to t('.all'), :category => nil
|
13
|
+
- @site.categories.of_type(type).each do |category|
|
14
|
+
= render :partial => 'cms_admin/categories/show', :object => category, :locals => { :read => true }
|
15
|
+
|
16
|
+
.categories.editable
|
17
|
+
- @site.categories.of_type(type).each do |category|
|
18
|
+
= render :partial => 'cms_admin/categories/show', :object => category
|
19
|
+
|
20
|
+
= form_for :category, :url => cms_admin_site_categories_path(@site), :remote => true, :html => {:id => 'new_category'} do |form|
|
21
|
+
= form.hidden_field :categorized_type, :value => type
|
22
|
+
.input-append
|
23
|
+
= form.text_field :label, :placeholder => 'Add Category'
|
24
|
+
%button.btn.btn-mini= t('.add')
|
@@ -0,0 +1,13 @@
|
|
1
|
+
- category ||= show
|
2
|
+
- read ||= false
|
3
|
+
- categories = [params[:category]].flatten.compact
|
4
|
+
- active = categories.flatten.member?(category.label)
|
5
|
+
|
6
|
+
.category{:class => (read && active ? 'active' : nil), :id => dom_id(category)}
|
7
|
+
- if read
|
8
|
+
- categories = active ? categories.reject{|c| c == category.label} : categories << category.label
|
9
|
+
= link_to category.label, "?#{{:category => categories}.to_param}"
|
10
|
+
- else
|
11
|
+
= link_to category.label, edit_cms_admin_site_category_path(@site, category), :remote => true
|
12
|
+
= link_to cms_admin_site_category_path(@site, category), :method => :delete, :remote => true, :data => {:confirm => t('.are_you_sure')}, :class => 'delete' do
|
13
|
+
%i.icon-remove-circle
|
@@ -0,0 +1,7 @@
|
|
1
|
+
$('.categories-widget .categories.editable form#new_category').before(
|
2
|
+
'<%= escape_javascript(render :partial => "show", :object => @category ) %>'
|
3
|
+
);
|
4
|
+
$('.categories-widget .categories.read').append(
|
5
|
+
'<%= escape_javascript(render :partial => "show", :object => @category, :locals => { :read => true }) %>'
|
6
|
+
);
|
7
|
+
$('.categories-widget .categories.editable form#new_category input#category_label').val('');
|
@@ -0,0 +1,6 @@
|
|
1
|
+
$('.categories.editable form#<%= dom_id(@category) %>').replaceWith(
|
2
|
+
'<%= escape_javascript(render :partial => "show", :object => @category ) %>'
|
3
|
+
);
|
4
|
+
$('.categories.read .category#<%= dom_id(@category) %>').replaceWith(
|
5
|
+
'<%= escape_javascript(render :partial => "show", :object => @category, :locals => { :read => true } ) %>'
|
6
|
+
);
|
@@ -0,0 +1,13 @@
|
|
1
|
+
.file{:class => "#{dom_id(file)} #{file.is_image?? 'image' : nil}"}
|
2
|
+
.file-name
|
3
|
+
= link_to cms_admin_site_file_path(@site, file), :method => :delete, :remote => true, :data => {:confirm => t('.are_you_sure')}, :class => 'delete' do
|
4
|
+
%i.icon-remove-circle
|
5
|
+
= link_to file.file_file_name, file.file.url, :target => '_blank', :class => 'filename'
|
6
|
+
|
7
|
+
.file-info{:data => {:url => file.file.url}}
|
8
|
+
.thumb
|
9
|
+
= image_tag file.file.url(:cms_thumb) if file.is_image?
|
10
|
+
.details
|
11
|
+
%input{:type => 'text', :value => file.file.url}
|
12
|
+
.file-type= file.file_content_type
|
13
|
+
.file-size= number_to_human_size(file.file_file_size, :locale => :en)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
= form.text_field :label
|
2
|
+
= form.file_field :file, :multiple => @file.new_record?
|
3
|
+
|
4
|
+
- unless @file.new_record?
|
5
|
+
= form.element t('.current_file') do
|
6
|
+
= image_tag @file.file.url if @file.is_image?
|
7
|
+
= link_to @file.file.url, @file.file.url, :target => '_blank'
|
8
|
+
|
9
|
+
= form.text_area :description
|
10
|
+
|
11
|
+
= render :partial => 'cms_admin/categories/form', :object => form
|
12
|
+
|
13
|
+
.form-actions
|
14
|
+
= form.submit t(@file.new_record?? '.create' : '.update'), :class => 'btn btn-primary'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
- type ||= nil
|
2
|
+
- files_scope = (type == 'image') ? @site.files.images : @site.files
|
3
|
+
|
4
|
+
.box.file-uploader
|
5
|
+
= form_for :file, :url => cms_admin_site_files_path(@site, :ajax => true), :html => {:multipart => true, :target => 'file-upload-frame'} do |form|
|
6
|
+
%span.btn.btn-file
|
7
|
+
= t('.button')
|
8
|
+
= form.file_field :file, :multiple => true, :id => nil
|
9
|
+
|
10
|
+
.uploaded-files
|
11
|
+
- files_scope.order(:label).each do |file|
|
12
|
+
= render :partial => 'cms_admin/files/file', :object => file
|
13
|
+
|
14
|
+
%iframe#file-upload-frame{:name => 'file-upload-frame', :src => ''}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
- block ||= page_form
|
2
|
+
|
3
|
+
- if (files = block.files).present?
|
4
|
+
.files
|
5
|
+
- files.each do |file|
|
6
|
+
.file{:class => dom_id(file)}
|
7
|
+
= link_to file.file_file_name, file.file.url, :target => '_blank'
|
8
|
+
= link_to cms_admin_site_file_path(@site, file), :method => :delete, :remote => true, :confirm => t('.are_you_sure'), :class => 'delete' do
|
9
|
+
%i.icon-remove-circle
|
@@ -0,0 +1,28 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to t('.new_link'), new_cms_admin_site_file_path(@site), :class => 'btn pull-right'
|
3
|
+
%h2= t('.title')
|
4
|
+
|
5
|
+
= render :partial => 'cms_admin/categories/index', :object => 'Cms::File'
|
6
|
+
|
7
|
+
%table.table.table-hover.table-bordered
|
8
|
+
%tbody.sortable
|
9
|
+
- @files.each do |file|
|
10
|
+
%tr{:id => dom_id(file)}
|
11
|
+
%td
|
12
|
+
- if file.is_image?
|
13
|
+
- icon_style = "background: url('#{file.file.url(:cms_thumb)}') no-repeat center"
|
14
|
+
.icon{:style => icon_style}
|
15
|
+
- if !params[:category].present? && @site.files.count > 1
|
16
|
+
.dragger
|
17
|
+
%span ⇅
|
18
|
+
%td.main
|
19
|
+
.item-title
|
20
|
+
= link_to file.label, edit_cms_admin_site_file_path(@site, file)
|
21
|
+
= render :partial => '/cms_admin/categories/categories', :object => file
|
22
|
+
.item-meta
|
23
|
+
= link_to file.file_file_name, file.file.url, :target => '_blank'
|
24
|
+
|
25
|
+
%td
|
26
|
+
.btn-group
|
27
|
+
= link_to t('.edit'), edit_cms_admin_site_file_path(@site, file), :class => 'btn btn-small'
|
28
|
+
= link_to t('.delete'), cms_admin_site_file_path(@site, file), :method => :delete, :data => {:confirm => t('.are_you_sure')}, :class => 'btn btn-small btn-danger'
|
@@ -0,0 +1,17 @@
|
|
1
|
+
- content_for :right_column do
|
2
|
+
= render :partial => 'cms_admin/files/index'
|
3
|
+
|
4
|
+
= form.text_field :label, :data => {:slugify => @layout.new_record?}
|
5
|
+
= form.text_field :identifier, :data => {:slug => true}
|
6
|
+
- if (options = Cms::Layout.options_for_select(@site, @layout)).present?
|
7
|
+
= form.select :parent_id, [["---- #{t('.select_parent_layout')} ----", nil]] + options
|
8
|
+
|
9
|
+
- if (options = Cms::Layout.app_layouts_for_select).present?
|
10
|
+
= form.select :app_layout, [["---- #{t('.select_app_layout')} ----", nil]] + options
|
11
|
+
|
12
|
+
= form.text_area :content, :data => {:cm_mode => 'text/html'}
|
13
|
+
= form.text_area :css, :data => {:cm_mode => 'css'}
|
14
|
+
= form.text_area :js, :data => {:cm_mode => 'javascript'}
|
15
|
+
|
16
|
+
.form-actions
|
17
|
+
= form.submit t(@layout.new_record?? '.create' : '.update'), :class => 'btn btn-primary'
|
@@ -0,0 +1,23 @@
|
|
1
|
+
- layout ||= index_branch
|
2
|
+
- has_siblings = layout.siblings.select{|l| l.site_id == @site.id}.size > 0
|
3
|
+
|
4
|
+
%li{:id => dom_id(layout)}
|
5
|
+
.item
|
6
|
+
.icon
|
7
|
+
- if !params[:category].present? && has_siblings
|
8
|
+
.dragger
|
9
|
+
%span ⇅
|
10
|
+
|
11
|
+
.btn-group
|
12
|
+
= link_to t('.add_child_layout'), new_cms_admin_site_layout_path(@site, :parent_id => layout.id), :class => 'btn btn-small'
|
13
|
+
= link_to t('.edit'), edit_cms_admin_site_layout_path(@site, layout), :class => 'btn btn-small'
|
14
|
+
= link_to t('.delete'), cms_admin_site_layout_path(@site, layout), :method => :delete, :data => {:confirm => t('.are_you_sure')}, :class => 'btn btn-small btn-danger'
|
15
|
+
|
16
|
+
.item-content
|
17
|
+
.item-title
|
18
|
+
= link_to layout.label, edit_cms_admin_site_layout_path(@site, layout)
|
19
|
+
.item-meta
|
20
|
+
= layout.identifier
|
21
|
+
|
22
|
+
- if layout.children.present?
|
23
|
+
%ul= render :partial => 'index_branch', :collection => layout.children
|
@@ -0,0 +1,9 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to pluralize(@layout.revisions.count, t('.revision')), cms_admin_site_layout_revisions_path(@site, @layout), :class => 'btn pull-right'
|
3
|
+
%h2= t('.title')
|
4
|
+
|
5
|
+
- content_for :right_column do
|
6
|
+
= render :partial => 'cms_admin/sites/mirrors', :object => @layout
|
7
|
+
|
8
|
+
= comfy_form_for @layout, :as => :layout, :url => {:action => :update} do |form|
|
9
|
+
= render form
|
@@ -0,0 +1,9 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to t('.new_link'), new_cms_admin_site_layout_path(@site), :class => 'btn pull-right'
|
3
|
+
%h2= t('.title')
|
4
|
+
|
5
|
+
- content_for :right_column do
|
6
|
+
= render :partial => 'cms_admin/sites/mirrors'
|
7
|
+
|
8
|
+
%ul.list.sortable
|
9
|
+
= render :partial => 'index_branch', :collection => @layouts
|
@@ -0,0 +1,22 @@
|
|
1
|
+
- content_for :right_column do
|
2
|
+
= render :partial => 'cms_admin/files/index'
|
3
|
+
|
4
|
+
= form.text_field :label
|
5
|
+
.control-group
|
6
|
+
= form.label :menu_item_type, class: 'control-label'
|
7
|
+
.controls.menu-type-wrapper
|
8
|
+
%div
|
9
|
+
= label_tag 'menu_item_menu_item_type_page', class: 'radio inline' do
|
10
|
+
= radio_button_tag 'menu_item[menu_item_type]', 'page', @menu_item.menu_item_type == 'page', {data: {show: '.menu-type-page', hide: '.menu-type-link'}}
|
11
|
+
Page
|
12
|
+
= label_tag 'menu_item_menu_item_type_link', class: 'radio inline' do
|
13
|
+
= radio_button_tag 'menu_item[menu_item_type]', 'link', @menu_item.menu_item_type == 'link', {data: {show: '.menu-type-link', hide: '.menu-type-page'}}
|
14
|
+
link
|
15
|
+
.hidden.menu-type-link
|
16
|
+
= form.text_field :link
|
17
|
+
- if (options = Cms::Page.options_for_select(@site)).present?
|
18
|
+
.hidden.menu-type-page
|
19
|
+
= form.select :page_id, options, {:prompt => "Select page"}
|
20
|
+
|
21
|
+
.form-actions
|
22
|
+
= form.submit t(@menu_item.new_record?? '.create' : '.update'), :class => 'btn btn-primary'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to t('.new_link'), new_cms_admin_site_menu_menu_item_path(@site, @menu), :class => 'btn pull-right'
|
3
|
+
%h2= t('.title')
|
4
|
+
|
5
|
+
- content_for :right_column do
|
6
|
+
= render :partial => 'cms_admin/sites/mirrors'
|
7
|
+
|
8
|
+
%table.table.table-hover.table-bordered
|
9
|
+
%tbody.sortable
|
10
|
+
- @menu_items.try(:each) do |menu_item|
|
11
|
+
%tr{:id => dom_id(menu_item)}
|
12
|
+
%td
|
13
|
+
.icon
|
14
|
+
- if !params[:category].present? && @menu.menu_items.count > 1
|
15
|
+
.dragger
|
16
|
+
%span ⇅
|
17
|
+
%td.main
|
18
|
+
.item-title
|
19
|
+
= link_to menu_item.label, edit_cms_admin_site_menu_menu_item_path(@site, @menu, menu_item)
|
20
|
+
%td
|
21
|
+
.btn-group
|
22
|
+
= link_to t('.edit'), edit_cms_admin_site_menu_menu_item_path(@site, @menu, menu_item), :class => 'btn btn-small'
|
23
|
+
|
24
|
+
= link_to t('.delete'), cms_admin_site_menu_menu_item_path(@site, @menu, menu_item), :method => :delete, :data => {:confirm => t('.are_you_sure')}, :class => 'btn btn-small btn-danger'
|
@@ -0,0 +1,8 @@
|
|
1
|
+
- content_for :right_column do
|
2
|
+
= render :partial => 'cms_admin/files/index'
|
3
|
+
|
4
|
+
= form.text_field :label, :data => {:slugify => @menu.new_record?}
|
5
|
+
= form.text_field :identifier, :data => {:slug => true}
|
6
|
+
|
7
|
+
.form-actions
|
8
|
+
= form.submit t(@menu.new_record?? '.create' : '.update'), :class => 'btn btn-primary'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to t('.new_link'), new_cms_admin_site_menu_path(@site), :class => 'btn pull-right'
|
3
|
+
%h2= t('.title')
|
4
|
+
|
5
|
+
- content_for :right_column do
|
6
|
+
= render :partial => 'cms_admin/sites/mirrors'
|
7
|
+
|
8
|
+
%table.table.table-hover.table-bordered
|
9
|
+
%tbody.sortable
|
10
|
+
- @menus.each do |menu|
|
11
|
+
%tr{:id => dom_id(menu)}
|
12
|
+
%td
|
13
|
+
.icon
|
14
|
+
- if !params[:category].present? && @site.menus.count > 1
|
15
|
+
.dragger
|
16
|
+
%span ⇅
|
17
|
+
%td.main
|
18
|
+
.item-title
|
19
|
+
= link_to menu.label, edit_cms_admin_site_menu_path(@site, menu)
|
20
|
+
%td
|
21
|
+
.btn-group
|
22
|
+
= link_to t('.edit'), edit_cms_admin_site_menu_path(@site, menu), :class => 'btn btn-small'
|
23
|
+
= link_to t('.menu_items'), cms_admin_site_menu_menu_items_path(@site, menu), :class => 'btn btn-small'
|
24
|
+
= link_to t('.delete'), cms_admin_site_menu_path(@site, menu), :method => :delete, :data => {:confirm => t('.are_you_sure')}, :class => 'btn btn-small btn-danger'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
- content_for :right_column do
|
2
|
+
#form-save.box
|
3
|
+
%label.checkbox.inline
|
4
|
+
%input{:type => 'checkbox'}
|
5
|
+
= Cms::Page.human_attribute_name(:is_published)
|
6
|
+
%button.btn.btn-small.btn-primary.pull-right
|
7
|
+
= render :partial => 'cms_admin/files/index'
|
8
|
+
|
9
|
+
= form.text_field :label, :data => {:slugify => @page.new_record?}
|
10
|
+
|
11
|
+
- unless @site.pages.count == 0 || @site.pages.root == @page
|
12
|
+
= form.text_field :slug, :data => {:slug => true}
|
13
|
+
- unless @page.new_record?
|
14
|
+
= form.text_field :full_path, :id => 'full-path', :disabled => true
|
15
|
+
|
16
|
+
- if (options = Cms::Layout.options_for_select(@site)).present?
|
17
|
+
= form.select :layout_id, options, {}, 'data-url' => form_blocks_cms_admin_site_page_path(@site, @page.id.to_i)
|
18
|
+
|
19
|
+
- if (options = Cms::Page.options_for_select(@site, @page)).present?
|
20
|
+
= form.select :parent_id, options
|
21
|
+
|
22
|
+
- if (options = Cms::Page.options_for_select(@site, @page, nil, 0, false)).present?
|
23
|
+
= form.select :target_page_id, [["---- #{t('.select_target_page')} ----", nil]] + options
|
24
|
+
|
25
|
+
- if (options = Cms::Menu.options_for_select(@site)).present?
|
26
|
+
= form.select :menu_id, options, {:prompt => "Select menu"}
|
27
|
+
|
28
|
+
= cms_hook :page_form, :object => form
|
29
|
+
|
30
|
+
= render :partial => 'cms_admin/categories/form', :object => form
|
31
|
+
|
32
|
+
= render :partial => 'form_blocks'
|
33
|
+
|
34
|
+
= form.check_box :is_published, :label => t('.is_published')
|
35
|
+
|
36
|
+
.form-actions
|
37
|
+
= form.submit t('.preview'), :name => 'preview', :id => nil, :class => 'btn'
|
38
|
+
= form.submit t(@page.new_record?? '.create' : '.update'), :class => 'btn btn-primary'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
- namespace = { }
|
2
|
+
- tags = @page.tags(true).select{ |t| t.is_cms_block? }.uniq_by{|t| t.identifier}
|
3
|
+
- tags.each do |tag|
|
4
|
+
- namespace[tag.namespace || 'default'] ||= []
|
5
|
+
- namespace[tag.namespace || 'default'] << tag
|
6
|
+
|
7
|
+
#form-blocks
|
8
|
+
- if tags.empty?
|
9
|
+
.no-tags
|
10
|
+
= link_to @page.layout.label, edit_cms_admin_site_layout_path(@site, @page.layout)
|
11
|
+
= t('.no_tags').html_safe
|
12
|
+
|
13
|
+
- else
|
14
|
+
= fields_for :blocks, nil, :builder => ComfyPress::FormBuilder do |cms_blocks|
|
15
|
+
|
16
|
+
.tabbable
|
17
|
+
- if namespace.size > 1
|
18
|
+
%ul.nav.nav-tabs
|
19
|
+
- namespace.each_with_index do |(name, tags), index|
|
20
|
+
%li{:class => index == 0 ? 'active' : nil}
|
21
|
+
= link_to name.humanize, "#ns-#{name}", :data => {:toggle => 'tab'}
|
22
|
+
.tab-content
|
23
|
+
- block_index = 0
|
24
|
+
- namespace.each_with_index do |(name, tags), index|
|
25
|
+
.tab-pane{:id => "ns-#{name}", :class => index == 0 ? 'active' : nil}
|
26
|
+
- tags.each do |tag|
|
27
|
+
= cms_blocks.send(tag.class.to_s.demodulize.underscore, tag, block_index) rescue nil
|
28
|
+
- block_index += 1
|
@@ -0,0 +1,35 @@
|
|
1
|
+
- page ||= index_branch
|
2
|
+
- children = @pages_by_parent[page.id]
|
3
|
+
- siblings = @pages_by_parent[page.parent_id]
|
4
|
+
- has_children = children.present?
|
5
|
+
- has_siblings = siblings.size > 1
|
6
|
+
- branch_open = (session[:cms_page_tree] || []).member?(page.id.to_s) || page.root?
|
7
|
+
- category_view = params[:category].present?
|
8
|
+
|
9
|
+
%li{:id => dom_id(page)}
|
10
|
+
.item
|
11
|
+
.toggle{:class => branch_open ? 'open' : nil}
|
12
|
+
- if !category_view && has_children && !page.root?
|
13
|
+
= link_to toggle_branch_cms_admin_site_page_path(@site, page), :remote => true do
|
14
|
+
%span= t('.toggle')
|
15
|
+
|
16
|
+
.icon{:class => page.is_published?? 'published' : 'draft'}
|
17
|
+
- if !category_view && has_siblings
|
18
|
+
.dragger
|
19
|
+
%span ⇅
|
20
|
+
|
21
|
+
.btn-group
|
22
|
+
= link_to t('.add_child_page'), new_cms_admin_site_page_path(@site, :parent_id => page.id), :class => 'btn btn-small'
|
23
|
+
= link_to t('.edit'), edit_cms_admin_site_page_path(@site, page), :class => 'btn btn-small'
|
24
|
+
= link_to t('.delete'), cms_admin_site_page_path(@site, page), :method => :delete, :data => {:confirm => t('.are_you_sure')}, :class => 'btn btn-small btn-danger'
|
25
|
+
|
26
|
+
.item-content
|
27
|
+
.item-title
|
28
|
+
= link_to page.label, edit_cms_admin_site_page_path(@site, page), :class => 'item-label'
|
29
|
+
= render :partial => '/cms_admin/categories/categories', :object => page
|
30
|
+
.item-meta
|
31
|
+
= link_to page.url, page.url, :target => '_blank'
|
32
|
+
|
33
|
+
- if !category_view && has_children && branch_open
|
34
|
+
%ul.children.sortable
|
35
|
+
= render :partial => 'index_branch', :collection => children
|
@@ -0,0 +1,9 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to pluralize(@page.revisions.count, t('.revision')), cms_admin_site_page_revisions_path(@site, @page), :class => 'btn pull-right'
|
3
|
+
%h2= t('.title')
|
4
|
+
|
5
|
+
- content_for :right_column do
|
6
|
+
= render :partial => 'cms_admin/sites/mirrors', :object => @page
|
7
|
+
|
8
|
+
= comfy_form_for @page, :as => :page, :url => {:action => :update}, :html => {:multipart => true} do |form|
|
9
|
+
= render form
|
@@ -0,0 +1,11 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to t('.new_link'), new_cms_admin_site_page_path(@site), :class => 'btn pull-right'
|
3
|
+
%h2= t('.title')
|
4
|
+
|
5
|
+
- content_for :right_column do
|
6
|
+
= render :partial => 'cms_admin/sites/mirrors'
|
7
|
+
|
8
|
+
= render :partial => 'cms_admin/categories/index', :object => 'Cms::Page'
|
9
|
+
|
10
|
+
%ul.list.sortable
|
11
|
+
= render :partial => 'index_branch', :collection => @pages
|
@@ -0,0 +1,11 @@
|
|
1
|
+
var li = $('li#cms_page_<%=@page.id%>');
|
2
|
+
li.find('.item .toggle').first().toggleClass('open');
|
3
|
+
|
4
|
+
<% if session[:cms_page_tree].member?(@page.id.to_s) %>
|
5
|
+
if(!li.find('ul.children')[0]) {
|
6
|
+
li.append('<ul class="children sortable"><%= escape_javascript(render :partial => "index_branch", :collection => @page.children) %></ul>');
|
7
|
+
CMS.sortable_list();
|
8
|
+
}
|
9
|
+
<% else %>
|
10
|
+
li.find('ul.children').remove();
|
11
|
+
<% end %>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
.page-header
|
2
|
+
%h2
|
3
|
+
= t('.title')
|
4
|
+
= @record.class.to_s.demodulize
|
5
|
+
%h4
|
6
|
+
= @record.is_a?(Cms::Page) ? "#{t('.full_path')}: #{@record.full_path}" : "#{t('.slug')}: #{@record.identifier}"
|
7
|
+
|
8
|
+
- content_for :right_column do
|
9
|
+
.box.revisions
|
10
|
+
- @record.revisions.each do |revision|
|
11
|
+
= active_link_to l(revision.created_at), :id => revision.id
|
12
|
+
|
13
|
+
|
14
|
+
%table.table
|
15
|
+
%tr
|
16
|
+
%th
|
17
|
+
%th= t('.current')
|
18
|
+
%th= l(@revision.created_at)
|
19
|
+
|
20
|
+
- @current_content.each do |label, content|
|
21
|
+
%tr
|
22
|
+
%th= Cms::Layout.human_attribute_name(label)
|
23
|
+
%td.main= content
|
24
|
+
%td.main= @versioned_content[label]
|
25
|
+
|
26
|
+
= comfy_form_for @revision, :url => {:action => :revert} do |form|
|
27
|
+
.form-actions
|
28
|
+
= form.submit t('.update'), :class => 'btn btn-primary'
|