alchemy_cms 2.4.beta2 → 2.4.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -1
- data/.travis.yml +3 -1
- data/.yardopts +1 -1
- data/Gemfile +2 -1
- data/alchemy_cms.gemspec +18 -17
- data/app/assets/images/alchemy/ajax_loader.gif +0 -0
- data/app/assets/images/alchemy/alchemy-logo.png +0 -0
- data/app/assets/images/alchemy/icons.png +0 -0
- data/app/assets/images/alchemy/image_loader.gif +0 -0
- data/app/assets/images/alchemy/placeholder.png +0 -0
- data/app/assets/images/alchemy/shading.png +0 -0
- data/app/assets/images/alchemy/swfupload/browse_button.png +0 -0
- data/app/assets/images/alchemy/tabs.gif +0 -0
- data/app/assets/images/alchemy/ui-icons_666666_256x240.png +0 -0
- data/app/assets/images/sassy-ie-overlay.png +0 -0
- data/app/assets/javascripts/alchemy/alchemy.base.js +1 -3
- data/app/assets/javascripts/alchemy/alchemy.browser.js.coffee +28 -0
- data/app/assets/javascripts/alchemy/alchemy.jquery_loader.js +2 -2
- data/app/assets/javascripts/alchemy/alchemy.js +2 -0
- data/app/assets/javascripts/alchemy/alchemy.link_overlay.js.coffee +79 -47
- data/app/assets/javascripts/alchemy/alchemy.menubar.js +12 -4
- data/app/assets/javascripts/alchemy/alchemy.onload.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +103 -0
- data/app/assets/javascripts/alchemy/alchemy.swf_upload.js +1 -1
- data/app/assets/javascripts/alchemy/alchemy.uploader.js +4 -6
- data/app/assets/javascripts/alchemy/preview.js +1 -0
- data/app/assets/stylesheets/alchemy/admin.css.scss +25 -0
- data/app/assets/stylesheets/alchemy/{archive.css.scss → archive.scss} +0 -2
- data/app/assets/stylesheets/alchemy/{base.css.scss → base.scss} +1 -57
- data/app/assets/stylesheets/alchemy/{custom.css → custom.scss} +0 -0
- data/app/assets/stylesheets/alchemy/{dashboard.css.scss → dashboard.scss} +0 -2
- data/app/assets/stylesheets/alchemy/defaults.scss +5 -0
- data/app/assets/stylesheets/alchemy/{elements.css.scss → elements.scss} +24 -37
- data/app/assets/stylesheets/alchemy/{errors.css.scss → errors.scss} +0 -2
- data/app/assets/stylesheets/alchemy/{flash.css.scss → flash.scss} +0 -2
- data/app/assets/stylesheets/alchemy/{form_elements.css.scss → form_elements.scss} +39 -12
- data/app/assets/stylesheets/alchemy/{frame.css.scss → frame.scss} +0 -2
- data/app/assets/stylesheets/alchemy/{icons.css.scss → icons.scss} +20 -2
- data/app/assets/stylesheets/alchemy/{jquery-ui.alchemy.css.scss → jquery-ui.scss} +6 -3
- data/app/assets/stylesheets/alchemy/{login.css.scss → login.scss} +3 -3
- data/app/assets/stylesheets/alchemy/menubar.css.scss +0 -1
- data/app/assets/stylesheets/alchemy/{_defaults.scss → mixins.scss} +2 -39
- data/app/assets/stylesheets/alchemy/{modules.css.scss → modules.scss} +4 -2
- data/app/assets/stylesheets/alchemy/notices.scss +51 -0
- data/app/assets/stylesheets/alchemy/{pagination.css.scss → pagination.scss} +0 -2
- data/app/assets/stylesheets/alchemy/{print.css → print.css.scss} +3 -3
- data/app/assets/stylesheets/alchemy/search.scss +63 -0
- data/app/assets/stylesheets/alchemy/{sitemap.css.scss → sitemap.scss} +1 -2
- data/app/assets/stylesheets/alchemy/{tables.css.scss → tables.scss} +16 -3
- data/app/assets/stylesheets/alchemy/tinymce_content.css.scss +3 -0
- data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +3 -0
- data/app/assets/stylesheets/alchemy/{upload.css.scss → upload.scss} +0 -2
- data/app/assets/stylesheets/alchemy/variables.scss +33 -0
- data/app/controllers/alchemy/admin/elements_controller.rb +1 -2
- data/app/controllers/alchemy/admin/tags_controller.rb +64 -0
- data/app/controllers/alchemy/base_controller.rb +8 -23
- data/app/controllers/alchemy/pages_controller.rb +5 -18
- data/app/helpers/alchemy/admin/base_helper.rb +1 -1
- data/app/helpers/alchemy/admin/elements_helper.rb +1 -0
- data/app/helpers/alchemy/elements_block_helper.rb +162 -0
- data/app/helpers/alchemy/elements_helper.rb +41 -3
- data/app/helpers/alchemy/pages_helper.rb +2 -1
- data/app/models/alchemy/attachment.rb +2 -1
- data/app/models/alchemy/element.rb +13 -10
- data/app/models/alchemy/essence_link.rb +11 -0
- data/app/models/alchemy/essence_picture.rb +15 -4
- data/app/models/alchemy/page.rb +23 -25
- data/app/models/alchemy/picture.rb +2 -2
- data/app/models/alchemy/tag.rb +16 -0
- data/app/models/alchemy/user.rb +3 -1
- data/app/views/alchemy/admin/attachments/_attachment.html.erb +12 -12
- data/app/views/alchemy/admin/attachments/edit.html.erb +10 -4
- data/app/views/alchemy/admin/elements/_element.html.erb +10 -13
- data/app/views/alchemy/admin/elements/_element_foot.html.erb +1 -1
- data/app/views/alchemy/admin/essence_files/edit.html.erb +12 -76
- data/app/views/alchemy/admin/essence_pictures/crop.html.erb +9 -4
- data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +1 -1
- data/app/views/alchemy/admin/layoutpages/index.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_external_link.html.erb +9 -4
- data/app/views/alchemy/admin/pages/configure.html.erb +22 -12
- data/app/views/alchemy/admin/pages/edit.html.erb +40 -40
- data/app/views/alchemy/admin/partials/_autocomplete_tag_list.html.erb +9 -0
- data/app/views/alchemy/admin/pictures/edit.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +11 -2
- data/app/views/alchemy/admin/tags/_radio_tag.html.erb +6 -0
- data/app/views/alchemy/admin/tags/_tag.html.erb +29 -0
- data/app/views/alchemy/admin/tags/edit.html.erb +41 -0
- data/app/views/alchemy/admin/tags/index.html.erb +46 -0
- data/app/views/alchemy/admin/tags/new.html.erb +16 -0
- data/app/views/alchemy/admin/users/_table.html.erb +18 -10
- data/app/views/alchemy/admin/users/_user.html.erb +2 -1
- data/app/views/alchemy/admin/users/index.html.erb +2 -1
- data/app/views/alchemy/elements/_article_view.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_link_editor.html.erb +23 -0
- data/app/views/alchemy/essences/_essence_link_view.html.erb +0 -0
- data/app/views/alchemy/essences/_essence_picture_tools.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_text_editor.html.erb +1 -9
- data/app/views/alchemy/essences/_linkable_essence_tools.html.erb +19 -0
- data/app/views/layouts/alchemy/admin.html.erb +1 -1
- data/config/alchemy/elements.yml +2 -0
- data/config/alchemy/modules.yml +12 -0
- data/config/alchemy/page_layouts.yml +2 -0
- data/config/authorization_rules.rb +2 -0
- data/config/locales/alchemy.de.yml +36 -5
- data/config/locales/alchemy.en.yml +3 -0
- data/config/routes.rb +6 -4
- data/db/migrate/20121026100815_alchemy_two_point_three.rb +0 -36
- data/db/migrate/20121113115120_create_alchemy_essence_links.rb +13 -0
- data/db/migrate/20121115100736_add_cached_tag_list_to_elements_pages_and_users.rb +7 -0
- data/db/migrate/20121116140636_add_cached_tag_list_to_alchemy_attachments.rb +5 -0
- data/db/migrate/20121116141016_change_alchemy_pictures_tag_list_column.rb +9 -0
- data/lib/alchemy/engine.rb +1 -1
- data/lib/alchemy/resource.rb +1 -1
- data/lib/alchemy/resources_helper.rb +1 -1
- data/lib/alchemy/upgrader.rb +17 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +1 -0
- data/lib/rails/generators/alchemy/base.rb +41 -0
- data/lib/rails/generators/alchemy/deploy_script/templates/deploy.rb.tt +10 -3
- data/lib/rails/generators/alchemy/elements/elements_generator.rb +6 -14
- data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +8 -6
- data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +13 -0
- data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +13 -0
- data/lib/rails/generators/alchemy/elements/templates/view.html.erb +4 -4
- data/lib/rails/generators/alchemy/elements/templates/view.html.haml +15 -0
- data/lib/rails/generators/alchemy/elements/templates/view.html.slim +15 -0
- data/lib/rails/generators/alchemy/essence/essence_generator.rb +1 -1
- data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +2 -3
- data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +4 -13
- data/lib/rails/generators/alchemy/page_layouts/templates/layout.html.haml +1 -0
- data/lib/rails/generators/alchemy/page_layouts/templates/layout.html.slim +1 -0
- data/spec/controllers/pages_controller_spec.rb +41 -34
- data/spec/dummy/app/views/layouts/application.html.erb +51 -0
- data/spec/dummy/db/migrate/20121026100815_alchemy_two_point_three.rb +0 -36
- data/spec/dummy/db/migrate/20121113115120_create_alchemy_essence_links.rb +13 -0
- data/spec/dummy/db/migrate/20121115100736_add_cached_tag_list_to_elements_pages_and_users.rb +7 -0
- data/spec/dummy/db/migrate/20121116140636_add_cached_tag_list_to_alchemy_attachments.rb +5 -0
- data/spec/dummy/db/migrate/20121116141016_change_alchemy_pictures_tag_list_column.rb +9 -0
- data/spec/dummy/db/schema.rb +24 -45
- data/spec/helpers/elements_block_helper_spec.rb +135 -0
- data/spec/helpers/elements_helper_spec.rb +43 -5
- data/spec/integration/pages_controller_spec.rb +22 -18
- data/spec/integration/translation_integration_spec.rb +0 -15
- data/spec/models/element_spec.rb +44 -36
- data/spec/models/essence_picture_spec.rb +22 -6
- data/spec/models/page_spec.rb +28 -0
- data/spec/spec_helper.rb +8 -3
- data/spec/support/ci/install_phantomjs +6 -0
- metadata +82 -40
- data/app/assets/images/alchemy/gui/navi-tab.png +0 -0
- data/app/assets/images/alchemy/gui/shading_90.png +0 -0
- data/app/assets/images/alchemy/jquery-sb/select_arrow.gif +0 -0
- data/app/assets/images/alchemy/jquery-sb/select_arrow_bg.gif +0 -0
- data/app/assets/images/alchemy/jquery-sb/select_arrow_bg_hover.gif +0 -0
- data/app/assets/javascripts/alchemy/alchemy.preview.js +0 -98
- data/app/assets/stylesheets/alchemy/alchemy.css +0 -21
- data/app/controllers/alchemy/admin/essence_audios_controller.rb +0 -12
- data/app/controllers/alchemy/admin/essence_flashes_controller.rb +0 -12
- data/app/controllers/alchemy/admin/essence_videos_controller.rb +0 -12
- data/app/models/alchemy/essence_audio.rb +0 -14
- data/app/models/alchemy/essence_flash.rb +0 -12
- data/app/models/alchemy/essence_video.rb +0 -20
- data/app/views/alchemy/essences/_essence_audio_editor.html.erb +0 -1
- data/app/views/alchemy/essences/_essence_audio_view.html.erb +0 -33
- data/app/views/alchemy/essences/_essence_flash_editor.html.erb +0 -1
- data/app/views/alchemy/essences/_essence_flash_view.html.erb +0 -26
- data/app/views/alchemy/essences/_essence_video_editor.html.erb +0 -1
- data/app/views/alchemy/essences/_essence_video_view.html.erb +0 -35
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class CreateAlchemyEssenceLinks < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :alchemy_essence_links do |t|
|
|
4
|
+
t.string :link
|
|
5
|
+
t.string :link_title
|
|
6
|
+
t.string :link_target
|
|
7
|
+
t.string :link_class_name
|
|
8
|
+
|
|
9
|
+
t.timestamps
|
|
10
|
+
t.userstamps
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
data/lib/alchemy/engine.rb
CHANGED
data/lib/alchemy/resource.rb
CHANGED
data/lib/alchemy/upgrader.rb
CHANGED
|
@@ -17,6 +17,7 @@ module Alchemy
|
|
|
17
17
|
convert_essence_texts_displayed_as_select_into_essence_selects
|
|
18
18
|
convert_essence_texts_displayed_as_checkbox_into_essence_booleans
|
|
19
19
|
copy_new_config_file
|
|
20
|
+
removed_richmedia_essences_notice
|
|
20
21
|
|
|
21
22
|
display_todos
|
|
22
23
|
end
|
|
@@ -191,6 +192,22 @@ module Alchemy
|
|
|
191
192
|
todo "Check the config/alchemy/config.yml.old file for custom configuration options and insert them into the new config file."
|
|
192
193
|
end
|
|
193
194
|
|
|
195
|
+
def removed_richmedia_essences_notice
|
|
196
|
+
warn = <<-WARN
|
|
197
|
+
We removed the EssenceAudio, EssenceFlash and EssenceVideo essences from Alchemy core!
|
|
198
|
+
In order to get the essences back, install the `alchemy-richmedia-essences` gem.
|
|
199
|
+
|
|
200
|
+
gem 'alchemy-richmedia-essences'
|
|
201
|
+
|
|
202
|
+
We left the tables in your database, you can simply drop them if you don't use these essences in your project.
|
|
203
|
+
|
|
204
|
+
drop_table :alchemy_essence_audios
|
|
205
|
+
drop_table :alchemy_essence_flashes
|
|
206
|
+
drop_table :alchemy_essence_videos
|
|
207
|
+
WARN
|
|
208
|
+
todo warn
|
|
209
|
+
end
|
|
210
|
+
|
|
194
211
|
end
|
|
195
212
|
|
|
196
213
|
end
|
data/lib/alchemy/version.rb
CHANGED
data/lib/alchemy_cms.rb
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'rails'
|
|
2
|
+
|
|
3
|
+
module Alchemy
|
|
4
|
+
module Generators
|
|
5
|
+
class Base < ::Rails::Generators::Base
|
|
6
|
+
class_option :template_engine, :type => :string, :aliases => '-e', :desc => 'Template engine for the views. Available options are "erb", "haml", and "slim".'
|
|
7
|
+
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
def conditional_template(source, destination)
|
|
11
|
+
files = Dir.glob(destination.gsub(/\.([a-z]+)$/, '*'))
|
|
12
|
+
if files.any?
|
|
13
|
+
ext = File.extname(files.first)[1..-1]
|
|
14
|
+
|
|
15
|
+
# If view already exists using a different template engine, change
|
|
16
|
+
# source and destination file names to use that engine.
|
|
17
|
+
if ext != template_engine.to_s
|
|
18
|
+
say_status :warning, "View uses unexpected template engine '#{ext}'.", :cyan
|
|
19
|
+
destination.gsub!(/#{template_engine}$/, ext)
|
|
20
|
+
source.gsub!(/#{template_engine}$/, ext)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
template source, destination
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def template_engine
|
|
28
|
+
# Rails is clever enough to default this to whatever template
|
|
29
|
+
# engine is configured through its generator configuration,
|
|
30
|
+
# but we'll default it to erb anyway, just in case.
|
|
31
|
+
options[:template_engine] || 'erb'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def load_alchemy_yaml(name)
|
|
35
|
+
YAML.load_file "#{Rails.root}/config/alchemy/#{name}"
|
|
36
|
+
rescue Errno::ENOENT
|
|
37
|
+
puts "\nERROR: Could not read config/alchemy/#{name} file. Please run: rails generate alchemy:scaffold"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -28,6 +28,7 @@ role :db, "<%= @server %>", :primary => true
|
|
|
28
28
|
|
|
29
29
|
# the webserver path
|
|
30
30
|
set :deploy_to, "<%= @deploy_path %>"
|
|
31
|
+
set :deploy_via, :remote_cache
|
|
31
32
|
|
|
32
33
|
# repository settings
|
|
33
34
|
<%- if @scm == "svn" -%>
|
|
@@ -46,6 +47,9 @@ set :repository, "<%= @repository_url %>"
|
|
|
46
47
|
set :branch, "master"
|
|
47
48
|
<%- end -%>
|
|
48
49
|
|
|
50
|
+
# rails env
|
|
51
|
+
set :rails_env, "production"
|
|
52
|
+
|
|
49
53
|
# before hooks
|
|
50
54
|
before "deploy:start", "deploy:seed"
|
|
51
55
|
before "deploy:create_symlink", "deploy:migrate"
|
|
@@ -91,11 +95,14 @@ end
|
|
|
91
95
|
|
|
92
96
|
## defaults
|
|
93
97
|
|
|
94
|
-
# rails env
|
|
95
|
-
set :rails_env, "production"
|
|
96
|
-
|
|
97
98
|
# enable bundler binstubs
|
|
98
99
|
set :bundle_flags, "--deployment --binstubs"
|
|
99
100
|
|
|
100
101
|
# do not use sudo
|
|
101
102
|
set :use_sudo, false
|
|
103
|
+
|
|
104
|
+
# enable ssh-agent forwarding
|
|
105
|
+
ssh_options[:forward_agent] = true
|
|
106
|
+
|
|
107
|
+
# Enable git password prompting
|
|
108
|
+
default_run_options[:pty] = true
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require File.join(__FILE__, '../../base')
|
|
2
2
|
|
|
3
3
|
module Alchemy
|
|
4
4
|
module Generators
|
|
5
|
-
class ElementsGenerator <
|
|
5
|
+
class ElementsGenerator < Base
|
|
6
6
|
desc "This generator generates your elements view partials."
|
|
7
7
|
source_root File.expand_path('templates', File.dirname(__FILE__))
|
|
8
8
|
|
|
@@ -12,7 +12,7 @@ module Alchemy
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def create_partials
|
|
15
|
-
@elements =
|
|
15
|
+
@elements = load_alchemy_yaml('elements.yml')
|
|
16
16
|
@elements.each do |element|
|
|
17
17
|
@element = element
|
|
18
18
|
if @element['available_contents']
|
|
@@ -22,19 +22,11 @@ module Alchemy
|
|
|
22
22
|
@contents = (element["contents"] or [])
|
|
23
23
|
end
|
|
24
24
|
@element_name = element["name"].underscore
|
|
25
|
-
template "editor.html.erb", "#{@elements_dir}/_#{@element_name}_editor.html.erb"
|
|
26
|
-
template "view.html.erb", "#{@elements_dir}/_#{@element_name}_view.html.erb"
|
|
27
|
-
end if @elements
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
25
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
puts "\nERROR: Could not read config/alchemy/elements.yml file. Please run: rails generate alchemy:scaffold"
|
|
26
|
+
conditional_template "editor.html.#{template_engine}", "#{@elements_dir}/_#{@element_name}_editor.html.#{template_engine}"
|
|
27
|
+
conditional_template "view.html.#{template_engine}", "#{@elements_dir}/_#{@element_name}_view.html.#{template_engine}"
|
|
28
|
+
end if @elements
|
|
36
29
|
end
|
|
37
|
-
|
|
38
30
|
end
|
|
39
31
|
end
|
|
40
32
|
end
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
<%%= element_editor_for(element) do |el| -%>
|
|
1
2
|
<%- if @element['picture_gallery'] -%>
|
|
2
|
-
<%%= render_picture_gallery_editor(element, :max_images => nil, :crop => true) %>
|
|
3
|
+
<%%= render_picture_gallery_editor(element, :max_images => nil, :crop => true) %>
|
|
3
4
|
<%- end -%>
|
|
4
5
|
<% @contents.each do |content| -%>
|
|
5
|
-
<%%=
|
|
6
|
+
<%%= el.edit :<%= content["name"] %> %>
|
|
6
7
|
<% end -%>
|
|
7
8
|
<%- if @element['available_contents'] -%>
|
|
8
|
-
<%% element.contents.where(:name => ['<%= @available_contents_names.join("', '") %>']).each do |content| %>
|
|
9
|
-
|
|
10
|
-
<%% end %>
|
|
11
|
-
<p><%%= render_new_content_link(element) %></p>
|
|
9
|
+
<%% element.contents.where(:name => ['<%= @available_contents_names.join("', '") %>']).each do |content| %>
|
|
10
|
+
<%%= render_essence_editor content %>
|
|
11
|
+
<%% end %>
|
|
12
|
+
<p><%%= render_new_content_link(element) %></p>
|
|
12
13
|
<%- end -%>
|
|
14
|
+
<%%- end -%>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
= element_editor_for(element) do |el|
|
|
2
|
+
<%- if @element['picture_gallery'] -%>
|
|
3
|
+
= render_picture_gallery_editor(element, :max_images => nil, :crop => true)
|
|
4
|
+
<%- end -%>
|
|
5
|
+
<% @contents.each do |content| -%>
|
|
6
|
+
= el.edit :<%= content["name"] %>
|
|
7
|
+
<% end -%>
|
|
8
|
+
<%- if @element['available_contents'] -%>
|
|
9
|
+
- element.contents.where(:name => ['<%= @available_contents_names.join("', '") %>']).each do |content|
|
|
10
|
+
= render_essence_editor content
|
|
11
|
+
|
|
12
|
+
%p= render_new_content_link(element)
|
|
13
|
+
<% end -%>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
= element_editor_for(element) do |el|
|
|
2
|
+
<%- if @element['picture_gallery'] -%>
|
|
3
|
+
= render_picture_gallery_editor(element, :max_images => nil, :crop => true)
|
|
4
|
+
<%- end -%>
|
|
5
|
+
<% @contents.each do |content| -%>
|
|
6
|
+
= el.edit :<%= content["name"] %>
|
|
7
|
+
<% end -%>
|
|
8
|
+
<%- if @element['available_contents'] -%>
|
|
9
|
+
- element.contents.where(:name => ['<%= @available_contents_names.join("', '") %>']).each do |content|
|
|
10
|
+
= render_essence_editor content
|
|
11
|
+
|
|
12
|
+
p= render_new_content_link(element)
|
|
13
|
+
<% end -%>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<%%= element_view_for(element) do |el| -%>
|
|
2
2
|
<%- if @element["picture_gallery"] -%>
|
|
3
3
|
<div class="<%= @element_name %>_images">
|
|
4
4
|
<%%- element.contents.gallery_pictures.each do |image| -%>
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
<%- @contents.each do |content| -%>
|
|
12
12
|
<%- if @contents.length > 1 -%>
|
|
13
13
|
<div class="<%= content["name"] %>">
|
|
14
|
-
<%%=
|
|
14
|
+
<%%= el.render :<%= content["name"] %> %>
|
|
15
15
|
</div>
|
|
16
16
|
<%- else -%>
|
|
17
|
-
<%%=
|
|
17
|
+
<%%= el.render :<%= content["name"] %> %>
|
|
18
18
|
<%- end -%>
|
|
19
19
|
<%- end -%>
|
|
20
|
-
|
|
20
|
+
<%%- end -%>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
= element_view_for(element) do |el|
|
|
2
|
+
<%- if @element["picture_gallery"] -%>
|
|
3
|
+
.<%= @element_name %>_images
|
|
4
|
+
- element.contents.gallery_pictures.each do |image|
|
|
5
|
+
.<%= @element_name %>_image<%= image.essence.css_class ? ".#{image.essence.css_class}" : '' %>
|
|
6
|
+
= render_essence_view(image, :image_size => "160x120")
|
|
7
|
+
<%- end -%>
|
|
8
|
+
<%- @contents.each do |content| -%>
|
|
9
|
+
<%- if @contents.length > 1 -%>
|
|
10
|
+
.<%= content["name"] %>
|
|
11
|
+
= el.render :<%= content["name"] %>
|
|
12
|
+
<%- else -%>
|
|
13
|
+
= el.render :<%= content["name"] %>
|
|
14
|
+
<%- end -%>
|
|
15
|
+
<%- end -%>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
= element_view_for(element) do |el|
|
|
2
|
+
<%- if @element["picture_gallery"] -%>
|
|
3
|
+
.<%= @element_name %>_images
|
|
4
|
+
- element.contents.gallery_pictures.each do |image|
|
|
5
|
+
.<%= @element_name %>_image<%= image.essence.css_class ? ".#{image.essence.css_class}" : '' %>
|
|
6
|
+
= render_essence_view(image, :image_size => "160x120")
|
|
7
|
+
<%- end -%>
|
|
8
|
+
<%- @contents.each do |content| -%>
|
|
9
|
+
<%- if @contents.length > 1 -%>
|
|
10
|
+
.<%= content["name"] %>
|
|
11
|
+
= el.render :<%= content["name"] %>
|
|
12
|
+
<%- else -%>
|
|
13
|
+
= el.render :<%= content["name"] %>
|
|
14
|
+
<%- end -%>
|
|
15
|
+
<%- end -%>
|
|
@@ -8,7 +8,7 @@ module Alchemy
|
|
|
8
8
|
source_root File.expand_path('templates', File.dirname(__FILE__))
|
|
9
9
|
|
|
10
10
|
def init
|
|
11
|
-
@essence_name = essence_name.underscore
|
|
11
|
+
@essence_name = Alchemy::Content.normalize_essence_type(essence_name).underscore
|
|
12
12
|
@essence_view_path = Rails.root.join('app/views/alchemy/essences')
|
|
13
13
|
end
|
|
14
14
|
|
|
@@ -6,13 +6,12 @@
|
|
|
6
6
|
Please consult Alchemy::Content.rb docs for further methods on the content object
|
|
7
7
|
%>
|
|
8
8
|
<%% cache(content) do %>
|
|
9
|
-
|
|
10
9
|
<div class="content_editor <%= @essence_name %>" id="<%%= content_dom_id(content) %>">
|
|
11
|
-
|
|
10
|
+
<%%= label_and_remove_link(content) %>
|
|
11
|
+
<%%= text_field_tag(
|
|
12
12
|
content.form_field_name,
|
|
13
13
|
content.ingredient,
|
|
14
14
|
:id => content.form_field_id
|
|
15
15
|
) %>
|
|
16
16
|
</div>
|
|
17
|
-
|
|
18
17
|
<%% end %>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require File.join(__FILE__, '../../base')
|
|
2
2
|
|
|
3
3
|
module Alchemy
|
|
4
4
|
module Generators
|
|
5
|
-
class PageLayoutsGenerator <
|
|
5
|
+
class PageLayoutsGenerator < Base
|
|
6
6
|
desc "This generator generates your page_layouts view partials."
|
|
7
7
|
source_root File.expand_path('templates', File.dirname(__FILE__))
|
|
8
8
|
|
|
@@ -12,21 +12,12 @@ module Alchemy
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def create_partials
|
|
15
|
-
@page_layouts =
|
|
15
|
+
@page_layouts = load_alchemy_yaml('page_layouts.yml')
|
|
16
16
|
@page_layouts.each do |page_layout|
|
|
17
17
|
@page_layout_name = page_layout["name"].underscore
|
|
18
|
-
|
|
18
|
+
conditional_template "layout.html.#{template_engine}", "#{@page_layouts_dir}/_#{@page_layout_name}.html.#{template_engine}"
|
|
19
19
|
end if @page_layouts
|
|
20
20
|
end
|
|
21
|
-
|
|
22
|
-
private
|
|
23
|
-
|
|
24
|
-
def get_page_layouts_from_yaml
|
|
25
|
-
YAML.load_file "#{Rails.root}/config/alchemy/page_layouts.yml"
|
|
26
|
-
rescue Errno::ENOENT
|
|
27
|
-
puts "\nERROR: Could not read config/alchemy/page_layouts.yml file. Please run: rails generate alchemy:scaffold"
|
|
28
|
-
end
|
|
29
|
-
|
|
30
21
|
end
|
|
31
22
|
end
|
|
32
23
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
= render_elements
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
= render_elements
|
|
@@ -58,11 +58,9 @@ describe Alchemy::PagesController do
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
context "with params layout set to not existing layout" do
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
expect { get :show, :urlname => :home, :layout => 'lkuiuk' }.to raise_error(ActionController::RoutingError)
|
|
61
|
+
it "should raise ActionView::MissingTemplate" do
|
|
62
|
+
expect { get :show, :urlname => :home, :layout => 'lkuiuk' }.to raise_error(ActionView::MissingTemplate)
|
|
64
63
|
end
|
|
65
|
-
|
|
66
64
|
end
|
|
67
65
|
|
|
68
66
|
context "with param layout set to a custom layout" do
|
|
@@ -84,36 +82,6 @@ describe Alchemy::PagesController do
|
|
|
84
82
|
end
|
|
85
83
|
|
|
86
84
|
end
|
|
87
|
-
|
|
88
|
-
context "with application layout absent" do
|
|
89
|
-
|
|
90
|
-
it "should render pages layout" do
|
|
91
|
-
get :show, :urlname => :home
|
|
92
|
-
response.body.should_not have_content('I am the application layout')
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
context "with application layout present" do
|
|
98
|
-
|
|
99
|
-
before do
|
|
100
|
-
@app_layout = Rails.root.join('app/views/layouts', 'application.html.erb')
|
|
101
|
-
File.open(@app_layout, 'w') do |app_layout|
|
|
102
|
-
app_layout.puts "<html>I am the application layout</html>"
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
it "should render application layout" do
|
|
107
|
-
get :show, :urlname => :home
|
|
108
|
-
response.body.should have_content('I am the application layout')
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
after do
|
|
112
|
-
FileUtils.rm(@app_layout)
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
end
|
|
116
|
-
|
|
117
85
|
end
|
|
118
86
|
|
|
119
87
|
describe "url nesting" do
|
|
@@ -157,4 +125,43 @@ describe Alchemy::PagesController do
|
|
|
157
125
|
end
|
|
158
126
|
end
|
|
159
127
|
|
|
128
|
+
describe '#redirect_to_public_child' do
|
|
129
|
+
|
|
130
|
+
let(:root_page) { FactoryGirl.create(:language_root_page, :public => false) }
|
|
131
|
+
let(:page) { FactoryGirl.create(:page, :parent_id => root_page.id) }
|
|
132
|
+
let(:public_page) { FactoryGirl.create(:public_page, :parent_id => page.id) }
|
|
133
|
+
|
|
134
|
+
before { controller.instance_variable_set("@page", root_page) }
|
|
135
|
+
|
|
136
|
+
context "with unpublished and published pages in page tree" do
|
|
137
|
+
|
|
138
|
+
before do
|
|
139
|
+
public_page
|
|
140
|
+
root_page.reload
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it "should redirect to first public child" do
|
|
144
|
+
controller.should_receive(:redirect_page)
|
|
145
|
+
controller.send(:redirect_to_public_child)
|
|
146
|
+
controller.instance_variable_get('@page').should == public_page
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
context "with only unpublished pages in page tree" do
|
|
152
|
+
|
|
153
|
+
before do
|
|
154
|
+
page
|
|
155
|
+
root_page.reload
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it "should raise not found error" do
|
|
159
|
+
expect {
|
|
160
|
+
controller.send(:redirect_to_public_child)
|
|
161
|
+
}.to raise_error(ActionController::RoutingError)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
160
167
|
end
|