ab_admin 0.8.3 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +11 -5
- data/app/assets/javascripts/ab_admin/components/admin_assets.js.coffee +0 -25
- data/app/assets/javascripts/ab_admin/components/google_translate.js.coffee +3 -5
- data/app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee +33 -25
- data/app/assets/javascripts/ab_admin/core/batch_actions.js.coffee +1 -1
- data/app/assets/javascripts/ab_admin/core/columns_hider.js.coffee +24 -23
- data/app/assets/javascripts/ab_admin/core/init.js.coffee +7 -2
- data/app/assets/javascripts/ab_admin/core/search_form.js.coffee +1 -7
- data/app/assets/javascripts/ab_admin/core/ui_utils.js.coffee +23 -7
- data/app/assets/javascripts/ab_admin/core/utils.js.coffee +16 -2
- data/app/assets/javascripts/ab_admin/inputs/datetime_input.js.coffee +1 -0
- data/app/assets/javascripts/ab_admin/main.js +3 -4
- data/app/assets/stylesheets/ab_admin/bootstrap_and_overrides.scss +71 -25
- data/app/assets/stylesheets/ab_admin/components/_base.scss +21 -1
- data/app/assets/stylesheets/ab_admin/components/_colored_tabs.scss +1 -1
- data/app/assets/stylesheets/ab_admin/components/_form.scss +16 -18
- data/app/assets/stylesheets/ab_admin/components/_grid_view.scss +2 -2
- data/app/assets/stylesheets/ab_admin/components/_locale_tabs.scss +11 -23
- data/app/assets/stylesheets/ab_admin/components/_navigation.scss +7 -11
- data/app/assets/stylesheets/ab_admin/components/_table_view.scss +85 -11
- data/app/assets/stylesheets/ab_admin/components/_tooltip.scss +81 -0
- data/app/assets/stylesheets/ab_admin/components/_tree_view.scss +1 -1
- data/app/assets/stylesheets/ab_admin/devise.scss +2 -2
- data/app/assets/stylesheets/ab_admin/fileupload.scss +2 -9
- data/app/assets/stylesheets/ab_admin/main.scss +1 -2
- data/app/controllers/admin/assets_controller.rb +1 -1
- data/app/controllers/admin/base_controller.rb +133 -149
- data/app/controllers/admin/dashboards_controller.rb +2 -2
- data/app/controllers/admin/locators_controller.rb +8 -6
- data/app/controllers/admin/manager_controller.rb +19 -49
- data/app/controllers/admin/static_pages_controller.rb +0 -4
- data/app/controllers/admin/structures_controller.rb +2 -2
- data/app/views/ab_admin/devise/sessions/new.html.slim +2 -0
- data/app/views/admin/assets/batch_edit.html.slim +3 -2
- data/app/views/admin/base/_search_layout.html.slim +7 -6
- data/app/views/admin/base/create.js.erb +6 -3
- data/app/views/admin/base/edit.js.erb +1 -1
- data/app/views/admin/base/index.html.slim +4 -4
- data/app/views/admin/base/new.js.erb +1 -1
- data/app/views/admin/base/update.js.erb +7 -2
- data/app/views/admin/fileupload/_asset_templates.html.slim +1 -2
- data/app/views/admin/fileupload/_image.html.slim +1 -2
- data/app/views/admin/locators/edit.html.slim +7 -6
- data/app/views/admin/manager/_map.html.slim +4 -0
- data/app/views/admin/manager/_show_table.html.slim +1 -1
- data/app/views/admin/manager/_stats.html.slim +4 -0
- data/app/views/admin/manager/_table.html.slim +7 -4
- data/app/views/admin/shared/_content_actions.html.slim +35 -30
- data/app/views/admin/shared/_flash.html.slim +5 -4
- data/app/views/admin/shared/_locale_tabs.html.slim +2 -2
- data/app/views/admin/shared/_main_menu.html.slim +1 -1
- data/app/views/admin/shared/_save_buttons.html.slim +10 -1
- data/app/views/admin/structures/_form.html.slim +1 -1
- data/app/views/admin/users/_form.html.slim +3 -3
- data/app/views/admin/users/_search_form.html.slim +1 -1
- data/app/views/layouts/admin/_footer.html.slim +0 -1
- data/app/views/layouts/admin/_navigation.html.slim +1 -1
- data/app/views/layouts/admin/application.html.slim +2 -2
- data/config/locales/de.yml +1 -2
- data/config/locales/en.yml +9 -15
- data/config/locales/it.yml +1 -0
- data/config/locales/ru.yml +0 -1
- data/config/locales/uk.yml +0 -1
- data/db/migrate/20130101000001_create_users.rb +1 -4
- data/db/migrate/20130101000003_create_assets.rb +1 -1
- data/db/migrate/20130101000004_create_headers.rb +5 -5
- data/db/migrate/20130101000005_create_static_pages.rb +2 -5
- data/db/migrate/20130101000006_create_structures.rb +1 -1
- data/db/migrate/20130101000007_base_translations.rb +43 -12
- data/db/migrate/20130101000008_create_admin_comments.rb +2 -7
- data/db/migrate/20130101000009_create_tracks.rb +4 -8
- data/lib/ab_admin/abstract_resource.rb +6 -5
- data/lib/ab_admin/carrierwave/base_uploader.rb +87 -75
- data/lib/ab_admin/carrierwave/glue.rb +0 -5
- data/lib/ab_admin/concerns/admin_addition.rb +15 -27
- data/lib/ab_admin/concerns/translations_macro.rb +97 -0
- data/lib/ab_admin/concerns/utilities.rb +2 -2
- data/lib/ab_admin/config/base.rb +27 -4
- data/lib/ab_admin/controllers/callbacks.rb +3 -26
- data/lib/ab_admin/core_ext/array.rb +1 -50
- data/lib/ab_admin/core_ext/hash.rb +2 -31
- data/lib/ab_admin/core_ext/other.rb +0 -6
- data/lib/ab_admin/core_ext/string.rb +1 -86
- data/lib/ab_admin/devise.rb +7 -0
- data/lib/ab_admin/engine.rb +2 -1
- data/lib/ab_admin/hooks/ckeditor_lazy.rb +13 -0
- data/lib/ab_admin/hooks/will_paginate_id_prefetch.rb +8 -6
- data/lib/ab_admin/hooks/will_paginate_no_uri.rb +1 -1
- data/lib/ab_admin/i18n_tools/google_translate.rb +3 -1
- data/lib/ab_admin/i18n_tools/model_translator.rb +1 -1
- data/lib/ab_admin/menu/base_group.rb +0 -1
- data/lib/ab_admin/menu/group.rb +2 -4
- data/lib/ab_admin/menu/item.rb +4 -8
- data/lib/ab_admin/models/asset.rb +7 -10
- data/lib/ab_admin/models/header.rb +2 -2
- data/lib/ab_admin/models/locator.rb +29 -3
- data/lib/ab_admin/models/settings.rb +2 -2
- data/lib/ab_admin/models/structure.rb +3 -3
- data/lib/ab_admin/models/track.rb +15 -3
- data/lib/ab_admin/models/user.rb +12 -48
- data/lib/ab_admin/utils/csv_document.rb +8 -6
- data/lib/ab_admin/utils/eval_helpers.rb +0 -13
- data/lib/ab_admin/utils/logger.rb +12 -2
- data/lib/ab_admin/utils/mysql.rb +2 -3
- data/lib/ab_admin/utils/xls_document.rb +18 -18
- data/lib/ab_admin/utils.rb +0 -5
- data/lib/ab_admin/version.rb +1 -1
- data/lib/ab_admin/views/admin_helpers.rb +43 -28
- data/lib/ab_admin/views/admin_navigation_helpers.rb +18 -16
- data/lib/ab_admin/views/form_builder.rb +7 -5
- data/lib/ab_admin/views/helpers.rb +0 -9
- data/lib/ab_admin/views/inputs/ckeditor_input.rb +1 -5
- data/lib/ab_admin/views/manager_helpers.rb +15 -6
- data/lib/ab_admin/views/search_form_builder.rb +13 -13
- data/lib/ab_admin/views/will_paginate_bootstrap_renderer.rb +60 -0
- data/lib/ab_admin.rb +44 -32
- data/lib/generators/ab_admin/glob/glob_generator.rb +4 -5
- data/lib/generators/ab_admin/glob/templates/migration.erb +10 -7
- data/lib/generators/ab_admin/install/templates/config/ab_admin.rb.erb +1 -1
- data/lib/generators/ab_admin/install/templates/models/user.rb +1 -13
- data/lib/generators/ab_admin/install/templates/spec/spec_helper.rb +0 -1
- data/lib/generators/ab_admin/install/templates/spec/support/database_cleaner.rb +8 -11
- data/lib/generators/ab_admin/install/templates/uploaders/attachment_file_uploader.rb +1 -1
- data/lib/generators/ab_admin/install/templates/uploaders/avatar_uploader.rb +1 -1
- data/lib/generators/ab_admin/install/templates/uploaders/picture_uploader.rb +16 -3
- data/lib/generators/ab_admin/model/model_generator.rb +3 -4
- data/lib/generators/ab_admin/model/templates/resource.erb +5 -2
- data/lib/generators/ab_admin/resource/resource_generator.rb +0 -4
- data/lib/generators/ab_admin/resource/templates/controller.erb +2 -9
- data/lib/tasks/assets.rake +5 -5
- metadata +45 -85
- data/app/assets/images/admin/Jcrop.gif +0 -0
- data/app/assets/images/admin/flags/de.png +0 -0
- data/app/assets/images/admin/flags/en.png +0 -0
- data/app/assets/images/admin/flags/es.png +0 -0
- data/app/assets/images/admin/flags/fr.png +0 -0
- data/app/assets/images/admin/flags/it.png +0 -0
- data/app/assets/images/admin/flags/ja.png +0 -0
- data/app/assets/images/admin/flags/pl.png +0 -0
- data/app/assets/images/admin/flags/ru.png +0 -0
- data/app/assets/images/admin/flags/uk.png +0 -0
- data/app/assets/javascripts/ab_admin/components/croppable_image.js.coffee +0 -33
- data/app/assets/stylesheets/ab_admin/components/_columns_hider.scss +0 -5
- data/app/assets/stylesheets/ab_admin/components/_perms.scss +0 -39
- data/app/views/admin/shared/_columns_hider.html.slim +0 -9
- data/lib/ab_admin/hooks/globalize_locale_suffix_accessors.rb +0 -25
- data/lib/ab_admin/hooks/globalize_valid_locale.rb +0 -9
- data/lib/generators/ab_admin/ckeditor_assets/ckeditor_assets_generator.rb +0 -19
- data/lib/generators/template.rb +0 -96
@@ -1,13 +1,16 @@
|
|
1
|
+
<% if params[:flash] %>
|
2
|
+
flash("<%= t("flash.admin.actions.#{action_name}.notice", resource_name: resource_class.model_name.human(count: 1)) %>")
|
3
|
+
<% end %>
|
4
|
+
|
1
5
|
<% unless params[:modal] %>
|
2
6
|
<%
|
3
7
|
form_wrap_id = dom_id(resource_class.new, 'list_edit')
|
4
8
|
html = render('table', collection: [resource]).match(/<tbody>(.*)<\/tbody>/m)[1].html_safe
|
5
9
|
%>
|
6
10
|
$('#<%= form_wrap_id %>').remove();
|
7
|
-
$('#list tbody').prepend('<%= j html %>');
|
11
|
+
$('#list tbody:first').prepend('<%= j html %>');
|
8
12
|
$(document).trigger('admin:list_init');
|
9
|
-
$('#<%= dom_id(resource, 'list') %>').addClass('
|
13
|
+
$('#<%= dom_id(resource, 'list') %>').addClass('bg-lemon');
|
10
14
|
<% end %>
|
11
15
|
|
12
|
-
|
13
16
|
window.ab_admin_last_created = <%= raw resource.for_input_token.to_json %>;
|
@@ -10,7 +10,7 @@
|
|
10
10
|
%>
|
11
11
|
$('#<%= form_wrap_id %>').remove();
|
12
12
|
$('#<%= el_id %>').after('<%= j html %>');
|
13
|
-
$('#<%= form_wrap_id %> td
|
13
|
+
$('#<%= form_wrap_id %> > td').attr('colspan', $('#list > thead > tr:first th').length);
|
14
14
|
$('#<%= form_wrap_id %> form').trigger('admin:form_init');
|
15
15
|
$('#<%= el_id %>').scrollToEl();
|
16
16
|
<% end %>
|
@@ -2,14 +2,14 @@
|
|
2
2
|
input name='batch_action' id='batch_action' type='hidden'
|
3
3
|
= render 'admin/shared/content_actions'
|
4
4
|
|
5
|
-
#content= render current_index_view
|
6
|
-
-
|
5
|
+
#content= render settings[:current_index_view].to_s
|
6
|
+
- if settings[:pagination]
|
7
7
|
.pagination-wrap.pull-left
|
8
|
-
= will_paginate collection, renderer:
|
8
|
+
= will_paginate collection, renderer: AbAdmin::Views::WillPaginateBootstrapRenderer
|
9
9
|
.pagination_info= pagination_info collection
|
10
10
|
.btn-toolbar.pull-right.pjax_links
|
11
11
|
.btn-group
|
12
|
-
- per_page_variants.each do |c|
|
12
|
+
- settings[:per_page_variants].each do |c|
|
13
13
|
a.btn.per_page data-val=c href=url_for(params_for_links.merge(per_page: c)) class=('active' if c == collection.per_page) = c
|
14
14
|
|
15
15
|
- if pjax? && flash.present?
|
@@ -9,7 +9,7 @@
|
|
9
9
|
%>
|
10
10
|
$('#<%= form_wrap_id %>').remove();
|
11
11
|
$('#list tbody:first').prepend('<%= j html %>');
|
12
|
-
$('#<%= form_wrap_id %> td
|
12
|
+
$('#<%= form_wrap_id %> > td').attr('colspan', $('#list > thead > tr > th').length);
|
13
13
|
$('#<%= form_wrap_id %> form').trigger('admin:form_init');
|
14
14
|
<% end %>
|
15
15
|
|
@@ -1,3 +1,9 @@
|
|
1
|
+
<%= render 'admin/shared/flash' %>
|
2
|
+
|
3
|
+
<% if params[:flash] %>
|
4
|
+
flash("<%= t("flash.admin.actions.#{action_name}.notice", resource_name: resource_class.model_name.human(count: 1)) %>")
|
5
|
+
<% end %>
|
6
|
+
|
1
7
|
<% unless params[:modal] %>
|
2
8
|
<%
|
3
9
|
form_wrap_id = dom_id(resource, 'list_edit')
|
@@ -7,8 +13,7 @@
|
|
7
13
|
$('#<%= dom_id(resource, 'list') %>').replaceWith('<%= j html %>');
|
8
14
|
var $el = $('#<%= dom_id(resource, 'list') %>');
|
9
15
|
$(document).trigger('admin:list_init');
|
10
|
-
|
11
|
-
$el.scrollToEl();
|
16
|
+
$el.addClass('bg-lemon');
|
12
17
|
<% end %>
|
13
18
|
|
14
19
|
window.ab_admin_last_updated = <%= raw resource.for_input_token.to_json %>;
|
@@ -3,9 +3,8 @@ script#image_template type='text/x-handlebars-template'
|
|
3
3
|
= link_to icon('remove', true), '/admin/assets/{{id}}', remote: true, method: :delete, title: t('admin.delete'), class: 'destroy_asset', \
|
4
4
|
data: {confirm: t('admin.delete_confirmation')}
|
5
5
|
.main_image title=t('admin.fileupload.main_image') = icon('home', true)
|
6
|
-
.crop_image title=t('admin.fileupload.crop') = icon('resize-full', true)
|
7
6
|
.rotate_image title=t('admin.fileupload.rotate') = icon('repeat', true)
|
8
|
-
a.fileupload-file
|
7
|
+
a.fileupload-file href='{{url}}' target='_blank' data-fancybox=1
|
9
8
|
img src='{{thumb_url}}' title='{{name}}' alt="{{alt}}"
|
10
9
|
|
11
10
|
|
@@ -2,8 +2,7 @@
|
|
2
2
|
= link_to icon('remove', true), admin_asset_path(image), remote: true, method: :delete, title: t('admin.delete'), class: 'destroy_asset', \
|
3
3
|
data: {confirm: t('admin.delete_confirmation')}
|
4
4
|
.main_image title=t('admin.fileupload.main_image') = icon('home', true)
|
5
|
-
.crop_image title=t('admin.fileupload.crop') = icon('resize-full', true)
|
6
5
|
.rotate_image title=t('admin.fileupload.rotate') = icon('repeat', true)
|
7
|
-
a.fileupload-file
|
6
|
+
a.fileupload-file href=image.url target='_blank' data-fancybox=1
|
8
7
|
- I18n.with_locale(image.assetable.try(:locale)) do
|
9
8
|
img src=image.thumb_url title=image.name alt=image.alt
|
@@ -12,13 +12,14 @@
|
|
12
12
|
|
13
13
|
button#translate_incomplete.btn.btn-danger.pull-left type="button" = t 'admin.locators.translate_incomplete'
|
14
14
|
|
15
|
+
- master_locale = params[:master_locale].try!(:to_sym) || I18n.default_locale
|
15
16
|
- locale_file = Locator.prepare_data(@file)
|
16
17
|
table.table.table-bordered.table-striped
|
17
18
|
thead
|
18
19
|
tr
|
19
|
-
th
|
20
|
-
th
|
21
|
-
th
|
20
|
+
th= t 'admin.locators.key'
|
21
|
+
th= locale_file.locale
|
22
|
+
th= master_locale
|
22
23
|
tr
|
23
24
|
- [:key_contains, :edit_locale_contains, :main_locale_contains].each do |param|
|
24
25
|
th
|
@@ -26,7 +27,7 @@ table.table.table-bordered.table-striped
|
|
26
27
|
= form_tag(admin_locators_path, method: :put) do
|
27
28
|
tbody#locale_data
|
28
29
|
= hidden_field_tag 'edit_locale_name', locale_file.locale
|
29
|
-
= hidden_field_tag 'main_locale_name',
|
30
|
+
= hidden_field_tag 'main_locale_name', master_locale
|
30
31
|
= hidden_field_tag 'filename', locale_file.filename
|
31
32
|
|
32
33
|
- locale_file.flat_data.each do |keys, value|
|
@@ -34,8 +35,8 @@ table.table.table-bordered.table-striped
|
|
34
35
|
td.locale_keys
|
35
36
|
div== keys.join(' > ')
|
36
37
|
.btn.btn-mini.btn-inverse.auto_translate.pull-right google translate
|
37
|
-
td
|
38
|
-
td
|
38
|
+
td= text_area_tag 'locale_hash' + keys.map{|k| "[#{k}]" }.join, value
|
39
|
+
td= text_area_tag 'fake', t(keys.join('.'), locale: master_locale), disabled: true
|
39
40
|
tbody
|
40
41
|
tr
|
41
42
|
td colspan=3 = submit_tag t('admin.form.save'), class: 'btn btn-primary'
|
@@ -19,14 +19,17 @@
|
|
19
19
|
tbody
|
20
20
|
- is_edit_link = manager.actions.include?(:edit)
|
21
21
|
- collection.each do |item|
|
22
|
-
tr id=dom_id(item, 'list') class=(
|
22
|
+
tr id=dom_id(item, 'list') class=method_or_proc_on(table_builder.row_html_class, item)
|
23
23
|
= batch_action_item(item)
|
24
|
-
td
|
24
|
+
td
|
25
|
+
= id_link(item, edit: is_edit_link)
|
26
|
+
- if settings[:id_column_with_created_at]
|
27
|
+
div: i= l(item.created_at, format: AbAdmin.datetime_format)
|
25
28
|
= item_index_actions_panel(item)
|
26
29
|
- table_builder.fields.each do |field|
|
27
|
-
td class=
|
30
|
+
td class=field.options[:cell_html_class]
|
28
31
|
- field_content = table_item_field(item, field)
|
29
|
-
- if field.options[:copy_button]
|
32
|
+
- if field_content.present? && field.options[:copy_button]
|
30
33
|
- field_id = dom_id(item, field.name)
|
31
34
|
span> id=field_id = field_content
|
32
35
|
.btn.btn-mini> class='js-copy' data-clipboard-target="##{field_id}" = icon('share')
|
@@ -1,63 +1,68 @@
|
|
1
1
|
.content_actions.clearfix
|
2
|
-
- if settings[:batch] && current_index_view
|
2
|
+
- if settings[:batch] && settings[:current_index_view] == :table
|
3
3
|
.btn-group
|
4
4
|
a.btn.dropdown-toggle data-toggle="dropdown" href="#"
|
5
5
|
= t 'admin.batch_actions.title'
|
6
6
|
span.caret
|
7
7
|
ul.dropdown-menu
|
8
|
-
-
|
9
|
-
li
|
10
|
-
|
11
|
-
href='#'
|
12
|
-
data-form=batch_action.form
|
13
|
-
data-action=batch_action.name
|
14
|
-
data-confirm=batch_action.confirm
|
15
|
-
)
|
16
|
-
= batch_action.title
|
17
|
-
- unless button_scopes.blank?
|
8
|
+
- batch_actions.each do |ba|
|
9
|
+
li: a.batch_action_link href='#' data-form=ba.form data-action=ba.name data-confirm=ba.confirm = ba.title
|
10
|
+
- if settings[:button_scopes] && button_scopes.present?
|
18
11
|
.btn-group
|
19
|
-
- button_scopes.each do |
|
20
|
-
- next
|
21
|
-
-
|
22
|
-
-
|
23
|
-
a.btn href=
|
24
|
-
=
|
25
|
-
- if
|
26
|
-
- scope =
|
27
|
-
- scope_count = scope.send(*[
|
12
|
+
- button_scopes.each do |s|
|
13
|
+
- next unless option_conditions_met?(s.options)
|
14
|
+
- active = params[s.param_name]
|
15
|
+
- url = url_for(s.param_name => (active ? nil : 1), index_view: params[:index_view])
|
16
|
+
a.btn href=url title=s.options[:title] class=[s.options[:class], ('active' if active), ('tool tool-bottom' if s.options[:title])]
|
17
|
+
= s.options[:label] || s.options[:title] || t("admin.scopes.#{s.name}", default: s.name.to_s.titleize)
|
18
|
+
- if s.options[:badge]
|
19
|
+
- scope = s.apply(self, resource_class.accessible_by(current_ability))
|
20
|
+
- scope_count = scope.send(*[s.options[:badge][:value_type] || :count, s.options[:badge][:column]].compact)
|
28
21
|
- unless scope_count.zero?
|
29
|
-
span.badge< class=("badge-#{
|
22
|
+
span.badge< class=("badge-#{s.options.dig(:badge, :type) || 'important'} #{'pulse' if s.options.dig(:badge, :pulse)}") = scope_count
|
30
23
|
|
31
|
-
|
24
|
+
- if settings[:current_index_view] == :table
|
25
|
+
.btn-group#columns_hider_wrap
|
26
|
+
a.btn.dropdown-toggle data-toggle="dropdown" href="#"
|
27
|
+
= t 'admin.columns_hider.button'
|
28
|
+
span.caret
|
29
|
+
.dropdown-menu
|
32
30
|
|
33
31
|
.btn-group#view_layout
|
34
32
|
.btn data-css='main_wide' = icon('align-left')
|
35
33
|
.btn data-css='main_reverse' = icon('align-right')
|
36
34
|
|
37
|
-
- if
|
35
|
+
- if settings[:index_views].length > 1
|
38
36
|
.btn-group#index_views
|
39
|
-
-
|
37
|
+
- settings[:index_views].each do |index_view|
|
40
38
|
= index_view_link(index_view)
|
41
39
|
|
42
|
-
- if can?(:export, resource_class)
|
40
|
+
- if settings[:export] && can?(:export, resource_class)
|
43
41
|
.btn-group.downloads
|
44
42
|
= icon('download-alt')
|
45
|
-
/- %w(csv xls json).each do |format|
|
46
43
|
- %w(csv xlsx).each do |format|
|
47
44
|
- next if format == 'xlsx' && !Mime[:xlsx]
|
48
45
|
= link_to format, params_for_links.merge(per_page: 10_000, format: format), id: "export_#{format}"
|
49
46
|
|
50
|
-
- if
|
47
|
+
- if ransack_collection && settings[:sort_buttons]
|
51
48
|
.btn-group
|
52
49
|
- settings[:sort_buttons].each do |opts|
|
53
50
|
= list_sort_link(opts[:title], column: opts[:column], html_options: {class: 'btn'})
|
54
51
|
|
55
|
-
- if
|
52
|
+
- if collection_action? && settings[:aggregations]
|
56
53
|
.aggregations
|
57
54
|
- settings[:aggregations].each do |ag|
|
58
55
|
.label> class=(ag[:css] || 'label-success')
|
59
56
|
=> ag[:label] || "#{ag[:column].to_s.humanize}:"
|
60
57
|
- if !ag[:type] || ag[:type] == :sum
|
61
|
-
=
|
58
|
+
- res = search_collection.unscope(:includes).distinct(false).sum(ag[:column])
|
59
|
+
= number_with_delimiter(res.round(2), delimiter: ' ') if res
|
62
60
|
- elsif ag[:type] == :average
|
63
|
-
=
|
61
|
+
- res = search_collection.unscope(:includes).average(ag[:column])
|
62
|
+
= number_with_delimiter(res.round(2), delimiter: ' ') if res
|
63
|
+
- elsif ag[:type] == :pct
|
64
|
+
- sc_count = search_collection.count
|
65
|
+
- if sc_count.zero?
|
66
|
+
| 0%
|
67
|
+
- else
|
68
|
+
= "#{(search_collection.where.not(ag[:column] => nil).count.to_f / search_collection.count * 100).try!(:round, 2)}%"
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
2
|
-
.
|
3
|
-
|
4
|
-
|
1
|
+
#flash
|
2
|
+
- flash.each do |type, message|
|
3
|
+
.alert class="alert-#{type}"
|
4
|
+
a.close(data-dismiss='alert') ×
|
5
|
+
== message
|
@@ -3,8 +3,8 @@
|
|
3
3
|
- active_locale = params[:edit_locale].present? ? params[:edit_locale].to_sym : locales.first
|
4
4
|
- locales.each_with_index do |l, i|
|
5
5
|
li class=('active' if l == active_locale)
|
6
|
-
a data-toggle="tab" href="##{l}" class="ico_#{l}" title=l
|
7
|
-
|
6
|
+
a data-toggle="tab" href="##{l}" class="ico_#{l}" title=l = locale_flag(l)
|
7
|
+
= tab_nav.call(l) if tab_nav
|
8
8
|
.tab-content
|
9
9
|
- locales.each_with_index do |l, i|
|
10
10
|
.tab-pane id=l class="tab_#{l} #{'active' if l == active_locale}" = locale_html[l]
|
@@ -6,7 +6,7 @@ nav.navbar-inner
|
|
6
6
|
span.icon-bar
|
7
7
|
a.brand href=(AbAdmin.root_path || root_path) target='_blank' = admin_site_name
|
8
8
|
.nav-collapse.collapse
|
9
|
-
= AdminMenu.render(self)
|
9
|
+
= (current_user.admin_menu_builder || AdminMenu).render(self)
|
10
10
|
|
11
11
|
.btn-group.pull-right
|
12
12
|
a.btn.dropdown-toggle data-toggle="dropdown" href="#"
|
@@ -1,10 +1,19 @@
|
|
1
1
|
- return_to = params[:return_to].presence || request.referer || collection_path
|
2
|
-
- return_to = "#{return_to}##{dom_id(resource, 'list')}" if resource.persisted?
|
2
|
+
- return_to = "#{return_to.split('#', 2).first}##{dom_id(resource, 'list')}" if resource.persisted?
|
3
3
|
input type='hidden' name='return_to' value=return_to
|
4
|
+
- if settings[:safe_save] && resource.updated_at
|
5
|
+
input type='hidden' name='last_updated_timestamp' value=(resource.last_updated_timestamp || resource.updated_timestamp.to_i)
|
4
6
|
.form-actions
|
5
7
|
button.btn.btn-primary type="submit" name="_save" data-disable-with=t('admin.form.save')
|
6
8
|
= icon('ok', true)
|
7
9
|
= t('admin.form.save')
|
10
|
+
- if resource.errors.of_kind?(:base, :changed)
|
11
|
+
a.btn href=edit_resource_path(resource, return_to: params[:return_to])
|
12
|
+
= icon('repeat')
|
13
|
+
= t('admin.form.refresh')
|
14
|
+
button.btn.btn-warning type="submit" name="_force_save" data-disable-with='Force'
|
15
|
+
= icon('fire', true)
|
16
|
+
= t('admin.form.force_save')
|
8
17
|
span.extra_buttons
|
9
18
|
- unless resource.new_record?
|
10
19
|
span.next_prev_buttons
|
@@ -3,7 +3,7 @@
|
|
3
3
|
= f.input :title, locale: l
|
4
4
|
= f.input :redirect_url, locale: l, as: :string
|
5
5
|
|
6
|
-
- Structure.
|
6
|
+
- Structure.simple_slug_adapter.column_names.each do |column|
|
7
7
|
= f.input column
|
8
8
|
- if @structure.moveable?
|
9
9
|
= f.input :parent, as: :tree_select
|
@@ -15,11 +15,11 @@
|
|
15
15
|
= f.input :gender, collection: GenderType.all, include_blank: false, as: :radio_buttons, item_wrapper_class: 'inline'
|
16
16
|
|
17
17
|
= f.input :time_zone, fancy: true, priority: %w(Moscow Kyiv).map{|t| ActiveSupport::TimeZone[t] }
|
18
|
-
= f.input :locale, collection:
|
18
|
+
= f.input :locale, collection: AbAdmin.translated_locales
|
19
19
|
= f.input :bg_color, as: :color
|
20
20
|
|
21
|
-
= f.input :password, input_html: {autocomplete: '
|
22
|
-
= f.input :password_confirmation, input_html: {autocomplete: '
|
21
|
+
= f.input :password, input_html: {autocomplete: 'new-password'}
|
22
|
+
= f.input :password_confirmation, input_html: {autocomplete: 'new-password'}
|
23
23
|
|
24
24
|
= f.input :avatar, as: :uploader, edit_meta: true
|
25
25
|
|
@@ -10,7 +10,7 @@
|
|
10
10
|
= f.input :user_role_id, collection: UserRoleType.all
|
11
11
|
|
12
12
|
= f.input :gender, collection: GenderType.all
|
13
|
-
= f.input :locale, collection:
|
13
|
+
= f.input :locale, collection: AbAdmin.translated_locales
|
14
14
|
|
15
15
|
= f.input :updated_at
|
16
16
|
= f.input :created_at
|
@@ -16,13 +16,13 @@ html id="controller_#{controller_name}"
|
|
16
16
|
= render 'layouts/admin/navigation'
|
17
17
|
#main role="main"
|
18
18
|
.container-fluid
|
19
|
-
= render('admin/shared/flash', flash: flash) if flash
|
20
19
|
#container.row-fluid
|
21
20
|
.wrap_content
|
22
21
|
.clearfix data-pjax-container=true class=admin_layout_css = yield
|
23
22
|
- if collection_action? && settings[:search]
|
24
|
-
.sidebar.well= render 'search_layout'
|
23
|
+
.sidebar.well.well-tiny= render 'search_layout'
|
25
24
|
= yield :sidebar
|
25
|
+
= render('admin/shared/flash', flash: flash) if flash
|
26
26
|
#modal_form.modal.hide
|
27
27
|
#loading.label.label-warning= t 'admin.loading'
|
28
28
|
#push
|
data/config/locales/de.yml
CHANGED
@@ -89,7 +89,7 @@ de:
|
|
89
89
|
choose: Select %{attr}
|
90
90
|
close: Close
|
91
91
|
columns_hider:
|
92
|
-
button:
|
92
|
+
button: Columns
|
93
93
|
title: Setting the display of columns
|
94
94
|
comments:
|
95
95
|
add: Comment
|
@@ -105,7 +105,6 @@ de:
|
|
105
105
|
drop_here: Drag and drop files here
|
106
106
|
main_image: Set Main
|
107
107
|
max_size: Max size
|
108
|
-
crop: Crop
|
109
108
|
rotate: Rotate
|
110
109
|
form:
|
111
110
|
cancel: Cancel
|
data/config/locales/en.yml
CHANGED
@@ -18,22 +18,13 @@ en:
|
|
18
18
|
actions:
|
19
19
|
activate:
|
20
20
|
link: Activate
|
21
|
-
batch_destroy:
|
22
|
-
confirmation: Are you sure you want to delete the selected records?
|
23
|
-
link: Delete selected
|
24
|
-
title: Multi-remove
|
25
|
-
batch_publish:
|
26
|
-
link: Publish selected
|
27
|
-
title: Multi-publish
|
28
|
-
batch_un_publish:
|
29
|
-
link: Unpublish selected
|
30
|
-
title: Multi-hiding
|
31
21
|
create:
|
32
22
|
link: Create
|
33
23
|
title: Creation
|
34
24
|
destroy:
|
35
|
-
link:
|
36
|
-
title:
|
25
|
+
link: Destroy
|
26
|
+
title: Destroy
|
27
|
+
confirmation: Are you sure you want to delete the selected records?
|
37
28
|
edit:
|
38
29
|
link: Edit
|
39
30
|
title: Editing
|
@@ -89,12 +80,12 @@ en:
|
|
89
80
|
choose: Select %{attr}
|
90
81
|
close: Close
|
91
82
|
columns_hider:
|
92
|
-
button:
|
83
|
+
button: Columns
|
93
84
|
title: Setting the display of columns
|
94
85
|
comments:
|
95
86
|
add: Comment
|
96
87
|
title_content: Comments (%{count})
|
97
|
-
delete:
|
88
|
+
delete: Destroy
|
98
89
|
delete_confirmation: Are you sure you want to delete this?
|
99
90
|
empty: Empty
|
100
91
|
exit: Output
|
@@ -105,11 +96,12 @@ en:
|
|
105
96
|
drop_here: Drag and drop files here
|
106
97
|
main_image: Set Main
|
107
98
|
max_size: Max size
|
108
|
-
crop: Crop
|
109
99
|
rotate: Rotate
|
110
100
|
form:
|
111
101
|
cancel: Cancel
|
112
102
|
save: Save
|
103
|
+
force_save: Force save
|
104
|
+
refresh: Refresh
|
113
105
|
save_and_add_another: Save and add new
|
114
106
|
save_and_edit: Save and continue editing
|
115
107
|
save_and_edit_next: Save and next.
|
@@ -246,6 +238,7 @@ en:
|
|
246
238
|
updater_id: 'Updater'
|
247
239
|
remember_me: Remember
|
248
240
|
password: Password
|
241
|
+
otp_attempt: OTP
|
249
242
|
flash:
|
250
243
|
admin:
|
251
244
|
actions:
|
@@ -291,5 +284,6 @@ en:
|
|
291
284
|
size_too_big: is too big (should be at most %{file_size})
|
292
285
|
carrierwave_processing_error: Cannot resize image.
|
293
286
|
carrierwave_integrity_error: Not an image.
|
287
|
+
changed: 'Record was changed by someone else, "Refresh" to get the latest version and repeat changes or "Force save" to overwrite'
|
294
288
|
unauthorized:
|
295
289
|
default: You are not authorized to access this page.
|
data/config/locales/it.yml
CHANGED
data/config/locales/ru.yml
CHANGED
data/config/locales/uk.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
class CreateUsers < ActiveRecord::Migration
|
1
|
+
class CreateUsers < ActiveRecord::Migration[5.2]
|
2
2
|
def change
|
3
3
|
create_table(:users) do |t|
|
4
4
|
t.string :login
|
@@ -35,9 +35,6 @@ class CreateUsers < ActiveRecord::Migration
|
|
35
35
|
t.string :current_sign_in_ip
|
36
36
|
t.string :last_sign_in_ip
|
37
37
|
|
38
|
-
## Encryptable
|
39
|
-
t.string :password_salt
|
40
|
-
|
41
38
|
## Confirmable
|
42
39
|
t.string :confirmation_token
|
43
40
|
t.datetime :confirmed_at
|
@@ -1,12 +1,12 @@
|
|
1
|
-
class CreateHeaders < ActiveRecord::Migration
|
1
|
+
class CreateHeaders < ActiveRecord::Migration[5.2]
|
2
2
|
def change
|
3
3
|
create_table :headers do |t|
|
4
|
-
t.string
|
5
|
-
t.integer
|
6
|
-
|
4
|
+
t.string :headerable_type, limit: 50, null: false
|
5
|
+
t.integer :headerable_id, null: false
|
6
|
+
|
7
7
|
t.timestamps
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
add_index :headers, [:headerable_type, :headerable_id], unique: true
|
11
11
|
end
|
12
12
|
end
|
@@ -1,14 +1,11 @@
|
|
1
|
-
class CreateStaticPages < ActiveRecord::Migration
|
1
|
+
class CreateStaticPages < ActiveRecord::Migration[5.2]
|
2
2
|
def change
|
3
3
|
create_table :static_pages do |t|
|
4
|
-
t.
|
4
|
+
t.references :structure, null: false
|
5
5
|
t.references :user
|
6
6
|
t.boolean :is_visible, default: true, null: false
|
7
7
|
|
8
8
|
t.timestamps
|
9
9
|
end
|
10
|
-
|
11
|
-
add_index :static_pages, :user_id
|
12
|
-
add_index :static_pages, :structure_id
|
13
10
|
end
|
14
11
|
end
|