active_scaffold 3.4.20 → 3.4.21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +9 -0
- data/app/assets/javascripts/jquery/active_scaffold.js +8 -2
- data/app/views/active_scaffold_overrides/_show.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_form.html.erb +1 -1
- data/app/views/active_scaffold_overrides/action_confirmation.html.erb +1 -1
- data/app/views/active_scaffold_overrides/delete.html.erb +1 -1
- data/lib/active_scaffold/actions/create.rb +1 -1
- data/lib/active_scaffold/actions/delete.rb +2 -2
- data/lib/active_scaffold/actions/nested.rb +5 -5
- data/lib/active_scaffold/actions/update.rb +2 -2
- data/lib/active_scaffold/bridges.rb +1 -1
- data/lib/active_scaffold/helpers/view_helpers.rb +4 -4
- data/lib/active_scaffold/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 305b70bbadf4986fe5db1d87e33cabd4612d8ee7
|
4
|
+
data.tar.gz: 2a9a2f6b260bd3b73d1dfac99f1937c20034a615
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2d50d8c971e3765c6ddcbd341ac74b191833f8c45445ce22e5de6f798551c7b0be4484d36cbd08b18ee24d56cd783d28fa168025e8d068021607fd046a4b987
|
7
|
+
data.tar.gz: 5bfdbbf6b81a65da5629b59535805332e0e23dc6d178cc1461c7101048a30c53ea64d897f79f21d4ef8126efee67b907c47e8760baedfd9a85bf6bd8e5ae79d7
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
= 3.4.21
|
2
|
+
- Fix excluding a bridge
|
3
|
+
- Allow to call helpers from dynamic_parameters proc
|
4
|
+
- Fix warn when form is changed on create/update loaded on page (without AJAX)
|
5
|
+
- Fix XSS vulnerability when using to_label with as_ (#425)
|
6
|
+
- Set cursor at end when focus first element
|
7
|
+
- Set focus on form.search after search with refresh_with_header
|
8
|
+
|
9
|
+
= 3.4.20
|
1
10
|
- Update tinymce bridge for tinyMCE 4.x
|
2
11
|
- Ignore :format in conditions_from_params
|
3
12
|
- column with :radio form_ui works like :select form_ui in list and show
|
@@ -303,6 +303,11 @@ jQuery(document).ready(function($) {
|
|
303
303
|
ActiveScaffold.live_search(e.target);
|
304
304
|
ActiveScaffold.draggable_lists('.draggable-lists', e.target);
|
305
305
|
});
|
306
|
+
jQuery(document).on('as:element_updated', '.active-scaffold', function(e) {
|
307
|
+
if (e.target != this) return;
|
308
|
+
var search = $(this).find('form.search');
|
309
|
+
if (search.length) ActiveScaffold.focus_first_element_of_form(search);
|
310
|
+
});
|
306
311
|
jQuery(document).on('as:action_success', 'a.as_action', function(e, action_link) {
|
307
312
|
ActiveScaffold.load_embedded(action_link.adapter);
|
308
313
|
ActiveScaffold.enable_js_form_buttons(action_link.adapter);
|
@@ -607,7 +612,8 @@ var ActiveScaffold = {
|
|
607
612
|
focus_first_element_of_form: function(form_element, form_selector) {
|
608
613
|
if (typeof(form_element) == 'string') form_element = '#' + form_element;
|
609
614
|
if (typeof(form_selector) == 'undefined') form_selector = jQuery(form_element).is('form') ? '' : 'form ';
|
610
|
-
jQuery(form_selector + ":input:visible:first", jQuery(form_element)).focus();
|
615
|
+
var input = jQuery(form_selector + ":input:visible:first", jQuery(form_element)).focus();
|
616
|
+
if (input[0].value) input[0].selectionStart = input[0].selectionEnd = input[0].value.length;
|
611
617
|
},
|
612
618
|
|
613
619
|
create_record_row: function(active_scaffold_id, html, options) {
|
@@ -991,7 +997,7 @@ var ActiveScaffold = {
|
|
991
997
|
$(document).on('change input', '.active-scaffold form:not(.search) input, .active-scaffold form:not(.search) textarea, .active-scaffold form:not(.search) select', function() {
|
992
998
|
$(this).closest('form').addClass('need-confirm');
|
993
999
|
});
|
994
|
-
$(document).on('click', '.active-scaffold .as_cancel:not([data-remote])', function() {
|
1000
|
+
$(document).on('click', '.active-scaffold .as_cancel:not([data-remote]), .active-scaffold input[type=submit]', function() {
|
995
1001
|
$(this).closest('form').removeClass('need-confirm');
|
996
1002
|
});
|
997
1003
|
window.onbeforeunload = function() {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<h4><%= active_scaffold_config.show.label(@record.to_label.nil? ? nil : @record.to_label) %></h4>
|
1
|
+
<h4><%= active_scaffold_config.show.label(@record.to_label.nil? ? nil : h(@record.to_label)) %></h4>
|
2
2
|
|
3
3
|
<%= render :partial => 'show_columns', :locals => {:columns => active_scaffold_config.show.columns} -%>
|
4
4
|
|
@@ -3,4 +3,4 @@
|
|
3
3
|
:form_action => form_action ||= :update,
|
4
4
|
:method => method ||= :put,
|
5
5
|
:cancel_link => cancel_link,
|
6
|
-
:headline => headline ||= @record.to_label.nil? ? active_scaffold_config.update.label : as_(:update_model, :model => @record.to_label)} %>
|
6
|
+
:headline => headline ||= @record.to_label.nil? ? active_scaffold_config.update.label : as_(:update_model, :model => h(@record.to_label))} %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="active-scaffold">
|
2
2
|
<div class="delete-view view">
|
3
3
|
<%= form_tag params_for(:action => link.action, :id => params[:id]), { :method => link.method } %>
|
4
|
-
<h4><%= link.confirm(record.try(:to_label)) -%></h4>
|
4
|
+
<h4><%= link.confirm(h(record.try(:to_label))) -%></h4>
|
5
5
|
|
6
6
|
<p class="form-footer">
|
7
7
|
<%= submit_tag as_(link.label), :class => 'submit' %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="active-scaffold">
|
2
2
|
<div class="delete-view view">
|
3
3
|
<%= form_tag params_for(:action => :destroy, :id => params[:id]), { :method => :delete } %>
|
4
|
-
<h4><%= as_(:are_you_sure_to_delete, :label => @record.try(:to_label)) -%></h4>
|
4
|
+
<h4><%= as_(:are_you_sure_to_delete, :label => h(@record.try(:to_label))) -%></h4>
|
5
5
|
|
6
6
|
<p class="form-footer">
|
7
7
|
<%= submit_tag as_(:delete), :class => 'submit' %>
|
@@ -40,7 +40,7 @@ module ActiveScaffold::Actions
|
|
40
40
|
end
|
41
41
|
else
|
42
42
|
if successful?
|
43
|
-
flash[:info] = as_(:created_model, :model => @record.to_label)
|
43
|
+
flash[:info] = as_(:created_model, :model => ERB::Util.h(@record.to_label))
|
44
44
|
if (action = active_scaffold_config.create.action_after_create)
|
45
45
|
redirect_to params_for(:action => action, :id => @record.to_param)
|
46
46
|
elsif params[:dont_close]
|
@@ -14,7 +14,7 @@ module ActiveScaffold::Actions
|
|
14
14
|
protected
|
15
15
|
|
16
16
|
def destroy_respond_to_html
|
17
|
-
flash[:info] = as_(:deleted_model, :model => @record.to_label) if self.successful?
|
17
|
+
flash[:info] = as_(:deleted_model, :model => ERB::Util.h(@record.to_label)) if self.successful?
|
18
18
|
return_to_main
|
19
19
|
end
|
20
20
|
|
@@ -46,7 +46,7 @@ module ActiveScaffold::Actions
|
|
46
46
|
begin
|
47
47
|
self.successful = record.destroy
|
48
48
|
rescue StandardError => ex
|
49
|
-
flash[:warning] = as_(:cant_destroy_record, :record => record.to_label)
|
49
|
+
flash[:warning] = as_(:cant_destroy_record, :record => ERB::Util.h(record.to_label))
|
50
50
|
self.successful = false
|
51
51
|
logger.debug ex.message
|
52
52
|
logger.debug ex.backtrace.join("\n")
|
@@ -38,9 +38,9 @@ module ActiveScaffold::Actions
|
|
38
38
|
|
39
39
|
def nested_label
|
40
40
|
if nested.belongs_to?
|
41
|
-
as_(:nested_of_model, :nested_model => active_scaffold_config.model.model_name.human, :parent_model => nested_parent_record.to_label)
|
41
|
+
as_(:nested_of_model, :nested_model => active_scaffold_config.model.model_name.human, :parent_model => ERB::Util.h(nested_parent_record.to_label))
|
42
42
|
else
|
43
|
-
as_(:nested_for_model, :nested_model => active_scaffold_config.list.label, :parent_model => nested_parent_record.to_label)
|
43
|
+
as_(:nested_for_model, :nested_model => active_scaffold_config.list.label, :parent_model => ERB::Util.h(nested_parent_record.to_label))
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -144,7 +144,7 @@ module ActiveScaffold::Actions::Nested
|
|
144
144
|
end
|
145
145
|
|
146
146
|
def destroy_existing
|
147
|
-
return redirect_to(params.merge(:action => :delete)) if request.get?
|
147
|
+
return redirect_to(params.merge(:action => :delete, :only_path => true)) if request.get?
|
148
148
|
do_destroy_existing
|
149
149
|
respond_to_action(:destroy_existing)
|
150
150
|
end
|
@@ -165,7 +165,7 @@ module ActiveScaffold::Actions::Nested
|
|
165
165
|
|
166
166
|
def add_existing_respond_to_html
|
167
167
|
if successful?
|
168
|
-
flash[:info] = as_(:created_model, :model => @record.to_label)
|
168
|
+
flash[:info] = as_(:created_model, :model => ERB::Util.h(@record.to_label))
|
169
169
|
return_to_main
|
170
170
|
else
|
171
171
|
render(:action => 'add_existing_form')
|
@@ -193,7 +193,7 @@ module ActiveScaffold::Actions::Nested
|
|
193
193
|
end
|
194
194
|
|
195
195
|
def destroy_existing_respond_to_html
|
196
|
-
flash[:info] = as_(:deleted_model, :model => @record.to_label)
|
196
|
+
flash[:info] = as_(:deleted_model, :model => ERB::Util.h(@record.to_label))
|
197
197
|
return_to_main
|
198
198
|
end
|
199
199
|
|
@@ -43,7 +43,7 @@ module ActiveScaffold::Actions
|
|
43
43
|
end
|
44
44
|
else # just a regular post
|
45
45
|
if successful?
|
46
|
-
message = as_(:updated_model, :model => @record.to_label)
|
46
|
+
message = as_(:updated_model, :model => ERB::Util.h(@record.to_label))
|
47
47
|
if params[:dont_close]
|
48
48
|
flash.now[:info] = message
|
49
49
|
render(:action => 'update')
|
@@ -68,7 +68,7 @@ module ActiveScaffold::Actions
|
|
68
68
|
@record = get_row rescue nil # if record doesn't fullfil current conditions remove it from list
|
69
69
|
end
|
70
70
|
end
|
71
|
-
flash.now[:info] = as_(:updated_model, :model => (@updated_record || @record).to_label) if active_scaffold_config.update.persistent
|
71
|
+
flash.now[:info] = as_(:updated_model, :model => ERB::Util.h((@updated_record || @record).to_label)) if active_scaffold_config.update.persistent
|
72
72
|
end
|
73
73
|
render :action => 'on_update'
|
74
74
|
end
|
@@ -246,7 +246,7 @@ module ActiveScaffold
|
|
246
246
|
end
|
247
247
|
|
248
248
|
def replace_id_params_in_action_link_url(link, record, url)
|
249
|
-
url = record ? url.sub('--ID--', record.to_param) : url.clone
|
249
|
+
url = record ? url.sub('--ID--', record.to_param.to_s) : url.clone
|
250
250
|
if link.column.try(:singular_association?)
|
251
251
|
child_id = record.send(link.column.association.name).try(:to_param)
|
252
252
|
if child_id.present?
|
@@ -333,9 +333,9 @@ module ActiveScaffold
|
|
333
333
|
url_options.merge! link.parameters if link.parameters
|
334
334
|
if link.dynamic_parameters.is_a?(Proc)
|
335
335
|
if record.nil?
|
336
|
-
url_options.merge! link.dynamic_parameters
|
336
|
+
url_options.merge! instance_exec &link.dynamic_parameters
|
337
337
|
else
|
338
|
-
url_options.merge! link.dynamic_parameters
|
338
|
+
url_options.merge! instance_exec record, &link.dynamic_parameters
|
339
339
|
end
|
340
340
|
end
|
341
341
|
if link.nested_link?
|
@@ -384,7 +384,7 @@ module ActiveScaffold
|
|
384
384
|
html_options[:method] = link.method if link.method != :get
|
385
385
|
|
386
386
|
html_options[:data] ||= {}
|
387
|
-
html_options[:data][:confirm] = link.confirm(record.try(:to_label)) if link.confirm?
|
387
|
+
html_options[:data][:confirm] = link.confirm(h(record.try(:to_label))) if link.confirm?
|
388
388
|
if link.inline?
|
389
389
|
html_options[:class] << ' as_action'
|
390
390
|
html_options[:data][:position] = link.position if link.position
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_scaffold
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.4.
|
4
|
+
version: 3.4.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Many, see README
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: brakeman
|