alchemy_cms 2.5.1 → 2.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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