Upgrade to Rails 3.2 and move some of the assets to the asset pipeline directories
This commit is contained in:
		
							
								
								
									
										8
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | log/*.log | ||||||
|  | tmp/**/* | ||||||
|  | tmp/restart.txt | ||||||
|  | config/database.yml | ||||||
|  | .DS_Store | ||||||
|  | db/*.sqlite3 | ||||||
|  | .bundle | ||||||
|  | .bundle/* | ||||||
							
								
								
									
										3
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								Gemfile
									
									
									
									
									
								
							| @@ -1,8 +1,9 @@ | |||||||
| source 'http://rubygems.org' | source 'http://rubygems.org' | ||||||
|  |  | ||||||
| gem 'rails', '3.0.4'  | gem 'rails', '3.2.1' | ||||||
| gem 'mysql2' | gem 'mysql2' | ||||||
| gem 'authlogic' | gem 'authlogic' | ||||||
|  | gem 'jquery-rails' | ||||||
|  |  | ||||||
| # Bundle gems for the local environment. Make sure to | # Bundle gems for the local environment. Make sure to | ||||||
| # put test-only gems in this group so their generators | # put test-only gems in this group so their generators | ||||||
|   | |||||||
							
								
								
									
										165
									
								
								Gemfile.lock
									
									
									
									
									
								
							
							
						
						
									
										165
									
								
								Gemfile.lock
									
									
									
									
									
								
							| @@ -1,90 +1,108 @@ | |||||||
| GEM | GEM | ||||||
|   remote: http://rubygems.org/ |   remote: http://rubygems.org/ | ||||||
|   specs: |   specs: | ||||||
|     ZenTest (4.5.0) |     ZenTest (4.6.2) | ||||||
|     abstract (1.0.0) |     actionmailer (3.2.1) | ||||||
|     actionmailer (3.0.4) |       actionpack (= 3.2.1) | ||||||
|       actionpack (= 3.0.4) |       mail (~> 2.4.0) | ||||||
|       mail (~> 2.2.15) |     actionpack (3.2.1) | ||||||
|     actionpack (3.0.4) |       activemodel (= 3.2.1) | ||||||
|       activemodel (= 3.0.4) |       activesupport (= 3.2.1) | ||||||
|       activesupport (= 3.0.4) |       builder (~> 3.0.0) | ||||||
|       builder (~> 2.1.2) |       erubis (~> 2.7.0) | ||||||
|       erubis (~> 2.6.6) |       journey (~> 1.0.1) | ||||||
|       i18n (~> 0.4) |       rack (~> 1.4.0) | ||||||
|       rack (~> 1.2.1) |       rack-cache (~> 1.1) | ||||||
|       rack-mount (~> 0.6.13) |       rack-test (~> 0.6.1) | ||||||
|       rack-test (~> 0.5.7) |       sprockets (~> 2.1.2) | ||||||
|       tzinfo (~> 0.3.23) |     activemodel (3.2.1) | ||||||
|     activemodel (3.0.4) |       activesupport (= 3.2.1) | ||||||
|       activesupport (= 3.0.4) |       builder (~> 3.0.0) | ||||||
|       builder (~> 2.1.2) |     activerecord (3.2.1) | ||||||
|       i18n (~> 0.4) |       activemodel (= 3.2.1) | ||||||
|     activerecord (3.0.4) |       activesupport (= 3.2.1) | ||||||
|       activemodel (= 3.0.4) |       arel (~> 3.0.0) | ||||||
|       activesupport (= 3.0.4) |       tzinfo (~> 0.3.29) | ||||||
|       arel (~> 2.0.2) |     activeresource (3.2.1) | ||||||
|       tzinfo (~> 0.3.23) |       activemodel (= 3.2.1) | ||||||
|     activeresource (3.0.4) |       activesupport (= 3.2.1) | ||||||
|       activemodel (= 3.0.4) |     activesupport (3.2.1) | ||||||
|       activesupport (= 3.0.4) |       i18n (~> 0.6) | ||||||
|     activesupport (3.0.4) |       multi_json (~> 1.0) | ||||||
|     annotate (2.4.0) |     annotate (2.4.0) | ||||||
|     arel (2.0.9) |     arel (3.0.0) | ||||||
|     authlogic (2.1.6) |     authlogic (3.1.0) | ||||||
|       activesupport |       activerecord (>= 3.0.7) | ||||||
|  |       activerecord (>= 3.0.7) | ||||||
|     autotest (4.4.6) |     autotest (4.4.6) | ||||||
|       ZenTest (>= 4.4.1) |       ZenTest (>= 4.4.1) | ||||||
|     builder (2.1.2) |     builder (3.0.0) | ||||||
|     diff-lcs (1.1.2) |     diff-lcs (1.1.3) | ||||||
|     erubis (2.6.6) |     erubis (2.7.0) | ||||||
|       abstract (>= 1.0.0) |     hike (1.2.1) | ||||||
|     i18n (0.5.0) |     i18n (0.6.0) | ||||||
|     mail (2.2.15) |     journey (1.0.1) | ||||||
|       activesupport (>= 2.3.6) |     jquery-rails (2.0.0) | ||||||
|  |       railties (>= 3.2.0.beta, < 5.0) | ||||||
|  |       thor (~> 0.14) | ||||||
|  |     json (1.6.5) | ||||||
|  |     mail (2.4.1) | ||||||
|       i18n (>= 0.4.0) |       i18n (>= 0.4.0) | ||||||
|       mime-types (~> 1.16) |       mime-types (~> 1.16) | ||||||
|       treetop (~> 1.4.8) |       treetop (~> 1.4.8) | ||||||
|     mime-types (1.16) |     mime-types (1.17.2) | ||||||
|     mysql2 (0.2.7) |     multi_json (1.0.4) | ||||||
|     nokogiri (1.4.4) |     mysql2 (0.3.11) | ||||||
|     polyglot (0.3.1) |     nokogiri (1.5.0) | ||||||
|     rack (1.2.2) |     polyglot (0.3.3) | ||||||
|     rack-mount (0.6.14) |     rack (1.4.1) | ||||||
|       rack (>= 1.0.0) |     rack-cache (1.1) | ||||||
|     rack-test (0.5.7) |       rack (>= 0.4) | ||||||
|  |     rack-ssl (1.3.2) | ||||||
|  |       rack | ||||||
|  |     rack-test (0.6.1) | ||||||
|       rack (>= 1.0) |       rack (>= 1.0) | ||||||
|     rails (3.0.4) |     rails (3.2.1) | ||||||
|       actionmailer (= 3.0.4) |       actionmailer (= 3.2.1) | ||||||
|       actionpack (= 3.0.4) |       actionpack (= 3.2.1) | ||||||
|       activerecord (= 3.0.4) |       activerecord (= 3.2.1) | ||||||
|       activeresource (= 3.0.4) |       activeresource (= 3.2.1) | ||||||
|       activesupport (= 3.0.4) |       activesupport (= 3.2.1) | ||||||
|       bundler (~> 1.0) |       bundler (~> 1.0) | ||||||
|       railties (= 3.0.4) |       railties (= 3.2.1) | ||||||
|     railties (3.0.4) |     railties (3.2.1) | ||||||
|       actionpack (= 3.0.4) |       actionpack (= 3.2.1) | ||||||
|       activesupport (= 3.0.4) |       activesupport (= 3.2.1) | ||||||
|  |       rack-ssl (~> 1.3.2) | ||||||
|       rake (>= 0.8.7) |       rake (>= 0.8.7) | ||||||
|       thor (~> 0.14.4) |       rdoc (~> 3.4) | ||||||
|     rake (0.8.7) |       thor (~> 0.14.6) | ||||||
|     rspec (2.5.0) |     rake (0.9.2.2) | ||||||
|       rspec-core (~> 2.5.0) |     rdoc (3.12) | ||||||
|       rspec-expectations (~> 2.5.0) |       json (~> 1.4) | ||||||
|       rspec-mocks (~> 2.5.0) |     rspec (2.8.0) | ||||||
|     rspec-core (2.5.1) |       rspec-core (~> 2.8.0) | ||||||
|     rspec-expectations (2.5.0) |       rspec-expectations (~> 2.8.0) | ||||||
|  |       rspec-mocks (~> 2.8.0) | ||||||
|  |     rspec-core (2.8.0) | ||||||
|  |     rspec-expectations (2.8.0) | ||||||
|       diff-lcs (~> 1.1.2) |       diff-lcs (~> 1.1.2) | ||||||
|     rspec-mocks (2.5.0) |     rspec-mocks (2.8.0) | ||||||
|     rspec-rails (2.5.0) |     rspec-rails (2.8.1) | ||||||
|       actionpack (~> 3.0) |       actionpack (>= 3.0) | ||||||
|       activesupport (~> 3.0) |       activesupport (>= 3.0) | ||||||
|       railties (~> 3.0) |       railties (>= 3.0) | ||||||
|       rspec (~> 2.5.0) |       rspec (~> 2.8.0) | ||||||
|  |     sprockets (2.1.2) | ||||||
|  |       hike (~> 1.2) | ||||||
|  |       rack (~> 1.0) | ||||||
|  |       tilt (~> 1.1, != 1.3.0) | ||||||
|     thor (0.14.6) |     thor (0.14.6) | ||||||
|     treetop (1.4.9) |     tilt (1.3.3) | ||||||
|  |     treetop (1.4.10) | ||||||
|  |       polyglot | ||||||
|       polyglot (>= 0.3.1) |       polyglot (>= 0.3.1) | ||||||
|     tzinfo (0.3.25) |     tzinfo (0.3.31) | ||||||
|     webrat (0.7.3) |     webrat (0.7.3) | ||||||
|       nokogiri (>= 1.2.0) |       nokogiri (>= 1.2.0) | ||||||
|       rack (>= 1.0) |       rack (>= 1.0) | ||||||
| @@ -97,8 +115,9 @@ DEPENDENCIES | |||||||
|   annotate |   annotate | ||||||
|   authlogic |   authlogic | ||||||
|   autotest |   autotest | ||||||
|  |   jquery-rails | ||||||
|   mysql2 |   mysql2 | ||||||
|   rails (= 3.0.4) |   rails (= 3.2.1) | ||||||
|   rspec (>= 2.0.0.beta.20) |   rspec (>= 2.0.0.beta.20) | ||||||
|   rspec-rails (>= 2.0.0.beta.20) |   rspec-rails (>= 2.0.0.beta.20) | ||||||
|   webrat |   webrat | ||||||
|   | |||||||
							
								
								
									
										9
									
								
								app/assets/javascripts/application.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								app/assets/javascripts/application.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | // This is a manifest file that'll be compiled into including all the files listed below. | ||||||
|  | // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically | ||||||
|  | // be included in the compiled file accessible from http://example.com/assets/application.js | ||||||
|  | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the | ||||||
|  | // the compiled file. | ||||||
|  | // | ||||||
|  | //= require jquery | ||||||
|  | //= require jquery_ujs | ||||||
|  | //= require_tree . | ||||||
							
								
								
									
										7
									
								
								app/assets/stylesheets/application.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								app/assets/stylesheets/application.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | /* | ||||||
|  |  * This is a manifest file that'll automatically include all the stylesheets available in this directory | ||||||
|  |  * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at | ||||||
|  |  * the top of the compiled file, but it's generally better to create a new file per style scope. | ||||||
|  |  *= require_self | ||||||
|  |  *= require_tree .  | ||||||
|  | */ | ||||||
| @@ -2,10 +2,9 @@ | |||||||
| <html> | <html> | ||||||
| <head> | <head> | ||||||
|   <title><%= @title.nil? ? (@menu.nil? ? t(:application_name) : @menu.capitalize + ' - ' + t(:application_name)) : @title + ' - ' + t(:application_name) %></title> |   <title><%= @title.nil? ? (@menu.nil? ? t(:application_name) : @menu.capitalize + ' - ' + t(:application_name)) : @title + ' - ' + t(:application_name) %></title> | ||||||
|   <%= stylesheet_link_tag :all %> |   <%= stylesheet_link_tag "application" %> | ||||||
| 	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> |   <%= javascript_include_tag "application" %> | ||||||
|   <%= csrf_meta_tag %> |   <%= csrf_meta_tag %>   | ||||||
|    |  | ||||||
| </head> | </head> | ||||||
| <body> | <body> | ||||||
| 		<div id="wrapper"> | 		<div id="wrapper"> | ||||||
|   | |||||||
| @@ -2,9 +2,12 @@ require File.expand_path('../boot', __FILE__) | |||||||
|  |  | ||||||
| require 'rails/all' | require 'rails/all' | ||||||
|  |  | ||||||
| # If you have a Gemfile, require the gems listed there, including any gems | if defined?(Bundler) | ||||||
| # you've limited to :test, :development, or :production. |   # If you precompile assets before deploying to production, use this line | ||||||
| Bundler.require(:default, Rails.env) if defined?(Bundler) |   # Bundler.require *Rails.groups(:assets => %w(development test)) | ||||||
|  |   # If you want your assets lazily compiled in production, use this line | ||||||
|  |   Bundler.require(:default, :assets, Rails.env) | ||||||
|  | end | ||||||
|  |  | ||||||
| module Thingspeak | module Thingspeak | ||||||
|   class Application < Rails::Application |   class Application < Rails::Application | ||||||
| @@ -13,7 +16,7 @@ module Thingspeak | |||||||
|     # -- all .rb files in that directory are automatically loaded. |     # -- all .rb files in that directory are automatically loaded. | ||||||
|  |  | ||||||
|     # Custom directories with classes and modules you want to be autoloadable. |     # Custom directories with classes and modules you want to be autoloadable. | ||||||
|     # config.autoload_paths += %W(#{config.root}/extras) |     config.autoload_paths += %W(#{config.root}/lib) | ||||||
|  |  | ||||||
|     # Only load the plugins named here, in the order given (default is alphabetical). |     # Only load the plugins named here, in the order given (default is alphabetical). | ||||||
|     # :all can be used as a placeholder for all plugins not explicitly named. |     # :all can be used as a placeholder for all plugins not explicitly named. | ||||||
| @@ -38,5 +41,11 @@ module Thingspeak | |||||||
|  |  | ||||||
|     # Configure sensitive parameters which will be filtered from the log file. |     # Configure sensitive parameters which will be filtered from the log file. | ||||||
|     config.filter_parameters += [:password] |     config.filter_parameters += [:password] | ||||||
|  |  | ||||||
|  |     # Enable the asset pipeline | ||||||
|  |     config.assets.enabled = true | ||||||
|  |  | ||||||
|  |     # Version of your assets, change this if you want to expire all your assets | ||||||
|  |     config.assets.version = '1.0' | ||||||
|   end |   end | ||||||
| end | end | ||||||
|   | |||||||
| @@ -11,7 +11,6 @@ Thingspeak::Application.configure do | |||||||
|  |  | ||||||
|   # Show full error reports and disable caching |   # Show full error reports and disable caching | ||||||
|   config.consider_all_requests_local       = true |   config.consider_all_requests_local       = true | ||||||
|   config.action_view.debug_rjs             = true |  | ||||||
|   config.action_controller.perform_caching = false |   config.action_controller.perform_caching = false | ||||||
|  |  | ||||||
|   # Don't care if the mailer can't send |   # Don't care if the mailer can't send | ||||||
| @@ -22,5 +21,18 @@ Thingspeak::Application.configure do | |||||||
|  |  | ||||||
|   # Only use best-standards-support built into browsers |   # Only use best-standards-support built into browsers | ||||||
|   config.action_dispatch.best_standards_support = :builtin |   config.action_dispatch.best_standards_support = :builtin | ||||||
|  |  | ||||||
|  |   # Raise exception on mass assignment protection for Active Record models | ||||||
|  |   config.active_record.mass_assignment_sanitizer = :strict | ||||||
|  |  | ||||||
|  |   # Log the query plan for queries taking more than this (works | ||||||
|  |   # with SQLite, MySQL, and PostgreSQL) | ||||||
|  |   config.active_record.auto_explain_threshold_in_seconds = 0.5 | ||||||
|  |  | ||||||
|  |   # Do not compress assets | ||||||
|  |   config.assets.compress = false | ||||||
|  |  | ||||||
|  |   # Expands the lines which load the assets | ||||||
|  |   config.assets.debug = true | ||||||
| end | end | ||||||
|  |  | ||||||
|   | |||||||
| @@ -46,4 +46,19 @@ Thingspeak::Application.configure do | |||||||
|  |  | ||||||
|   # Send deprecation notices to registered listeners |   # Send deprecation notices to registered listeners | ||||||
|   config.active_support.deprecation = :notify |   config.active_support.deprecation = :notify | ||||||
|  |  | ||||||
|  |   # Compress JavaScripts and CSS | ||||||
|  |   config.assets.compress = true | ||||||
|  |  | ||||||
|  |   # Don't fallback to assets pipeline if a precompiled asset is missed | ||||||
|  |   config.assets.compile = false | ||||||
|  |  | ||||||
|  |   # Generate digests for assets URLs | ||||||
|  |   config.assets.digest = true | ||||||
|  |  | ||||||
|  |   # Defaults to Rails.root.join("public/assets") | ||||||
|  |   # config.assets.manifest = YOUR_PATH | ||||||
|  |  | ||||||
|  |   config.assets.js_compressor  = :uglifier | ||||||
|  |   config.assets.css_compressor = :scss | ||||||
| end | end | ||||||
|   | |||||||
| @@ -32,4 +32,11 @@ Thingspeak::Application.configure do | |||||||
|  |  | ||||||
|   # Print deprecation notices to the stderr |   # Print deprecation notices to the stderr | ||||||
|   config.active_support.deprecation = :stderr |   config.active_support.deprecation = :stderr | ||||||
|  |  | ||||||
|  |   # Allow pass debug_assets=true as a query parameter to load pages with unpackaged assets | ||||||
|  |   config.assets.allow_debugging = true | ||||||
|  |  | ||||||
|  |   # Configure static asset server for tests with Cache-Control for performance | ||||||
|  |   config.serve_static_assets = true | ||||||
|  |   config.static_cache_control = "public, max-age=3600" | ||||||
| end | end | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 6.5 KiB | 
| @@ -1,2 +0,0 @@ | |||||||
| // Place your application-specific JavaScript functions and classes here |  | ||||||
| // This file is automatically included by javascript_include_tag :defaults |  | ||||||
| @@ -1,175 +0,0 @@ | |||||||
| (function() { |  | ||||||
|   // Technique from Juriy Zaytsev |  | ||||||
|   // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ |  | ||||||
|   function isEventSupported(eventName) { |  | ||||||
|     var el = document.createElement('div'); |  | ||||||
|     eventName = 'on' + eventName; |  | ||||||
|     var isSupported = (eventName in el); |  | ||||||
|     if (!isSupported) { |  | ||||||
|       el.setAttribute(eventName, 'return;'); |  | ||||||
|       isSupported = typeof el[eventName] == 'function'; |  | ||||||
|     } |  | ||||||
|     el = null; |  | ||||||
|     return isSupported; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   function isForm(element) { |  | ||||||
|     return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM' |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   function isInput(element) { |  | ||||||
|     if (Object.isElement(element)) { |  | ||||||
|       var name = element.nodeName.toUpperCase() |  | ||||||
|       return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA' |  | ||||||
|     } |  | ||||||
|     else return false |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   var submitBubbles = isEventSupported('submit'), |  | ||||||
|       changeBubbles = isEventSupported('change') |  | ||||||
|  |  | ||||||
|   if (!submitBubbles || !changeBubbles) { |  | ||||||
|     // augment the Event.Handler class to observe custom events when needed |  | ||||||
|     Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap( |  | ||||||
|       function(init, element, eventName, selector, callback) { |  | ||||||
|         init(element, eventName, selector, callback) |  | ||||||
|         // is the handler being attached to an element that doesn't support this event? |  | ||||||
|         if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) || |  | ||||||
|              (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) { |  | ||||||
|           // "submit" => "emulated:submit" |  | ||||||
|           this.eventName = 'emulated:' + this.eventName |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     ) |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   if (!submitBubbles) { |  | ||||||
|     // discover forms on the page by observing focus events which always bubble |  | ||||||
|     document.on('focusin', 'form', function(focusEvent, form) { |  | ||||||
|       // special handler for the real "submit" event (one-time operation) |  | ||||||
|       if (!form.retrieve('emulated:submit')) { |  | ||||||
|         form.on('submit', function(submitEvent) { |  | ||||||
|           var emulated = form.fire('emulated:submit', submitEvent, true) |  | ||||||
|           // if custom event received preventDefault, cancel the real one too |  | ||||||
|           if (emulated.returnValue === false) submitEvent.preventDefault() |  | ||||||
|         }) |  | ||||||
|         form.store('emulated:submit', true) |  | ||||||
|       } |  | ||||||
|     }) |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   if (!changeBubbles) { |  | ||||||
|     // discover form inputs on the page |  | ||||||
|     document.on('focusin', 'input, select, texarea', function(focusEvent, input) { |  | ||||||
|       // special handler for real "change" events |  | ||||||
|       if (!input.retrieve('emulated:change')) { |  | ||||||
|         input.on('change', function(changeEvent) { |  | ||||||
|           input.fire('emulated:change', changeEvent, true) |  | ||||||
|         }) |  | ||||||
|         input.store('emulated:change', true) |  | ||||||
|       } |  | ||||||
|     }) |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   function handleRemote(element) { |  | ||||||
|     var method, url, params; |  | ||||||
|  |  | ||||||
|     var event = element.fire("ajax:before"); |  | ||||||
|     if (event.stopped) return false; |  | ||||||
|  |  | ||||||
|     if (element.tagName.toLowerCase() === 'form') { |  | ||||||
|       method = element.readAttribute('method') || 'post'; |  | ||||||
|       url    = element.readAttribute('action'); |  | ||||||
|       params = element.serialize(); |  | ||||||
|     } else { |  | ||||||
|       method = element.readAttribute('data-method') || 'get'; |  | ||||||
|       url    = element.readAttribute('href'); |  | ||||||
|       params = {}; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     new Ajax.Request(url, { |  | ||||||
|       method: method, |  | ||||||
|       parameters: params, |  | ||||||
|       evalScripts: true, |  | ||||||
|  |  | ||||||
|       onComplete:    function(request) { element.fire("ajax:complete", request); }, |  | ||||||
|       onSuccess:     function(request) { element.fire("ajax:success",  request); }, |  | ||||||
|       onFailure:     function(request) { element.fire("ajax:failure",  request); } |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     element.fire("ajax:after"); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   function handleMethod(element) { |  | ||||||
|     var method = element.readAttribute('data-method'), |  | ||||||
|         url = element.readAttribute('href'), |  | ||||||
|         csrf_param = $$('meta[name=csrf-param]')[0], |  | ||||||
|         csrf_token = $$('meta[name=csrf-token]')[0]; |  | ||||||
|  |  | ||||||
|     var form = new Element('form', { method: "POST", action: url, style: "display: none;" }); |  | ||||||
|     element.parentNode.insert(form); |  | ||||||
|  |  | ||||||
|     if (method !== 'post') { |  | ||||||
|       var field = new Element('input', { type: 'hidden', name: '_method', value: method }); |  | ||||||
|       form.insert(field); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     if (csrf_param) { |  | ||||||
|       var param = csrf_param.readAttribute('content'), |  | ||||||
|           token = csrf_token.readAttribute('content'), |  | ||||||
|           field = new Element('input', { type: 'hidden', name: param, value: token }); |  | ||||||
|       form.insert(field); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     form.submit(); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   document.on("click", "*[data-confirm]", function(event, element) { |  | ||||||
|     var message = element.readAttribute('data-confirm'); |  | ||||||
|     if (!confirm(message)) event.stop(); |  | ||||||
|   }); |  | ||||||
|  |  | ||||||
|   document.on("click", "a[data-remote]", function(event, element) { |  | ||||||
|     if (event.stopped) return; |  | ||||||
|     handleRemote(element); |  | ||||||
|     event.stop(); |  | ||||||
|   }); |  | ||||||
|  |  | ||||||
|   document.on("click", "a[data-method]", function(event, element) { |  | ||||||
|     if (event.stopped) return; |  | ||||||
|     handleMethod(element); |  | ||||||
|     event.stop(); |  | ||||||
|   }); |  | ||||||
|  |  | ||||||
|   document.on("submit", function(event) { |  | ||||||
|     var element = event.findElement(), |  | ||||||
|         message = element.readAttribute('data-confirm'); |  | ||||||
|     if (message && !confirm(message)) { |  | ||||||
|       event.stop(); |  | ||||||
|       return false; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     var inputs = element.select("input[type=submit][data-disable-with]"); |  | ||||||
|     inputs.each(function(input) { |  | ||||||
|       input.disabled = true; |  | ||||||
|       input.writeAttribute('data-original-value', input.value); |  | ||||||
|       input.value = input.readAttribute('data-disable-with'); |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     var element = event.findElement("form[data-remote]"); |  | ||||||
|     if (element) { |  | ||||||
|       handleRemote(element); |  | ||||||
|       event.stop(); |  | ||||||
|     } |  | ||||||
|   }); |  | ||||||
|  |  | ||||||
|   document.on("ajax:after", "form", function(event, element) { |  | ||||||
|     var inputs = element.select("input[type=submit][disabled=true][data-disable-with]"); |  | ||||||
|     inputs.each(function(input) { |  | ||||||
|       input.value = input.readAttribute('data-original-value'); |  | ||||||
|       input.removeAttribute('data-original-value'); |  | ||||||
|       input.disabled = false; |  | ||||||
|     }); |  | ||||||
|   }); |  | ||||||
| })(); |  | ||||||
		Reference in New Issue
	
	Block a user