alchemy_cms 2.2.rc13 → 2.2.rc14
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/Rakefile +3 -0
- data/alchemy_cms.gemspec +1 -0
- data/app/assets/javascripts/alchemy/alchemy.base.js +95 -94
- data/app/assets/javascripts/alchemy/alchemy.buttons.js +15 -11
- data/app/assets/javascripts/alchemy/alchemy.datepicker.js +18 -18
- data/app/assets/javascripts/alchemy/alchemy.dirty.js +20 -20
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js +50 -44
- data/app/assets/javascripts/alchemy/alchemy.element_editor_selector.js +15 -12
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js +47 -43
- data/app/assets/javascripts/alchemy/alchemy.file_progress.js +27 -17
- data/app/assets/javascripts/alchemy/alchemy.growler.js +19 -15
- data/app/assets/javascripts/alchemy/alchemy.html5.js +1 -2
- data/app/assets/javascripts/alchemy/alchemy.image_cropper.js +10 -11
- data/app/assets/javascripts/alchemy/alchemy.jquery_loader.js +6 -6
- data/app/assets/javascripts/alchemy/alchemy.js_extensions.js +4 -6
- data/app/assets/javascripts/alchemy/alchemy.menubar.js +16 -20
- data/app/assets/javascripts/alchemy/alchemy.page_sorter.js +18 -16
- data/app/assets/javascripts/alchemy/alchemy.preview.js +30 -30
- data/app/assets/javascripts/alchemy/alchemy.preview_window.js +50 -42
- data/app/assets/javascripts/alchemy/alchemy.routes.js.erb +11 -11
- data/app/assets/javascripts/alchemy/alchemy.swf_upload.js +83 -86
- data/app/assets/javascripts/alchemy/alchemy.uploader.js +106 -112
- data/app/assets/javascripts/alchemy/alchemy.windows.js +158 -130
- data/app/assets/stylesheets/alchemy/base.css.scss +7 -1
- data/app/assets/stylesheets/alchemy/buttons.css.scss +31 -25
- data/app/assets/stylesheets/alchemy/elements.css.scss +4 -0
- data/app/controllers/alchemy/admin/base_controller.rb +5 -1
- data/app/helpers/alchemy/admin/base_helper.rb +21 -13
- data/app/helpers/alchemy/admin/contents_helper.rb +52 -11
- data/app/helpers/alchemy/admin/elements_helper.rb +0 -1
- data/app/helpers/alchemy/admin/essences_helper.rb +5 -5
- data/app/helpers/alchemy/essences_helper.rb +1 -0
- data/app/models/alchemy/content.rb +102 -91
- data/app/models/alchemy/essence_boolean.rb +8 -0
- data/app/models/alchemy/essence_select.rb +7 -0
- data/app/sweepers/alchemy/content_sweeper.rb +2 -4
- data/app/views/alchemy/admin/clipboard/clear.js.erb +3 -2
- data/app/views/alchemy/admin/clipboard/index.html.erb +2 -2
- data/app/views/alchemy/admin/contents/create.js.erb +2 -0
- data/app/views/alchemy/admin/contents/destroy.js.coffee +4 -0
- data/app/views/alchemy/admin/contents/new.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_element_foot.html.erb +3 -2
- data/app/views/alchemy/admin/elements/create.js.coffee +31 -0
- data/app/views/alchemy/admin/elements/fold.js.coffee +37 -0
- data/app/views/alchemy/admin/essence_pictures/assign.js.coffee +15 -0
- data/app/views/alchemy/admin/essence_pictures/destroy.js.coffee +19 -0
- data/app/views/alchemy/admin/essence_pictures/edit.html.erb +12 -2
- data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_page.html.erb +1 -1
- data/app/views/alchemy/admin/pages/destroy.js.coffee +19 -0
- data/app/views/alchemy/admin/pages/edit.html.erb +5 -5
- data/app/views/alchemy/admin/pages/update.js.coffee +36 -0
- data/app/views/alchemy/admin/resources/_form.html.erb +12 -1
- data/app/views/alchemy/admin/resources/_resource.html.erb +6 -3
- data/app/views/alchemy/admin/resources/_table.html.erb +1 -1
- data/app/views/alchemy/admin/trash/clear.js.coffee +4 -0
- data/app/views/alchemy/admin/trash/index.html.erb +4 -4
- data/app/views/alchemy/elements/_article_editor.html.erb +4 -2
- data/app/views/alchemy/elements/_article_view.html.erb +7 -7
- data/app/views/alchemy/elements/_download_editor.html.erb +4 -1
- data/app/views/alchemy/elements/_download_view.html.erb +7 -3
- data/app/views/alchemy/elements/_image_mosaic_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_image_mosaic_view.html.erb +11 -9
- data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +14 -0
- data/app/views/alchemy/essences/_essence_boolean_view.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_date_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_file_editor.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_html_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_select_editor.html.erb +35 -0
- data/app/views/alchemy/essences/_essence_select_view.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_text_editor.html.erb +29 -77
- data/app/views/alchemy/essences/_essence_text_view.html.erb +2 -2
- data/config/alchemy/elements.yml +72 -44
- data/config/locales/alchemy.de.yml +46 -45
- data/config/locales/alchemy.en.yml +90 -89
- data/db/migrate/20120608085509_create_alchemy_essence_selects.rb +11 -0
- data/db/migrate/20120611221734_create_alchemy_essence_booleans.rb +11 -0
- data/lib/alchemy/authentication_helpers.rb +3 -7
- data/lib/alchemy/engine.rb +3 -4
- data/lib/alchemy/essence.rb +24 -16
- data/lib/alchemy/resource.rb +22 -3
- data/lib/alchemy/resources_helper.rb +8 -0
- data/lib/alchemy/seeder.rb +26 -1
- data/lib/alchemy/upgrader.rb +70 -1
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +1 -0
- data/spec/controllers/admin/clipboard_controller_spec.rb +16 -4
- data/spec/controllers/admin/contents_controller_spec.rb +21 -4
- data/spec/dummy/app/models/event.rb +1 -1
- data/spec/dummy/db/schema.rb +18 -1
- data/spec/helpers/admin/contents_helper_spec.rb +3 -2
- data/spec/models/clipboard_spec.rb +14 -3
- data/spec/models/essence_boolean_spec.rb +15 -0
- data/spec/models/essence_select_spec.rb +15 -0
- data/spec/models/resource_spec.rb +113 -0
- metadata +40 -12
- data/app/views/alchemy/admin/contents/destroy.js.erb +0 -7
- data/app/views/alchemy/admin/elements/create.js.erb +0 -36
- data/app/views/alchemy/admin/elements/fold.js.erb +0 -41
- data/app/views/alchemy/admin/essence_pictures/assign.js.erb +0 -16
- data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +0 -20
- data/app/views/alchemy/admin/pages/destroy.js.erb +0 -12
- data/app/views/alchemy/admin/pages/update.js.erb +0 -40
- data/app/views/alchemy/admin/trash/clear.js.erb +0 -3
- data/spec/dummy/app/models/.gitkeep +0 -0
|
@@ -2,8 +2,8 @@ module Alchemy
|
|
|
2
2
|
module AuthenticationHelpers
|
|
3
3
|
|
|
4
4
|
def self.included(base)
|
|
5
|
-
base.send :helper_method, :current_user
|
|
6
5
|
base.send :alias_method, :current_alchemy_user, :current_user
|
|
6
|
+
base.send :helper_method, :current_user
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
def current_user
|
|
@@ -11,16 +11,12 @@ module Alchemy
|
|
|
11
11
|
@current_user = current_user_session && current_user_session.record
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
private
|
|
15
|
+
|
|
14
16
|
def current_user_session
|
|
15
17
|
return @current_user_session if defined?(@current_user_session)
|
|
16
18
|
@current_user_session = UserSession.find
|
|
17
19
|
end
|
|
18
20
|
|
|
19
|
-
def logged_in?
|
|
20
|
-
!current_user.blank?
|
|
21
|
-
end
|
|
22
|
-
|
|
23
21
|
end
|
|
24
22
|
end
|
|
25
|
-
|
|
26
|
-
ApplicationController.send :include, Alchemy::AuthenticationHelpers
|
data/lib/alchemy/engine.rb
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
require File.join(File.dirname(__FILE__), '../middleware/flash_session_cookie')
|
|
2
|
+
require File.join(File.dirname(__FILE__), 'authentication_helpers')
|
|
2
3
|
|
|
3
4
|
module Alchemy
|
|
4
5
|
class Engine < Rails::Engine
|
|
5
6
|
|
|
6
7
|
isolate_namespace Alchemy
|
|
7
|
-
|
|
8
8
|
engine_name 'alchemy'
|
|
9
|
-
|
|
10
9
|
config.mount_at = '/'
|
|
11
10
|
|
|
12
11
|
# Enabling assets precompiling
|
|
@@ -41,8 +40,8 @@ module Alchemy
|
|
|
41
40
|
Alchemy::AuthEngine.get_instance.load(File.join(File.dirname(__FILE__), '../..', 'config/authorization_rules.rb'))
|
|
42
41
|
end
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
config.to_prepare do
|
|
44
|
+
ApplicationController.send :include, Alchemy::AuthenticationHelpers
|
|
46
45
|
end
|
|
47
46
|
|
|
48
47
|
end
|
data/lib/alchemy/essence.rb
CHANGED
|
@@ -15,9 +15,9 @@ module Alchemy #:nodoc:
|
|
|
15
15
|
# Configuration options are:
|
|
16
16
|
#
|
|
17
17
|
# * +ingredient_column+ - specifies the column name you use for storing the content in the database (default: +body+)
|
|
18
|
-
# * +validate_column+ - which column should be validated.
|
|
18
|
+
# * +validate_column+ - which column should be validated. (default: ingredient_column)
|
|
19
19
|
# * +preview_text_column+ - specifies the column for the preview_text method. (default: ingredient_column)
|
|
20
|
-
# * +preview_text_method+ - a method called on ingredient to get the preview text
|
|
20
|
+
# * +preview_text_method+ - a method called on ingredient to get the preview text. (default: ingredient_column)
|
|
21
21
|
def acts_as_essence(options={})
|
|
22
22
|
configuration = {}
|
|
23
23
|
configuration.update(options) if options.is_a?(Hash)
|
|
@@ -31,31 +31,31 @@ module Alchemy #:nodoc:
|
|
|
31
31
|
stampable(:stamper_class_name => 'Alchemy::User')
|
|
32
32
|
validate :essence_validations, :on => :update
|
|
33
33
|
has_many :contents, :as => :essence
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
def acts_as_essence_class
|
|
36
36
|
#{self.name}
|
|
37
37
|
end
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
def validation_column
|
|
40
40
|
'#{validate_column}'
|
|
41
41
|
end
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
def ingredient_column
|
|
44
44
|
'#{ingredient_column}'
|
|
45
45
|
end
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
def ingredient
|
|
48
48
|
send('#{ingredient_column}')
|
|
49
49
|
end
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
def preview_text_column
|
|
52
52
|
'#{preview_text_column}'
|
|
53
53
|
end
|
|
54
|
-
|
|
54
|
+
|
|
55
55
|
def preview_text_method
|
|
56
56
|
'#{configuration[:preview_text_method]}'
|
|
57
57
|
end
|
|
58
|
-
|
|
58
|
+
|
|
59
59
|
EOV
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -64,24 +64,24 @@ module Alchemy #:nodoc:
|
|
|
64
64
|
module InstanceMethods
|
|
65
65
|
|
|
66
66
|
# Essence Validations:
|
|
67
|
-
#
|
|
67
|
+
#
|
|
68
68
|
# Essence validations can be set inside the config/elements.yml file.
|
|
69
69
|
# Currently supported validations are:
|
|
70
70
|
# * presence
|
|
71
71
|
# * format
|
|
72
72
|
# * uniqueness
|
|
73
|
-
#
|
|
73
|
+
#
|
|
74
74
|
# If you want to validate the format you must additionally pass validate_format_as or validate_format_with:
|
|
75
|
-
#
|
|
75
|
+
#
|
|
76
76
|
# * validate_format_with has to be regex
|
|
77
77
|
# * validate_format_as can be one of:
|
|
78
78
|
# ** url
|
|
79
79
|
# ** email
|
|
80
|
-
#
|
|
80
|
+
#
|
|
81
81
|
# Example:
|
|
82
|
-
#
|
|
82
|
+
#
|
|
83
83
|
# - name: person
|
|
84
|
-
# contents:
|
|
84
|
+
# contents:
|
|
85
85
|
# - name: name
|
|
86
86
|
# type: EssenceText
|
|
87
87
|
# validate: [presence]
|
|
@@ -93,7 +93,7 @@ module Alchemy #:nodoc:
|
|
|
93
93
|
# type: EssenceText
|
|
94
94
|
# validate: [format]
|
|
95
95
|
# validate_format_with: '^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$'
|
|
96
|
-
#
|
|
96
|
+
#
|
|
97
97
|
def essence_validations
|
|
98
98
|
self.validation_errors ||= []
|
|
99
99
|
return true if description.blank? || description['validate'].blank?
|
|
@@ -170,6 +170,14 @@ module Alchemy #:nodoc:
|
|
|
170
170
|
self.class.name.split('::').last.underscore
|
|
171
171
|
end
|
|
172
172
|
|
|
173
|
+
def acts_as_essence?
|
|
174
|
+
!acts_as_essence_class.blank?
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def to_partial_path
|
|
178
|
+
"alchemy/essences/#{partial_name}_view"
|
|
179
|
+
end
|
|
180
|
+
|
|
173
181
|
end
|
|
174
182
|
|
|
175
183
|
end
|
data/lib/alchemy/resource.rb
CHANGED
|
@@ -43,9 +43,8 @@ module Alchemy
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def attributes
|
|
46
|
-
#@_attributes ||=
|
|
47
46
|
self.model.columns.collect do |col|
|
|
48
|
-
{:name => col.name, :type => col.type} unless self.skip_attributes.include?(col.name)
|
|
47
|
+
{:name => (resource_relation_name(col.name) || col.name), :type => (resource_relation_type(col.name) || col.type)} unless self.skip_attributes.include?(col.name)
|
|
49
48
|
end.compact
|
|
50
49
|
end
|
|
51
50
|
|
|
@@ -68,7 +67,7 @@ module Alchemy
|
|
|
68
67
|
@module_definition and @module_definition['engine_name']
|
|
69
68
|
end
|
|
70
69
|
|
|
71
|
-
|
|
70
|
+
protected
|
|
72
71
|
|
|
73
72
|
def controller_path_array
|
|
74
73
|
@controller_path.split('/')
|
|
@@ -78,5 +77,25 @@ module Alchemy
|
|
|
78
77
|
controller_path_array - model_array
|
|
79
78
|
end
|
|
80
79
|
|
|
80
|
+
def resource_relation_name(column_name)
|
|
81
|
+
resource_relation(column_name)['attr_method'].to_s if resource_relation(column_name).present?
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def resource_relation_type(column_name)
|
|
85
|
+
resource_relation(column_name)['attr_type'].to_sym if resource_relation(column_name).present?
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def self.resource_relations
|
|
89
|
+
Config.get(:resource_relations)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def resource_relations
|
|
93
|
+
self.class.resource_relations[model_name.to_s] if self.class.resource_relations
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def resource_relation(column_name)
|
|
97
|
+
resource_relations[column_name.to_s] if resource_relations
|
|
98
|
+
end
|
|
99
|
+
|
|
81
100
|
end
|
|
82
101
|
end
|
data/lib/alchemy/seeder.rb
CHANGED
|
@@ -59,7 +59,7 @@ module Alchemy
|
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
private
|
|
63
63
|
|
|
64
64
|
def color(name)
|
|
65
65
|
case name
|
|
@@ -84,6 +84,8 @@ module Alchemy
|
|
|
84
84
|
puts "#{color(:yellow)}== Skipping! #{message}#{color(:clear)}"
|
|
85
85
|
when :error
|
|
86
86
|
puts "#{color(:red)}!! ERROR: #{message}#{color(:clear)}"
|
|
87
|
+
when :message
|
|
88
|
+
puts "#{color(:clear)}#{message}"
|
|
87
89
|
else
|
|
88
90
|
puts "#{color(:green)}== #{message}#{color(:clear)}"
|
|
89
91
|
end
|
|
@@ -94,6 +96,29 @@ module Alchemy
|
|
|
94
96
|
puts "#{'-' * message.length}\n"
|
|
95
97
|
end
|
|
96
98
|
|
|
99
|
+
def todo(todo)
|
|
100
|
+
add_todo todo
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def add_todo(todo)
|
|
104
|
+
todos << todo
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def todos
|
|
108
|
+
@@todos ||= []
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def display_todos
|
|
112
|
+
if todos.length > 0
|
|
113
|
+
log "\nTODOS:", :message
|
|
114
|
+
log "------\n", :message
|
|
115
|
+
todos.each_with_index do |todo, i|
|
|
116
|
+
log "\n#{i+1}. ", :message
|
|
117
|
+
log todo, :message
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
97
122
|
end
|
|
98
123
|
|
|
99
124
|
end
|
data/lib/alchemy/upgrader.rb
CHANGED
|
@@ -12,9 +12,13 @@ module Alchemy
|
|
|
12
12
|
upgrade_layoutpages
|
|
13
13
|
upgrade_essence_link_target_default
|
|
14
14
|
upgrade_to_namespaced_essence_type
|
|
15
|
+
convert_essence_texts_displayed_as_select_into_essence_selects
|
|
16
|
+
convert_essence_texts_displayed_as_checkbox_into_essence_booleans
|
|
17
|
+
|
|
18
|
+
display_todos
|
|
15
19
|
end
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
private
|
|
18
22
|
|
|
19
23
|
# Creates Language model if it does not exist (Alchemy CMS prior v1.5)
|
|
20
24
|
# Also creates missing associations between pages and languages
|
|
@@ -101,12 +105,77 @@ module Alchemy
|
|
|
101
105
|
else
|
|
102
106
|
log "No essence_type columns to be namespaced found.", :skip
|
|
103
107
|
end
|
|
108
|
+
todo "Test mich nicht"
|
|
104
109
|
end
|
|
105
110
|
|
|
106
111
|
def strip_alchemy_from_schema_version_table
|
|
112
|
+
desc "Strip -alchemy suffix from schema_version table."
|
|
107
113
|
database_yml = YAML.load_file(Rails.root.join("config", "database.yml"))
|
|
108
114
|
connection = Mysql2::Client.new(database_yml.fetch(Rails.env.to_s).symbolize_keys)
|
|
109
115
|
connection.query "UPDATE schema_migrations SET `schema_migrations`.`version` = REPLACE(`schema_migrations`.`version`,'-alchemy','')"
|
|
116
|
+
todo "Teste mich"
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def convert_essence_texts_displayed_as_select_into_essence_selects
|
|
120
|
+
desc "Converting EssenceTexts displayed as select into EssenceSelects"
|
|
121
|
+
contents_found = 0
|
|
122
|
+
elements = Alchemy::Element.descriptions.select { |e| e['contents'].present? && !e['contents'].detect { |c| c['settings'].present? && c['settings']['display_as'] == 'select' }.nil? }
|
|
123
|
+
contents = elements.collect { |el| el['contents'] }.flatten.select { |c| c['settings'] && c['settings']['display_as'] == 'select' }.flatten
|
|
124
|
+
content_names = contents.collect { |c| c['name'] }
|
|
125
|
+
Alchemy::Content.essence_texts.where(
|
|
126
|
+
:name => content_names,
|
|
127
|
+
:alchemy_elements => {:name => elements.collect { |e| e['name'] }}
|
|
128
|
+
).joins(:element).each do |content|
|
|
129
|
+
new_content = Alchemy::Content.new(:name => content.name, :element_id => content.element.id)
|
|
130
|
+
if new_content.create_essence!('name' => content.name, 'type' => 'EssenceSelect')
|
|
131
|
+
new_content.essence.value = content.ingredient
|
|
132
|
+
if new_content.essence.save
|
|
133
|
+
contents_found += 1
|
|
134
|
+
log "Converted #{content.name}'s essence_type into EssenceSelect"
|
|
135
|
+
content.destroy
|
|
136
|
+
else
|
|
137
|
+
log "Could not save essence: #{new_content.essence.errors.full_messages.join(', ')}", :error
|
|
138
|
+
end
|
|
139
|
+
else
|
|
140
|
+
log "Could not create content: #{new_content.errors.full_messages.join(', ')}", :error
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
if contents_found > 0
|
|
144
|
+
todo "Please open your elements.yml file and change all type values from these contents:\n\n#{content_names.join(', ')}\n\ninto EssenceSelect."
|
|
145
|
+
else
|
|
146
|
+
log "No EssenceTexts with display_as select setting found.", :skip
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def convert_essence_texts_displayed_as_checkbox_into_essence_booleans
|
|
151
|
+
desc "Converting EssenceTexts displayed as checkbox into EssenceBooleans"
|
|
152
|
+
contents_found = 0
|
|
153
|
+
elements = Alchemy::Element.descriptions.select { |e| e['contents'].present? && !e['contents'].detect { |c| c['settings'].present? && c['settings']['display_as'] == 'checkbox' }.nil? }
|
|
154
|
+
contents = elements.collect { |el| el['contents'] }.flatten.select { |c| c['settings'] && c['settings']['display_as'] == 'checkbox' }.flatten
|
|
155
|
+
content_names = contents.collect { |c| c['name'] }
|
|
156
|
+
Alchemy::Content.essence_texts.where(
|
|
157
|
+
:name => content_names,
|
|
158
|
+
:alchemy_elements => {:name => elements.collect { |e| e['name'] }}
|
|
159
|
+
).joins(:element).each do |content|
|
|
160
|
+
new_content = Alchemy::Content.new(:name => content.name, :element_id => content.element.id)
|
|
161
|
+
if new_content.create_essence!('name' => content.name, 'type' => 'EssenceBoolean')
|
|
162
|
+
new_content.essence.value = content.ingredient
|
|
163
|
+
if new_content.essence.save
|
|
164
|
+
contents_found += 1
|
|
165
|
+
log "Converted #{content.name}'s essence_type into EssenceBoolean"
|
|
166
|
+
content.destroy
|
|
167
|
+
else
|
|
168
|
+
log "Could not save essence: #{new_content.essence.errors.full_messages.join(', ')}", :error
|
|
169
|
+
end
|
|
170
|
+
else
|
|
171
|
+
log "Could not create content: #{new_content.errors.full_messages.join(', ')}", :error
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
if contents_found > 0
|
|
175
|
+
todo "Please open your elements.yml file and change all type values from these contents:\n\n#{content_names.join(', ')}\n\ninto EssenceBoolean."
|
|
176
|
+
else
|
|
177
|
+
log "No EssenceTexts with display_as checkbox setting found.", :skip
|
|
178
|
+
end
|
|
110
179
|
end
|
|
111
180
|
|
|
112
181
|
end
|
data/lib/alchemy/version.rb
CHANGED
data/lib/alchemy_cms.rb
CHANGED
|
@@ -10,6 +10,7 @@ if defined?(Rails) && Rails::VERSION::MAJOR == 3 && Rails::VERSION::MINOR == 2
|
|
|
10
10
|
require 'userstamp'
|
|
11
11
|
require 'yaml'
|
|
12
12
|
require 'sass-rails'
|
|
13
|
+
require 'coffee-rails'
|
|
13
14
|
require 'declarative_authorization'
|
|
14
15
|
require 'extensions/hash'
|
|
15
16
|
require 'extensions/array'
|
|
@@ -38,11 +38,23 @@ module Alchemy
|
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
describe "#clear" do
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
|
|
42
|
+
context "with elements as remarkable_type" do
|
|
43
|
+
it "should clear the elements clipboard" do
|
|
44
|
+
session[:clipboard][:elements] = {:id => element.id}
|
|
45
|
+
delete(:clear, {:remarkable_type => :elements, :format => :js})
|
|
46
|
+
session[:clipboard].should be_empty
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "with pages as remarkable_type" do
|
|
51
|
+
it "should clear the pages clipboard" do
|
|
52
|
+
session[:clipboard][:pages] = {:id => page.id}
|
|
53
|
+
delete(:clear, {:remarkable_type => :pages, :format => :js})
|
|
54
|
+
session[:clipboard].should be_empty
|
|
55
|
+
end
|
|
45
56
|
end
|
|
57
|
+
|
|
46
58
|
end
|
|
47
59
|
|
|
48
60
|
end
|
|
@@ -7,10 +7,27 @@ describe Alchemy::Admin::ContentsController do
|
|
|
7
7
|
Alchemy::UserSession.create FactoryGirl.create(:admin_user)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
describe '#create' do
|
|
11
|
+
|
|
12
|
+
let(:element) { FactoryGirl.create(:element, :name => 'headline') }
|
|
13
|
+
|
|
14
|
+
it "should create a content via ajax post" do
|
|
15
|
+
length_before = element.contents.length
|
|
16
|
+
post :create, {:content => {:element_id => element.id, :name => 'headline'}, :format => :js}
|
|
17
|
+
element.contents.reload
|
|
18
|
+
element.contents.length.should == length_before + 1
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '#update' do
|
|
24
|
+
|
|
25
|
+
it "should update a content via ajax" do
|
|
26
|
+
@element = FactoryGirl.create(:element)
|
|
27
|
+
post :update, {:id => @element.contents.find_by_name('intro').id, :content => {:body => 'Peters Petshop'}, :format => :js}
|
|
28
|
+
@element.ingredient('intro').should == "Peters Petshop"
|
|
29
|
+
end
|
|
30
|
+
|
|
14
31
|
end
|
|
15
32
|
|
|
16
33
|
describe "#order" do
|