comfy_gallery 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.
Files changed (127) hide show
  1. data/.document +5 -0
  2. data/.travis.yml +2 -0
  3. data/Gemfile +10 -0
  4. data/LICENSE +20 -0
  5. data/README.md +29 -0
  6. data/Rakefile +21 -0
  7. data/VERSION +1 -0
  8. data/app/assets/images/sofa_gallery/jcrop.gif +0 -0
  9. data/app/assets/images/sofa_gallery/orbit/bullets.jpg +0 -0
  10. data/app/assets/images/sofa_gallery/orbit/left-arrow.png +0 -0
  11. data/app/assets/images/sofa_gallery/orbit/loading.gif +0 -0
  12. data/app/assets/images/sofa_gallery/orbit/mask-black.png +0 -0
  13. data/app/assets/images/sofa_gallery/orbit/pause-black.png +0 -0
  14. data/app/assets/images/sofa_gallery/orbit/right-arrow.png +0 -0
  15. data/app/assets/images/sofa_gallery/orbit/rotator-black.png +0 -0
  16. data/app/assets/images/sofa_gallery/orbit/timer-black.png +0 -0
  17. data/app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/btnNext.png +0 -0
  18. data/app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/btnPrevious.png +0 -0
  19. data/app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/contentPattern.png +0 -0
  20. data/app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/default_thumbnail.gif +0 -0
  21. data/app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/loader.gif +0 -0
  22. data/app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/sprite.png +0 -0
  23. data/app/assets/images/sofa_gallery/prettyPhoto/dark_square/btnNext.png +0 -0
  24. data/app/assets/images/sofa_gallery/prettyPhoto/dark_square/btnPrevious.png +0 -0
  25. data/app/assets/images/sofa_gallery/prettyPhoto/dark_square/contentPattern.png +0 -0
  26. data/app/assets/images/sofa_gallery/prettyPhoto/dark_square/default_thumbnail.gif +0 -0
  27. data/app/assets/images/sofa_gallery/prettyPhoto/dark_square/loader.gif +0 -0
  28. data/app/assets/images/sofa_gallery/prettyPhoto/dark_square/sprite.png +0 -0
  29. data/app/assets/images/sofa_gallery/prettyPhoto/default/default_thumb.png +0 -0
  30. data/app/assets/images/sofa_gallery/prettyPhoto/default/loader.gif +0 -0
  31. data/app/assets/images/sofa_gallery/prettyPhoto/default/sprite.png +0 -0
  32. data/app/assets/images/sofa_gallery/prettyPhoto/default/sprite_next.png +0 -0
  33. data/app/assets/images/sofa_gallery/prettyPhoto/default/sprite_prev.png +0 -0
  34. data/app/assets/images/sofa_gallery/prettyPhoto/default/sprite_x.png +0 -0
  35. data/app/assets/images/sofa_gallery/prettyPhoto/default/sprite_y.png +0 -0
  36. data/app/assets/images/sofa_gallery/prettyPhoto/facebook/btnNext.png +0 -0
  37. data/app/assets/images/sofa_gallery/prettyPhoto/facebook/btnPrevious.png +0 -0
  38. data/app/assets/images/sofa_gallery/prettyPhoto/facebook/contentPatternBottom.png +0 -0
  39. data/app/assets/images/sofa_gallery/prettyPhoto/facebook/contentPatternLeft.png +0 -0
  40. data/app/assets/images/sofa_gallery/prettyPhoto/facebook/contentPatternRight.png +0 -0
  41. data/app/assets/images/sofa_gallery/prettyPhoto/facebook/contentPatternTop.png +0 -0
  42. data/app/assets/images/sofa_gallery/prettyPhoto/facebook/default_thumbnail.gif +0 -0
  43. data/app/assets/images/sofa_gallery/prettyPhoto/facebook/loader.gif +0 -0
  44. data/app/assets/images/sofa_gallery/prettyPhoto/facebook/sprite.png +0 -0
  45. data/app/assets/images/sofa_gallery/prettyPhoto/light_rounded/btnNext.png +0 -0
  46. data/app/assets/images/sofa_gallery/prettyPhoto/light_rounded/btnPrevious.png +0 -0
  47. data/app/assets/images/sofa_gallery/prettyPhoto/light_rounded/default_thumbnail.gif +0 -0
  48. data/app/assets/images/sofa_gallery/prettyPhoto/light_rounded/loader.gif +0 -0
  49. data/app/assets/images/sofa_gallery/prettyPhoto/light_rounded/sprite.png +0 -0
  50. data/app/assets/images/sofa_gallery/prettyPhoto/light_square/btnNext.png +0 -0
  51. data/app/assets/images/sofa_gallery/prettyPhoto/light_square/btnPrevious.png +0 -0
  52. data/app/assets/images/sofa_gallery/prettyPhoto/light_square/default_thumbnail.gif +0 -0
  53. data/app/assets/images/sofa_gallery/prettyPhoto/light_square/loader.gif +0 -0
  54. data/app/assets/images/sofa_gallery/prettyPhoto/light_square/sprite.png +0 -0
  55. data/app/assets/javascripts/sofa_gallery/admin.js +72 -0
  56. data/app/assets/javascripts/sofa_gallery/application.js +15 -0
  57. data/app/assets/javascripts/sofa_gallery/jquery.jcrop.js +246 -0
  58. data/app/assets/javascripts/sofa_gallery/jquery.orbit-1.2.3.min.js +17 -0
  59. data/app/assets/javascripts/sofa_gallery/thumbnails.js +85 -0
  60. data/app/assets/stylesheets/comfy_gallery/admin.css +57 -0
  61. data/app/assets/stylesheets/comfy_gallery/application.css +67 -0
  62. data/app/assets/stylesheets/comfy_gallery/carousel.css.erb +208 -0
  63. data/app/assets/stylesheets/comfy_gallery/gallery_list.css +18 -0
  64. data/app/assets/stylesheets/comfy_gallery/jquery.jcrop.css +32 -0
  65. data/app/assets/stylesheets/comfy_gallery/reset.css +1 -0
  66. data/app/assets/stylesheets/comfy_gallery/thumbnails.css.erb +181 -0
  67. data/app/controllers/admin/gallery/base_controller.rb +3 -0
  68. data/app/controllers/admin/gallery/galleries_controller.rb +63 -0
  69. data/app/controllers/admin/gallery/photos_controller.rb +96 -0
  70. data/app/controllers/application_controller.rb +7 -0
  71. data/app/controllers/gallery/galleries_controller.rb +15 -0
  72. data/app/helpers/gallery/application_helper.rb +30 -0
  73. data/app/models/gallery/gallery.rb +19 -0
  74. data/app/models/gallery/photo.rb +78 -0
  75. data/app/views/admin/gallery/_html_head.html.erb +1 -0
  76. data/app/views/admin/gallery/_navigation.html.erb +5 -0
  77. data/app/views/admin/gallery/galleries/_form.html.erb +18 -0
  78. data/app/views/admin/gallery/galleries/edit.html.erb +5 -0
  79. data/app/views/admin/gallery/galleries/index.html.erb +40 -0
  80. data/app/views/admin/gallery/galleries/new.html.erb +5 -0
  81. data/app/views/admin/gallery/photos/_form.html.erb +16 -0
  82. data/app/views/admin/gallery/photos/crop.html.erb +64 -0
  83. data/app/views/admin/gallery/photos/edit.html.erb +5 -0
  84. data/app/views/admin/gallery/photos/index.html.erb +24 -0
  85. data/app/views/admin/gallery/photos/new.html.erb +5 -0
  86. data/app/views/gallery/_carousel.html.erb +31 -0
  87. data/app/views/gallery/_list_galleries.html.erb +26 -0
  88. data/app/views/gallery/_thumbnails.html.erb +26 -0
  89. data/app/views/gallery/galleries/index.html.erb +1 -0
  90. data/app/views/gallery/galleries/show.html.erb +7 -0
  91. data/app/views/layouts/gallery/application.html.erb +16 -0
  92. data/comfy_gallery.gemspec +177 -0
  93. data/config/application.rb +51 -0
  94. data/config/boot.rb +13 -0
  95. data/config/database.yml +16 -0
  96. data/config/environment.rb +5 -0
  97. data/config/environments/development.rb +25 -0
  98. data/config/environments/production.rb +52 -0
  99. data/config/environments/test.rb +39 -0
  100. data/config/initializers/comfy_gallery.rb +15 -0
  101. data/config/initializers/paperclip.rb +3 -0
  102. data/config/routes.rb +17 -0
  103. data/config.ru +4 -0
  104. data/db/migrate/01_create_comfy_gallery.rb +36 -0
  105. data/lib/comfy_gallery/configuration.rb +26 -0
  106. data/lib/comfy_gallery/engine.rb +22 -0
  107. data/lib/comfy_gallery/form_builder.rb +50 -0
  108. data/lib/comfy_gallery.rb +23 -0
  109. data/lib/generators/README +10 -0
  110. data/lib/generators/comfy_gallery_generator.rb +33 -0
  111. data/lib/paperclip_processors/cropper.rb +31 -0
  112. data/lib/tasks/comfy_gallery.rake +4 -0
  113. data/script/rails +6 -0
  114. data/sofa_gallery.gemspec +175 -0
  115. data/test/fixtures/files/default.jpg +0 -0
  116. data/test/fixtures/files/default.txt +1 -0
  117. data/test/fixtures/files/default2.jpg +0 -0
  118. data/test/fixtures/gallery/galleries.yml +11 -0
  119. data/test/fixtures/gallery/photos.yml +9 -0
  120. data/test/functional/admin/gallery/galleries_controller_test.rb +87 -0
  121. data/test/functional/admin/gallery/photos_controller_test.rb +234 -0
  122. data/test/functional/gallery/galleries_controller_test.rb +24 -0
  123. data/test/test_helper.rb +39 -0
  124. data/test/unit/configuration_test.rb +18 -0
  125. data/test/unit/gallery_test.rb +33 -0
  126. data/test/unit/photo_test.rb +33 -0
  127. metadata +233 -0
@@ -0,0 +1,36 @@
1
+ class CreateComfyGallery < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :gallery_galleries do |t|
4
+ t.string :title
5
+ t.string :slug
6
+ t.text :description
7
+ t.integer :full_width, :null => false, :default => 640
8
+ t.integer :full_height, :null => false, :default => 480
9
+ t.boolean :force_ratio_full, :null => false, :default => false
10
+ t.integer :thumb_width, :null => false, :default => 150
11
+ t.integer :thumb_height, :null => false, :default => 150
12
+ t.boolean :force_ratio_thumb, :null => false, :default => true
13
+ t.timestamps
14
+ end
15
+ add_index :gallery_galleries, :slug
16
+
17
+ create_table :gallery_photos do |t|
18
+ t.integer :gallery_id
19
+ t.string :title
20
+ t.string :slug
21
+ t.text :description
22
+ t.string :image_file_name
23
+ t.string :image_content_type
24
+ t.integer :image_file_size
25
+ t.integer :position, :null => false, :default => 0
26
+ t.timestamps
27
+ end
28
+ add_index :gallery_photos, [ :gallery_id, :position ]
29
+ add_index :gallery_photos, :slug
30
+ end
31
+
32
+ def self.down
33
+ drop_table :gallery_photos
34
+ drop_table :gallery_galleries
35
+ end
36
+ end
@@ -0,0 +1,26 @@
1
+ module ComfyGallery
2
+ class Configuration
3
+
4
+ # Paperclip upload settings for photos
5
+ attr_accessor :upload_options
6
+
7
+ # Default url to access admin area is http://yourhost/cms-admin/
8
+ # You can change 'cms-admin' to 'admin', for example.
9
+ attr_accessor :admin_route_prefix
10
+
11
+ # Controller that should be used for admin area
12
+ attr_accessor :admin_controller
13
+
14
+ # Form builder
15
+ attr_accessor :form_builder
16
+
17
+ # Configuration defaults
18
+ def initialize
19
+ @upload_options = { }
20
+ @admin_route_prefix = 'admin'
21
+ @admin_controller = 'ApplicationController'
22
+ @form_builder = 'ComfyGallery::FormBuilder'
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,22 @@
1
+ require 'comfy_gallery'
2
+ require 'rails'
3
+ require 'paperclip'
4
+
5
+ module ComfyGallery
6
+ class Engine < Rails::Engine
7
+ initializer 'comfy_gallery.helper' do |app|
8
+ if defined?(ComfortableMexicanSofa)
9
+ # applying configuraion
10
+ ComfyGallery.configure do |conf|
11
+ conf.admin_route_prefix = ComfortableMexicanSofa.config.admin_route_prefix
12
+ conf.upload_options = ComfortableMexicanSofa.config.upload_file_options
13
+ conf.admin_controller = 'CmsAdmin::BaseController'
14
+ conf.form_builder = 'ComfortableMexicanSofa::FormBuilder'
15
+ end
16
+ # applying nav elements
17
+ ComfortableMexicanSofa::ViewHooks.add(:navigation, '/admin/gallery/navigation')
18
+ ComfortableMexicanSofa::ViewHooks.add(:html_head, '/admin/gallery/html_head')
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,50 @@
1
+ class ComfyGallery::FormBuilder < ActionView::Helpers::FormBuilder
2
+
3
+ helpers = field_helpers -
4
+ %w(hidden_field fields_for) +
5
+ %w(select)
6
+
7
+ helpers.each do |name|
8
+ class_eval %Q^
9
+ def #{name}(field, *args)
10
+ options = args.extract_options!
11
+ args << options
12
+ return super if options.delete(:disable_builder)
13
+ default_field('#{name}', field, options){ super }
14
+ end
15
+ ^
16
+ end
17
+
18
+ def default_field(type, field, options = {}, &block)
19
+ errors = if object.respond_to?(:errors) && object.errors[field].present?
20
+ "<div class='errors'>#{[object.errors[field]].flatten.first}</div>"
21
+ end
22
+ if desc = options.delete(:desc)
23
+ desc = "<div class='desc'>#{desc}</div>"
24
+ end
25
+ %(
26
+ <div class='form_element #{type}_element #{'errors' if errors}'>
27
+ <div class='label'>#{label_for(field, options)}</div>
28
+ <div class='value'>#{yield}</div>
29
+ #{desc}
30
+ #{errors}
31
+ </div>
32
+ ).html_safe
33
+ end
34
+
35
+ def label_for(field, options)
36
+ label = options.delete(:label) || field.to_s.titleize.capitalize
37
+ "<label for=\"#{object_name}_#{field}\">#{label}</label>".html_safe
38
+ end
39
+
40
+ def simple_field(label = nil, content = nil, options = {}, &block)
41
+ content ||= @template.capture(&block) if block_given?
42
+ %(
43
+ <div class='form_element #{options.delete(:class)}'>
44
+ <div class='label'>#{label}</div>
45
+ <div class='value'>#{content}</div>
46
+ </div>
47
+ ).html_safe
48
+ end
49
+
50
+ end
@@ -0,0 +1,23 @@
1
+ # Loading engine only if this is not a standalone installation
2
+ unless defined? ComfyGallery::Application
3
+ require File.expand_path('comfy_gallery/engine', File.dirname(__FILE__))
4
+ end
5
+
6
+ require File.expand_path('comfy_gallery/configuration', File.dirname(__FILE__))
7
+ require File.expand_path('comfy_gallery/form_builder', File.dirname(__FILE__))
8
+ require File.expand_path('paperclip_processors/cropper', File.dirname(__FILE__))
9
+
10
+ module ComfyGallery
11
+ class << self
12
+
13
+ def configure
14
+ yield configuration
15
+ end
16
+
17
+ def configuration
18
+ @configuration ||= Configuration.new
19
+ end
20
+ alias :config :configuration
21
+
22
+ end
23
+ end
@@ -0,0 +1,10 @@
1
+ ____ __ ____ _ _
2
+ / ___|___ _ __ ___ / _|_ _ / ___| __ _| | | ___ _ __ _ _
3
+ | | / _ \| '_ ` _ \| |_| | | | | _ / _` | | |/ _ \ '__| | | |
4
+ | |__| (_) | | | | | | _| |_| | |_| | (_| | | | __/ | | |_| |
5
+ \____\___/|_| |_| |_|_| \__, |\____|\__,_|_|_|\___|_| \__, |
6
+ |___/ |___/
7
+
8
+ Hey! Everything is almost done. Please don't forget to
9
+
10
+ * run migrations -> `rake db:migrate`
@@ -0,0 +1,33 @@
1
+ class ComfyGalleryGenerator < Rails::Generators::Base
2
+
3
+ require 'rails/generators/active_record'
4
+ include Rails::Generators::Migration
5
+ include Thor::Actions
6
+
7
+ source_root File.expand_path('../../..', __FILE__)
8
+
9
+ def generate_migration
10
+ destination = File.expand_path('db/migrate/01_create_comfy_gallery.rb', self.destination_root)
11
+ migration_dir = File.dirname(destination)
12
+ destination = self.class.migration_exists?(migration_dir, 'create_comfy_gallery')
13
+
14
+ if destination
15
+ puts "\e[0m\e[31mFound existing create_comfy_gallery.rb migration. Remove it if you want to regenerate.\e[0m"
16
+ else
17
+ migration_template 'db/migrate/01_create_comfy_gallery.rb', 'db/migrate/create_comfy_gallery.rb'
18
+ end
19
+ end
20
+
21
+ def generate_initialization
22
+ copy_file 'config/initializers/comfy_gallery.rb', 'config/initializers/comfy_gallery.rb'
23
+ end
24
+
25
+ def show_readme
26
+ readme 'lib/generators/README'
27
+ end
28
+
29
+ def self.next_migration_number(dirname)
30
+ ActiveRecord::Generators::Base.next_migration_number(dirname)
31
+ end
32
+
33
+ end
@@ -0,0 +1,31 @@
1
+ module Paperclip
2
+
3
+ class Cropper < Thumbnail
4
+ def transformation_command
5
+ if crop_command
6
+ crop_command + super.join(' ').sub(/ -crop \S+/, '').split(' ')
7
+ else
8
+ super
9
+ end
10
+ end
11
+ end
12
+
13
+ class ThumbCropper < Cropper
14
+ def crop_command
15
+ target = @attachment.instance
16
+ if target.cropping_thumb?
17
+ ["-crop", "#{target.thumb_crop_w}x#{target.thumb_crop_h}+#{target.thumb_crop_x}+#{target.thumb_crop_y}"]
18
+ end
19
+ end
20
+ end
21
+
22
+ class FullCropper < Cropper
23
+ def crop_command
24
+ target = @attachment.instance
25
+ if target.cropping_full?
26
+ ["-crop", "#{target.full_crop_w}x#{target.full_crop_h}+#{target.full_crop_x}+#{target.full_crop_y}"]
27
+ end
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,4 @@
1
+ # Small hack to auto-run migrations during testing
2
+ namespace :db do
3
+ task :abort_if_pending_migrations => [:migrate]
4
+ end
data/script/rails ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,175 @@
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 = "sofa_gallery"
8
+ s.version = "0.0.6"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Oleg Khabarov", "Stephen McLeod", "The Working Group Inc."]
12
+ s.date = "2011-10-11"
13
+ s.description = ""
14
+ s.email = "stephen@theworkinggroup.ca"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".travis.yml",
22
+ "Gemfile",
23
+ "LICENSE",
24
+ "README.md",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "app/assets/images/sofa_gallery/jcrop.gif",
28
+ "app/assets/images/sofa_gallery/orbit/bullets.jpg",
29
+ "app/assets/images/sofa_gallery/orbit/left-arrow.png",
30
+ "app/assets/images/sofa_gallery/orbit/loading.gif",
31
+ "app/assets/images/sofa_gallery/orbit/mask-black.png",
32
+ "app/assets/images/sofa_gallery/orbit/pause-black.png",
33
+ "app/assets/images/sofa_gallery/orbit/right-arrow.png",
34
+ "app/assets/images/sofa_gallery/orbit/rotator-black.png",
35
+ "app/assets/images/sofa_gallery/orbit/timer-black.png",
36
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/btnNext.png",
37
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/btnPrevious.png",
38
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/contentPattern.png",
39
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/default_thumbnail.gif",
40
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/loader.gif",
41
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_rounded/sprite.png",
42
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_square/btnNext.png",
43
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_square/btnPrevious.png",
44
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_square/contentPattern.png",
45
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_square/default_thumbnail.gif",
46
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_square/loader.gif",
47
+ "app/assets/images/sofa_gallery/prettyPhoto/dark_square/sprite.png",
48
+ "app/assets/images/sofa_gallery/prettyPhoto/default/default_thumb.png",
49
+ "app/assets/images/sofa_gallery/prettyPhoto/default/loader.gif",
50
+ "app/assets/images/sofa_gallery/prettyPhoto/default/sprite.png",
51
+ "app/assets/images/sofa_gallery/prettyPhoto/default/sprite_next.png",
52
+ "app/assets/images/sofa_gallery/prettyPhoto/default/sprite_prev.png",
53
+ "app/assets/images/sofa_gallery/prettyPhoto/default/sprite_x.png",
54
+ "app/assets/images/sofa_gallery/prettyPhoto/default/sprite_y.png",
55
+ "app/assets/images/sofa_gallery/prettyPhoto/facebook/btnNext.png",
56
+ "app/assets/images/sofa_gallery/prettyPhoto/facebook/btnPrevious.png",
57
+ "app/assets/images/sofa_gallery/prettyPhoto/facebook/contentPatternBottom.png",
58
+ "app/assets/images/sofa_gallery/prettyPhoto/facebook/contentPatternLeft.png",
59
+ "app/assets/images/sofa_gallery/prettyPhoto/facebook/contentPatternRight.png",
60
+ "app/assets/images/sofa_gallery/prettyPhoto/facebook/contentPatternTop.png",
61
+ "app/assets/images/sofa_gallery/prettyPhoto/facebook/default_thumbnail.gif",
62
+ "app/assets/images/sofa_gallery/prettyPhoto/facebook/loader.gif",
63
+ "app/assets/images/sofa_gallery/prettyPhoto/facebook/sprite.png",
64
+ "app/assets/images/sofa_gallery/prettyPhoto/light_rounded/btnNext.png",
65
+ "app/assets/images/sofa_gallery/prettyPhoto/light_rounded/btnPrevious.png",
66
+ "app/assets/images/sofa_gallery/prettyPhoto/light_rounded/default_thumbnail.gif",
67
+ "app/assets/images/sofa_gallery/prettyPhoto/light_rounded/loader.gif",
68
+ "app/assets/images/sofa_gallery/prettyPhoto/light_rounded/sprite.png",
69
+ "app/assets/images/sofa_gallery/prettyPhoto/light_square/btnNext.png",
70
+ "app/assets/images/sofa_gallery/prettyPhoto/light_square/btnPrevious.png",
71
+ "app/assets/images/sofa_gallery/prettyPhoto/light_square/default_thumbnail.gif",
72
+ "app/assets/images/sofa_gallery/prettyPhoto/light_square/loader.gif",
73
+ "app/assets/images/sofa_gallery/prettyPhoto/light_square/sprite.png",
74
+ "app/assets/javascripts/sofa_gallery/admin.js",
75
+ "app/assets/javascripts/sofa_gallery/application.js",
76
+ "app/assets/javascripts/sofa_gallery/jquery.jcrop.js",
77
+ "app/assets/javascripts/sofa_gallery/jquery.orbit-1.2.3.min.js",
78
+ "app/assets/javascripts/sofa_gallery/thumbnails.js",
79
+ "app/assets/stylesheets/sofa_gallery/admin.css",
80
+ "app/assets/stylesheets/sofa_gallery/application.css",
81
+ "app/assets/stylesheets/sofa_gallery/carousel.css.erb",
82
+ "app/assets/stylesheets/sofa_gallery/gallery_list.css",
83
+ "app/assets/stylesheets/sofa_gallery/jquery.jcrop.css",
84
+ "app/assets/stylesheets/sofa_gallery/reset.css",
85
+ "app/assets/stylesheets/sofa_gallery/thumbnails.css.erb",
86
+ "app/controllers/application_controller.rb",
87
+ "app/controllers/sofa_gallery/admin/base_controller.rb",
88
+ "app/controllers/sofa_gallery/admin/galleries_controller.rb",
89
+ "app/controllers/sofa_gallery/admin/photos_controller.rb",
90
+ "app/controllers/sofa_gallery/galleries_controller.rb",
91
+ "app/helpers/sofa_gallery_helper.rb",
92
+ "app/models/sofa_gallery/gallery.rb",
93
+ "app/models/sofa_gallery/photo.rb",
94
+ "app/views/layouts/gallery_admin/application.html.erb",
95
+ "app/views/sofa_gallery/_carousel.html.erb",
96
+ "app/views/sofa_gallery/_list_galleries.html.erb",
97
+ "app/views/sofa_gallery/_thumbnails.html.erb",
98
+ "app/views/sofa_gallery/admin/_html_head.html.erb",
99
+ "app/views/sofa_gallery/admin/_navigation.html.erb",
100
+ "app/views/sofa_gallery/admin/galleries/_form.html.erb",
101
+ "app/views/sofa_gallery/admin/galleries/edit.html.erb",
102
+ "app/views/sofa_gallery/admin/galleries/index.html.erb",
103
+ "app/views/sofa_gallery/admin/galleries/new.html.erb",
104
+ "app/views/sofa_gallery/admin/photos/_form.html.erb",
105
+ "app/views/sofa_gallery/admin/photos/crop.html.erb",
106
+ "app/views/sofa_gallery/admin/photos/edit.html.erb",
107
+ "app/views/sofa_gallery/admin/photos/index.html.erb",
108
+ "app/views/sofa_gallery/admin/photos/new.html.erb",
109
+ "app/views/sofa_gallery/galleries/index.html.erb",
110
+ "app/views/sofa_gallery/galleries/show.html.erb",
111
+ "config.ru",
112
+ "config/application.rb",
113
+ "config/boot.rb",
114
+ "config/database.yml",
115
+ "config/environment.rb",
116
+ "config/environments/development.rb",
117
+ "config/environments/production.rb",
118
+ "config/environments/test.rb",
119
+ "config/initializers/paperclip.rb",
120
+ "config/initializers/sofa_gallery.rb",
121
+ "config/routes.rb",
122
+ "db/migrate/01_create_sofa_gallery.rb",
123
+ "lib/generators/README",
124
+ "lib/generators/sofa_gallery_generator.rb",
125
+ "lib/paperclip_processors/cropper.rb",
126
+ "lib/sofa_gallery.rb",
127
+ "lib/sofa_gallery/configuration.rb",
128
+ "lib/sofa_gallery/engine.rb",
129
+ "lib/sofa_gallery/form_builder.rb",
130
+ "script/rails",
131
+ "sofa_gallery.gemspec",
132
+ "test/fixtures/files/default.jpg",
133
+ "test/fixtures/files/default.txt",
134
+ "test/fixtures/files/default2.jpg",
135
+ "test/fixtures/sofa_gallery/galleries.yml",
136
+ "test/fixtures/sofa_gallery/photos.yml",
137
+ "test/functional/admin/galleries_controller_test.rb",
138
+ "test/functional/admin/photos_controller_test.rb",
139
+ "test/functional/galleries_controller_test.rb",
140
+ "test/test_helper.rb",
141
+ "test/unit/configuration_test.rb",
142
+ "test/unit/gallery_test.rb",
143
+ "test/unit/photo_test.rb"
144
+ ]
145
+ s.homepage = "http://github.com/twg/sofa-gallery"
146
+ s.licenses = ["MIT"]
147
+ s.require_paths = ["lib"]
148
+ s.rubygems_version = "1.8.10"
149
+ s.summary = "SofaGallery is an image gallery engine for Rails 3.1 apps (and ComfortableMexicanSofa)"
150
+
151
+ if s.respond_to? :specification_version then
152
+ s.specification_version = 3
153
+
154
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
155
+ s.add_runtime_dependency(%q<rails>, [">= 3.1.0"])
156
+ s.add_runtime_dependency(%q<paperclip>, ["~> 2.3.0"])
157
+ s.add_runtime_dependency(%q<jquery-rails>, [">= 1.0.14"])
158
+ s.add_development_dependency(%q<sqlite3>, [">= 0"])
159
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
160
+ else
161
+ s.add_dependency(%q<rails>, [">= 3.1.0"])
162
+ s.add_dependency(%q<paperclip>, ["~> 2.3.0"])
163
+ s.add_dependency(%q<jquery-rails>, [">= 1.0.14"])
164
+ s.add_dependency(%q<sqlite3>, [">= 0"])
165
+ s.add_dependency(%q<jeweler>, [">= 0"])
166
+ end
167
+ else
168
+ s.add_dependency(%q<rails>, [">= 3.1.0"])
169
+ s.add_dependency(%q<paperclip>, ["~> 2.3.0"])
170
+ s.add_dependency(%q<jquery-rails>, [">= 1.0.14"])
171
+ s.add_dependency(%q<sqlite3>, [">= 0"])
172
+ s.add_dependency(%q<jeweler>, [">= 0"])
173
+ end
174
+ end
175
+
Binary file
@@ -0,0 +1 @@
1
+ text file
Binary file
@@ -0,0 +1,11 @@
1
+ default:
2
+ title: Default Gallery
3
+ slug: default-gallery
4
+ description: Gallery Description
5
+ full_width: 800
6
+ full_height: 600
7
+ force_ratio_full: false
8
+ thumb_width: 150
9
+ thumb_height: 150
10
+ force_ratio_thumb: true
11
+
@@ -0,0 +1,9 @@
1
+ default:
2
+ gallery: default
3
+ title: Default Photo
4
+ slug: default-photo
5
+ description: Photo Description
6
+ position: 0
7
+ image_file_name: default.jpg
8
+ image_content_type: image/jpeg
9
+ image_file_size: 9999
@@ -0,0 +1,87 @@
1
+ require File.expand_path('../../../test_helper', File.dirname(__FILE__))
2
+
3
+ class Admin::Gallery::GalleriesControllerTest < ActionController::TestCase
4
+
5
+ def test_get_index
6
+ get :index
7
+ assert_response :success
8
+ assert_template 'index'
9
+ end
10
+
11
+ def test_get_new
12
+ get :new
13
+ assert_response :success
14
+ assert_template 'new'
15
+ assert assigns(:gallery)
16
+ assert_select "form[action='/admin/gallery/galleries']"
17
+ end
18
+
19
+ def test_creation
20
+ assert_difference 'Gallery::Gallery.count', 1 do
21
+ post :create, :gallery => {
22
+ :title => 'Test Gallery',
23
+ :slug => 'test-gallery',
24
+ :description => 'Test Description'
25
+ }
26
+ end
27
+ assert_equal 'Gallery created', flash[:notice]
28
+ assert_redirected_to :action => :index
29
+ end
30
+
31
+ def test_creation_failure
32
+ assert_no_difference 'Gallery::Gallery.count' do
33
+ post :create, :gallery => { }
34
+ end
35
+ assert_response :success
36
+ assert_template 'new'
37
+ assert_equal 'Failed to create Gallery', flash[:error]
38
+ end
39
+
40
+ def test_get_edit
41
+ gallery = gallery_galleries(:default)
42
+ get :edit, :id => gallery
43
+ assert_response :success
44
+ assert_template 'edit'
45
+ assert assigns(:gallery)
46
+ assert_select "form[action='/admin/gallery/galleries/#{gallery.id}']"
47
+ end
48
+
49
+ def test_get_edit_failure
50
+ get :edit, :id => 'invalid'
51
+ assert_response :redirect
52
+ assert_redirected_to :action => :index
53
+ assert_equal 'Gallery not found', flash[:error]
54
+ end
55
+
56
+ def test_update
57
+ gallery = gallery_galleries(:default)
58
+ put :update, :id => gallery, :gallery => {
59
+ :title => 'New Title'
60
+ }
61
+ gallery.reload
62
+ assert_equal 'New Title', gallery.title
63
+ assert_equal 'Gallery updated', flash[:notice]
64
+ assert_redirected_to :action => :index
65
+ end
66
+
67
+ def test_update_failure
68
+ gallery = gallery_galleries(:default)
69
+ put :update, :id => gallery, :gallery => {
70
+ :title => ''
71
+ }
72
+ assert_response :success
73
+ assert_template 'edit'
74
+ assert_equal 'Failed to update Gallery', flash[:error]
75
+ gallery.reload
76
+ assert_not_equal '', gallery.title
77
+ end
78
+
79
+ def test_destroy
80
+ assert_difference 'Gallery::Gallery.count', -1 do
81
+ delete :destroy, :id => gallery_galleries(:default)
82
+ end
83
+ assert_equal 'Gallery deleted', flash[:notice]
84
+ assert_redirected_to :action => :index
85
+ end
86
+
87
+ end