alchemy_cms 2.5.1 → 2.5.2

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.
@@ -38,7 +38,7 @@ POST_INSTALL
38
38
  s.add_runtime_dependency %q<awesome_nested_set>, ["~> 2.0"]
39
39
  s.add_runtime_dependency %q<acts-as-taggable-on>, ["~> 2.1"]
40
40
  s.add_runtime_dependency %q<declarative_authorization>, ["= 0.5.5"]
41
- s.add_runtime_dependency %q<dragonfly>, ["~> 0.9.12"]
41
+ s.add_runtime_dependency %q<dragonfly>, ["~> 0.9.14"]
42
42
  s.add_runtime_dependency %q<kaminari>, ["~> 0.13.0"]
43
43
  s.add_runtime_dependency %q<acts_as_ferret>, ["~> 0.5"]
44
44
  s.add_runtime_dependency %q<acts_as_list>, ["~> 0.1.9"]
@@ -46,7 +46,7 @@ POST_INSTALL
46
46
  s.add_runtime_dependency %q<dynamic_form>, ["~> 1.1"]
47
47
  s.add_runtime_dependency %q<jquery-rails>, ["~> 2.1.3"]
48
48
  s.add_runtime_dependency %q<jquery-ui-rails>, ["~> 3.0.1"]
49
- s.add_runtime_dependency %q<attachment_magic>, ["~> 0.2.1"]
49
+ s.add_runtime_dependency %q<attachment_magic>, [">= 0.2.1"]
50
50
  s.add_runtime_dependency %q<sass-rails>, ['~> 3.2.3']
51
51
  s.add_runtime_dependency %q<coffee-rails>, ['~> 3.2.1']
52
52
  s.add_runtime_dependency %q<compass-rails>, ['~> 1.0.3']
@@ -214,6 +214,7 @@ div.element_editor {
214
214
  position: relative;
215
215
  top: 2px;
216
216
  margin-right: 8px;
217
+ vertical-align: top;
217
218
  }
218
219
  }
219
220
 
@@ -3,7 +3,7 @@ module Alchemy
3
3
  class LayoutpagesController < Alchemy::Admin::BaseController
4
4
 
5
5
  def index
6
- @locked_pages = Page.all_locked_by(current_user)
6
+ @locked_pages = Page.from_current_site.all_locked_by(current_user)
7
7
  @layout_root = Page.find_or_create_layout_root_for(session[:language_id])
8
8
  @languages = Language.all
9
9
  end
@@ -83,7 +83,7 @@ module Alchemy
83
83
  redirect_to admin_pages_path
84
84
  else
85
85
  @page.lock(current_user)
86
- @locked_pages = Page.from_current_site.from_current_site.all_locked_by(current_user)
86
+ @locked_pages = Page.from_current_site.all_locked_by(current_user)
87
87
  end
88
88
  @layoutpage = @page.layoutpage?
89
89
  end
@@ -178,8 +178,7 @@ module Alchemy
178
178
  # Sets the page public and sweeps the page cache
179
179
  def publish
180
180
  # fetching page via before filter
181
- @page.public = true
182
- @page.save
181
+ @page.publish!
183
182
  flash[:notice] = _t("page_published", :name => @page.name)
184
183
  redirect_back_or_to_default(admin_pages_path)
185
184
  end
@@ -11,56 +11,23 @@ module Alchemy
11
11
  filter_access_to :thumbnail
12
12
 
13
13
  def show
14
- image_file = @picture.image_file
15
-
16
- if image_file.nil?
17
- raise MissingImageFileError, "Missing image file for #{@picture.inspect}"
18
- end
19
-
20
- upsample = params[:upsample] == 'true'
21
- crop_from = normalized_size(params[:crop_from])
22
- crop_size = params[:crop_size]
23
- size = params[:size]
24
-
25
- if params[:crop_size].present? && params[:crop_from].present?
26
- crop_from = params[:crop_from].split('x')
27
- image_file = image_file.process(:thumb, "#{params[:crop_size]}+#{crop_from[0]}+#{crop_from[1]}")
28
- elsif params[:crop] == 'crop' && size.present?
29
- image_file = image_file.process(:thumb, "#{size}#")
30
- end
31
-
32
- if size.present?
33
- image_file = image_file.process(:resize, size + '>')
34
- end
14
+ @size = params[:size]
35
15
 
36
16
  expires_in 1.month, public: !@picture.restricted?
37
- respond_to { |format| send_image(image_file, format) }
17
+ respond_to { |format| send_image(processed_image, format) }
38
18
  end
39
19
 
40
20
  def thumbnail
41
- image_file = @picture.image_file
42
-
43
21
  case params[:size]
44
- when "small" then size = "80x60"
45
- when "medium" then size = "160x120"
46
- when "large" then size = "240x180"
47
- when nil then size = "111x93"
22
+ when "small" then @size = "80x60"
23
+ when "medium" then @size = "160x120"
24
+ when "large" then @size = "240x180"
25
+ when nil then @size = "111x93"
48
26
  else
49
- size = params[:size]
50
- end
51
-
52
- if params[:crop_size].present? && params[:crop_from].present?
53
- crop_from = params[:crop_from].split('x')
54
- image_file = image_file.process(:thumb, "#{params[:crop_size]}+#{crop_from[0]}+#{crop_from[1]}")
55
- elsif params[:crop] == 'crop' && size.present?
56
- image_file = image_file.process(:thumb, "#{size}#")
27
+ @size = params[:size]
57
28
  end
58
29
 
59
- if size.present?
60
- image_file = image_file.process(:resize, size + '>')
61
- end
62
-
63
- respond_to { |format| send_image(image_file, format) }
30
+ respond_to { |format| send_image(processed_image, format) }
64
31
  end
65
32
 
66
33
  def zoom
@@ -106,5 +73,35 @@ module Alchemy
106
73
  end
107
74
  end
108
75
 
76
+ # Return the processed image dependent of size and cropping parameters
77
+ def processed_image
78
+ image_file = @picture.image_file
79
+ if image_file.nil?
80
+ raise MissingImageFileError, "Missing image file for #{@picture.inspect}"
81
+ end
82
+ if params[:crop_size].present? && params[:crop_from].present?
83
+ crop_from = params[:crop_from].split('x')
84
+ image_file = image_file.process(:thumb, "#{params[:crop_size]}+#{crop_from[0]}+#{crop_from[1]}")
85
+ image_file.process(:resize, @size + '>')
86
+ elsif params[:crop] == 'crop' && @size.present?
87
+ width, height = @size.split('x').collect(&:to_i)
88
+ # prevent upscaling unless :upsample param is true
89
+ # unfurtunally dragonfly does not handle this correctly while cropping
90
+ unless params[:upsample] == 'true'
91
+ if width > image_file.width
92
+ width = image_file.width
93
+ end
94
+ if height > image_file.height
95
+ height = image_file.height
96
+ end
97
+ end
98
+ image_file.process(:resize_and_crop, :width => width, :height => height, :gravity => 'c')
99
+ elsif @size.present?
100
+ image_file.process(:resize, "#{@size}>")
101
+ else
102
+ image_file
103
+ end
104
+ end
105
+
109
106
  end
110
107
  end
@@ -44,11 +44,11 @@ module Alchemy
44
44
  options = default_options.merge(options)
45
45
  if multi_language?
46
46
  language_links = []
47
- pages = (options[:link_to_public_child] == true) ? Page.language_roots : Page.public_language_roots
47
+ pages = (options[:link_to_public_child] == true) ? Page.from_current_site.language_roots : Page.from_current_site.public_language_roots
48
48
  return nil if (pages.blank? || pages.length == 1)
49
49
  pages.each_with_index do |page, i|
50
50
  if (options[:link_to_page_with_layout] != nil)
51
- page_found_by_layout = Page.where(:page_layout => options[:link_to_page_with_layout].to_s, :language_id => page.language_id).first
51
+ page_found_by_layout = Page.from_current_site.where(:page_layout => options[:link_to_page_with_layout].to_s, :language_id => page.language_id).first
52
52
  end
53
53
  page = page_found_by_layout || page
54
54
  page = (options[:link_to_public_child] ? (page.first_public_child.blank? ? nil : page.first_public_child) : nil) if !page.public?
@@ -45,7 +45,7 @@ module Alchemy
45
45
  scope :not_in_cell, where(:cell_id => nil)
46
46
  scope :in_cell, where("#{self.table_name}.cell_id IS NOT NULL")
47
47
  # Scope for only the elements from Alchemy::Site.current
48
- scope :from_current_site, lambda { where(:alchemy_languages => {site_id: Site.current}).joins(:page => :language) }
48
+ scope :from_current_site, lambda { where(:alchemy_languages => {site_id: Site.current || Site.default}).joins(:page => :language) }
49
49
  # TODO: add this as default_scope
50
50
  #default_scope { from_current_site }
51
51
 
@@ -73,7 +73,7 @@ module Alchemy
73
73
  after_create :autogenerate_elements, :unless => proc { |page| page.systempage? || page.do_not_autogenerate }
74
74
  after_update :trash_not_allowed_elements, :if => :page_layout_changed?
75
75
  after_update :autogenerate_elements, :if => :page_layout_changed?
76
- after_update :create_legacy_url, :if => :urlname_changed?
76
+ after_update :create_legacy_url, :if => proc { |page| page.urlname_changed? && !page.redirects_to_external? }
77
77
  after_destroy { elements.each {|el| el.destroy unless el.trashed? } }
78
78
 
79
79
  scope :language_roots, where(:language_root => true)
@@ -97,7 +97,7 @@ module Alchemy
97
97
  scope :flushables, not_locked.published.contentpages
98
98
  scope :searchables, not_restricted.published.contentpages
99
99
  # Scope for only the pages from Alchemy::Site.current
100
- scope :from_current_site, lambda { where(:alchemy_languages => {site_id: Site.current}).joins(:language) }
100
+ scope :from_current_site, lambda { where(:alchemy_languages => {site_id: Site.current || Site.default}).joins(:language) }
101
101
  # TODO: add this as default_scope
102
102
  #default_scope { from_current_site }
103
103
 
@@ -541,19 +541,23 @@ module Alchemy
541
541
  rootpage? || (self.parent_id == Page.root.id && !self.language_root?)
542
542
  end
543
543
 
544
+ # Overwrites the cache_key method so it uses the published_at attribute instead of updated_at.
544
545
  def cache_key(request = nil)
545
- if timestamp = updated_at
546
- timestamp = timestamp.utc.to_s(:number)
547
- "alchemy/pages/#{id}-#{timestamp}"
548
- else
549
- "alchemy/pages/#{id}"
550
- end
546
+ "alchemy/pages/#{id}"
551
547
  end
552
548
 
553
549
  def taggable?
554
550
  definition['taggable'] == true
555
551
  end
556
552
 
553
+ # Publishes the page
554
+ #
555
+ # Sets public true and saves the object.
556
+ def publish!
557
+ self.public = true
558
+ self.save
559
+ end
560
+
557
561
  private
558
562
 
559
563
  def next_or_previous(direction = :next, options = {})
@@ -1,9 +1,9 @@
1
1
  <%-
2
2
  prefix = "<div class=\"assign_file_file_icon\">"
3
- suffix = "</div><div class=\"assign_file_file_name\">#{file_to_assign.filename}</div>"
3
+ suffix = "</div><div class=\"assign_file_file_name\">#{file_to_assign.file_name}</div>"
4
4
  -%>
5
5
  <%- img_tag = "#{prefix}#{render_icon(file_to_assign.icon_css_class)}#{suffix}".html_safe -%>
6
- <li class="assign_file_file <%= cycle('even', 'odd') %>" name="<%= file_to_assign.filename %>">
6
+ <li class="assign_file_file <%= cycle('even', 'odd') %>" name="<%= file_to_assign.file_name %>">
7
7
  <%= link_to(
8
8
  img_tag,
9
9
  {
@@ -15,6 +15,6 @@
15
15
  },
16
16
  :remote => true,
17
17
  :method => 'put',
18
- :title => file_to_assign.filename
18
+ :title => file_to_assign.file_name
19
19
  ) %>
20
20
  </li>
@@ -5,5 +5,5 @@
5
5
  :name => content.essence.attachment.urlname
6
6
  ),
7
7
  :class => "file_link #{content.essence.css_class.blank? ? "" : content.essence.css_class}",
8
- :title => "#{content.essence.title.blank? ? content.essence.attachment.filename : content.essence.title}"
8
+ :title => "#{content.essence.title.blank? ? content.essence.attachment.file_name : content.essence.title}"
9
9
  ) if content.essence.attachment %>
@@ -255,6 +255,7 @@ de:
255
255
  "No Tags found": "Keine Tags gefunden"
256
256
  "None": "keine"
257
257
  "Open Link in": "Link öffnen in"
258
+ "Page": "Seite"
258
259
  "Page deleted": "%{name} wurde gelöscht"
259
260
  "Page saved": "%{name} wurde gespeichert"
260
261
  "Page Preview": "Seitenvorschau"
@@ -81,6 +81,9 @@ module Alchemy
81
81
  :host => '*'
82
82
  )
83
83
  if site.new_record?
84
+ if Alchemy::Language.any?
85
+ site.languages = Alchemy::Language.all
86
+ end
84
87
  site.save!
85
88
  log "Created default site with default language."
86
89
  else
@@ -11,6 +11,7 @@ module Alchemy
11
11
  Rake::Task['alchemy:install:migrations'].invoke
12
12
  strip_alchemy_from_schema_version_table
13
13
  Rake::Task['db:migrate'].invoke
14
+ Seeder.seed!
14
15
  upgrade_to_language
15
16
  upgrade_layoutpages
16
17
  upgrade_essence_link_target_default
@@ -18,9 +19,9 @@ module Alchemy
18
19
  convert_essence_texts_displayed_as_select_into_essence_selects
19
20
  convert_essence_texts_displayed_as_checkbox_into_essence_booleans
20
21
  copy_new_config_file
22
+ gallery_pictures_change_notice
21
23
  removed_richmedia_essences_notice
22
24
  convert_picture_storage
23
- upgrade_to_sites
24
25
  removed_standard_set_notice
25
26
  renamed_t_method
26
27
  migrated_to_devise
@@ -30,20 +31,6 @@ module Alchemy
30
31
 
31
32
  private
32
33
 
33
- def upgrade_to_sites
34
- desc "Creating default site and migrating existing languages to it"
35
- if Site.count == 0
36
- Alchemy::Site.transaction do
37
- site = Alchemy::Site.new(host: '*', name: 'Default Site')
38
- site.languages << Alchemy::Language.all
39
- site.save!
40
- log "Done."
41
- end
42
- else
43
- log "Site(s) already present.", :skip
44
- end
45
- end
46
-
47
34
  # Creates Language model if it does not exist (Alchemy CMS prior v1.5)
48
35
  # Also creates missing associations between pages and languages
49
36
  def upgrade_to_language
@@ -51,7 +38,7 @@ module Alchemy
51
38
  Alchemy::Page.all.each do |page|
52
39
  if !page.language_code.blank? && page.language.nil?
53
40
  root = page.get_language_root
54
- lang = Alchemy::Language.find_or_create_by_code(
41
+ lang = Alchemy::Language.find_or_create_by_language_code(
55
42
  :name => page.language_code.capitalize,
56
43
  :code => page.language_code,
57
44
  :frontpage_name => root.name,
@@ -214,6 +201,17 @@ module Alchemy
214
201
  end
215
202
  end
216
203
 
204
+ def gallery_pictures_change_notice
205
+ txt = ["We have changed the way Alchemy handles EssencePictures in elements."]
206
+ txt << "It is now possible to have single EssencePictures and galleries side by side in the same element."
207
+ txt << "All element editor views containing render_picture_editor with option `maximum_amount_of_images => 1` must be changed into render_essence_editor_by_name."
208
+ txt << "In the yml description of these elements add a new content for this picture."
209
+ txt << "\nIn order to upgrade your elements in the database run:"
210
+ txt << "\nrails g alchemy:gallery_pictures_migration\n"
211
+ txt << "and alter `db/seeds.rb`, so that it contains all elements that have essence pictures."
212
+ todo txt.join("\n")
213
+ end
214
+
217
215
  def removed_richmedia_essences_notice
218
216
  warn = <<-WARN
219
217
  We removed the EssenceAudio, EssenceFlash and EssenceVideo essences from Alchemy core!
@@ -1,6 +1,6 @@
1
1
  module Alchemy
2
2
 
3
- VERSION = "2.5.1"
3
+ VERSION = "2.5.2"
4
4
 
5
5
  def self.version
6
6
  VERSION
@@ -0,0 +1,40 @@
1
+ require 'rails'
2
+
3
+ module Alchemy
4
+ module Generators
5
+ class GalleryPicturesMigrationGenerator < ::Rails::Generators::Base
6
+ desc "This generator generates a script to update your elements to gallery pictures."
7
+ source_root File.expand_path('templates', File.dirname(__FILE__))
8
+
9
+ def append_into_seeds
10
+ append_file Rails.root.join("db/seeds.rb") do
11
+ <<-BLAH
12
+
13
+ module Alchemy
14
+
15
+ # Add all element names that contain a single picture.
16
+ Element.named(["picture", "background"]).each do |element|
17
+ element.contents.essence_pictures.each do |content|
18
+ content.update_column(:name, "image")
19
+ end
20
+ end
21
+
22
+ # Add all element names that contain a picture gallery.
23
+ Element.named(["gallery", "slides"]).each do |element|
24
+ element.contents.essence_pictures.each_with_index do |content, i|
25
+ content.update_column(:name, "essence_picture_#\{i+1\}")
26
+ end
27
+ end
28
+
29
+ end
30
+ BLAH
31
+ end
32
+ end
33
+
34
+ def display_todo
35
+ say "\nNow please alter `db/seeds.rb` so that it contains the elements you want to convert.\n"
36
+ end
37
+
38
+ end
39
+ end
40
+ end
@@ -121,5 +121,20 @@ module Alchemy
121
121
 
122
122
  end
123
123
 
124
+ describe '#publish' do
125
+
126
+ let(:page) { stub_model(Page, published_at: nil, public: false, name: "page", parent_id: 1, urlname: "page", language: stub_model(Language), page_layout: "bla") }
127
+ before do
128
+ @controller.stub!(:load_page).and_return(page)
129
+ @controller.instance_variable_set("@page", page)
130
+ end
131
+
132
+ it "should publish the page" do
133
+ page.should_receive(:publish!)
134
+ post :publish, { id: page.id }
135
+ end
136
+
137
+ end
138
+
124
139
  end
125
140
  end
@@ -67,18 +67,50 @@ module Alchemy
67
67
  end
68
68
  end
69
69
 
70
- context "Requesting a picture with crop and size parameters" do
71
- it "should render a cropped image" do
72
- options = {
73
- :crop => 'crop',
74
- :size => '10x10',
75
- :format => 'png'
76
- }
77
- get :show, options.merge(:id => picture.id, :sh => picture.security_token(options))
78
- response.body[0x10..0x18].unpack('NN').should == [10,10]
70
+ describe 'Picture processing' do
71
+
72
+ context "with crop and size parameters" do
73
+
74
+ let(:big_picture) { Picture.create(:image_file => fixture_file_upload(File.expand_path('../../support/80x60.png', __FILE__), 'image/png')) }
75
+
76
+ it "should return a cropped image." do
77
+ options = {
78
+ :crop => 'crop',
79
+ :size => '10x10',
80
+ :format => 'png'
81
+ }
82
+ get :show, options.merge(:id => big_picture.id, :sh => big_picture.security_token(options))
83
+ response.body[0x10..0x18].unpack('NN').should == [10,10]
84
+ end
85
+
86
+ context "without upsample parameter" do
87
+ it "should not upsample the image." do
88
+ options = {
89
+ :crop => 'crop',
90
+ :size => '10x10',
91
+ :format => 'png'
92
+ }
93
+ get :show, options.merge(:id => picture.id, :sh => picture.security_token(options))
94
+ response.body[0x10..0x18].unpack('NN').should == [1,1]
95
+ end
96
+ end
97
+
98
+ context "and with upsample true" do
99
+ it "should return an upsampled image." do
100
+ options = {
101
+ :crop => 'crop',
102
+ :size => '10x10',
103
+ :upsample => 'true',
104
+ :format => 'png'
105
+ }
106
+ get :show, options.merge(:id => picture.id, :sh => picture.security_token(options))
107
+ response.body[0x10..0x18].unpack('NN').should == [10,10]
108
+ end
109
+ end
110
+
79
111
  end
80
- end
81
112
 
113
+ end
82
114
 
83
115
  end
84
116
  end
@@ -24,3 +24,7 @@
24
24
  elements: [headline, text, searchresult]
25
25
  autogenerate: [searchresult]
26
26
  searchresults: true
27
+
28
+ - name: external
29
+ unique: false
30
+ redirects_to_external: true
@@ -161,20 +161,31 @@ module Alchemy
161
161
  end
162
162
 
163
163
  context "urlname has changed" do
164
- it "should store legacy url" do
164
+
165
+ it "should store legacy url if page is not redirect to external page" do
165
166
  page.urlname = 'new-urlname'
166
167
  page.save!
167
168
  page.legacy_urls.should_not be_empty
168
169
  page.legacy_urls.first.urlname.should == 'my-testpage'
169
170
  end
171
+
172
+ it "should not store legacy url if page is redirect to external page" do
173
+ page.urlname = 'new-urlname'
174
+ page.page_layout = "external"
175
+ page.save!
176
+ page.legacy_urls.should be_empty
177
+ end
178
+
170
179
  end
171
180
 
172
181
  context "urlname has not changed" do
182
+
173
183
  it "should not store a legacy url" do
174
184
  page.urlname = 'my-testpage'
175
185
  page.save!
176
186
  page.legacy_urls.should be_empty
177
187
  end
188
+
178
189
  end
179
190
 
180
191
  end
@@ -681,7 +692,7 @@ module Alchemy
681
692
  end
682
693
 
683
694
  describe '.copy' do
684
- let (:page) { FactoryGirl.create(:page, :name => 'Source') }
695
+ let(:page) { FactoryGirl.create(:page, :name => 'Source') }
685
696
  subject { Page.copy(page) }
686
697
 
687
698
  it "the copy should have added (copy) to name" do
@@ -745,5 +756,20 @@ module Alchemy
745
756
  end
746
757
  end
747
758
 
759
+ describe "#cache_key" do
760
+ let(:page) { stub_model(Page) }
761
+ subject { page }
762
+ its(:cache_key) { should match(page.id.to_s) }
763
+ end
764
+
765
+ describe "#publish!" do
766
+ let(:page) { stub_model(Page, public: false, name: "page", parent_id: 1, urlname: "page", language: stub_model(Language), page_layout: "bla") }
767
+ before { page.publish! }
768
+
769
+ it "sets public attribute to true" do
770
+ page.public.should == true
771
+ end
772
+ end
773
+
748
774
  end
749
775
  end
Binary file
Binary file
Binary file
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.5.1
4
+ version: 2.5.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2013-02-18 00:00:00.000000000 Z
16
+ date: 2013-03-12 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: rails
@@ -118,7 +118,7 @@ dependencies:
118
118
  requirements:
119
119
  - - ~>
120
120
  - !ruby/object:Gem::Version
121
- version: 0.9.12
121
+ version: 0.9.14
122
122
  type: :runtime
123
123
  prerelease: false
124
124
  version_requirements: !ruby/object:Gem::Requirement
@@ -126,7 +126,7 @@ dependencies:
126
126
  requirements:
127
127
  - - ~>
128
128
  - !ruby/object:Gem::Version
129
- version: 0.9.12
129
+ version: 0.9.14
130
130
  - !ruby/object:Gem::Dependency
131
131
  name: kaminari
132
132
  requirement: !ruby/object:Gem::Requirement
@@ -244,7 +244,7 @@ dependencies:
244
244
  requirement: !ruby/object:Gem::Requirement
245
245
  none: false
246
246
  requirements:
247
- - - ~>
247
+ - - ! '>='
248
248
  - !ruby/object:Gem::Version
249
249
  version: 0.2.1
250
250
  type: :runtime
@@ -252,7 +252,7 @@ dependencies:
252
252
  version_requirements: !ruby/object:Gem::Requirement
253
253
  none: false
254
254
  requirements:
255
- - - ~>
255
+ - - ! '>='
256
256
  - !ruby/object:Gem::Version
257
257
  version: 0.2.1
258
258
  - !ruby/object:Gem::Dependency
@@ -859,6 +859,7 @@ files:
859
859
  - lib/rails/generators/alchemy/essence/essence_generator.rb
860
860
  - lib/rails/generators/alchemy/essence/templates/editor.html.erb
861
861
  - lib/rails/generators/alchemy/essence/templates/view.html.erb
862
+ - lib/rails/generators/alchemy/gallery_pictures_migration/gallery_pictures_migration_generator.rb
862
863
  - lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb
863
864
  - lib/rails/generators/alchemy/page_layouts/templates/layout.html.erb
864
865
  - lib/rails/generators/alchemy/page_layouts/templates/layout.html.haml
@@ -993,6 +994,7 @@ files:
993
994
  - spec/models/user_spec.rb
994
995
  - spec/routing_spec.rb
995
996
  - spec/spec_helper.rb
997
+ - spec/support/80x60.png
996
998
  - spec/support/alchemy/controller_hacks.rb
997
999
  - spec/support/alchemy/specs_helpers.rb
998
1000
  - spec/support/alchemy/test_tweaks.rb
@@ -1129,7 +1131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1129
1131
  version: '0'
1130
1132
  segments:
1131
1133
  - 0
1132
- hash: 1217136868404784011
1134
+ hash: -107875823720288269
1133
1135
  requirements:
1134
1136
  - ImageMagick (libmagick), v6.6 or greater.
1135
1137
  rubyforge_project:
@@ -1258,6 +1260,7 @@ test_files:
1258
1260
  - spec/models/user_spec.rb
1259
1261
  - spec/routing_spec.rb
1260
1262
  - spec/spec_helper.rb
1263
+ - spec/support/80x60.png
1261
1264
  - spec/support/alchemy/controller_hacks.rb
1262
1265
  - spec/support/alchemy/specs_helpers.rb
1263
1266
  - spec/support/alchemy/test_tweaks.rb