Upgrade to Rails 3.2 and move some of the assets to the asset pipeline directories
This commit is contained in:
parent
61c7d2147c
commit
bfd5b29a9a
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;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
})();
|
|
Loading…
Reference in New Issue
Block a user