ab_admin 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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: