jquery-iframe_auto_resize 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/MIT-LICENSE +21 -0
  2. data/README.rdoc +28 -0
  3. data/Rakefile +39 -0
  4. data/app/assets/javascripts/jquery.iframe_auto_resize.js.coffee +59 -0
  5. data/lib/jquery-iframe_auto_resize.rb +4 -0
  6. data/lib/jquery-iframe_auto_resize/engine.rb +6 -0
  7. data/lib/jquery-iframe_auto_resize/version.rb +3 -0
  8. data/test/dummy/Gemfile +6 -0
  9. data/test/dummy/Gemfile.lock +9 -0
  10. data/test/dummy/Rakefile +7 -0
  11. data/test/dummy/app/assets/javascripts/application.js +11 -0
  12. data/test/dummy/app/assets/javascripts/static.js +2 -0
  13. data/test/dummy/app/assets/stylesheets/application.css +7 -0
  14. data/test/dummy/app/assets/stylesheets/static.css +4 -0
  15. data/test/dummy/app/controllers/application_controller.rb +3 -0
  16. data/test/dummy/app/controllers/static_controller.rb +12 -0
  17. data/test/dummy/app/helpers/application_helper.rb +2 -0
  18. data/test/dummy/app/helpers/static_helper.rb +2 -0
  19. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  20. data/test/dummy/app/views/static/container.html.haml +32 -0
  21. data/test/dummy/app/views/static/iframe.html.haml +30 -0
  22. data/test/dummy/app/views/static/iframe_with_margin.html.haml +30 -0
  23. data/test/dummy/config.ru +4 -0
  24. data/test/dummy/config/application.rb +45 -0
  25. data/test/dummy/config/boot.rb +10 -0
  26. data/test/dummy/config/database.yml +25 -0
  27. data/test/dummy/config/environment.rb +5 -0
  28. data/test/dummy/config/environments/development.rb +30 -0
  29. data/test/dummy/config/environments/production.rb +60 -0
  30. data/test/dummy/config/environments/test.rb +42 -0
  31. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  32. data/test/dummy/config/initializers/inflections.rb +10 -0
  33. data/test/dummy/config/initializers/mime_types.rb +5 -0
  34. data/test/dummy/config/initializers/secret_token.rb +7 -0
  35. data/test/dummy/config/initializers/session_store.rb +8 -0
  36. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  37. data/test/dummy/config/locales/en.yml +5 -0
  38. data/test/dummy/config/routes.rb +10 -0
  39. data/test/dummy/db/development.sqlite3 +0 -0
  40. data/test/dummy/log/development.log +17214 -0
  41. data/test/dummy/public/404.html +26 -0
  42. data/test/dummy/public/422.html +26 -0
  43. data/test/dummy/public/500.html +26 -0
  44. data/test/dummy/public/favicon.ico +0 -0
  45. data/test/dummy/script/rails +6 -0
  46. data/test/dummy/test/functional/static_controller_test.rb +14 -0
  47. data/test/dummy/test/unit/helpers/static_helper_test.rb +4 -0
  48. data/test/dummy/tmp/cache/assets/C83/200/sprockets%2F9f17e19443d1498ad1ff448310126e53 +0 -0
  49. data/test/dummy/tmp/cache/assets/CA0/A40/sprockets%2Fc1a3b329f54c41592a0854a40f8425e0 +0 -0
  50. data/test/dummy/tmp/cache/assets/CB9/CC0/sprockets%2Fb68d675ba83744035424e579b485c5ba +0 -0
  51. data/test/dummy/tmp/cache/assets/CE9/C20/sprockets%2F0730a1144051a740bb8270be1c38afbb +0 -0
  52. data/test/dummy/tmp/cache/assets/CEB/740/sprockets%2F167888e8cfb09ae4a18e7b75b4011738 +0 -0
  53. data/test/dummy/tmp/cache/assets/D02/1D0/sprockets%2F56536bb3e46ab1f153ba27f0640e57b5 +0 -0
  54. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  55. data/test/dummy/tmp/cache/assets/D4E/340/sprockets%2F4e1fb092086bdcf36e82d47a496e558f +0 -0
  56. data/test/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +0 -0
  57. data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +0 -0
  58. data/test/dummy/tmp/cache/assets/DAF/370/sprockets%2Fda500fcfbdf1b2022cd31e35f21d65c2 +0 -0
  59. data/test/dummy/tmp/cache/assets/DC7/0E0/sprockets%2F2cdcb1089fe8a96b07fa1beb4356a3f2 +0 -0
  60. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  61. data/test/dummy/tmp/cache/assets/E6C/EC0/sprockets%2Ffe8be20beeaee9c36c6ce798be7813ad +0 -0
  62. data/test/integration/navigation_test.rb +10 -0
  63. data/test/jquery-iframe_auto_resize_test.rb +7 -0
  64. data/test/test_helper.rb +10 -0
  65. metadata +243 -0
@@ -0,0 +1,21 @@
1
+ Copyright 2011 Patrick Helm
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
@@ -0,0 +1,28 @@
1
+ = JqueryIframeAutoResize
2
+
3
+ JQuery Plugin to auto-resize iFrames from same domain.
4
+
5
+ == Incude in your application.js
6
+
7
+ ..
8
+ //= require jquery.iframe_auto_resize
9
+ ..
10
+
11
+ == Example:
12
+
13
+ $(document).ready(function () {
14
+ $('iframe').iframeAutoResize({
15
+ interval: 100, // ms
16
+ minHeight: 200, // px
17
+ maxHeight: 800, // px
18
+ heightOffset: 5, // px
19
+ callback: function(){/*...*/},
20
+ debug: false
21
+ });
22
+ });
23
+
24
+
25
+ == Known Bugs:
26
+ * Issues if margins on iFrames are used
27
+ * Issues with IE if iframe with "frameborder='1'" is used
28
+
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'JqueryIframeAutoResize'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
24
+ load 'rails/tasks/engine.rake'
25
+
26
+
27
+ Bundler::GemHelper.install_tasks
28
+
29
+ require 'rake/testtask'
30
+
31
+ Rake::TestTask.new(:test) do |t|
32
+ t.libs << 'lib'
33
+ t.libs << 'test'
34
+ t.pattern = 'test/**/*_test.rb'
35
+ t.verbose = false
36
+ end
37
+
38
+
39
+ task :default => :test
@@ -0,0 +1,59 @@
1
+ # broken if iframe is defined with margin
2
+ # broken in IE if frameborder is used
3
+
4
+ $ = jQuery
5
+ $.fn.iframeAutoResize = (spec) ->
6
+
7
+ debug = (message) ->
8
+ if options.debug == true && console && console.log
9
+ console.log(message)
10
+ else if options.debug == true
11
+ alert(message)
12
+
13
+ options = $.extend({
14
+ interval: 0,
15
+ minHeight: 0,
16
+ maxHeight: 0,
17
+ heightOffset: 0,
18
+ # minWidth: 0,
19
+ # maxWidth: 0,
20
+ # widthOffset: 0,
21
+ callback: (newHeight) -> {},
22
+ debug: false
23
+ }, spec);
24
+
25
+ debug(options)
26
+
27
+ resizeHeight = (iframe) ->
28
+ $body = $(iframe).contents().find('body')
29
+ if $body.length > 0
30
+ newHeight = $body[0].offsetHeight + options.heightOffset
31
+ else
32
+ newHeight = options.heightOffset
33
+ #newHeight = $body[0].clientHeight + options.heightOffset
34
+ #newHeight = $body[0].scrollHeight + options.heightOffset
35
+ #newHeight = $($body[0]).height() + options.heightOffset
36
+ if (newHeight < options.minHeight)
37
+ newHeight = options.minHeight + options.heightOffset;
38
+ if (newHeight > options.maxHeight && options.maxHeight != 0)
39
+ newHeight = options.maxHeight + options.heightOffset;
40
+ iframe.style.height = newHeight + 'px';
41
+ options.callback(newFrameHeight: newHeight)
42
+
43
+
44
+ $(this).each ->
45
+ iframe = this
46
+ delayedResize = ->
47
+ resizeHeight(iframe)
48
+
49
+ source = $(this).attr('src')
50
+ $(this).attr('src', '')
51
+
52
+ $(this).load ->
53
+ resizeHeight(this)
54
+
55
+ $(this).attr('src', source)
56
+
57
+ if options.interval != 0
58
+ setInterval(delayedResize, options.interval)
59
+
@@ -0,0 +1,4 @@
1
+ require "jquery-iframe_auto_resize/engine"
2
+
3
+ module JqueryIframeAutoResize
4
+ end
@@ -0,0 +1,6 @@
1
+ module JqueryIframeAutoResize
2
+ class Engine < Rails::Engine
3
+ #isolate_namespace JqueryIframeAutoResize
4
+ end
5
+ end
6
+
@@ -0,0 +1,3 @@
1
+ module JqueryIframeAutoResize
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,6 @@
1
+ #group :development, :test do
2
+ # gem 'jquery-rails'
3
+ # gem 'coffee-rails', "~> 3.1.0"
4
+ # gem 'haml'
5
+ #end
6
+
@@ -0,0 +1,9 @@
1
+ GEM
2
+ specs:
3
+ haml (3.1.2)
4
+
5
+ PLATFORMS
6
+ ruby
7
+
8
+ DEPENDENCIES
9
+ haml
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
3
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
4
+
5
+ require File.expand_path('../config/application', __FILE__)
6
+
7
+ Dummy::Application.load_tasks
@@ -0,0 +1,11 @@
1
+ // This is a manifest file that'll be compiled into including all the files listed below.
2
+ // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
3
+ // be included in the compiled file accessible from http://example.com/assets/application.js
4
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
5
+ // the compiled file.
6
+ //
7
+ //= require jquery
8
+ //= require jquery_ujs
9
+ //= require jquery.iframe_auto_resize
10
+ //= require_tree .
11
+
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,7 @@
1
+ /*
2
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
5
+ *= require_self
6
+ *= require_tree .
7
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,3 @@
1
+ class ApplicationController < ActionController::Base
2
+ protect_from_forgery
3
+ end
@@ -0,0 +1,12 @@
1
+ class StaticController < ApplicationController
2
+ def container
3
+ end
4
+
5
+ def iframe
6
+ end
7
+
8
+ def iframe_with_margin
9
+ end
10
+
11
+ end
12
+
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module StaticHelper
2
+ end
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <%= stylesheet_link_tag "application" %>
6
+ <%= javascript_include_tag "application" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
@@ -0,0 +1,32 @@
1
+ :css
2
+ .left{
3
+ padding-left:10px;
4
+ float:left;
5
+ }
6
+
7
+ .clear{
8
+ clear:both;
9
+ }
10
+
11
+ %h1 Static#container
12
+ %p Find me in app/views/static/container.html.haml
13
+
14
+ .left
15
+ %iframe{:src => url_for(:controller => :static, :action => :iframe),
16
+ :scrolling => :no, :frameborder=>"0", :height => "0px"}
17
+
18
+ .left
19
+ %iframe{:src => url_for(:controller => :static, :action => :iframe_with_margin),
20
+ :scrolling => :no, :frameborder=>"0", :height => "0px"}
21
+ .clear
22
+
23
+ :javascript
24
+ $(document).ready(function () {
25
+ $('iframe').iframeAutoResize({
26
+ interval: 100,
27
+ debug: false,
28
+ heightOffset: 0,
29
+ minHeight: 0
30
+ });
31
+ });
32
+
@@ -0,0 +1,30 @@
1
+ :css
2
+ body{
3
+ border: 5px solid green;
4
+ background: red;
5
+ overflow: hidden;
6
+ padding: 5px;
7
+ margin: 0px;
8
+ }
9
+
10
+ %p Head
11
+ %h1 Static#iframe
12
+ %p Find me in app/views/static/iframe.html.haml
13
+
14
+ :javascript
15
+ $(document).ready(function(){
16
+ function randomSize(){
17
+ $("body *").each(function(){
18
+ var randomnumber=Math.floor(Math.random()*100)
19
+ $(this).height(randomnumber+"px");
20
+ });
21
+ setTimeout(randomSize, 1000);
22
+ }
23
+
24
+ $("*").each(function(){
25
+ $(this).css("overflow", "hidden");
26
+ });
27
+
28
+ setTimeout(randomSize, 10);
29
+ });
30
+
@@ -0,0 +1,30 @@
1
+ :css
2
+ body{
3
+ border: 5px solid green;
4
+ background: red;
5
+ overflow: hidden;
6
+ padding: 5px;
7
+ margin: 5px;
8
+ }
9
+
10
+ %p I am a
11
+ %h1 Static#iframe_with_margin
12
+ %p Find me in app/views/static/iframe_with_margin.html.haml
13
+
14
+ :javascript
15
+ $(document).ready(function(){
16
+ function randomSize(){
17
+ $("body *").each(function(){
18
+ var randomnumber=Math.floor(Math.random()*100)
19
+ $(this).height(randomnumber+"px");
20
+ });
21
+ setTimeout(randomSize, 1000);
22
+ }
23
+
24
+ $("*").each(function(){
25
+ $(this).css("overflow", "hidden");
26
+ });
27
+
28
+ setTimeout(randomSize, 10);
29
+ });
30
+
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run Dummy::Application
@@ -0,0 +1,45 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails/all'
4
+
5
+ Bundler.require
6
+ require "jquery-iframe_auto_resize"
7
+
8
+ module Dummy
9
+ class Application < Rails::Application
10
+ # Settings in config/environments/* take precedence over those specified here.
11
+ # Application configuration should go into files in config/initializers
12
+ # -- all .rb files in that directory are automatically loaded.
13
+
14
+ # Custom directories with classes and modules you want to be autoloadable.
15
+ # config.autoload_paths += %W(#{config.root}/extras)
16
+
17
+ # Only load the plugins named here, in the order given (default is alphabetical).
18
+ # :all can be used as a placeholder for all plugins not explicitly named.
19
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
20
+
21
+ # Activate observers that should always be running.
22
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
23
+
24
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
25
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
26
+ # config.time_zone = 'Central Time (US & Canada)'
27
+
28
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
29
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
30
+ # config.i18n.default_locale = :de
31
+
32
+ # Configure the default encoding used in templates for Ruby 1.9.
33
+ config.encoding = "utf-8"
34
+
35
+ # Configure sensitive parameters which will be filtered from the log file.
36
+ config.filter_parameters += [:password]
37
+
38
+ # Enable the asset pipeline
39
+ config.assets.enabled = true
40
+
41
+ # Version of your assets, change this if you want to expire all your assets
42
+ config.assets.version = '1.0'
43
+ end
44
+ end
45
+
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ gemfile = File.expand_path('../../../../Gemfile', __FILE__)
3
+
4
+ if File.exist?(gemfile)
5
+ ENV['BUNDLE_GEMFILE'] = gemfile
6
+ require 'bundler'
7
+ Bundler.setup
8
+ end
9
+
10
+ $:.unshift File.expand_path('../../../../lib', __FILE__)
@@ -0,0 +1,25 @@
1
+ # SQLite version 3.x
2
+ # gem install sqlite3
3
+ #
4
+ # Ensure the SQLite 3 gem is defined in your Gemfile
5
+ # gem 'sqlite3'
6
+ development:
7
+ adapter: sqlite3
8
+ database: db/development.sqlite3
9
+ pool: 5
10
+ timeout: 5000
11
+
12
+ # Warning: The database defined as "test" will be erased and
13
+ # re-generated from your development database when you run "rake".
14
+ # Do not set this db to the same as development or production.
15
+ test:
16
+ adapter: sqlite3
17
+ database: db/test.sqlite3
18
+ pool: 5
19
+ timeout: 5000
20
+
21
+ production:
22
+ adapter: sqlite3
23
+ database: db/production.sqlite3
24
+ pool: 5
25
+ timeout: 5000