comfy_carousel 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/Gemfile +1 -0
  2. data/Gemfile.lock +7 -0
  3. data/LICENSE +20 -0
  4. data/README.md +35 -2
  5. data/Rakefile +1 -1
  6. data/VERSION +1 -1
  7. data/app/assets/javascripts/slides.jquery.js +555 -0
  8. data/app/assets/javascripts/slides.min.jquery.js +20 -0
  9. data/app/controllers/admin/carousel/base_controller.rb +10 -0
  10. data/app/controllers/admin/carousel/carousels_controller.rb +50 -0
  11. data/app/controllers/admin/carousel/slides_controller.rb +12 -4
  12. data/app/helpers/carousel/application_helper.rb +12 -0
  13. data/app/models/carousel/carousel.rb +25 -0
  14. data/app/models/carousel/slide.rb +21 -17
  15. data/app/views/admin/carousel/_navigation.html.erb +1 -0
  16. data/app/views/admin/carousel/carousels/_form.html.erb +4 -0
  17. data/app/views/admin/carousel/carousels/edit.html.erb +5 -0
  18. data/app/views/admin/carousel/carousels/index.html.erb +20 -0
  19. data/app/views/admin/carousel/carousels/new.html.erb +5 -0
  20. data/app/views/admin/carousel/slides/_form.html.erb +12 -14
  21. data/app/views/admin/carousel/slides/edit.html.erb +4 -3
  22. data/app/views/admin/carousel/slides/index.html.erb +20 -21
  23. data/app/views/admin/carousel/slides/new.html.erb +4 -3
  24. data/comfy_carousel.gemspec +112 -0
  25. data/config/application.rb +3 -0
  26. data/config/environments/development.rb +1 -1
  27. data/config/environments/test.rb +1 -1
  28. data/config/initializers/comfy_carousel.rb +12 -0
  29. data/config/routes.rb +9 -1
  30. data/db/migrate/01_create_comfy_carousel.rb +17 -2
  31. data/db/schema.rb +40 -0
  32. data/lib/comfy_carousel.rb +25 -0
  33. data/lib/comfy_carousel/configuration.rb +22 -0
  34. data/lib/comfy_carousel/engine.rb +19 -0
  35. data/lib/comfy_carousel/form_builder.rb +50 -0
  36. data/lib/generators/comfy/carousel/README +11 -0
  37. data/lib/generators/comfy/carousel/carousel_generator.rb +35 -0
  38. data/lib/tasks/comfy_carousel.rake +4 -0
  39. data/test/fixtures/carousel/carousels.yml +3 -0
  40. data/test/fixtures/carousel/slides.yml +9 -0
  41. data/test/fixtures/files/image.jpg +0 -0
  42. data/test/functional/admin/carousel/carousels_controller_test.rb +92 -0
  43. data/test/functional/admin/carousel/slides_controller_test.rb +59 -30
  44. data/test/test_helper.rb +30 -5
  45. data/test/unit/carousel_test.rb +30 -0
  46. data/test/unit/configuration_test.rb +17 -0
  47. data/test/unit/slide_test.rb +29 -0
  48. metadata +49 -21
  49. data/app/assets/images/rails.png +0 -0
  50. data/app/assets/javascripts/application.js +0 -15
  51. data/app/assets/stylesheets/application.css +0 -13
  52. data/app/helpers/application_helper.rb +0 -2
  53. data/config/environments/production.rb +0 -67
  54. data/config/initializers/backtrace_silencers.rb +0 -7
  55. data/config/initializers/inflections.rb +0 -15
  56. data/config/initializers/mime_types.rb +0 -5
  57. data/config/initializers/secret_token.rb +0 -7
  58. data/config/initializers/session_store.rb +0 -8
  59. data/config/initializers/wrap_parameters.rb +0 -14
  60. data/db/seeds.rb +0 -7
  61. data/lib/assets/.gitkeep +0 -0
@@ -0,0 +1,20 @@
1
+ /*
2
+ * Slides, A Slideshow Plugin for jQuery
3
+ * Intructions: http://slidesjs.com
4
+ * By: Nathan Searles, http://nathansearles.com
5
+ * Version: 1.1.9
6
+ * Updated: September 5th, 2011
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ */
20
+ (function(a){a.fn.slides=function(b){return b=a.extend({},a.fn.slides.option,b),this.each(function(){function w(g,h,i){if(!p&&o){p=!0,b.animationStart(n+1);switch(g){case"next":l=n,k=n+1,k=e===k?0:k,r=f*2,g=-f*2,n=k;break;case"prev":l=n,k=n-1,k=k===-1?e-1:k,r=0,g=0,n=k;break;case"pagination":k=parseInt(i,10),l=a("."+b.paginationClass+" li."+b.currentClass+" a",c).attr("href").match("[^#/]+$"),k>l?(r=f*2,g=-f*2):(r=0,g=0),n=k}h==="fade"?b.crossfade?d.children(":eq("+k+")",c).css({zIndex:10}).fadeIn(b.fadeSpeed,b.fadeEasing,function(){b.autoHeight?d.animate({height:d.children(":eq("+k+")",c).outerHeight()},b.autoHeightSpeed,function(){d.children(":eq("+l+")",c).css({display:"none",zIndex:0}),d.children(":eq("+k+")",c).css({zIndex:0}),b.animationComplete(k+1),p=!1}):(d.children(":eq("+l+")",c).css({display:"none",zIndex:0}),d.children(":eq("+k+")",c).css({zIndex:0}),b.animationComplete(k+1),p=!1)}):d.children(":eq("+l+")",c).fadeOut(b.fadeSpeed,b.fadeEasing,function(){b.autoHeight?d.animate({height:d.children(":eq("+k+")",c).outerHeight()},b.autoHeightSpeed,function(){d.children(":eq("+k+")",c).fadeIn(b.fadeSpeed,b.fadeEasing)}):d.children(":eq("+k+")",c).fadeIn(b.fadeSpeed,b.fadeEasing,function(){a.browser.msie&&a(this).get(0).style.removeAttribute("filter")}),b.animationComplete(k+1),p=!1}):(d.children(":eq("+k+")").css({left:r,display:"block"}),b.autoHeight?d.animate({left:g,height:d.children(":eq("+k+")").outerHeight()},b.slideSpeed,b.slideEasing,function(){d.css({left:-f}),d.children(":eq("+k+")").css({left:f,zIndex:5}),d.children(":eq("+l+")").css({left:f,display:"none",zIndex:0}),b.animationComplete(k+1),p=!1}):d.animate({left:g},b.slideSpeed,b.slideEasing,function(){d.css({left:-f}),d.children(":eq("+k+")").css({left:f,zIndex:5}),d.children(":eq("+l+")").css({left:f,display:"none",zIndex:0}),b.animationComplete(k+1),p=!1})),b.pagination&&(a("."+b.paginationClass+" li."+b.currentClass,c).removeClass(b.currentClass),a("."+b.paginationClass+" li:eq("+k+")",c).addClass(b.currentClass))}}function x(){clearInterval(c.data("interval"))}function y(){b.pause?(clearTimeout(c.data("pause")),clearInterval(c.data("interval")),u=setTimeout(function(){clearTimeout(c.data("pause")),v=setInterval(function(){w("next",i)},b.play),c.data("interval",v)},b.pause),c.data("pause",u)):x()}a("."+b.container,a(this)).children().wrapAll('<div class="slides_control"/>');var c=a(this),d=a(".slides_control",c),e=d.children().size(),f=d.children().outerWidth(),g=d.children().outerHeight(),h=b.start-1,i=b.effect.indexOf(",")<0?b.effect:b.effect.replace(" ","").split(",")[0],j=b.effect.indexOf(",")<0?i:b.effect.replace(" ","").split(",")[1],k=0,l=0,m=0,n=0,o,p,q,r,s,t,u,v;if(e<2)return a("."+b.container,a(this)).fadeIn(b.fadeSpeed,b.fadeEasing,function(){o=!0,b.slidesLoaded()}),a("."+b.next+", ."+b.prev).fadeOut(0),!1;if(e<2)return;h<0&&(h=0),h>e&&(h=e-1),b.start&&(n=h),b.randomize&&d.randomize(),a("."+b.container,c).css({overflow:"hidden",position:"relative"}),d.children().css({position:"absolute",top:0,left:d.children().outerWidth(),zIndex:0,display:"none"}),d.css({position:"relative",width:f*3,height:g,left:-f}),a("."+b.container,c).css({display:"block"}),b.autoHeight&&(d.children().css({height:"auto"}),d.animate({height:d.children(":eq("+h+")").outerHeight()},b.autoHeightSpeed));if(b.preload&&d.find("img:eq("+h+")").length){a("."+b.container,c).css({background:"url("+b.preloadImage+") no-repeat 50% 50%"});var z=d.find("img:eq("+h+")").attr("src")+"?"+(new Date).getTime();a("img",c).parent().attr("class")!="slides_control"?t=d.children(":eq(0)")[0].tagName.toLowerCase():t=d.find("img:eq("+h+")"),d.find("img:eq("+h+")").attr("src",z).load(function(){d.find(t+":eq("+h+")").fadeIn(b.fadeSpeed,b.fadeEasing,function(){a(this).css({zIndex:5}),a("."+b.container,c).css({background:""}),o=!0,b.slidesLoaded()})})}else d.children(":eq("+h+")").fadeIn(b.fadeSpeed,b.fadeEasing,function(){o=!0,b.slidesLoaded()});b.bigTarget&&(d.children().css({cursor:"pointer"}),d.children().click(function(){return w("next",i),!1})),b.hoverPause&&b.play&&(d.bind("mouseover",function(){x()}),d.bind("mouseleave",function(){y()})),b.generateNextPrev&&(a("."+b.container,c).after('<a href="#" class="'+b.prev+'">Prev</a>'),a("."+b.prev,c).after('<a href="#" class="'+b.next+'">Next</a>')),a("."+b.next,c).click(function(a){a.preventDefault(),b.play&&y(),w("next",i)}),a("."+b.prev,c).click(function(a){a.preventDefault(),b.play&&y(),w("prev",i)}),b.generatePagination?(b.prependPagination?c.prepend("<ul class="+b.paginationClass+"></ul>"):c.append("<ul class="+b.paginationClass+"></ul>"),d.children().each(function(){a("."+b.paginationClass,c).append('<li><a href="#'+m+'">'+(m+1)+"</a></li>"),m++})):a("."+b.paginationClass+" li a",c).each(function(){a(this).attr("href","#"+m),m++}),a("."+b.paginationClass+" li:eq("+h+")",c).addClass(b.currentClass),a("."+b.paginationClass+" li a",c).click(function(){return b.play&&y(),q=a(this).attr("href").match("[^#/]+$"),n!=q&&w("pagination",j,q),!1}),a("a.link",c).click(function(){return b.play&&y(),q=a(this).attr("href").match("[^#/]+$")-1,n!=q&&w("pagination",j,q),!1}),b.play&&(v=setInterval(function(){w("next",i)},b.play),c.data("interval",v))})},a.fn.slides.option={preload:!1,preloadImage:"/img/loading.gif",container:"slides_container",generateNextPrev:!1,next:"next",prev:"prev",pagination:!0,generatePagination:!0,prependPagination:!1,paginationClass:"pagination",currentClass:"current",fadeSpeed:350,fadeEasing:"",slideSpeed:350,slideEasing:"",start:1,effect:"slide",crossfade:!1,randomize:!1,play:0,pause:0,hoverPause:!1,autoHeight:!1,autoHeightSpeed:350,bigTarget:!1,animationStart:function(){},animationComplete:function(){},slidesLoaded:function(){}},a.fn.randomize=function(b){function c(){return Math.round(Math.random())-.5}return a(this).each(function(){var d=a(this),e=d.children(),f=e.length;if(f>1){e.hide();var g=[];for(i=0;i<f;i++)g[g.length]=i;g=g.sort(c),a.each(g,function(a,c){var f=e.eq(c),g=f.clone(!0);g.show().appendTo(d),b!==undefined&&b(f,g),f.remove()})}})}})(jQuery)
@@ -0,0 +1,10 @@
1
+ class Admin::Carousel::BaseController < ComfyCarousel.config.admin_controller.to_s.constantize
2
+
3
+ def load_carousel
4
+ @carousel = Carousel::Carousel.find(params[:carousel_id] || params[:id])
5
+ rescue ActiveRecord::RecordNotFound
6
+ flash[:error] = 'Carousel not found'
7
+ redirect_to admin_carousel_carousels_path
8
+ end
9
+
10
+ end
@@ -0,0 +1,50 @@
1
+ class Admin::Carousel::CarouselsController < Admin::Carousel::BaseController
2
+
3
+ before_filter :build_carousel, :only => [:new, :create]
4
+ before_filter :load_carousel, :only => [:edit, :update, :destroy]
5
+
6
+ def index
7
+ @carousels = Carousel::Carousel.all
8
+ end
9
+
10
+ def new
11
+ render
12
+ end
13
+
14
+ def edit
15
+ render
16
+ end
17
+
18
+ def create
19
+ @carousel.save!
20
+ flash[:notice] = 'Carousel created'
21
+ redirect_to new_admin_carousel_carousel_slide_path(@carousel)
22
+
23
+ rescue ActiveRecord::RecordInvalid
24
+ flash.now[:error] = 'Failed to create Carousel'
25
+ render :action => :new
26
+ end
27
+
28
+ def update
29
+ @carousel.update_attributes!(params[:carousel])
30
+ flash[:notice] = 'Carousel updated'
31
+ redirect_to :action => :edit, :id => @carousel
32
+
33
+ rescue ActiveRecord::RecordInvalid
34
+ flash.now[:error] = 'Failed to update Carousel'
35
+ render :action => :edit
36
+ end
37
+
38
+ def destroy
39
+ @carousel.destroy
40
+ flash[:notice] = 'Carousel removed'
41
+ redirect_to :action => :index
42
+ end
43
+
44
+ protected
45
+
46
+ def build_carousel
47
+ @carousel = Carousel::Carousel.new(params[:carousel])
48
+ end
49
+
50
+ end
@@ -1,10 +1,11 @@
1
- class Admin::Carousel::SlidesController < CmsAdmin::BaseController
1
+ class Admin::Carousel::SlidesController < Admin::Carousel::BaseController
2
2
 
3
+ before_filter :load_carousel
3
4
  before_filter :build_slide, :only => [:new, :create]
4
5
  before_filter :load_slide, :only => [:edit, :update, :destroy]
5
6
 
6
7
  def index
7
- @slides = Slide.order('id DESC').page(params[:page])
8
+ @slides = @carousel.slides
8
9
  end
9
10
 
10
11
  def new
@@ -38,15 +39,22 @@ class Admin::Carousel::SlidesController < CmsAdmin::BaseController
38
39
  flash[:notice] = 'Slide deleted'
39
40
  redirect_to :action => :index
40
41
  end
42
+
43
+ def reorder
44
+ (params[:carousel_slide] || []).each_with_index do |id, index|
45
+ Carousel::Slide.where(:id => id).update_all(:position => index)
46
+ end
47
+ render :nothing => true
48
+ end
41
49
 
42
50
  protected
43
51
 
44
52
  def build_slide
45
- @slide = Slide.new(params[:slide])
53
+ @slide = @carousel.slides.new(params[:slide])
46
54
  end
47
55
 
48
56
  def load_slide
49
- @slide = Slide.find(params[:id])
57
+ @slide = @carousel.slides.find(params[:id])
50
58
  rescue ActiveRecord::RecordNotFound
51
59
  flash[:error] = 'Slide not found'
52
60
  redirect_to :action => :index
@@ -0,0 +1,12 @@
1
+ module Carousel::ApplicationHelper
2
+
3
+ def comfy_form_for(record_or_name_or_array, *args, &proc)
4
+ options = args.extract_options!
5
+ form_for(
6
+ record_or_name_or_array,
7
+ *(args << options.merge(:builder => ComfyCarousel.config.form_builder.to_s.constantize)),
8
+ &proc
9
+ )
10
+ end
11
+
12
+ end
@@ -0,0 +1,25 @@
1
+ class Carousel::Carousel < ActiveRecord::Base
2
+
3
+ self.table_name = :carousel_carousels
4
+
5
+ # -- Relationships --------------------------------------------------------
6
+ has_many :slides,
7
+ :dependent => :destroy
8
+
9
+ # -- Validations ----------------------------------------------------------
10
+ validates :label,
11
+ :presence => true
12
+ validates :identifier,
13
+ :presence => true,
14
+ :format => { :with => /^\w[a-z0-9_-]*$/i }
15
+
16
+ # -- Callbacks ------------------------------------------------------------
17
+ before_validation :assign_label
18
+
19
+ protected
20
+
21
+ def assign_label
22
+ self.label = self.label.blank?? self.identifier.try(:titleize) : self.label
23
+ end
24
+
25
+ end
@@ -1,23 +1,27 @@
1
1
  class Carousel::Slide < ActiveRecord::Base
2
2
 
3
- has_attached_file :slide,
4
- :styles => {
5
- :slide => "450x315#",
6
- :edit_page => "150x150>"
7
- }
8
-
9
- attr_accessible :description,
10
- :url,
11
- :slide,
12
- :title,
13
- :sort
14
-
15
- # -- Validations ----------------------------------------------------------
3
+ self.table_name = :carousel_slides
4
+
5
+ has_attached_file :file
6
+
7
+ # -- Relationships --------------------------------------------------------
8
+ belongs_to :carousel
9
+
10
+ # -- Callbacks ------------------------------------------------------------
11
+ before_create :assign_position
16
12
 
17
- validates :description,
18
- :url,
19
- :title,
20
- :sort,
13
+ # -- Validations ----------------------------------------------------------
14
+ validates :carousel_id, :label,
21
15
  :presence => true
16
+
17
+ # -- Scopes ---------------------------------------------------------------
18
+ default_scope order('carousel_slides.position')
19
+
20
+ protected
21
+
22
+ def assign_position
23
+ max = carousel.slides.maximum(:position)
24
+ self.position = max ? max + 1 : 0
25
+ end
22
26
 
23
27
  end
@@ -0,0 +1 @@
1
+ <li><%= active_link_to 'Carousels', admin_carousel_carousels_path %></li>
@@ -0,0 +1,4 @@
1
+ <%= form.text_field :label, :id => (@carousel.new_record?? 'slugify' : nil) %>
2
+ <%= form.text_field :identifier, :id => 'slug' %>
3
+
4
+ <%= form.submit (@carousel.new_record? ? 'Create Carousel' : 'Update Carousel') %>
@@ -0,0 +1,5 @@
1
+ <h1>Editing <%= @carousel.label.titleize %></h1>
2
+
3
+ <%= comfy_form_for @carousel, :as => :carousel, :url => {:action => :update} do |form| %>
4
+ <%= render :partial => form %>
5
+ <% end %>
@@ -0,0 +1,20 @@
1
+ <%= link_to 'Add New Carousel', new_admin_carousel_carousel_path, :class => 'big button' %>
2
+
3
+ <h1>Carousels</h1>
4
+
5
+ <ul class='list'>
6
+ <% @carousels.each do |carousel| %>
7
+ <li>
8
+ <div class='item'>
9
+ <div class='icon'></div>
10
+ <div class='action_links'>
11
+ <%= link_to 'Edit', edit_admin_carousel_carousel_path(carousel) %>
12
+ <%= link_to 'Delete', admin_carousel_carousel_path(carousel), :method => :delete, :confirm => 'Are you sure?' %>
13
+ </div>
14
+ <div class='label'>
15
+ <%= link_to carousel.label, admin_carousel_carousel_slides_path(carousel) %>
16
+ </div>
17
+ </div>
18
+ </li>
19
+ <% end %>
20
+ </ul>
@@ -0,0 +1,5 @@
1
+ <h1>New Carousel</h1>
2
+
3
+ <%= comfy_form_for @carousel, :as => :carousel, :url => {:action => :create} do |form| %>
4
+ <%= render :partial => form %>
5
+ <% end %>
@@ -1,15 +1,13 @@
1
- - content_for :right_column do
2
- = render :partial => 'cms_admin/files/index'
3
-
4
- = form.text_field :title
5
- = form.text_field :sort
6
- = form.file_field :slide, :label => "Slide Image"
7
- - if @slide.slide.url
8
- .form_element
9
- .label
10
- %label Current Image
11
- .value= image_tag @slide.slide.url(:edit_page)
12
- = form.text_field :url, :label => "Link to"
13
- = form.text_area :description
1
+ <%= form.text_field :label %>
2
+ <%= form.text_area :content %>
3
+ <%= form.text_field :url %>
4
+ <%= form.file_field :file %>
14
5
 
15
- = form.submit @slide.new_record?? 'Create Slide' : 'Update Slide'
6
+ <% if defined?(ComfortableMexicanSofa) %>
7
+ <% content_for :right_column do %>
8
+ <%= render :partial => 'cms_admin/files/index' %>
9
+ <% end %>
10
+ <%= cms_hook :carousel_slide, :locals => { :form => form } %>
11
+ <% end %>
12
+
13
+ <%= form.submit (@slide.new_record? ? 'Create Slide' : 'Update Slide') %>
@@ -1,4 +1,5 @@
1
- %h1 Editing Slide
1
+ <h1>Editing Slide</h1>
2
2
 
3
- = cms_form_for @slide, :url => {:action => :update} do |form|
4
- = render :partial => 'form', :object => form
3
+ <%= comfy_form_for @slide, :as => :slide, :url => {:action => :update} do |form| %>
4
+ <%= render :partial => form %>
5
+ <% end %>
@@ -1,23 +1,22 @@
1
- = link_to span_tag('Create Slide'), new_admin_slide_path, :class => 'big button'
2
- %h1 Slides
1
+ <%= link_to 'Add New Slide', new_admin_carousel_carousel_slide_path(@carousel), :class => 'big button' %>
3
2
 
4
- = will_paginate @slides
3
+ <h1>Slides</h1>
5
4
 
6
- %table.formatted
7
- %tr
8
- %th.main Title
9
- %th Link
10
- %th Image
11
- %th Sort
12
- %th Actions
13
- - @slides.each do |slide|
14
- %tr
15
- %td= slide.title
16
- %td= slide.url
17
- %td= slide.slide_file_name
18
- %td= slide.sort
19
- %td.action_links
20
- = link_to "Edit", edit_admin_slide_path(slide)
21
- = link_to "Delete", admin_slide_path(slide), :method => :delete, :confirm => "Are you sure?"
22
-
23
- = will_paginate @slides
5
+ <ul class='list sortable'>
6
+ <% @slides.each do |slide| %>
7
+ <li id='carousel_slide_<%= slide.id %>'>
8
+ <div class='item'>
9
+ <div class='icon'>
10
+ <div class='dragger'><span>order</span></div>
11
+ </div>
12
+ <div class='action_links'>
13
+ <%= link_to 'Edit', edit_admin_carousel_carousel_slide_path(@carousel, slide) %>
14
+ <%= link_to 'Delete', admin_carousel_carousel_slide_path(@carousel, slide), :method => :delete, :confirm => 'Are you sure?' %>
15
+ </div>
16
+ <div class='label'>
17
+ <%= link_to slide.label, edit_admin_carousel_carousel_slide_path(@carousel, slide) %>
18
+ </div>
19
+ </div>
20
+ </li>
21
+ <% end %>
22
+ </ul>
@@ -1,4 +1,5 @@
1
- %h1 New Slide
1
+ <h1>New Slide</h1>
2
2
 
3
- = cms_form_for @slide, :url => {:action => :create} do |form|
4
- = render :partial => 'form', :object => form
3
+ <%= comfy_form_for @slide, :as => :slide, :url => {:action => :create} do |form| %>
4
+ <%= render :partial => form %>
5
+ <% end %>
@@ -0,0 +1,112 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "comfy_carousel"
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Oleg Khabarov", "The Working Group Inc."]
12
+ s.date = "2012-02-07"
13
+ s.description = ""
14
+ s.email = "oleg@twg.ca"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ "Gemfile",
21
+ "Gemfile.lock",
22
+ "LICENSE",
23
+ "README.md",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "app/assets/javascripts/slides.jquery.js",
27
+ "app/assets/javascripts/slides.min.jquery.js",
28
+ "app/controllers/admin/carousel/base_controller.rb",
29
+ "app/controllers/admin/carousel/carousels_controller.rb",
30
+ "app/controllers/admin/carousel/slides_controller.rb",
31
+ "app/controllers/application_controller.rb",
32
+ "app/helpers/carousel/application_helper.rb",
33
+ "app/models/.gitkeep",
34
+ "app/models/carousel/carousel.rb",
35
+ "app/models/carousel/slide.rb",
36
+ "app/views/admin/carousel/_navigation.html.erb",
37
+ "app/views/admin/carousel/carousels/_form.html.erb",
38
+ "app/views/admin/carousel/carousels/edit.html.erb",
39
+ "app/views/admin/carousel/carousels/index.html.erb",
40
+ "app/views/admin/carousel/carousels/new.html.erb",
41
+ "app/views/admin/carousel/slides/_form.html.erb",
42
+ "app/views/admin/carousel/slides/edit.html.erb",
43
+ "app/views/admin/carousel/slides/index.html.erb",
44
+ "app/views/admin/carousel/slides/new.html.erb",
45
+ "app/views/layouts/application.html.erb",
46
+ "comfy_carousel.gemspec",
47
+ "config.ru",
48
+ "config/application.rb",
49
+ "config/boot.rb",
50
+ "config/database.yml",
51
+ "config/environment.rb",
52
+ "config/environments/development.rb",
53
+ "config/environments/test.rb",
54
+ "config/initializers/comfy_carousel.rb",
55
+ "config/locales/en.yml",
56
+ "config/routes.rb",
57
+ "db/migrate/01_create_comfy_carousel.rb",
58
+ "db/schema.rb",
59
+ "doc/README_FOR_APP",
60
+ "lib/comfy_carousel.rb",
61
+ "lib/comfy_carousel/configuration.rb",
62
+ "lib/comfy_carousel/engine.rb",
63
+ "lib/comfy_carousel/form_builder.rb",
64
+ "lib/generators/comfy/carousel/README",
65
+ "lib/generators/comfy/carousel/carousel_generator.rb",
66
+ "lib/tasks/.gitkeep",
67
+ "lib/tasks/comfy_carousel.rake",
68
+ "log/.gitkeep",
69
+ "script/rails",
70
+ "test/fixtures/.gitkeep",
71
+ "test/fixtures/carousel/carousels.yml",
72
+ "test/fixtures/carousel/slides.yml",
73
+ "test/fixtures/files/image.jpg",
74
+ "test/functional/.gitkeep",
75
+ "test/functional/admin/carousel/carousels_controller_test.rb",
76
+ "test/functional/admin/carousel/slides_controller_test.rb",
77
+ "test/integration/.gitkeep",
78
+ "test/performance/browsing_test.rb",
79
+ "test/test_helper.rb",
80
+ "test/unit/.gitkeep",
81
+ "test/unit/carousel_test.rb",
82
+ "test/unit/configuration_test.rb",
83
+ "test/unit/slide_test.rb",
84
+ "vendor/assets/javascripts/.gitkeep",
85
+ "vendor/assets/stylesheets/.gitkeep",
86
+ "vendor/plugins/.gitkeep"
87
+ ]
88
+ s.homepage = "http://github.com/comfy/comfy_carousel"
89
+ s.licenses = ["MIT"]
90
+ s.require_paths = ["lib"]
91
+ s.rubygems_version = "1.8.10"
92
+ s.summary = "ComfyCarousel is a carousel engine for Rails 3.1+ apps (and ComfortableMexicanSofa)"
93
+
94
+ if s.respond_to? :specification_version then
95
+ s.specification_version = 3
96
+
97
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
98
+ s.add_runtime_dependency(%q<rails>, [">= 3.1.0"])
99
+ s.add_runtime_dependency(%q<jquery-rails>, [">= 1.0.0"])
100
+ s.add_runtime_dependency(%q<paperclip>, [">= 2.3.0"])
101
+ else
102
+ s.add_dependency(%q<rails>, [">= 3.1.0"])
103
+ s.add_dependency(%q<jquery-rails>, [">= 1.0.0"])
104
+ s.add_dependency(%q<paperclip>, [">= 2.3.0"])
105
+ end
106
+ else
107
+ s.add_dependency(%q<rails>, [">= 3.1.0"])
108
+ s.add_dependency(%q<jquery-rails>, [">= 1.0.0"])
109
+ s.add_dependency(%q<paperclip>, [">= 2.3.0"])
110
+ end
111
+ end
112
+