refinerycms-image_rotators 0.1.0
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/app/controllers/admin/image_rotator_images_controller.rb +26 -0
- data/app/controllers/admin/image_rotators_controller.rb +7 -0
- data/app/models/image_rotator.rb +13 -0
- data/app/models/image_rotator_image.rb +13 -0
- data/app/views/admin/image_rotator_images/_form.html.erb +33 -0
- data/app/views/admin/image_rotator_images/_image_rotator_image.html.erb +15 -0
- data/app/views/admin/image_rotator_images/_sortable_list.html.erb +4 -0
- data/app/views/admin/image_rotator_images/edit.html.erb +1 -0
- data/app/views/admin/image_rotator_images/new.html.erb +1 -0
- data/app/views/admin/image_rotators/_form.html.erb +29 -0
- data/app/views/admin/image_rotators/_image_rotator.html.erb +15 -0
- data/app/views/admin/image_rotators/_sortable_list.html.erb +4 -0
- data/app/views/admin/image_rotators/edit.html.erb +57 -0
- data/app/views/admin/image_rotators/index.html.erb +47 -0
- data/app/views/admin/image_rotators/new.html.erb +1 -0
- data/config/locales/en.yml +34 -0
- data/config/locales/nb.yml +19 -0
- data/config/locales/nl.yml +19 -0
- data/config/routes.rb +11 -0
- data/lib/gemspec.rb +27 -0
- data/lib/generators/refinerycms_image_rotators_generator.rb +71 -0
- data/lib/generators/templates/db/migrate/create_image_rotators.rb +35 -0
- data/lib/generators/templates/db/seeds/image_rotators.rb +4 -0
- data/lib/generators/templates/public/images/arrows.png +0 -0
- data/lib/generators/templates/public/images/bullets.png +0 -0
- data/lib/generators/templates/public/images/loading.gif +0 -0
- data/lib/generators/templates/public/javascripts/jquery.image-rotators.js +12 -0
- data/lib/generators/templates/public/javascripts/refinery/admin.js +1011 -0
- data/lib/generators/templates/public/stylesheets/image-rotators.css +138 -0
- data/lib/image_rotators.rb +7 -0
- data/lib/refinerycms-image_rotators.rb +20 -0
- data/lib/tasks/image_rotators.rake +13 -0
- data/readme.md +10 -0
- metadata +99 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
class Admin::ImageRotatorImagesController < Admin::BaseController
|
2
|
+
|
3
|
+
before_filter :find_image_rotator
|
4
|
+
|
5
|
+
crudify :image_rotator_image,
|
6
|
+
:title_attribute => 'image.title',
|
7
|
+
:sortable => false,
|
8
|
+
:redirect_to_url => 'admin_image_rotators_path'
|
9
|
+
|
10
|
+
def update_positions
|
11
|
+
0.upto((newlist ||= params[:ul]).length - 1) do |index|
|
12
|
+
hash = newlist[index.to_s]
|
13
|
+
moved_item_id = hash['id'].split(/image_rotator_image_/)
|
14
|
+
image = ImageRotatorImage.find_by_id(moved_item_id)
|
15
|
+
image.insert_at(index + 1)
|
16
|
+
end
|
17
|
+
|
18
|
+
render :nothing => true
|
19
|
+
end
|
20
|
+
|
21
|
+
def find_image_rotator
|
22
|
+
@image_rotator = ImageRotator.find(params[:image_rotator_id])
|
23
|
+
end
|
24
|
+
private :find_image_rotator
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class ImageRotator < ActiveRecord::Base
|
2
|
+
|
3
|
+
has_many :images, :class_name => 'ImageRotatorImage'
|
4
|
+
|
5
|
+
validates :title, :presence => true
|
6
|
+
validates :height, :presence => true
|
7
|
+
validates :width, :presence => true
|
8
|
+
|
9
|
+
has_friendly_id :title, :use_slug => true
|
10
|
+
|
11
|
+
alias_attribute :to_s, :title
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<% form_for [:admin, @image_rotator, @image_rotator_image] do |f| -%>
|
2
|
+
<%= render :partial => "/shared/admin/error_messages", :locals => {
|
3
|
+
:object => @image_rotator_image,
|
4
|
+
:include_object_name => true
|
5
|
+
} %>
|
6
|
+
|
7
|
+
<%= f.hidden_field :image_rotator_id, :value => @image_rotator.id %>
|
8
|
+
|
9
|
+
<div class='field'>
|
10
|
+
<%= f.label :image -%>
|
11
|
+
<%= render :partial => "/shared/admin/image_picker", :locals => {
|
12
|
+
:f => f,
|
13
|
+
:field => :image_id,
|
14
|
+
:image => @image_rotator_image.image,
|
15
|
+
:toggle_image_display => false
|
16
|
+
} %>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<div class='field'>
|
20
|
+
<%= f.label :url -%>
|
21
|
+
<%= f.text_field :url %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<%= render :partial => "/shared/admin/form_actions",
|
25
|
+
:locals => {
|
26
|
+
:f => f,
|
27
|
+
:cancel_url => [:edit, :admin, @image_rotator],
|
28
|
+
:delete_url => [:admin, @image_rotator, @image_rotator_image],
|
29
|
+
:continue_editing => false,
|
30
|
+
:delete_title => t('admin.image_rotators.image_rotator_image.delete'),
|
31
|
+
:delete_confirmation => t('shared.admin.delete.message', :title => @image_rotator_image.image.try(:title))
|
32
|
+
} %>
|
33
|
+
<% end -%>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(image_rotator_image) -%>">
|
2
|
+
<span class='title'>
|
3
|
+
<%= image_fu image_rotator_image.image, '225x255>', :class => "brown_border" %>
|
4
|
+
<span class="preview"> </span>
|
5
|
+
</span>
|
6
|
+
<span class='actions'>
|
7
|
+
<%= link_to refinery_icon_tag("application_edit.png"), [:edit, :admin, @image_rotator, image_rotator_image],
|
8
|
+
:title => t('.edit') %>
|
9
|
+
<%= link_to refinery_icon_tag("delete.png"), admin_image_rotator_image_rotator_image_path(image_rotator_image.image_rotator, image_rotator_image),
|
10
|
+
:class => "cancel confirm-delete",
|
11
|
+
:title => t('.delete'),
|
12
|
+
:'data-confirm' => t('shared.admin.delete.message', :title => image_rotator_image.image.title),
|
13
|
+
:'data-method' => :delete %>
|
14
|
+
</span>
|
15
|
+
</li>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<ul id='sortable_list'>
|
2
|
+
<%= render :partial => '/admin/image_rotator_images/image_rotator_image', :collection => @image_rotator.images %>
|
3
|
+
</ul>
|
4
|
+
<%= render :partial => "/shared/admin/sortable_list", :locals => {:continue_reordering => (defined?(continue_reordering) ? continue_reordering : true)} %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render :partial => "form" %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render :partial => "form" %>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<% form_for [:admin, @image_rotator] do |f| -%>
|
2
|
+
<%= render :partial => "/shared/admin/error_messages", :locals => {
|
3
|
+
:object => @image_rotator,
|
4
|
+
:include_object_name => true
|
5
|
+
} %>
|
6
|
+
|
7
|
+
<div class='field'>
|
8
|
+
<%= f.label :title -%>
|
9
|
+
<%= f.text_field :title -%>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class='field'>
|
13
|
+
<%= f.label :height, 'Height of all images' -%>
|
14
|
+
<%= f.text_field :height, :value => '240px' -%>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class='field'>
|
18
|
+
<%= f.label :width, 'Width of all images' -%>
|
19
|
+
<%= f.text_field :width, :value => '725px' -%>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<%= render :partial => "/shared/admin/form_actions",
|
23
|
+
:locals => {
|
24
|
+
:f => f,
|
25
|
+
:continue_editing => false,
|
26
|
+
:delete_title => t('admin.image_rotators.image_rotator.delete'),
|
27
|
+
:delete_confirmation => t('shared.admin.delete.message')
|
28
|
+
} %>
|
29
|
+
<% end -%>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(image_rotator) -%>">
|
2
|
+
<span class='title'>
|
3
|
+
<%= image_rotator %>
|
4
|
+
<span class="preview"> </span>
|
5
|
+
</span>
|
6
|
+
<span class='actions'>
|
7
|
+
<%= link_to refinery_icon_tag("application_edit.png"), edit_admin_image_rotator_path(image_rotator),
|
8
|
+
:title => t('.edit') %>
|
9
|
+
<%= link_to refinery_icon_tag("delete.png"), admin_image_rotator_path(image_rotator),
|
10
|
+
:class => "cancel confirm-delete",
|
11
|
+
:title => t('.delete'),
|
12
|
+
:'data-confirm' => t('shared.admin.delete.message'),
|
13
|
+
:'data-method' => :delete %>
|
14
|
+
</span>
|
15
|
+
</li>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<%= render :partial => "form" %>
|
2
|
+
|
3
|
+
<div id="actions">
|
4
|
+
<ul>
|
5
|
+
<li>
|
6
|
+
<%= link_to t('.add_image'), new_admin_image_rotator_image_rotator_image_url(@image_rotator),
|
7
|
+
:class => "add_icon" %>
|
8
|
+
</li>
|
9
|
+
<% if @image_rotator.images.count > 1 %>
|
10
|
+
<li>
|
11
|
+
<%= link_to t('.reorder', :what => "Image Rotators"),
|
12
|
+
[:admin, @image_rotator, :image_rotator_images],
|
13
|
+
:id => "reorder_action",
|
14
|
+
:class => "reorder_icon" %>
|
15
|
+
|
16
|
+
<%= link_to t('.reorder_done', :what => "Image Rotators"),
|
17
|
+
[:admin, @image_rotator, :image_rotator_images],
|
18
|
+
:id => "reorder_action_done",
|
19
|
+
:style => "display: none;",
|
20
|
+
:class => "reorder_icon" %>
|
21
|
+
</li>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<div id='records'>
|
26
|
+
<% if @image_rotator.images.any? %>
|
27
|
+
<%= render :partial => "/admin/image_rotator_images/sortable_list" %>
|
28
|
+
<label>To use this image rotator, embed the following code into the desired page:</label>
|
29
|
+
<pre style="overflow-x: auto;"><code>
|
30
|
+
<div class="image-rotator" style="height:<%= @image_rotator.height %>;width:<%= @image_rotator.width %>;">
|
31
|
+
<% @image_rotator.images.each do |image| %>
|
32
|
+
<a href="<%= image.url %>"><img src="<%= image.image.url %>" alt="<%= image.image.title %>" />
|
33
|
+
<% end %>
|
34
|
+
</div>
|
35
|
+
</code></pre>
|
36
|
+
<% else %>
|
37
|
+
<p>
|
38
|
+
<strong>
|
39
|
+
<%= t('.no_items_yet') %>
|
40
|
+
</strong>
|
41
|
+
</p>
|
42
|
+
<% end %>
|
43
|
+
</div>
|
44
|
+
<% if @image_rotator.images.count > 1 %>
|
45
|
+
<% content_for :head_after_javascript_libraries,
|
46
|
+
javascript_include_tag('refinery/serializelist.js') -%>
|
47
|
+
<% content_for :head do %>
|
48
|
+
<script type='text/javascript'>
|
49
|
+
$(document).ready(function(){
|
50
|
+
list_reorder.update_url = '<%= update_positions_admin_image_rotator_image_rotator_images_path(@image_rotator) %>';
|
51
|
+
list_reorder.sortable_list = $('#sortable_list');
|
52
|
+
list_reorder.tree = false;
|
53
|
+
list_reorder.init();
|
54
|
+
});
|
55
|
+
</script>
|
56
|
+
<% end %>
|
57
|
+
<% end %>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<div id='actions'>
|
2
|
+
<ul>
|
3
|
+
<li>
|
4
|
+
<%= render :partial => "/shared/admin/search",
|
5
|
+
:locals => {
|
6
|
+
:url => admin_image_rotators_url
|
7
|
+
} %>
|
8
|
+
</li>
|
9
|
+
<li>
|
10
|
+
<%= link_to t('.create_new'), new_admin_image_rotator_url,
|
11
|
+
:class => "add_icon" %>
|
12
|
+
</li>
|
13
|
+
</ul>
|
14
|
+
</div>
|
15
|
+
<div id='records'>
|
16
|
+
<% if searching? %>
|
17
|
+
<h2><%= t('shared.admin.search.results_for', :query => params[:search]) %></h2>
|
18
|
+
<% if @image_rotators.any? %>
|
19
|
+
<%= will_paginate @image_rotators, :previous_label => '«', :next_label => '»' %>
|
20
|
+
<ul>
|
21
|
+
<%= render :partial => "image_rotator",
|
22
|
+
:collection => @image_rotators %>
|
23
|
+
</ul>
|
24
|
+
<%= will_paginate @image_rotators, :previous_label => '«', :next_label => '»' %>
|
25
|
+
<% else %>
|
26
|
+
<p><%= t('shared.admin.search.no_results') %></p>
|
27
|
+
<% end %>
|
28
|
+
<% else %>
|
29
|
+
<% if @image_rotators.any? %>
|
30
|
+
<%= will_paginate @image_rotators,
|
31
|
+
:previous_label => '«',
|
32
|
+
:next_label => '»' %>
|
33
|
+
|
34
|
+
<%= render :partial => "sortable_list" %>
|
35
|
+
|
36
|
+
<%= will_paginate @image_rotators,
|
37
|
+
:previous_label => '«',
|
38
|
+
:next_label => '»' %>
|
39
|
+
<% else %>
|
40
|
+
<p>
|
41
|
+
<strong>
|
42
|
+
<%= t('.no_items_yet') %>
|
43
|
+
</strong>
|
44
|
+
</p>
|
45
|
+
<% end %>
|
46
|
+
<% end %>
|
47
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render :partial => "form" %>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
en:
|
2
|
+
shared:
|
3
|
+
admin:
|
4
|
+
image_picker:
|
5
|
+
image: image
|
6
|
+
plugins:
|
7
|
+
image_rotators:
|
8
|
+
title: Image Rotators
|
9
|
+
admin:
|
10
|
+
image_rotators:
|
11
|
+
index:
|
12
|
+
create_new: Create a new Image Rotator
|
13
|
+
reorder: Reorder Image Rotators
|
14
|
+
reorder_done: Done Reordering Image Rotators
|
15
|
+
sorry_no_results: Sorry! There are no results found.
|
16
|
+
no_items_yet: There are no Image Rotators yet. Click "Create a new Image Rotator" to add your first image rotator.
|
17
|
+
edit:
|
18
|
+
add_image: Add a new Image
|
19
|
+
reorder: Reorder Images
|
20
|
+
reorder_done: Done Reordering Images
|
21
|
+
no_items_yet: There are no Images yet. Click "Add a new Image" to add your first image.
|
22
|
+
image_rotator:
|
23
|
+
view_live: View this image rotator live <br/><em>(opens in a new window)</em>
|
24
|
+
edit: Edit this image rotator
|
25
|
+
delete: Remove this image rotator forever
|
26
|
+
image_rotator_image:
|
27
|
+
delete: Remove this image forever
|
28
|
+
image_rotator_images:
|
29
|
+
image_rotator_image:
|
30
|
+
edit: Edit this image
|
31
|
+
delete: Remove this image forever
|
32
|
+
image_rotators:
|
33
|
+
show:
|
34
|
+
other: Other Image Rotators
|
@@ -0,0 +1,19 @@
|
|
1
|
+
nb:
|
2
|
+
plugins:
|
3
|
+
image_rotators:
|
4
|
+
title: Image Rotators
|
5
|
+
admin:
|
6
|
+
image_rotators:
|
7
|
+
index:
|
8
|
+
create_new: Lag en ny Image Rotator
|
9
|
+
reorder: Endre rekkefølgen på Image Rotators
|
10
|
+
reorder_done: Ferdig å endre rekkefølgen Image Rotators
|
11
|
+
sorry_no_results: Beklager! Vi fant ikke noen resultater.
|
12
|
+
no_items_yet: Det er ingen Image Rotators enda. Klikk på "Lag en ny Image Rotator" for å legge til din første image rotator.
|
13
|
+
image_rotator:
|
14
|
+
view_live: Vis hvordan denne image rotator ser ut offentlig <br/><em>(åpner i et nytt vindu)</em>
|
15
|
+
edit: Rediger denne image rotator
|
16
|
+
delete: Fjern denne image rotator permanent
|
17
|
+
image_rotators:
|
18
|
+
show:
|
19
|
+
other: Andre Image Rotators
|
@@ -0,0 +1,19 @@
|
|
1
|
+
nl:
|
2
|
+
plugins:
|
3
|
+
image_rotators:
|
4
|
+
title: Image Rotators
|
5
|
+
admin:
|
6
|
+
image_rotators:
|
7
|
+
index:
|
8
|
+
create_new: Maak een nieuwe Image Rotator
|
9
|
+
reorder: Wijzig de volgorde van de Image Rotators
|
10
|
+
reorder_done: Klaar met het wijzingen van de volgorde van de Image Rotators
|
11
|
+
sorry_no_results: Helaas! Er zijn geen resultaten gevonden.
|
12
|
+
no_items_yet: Er zijn nog geen Image Rotators. Druk op 'Maak een nieuwe Image Rotator' om de eerste aan te maken.
|
13
|
+
image_rotator:
|
14
|
+
view_live: Bekijk deze image rotator op de website <br/><em>(opent een nieuw venster)</em>
|
15
|
+
edit: Bewerk deze image rotator
|
16
|
+
delete: Verwijder deze image rotator voor eeuwig
|
17
|
+
image_rotators:
|
18
|
+
show:
|
19
|
+
other: Andere Image Rotators
|
data/config/routes.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
Refinery::Application.routes.draw do
|
2
|
+
scope(:path => 'refinery', :as => 'admin', :module => 'admin') do
|
3
|
+
resources :image_rotators do
|
4
|
+
resources :image_rotator_images, :only => %w(new create edit update destroy) do
|
5
|
+
collection do
|
6
|
+
post :update_positions
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/gemspec.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require File.expand_path('../image_rotators', __FILE__)
|
3
|
+
version = ::Refinery::ImageRotators.version
|
4
|
+
raise "Could not get version so gemspec can not be built" if version.nil?
|
5
|
+
files = Dir.glob("**/*").flatten.reject do |file|
|
6
|
+
file =~ /\.gem(spec)?$/
|
7
|
+
end
|
8
|
+
|
9
|
+
gemspec = <<EOF
|
10
|
+
Gem::Specification.new do |s|
|
11
|
+
s.name = %q{refinerycms-image_rotators}
|
12
|
+
s.version = %q{#{version}}
|
13
|
+
s.description = %q{An open source Ruby on Rails image rotator engine designed for integration with RefineryCMS.}
|
14
|
+
s.date = %q{#{Time.now.strftime('%Y-%m-%d')}}
|
15
|
+
s.summary = %q{Ruby on Rails image rotator engine for RefineryCMS.}
|
16
|
+
s.email = %q{jacob@envylabs.com}
|
17
|
+
s.homepage = %q{http://envylabs.com}
|
18
|
+
s.authors = %w(Jacob\\ Swanner)
|
19
|
+
s.require_paths = %w(lib)
|
20
|
+
|
21
|
+
s.files = [
|
22
|
+
'#{files.join("',\n '")}'
|
23
|
+
]
|
24
|
+
end
|
25
|
+
EOF
|
26
|
+
|
27
|
+
File.open(File.expand_path("../../refinerycms-image_rotators.gemspec", __FILE__), 'w').puts(gemspec)
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'rails/generators/migration'
|
2
|
+
|
3
|
+
class RefinerycmsImageRotatorsGenerator < Rails::Generators::NamedBase
|
4
|
+
include Rails::Generators::Migration
|
5
|
+
|
6
|
+
source_root File.expand_path('../templates/', __FILE__)
|
7
|
+
argument :name, :type => :string, :default => 'image_rotators', :banner => ''
|
8
|
+
argument :attributes, :type => :array, :default => ["name:string"]
|
9
|
+
|
10
|
+
def generate
|
11
|
+
migration_template('db/migrate/create_image_rotators.rb', 'db/migrate/create_image_rotators.rb')
|
12
|
+
%w(
|
13
|
+
db/seeds/image_rotators.rb
|
14
|
+
public/images/arrows.png
|
15
|
+
public/images/bullets.png
|
16
|
+
public/images/loading.gif
|
17
|
+
public/javascripts/jquery.image-rotators.js
|
18
|
+
public/javascripts/refinery/admin.js
|
19
|
+
public/stylesheets/image-rotators.css
|
20
|
+
).each { |path| copy_file path, Rails.root.join(path) }
|
21
|
+
|
22
|
+
puts <<-EOS
|
23
|
+
------------------------
|
24
|
+
Now run:
|
25
|
+
rake db:migrate
|
26
|
+
------------------------
|
27
|
+
Put the following in your layout:
|
28
|
+
stylesheet_link_tag 'image-rotators.css'
|
29
|
+
javascript_include_tag 'jquery.image-rotators.js'
|
30
|
+
------------------------
|
31
|
+
EOS
|
32
|
+
end
|
33
|
+
|
34
|
+
# Implement the required interface for Rails::Generators::Migration.
|
35
|
+
def self.next_migration_number(dirname) #:nodoc:
|
36
|
+
next_migration_number = current_migration_number(dirname) + 1
|
37
|
+
if ActiveRecord::Base.timestamped_migrations
|
38
|
+
[Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
|
39
|
+
else
|
40
|
+
"%.3d" % next_migration_number
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
# Below is a hack until this issue:
|
47
|
+
# https://rails.lighthouseapp.com/projects/8994/tickets/3820-make-railsgeneratorsmigrationnext_migration_number-method-a-class-method-so-it-possible-to-use-it-in-custom-generators
|
48
|
+
# is fixed on the Rails project.
|
49
|
+
|
50
|
+
require 'rails/generators/named_base'
|
51
|
+
require 'rails/generators/migration'
|
52
|
+
require 'rails/generators/active_model'
|
53
|
+
require 'active_record'
|
54
|
+
|
55
|
+
module ActiveRecord
|
56
|
+
module Generators
|
57
|
+
class Rails::Generators::NamedBase #:nodoc:
|
58
|
+
include Rails::Generators::Migration
|
59
|
+
|
60
|
+
# Implement the required interface for Rails::Generators::Migration.
|
61
|
+
def self.next_migration_number(dirname) #:nodoc:
|
62
|
+
next_migration_number = current_migration_number(dirname) + 1
|
63
|
+
if ActiveRecord::Base.timestamped_migrations
|
64
|
+
[Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
|
65
|
+
else
|
66
|
+
"%.3d" % next_migration_number
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|