cropimage_riffpad 0.0.1

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 (50) hide show
  1. data/.gitignore +17 -0
  2. data/.gitignore.swp +0 -0
  3. data/Gemfile +13 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +1 -0
  7. data/app/assets/images/Jcrop.gif +0 -0
  8. data/app/assets/images/blank.gif +0 -0
  9. data/app/assets/images/fancy_close.png +0 -0
  10. data/app/assets/images/fancy_loading.png +0 -0
  11. data/app/assets/images/fancy_nav_left.png +0 -0
  12. data/app/assets/images/fancy_nav_right.png +0 -0
  13. data/app/assets/images/fancy_shadow_e.png +0 -0
  14. data/app/assets/images/fancy_shadow_n.png +0 -0
  15. data/app/assets/images/fancy_shadow_ne.png +0 -0
  16. data/app/assets/images/fancy_shadow_nw.png +0 -0
  17. data/app/assets/images/fancy_shadow_s.png +0 -0
  18. data/app/assets/images/fancy_shadow_se.png +0 -0
  19. data/app/assets/images/fancy_shadow_sw.png +0 -0
  20. data/app/assets/images/fancy_shadow_w.png +0 -0
  21. data/app/assets/images/fancy_title_left.png +0 -0
  22. data/app/assets/images/fancy_title_main.png +0 -0
  23. data/app/assets/images/fancy_title_over.png +0 -0
  24. data/app/assets/images/fancy_title_right.png +0 -0
  25. data/app/assets/images/fancybox-x.png +0 -0
  26. data/app/assets/images/fancybox-y.png +0 -0
  27. data/app/assets/images/fancybox.png +0 -0
  28. data/app/assets/javascripts/.DS_Store +0 -0
  29. data/app/assets/javascripts/awesome_gem.js +14 -0
  30. data/app/assets/javascripts/jquery.Jcrop.js +1695 -0
  31. data/app/assets/javascripts/jquery.color.js +123 -0
  32. data/app/assets/javascripts/jquery.easing-1.3.pack.js +72 -0
  33. data/app/assets/javascripts/jquery.fancybox-1.3.4.js +1156 -0
  34. data/app/assets/javascripts/jquery.mousewheel-3.0.4.pack.js +14 -0
  35. data/app/assets/stylesheets/.DS_Store +0 -0
  36. data/app/assets/stylesheets/awesome_gem.css.scss +6 -0
  37. data/app/assets/stylesheets/jquery.Jcrop.css +86 -0
  38. data/app/assets/stylesheets/jquery.Jcrop.min.css +28 -0
  39. data/app/assets/stylesheets/jquery.fancybox-1.3.4.css +359 -0
  40. data/app/assets/stylesheets/style.css +151 -0
  41. data/app/helpers/cropimage_riffpad/crop_image_helper.rb +65 -0
  42. data/cropimage_riffpad.gemspec +19 -0
  43. data/lib/cropimage_riffpad/.DS_Store +0 -0
  44. data/lib/cropimage_riffpad/crop_image_controller.rb +39 -0
  45. data/lib/cropimage_riffpad/crop_image_model.rb +28 -0
  46. data/lib/cropimage_riffpad/paperclip_processors/cropper.rb +27 -0
  47. data/lib/cropimage_riffpad/version.rb +3 -0
  48. data/lib/cropimage_riffpad.rb +14 -0
  49. data/lib/generators/cropimage_riffpad/install_generator.rb +37 -0
  50. metadata +94 -0
@@ -0,0 +1,65 @@
1
+ module CropImageRiffpad
2
+ module CropImageHelper
3
+ def crop_image_helper(model_name, attachment_name, style)
4
+ @object = ActiveSupport::Inflector.constantize(ActiveSupport::Inflector.classify(model_name)).find(params[:id])
5
+ html = [javascript_tag(%Q{
6
+ $(function() {
7
+ $('#cropbox').Jcrop({
8
+ onChange: update_crop,
9
+ onSelect: update_crop,
10
+ setSelect: [10, 10, 100, 100],
11
+ aspectRatio: 1
12
+ });
13
+ });
14
+
15
+ function update_crop(coords) {
16
+ var rx = 100/coords.w;
17
+ var ry = 100/coords.h;
18
+ $('#preview').css({
19
+ width: Math.round(rx * #{@object.send("#{attachment_name}_geometry", style).width}) + 'px',
20
+ height: Math.round(ry * #{@object.send("#{attachment_name}_geometry", style).height}) + 'px',
21
+ marginLeft: '-' + Math.round(rx * coords.x) + 'px',
22
+ marginTop: '-' + Math.round(ry * coords.y) + 'px'
23
+ });
24
+ var ratio = #{@object.send("#{attachment_name}_geometry", :original).width} / #{@object.send("#{attachment_name}_geometry", style).width};
25
+ $("#crop_x").val(Math.round(coords.x * ratio));
26
+ $("#crop_y").val(Math.round(coords.y * ratio));
27
+ $("#crop_w").val(Math.round(coords.w * ratio));
28
+ $("#crop_h").val(Math.round(coords.h * ratio));
29
+ }
30
+ }
31
+ )]
32
+ html << content_tag(:div, id: "content") do
33
+ content_tag(:div, class: "form_show") do
34
+ [content_tag(:div, class: "fs-header") do
35
+ content_tag(:p, "Edit Your Profile Photo", class: "fs-title")
36
+ end,
37
+ content_tag(:div, class: "fs-content") do
38
+ [content_tag(:p, "Position or align your photo by resizing the square below.", class: "fs-c-h1"),
39
+ content_tag(:p, "You can see how these changes will appear in your profile in the image on the right.", class: "fs-c-h2")].join.html_safe
40
+ end,
41
+ content_tag(:div, class: "image_2") do
42
+ image_tag(@object.send("#{attachment_name}").url(style), id: "preview",)
43
+ end,
44
+ content_tag(:div, class: "clr") do end,
45
+ content_tag(:div, class: "border-1") do end,
46
+ content_tag(:div, class: "image_1") do
47
+ image_tag(@object.send("#{attachment_name}").url(style), id: "cropbox")
48
+ end,
49
+ content_tag(:div, class: "border-1") do end,
50
+ (form_for @object do |f|
51
+ fields_array = []
52
+ fields_array << hidden_field_tag("crop", true)
53
+ for attribute in [:crop_x, :crop_y, :crop_w, :crop_h]
54
+ fields_array << f.hidden_field(attribute, :id => attribute)
55
+ end
56
+ fields_array << f.submit("Save", class: "button_submit")
57
+ fields_array.join.html_safe
58
+ end)].join.html_safe
59
+ end
60
+ end
61
+
62
+ html.join.html_safe
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'cropimage_riffpad/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "cropimage_riffpad"
8
+ gem.version = CropimageRiffpad::VERSION
9
+ gem.authors = ["thanh tuan"]
10
+ gem.email = ["tuan@rubify.com"]
11
+ gem.description = %q{Crop Image}
12
+ gem.summary = %q{Crop Image}
13
+ gem.homepage = ""
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+ end
Binary file
@@ -0,0 +1,39 @@
1
+ module CropImageRiffpad
2
+ module ControllerMethod
3
+
4
+ def crop_image(model_name, attachment_name, style) # model_name = "user" => class User | model_name = "user_photo" => UserPhoto
5
+ [:update, :create].each do |action_name|
6
+ define_method action_name do # define action update for controller
7
+ if params[:action].to_s == "update"
8
+ @object = ActiveSupport::Inflector.constantize(ActiveSupport::Inflector.classify(model_name)).find(params[:id])
9
+ @object.attributes = params[model_name.to_sym]
10
+ else
11
+ @object = ActiveSupport::Inflector.constantize(ActiveSupport::Inflector.classify(model_name)).new(params[model_name.to_sym])
12
+ end
13
+ if @object.save
14
+ params[:id] = @object.id
15
+ if params[:crop] == "true"
16
+ redirect_to self.send("#{model_name}_url", @object)
17
+ else
18
+ if params[model_name.to_sym] and params[model_name.to_sym][attachment_name.to_sym].blank?
19
+ responds_to_parent do
20
+ render :js => "document.location = \"#{escape_javascript(self.send("#{model_name}_url", @object))}\""
21
+ end
22
+ else
23
+ responds_to_parent do
24
+ crop_action_content = render_to_string :action => :crop
25
+ render :js => "renderFancyBoxWithContent('#{escape_javascript(crop_action_content)}');"
26
+ end
27
+ end
28
+ end
29
+ else
30
+ edit_action_content = render_to_string :action => params[:action]
31
+ responds_to_parent do
32
+ render :js => "$('#container').html('#{escape_javascript(edit_action_content)}');"
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,28 @@
1
+ module CropImageRiffpad
2
+ module ClassMethods
3
+ def awesome_crop(attachment_name)
4
+ # todo - define instance methods
5
+ attr_accessor :crop_x, :crop_y, :crop_w, :crop_h
6
+ after_update "preprocess_#{attachment_name}", :if => :cropping?
7
+ attr_accessible :crop_x, :crop_y, :crop_w, :crop_h
8
+ self.class_eval do
9
+
10
+ def cropping?
11
+ !crop_x.blank? && !crop_y.blank? && !crop_w.blank? && !crop_h.blank?
12
+ end
13
+
14
+ define_method "#{attachment_name}_geometry" do |style=:original|
15
+ @geometry ||= {}
16
+ @geometry[style] ||= Paperclip::Geometry.from_file(self.send(attachment_name).path(style))
17
+ end
18
+
19
+ private
20
+
21
+ define_method "preprocess_#{attachment_name}" do
22
+ self.send(attachment_name).reprocess!
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,27 @@
1
+ module Paperclip
2
+ class Cropper < Thumbnail
3
+ def transformation_command
4
+ puts "Crop Command command ====> #{crop_command}"
5
+ if crop_command
6
+ puts "Super .join ===> #{super.join}"
7
+ command = crop_command + super.join(' ').sub(/ -crop \S+/, '').split(" ")
8
+ puts "Transformation command ====> #{command}"
9
+ target = @attachment.instance
10
+ target.crop_w=""
11
+ target.crop_h=""
12
+ target.crop_x=""
13
+ target.crop_y=""
14
+ return command
15
+ else
16
+ super
17
+ end
18
+ end
19
+
20
+ def crop_command
21
+ target = @attachment.instance
22
+ if target.cropping?
23
+ ["-crop","#{target.crop_w.to_i}x#{target.crop_h.to_i}+#{target.crop_x.to_i}+#{target.crop_y.to_i}"]
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ module CropimageRiffpad
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,14 @@
1
+ require 'cropimage_riffpad/crop_image_controller'
2
+ require 'cropimage_riffpad/crop_image_model'
3
+ require 'cropimage_riffpad/paperclip_processors/cropper'
4
+ require 'new_responds_to_parent'
5
+
6
+ module CropImageRiffpad
7
+ class Engine < ::Rails::Engine
8
+ ActiveRecord::Base.extend(AwesomeGem::ClassMethods)
9
+ ActionController::Base.class_eval do
10
+ include ActionView::Helpers::JavaScriptHelper
11
+ end
12
+ ActionController::Base.extend(AwesomeGem::ControllerMethod)
13
+ end
14
+ end
@@ -0,0 +1,37 @@
1
+ require 'securerandom'
2
+ require 'rails/generators'
3
+ require 'rails/generators/migration'
4
+
5
+ module CropImageRiffpad
6
+ module Generators
7
+
8
+ class InstallGenerator < Rails::Generators::Base
9
+ include Rails::Generators::Migration
10
+
11
+ source_root File.expand_path("../../templates", __FILE__)
12
+
13
+ desc "Creates a Config file and copy locale files to your application."
14
+ class_option :orm
15
+
16
+ def copy_jsfile
17
+ ["awesome_gem.js", "jquery.color.js", "jquery.easing-1.3.pack.js", "jquery.fancybox-1.3.4.js", "jquery.Jcrop.js", "jquery.mousewheel-3.0.4.pack.js"].each do |file|
18
+ copy_file "../../../app/assets/javascripts/#{file}", "app/assets/javascripts/#{file}"
19
+ end
20
+ end
21
+
22
+ def copy_stylefile
23
+ ["awesome_gem.css.scss", "jquery.fancybox-1.3.4.css", "jquery.Jcrop.css", "jquery.Jcrop.min.css", "style.css"].each do |file|
24
+ copy_file "../../../app/assets/stylesheets/#{file}", "app/assets/stylesheets/#{file}"
25
+ end
26
+ end
27
+
28
+ def copy_imagesfile
29
+ ["blank.gif", "fancy_close.png", "fancy_loading.png", "fancy_nav_left.png", "fancy_nav_right.png", "fancy_shadow_e.png", "fancy_shadow_e.png", "fancy_shadow_ne.png", "fancy_shadow_nw.png", "fancy_shadow_s.png", "fancy_shadow_se.png", "fancy_shadow_sw.png", "fancy_shadow_w.png", "fancy_title_left.png", "fancy_title_main.png", "fancy_title_over.png", "fancy_title_right.png", "fancybox-x.png", "fancybox-y.png", "fancybox.png", "Jcrop.gif"].each do |file|
30
+ copy_file "../../../app/assets/images/#{file}", "app/assets/images/#{file}"
31
+ end
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cropimage_riffpad
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - thanh tuan
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-24 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Crop Image
15
+ email:
16
+ - tuan@rubify.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - .gitignore.swp
23
+ - Gemfile
24
+ - LICENSE.txt
25
+ - README.md
26
+ - Rakefile
27
+ - app/assets/images/Jcrop.gif
28
+ - app/assets/images/blank.gif
29
+ - app/assets/images/fancy_close.png
30
+ - app/assets/images/fancy_loading.png
31
+ - app/assets/images/fancy_nav_left.png
32
+ - app/assets/images/fancy_nav_right.png
33
+ - app/assets/images/fancy_shadow_e.png
34
+ - app/assets/images/fancy_shadow_n.png
35
+ - app/assets/images/fancy_shadow_ne.png
36
+ - app/assets/images/fancy_shadow_nw.png
37
+ - app/assets/images/fancy_shadow_s.png
38
+ - app/assets/images/fancy_shadow_se.png
39
+ - app/assets/images/fancy_shadow_sw.png
40
+ - app/assets/images/fancy_shadow_w.png
41
+ - app/assets/images/fancy_title_left.png
42
+ - app/assets/images/fancy_title_main.png
43
+ - app/assets/images/fancy_title_over.png
44
+ - app/assets/images/fancy_title_right.png
45
+ - app/assets/images/fancybox-x.png
46
+ - app/assets/images/fancybox-y.png
47
+ - app/assets/images/fancybox.png
48
+ - app/assets/javascripts/.DS_Store
49
+ - app/assets/javascripts/awesome_gem.js
50
+ - app/assets/javascripts/jquery.Jcrop.js
51
+ - app/assets/javascripts/jquery.color.js
52
+ - app/assets/javascripts/jquery.easing-1.3.pack.js
53
+ - app/assets/javascripts/jquery.fancybox-1.3.4.js
54
+ - app/assets/javascripts/jquery.mousewheel-3.0.4.pack.js
55
+ - app/assets/stylesheets/.DS_Store
56
+ - app/assets/stylesheets/awesome_gem.css.scss
57
+ - app/assets/stylesheets/jquery.Jcrop.css
58
+ - app/assets/stylesheets/jquery.Jcrop.min.css
59
+ - app/assets/stylesheets/jquery.fancybox-1.3.4.css
60
+ - app/assets/stylesheets/style.css
61
+ - app/helpers/cropimage_riffpad/crop_image_helper.rb
62
+ - cropimage_riffpad.gemspec
63
+ - lib/cropimage_riffpad.rb
64
+ - lib/cropimage_riffpad/.DS_Store
65
+ - lib/cropimage_riffpad/crop_image_controller.rb
66
+ - lib/cropimage_riffpad/crop_image_model.rb
67
+ - lib/cropimage_riffpad/paperclip_processors/cropper.rb
68
+ - lib/cropimage_riffpad/version.rb
69
+ - lib/generators/cropimage_riffpad/install_generator.rb
70
+ homepage: ''
71
+ licenses: []
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirements: []
89
+ rubyforge_project:
90
+ rubygems_version: 1.8.24
91
+ signing_key:
92
+ specification_version: 3
93
+ summary: Crop Image
94
+ test_files: []