active_scaffold 3.3.0 → 3.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +18 -0
- data/app/assets/javascripts/active_scaffold.js.erb +8 -0
- data/app/assets/javascripts/jquery/active_scaffold.js +11 -7
- data/app/assets/javascripts/jquery/date_picker_bridge.js.erb +19 -0
- data/app/assets/javascripts/prototype/active_scaffold.js +2 -0
- data/app/assets/stylesheets/active_scaffold_layout.css +5 -1
- data/app/views/active_scaffold_overrides/_field_search.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_form_association.html.erb +5 -5
- data/app/views/active_scaffold_overrides/_form_association_record.html.erb +21 -16
- data/app/views/active_scaffold_overrides/_horizontal_subform.html.erb +8 -8
- data/app/views/active_scaffold_overrides/_horizontal_subform_header.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_list.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_list_calculations.html.erb +5 -7
- data/app/views/active_scaffold_overrides/_list_inline_adapter.html.erb +1 -12
- data/app/views/active_scaffold_overrides/_list_pagination.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_list_record.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_list_with_header.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_render_field.js.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_calculations.js.erb +1 -0
- data/app/views/active_scaffold_overrides/_vertical_subform.html.erb +2 -4
- data/app/views/active_scaffold_overrides/destroy.js.erb +1 -1
- data/app/views/active_scaffold_overrides/edit_associated.js.erb +2 -2
- data/config/locales/de.yml +109 -109
- data/config/locales/en.yml +109 -111
- data/config/locales/es.yml +112 -113
- data/config/locales/fr.yml +119 -125
- data/config/locales/hu.yml +109 -110
- data/config/locales/ja.yml +109 -110
- data/config/locales/ru.yml +119 -121
- data/lib/active_scaffold.rb +2 -2
- data/lib/active_scaffold/actions/common_search.rb +7 -3
- data/lib/active_scaffold/actions/core.rb +1 -0
- data/lib/active_scaffold/actions/field_search.rb +2 -1
- data/lib/active_scaffold/actions/list.rb +7 -1
- data/lib/active_scaffold/actions/subform.rb +2 -4
- data/lib/active_scaffold/attribute_params.rb +2 -4
- data/lib/active_scaffold/bridges/calendar_date_select.rb +1 -1
- data/lib/active_scaffold/bridges/date_picker.rb +4 -1
- data/lib/active_scaffold/bridges/date_picker/helper.rb +6 -6
- data/lib/active_scaffold/bridges/file_column.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +1 -1
- data/lib/active_scaffold/bridges/shared/date_bridge.rb +1 -1
- data/lib/active_scaffold/config/base.rb +6 -1
- data/lib/active_scaffold/config/core.rb +16 -0
- data/lib/active_scaffold/config/list.rb +4 -0
- data/lib/active_scaffold/data_structures/column.rb +10 -3
- data/lib/active_scaffold/extensions/action_view_rendering.rb +10 -5
- data/lib/active_scaffold/helpers/association_helpers.rb +20 -5
- data/lib/active_scaffold/helpers/form_column_helpers.rb +31 -21
- data/lib/active_scaffold/helpers/list_column_helpers.rb +8 -5
- data/lib/active_scaffold/helpers/pagination_helpers.rb +8 -0
- data/lib/active_scaffold/helpers/search_column_helpers.rb +20 -6
- data/lib/active_scaffold/helpers/view_helpers.rb +6 -6
- data/lib/active_scaffold/version.rb +1 -1
- data/test/bridges/paperclip_test.rb +2 -2
- data/vendor/assets/javascripts/getprototypeof.js +12 -0
- data/vendor/assets/javascripts/jquery-ui-timepicker-addon.js +1 -1
- metadata +5 -5
- data/app/views/active_scaffold_overrides/_search_attribute.html.erb +0 -10
data/CHANGELOG
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
= 3.3.1
|
2
|
+
- Set adapter colspan (nested lists and forms) using javascript, fixed issue when active_scaffold_config_list is used
|
3
|
+
- Fix bug saving default values when get method is overrided on model to return default value
|
4
|
+
- Fix close action_link without adapter
|
5
|
+
- Fix update calculations after destroy a row
|
6
|
+
- Fix count and calculate searching with count_includes
|
7
|
+
- Fix action_after_create
|
8
|
+
- Cache associations options (for :select form_ui on associations), it can be disabled with config.cache_association_options = false
|
9
|
+
- Clean some code so we can stop changing @record in partials and using @record in helpers
|
10
|
+
- Support jquery-rails 3 gem and jquery-ui-rails gem
|
11
|
+
- Clean some invalid HTML
|
12
|
+
- Add store_user_settings option to enable storing sort, page and search params into session (enabled by default for backwards compatibility)
|
13
|
+
- Fix each_record_in_scope when conditions_for_collection needs some includes
|
14
|
+
- Add method to override label in search fields (field_search)
|
15
|
+
- Add method to override attributes for column headings on list
|
16
|
+
- Support security_method and ignore_method in column's link
|
17
|
+
- render :super should work for every render call (with partial and locals or with only one hash)
|
18
|
+
|
1
19
|
= 3.3.0
|
2
20
|
- Unify field overrides and list_ui method signatures
|
3
21
|
- Improve performance removing some partials and adding some caching for helper overrides and UIs, and caching url generation for lists (caching url is optional)
|
@@ -1,7 +1,15 @@
|
|
1
1
|
<% case ActiveScaffold.js_framework %>
|
2
2
|
<% when :jquery %>
|
3
|
+
<% require_asset "getprototypeof" %>
|
4
|
+
<% if Jquery::Rails.const_defined? 'JQUERY_UI_VERSION' %>
|
3
5
|
<% require_asset "jquery-ui" %>
|
4
6
|
<% require_asset "jquery-ui-timepicker-addon" %>
|
7
|
+
<% elsif Jquery.const_defined? 'Ui' %>
|
8
|
+
<% require_asset "jquery.ui.core" %>
|
9
|
+
<% require_asset "jquery.ui.sortable" %>
|
10
|
+
<% require_asset "jquery.ui.datepicker" %>
|
11
|
+
<% require_asset "jquery-ui-timepicker-addon" %>
|
12
|
+
<% end %>
|
5
13
|
<% require_asset "jquery/active_scaffold" %>
|
6
14
|
<% require_asset "jquery/jquery.editinplace" %>
|
7
15
|
<% require_asset "jquery/date_picker_bridge" %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
jQuery(document).ready(function($) {
|
2
|
-
if (jQuery().jquery
|
2
|
+
if (/1\.[2-7]\..*/.test(jQuery().jquery)) {
|
3
3
|
var error = 'ActiveScaffold requires jquery 1.8.0 or greater, please use jquery-rails 2.1.x gem or greater';
|
4
4
|
if (typeof console != 'undefined') console.error(error);
|
5
5
|
else alert(error);
|
@@ -986,12 +986,14 @@ ActiveScaffold.ActionLink.Abstract = Class.extend({
|
|
986
986
|
},
|
987
987
|
|
988
988
|
close: function() {
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
989
|
+
if (this.adapter) {
|
990
|
+
var link = this;
|
991
|
+
ActiveScaffold.remove(this.adapter, function() {
|
992
|
+
link.enable();
|
993
|
+
if (link.hide_target) link.target.show();
|
994
|
+
if (ActiveScaffold.config.scroll_on_close) ActiveScaffold.scroll_to(link.target.attr('id'), ActiveScaffold.config.scroll_on_close == 'checkInViewport');
|
995
|
+
});
|
996
|
+
}
|
995
997
|
},
|
996
998
|
|
997
999
|
reload: function() {
|
@@ -1077,6 +1079,7 @@ ActiveScaffold.ActionLink.Record = ActiveScaffold.ActionLink.Abstract.extend({
|
|
1077
1079
|
this.hide_target = true;
|
1078
1080
|
}
|
1079
1081
|
|
1082
|
+
var colspan = this.target.children().length;
|
1080
1083
|
if (this.position == 'after') {
|
1081
1084
|
this.target.after(content);
|
1082
1085
|
this.set_adapter(this.target.next());
|
@@ -1088,6 +1091,7 @@ ActiveScaffold.ActionLink.Record = ActiveScaffold.ActionLink.Abstract.extend({
|
|
1088
1091
|
else {
|
1089
1092
|
return false;
|
1090
1093
|
}
|
1094
|
+
this.adapter.find('.inline-adapter-cell:first').attr('colspan', colspan);
|
1091
1095
|
ActiveScaffold.highlight(this.adapter.find('td'));
|
1092
1096
|
},
|
1093
1097
|
|
@@ -1,5 +1,24 @@
|
|
1
1
|
<%# encoding: utf-8 %>
|
2
2
|
<%= ActiveScaffold::Bridges[:date_picker].localization %>
|
3
|
+
Object.getPrototypeOf($.datepicker)._attachDatepicker_without_inlineSettings = Object.getPrototypeOf($.datepicker)._attachDatepicker;
|
4
|
+
$.extend(Object.getPrototypeOf($.datepicker), {
|
5
|
+
_attachDatepicker: function(target, settings) {
|
6
|
+
var inlineSettings = {}, $target = $(target);
|
7
|
+
for (var attrName in this._defaults) {
|
8
|
+
if(this._defaults.hasOwnProperty(attrName)){
|
9
|
+
var attrValue = $target.data(attrName.toLowerCase());
|
10
|
+
if (attrValue) {
|
11
|
+
try {
|
12
|
+
inlineSettings[attrName] = eval(attrValue);
|
13
|
+
} catch (err) {
|
14
|
+
inlineSettings[attrName] = attrValue;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
this._attachDatepicker_without_inlineSettings(target, $.extend({}, settings || {}, inlineSettings));
|
20
|
+
}
|
21
|
+
});
|
3
22
|
jQuery(document).on("focus", "input.date_picker", function(){
|
4
23
|
var date_picker = jQuery(this);
|
5
24
|
if (typeof(date_picker.datepicker) == 'function') {
|
@@ -969,6 +969,7 @@ ActiveScaffold.ActionLink.Record = Class.create(ActiveScaffold.ActionLink.Abstra
|
|
969
969
|
this.hide_target = true;
|
970
970
|
}
|
971
971
|
|
972
|
+
var colspan = this.target.childElements().length;
|
972
973
|
if (this.position == 'after') {
|
973
974
|
this.target.insert({after:content});
|
974
975
|
this.set_adapter(this.target.next());
|
@@ -980,6 +981,7 @@ ActiveScaffold.ActionLink.Record = Class.create(ActiveScaffold.ActionLink.Abstra
|
|
980
981
|
else {
|
981
982
|
return false;
|
982
983
|
}
|
984
|
+
this.adapter.down('.inline-adapter-cell').writeAttribute('colspan', colspan);
|
983
985
|
ActiveScaffold.highlight(this.adapter.down('td').down());
|
984
986
|
},
|
985
987
|
|
@@ -13,8 +13,9 @@ margin: 5px 0;
|
|
13
13
|
|
14
14
|
.active-scaffold table {
|
15
15
|
width: 100%;
|
16
|
-
border-collapse:
|
16
|
+
border-collapse: collapse;
|
17
17
|
}
|
18
|
+
.active-scaffold td, .active-scaffold th { padding: 0; }
|
18
19
|
|
19
20
|
.active-scaffold a,
|
20
21
|
.active-scaffold a:visited {
|
@@ -400,6 +401,9 @@ padding: 3px 0px 2px 0px;
|
|
400
401
|
border-bottom: none;
|
401
402
|
font: bold 12px arial, sans-serif;
|
402
403
|
}
|
404
|
+
.active-scaffold .active-scaffold-footer > br {
|
405
|
+
clear: both;
|
406
|
+
}
|
403
407
|
|
404
408
|
.active-scaffold-footer .active-scaffold-pagination {
|
405
409
|
float: right;
|
@@ -9,14 +9,14 @@ form_tag url_options, options %>
|
|
9
9
|
<ol class="form">
|
10
10
|
<% visibles, hiddens = visibles_and_hiddens(active_scaffold_config.field_search) %>
|
11
11
|
<% visibles.each do |column| -%>
|
12
|
-
|
12
|
+
<li class="form-element"><%= search_attribute(column, @record) %></li>
|
13
13
|
<% end -%>
|
14
14
|
<% unless hiddens.empty? -%>
|
15
15
|
<li class="sub-section">
|
16
16
|
<h5><%= as_(:optional_attributes) %></h5>
|
17
17
|
<ol id ="<%= sub_section_id(:sub_section => 'further_options') %>" class="form" style="display:none;">
|
18
18
|
<% hiddens.each do |column| -%>
|
19
|
-
|
19
|
+
<li class="form-element"><%= search_attribute(column, @record) %></li>
|
20
20
|
<% end -%>
|
21
21
|
</ol>
|
22
22
|
<%= link_to_visibility_toggle(sub_section_id(:sub_section => 'further_options'), {:default_visible => false}) %>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<%
|
2
|
-
parent_record
|
2
|
+
parent_record ||= @record # save @record, some partial can change @record TODO remove when changing @record is removed
|
3
3
|
associated = column.singular_association? ? [parent_record.send(column.name)].compact : parent_record.send(column.name).to_a
|
4
4
|
associated = associated.sort_by {|r| r.new_record? ? 99999999999 : r.id} unless column.association.options.has_key?(:order)
|
5
|
-
if
|
6
|
-
|
5
|
+
if column.show_blank_record?(associated)
|
6
|
+
show_blank_record = build_associated(column, parent_record)
|
7
7
|
end
|
8
8
|
disable_required_for_new = @disable_required_for_new
|
9
|
-
@disable_required_for_new = show_blank_record unless (column.singular_association? && column.required?)
|
9
|
+
@disable_required_for_new = !!show_blank_record unless (column.singular_association? && column.required?)
|
10
10
|
subform_div_id = "#{sub_form_id(:association => column.name, :id => parent_record.id || generated_id(parent_record) || 99999999999)}-div"
|
11
11
|
-%>
|
12
12
|
<h5><%= column.label -%></h5>
|
@@ -18,6 +18,6 @@ subform_div_id = "#{sub_form_id(:association => column.name, :id => parent_recor
|
|
18
18
|
</div>
|
19
19
|
<%= link_to_visibility_toggle(subform_div_id, {:default_visible => !column.collapsed}) -%>
|
20
20
|
<%
|
21
|
-
@record = parent_record
|
21
|
+
@record = parent_record # restore @record, some partials can change it TODO remove when changing @record is removed
|
22
22
|
@disable_required_for_new = disable_required_for_new
|
23
23
|
-%>
|
@@ -1,10 +1,15 @@
|
|
1
1
|
<%
|
2
2
|
record_column = column
|
3
|
-
|
4
|
-
|
3
|
+
Rails.logger.warn "Relying on @record to render form_asssociation_record partial with no :object is deprecated, called from #{caller(1).detect {|l| l =~ /\.erb:/ }.gsub(/(.*:\d+):.*/, '\1')}" unless local_assigns[:form_association_record]
|
4
|
+
record = form_association_record ||= @record # TODO remove me, backwards compatibility, no :collection neither object in render
|
5
|
+
@record = record # TODO remove me, backward compatibility, helpers using @record
|
6
|
+
readonly = (record.readonly? or not record.authorized_for?(:crud_type => :update))
|
7
|
+
crud_type = record.new_record? ? :create : (readonly ? :read : :update)
|
5
8
|
show_actions = false
|
6
|
-
|
7
|
-
|
9
|
+
locked ||= false
|
10
|
+
config = active_scaffold_config_for(record.class)
|
11
|
+
scope = column_scope(record_column, scope, record)
|
12
|
+
options = active_scaffold_input_options(config.columns[record.class.primary_key], scope)
|
8
13
|
tr_id = "association-#{options[:id]}"
|
9
14
|
|
10
15
|
if config.subform.layout == :vertical
|
@@ -24,20 +29,20 @@
|
|
24
29
|
default_col_class = []
|
25
30
|
flatten ||= false
|
26
31
|
end
|
27
|
-
index ||= nil
|
32
|
+
index ||= form_association_record_counter ||= nil
|
28
33
|
|
29
34
|
columns_length = 0
|
30
35
|
columns_groups = []
|
31
36
|
-%>
|
32
37
|
<<%= record_tag %> class="sub-form-record">
|
33
|
-
<% unless
|
34
|
-
<%= content_tag error_tag, :class => "association-record-errors", :id => element_messages_id(:action =>
|
35
|
-
<% errors = active_scaffold_error_messages_for(:record, :object_name =>
|
36
|
-
<%= error_inner_tag ? content_tag(error_inner_tag, errors, :colspan => (active_scaffold_config_for(
|
38
|
+
<% unless record.errors.empty? -%>
|
39
|
+
<%= content_tag error_tag, :class => "association-record-errors", :id => element_messages_id(:action => record.class.name.underscore, :id => "#{parent_record.id}-#{index}") do %>
|
40
|
+
<% errors = active_scaffold_error_messages_for(:record, :object_name => record.class.model_name.human.downcase) %>
|
41
|
+
<%= error_inner_tag ? content_tag(error_inner_tag, errors, :colspan => (active_scaffold_config_for(record.class).subform.columns.length + 1 if error_inner_tag == :td)) : errors %>
|
37
42
|
<% end %>
|
38
43
|
<% end %>
|
39
|
-
<%= content_tag row_tag, :id => tr_id, :class => "association-record#{' association-record-new' if
|
40
|
-
<% config.subform.columns.each :for =>
|
44
|
+
<%= content_tag row_tag, :id => tr_id, :class => "association-record#{' association-record-new' if record.new_record?}#{' locked' if locked}" do %>
|
45
|
+
<% config.subform.columns.each :for => record.class, :crud_type => :read, :flatten => flatten do |column| %>
|
41
46
|
<%
|
42
47
|
if column.is_a? ActiveScaffold::DataStructures::ActionColumns
|
43
48
|
columns_groups << column
|
@@ -56,16 +61,16 @@
|
|
56
61
|
col_class << 'hidden' if column_renders_as(column) == :hidden
|
57
62
|
-%>
|
58
63
|
<%= content_tag column_tag, :class => col_class.join(' ') do %>
|
59
|
-
<%= active_scaffold_render_subform_column(column, scope, crud_type, readonly) %>
|
64
|
+
<%= active_scaffold_render_subform_column(column, scope, crud_type, readonly, false, record) %>
|
60
65
|
<% end %>
|
61
66
|
<% end -%>
|
62
67
|
<% if show_actions -%>
|
63
68
|
<%= content_tag column_tag, :class => "actions" do %>
|
64
|
-
<% if record_column.plural_association? and (
|
69
|
+
<% if record_column.plural_association? and (record.authorized_for?(:crud_type => :delete) or not [:destroy, :delete_all].include?(record_column.association.options[:dependent])) %>
|
65
70
|
<%= link_to as_(:remove), '#', :class => 'destroy', :id => "#{options[:id]}-destroy" , :data => {:delete_id => tr_id} unless locked %>
|
66
71
|
<% end %>
|
67
|
-
<% unless
|
68
|
-
<input type="hidden" name="<%= options[:name] -%>" id="<%= options[:id] -%>" value="<%=
|
72
|
+
<% unless record.new_record? %>
|
73
|
+
<input type="hidden" name="<%= options[:name] -%>" id="<%= options[:id] -%>" value="<%= record.id -%>" />
|
69
74
|
<% end -%>
|
70
75
|
<% end %>
|
71
76
|
<% end -%>
|
@@ -75,7 +80,7 @@
|
|
75
80
|
<%= content_tag row_tag, :class => 'associated-record' do %>
|
76
81
|
<%= content_tag column_tag, :colspan => (columns_length if column_tag == :td) do %>
|
77
82
|
<% column.each :for => @record.class, :crud_type => :read, :flatten => true do |col| %>
|
78
|
-
<%= active_scaffold_render_subform_column(col, scope, crud_type, readonly, true) %>
|
83
|
+
<%= active_scaffold_render_subform_column(col, scope, crud_type, readonly, true, record) %>
|
79
84
|
<% end %>
|
80
85
|
<% end %>
|
81
86
|
<% end %>
|
@@ -1,12 +1,12 @@
|
|
1
|
-
<table
|
2
|
-
|
3
|
-
|
1
|
+
<table id="<%= sub_form_list_id(:association => column.name, :id => parent_record.try(:id) || generated_id(parent_record) || 99999999999) %>">
|
2
|
+
<%
|
3
|
+
header_record_class = (show_blank_record && show_blank_record.class) || column.association.klass
|
4
|
+
-%>
|
5
|
+
<%= render :partial => 'horizontal_subform_header', :locals => {:parent_record => parent_record, :record_class => header_record_class} %>
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
<%= render :partial => 'form_association_record', :locals => {:scope => column_scope(column, scope), :parent_record => parent_record, :column => column, :locked => show_blank_record && @record.new_record? && @record == associated.last, :index => index} %>
|
8
|
-
<% end -%>
|
7
|
+
<%= render :partial => 'form_association_record', :collection => associated, :locals => {:scope => scope, :parent_record => parent_record, :column => column} %>
|
8
|
+
<%= render :partial => 'form_association_record', :object => show_blank_record, :locals => {:scope => scope, :parent_record => parent_record, :column => column, :locked => true, :index => associated.size} if show_blank_record %>
|
9
9
|
<tfoot>
|
10
|
-
<%= render :partial => 'horizontal_subform_footer', :locals => {:scope =>
|
10
|
+
<%= render :partial => 'horizontal_subform_footer', :locals => {:scope => scope, :parent_record => parent_record, :column => column} %>
|
11
11
|
</tfoot>
|
12
12
|
</table>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<thead>
|
2
2
|
<tr>
|
3
3
|
<%
|
4
|
-
active_scaffold_config_for(
|
4
|
+
active_scaffold_config_for(record_class).subform.columns.each :for => record_class, :crud_type => :read do |column|
|
5
5
|
next if column.is_a? ActiveScaffold::DataStructures::ActionColumns
|
6
6
|
next unless in_subform?(column, parent_record)
|
7
7
|
hidden = column_renders_as(column) == :hidden
|
@@ -2,13 +2,11 @@
|
|
2
2
|
columns ||= list_columns -%>
|
3
3
|
<tr id="<%= active_scaffold_calculations_id %>" class="active-scaffold-calculations">
|
4
4
|
<% columns.each do |column| -%>
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
<% end -%>
|
11
|
-
</td>
|
5
|
+
<% if column.calculation? %>
|
6
|
+
<td id="<%= active_scaffold_calculations_id(:column => column) %>"><%= render_column_calculation(column) %></td>
|
7
|
+
<% else %>
|
8
|
+
<td> </td>
|
9
|
+
<% end -%>
|
12
10
|
<% end -%>
|
13
11
|
<% unless active_scaffold_config.action_links.empty? -%>
|
14
12
|
<td class="actions"> </td>
|
@@ -1,17 +1,6 @@
|
|
1
|
-
<%
|
2
|
-
column_count ||= begin
|
3
|
-
config = if nested? and (nested.singular_association? || action_name == 'index')
|
4
|
-
active_scaffold_config_for(nested.parent_model)
|
5
|
-
else
|
6
|
-
active_scaffold_config
|
7
|
-
end
|
8
|
-
# increment in 1 for self-associations, parent_model config will have constraints too
|
9
|
-
config.list.columns.count + 1 + (config == active_scaffold_config && action_name == 'index' ? 1 : 0)
|
10
|
-
end
|
11
|
-
%>
|
12
1
|
<%# nested_id, allows us to remove a nested scaffold programmatically %>
|
13
2
|
<tr class="inline-adapter" id="<%= element_row_id :action => :nested %>">
|
14
|
-
<td
|
3
|
+
<td class="inline-adapter-cell">
|
15
4
|
<% if controller.send(:successful?) %>
|
16
5
|
<div class="<%= "#{params[:action]}-view" if params[:action] %> <%= "#{nested? ? nested.name : id_from_controller(params[:controller])}-view" %> view">
|
17
6
|
<%= link_to(as_(:close), '', :class => 'inline-adapter-close as_cancel', :remote => true, :title => as_(:close)) -%>
|
@@ -6,6 +6,6 @@
|
|
6
6
|
<div class="active-scaffold-pagination">
|
7
7
|
<%= render :partial => 'list_pagination_links', :locals => { :current_page => @page } if @page.pager.infinite? || @page.pager.number_of_pages > 1 %>
|
8
8
|
</div>
|
9
|
-
<br
|
9
|
+
<br /><!-- to clear this block -->
|
10
10
|
</div>
|
11
11
|
<% end -%>
|
@@ -5,7 +5,7 @@ tr_class = cycle("", "even-record") + ' ' + list_row_class(record)
|
|
5
5
|
action_links ||= active_scaffold_config.action_links.member
|
6
6
|
data_refresh ||= url_for(params_for(:action => :row, :id => '--ID--', :_method => :get))
|
7
7
|
-%>
|
8
|
-
<tr class="record <%= tr_class %>" id="<%= element_row_id(:action => :list, :id => record.id) %>" data-refresh="<%= data_refresh.sub('--ID--', record.id.to_s)
|
8
|
+
<tr class="record <%= tr_class %>" id="<%= element_row_id(:action => :list, :id => record.id) %>" data-refresh="<%= data_refresh.sub('--ID--', record.id.to_s) %>">
|
9
9
|
<% columns.each do |column| %>
|
10
10
|
<% authorized = record.authorized_for?(:crud_type => :read, :column => column.name) -%>
|
11
11
|
<% column_value = authorized ? get_column_value(record, column) : active_scaffold_config.list.empty_field_text -%>
|
@@ -15,7 +15,7 @@ data_refresh ||= url_for(params_for(:action => :row, :id => '--ID--', :_method =
|
|
15
15
|
<% end %>
|
16
16
|
<% end -%>
|
17
17
|
|
18
|
-
<td class="actions"><table
|
18
|
+
<td class="actions"><table>
|
19
19
|
<tr>
|
20
20
|
<td class="indicator-container">
|
21
21
|
<%= loading_indicator_tag(:action => :record, :id => record.id) %>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<div class="active-scaffold-header">
|
3
3
|
<%= render :partial => 'list_header' %>
|
4
4
|
</div>
|
5
|
-
<table
|
5
|
+
<table>
|
6
6
|
<tbody class="before-header" id="<%= before_header_id -%>">
|
7
7
|
<% if active_scaffold_config.list.always_show_search %>
|
8
8
|
<% old_record, @record = @record, new_model %>
|
@@ -17,7 +17,7 @@
|
|
17
17
|
html = if scope
|
18
18
|
readonly = (@record.readonly? or not @record.authorized_for?(:crud_type => :update))
|
19
19
|
crud_type = @record.new_record? ? :create : (readonly ? :read : :update)
|
20
|
-
active_scaffold_render_subform_column(column, scope, crud_type, readonly, !active_scaffold_config.subform.columns.names_without_auth_check.include?(column.name))
|
20
|
+
active_scaffold_render_subform_column(column, scope, crud_type, readonly, !active_scaffold_config.subform.columns.names_without_auth_check.include?(column.name), @record)
|
21
21
|
else
|
22
22
|
render_column(column, @record, renders_as, scope)
|
23
23
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
<% calculations_id ||= active_scaffold_calculations_id -%>
|
2
2
|
<% if active_scaffold_config.list.columns.any? {|c| c.calculation?} %>
|
3
|
+
<% params.delete(:id) %>
|
3
4
|
ActiveScaffold.replace('<%= calculations_id %>', '<%= escape_javascript(render(:partial => 'list_calculations')) %>');
|
4
5
|
<% end %>
|
@@ -1,6 +1,4 @@
|
|
1
1
|
<div id="<%= sub_form_list_id(:association => column.name, :id => parent_record.id || generated_id(parent_record) || 99999999999) %>">
|
2
|
-
|
3
|
-
|
4
|
-
<%= render :partial => 'form_association_record', :locals => {:scope => column_scope(column, scope), :parent_record => parent_record, :column => column, :locked => show_blank_record && @record.new_record? && @record == associated.last, :index => index} %>
|
5
|
-
<% end -%>
|
2
|
+
<%= render :partial => 'form_association_record', :collection => associated, :locals => {:scope => scope, :parent_record => parent_record, :column => column} %>
|
3
|
+
<%= render :partial => 'form_association_record', :object => show_blank_record, :locals => {:scope => scope, :parent_record => parent_record, :column => column, :locked => true, :index => associated.size} if show_blank_record %>
|
6
4
|
</div>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<% messages_id = active_scaffold_messages_id(:controller_id => current_id) %>
|
9
9
|
<%= render :partial => 'update_calculations', :locals => {:calculations_id => active_scaffold_calculations_id(:controller_id => current_id)}, :formats => [:js] %>
|
10
10
|
<% elsif render_parent_action == :index %>
|
11
|
-
<% if controller.respond_to?(:render_component_into_view) %>
|
11
|
+
<% if controller.respond_to?(:render_component_into_view, true) %>
|
12
12
|
<%= escape_javascript(controller.send(:render_component_into_view, render_parent_options)) %>
|
13
13
|
<% else %>
|
14
14
|
ActiveScaffold.reload('<%= url_for render_parent_options %>');
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<%
|
2
|
-
associated_form = render :partial => "form_association_record", :locals => {:scope => @scope, :parent_record => @parent_record, :column => @column, :locked => @record.new_record? && @column.singular_association?}
|
2
|
+
associated_form = render :partial => "form_association_record", :object => @record, :locals => {:scope => @scope, :parent_record => @parent_record, :column => @column, :locked => @record.new_record? && @column.singular_association?}
|
3
3
|
options = {:singular => false}
|
4
4
|
if @column.singular_association?
|
5
5
|
options[:singular] = true
|
6
6
|
else
|
7
7
|
unless @record.new_record?
|
8
8
|
column = active_scaffold_config_for(@record.class).columns[@record.class.primary_key]
|
9
|
-
options[:id] = active_scaffold_input_options(column, @scope)[:id]
|
9
|
+
options[:id] = active_scaffold_input_options(column, column_scope(@column, @scope, @record))[:id]
|
10
10
|
end
|
11
11
|
end %>
|
12
12
|
ActiveScaffold.create_associated_record_form('<%=sub_form_list_id(:association => @column.name, :id => @parent_record.id || generated_id(@parent_record) || 99999999999)%>','<%=escape_javascript(associated_form)%>', <%= options.to_json.html_safe %>);
|
data/config/locales/de.yml
CHANGED
@@ -1,126 +1,126 @@
|
|
1
1
|
de:
|
2
2
|
time:
|
3
3
|
formats:
|
4
|
-
picker:
|
4
|
+
picker: ! '%d.%m.%Y %H:%M'
|
5
5
|
active_scaffold:
|
6
|
-
add:
|
7
|
-
add_existing:
|
8
|
-
add_existing_model:
|
9
|
-
apply:
|
10
|
-
are_you_sure_to_delete:
|
11
|
-
cancel:
|
12
|
-
click_to_edit:
|
13
|
-
click_to_reset:
|
14
|
-
close:
|
15
|
-
config_list:
|
16
|
-
config_list_model:
|
17
|
-
create:
|
18
|
-
create_model:
|
19
|
-
create_another:
|
20
|
-
created_model: '%{model} angelegt'
|
21
|
-
create_new:
|
22
|
-
customize:
|
23
|
-
delete:
|
24
|
-
deleted_model: '%{model} gelöscht'
|
25
|
-
delimiter:
|
26
|
-
download:
|
27
|
-
edit:
|
28
|
-
export:
|
29
|
-
nested_for_model: '%{nested_model} für %{parent_model}'
|
30
|
-
nested_of_model: '%{nested_model} von %{parent_model}'
|
6
|
+
add: Hinzufügen
|
7
|
+
add_existing: Existierenden Eintrag hinzufügen
|
8
|
+
add_existing_model: Existierende %{model} hinzufügen
|
9
|
+
apply: Apply
|
10
|
+
are_you_sure_to_delete: Sind Sie sicher?
|
11
|
+
cancel: Abbrechen
|
12
|
+
click_to_edit: Zum Editieren anklicken
|
13
|
+
click_to_reset: Reset
|
14
|
+
close: Schließen
|
15
|
+
config_list: Konfigurieren
|
16
|
+
config_list_model: Konfiguriere Spalten für %{model}
|
17
|
+
create: Anlegen
|
18
|
+
create_model: Lege %{model} an
|
19
|
+
create_another: Weitere anlegen
|
20
|
+
created_model: ! '%{model} angelegt'
|
21
|
+
create_new: Neu anlegen
|
22
|
+
customize: Anpassen
|
23
|
+
delete: Löschen
|
24
|
+
deleted_model: ! '%{model} gelöscht'
|
25
|
+
delimiter: Trennzeichen
|
26
|
+
download: Download
|
27
|
+
edit: Bearbeiten
|
28
|
+
export: Exportieren
|
29
|
+
nested_for_model: ! '%{nested_model} für %{parent_model}'
|
30
|
+
nested_of_model: ! '%{nested_model} von %{parent_model}'
|
31
31
|
'false': 'False'
|
32
|
-
filtered:
|
33
|
-
found:
|
34
|
-
hide:
|
35
|
-
inplace_edit_handle:
|
36
|
-
live_search:
|
37
|
-
loading:
|
38
|
-
mark_all_records:
|
39
|
-
next:
|
40
|
-
no_entries:
|
41
|
-
no_options:
|
42
|
-
omit_header:
|
43
|
-
options:
|
44
|
-
pdf:
|
45
|
-
previous:
|
46
|
-
print:
|
32
|
+
filtered: (Gefiltert)
|
33
|
+
found: Gefunden
|
34
|
+
hide: Verstecken
|
35
|
+
inplace_edit_handle: --
|
36
|
+
live_search: Live-Suche
|
37
|
+
loading: Lade…
|
38
|
+
mark_all_records: Mark all
|
39
|
+
next: Vor
|
40
|
+
no_entries: Keine Einträge
|
41
|
+
no_options: Keine Optionen
|
42
|
+
omit_header: Lasse Header weg
|
43
|
+
options: Optionen
|
44
|
+
pdf: PDF
|
45
|
+
previous: Zurück
|
46
|
+
print: Drucken
|
47
47
|
records_marked:
|
48
|
-
one:
|
49
|
-
other:
|
50
|
-
refresh:
|
51
|
-
remove:
|
52
|
-
remove_file:
|
53
|
-
replace_existing:
|
54
|
-
replace_with_new:
|
55
|
-
revisions_for_model:
|
56
|
-
reset:
|
57
|
-
saving:
|
58
|
-
search:
|
59
|
-
search_terms:
|
60
|
-
_select_: '- Auswählen -'
|
61
|
-
show:
|
62
|
-
show_model:
|
63
|
-
_to_
|
48
|
+
one: 1 marked %{model}
|
49
|
+
other: ! '%{count} marked %{model}'
|
50
|
+
refresh: Neu laden
|
51
|
+
remove: Entfernen
|
52
|
+
remove_file: Entferne oder Ersetze Datei
|
53
|
+
replace_existing: Existierenden ersetzen
|
54
|
+
replace_with_new: Mit Neuer ersetzen
|
55
|
+
revisions_for_model: Revisionen für %{model}
|
56
|
+
reset: Zurücksetzen
|
57
|
+
saving: Speichern…
|
58
|
+
search: Suche
|
59
|
+
search_terms: Suchbegriffe
|
60
|
+
_select_: ! '- Auswählen -'
|
61
|
+
show: Anzeigen
|
62
|
+
show_model: Zeige %{model} an
|
63
|
+
_to_: ! ' zu '
|
64
64
|
'true': 'True'
|
65
|
-
update:
|
66
|
-
update_model:
|
67
|
-
updated_model: '%{model} aktualisiert'
|
68
|
-
|
69
|
-
'>=': '>='
|
70
|
-
|
71
|
-
'>': '>'
|
72
|
-
|
73
|
-
'!=': '!='
|
74
|
-
between:
|
75
|
-
contains:
|
76
|
-
begins_with:
|
77
|
-
ends_with:
|
78
|
-
today:
|
79
|
-
yesterday:
|
80
|
-
tomorrow:
|
81
|
-
this_week:
|
82
|
-
prev_week:
|
83
|
-
next_week:
|
84
|
-
this_month:
|
85
|
-
prev_month:
|
86
|
-
next_month:
|
87
|
-
this_year:
|
88
|
-
prev_year:
|
89
|
-
next_year:
|
90
|
-
past:
|
91
|
-
future:
|
92
|
-
range:
|
93
|
-
seconds:
|
94
|
-
minutes:
|
95
|
-
hours:
|
96
|
-
days:
|
97
|
-
weeks:
|
98
|
-
months:
|
99
|
-
years:
|
100
|
-
optional_attributes:
|
65
|
+
update: Speichern
|
66
|
+
update_model: Editiere %{model}
|
67
|
+
updated_model: ! '%{model} aktualisiert'
|
68
|
+
=: =
|
69
|
+
! '>=': ! '>='
|
70
|
+
<=: <=
|
71
|
+
! '>': ! '>'
|
72
|
+
<: <
|
73
|
+
! '!=': ! '!='
|
74
|
+
between: Zwischen
|
75
|
+
contains: Enthält
|
76
|
+
begins_with: Beginnt
|
77
|
+
ends_with: Endet
|
78
|
+
today: Heute
|
79
|
+
yesterday: Gestern
|
80
|
+
tomorrow: Morgen
|
81
|
+
this_week: Diese Woche
|
82
|
+
prev_week: Letzte Woche
|
83
|
+
next_week: Nächste Woche
|
84
|
+
this_month: Diesen Monat
|
85
|
+
prev_month: Letzten Monat
|
86
|
+
next_month: Nächsten Monat
|
87
|
+
this_year: Dieses Jahr
|
88
|
+
prev_year: Letztes Jahr
|
89
|
+
next_year: Nächstes Jahr
|
90
|
+
past: Letzten
|
91
|
+
future: Nächsten
|
92
|
+
range: Zeitraum
|
93
|
+
seconds: Sekunden
|
94
|
+
minutes: Minuten
|
95
|
+
hours: Stunden
|
96
|
+
days: Tage
|
97
|
+
weeks: Wochen
|
98
|
+
months: Monate
|
99
|
+
years: Jahre
|
100
|
+
optional_attributes: Weitere
|
101
101
|
:null: 'Null'
|
102
|
-
not_null:
|
102
|
+
not_null: Nicht Null
|
103
103
|
date_picker_options:
|
104
|
-
weekHeader:
|
104
|
+
weekHeader: Wo
|
105
105
|
firstDay: 1
|
106
106
|
isRTL: false
|
107
107
|
showMonthAfterYear: false
|
108
108
|
datetime_picker_options:
|
109
|
-
timeText:
|
110
|
-
currentText:
|
111
|
-
closeText:
|
109
|
+
timeText: Uhrzeit
|
110
|
+
currentText: Jetzt
|
111
|
+
closeText: Schließen
|
112
112
|
human_conditions:
|
113
|
-
boolean:
|
114
|
-
association:
|
113
|
+
boolean: ! '%{column} = %{value}'
|
114
|
+
association: ! '%{column} = %{value}'
|
115
115
|
errors:
|
116
116
|
template:
|
117
117
|
header:
|
118
|
-
one:
|
119
|
-
other:
|
120
|
-
body:
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
118
|
+
one: ! 'Konnte %{model} nicht speichern: ein Fehler.'
|
119
|
+
other: ! 'Konnte %{model} nicht speichern: %{count} Fehler.'
|
120
|
+
body: ! 'Bitte überprüfen Sie die folgenden Felder:'
|
121
|
+
cant_destroy_record: ! '%{record} kann nicht gelöscht werden'
|
122
|
+
internal_error: Fehler bei der Verarbeitung (code 500, Interner Fehler)
|
123
|
+
version_inconsistency: Inkonsistente Versionen - dieser Eintrag wurde verändert nachdem Sie mit der Bearbeitung begonnen haben.
|
124
|
+
record_not_saved: Eintrag kann nicht gespeichert werden. Ursache unbekannt.
|
125
|
+
no_authorization_for_action: Keine Berechtigung für Aktion %{action}
|
126
|
+
'null': 'Null'
|