rails_admin 0.6.8 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rails_admin might be problematic. Click here for more details.

Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +17 -37
  3. data/README.md +1 -1
  4. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +20 -5
  5. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +13 -10
  6. data/app/assets/javascripts/rails_admin/ra.i18n.coffee +1 -1
  7. data/app/assets/javascripts/rails_admin/ra.remote-form.js +2 -2
  8. data/app/assets/javascripts/rails_admin/ra.widgets.coffee +1 -1
  9. data/app/assets/javascripts/rails_admin/ui.coffee +8 -0
  10. data/app/assets/stylesheets/rails_admin/base/theming.scss +37 -7
  11. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +3 -2
  12. data/app/assets/stylesheets/rails_admin/themes/cerulean/theming.scss +95 -59
  13. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +809 -120
  14. data/app/helpers/rails_admin/application_helper.rb +7 -2
  15. data/app/helpers/rails_admin/main_helper.rb +4 -2
  16. data/app/views/layouts/rails_admin/_navigation.html.haml +6 -1
  17. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +1 -3
  18. data/app/views/rails_admin/main/_form_file_upload.html.haml +6 -2
  19. data/app/views/rails_admin/main/index.html.haml +2 -0
  20. data/config/locales/rails_admin.en.yml +3 -0
  21. data/lib/rails_admin/config.rb +4 -0
  22. data/lib/rails_admin/config/fields/association.rb +1 -1
  23. data/lib/rails_admin/config/fields/base.rb +3 -1
  24. data/lib/rails_admin/config/fields/factories/enum.rb +4 -0
  25. data/lib/rails_admin/config/fields/types/active_record_enum.rb +41 -0
  26. data/lib/rails_admin/config/fields/types/all.rb +1 -0
  27. data/lib/rails_admin/config/fields/types/file_upload.rb +8 -1
  28. data/lib/rails_admin/config/fields/types/serialized.rb +1 -1
  29. data/lib/rails_admin/config/fields/types/string.rb +6 -1
  30. data/lib/rails_admin/config/fields/types/text.rb +1 -0
  31. data/lib/rails_admin/engine.rb +1 -4
  32. data/lib/rails_admin/version.rb +2 -2
  33. metadata +4 -3
@@ -35,7 +35,12 @@ module RailsAdmin
35
35
  return nil unless _current_user.respond_to?(:email)
36
36
  return nil unless abstract_model = RailsAdmin.config(_current_user.class).abstract_model
37
37
  return nil unless (edit_action = RailsAdmin::Config::Actions.find(:edit, controller: controller, abstract_model: abstract_model, object: _current_user)).try(:authorized?)
38
- link_to _current_user.email, url_for(action: edit_action.action_name, model_name: abstract_model.to_param, id: _current_user.id, controller: 'rails_admin/main')
38
+ link_to url_for(action: edit_action.action_name, model_name: abstract_model.to_param, id: _current_user.id, controller: 'rails_admin/main') do
39
+ html = []
40
+ html << image_tag("#{(request.ssl? ? 'https://secure' : 'http://www')}.gravatar.com/avatar/#{Digest::MD5.hexdigest _current_user.email}?s=30", alt: '') if _current_user.email.present?
41
+ html << content_tag(:span, _current_user.email)
42
+ html.join.html_safe
43
+ end
39
44
  end
40
45
 
41
46
  def logout_path
@@ -85,7 +90,7 @@ module RailsAdmin
85
90
  end.join
86
91
 
87
92
  label = RailsAdmin::Config.navigation_static_label || t('admin.misc.navigation_static_label')
88
- li_stack = %(<li class='nav-header'>#{label}</li>#{li_stack}).html_safe if li_stack.present?
93
+ li_stack = %(<li class='dropdown-header'>#{label}</li>#{li_stack}).html_safe if li_stack.present?
89
94
  li_stack
90
95
  end
91
96
 
@@ -4,15 +4,17 @@ module RailsAdmin
4
4
  module MainHelper
5
5
  def rails_admin_form_for(*args, &block)
6
6
  options = args.extract_options!.reverse_merge(builder: RailsAdmin::FormBuilder)
7
+ (options[:html] ||= {})[:novalidate] ||= !RailsAdmin::Config.browser_validations
8
+
7
9
  form_for(*(args << options), &block) << after_nested_form_callbacks
8
10
  end
9
11
 
10
12
  def get_indicator(percent)
11
13
  return '' if percent < 0 # none
12
- return 'info' if percent < 34 # < 1/100 of max
14
+ return 'info' if percent < 34 # < 1/100 of max
13
15
  return 'success' if percent < 67 # < 1/10 of max
14
16
  return 'warning' if percent < 84 # < 1/3 of max
15
- 'danger' # > 1/3 of max
17
+ 'danger' # > 1/3 of max
16
18
  end
17
19
 
18
20
  def get_column_sets(properties)
@@ -1,7 +1,12 @@
1
1
  .container-fluid
2
2
  .navbar-header
3
+ %button.navbar-toggle.collapsed{ type: 'button', data: { toggle: 'collapse', target: '#secondary-navigation' } }
4
+ %span.sr-only= t('admin.toggle_navigation')
5
+ %span.icon-bar
6
+ %span.icon-bar
7
+ %span.icon-bar
3
8
  %a.navbar-brand.pjax{href: dashboard_path}
4
9
  = _get_plugin_name[0] || 'Rails'
5
10
  %small= _get_plugin_name[1] || 'Admin'
6
- .collapse.navbar-collapse
11
+ .collapse.navbar-collapse#secondary-navigation
7
12
  = render partial: 'layouts/rails_admin/secondary_navigation'
@@ -5,8 +5,6 @@
5
5
  %li= link_to t('admin.home.name'), main_app_root_path
6
6
  - if _current_user
7
7
  - if user_link = edit_user_link
8
- %li= user_link
8
+ %li.edit_user_root_link= user_link
9
9
  - if logout_path.present?
10
10
  %li= link_to content_tag('span', t('admin.misc.log_out'), class: 'label label-danger'), logout_path, method: logout_method
11
- - if _current_user.respond_to?(:email) && _current_user.email.present?
12
- %li= image_tag "#{(request.ssl? ? 'https://secure' : 'http://www')}.gravatar.com/avatar/#{Digest::MD5.hexdigest _current_user.email}?s=30", style: 'padding-top:5px'
@@ -3,11 +3,15 @@
3
3
  .toggle{style: ('display:none;' if file && field.delete_method && form.object.send(field.delete_method) == '1')}
4
4
  - if value = field.pretty_value
5
5
  = value
6
+
6
7
  = form.file_field(field.name, field.html_attributes.reverse_merge({ data: { fileupload: true }}))
8
+
7
9
  - if field.optional? && field.errors.blank? && file && field.delete_method
8
- %a.btn.btn-info{href: '#', :'data-toggle' => 'button', onclick: "$(this).siblings('[type=checkbox]').click(); $(this).siblings('.toggle').toggle('slow'); jQuery(this).toggleClass('btn-danger btn-info'); return false"}
10
+ %a.btn.btn-info.btn-remove-image{href: '#', :'data-toggle' => 'button', role: 'button', onclick: "$(this).siblings('[type=checkbox]').click(); $(this).siblings('.toggle').toggle('slow'); jQuery(this).toggleClass('btn-danger btn-info'); return false;"}
9
11
  %i.icon-white.icon-trash
10
12
  = I18n.t('admin.actions.delete.menu').capitalize + " #{field.label.downcase}"
11
- = form.check_box(field.delete_method, style: 'display:none;' )
13
+
14
+ = form.check_box(field.delete_method, style: 'display:none;')
15
+
12
16
  - if field.cache_method
13
17
  = form.hidden_field(field.cache_method)
@@ -102,6 +102,8 @@
102
102
  %button.btn.btn-primary{type: "submit", :'data-disable-with' => "<i class='icon-white icon-refresh'></i> ".html_safe + t("admin.misc.refresh")}
103
103
  %i.icon-white.icon-refresh
104
104
  = t("admin.misc.refresh")
105
+ %button#remove_filter.btn.btn-info{title: "Reset filters"}
106
+ %i.icon-white.icon-remove
105
107
  - if export_action
106
108
  %span{style: 'float:right'}= link_to wording_for(:link, export_action), export_path(params.except('set').except('page')), class: 'btn btn-info'
107
109
 
@@ -16,7 +16,10 @@ en:
16
16
  is_exactly: Is exactly
17
17
  starts_with: Starts with
18
18
  ends_with: Ends with
19
+ too_many_objects: "Too many objects, use search box above"
20
+ no_objects: "No objects found"
19
21
  loading: "Loading..."
22
+ toggle_navigation: Toggle navigation
20
23
  home:
21
24
  name: "Home"
22
25
  pagination:
@@ -50,6 +50,9 @@ module RailsAdmin
50
50
  # hide blank fields in show view if true
51
51
  attr_accessor :compact_show_view
52
52
 
53
+ # Tell browsers whether to use the native HTML5 validations (novalidate form option).
54
+ attr_accessor :browser_validations
55
+
53
56
  # Set the max width of columns in list view before a new set is created
54
57
  attr_accessor :total_columns_width
55
58
 
@@ -254,6 +257,7 @@ module RailsAdmin
254
257
  # @see RailsAdmin::Config.registry
255
258
  def reset
256
259
  @compact_show_view = true
260
+ @browser_validations = true
257
261
  @yell_for_non_accessible_fields = true
258
262
  @authenticate = nil
259
263
  @authorize = nil
@@ -21,7 +21,7 @@ module RailsAdmin
21
21
  am = amc.abstract_model
22
22
  wording = associated.send(amc.object_label_method)
23
23
  can_see = !am.embedded? && (show_action = v.action(:show, am, associated))
24
- can_see ? v.link_to(wording, v.url_for(action: show_action.action_name, model_name: am.to_param, id: associated.id), class: 'pjax') : wording
24
+ can_see ? v.link_to(wording, v.url_for(action: show_action.action_name, model_name: am.to_param, id: associated.id), class: 'pjax') : ERB::Util.html_escape(wording)
25
25
  end.to_sentence.html_safe
26
26
  end
27
27
 
@@ -124,7 +124,9 @@ module RailsAdmin
124
124
  end
125
125
 
126
126
  register_instance_option :html_attributes do
127
- {}
127
+ {
128
+ required: required?,
129
+ }
128
130
  end
129
131
 
130
132
  register_instance_option :default_value do
@@ -1,5 +1,6 @@
1
1
  require 'rails_admin/config/fields'
2
2
  require 'rails_admin/config/fields/types/enum'
3
+ require 'rails_admin/config/fields/types/active_record_enum'
3
4
 
4
5
  RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
5
6
  model = parent.abstract_model.model
@@ -11,6 +12,9 @@ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
11
12
  model.method_defined?(method_name))
12
13
  fields << RailsAdmin::Config::Fields::Types::Enum.new(parent, properties.name, properties)
13
14
  true
15
+ elsif model.respond_to?(:defined_enums) && model.defined_enums[properties.name.to_s]
16
+ fields << RailsAdmin::Config::Fields::Types::ActiveRecordEnum.new(parent, properties.name, properties)
17
+ true
14
18
  else
15
19
  false
16
20
  end
@@ -0,0 +1,41 @@
1
+ require 'rails_admin/config/fields/types/enum'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class ActiveRecordEnum < Enum
8
+ RailsAdmin::Config::Fields::Types.register(self)
9
+
10
+ def type
11
+ :enum
12
+ end
13
+
14
+ register_instance_option :enum do
15
+ abstract_model.model.defined_enums[name.to_s]
16
+ end
17
+
18
+ register_instance_option :pretty_value do
19
+ bindings[:object].send(name).presence || ' - '
20
+ end
21
+
22
+ register_instance_option :multiple? do
23
+ false
24
+ end
25
+
26
+ register_instance_option :queryable do
27
+ false
28
+ end
29
+
30
+ def parse_input(params)
31
+ if params[name].present?
32
+ params[name] = enum.invert[params[name].to_i]
33
+ elsif params[name]
34
+ params[name] = nil
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,3 +1,4 @@
1
+ require 'rails_admin/config/fields/types/active_record_enum'
1
2
  require 'rails_admin/config/fields/types/belongs_to_association'
2
3
  require 'rails_admin/config/fields/types/boolean'
3
4
  require 'rails_admin/config/fields/types/bson_object_id'
@@ -33,7 +33,8 @@ module RailsAdmin
33
33
  url = resource_url
34
34
  if image
35
35
  thumb_url = resource_url(thumb_method)
36
- url != thumb_url ? v.link_to(v.image_tag(thumb_url, class: 'img-polaroid'), url, target: '_blank') : v.image_tag(thumb_url)
36
+ image_html = v.image_tag(thumb_url, class: 'img-thumbnail')
37
+ url != thumb_url ? v.link_to(image_html, url, target: '_blank') : image_html
37
38
  else
38
39
  v.link_to(nil, url, target: '_blank')
39
40
  end
@@ -48,6 +49,12 @@ module RailsAdmin
48
49
  [method_name, delete_method, cache_method].compact
49
50
  end
50
51
 
52
+ register_instance_option :html_attributes do
53
+ {
54
+ required: required? && !value.present?,
55
+ }
56
+ end
57
+
51
58
  # virtual class
52
59
  def resource_url
53
60
  fail('not implemented')
@@ -14,7 +14,7 @@ module RailsAdmin
14
14
 
15
15
  def parse_input(params)
16
16
  return unless params[name].is_a?(::String)
17
- params[name] = (params[name].blank? ? nil : (YAML.safe_load(params[name]) || nil))
17
+ params[name] = (params[name].blank? ? nil : (SafeYAML.load(params[name]) || nil))
18
18
  end
19
19
  end
20
20
  end
@@ -7,10 +7,15 @@ module RailsAdmin
7
7
  class String < RailsAdmin::Config::Fields::Base
8
8
  RailsAdmin::Config::Fields::Types.register(self)
9
9
 
10
+ def input_size
11
+ [50, length.to_i].reject(&:zero?).min
12
+ end
13
+
10
14
  register_instance_option :html_attributes do
11
15
  {
16
+ required: required?,
12
17
  maxlength: length,
13
- size: [50, length.to_i].min,
18
+ size: input_size,
14
19
  }
15
20
  end
16
21
 
@@ -28,6 +28,7 @@ module RailsAdmin
28
28
 
29
29
  register_instance_option :html_attributes do
30
30
  {
31
+ required: required?,
31
32
  cols: '48',
32
33
  rows: '3',
33
34
  }
@@ -7,10 +7,7 @@ require 'rack-pjax'
7
7
  require 'rails'
8
8
  require 'rails_admin'
9
9
  require 'remotipart'
10
- require 'safe_yaml'
11
-
12
- SafeYAML::OPTIONS[:suppress_warnings] = true
13
- SafeYAML::OPTIONS[:default_mode] = :unsafe
10
+ require 'safe_yaml/load'
14
11
 
15
12
  module RailsAdmin
16
13
  class Engine < Rails::Engine
@@ -1,8 +1,8 @@
1
1
  module RailsAdmin
2
2
  class Version
3
3
  MAJOR = 0
4
- MINOR = 6
5
- PATCH = 8
4
+ MINOR = 7
5
+ PATCH = 0
6
6
  PRE = nil
7
7
 
8
8
  class << self
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.8
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Michaels-Ober
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2015-06-12 00:00:00.000000000 Z
15
+ date: 2015-08-16 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: builder
@@ -505,6 +505,7 @@ files:
505
505
  - lib/rails_admin/config/fields/factories/password.rb
506
506
  - lib/rails_admin/config/fields/group.rb
507
507
  - lib/rails_admin/config/fields/types.rb
508
+ - lib/rails_admin/config/fields/types/active_record_enum.rb
508
509
  - lib/rails_admin/config/fields/types/all.rb
509
510
  - lib/rails_admin/config/fields/types/belongs_to_association.rb
510
511
  - lib/rails_admin/config/fields/types/boolean.rb
@@ -593,7 +594,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
593
594
  version: 1.8.11
594
595
  requirements: []
595
596
  rubyforge_project:
596
- rubygems_version: 2.4.5
597
+ rubygems_version: 2.4.3
597
598
  signing_key:
598
599
  specification_version: 4
599
600
  summary: Admin for Rails