alchemy_cms 2.1.11 → 2.1.12
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/Gemfile
CHANGED
@@ -18,8 +18,10 @@ group :assets do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
group :development do
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
if !ENV["CI"]
|
22
|
+
gem 'debugger', :platform => :ruby_19
|
23
|
+
gem 'ruby-debug', :platform => :ruby_18
|
24
|
+
gem 'guard-spork'
|
25
|
+
gem 'yard'
|
26
|
+
end
|
25
27
|
end
|
@@ -340,7 +340,7 @@ module Alchemy
|
|
340
340
|
:active => false,
|
341
341
|
:link_options => {},
|
342
342
|
:overlay_options => {},
|
343
|
-
:loading_indicator =>
|
343
|
+
:loading_indicator => true
|
344
344
|
}
|
345
345
|
options = defaults.merge(options)
|
346
346
|
button = content_tag('div', :class => 'button_with_label' + (options[:active] ? ' active' : '')) do
|
@@ -355,7 +355,7 @@ module Alchemy
|
|
355
355
|
}
|
356
356
|
)
|
357
357
|
else
|
358
|
-
link_to options[:url], {:class => "icon_button#{options[:loading_indicator] ?
|
358
|
+
link_to options[:url], {:class => "icon_button#{options[:loading_indicator] ? ' please_wait' : nil}", :title => options[:title]}.merge(options[:link_options]) do
|
359
359
|
render_icon(options[:icon])
|
360
360
|
end
|
361
361
|
end
|
data/lib/alchemy/essence.rb
CHANGED
@@ -5,13 +5,13 @@ module Alchemy #:nodoc:
|
|
5
5
|
def self.included(base)
|
6
6
|
base.extend(ClassMethods)
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
# Delivers various methods we need for Essences in Alchemy.
|
10
10
|
# To turn a model into an essence call acts_as_essence inside your model and you will get:
|
11
11
|
# * validations
|
12
12
|
# * several getters (ie: page, element, content, ingredient, preview_text)
|
13
13
|
module ClassMethods
|
14
|
-
|
14
|
+
|
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+)
|
@@ -24,64 +24,60 @@ module Alchemy #:nodoc:
|
|
24
24
|
ingredient_column = configuration[:ingredient_column].blank? ? 'body' : configuration[:ingredient_column]
|
25
25
|
preview_text_column = configuration[:preview_text_column].blank? ? ingredient_column : configuration[:preview_text_column]
|
26
26
|
validate_column = configuration[:validate_column].blank? ? ingredient_column : configuration[:validate_column]
|
27
|
-
|
27
|
+
|
28
28
|
class_eval <<-EOV
|
29
29
|
attr_accessor :validation_errors
|
30
30
|
include Alchemy::Essence::InstanceMethods
|
31
31
|
stampable
|
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
|
-
|
47
|
-
def ingredient
|
48
|
-
send('#{ingredient_column}')
|
49
|
-
end
|
50
|
-
|
46
|
+
|
51
47
|
def preview_text_column
|
52
48
|
'#{preview_text_column}'
|
53
49
|
end
|
54
|
-
|
50
|
+
|
55
51
|
def preview_text_method
|
56
52
|
'#{configuration[:preview_text_method]}'
|
57
53
|
end
|
58
|
-
|
54
|
+
|
59
55
|
EOV
|
60
56
|
end
|
61
|
-
|
57
|
+
|
62
58
|
end
|
63
|
-
|
59
|
+
|
64
60
|
module InstanceMethods
|
65
|
-
|
61
|
+
|
66
62
|
# Essence Validations:
|
67
|
-
#
|
63
|
+
#
|
68
64
|
# Essence validations can be set inside the config/elements.yml file.
|
69
65
|
# Currently supported validations are:
|
70
66
|
# * presence
|
71
67
|
# * format
|
72
68
|
# * uniqueness
|
73
|
-
#
|
69
|
+
#
|
74
70
|
# If you want to validate the format you must additionally pass validate_format_as or validate_format_with:
|
75
|
-
#
|
71
|
+
#
|
76
72
|
# * validate_format_with has to be regex
|
77
73
|
# * validate_format_as can be one of:
|
78
74
|
# ** url
|
79
75
|
# ** email
|
80
|
-
#
|
76
|
+
#
|
81
77
|
# Example:
|
82
|
-
#
|
78
|
+
#
|
83
79
|
# - name: person
|
84
|
-
# contents:
|
80
|
+
# contents:
|
85
81
|
# - name: name
|
86
82
|
# type: EssenceText
|
87
83
|
# validate: [presence]
|
@@ -93,7 +89,7 @@ module Alchemy #:nodoc:
|
|
93
89
|
# type: EssenceText
|
94
90
|
# validate: [format]
|
95
91
|
# validate_format_with: '^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$'
|
96
|
-
#
|
92
|
+
#
|
97
93
|
def essence_validations
|
98
94
|
self.validation_errors ||= []
|
99
95
|
return true if description.blank? || description['validate'].blank?
|
@@ -127,29 +123,36 @@ module Alchemy #:nodoc:
|
|
127
123
|
end
|
128
124
|
end
|
129
125
|
|
126
|
+
# Returns the value stored from the database column that is configured as ingredient column.
|
127
|
+
def ingredient
|
128
|
+
if self.respond_to?(ingredient_column)
|
129
|
+
self.send(ingredient_column)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
130
133
|
# Essence description from config/elements.yml
|
131
134
|
def description
|
132
135
|
return {} if element.nil? or element.content_descriptions.nil?
|
133
136
|
element.content_descriptions.detect { |c| c['name'] == self.content.name }
|
134
137
|
end
|
135
|
-
|
138
|
+
|
136
139
|
# Returns the Content Essence is in
|
137
140
|
def content
|
138
141
|
Alchemy::Content.find_by_essence_type_and_essence_id(acts_as_essence_class.to_s, self.id)
|
139
142
|
end
|
140
|
-
|
143
|
+
|
141
144
|
# Returns the Element Essence is in
|
142
145
|
def element
|
143
146
|
return nil if content.nil?
|
144
147
|
content.element
|
145
148
|
end
|
146
|
-
|
149
|
+
|
147
150
|
# Returns the Page Essence is on
|
148
151
|
def page
|
149
152
|
return nil if element.nil?
|
150
153
|
element.page
|
151
154
|
end
|
152
|
-
|
155
|
+
|
153
156
|
# Returns the first x (default 30) characters of ingredient for the Element#preview_text method.
|
154
157
|
def preview_text(maxlength = 30)
|
155
158
|
if preview_text_method.blank?
|
@@ -159,17 +162,17 @@ module Alchemy #:nodoc:
|
|
159
162
|
ingredient.send(preview_text_method).to_s[0..maxlength]
|
160
163
|
end
|
161
164
|
end
|
162
|
-
|
165
|
+
|
163
166
|
def open_link_in_new_window?
|
164
167
|
respond_to?(:link_target) && link_target == 'blank'
|
165
168
|
end
|
166
|
-
|
169
|
+
|
167
170
|
def partial_name
|
168
171
|
self.class.name.split('::').last.underscore
|
169
172
|
end
|
170
173
|
|
171
174
|
end
|
172
|
-
|
175
|
+
|
173
176
|
end
|
174
177
|
end
|
175
178
|
ActiveRecord::Base.class_eval { include Alchemy::Essence } if defined?(Alchemy::Essence)
|
data/lib/alchemy/version.rb
CHANGED
data/spec/models/element_spec.rb
CHANGED
@@ -48,7 +48,7 @@ describe Alchemy::Element do
|
|
48
48
|
|
49
49
|
it "should raise an error if no descriptions are found" do
|
50
50
|
FileUtils.mv(File.join(File.dirname(__FILE__), '..', '..', 'config', 'alchemy', 'elements.yml'), File.join(File.dirname(__FILE__), '..', '..', 'config', 'alchemy', 'elements.yml.bak'))
|
51
|
-
expect { Alchemy::Element.descriptions }.
|
51
|
+
expect { Alchemy::Element.descriptions }.to raise_error
|
52
52
|
FileUtils.mv(File.join(File.dirname(__FILE__), '..', '..', 'config', 'alchemy', 'elements.yml.bak'), File.join(File.dirname(__FILE__), '..', '..', 'config', 'alchemy', 'elements.yml'))
|
53
53
|
end
|
54
54
|
|
@@ -100,7 +100,7 @@ describe Alchemy::Element do
|
|
100
100
|
end
|
101
101
|
|
102
102
|
it "should raise error if all_for_page method has no page" do
|
103
|
-
expect { Alchemy::Element.all_for_page(nil) }.
|
103
|
+
expect { Alchemy::Element.all_for_page(nil) }.to raise_error(TypeError)
|
104
104
|
end
|
105
105
|
|
106
106
|
describe "#content_by_type" do
|
@@ -58,7 +58,7 @@ describe Alchemy::Language do
|
|
58
58
|
if !@default_language
|
59
59
|
@default_language = Factory(:language, :name => "default", :code => "aa", :frontpage_name => "intro", :default => true)
|
60
60
|
end
|
61
|
-
expect { @default_language.destroy }.
|
61
|
+
expect { @default_language.destroy }.to raise_error
|
62
62
|
end
|
63
63
|
|
64
64
|
describe "before save" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alchemy_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-
|
14
|
+
date: 2012-09-14 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
@@ -889,18 +889,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
889
889
|
- - ! '>='
|
890
890
|
- !ruby/object:Gem::Version
|
891
891
|
version: '0'
|
892
|
-
segments:
|
893
|
-
- 0
|
894
|
-
hash: 3542557089447580413
|
895
892
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
896
893
|
none: false
|
897
894
|
requirements:
|
898
895
|
- - ! '>='
|
899
896
|
- !ruby/object:Gem::Version
|
900
897
|
version: '0'
|
901
|
-
segments:
|
902
|
-
- 0
|
903
|
-
hash: 3542557089447580413
|
904
898
|
requirements:
|
905
899
|
- ImageMagick (libmagick), v6.6 or greater.
|
906
900
|
rubyforge_project:
|