ab_admin 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/admin/flags/de.png +0 -0
  3. data/app/assets/images/admin/flags/en.png +0 -0
  4. data/app/assets/images/admin/flags/es.png +0 -0
  5. data/app/assets/images/admin/flags/fr.png +0 -0
  6. data/app/assets/images/admin/flags/it.png +0 -0
  7. data/app/assets/images/admin/flags/ja.png +0 -0
  8. data/app/assets/images/admin/flags/pl.png +0 -0
  9. data/app/assets/images/admin/flags/ru.png +0 -0
  10. data/app/assets/images/admin/flags/{b_de.png → toremove/b_de.png} +0 -0
  11. data/app/assets/images/admin/flags/{b_en.png → toremove/b_en.png} +0 -0
  12. data/app/assets/images/admin/flags/{b_es.png → toremove/b_es.png} +0 -0
  13. data/app/assets/images/admin/flags/{b_fr.png → toremove/b_fr.png} +0 -0
  14. data/app/assets/images/admin/flags/{b_it.png → toremove/b_it.png} +0 -0
  15. data/app/assets/images/admin/flags/{b_ru.png → toremove/b_ru.png} +0 -0
  16. data/app/assets/images/admin/flags/{b_uk.png → toremove/b_uk.png} +0 -0
  17. data/app/assets/images/admin/flags/{flag_de.gif → toremove/flag_de.gif} +0 -0
  18. data/app/assets/images/admin/flags/{flag_de_nonact.gif → toremove/flag_de_nonact.gif} +0 -0
  19. data/app/assets/images/admin/flags/{flag_en.gif → toremove/flag_en.gif} +0 -0
  20. data/app/assets/images/admin/flags/{flag_en_nonact.gif → toremove/flag_en_nonact.gif} +0 -0
  21. data/app/assets/images/admin/flags/{flag_es.gif → toremove/flag_es.gif} +0 -0
  22. data/app/assets/images/admin/flags/{flag_es_nonact.gif → toremove/flag_es_nonact.gif} +0 -0
  23. data/app/assets/images/admin/flags/{flag_fr.gif → toremove/flag_fr.gif} +0 -0
  24. data/app/assets/images/admin/flags/{flag_fr_nonact.gif → toremove/flag_fr_nonact.gif} +0 -0
  25. data/app/assets/images/admin/flags/{flag_it.gif → toremove/flag_it.gif} +0 -0
  26. data/app/assets/images/admin/flags/{flag_it_nonact.gif → toremove/flag_it_nonact.gif} +0 -0
  27. data/app/assets/images/admin/flags/{flag_ru.gif → toremove/flag_ru.gif} +0 -0
  28. data/app/assets/images/admin/flags/{flag_ru_nonact.gif → toremove/flag_ru_nonact.gif} +0 -0
  29. data/app/assets/images/admin/flags/{flag_uk.gif → toremove/flag_uk.gif} +0 -0
  30. data/app/assets/images/admin/flags/{flag_uk_nonact.gif → toremove/flag_uk_nonact.gif} +0 -0
  31. data/app/assets/images/admin/flags/uk.png +0 -0
  32. data/app/assets/javascripts/ab_admin/components/in_place_edit.js.coffee +9 -1
  33. data/app/assets/javascripts/ab_admin/components/select2_bridge.js.coffee +1 -2
  34. data/app/assets/javascripts/ab_admin/core/init.js.coffee +5 -3
  35. data/app/assets/javascripts/ab_admin/core/ui_utils.js.coffee +17 -0
  36. data/app/assets/javascripts/ab_admin/inputs/datetime_input.js.coffee +8 -3
  37. data/app/assets/stylesheets/ab_admin/bootstrap_and_overrides.scss +37 -8
  38. data/app/assets/stylesheets/ab_admin/components/_form.scss +31 -2
  39. data/app/assets/stylesheets/ab_admin/components/_locale_tabs.scss +13 -48
  40. data/app/assets/stylesheets/ab_admin/components/_navigation.scss +5 -0
  41. data/app/assets/stylesheets/ab_admin/main.scss +1 -1
  42. data/app/controllers/admin/base_controller.rb +14 -15
  43. data/app/controllers/admin/locators_controller.rb +18 -0
  44. data/app/controllers/admin/manager_controller.rb +6 -8
  45. data/app/controllers/admin/settings_controller.rb +1 -1
  46. data/app/controllers/admin/static_pages_controller.rb +1 -3
  47. data/app/controllers/admin/structures_controller.rb +2 -7
  48. data/app/controllers/admin/users_controller.rb +1 -1
  49. data/app/views/ab_admin/devise/sessions/new.html.slim +3 -3
  50. data/app/views/admin/base/_search_layout.html.slim +3 -1
  51. data/app/views/admin/base/_table.html.slim +1 -1
  52. data/app/views/admin/base/update.js.erb +3 -1
  53. data/app/views/admin/locators/show.html.slim +22 -1
  54. data/app/views/admin/manager/_chart.html.slim +4 -0
  55. data/app/views/admin/manager/_table.html.slim +16 -13
  56. data/app/views/admin/shared/_action_items.html.slim +12 -0
  57. data/app/views/admin/shared/_content_actions.html.slim +15 -3
  58. data/app/views/admin/shared/_locale_tabs.html.slim +5 -3
  59. data/app/views/admin/shared/_main_menu.html.slim +20 -0
  60. data/app/views/admin/shared/_save_buttons.html.slim +2 -1
  61. data/app/views/admin/users/_table.html.slim +6 -0
  62. data/app/views/layouts/admin/_navigation.html.slim +2 -24
  63. data/config/locales/de.yml +0 -8
  64. data/config/locales/en.yml +3 -11
  65. data/config/locales/it.yml +9 -17
  66. data/config/locales/ru.yml +0 -8
  67. data/config/locales/uk.yml +0 -8
  68. data/config/routes.rb +2 -1
  69. data/lib/ab_admin.rb +6 -1
  70. data/lib/ab_admin/abstract_resource.rb +1 -1
  71. data/lib/ab_admin/carrierwave/base_uploader.rb +1 -1
  72. data/lib/ab_admin/concerns/utilities.rb +2 -2
  73. data/lib/ab_admin/config/base.rb +7 -5
  74. data/lib/ab_admin/core_ext/hash.rb +19 -1
  75. data/lib/ab_admin/core_ext/other.rb +0 -48
  76. data/lib/ab_admin/hooks/will_paginate_id_prefetch.rb +1 -1
  77. data/lib/ab_admin/i18n_tools/model_translator.rb +4 -4
  78. data/lib/ab_admin/models/asset.rb +0 -4
  79. data/lib/ab_admin/models/locator.rb +37 -4
  80. data/lib/ab_admin/models/user.rb +2 -2
  81. data/lib/ab_admin/utils.rb +1 -1
  82. data/lib/ab_admin/utils/eval_helpers.rb +1 -5
  83. data/lib/ab_admin/utils/logger.rb +11 -2
  84. data/lib/ab_admin/utils/mysql.rb +2 -2
  85. data/lib/ab_admin/version.rb +1 -1
  86. data/lib/ab_admin/views/admin_helpers.rb +38 -21
  87. data/lib/ab_admin/views/admin_navigation_helpers.rb +6 -6
  88. data/lib/ab_admin/views/form_builder.rb +4 -1
  89. data/lib/ab_admin/views/helpers.rb +13 -34
  90. data/lib/ab_admin/views/inputs/date_time_picker_input.rb +5 -4
  91. data/lib/ab_admin/views/manager_helpers.rb +21 -3
  92. data/lib/generators/ab_admin/glob/glob_generator.rb +3 -6
  93. data/lib/generators/ab_admin/install/templates/models/asset.rb +1 -1
  94. data/lib/generators/ab_admin/install/templates/models/structure_type.rb +4 -0
  95. data/lib/generators/ab_admin/install/templates/spec/factories/sequences.rb +2 -2
  96. data/lib/generators/ab_admin/install/templates/spec/factories/structure_factory.rb +1 -1
  97. data/lib/generators/ab_admin/install/templates/spec/factories/user_factory.rb +1 -1
  98. data/lib/generators/ab_admin/install/templates/spec/spec_helper.rb +1 -1
  99. data/lib/generators/ab_admin/install/templates/spec/support/controller_macros.rb +4 -4
  100. data/lib/generators/template.rb +2 -2
  101. metadata +51 -39
@@ -4,6 +4,24 @@ class ::Admin::LocatorsController < ::Admin::BaseController
4
4
  before_action :find_files, only: [:show, :edit, :update]
5
5
  before_action :find_file, only: [:edit, :update]
6
6
 
7
+ def export
8
+ authorize! :export, resource_class
9
+ locales = I18n.available_locales & params[:locales].split(',').map(&:to_sym) if params[:locales].present?
10
+ keys = Locator.export_csv(*params[:keys].to_s.split(','), locales: locales)
11
+ send_data(keys, filename: "locales_#{Time.now.strftime('%Y_%m_%d')}.csv", type: Mime[:csv], disposition: 'attachment')
12
+ end
13
+
14
+ def import
15
+ if params[:csv_file].present?
16
+ locales = I18n.available_locales & params[:locales].split(',').map(&:to_sym) if params[:locales].present?
17
+ Locator.import_csv(params[:csv_file].read, locales: locales)
18
+ flash[:notice] = 'File imported'
19
+ else
20
+ flash[:error] = 'Missing or invalid csv file'
21
+ end
22
+ redirect_to admin_locators_path
23
+ end
24
+
7
25
  def edit
8
26
  @locale_hash = YAML.load_file(@file)
9
27
  end
@@ -23,7 +23,11 @@ class ::Admin::ManagerController < ::Admin::BaseController
23
23
  end
24
24
 
25
25
  def with_scopes(relation)
26
- manager.scopes.inject(relation) { |result, scope| scope.apply(result, params) }
26
+ scopes_to_apply.inject(relation) { |result, scope| scope.apply(result, params) }
27
+ end
28
+
29
+ def scopes_to_apply
30
+ manager.scopes.find_all{|scope| params[scope.name].present? }
27
31
  end
28
32
 
29
33
  def begin_of_association_chain
@@ -125,13 +129,7 @@ class ::Admin::ManagerController < ::Admin::BaseController
125
129
  end
126
130
 
127
131
  def permitted_params
128
- attrs = case manager.permitted_params
129
- when Proc then
130
- instance_exec(&manager.permitted_params)
131
- else
132
- Array(manager.permitted_params)
133
- end
134
-
132
+ attrs = Array(manager.permitted_params.is_a?(Proc) ? instance_exec(&manager.permitted_params) : manager.permitted_params)
135
133
  resource_params = params[resource_class.model_name.param_key]
136
134
  return {} unless resource_params
137
135
  if attrs.first == :all
@@ -11,7 +11,7 @@ class ::Admin::SettingsController < ::Admin::BaseController
11
11
 
12
12
  def cache_clear
13
13
  Rails.cache.clear
14
- render nothing: true
14
+ head :ok
15
15
  end
16
16
 
17
17
  private
@@ -12,8 +12,6 @@ class Admin::StaticPagesController < Admin::BaseController
12
12
  end
13
13
 
14
14
  def permitted_params
15
- attrs = [:structure_id, :title, :content, :kind, :is_visible,
16
- *StaticPage.all_translated_attribute_names, *AbAdmin.default_permitted_params]
17
- params[:static_page].try!(:permit, *attrs)
15
+ params[:static_page].try!(:permit!)
18
16
  end
19
17
  end
@@ -8,7 +8,7 @@ class Admin::StructuresController < Admin::BaseController
8
8
  def resource_action_items
9
9
  edit_structure = AbAdmin::Config::ActionItem.new({}) { |r| link_to icon('wrench', true), edit_resource_path(r), class: 'btn btn-warning' }
10
10
  edit_static_page = AbAdmin::Config::ActionItem.new({}) do |r|
11
- link_to(icon('pencil', true), edit_structure_record_path(r), class: 'btn btn-primary') if r.structure_type.static_page? || r.structure_type.main?
11
+ link_to(icon('pencil', true), edit_structure_record_path(r), class: 'btn btn-primary') if r.structure_type.has_static_page?
12
12
  end
13
13
  [edit_static_page, edit_structure, :destroy, :show]
14
14
  end
@@ -22,11 +22,6 @@ class Admin::StructuresController < Admin::BaseController
22
22
  end
23
23
 
24
24
  def permitted_params
25
- attrs = [:structure_type_id, :position_type_id, :parent_id, :title, :redirect_url, :is_visible,
26
- :structure_type, :position_type,
27
- *Structure.simple_slug_columns,
28
- *AbAdmin.default_permitted_params,
29
- *Structure.all_translated_attribute_names, header_attributes: [:id, *Header.all_translated_attribute_names]]
30
- params[:structure].try!(:permit, *attrs)
25
+ params[:structure].try!(:permit!)
31
26
  end
32
27
  end
@@ -42,7 +42,7 @@ class Admin::UsersController < Admin::BaseController
42
42
 
43
43
  def build_resource
44
44
  super
45
- resource.skip_confirmation!
45
+ resource.try(:skip_confirmation!)
46
46
  resource
47
47
  end
48
48
 
@@ -1,10 +1,10 @@
1
1
  = simple_form_for(resource, as: resource_name, url: session_path(resource_name), wrapper: :bootstrap) do |f|
2
- h2= t 'admin.auth.sessions.title'
2
+ h2= t 'admin.auth.sessions.title', default: 'Sign in'
3
3
  .form-inputs
4
4
  = f.input :email, required: false, autofocus: true
5
5
  = f.input :password, required: false
6
6
  = f.input :remember_me, as: :boolean, wrapper: :default if devise_mapping.rememberable?
7
- = f.button :submit, t('admin.auth.sessions.button'), class: 'btn-primary btn-large'
7
+ = f.button :submit, t('admin.auth.sessions.button', default: 'Sign in'), class: 'btn-primary btn-large'
8
8
  br
9
9
  br
10
- = link_to t('admin.auth.passwords.new.title'), new_password_path(resource_name)
10
+ = link_to t('admin.auth.passwords.new.title', default: 'Forgot your password?'), new_password_path(resource_name) if devise_mapping.recoverable?
@@ -1,6 +1,8 @@
1
1
  #toggle_sidebar_off.btn.btn-large = icon('chevron-left')
2
2
  #toggle_sidebar_on.btn.btn-large = icon('chevron-right')
3
- = search_admin_form_for @search, url: collection_path do |f|
3
+ = search_admin_form_for @search, url: collection_path(scope_params) do |f|
4
+ - if settings.dig(:search_form, :submit_on_top)
5
+ = f.submit t('admin.search.submit'), class: 'btn btn-success btn-small search-submit-wide'
4
6
  = render 'search_form', f: f
5
7
  br
6
8
  div
@@ -8,7 +8,7 @@ table.table.table-striped.index_table#list
8
8
  th=t 'admin.table.actions'
9
9
  tbody
10
10
  - collection.each do |item|
11
- tr
11
+ tr id=dom_id(item, 'list')
12
12
  = batch_action_item(item)
13
13
  td= id_link(item)
14
14
  - resource_class.content_columns.map(&:name).without('updated_at').each do |col|
@@ -5,8 +5,10 @@
5
5
  %>
6
6
  $('#<%= form_wrap_id %>').remove();
7
7
  $('#<%= dom_id(resource, 'list') %>').replaceWith('<%= j html %>');
8
+ var $el = $('#<%= dom_id(resource, 'list') %>');
8
9
  $(document).trigger('admin:list_init');
9
- $('#<%= dom_id(resource, 'list') %>').addClass('success').scrollToEl();
10
+ if (!$el[0].className) $el.addClass('success');
11
+ $el.scrollToEl();
10
12
  <% end %>
11
13
 
12
14
  window.ab_admin_last_updated = <%= raw resource.for_input_token.to_json %>;
@@ -10,4 +10,25 @@ table.table.table-striped.table-bordered style='width: 1050px;'
10
10
  td= link_to filename, edit_admin_locators_path(filename: filename)
11
11
 
12
12
  => link_to t('admin.locators.prepare'), prepare_admin_locators_path, class: 'btn btn-warning', method: :post
13
- => link_to t('admin.locators.restart'), reload_admin_locators_path, class: 'btn btn-primary', method: :post
13
+ => link_to t('admin.locators.restart'), reload_admin_locators_path, class: 'btn btn-primary', method: :post
14
+
15
+ hr
16
+
17
+ = form_tag export_admin_locators_path, method: :get do
18
+ input.input-xxlarge> type='text' name='keys' placeholder='Keys comma separated'
19
+ br
20
+ input.input-medium.fancy_select> type='text' name='locales' placeholder='Locales, all by default' data-tags=I18n.available_locales.to_json
21
+ br
22
+ br
23
+ button.btn Export CSV
24
+
25
+ hr
26
+
27
+ = form_tag import_admin_locators_path, method: :post, multipart: true do
28
+ = file_field_tag :csv_file
29
+ br
30
+ input.input-medium.fancy_select> type='text' name='locales' placeholder='Locales, all by default' data-tags=I18n.available_locales.to_json
31
+ br
32
+ br
33
+ button.btn Import CSV
34
+
@@ -0,0 +1,4 @@
1
+ - if tmpl = admin_partial_name(chart_builder)
2
+ = render partial: tmpl, locals: local_assigns
3
+ - else
4
+ h2 Generic chart template is not implemented yet. It can be here `admin/#{resource_collection_name}/_chart.html.slim`
@@ -9,26 +9,29 @@
9
9
  th.actions_panel
10
10
  - table_builder.fields.each do |field|
11
11
  th class=('hide_cell' if field.options[:hidden])
12
- - if field.options[:sortable] && !field.options[:image]
13
- - if field.options[:sortable].is_a?(TrueClass)
14
- = list_sort_link field.name
15
- - else
16
- - opts = field.options[:sortable].is_a?(Hash) ? field.options[:sortable] : {column: field.options[:sortable]}
17
- = list_sort_link field.name, opts
12
+ - if field.options[:sortable].is_a?(FalseClass)
13
+ = field.name.is_a?(Symbol) ? ha(field.name) : field.name
14
+ - elsif field.options[:sortable].is_a?(TrueClass)
15
+ = list_sort_link field.name
16
+ - elsif field.options[:sortable].is_a?(Hash)
17
+ = list_sort_link field.name, field.options[:sortable]
18
+ - elsif resource_class.column_names.include?(field.name.to_s)
19
+ = list_sort_link field.name
18
20
  - else
19
21
  = field.name.is_a?(Symbol) ? ha(field.name) : field.name
20
22
  tbody
21
23
  - is_edit_link = manager.actions.include?(:edit)
22
24
  - collection.each do |item|
23
- tr id=dom_id(item, 'list') class=(table_builder.options[:row_class].call(item) if table_builder.options[:row_class])
25
+ tr id=dom_id(item, 'list') class=(call_method_or_proc_on(item, table_builder.options[:row_class]) if table_builder.options[:row_class])
24
26
  = batch_action_item(item)
25
27
  td= id_link(item, edit: is_edit_link)
26
28
  = item_index_actions_panel(item)
27
29
  - table_builder.fields.each do |field|
28
- td
29
- - if field.options[:editable] && field.data.is_a?(Symbol)
30
- = admin_editable item, field.data, field.options[:editable]
31
- - elsif field.options[:image]
32
- = item_image_link(item, assoc: field.name)
30
+ td class=(field.options[:css_class] if field.options[:css_class])
31
+ - field_content = table_item_field(item, field)
32
+ - if field.options[:copy_button]
33
+ - field_id = dom_id(item, field.name)
34
+ span> id=field_id = field_content
35
+ .btn.btn-mini> class='js-copy' data-clipboard-target="##{field_id}" = icon('share')
33
36
  - else
34
- = admin_pretty_data call_method_or_proc_on(item, field.data)
37
+ = field_content
@@ -0,0 +1,12 @@
1
+ - action_items.group_by{|ai| ai.is_a?(AbAdmin::Config::ActionItem) && ai.options[:group] }.each do |group, action_items|
2
+ - if group
3
+ .btn-group
4
+ a.btn.dropdown-toggle data-toggle="dropdown" href="#"
5
+ = group.to_s.humanize
6
+ span.caret
7
+ ul.dropdown-menu
8
+ - action_items.each do |action_item|
9
+ li= action_link(action_item)
10
+ - else
11
+ - action_items.each do |action_item|
12
+ = action_link(action_item)
@@ -15,16 +15,18 @@
15
15
  )
16
16
  = batch_action.title
17
17
  - unless button_scopes.blank?
18
- .btn-group.pjax_links
18
+ .btn-group
19
19
  - button_scopes.each do |name, opts|
20
+ - next if opts[:if] && !call_method_or_proc_on(controller, opts[:if])
20
21
  - param_name = opts[:as] || name
21
22
  - active = params[param_name]
22
23
  a.btn href=url_for(param_name => (active ? nil : 1)) class=('active' if active)
23
24
  = t "admin.scopes.#{name}", default: name.to_s.titleize
24
25
  - if opts[:badge]
25
- - scope_count = resource_class.send(name).count
26
+ - scope = opts[:block] ? opts[:block].call(controller, resource_class) : resource_class.send(name)
27
+ - scope_count = scope.send(*[opts[:badge][:value_type] || :count, opts[:badge][:column]].compact)
26
28
  - unless scope_count.zero?
27
- span.badge< class=("badge-#{opts[:badge][:type] || 'important'}") = scope_count
29
+ span.badge< class=("badge-#{opts[:badge].try(:[], :type) || 'important'}") = scope_count
28
30
 
29
31
  a.btn.pull-left#columns_hider_show href="#columns_hider" data-toggle='modal' = t 'admin.columns_hider.button'
30
32
 
@@ -49,3 +51,13 @@
49
51
  .btn-group
50
52
  - settings[:sort_buttons].each do |opts|
51
53
  = list_sort_link(opts[:title], column: opts[:column], html_options: {class: 'btn'})
54
+
55
+ - if @search_collection && settings[:aggregations]
56
+ .aggregations
57
+ - settings[:aggregations].each do |ag|
58
+ .label> class=(ag[:css] || 'label-success')
59
+ => ag[:label] || "#{ag[:column].to_s.humanize}:"
60
+ - if !ag[:type] || ag[:type] == :sum
61
+ = @search_collection.distinct(false).sum(ag[:column]).try!(:round, 2)
62
+ - elsif ag[:type] == :average
63
+ = @search_collection.average(ag[:column]).try!(:round, 2)
@@ -1,8 +1,10 @@
1
1
  .tabbable.locale_tabs
2
2
  ul.nav.nav-tabs
3
+ - active_locale = params[:edit_locale].present? ? params[:edit_locale].to_sym : locales.first
3
4
  - locales.each_with_index do |l, i|
4
- li class=('active' if i.zero?)
5
- a data-toggle="tab" href="##{l}" class="ico_#{l}" = t("admin.langs.#{l}", default: l.to_s)
5
+ li class=('active' if l == active_locale)
6
+ a data-toggle="tab" href="##{l}" class="ico_#{l}" title=l
7
+ img src=image_path("admin/flags/#{l}.png")
6
8
  .tab-content
7
9
  - locales.each_with_index do |l, i|
8
- .tab-pane id=l class="tab_#{l} #{'active' if i.zero?}" = locale_html[l]
10
+ .tab-pane id=l class="tab_#{l} #{'active' if l == active_locale}" = locale_html[l]
@@ -0,0 +1,20 @@
1
+ nav.navbar-inner
2
+ .container
3
+ button.btn.btn-navbar data-target=".nav-collapse" data-toggle="collapse"
4
+ span.icon-bar
5
+ span.icon-bar
6
+ span.icon-bar
7
+ a.brand href=(AbAdmin.root_path || root_path) target='_blank' = AbAdmin.site_name
8
+ .nav-collapse.collapse
9
+ = AdminMenu.render(self)
10
+
11
+ .btn-group.pull-right
12
+ a.btn.dropdown-toggle data-toggle="dropdown" href="#"
13
+ i.icon-user
14
+ = current_user.name
15
+ span.caret
16
+ ul.dropdown-menu
17
+ li
18
+ a href=edit_admin_user_path(current_user) = t 'admin.auth.profile'
19
+ li.divider
20
+ li= link_to(t('admin.auth.sign_out'), destroy_user_session_path, method: 'delete')
@@ -1,4 +1,5 @@
1
- - return_to = params[:return_to].presence || request.referer
1
+ - return_to = params[:return_to].presence || request.referer || collection_path
2
+ - return_to = "#{return_to}##{dom_id(resource, 'list')}" if resource.persisted?
2
3
  input type='hidden' name='return_to' value=return_to
3
4
  .form-actions
4
5
  button.btn.btn-primary type="submit" name="_save" data-disable-with=t('admin.form.save')
@@ -5,6 +5,7 @@ table.table.table-striped.index_table#list
5
5
  th= list_sort_link(:id)
6
6
  th.actions_panel
7
7
  th= list_sort_link(:email)
8
+ th
8
9
  th= ha :avatar
9
10
  th= list_sort_link(:user_role_id)
10
11
  th= list_sort_link(:first_name)
@@ -23,6 +24,11 @@ table.table.table-striped.index_table#list
23
24
  - else
24
25
  = link_to icon('ok', true), activate_admin_user_path(item), method: :post, class: 'btn btn-success', title: t('admin.actions.activate.link')
25
26
  td= mail_to item.email
27
+ td
28
+ - if item.active?
29
+ .label.label-success= t 'admin.user.state.active'
30
+ - else
31
+ .label.label-danger= t 'admin.user.state.suspended'
26
32
  td= item_image_link(item, assoc: :avatar)
27
33
  td= item.user_role_type.try(:title)
28
34
  td= item.first_name
@@ -1,28 +1,6 @@
1
1
  header.navbar.navbar-inverse
2
- nav.navbar-inner
3
- .container
4
- a.btn.btn-navbar data-target=".nav-collapse" data-toggle="collapse"
5
- span.icon-bar
6
- span.icon-bar
7
- span.icon-bar
8
- a.brand href=root_path target='_blank' = AbAdmin.site_name
9
- .nav-collapse.in.collapse
10
- = AdminMenu.render(self)
11
-
12
- .btn-group.pull-right
13
- a.btn.dropdown-toggle data-toggle="dropdown" href="#"
14
- i.icon-user
15
- = current_user.name
16
- span.caret
17
- ul.dropdown-menu
18
- li
19
- a href=edit_admin_user_path(current_user) = t 'admin.auth.profile'
20
- li.divider
21
- li= link_to(t('admin.auth.sign_out'), destroy_user_session_path, method: 'delete')
22
-
2
+ = render 'admin/shared/main_menu'
23
3
  ul.breadcrumb
24
- li.resource_actions
25
- - action_items.each do |act|
26
- = action_link(act)
4
+ li.resource_actions= render 'admin/shared/action_items'
27
5
  = render 'admin/shared/breadcrumbs'
28
6
 
@@ -246,14 +246,6 @@ de:
246
246
  updater_id: ''
247
247
  remember_me: Remember
248
248
  password: Password
249
- attrs:
250
- en: Eng.
251
- it: Italian
252
- ru: Rus.
253
- uk: Ukr.
254
- de: Deutsch
255
- fr: Fr
256
- es: Es
257
249
  flash:
258
250
  admin:
259
251
  actions:
@@ -190,10 +190,10 @@ en:
190
190
  moderator: Moderator
191
191
  redactor: Editor
192
192
  state:
193
- active: Most Active
193
+ active: Active
194
194
  deleted: Removed
195
- pending: Inactive
196
- suspended: Frozen
195
+ pending: Pending
196
+ suspended: Suspended
197
197
  structure:
198
198
  kind:
199
199
  group: Group
@@ -246,14 +246,6 @@ en:
246
246
  updater_id: ''
247
247
  remember_me: Remember
248
248
  password: Password
249
- attrs:
250
- en: Eng.
251
- it: Italian
252
- ru: Rus.
253
- uk: Ukr.
254
- de: Deutsch
255
- fr: Fr
256
- es: Es
257
249
  flash:
258
250
  admin:
259
251
  actions:
@@ -64,17 +64,17 @@ it:
64
64
  profile: Profilo
65
65
  sign_out: Produzione
66
66
  sessions:
67
- title: ''
68
- button: ''
67
+ title: Accedi
68
+ button: Accedi
69
69
  passwords:
70
70
  new:
71
- title: ''
72
- button: ''
71
+ title: Hai dimenticato la password?
72
+ button: Inviami le istruzioni per la reimpostazione della
73
73
  edit:
74
- title: ''
75
- button: ''
76
- password: ''
77
- password_confirmation: ''
74
+ title: Cambia la tua password
75
+ button: Cambia la mia password
76
+ password: Nuova password
77
+ password_confirmation: Conferma la tua nuova password
78
78
  avatar: Immagine
79
79
  batch_actions: Attività
80
80
  cache_clear: Cancella cache
@@ -238,15 +238,7 @@ it:
238
238
  updater: ''
239
239
  updater_id: ''
240
240
  remember_me: ''
241
- password: ''
242
- attrs:
243
- en: Ing.
244
- it: Italiana.
245
- ru: rus.
246
- uk: Ukr.
247
- de: De
248
- fr: Fr
249
- es: Es
241
+ password: 'Password'
250
242
  flash:
251
243
  admin:
252
244
  actions: