activeadmin 0.6.2 → 0.6.3

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

Potentially problematic release.


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

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cfdd04852f078ce599c16f92be34746f188a2697
4
- data.tar.gz: 0f59a8ade89160f9c78c23f8f34683b2bc3696b7
3
+ metadata.gz: ee588c2ccd71afa65ece9453d9cda98630bb23d5
4
+ data.tar.gz: 1b37441291f755166156baee1f9617f589a24d04
5
5
  SHA512:
6
- metadata.gz: 61f32e02f4adfde7acf74a4c542344c47360b7e545460f3ea9a8b5145912c0847b90c54c566e554a2d6ca6b2fa3c58dca196615f079868213936bf53773901fb
7
- data.tar.gz: 603678825d79769074c1a0b1e5df4faedd9b5c4e441ffb79c54b16817f8d545b621bec127d0bcb94c466deada6c9b038a6cbc0b633fcc192b828373ab5e608c9
6
+ metadata.gz: 4ec65879c01b007fe2b554bbaf18b24292a2830f3a6e7d382371fa9ddf950531f8364c9f8d3631488550134d55db7aa67745c77a31d8d5a6eac4cb9711897737
7
+ data.tar.gz: 8945d9f334cc26bf9e1459a144336cf2f3a9312fd7eb00efc8adbf52bdd874455260e3fa6e0fc4b541db97ec155a89bf1ae2a9061e256eee1ccd8649d6e92c36
@@ -20,11 +20,16 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_dependency "arbre", "~> 1.0"
22
22
  s.add_dependency "bourbon", ">= 1.0.0", "< 4"
23
- s.add_dependency "devise", ">= 1.5.4", "< 4"
23
+ s.add_dependency "devise", ">= 1.5.4", "< 4",
24
+ # Exclude Devise versions vulnerable to CVE-2013-0233
25
+ "!= 2.0.0", "!= 2.0.1", "!= 2.0.2", "!= 2.0.3", "!= 2.0.4",
26
+ "!= 2.1.0", "!= 2.1.1", "!= 2.1.2",
27
+ "!= 2.2.0", "!= 2.2.1", "!= 2.2.2"
28
+ #
24
29
  s.add_dependency "formtastic", "~> 2.0"
25
30
  s.add_dependency "inherited_resources", "~> 1.3"
26
31
  s.add_dependency "jquery-rails", ">= 1.0.0", "< 3"
27
- s.add_dependency "kaminari", "~> 0.13"
32
+ s.add_dependency "kaminari", "~> 0.13", "!= 0.15.0"
28
33
  s.add_dependency "meta_search", "~> 1.0"
29
34
  s.add_dependency "rails", ">= 3.0.0", "< 4"
30
35
  s.add_dependency "sass", "~> 3.1"
@@ -0,0 +1,101 @@
1
+ el:
2
+ active_admin:
3
+ dashboard: "Σελίδα διαχείρισης"
4
+ dashboard_welcome:
5
+ welcome: "Καλωσορίσατε στο Active Admin. Αυτή είναι η αρχική σελίδα διαχείρισης."
6
+ call_to_action: "Για να προσθέσετε ενότητες, ανατρέξτε στο αρχείο 'app/admin/dashboard.rb'"
7
+ view: "Προβολή"
8
+ edit: "Επεξεργασία"
9
+ delete: "Διαγραφή"
10
+ delete_confirmation: "Είστε σίγουρος πως θέλετε να το διαγράψετε;"
11
+ new_model: "Δημιουργία %{model}"
12
+ create_model: "Δημιουργία %{model}"
13
+ edit_model: "Επεξεργασία %{model}"
14
+ update_model: "Επεξεργασία %{model}"
15
+ delete_model: "Διαγραφή %{model}"
16
+ details: "Λεπτομέρειες %{model}"
17
+ cancel: "Ακύρωση"
18
+ empty: "Άδειο"
19
+ previous: "Προηγούμενη"
20
+ next: "Επόμενη"
21
+ download: "Κατέβασμα:"
22
+ has_many_new: "Προσθήκη Νέου %{model}"
23
+ has_many_delete: "Διαγραφή"
24
+ has_many_remove: "Αφαίρεση"
25
+ filters:
26
+ buttons:
27
+ filter: "Φίλτρα"
28
+ clear: "Καθαρισμός Φίλτρων"
29
+ predicates:
30
+ contains: "Περιέχει"
31
+ equals: "Είναι ίσο με"
32
+ starts_with: "Αρχίζει με"
33
+ ends_with: "Καταλήγει σε"
34
+ greater_than: "Μεγαλύτερο από"
35
+ less_than: "Μικρότερο από"
36
+ main_content: "Παρακαλώ υλοποιήστε την %{model}#main_content για να εμφανίσετε περιεχόμενο."
37
+ logout: "Αποσύνδεση"
38
+ powered_by: "Powered by %{active_admin} %{version}"
39
+ sidebars:
40
+ filters: "Φίλτρα"
41
+ pagination:
42
+ empty: "Δε βρέθηκαν %{model}"
43
+ one: "Εμφάνιζεται <b>1</b> %{model}"
44
+ one_page: "Εμφανίζονται <b>όλες οι %{n}</b> εγγραφές %{model}"
45
+ multiple: "Εμφανίζονται %{model} <b>%{from}&nbsp;-&nbsp;%{to}</b> από <b>%{total}</b> συνολικά"
46
+ multiple_without_total: "Εμφανίζονται %{model} <b>%{from}&nbsp;-&nbsp;%{to}</b>"
47
+ entry:
48
+ one: "εγγραφή"
49
+ other: "εγγραφές"
50
+ any: "Όλες οι εγγραφές"
51
+ blank_slate:
52
+ content: "Δεν υπάρχουν %{resource_name} ακόμα."
53
+ link: "Δημιουργήστε μία εγγραφή"
54
+ batch_actions:
55
+ button_label: "Μαζικές Ενέργειες"
56
+ delete_confirmation: "Είστε σίγουρος πως θέλετε να διαγράψετε αυτά τα %{plural_model}?"
57
+ succesfully_destroyed:
58
+ one: "Διαγράφηκε επιτυχώς 1 %{model}"
59
+ other: "Διαγράφηκαν επιτυχώς %{count} %{plural_model}"
60
+ selection_toggle_explanation: "(Αντιστροφή επιλογών)"
61
+ link: "Δημιουργήστε ένα"
62
+ action_label: "%{title} επιλεγμένων"
63
+ labels:
64
+ destroy: "Διαγραφή"
65
+ comments:
66
+ resource_type: "Τύπος Εγγραφής"
67
+ author_type: "Τύπος Συγγραφέα"
68
+ body: "Κείμενο"
69
+ author: "Συγγραφέας"
70
+ title: "Σχόλιο"
71
+ add: "Προσθήκη Σχολίου"
72
+ resource: "Εγγραφή"
73
+ no_comments_yet: "Δεν υπάρχει κανένα σχόλιο."
74
+ title_content: "Σχόλια (%{count})"
75
+ errors:
76
+ empty_text: "Το σχόλιο δε σώθηκε, το κείμενο ήταν κενό."
77
+ devise:
78
+ login:
79
+ title: "Σύνδεση"
80
+ remember_me: "Να με θυμάσαι"
81
+ submit: "Σύνδεση"
82
+ reset_password:
83
+ title: "Ξεχάσατε τον κωδικό σας;"
84
+ submit: "Επαναφορά κωδικού"
85
+ change_password:
86
+ title: "Αλλάξτε τον κωδικό σας"
87
+ submit: "Αλλαγή του κωδικού"
88
+ unlock:
89
+ title: "Αποστολή οδηγιών ξεκλειδώματος"
90
+ submit: "Αποστολή οδηγιών ξεκλειδώματος"
91
+ links:
92
+ sign_in: "Σύνδεση"
93
+ forgot_your_password: "Ξεχάσατε τον κωδικό σας;"
94
+ sign_in_with_omniauth_provider: "Σύνδεση με %{provider}"
95
+ access_denied:
96
+ message: "Δεν έχετε πρόσβαση για αυτή την ενέργεια."
97
+ index_list:
98
+ table: "Πίνακας"
99
+ block: "Λίστα"
100
+ grid: "Πλέγμα"
101
+ blog: "Blog"
@@ -86,6 +86,11 @@ es_MX:
86
86
  sign_in: "registrarse"
87
87
  forgot_your_password: "¿Olvidó su contraseña?"
88
88
  sign_in_with_omniauth_provider: "Conéctate con %{provider}"
89
+ index_list:
90
+ table: "Tabla"
91
+ block: "Lista"
92
+ grid: "Cuadrícula"
93
+ blog: "Blog"
89
94
  views:
90
95
  pagination:
91
96
  truncate: "..."
@@ -73,17 +73,31 @@ fr:
73
73
  errors:
74
74
  empty_text: "Le commentaire n'a pas été enregistré puisque le texte était vide."
75
75
  devise:
76
+ username:
77
+ title: "Nom d'utilisateur"
78
+ email:
79
+ title: "Email"
80
+ subdomain:
81
+ title: "Sous-domaine"
82
+ password:
83
+ title: "Mot de passe"
76
84
  login:
77
- title: "login"
85
+ title: "Connection"
78
86
  remember_me: "Se souvenir de moi"
79
- submit: "login"
87
+ submit: "Se connecter"
80
88
  reset_password:
81
- title: "Vous avez oublié votre mot de passe?"
89
+ title: "Vous avez oublié votre mot de passe ?"
82
90
  submit: "Réinitialiser mon mot de passe"
83
91
  change_password:
84
92
  title: "Changez votre mot de passe"
85
93
  submit: "Changer mon mot de passe"
86
94
  links:
87
95
  sign_in: "Connectez-vous"
88
- forgot_your_password: "Vous avez oublié votre mot de passe?"
96
+ forgot_your_password: "Vous avez oublié votre mot de passe ?"
89
97
  sign_in_with_omniauth_provider: "Connectez-vous avec %{provider}"
98
+ access_denied: "Vous n'êtes pas autorisé à executer cette action"
99
+ index_list:
100
+ table: "Tableau"
101
+ block: "Liste"
102
+ grid: "Grille"
103
+ blog: "Blog"
@@ -44,7 +44,7 @@ ja:
44
44
  one_page: "<b>全 %{n}</b> 件の %{model} を表示しています"
45
45
  multiple: "全 <b>%{total}</b> 件中 <b>%{from}&nbsp;-&nbsp;%{to}</b> 件の %{model} を表示しています"
46
46
  multiple_without_total: "<b>%{from}&nbsp;-&nbsp;%{to}</b> 件の %{model} を表示しています"
47
- entry:
47
+ entry:
48
48
  one: "レコード"
49
49
  other: "レコード"
50
50
  any: "任意"
@@ -75,6 +75,14 @@ ja:
75
75
  errors:
76
76
  empty_text: "テキストが空のため、コメントは保存されませんでした。"
77
77
  devise:
78
+ username:
79
+ title: "ユーザ名"
80
+ email:
81
+ title: "メールアドレス"
82
+ subdomain:
83
+ title: "サブドメイン"
84
+ password:
85
+ title: "パスワード"
78
86
  login:
79
87
  title: "ログイン"
80
88
  remember_me: "次回から自動的にログイン"
@@ -20,6 +20,9 @@ Feature: Belongs To
20
20
  And I should not see a menu item for "Users"
21
21
  And I should see "Displaying 1 Post"
22
22
  And I should see a link to "Users" in the breadcrumb
23
+ And I should see a link to "Jane Doe" in the breadcrumb
24
+ When I follow "Edit"
25
+ Then I should see a link to "Hello World" in the breadcrumb
23
26
 
24
27
  Scenario: Viewing a child resource page
25
28
  Given a configuration of:
@@ -32,9 +32,11 @@ Given /^an admin user "([^"]*)" exists$/ do |email|
32
32
  ensure_user_created(email)
33
33
  end
34
34
 
35
- Given /^an admin user "([^"]*)" exists with( expired)? reset password token "(.*?)"$/ do |email, expired, token|
36
- user = ensure_user_created(email)
37
- user.reset_password_token = token
38
- user.reset_password_sent_at = 1.minute.ago unless expired
39
- user.save
35
+ Given /^"([^"]*)" requests a pasword reset with token "([^"]*)"( but it expires)?$/ do |email, token, expired|
36
+ visit new_admin_user_password_path
37
+ fill_in 'Email', with: email
38
+ Devise.stub(:friendly_token){ token }
39
+ click_button "Reset My Password"
40
+
41
+ AdminUser.where(email: email).first.update_attribute :reset_password_sent_at, 1.month.ago if expired
40
42
  end
@@ -34,6 +34,8 @@ autoload :ActiveAdmin, 'active_admin'
34
34
 
35
35
  require 'cucumber/rails'
36
36
 
37
+ require 'cucumber/rspec/doubles'
38
+
37
39
  require 'capybara/rails'
38
40
  require 'capybara/cucumber'
39
41
  require 'capybara/session'
@@ -16,7 +16,7 @@ module NavigationHelpers
16
16
  "/admin/posts/new"
17
17
  when /the login page/
18
18
  "/admin/login"
19
- when /the admin password reset form with reset password token "([^"]*)"/
19
+ when /the admin password reset form with token "([^"]*)"/
20
20
  "/admin/password/edit?reset_password_token=#{$1}"
21
21
 
22
22
  # the index page for posts in the root namespace
@@ -18,16 +18,16 @@ Feature: User Resetting Password
18
18
  Then I should see "You will receive an email with instructions about how to reset your password in a few minutes."
19
19
 
20
20
  Scenario: Changing password after resetting
21
- Given an admin user "admin@example.com" exists with reset password token "123reset"
22
- When I go to the admin password reset form with reset password token "123reset"
21
+ When "admin@example.com" requests a pasword reset with token "foobarbaz"
22
+ When I go to the admin password reset form with token "foobarbaz"
23
23
  And I fill in "Password" with "password"
24
24
  And I fill in "Password confirmation" with "password"
25
25
  And I press "Change my password"
26
26
  Then I should see "success"
27
27
 
28
28
  Scenario: Changing password after resetting with errors
29
- Given an admin user "admin@example.com" exists with expired reset password token "123reset"
30
- When I go to the admin password reset form with reset password token "123reset"
29
+ When "admin@example.com" requests a pasword reset with token "foobarbaz" but it expires
30
+ When I go to the admin password reset form with token "foobarbaz"
31
31
  And I fill in "Password" with "password"
32
32
  And I fill in "Password confirmation" with "wrong"
33
33
  And I press "Change my password"
@@ -1,4 +1,3 @@
1
- require 'active_admin/comments/comment'
2
1
  require 'active_admin/comments/views'
3
2
  require 'active_admin/comments/show_page_helper'
4
3
  require 'active_admin/comments/namespace_helper'
@@ -18,6 +17,11 @@ ActiveAdmin::Resource.send :include, ActiveAdmin::Comments::ResourceHelper
18
17
  # Add the module to the show page
19
18
  ActiveAdmin.application.view_factory.show_page.send :include, ActiveAdmin::Comments::ShowPageHelper
20
19
 
20
+ # Load the model as soon as it's referenced. By that point, Rails & Kaminari will be ready
21
+ module ActiveAdmin
22
+ autoload :Comment, 'active_admin/comments/comment'
23
+ end
24
+
21
25
  # Walk through all the loaded resources after they are loaded
22
26
  ActiveAdmin.after_load do |app|
23
27
  app.namespaces.values.each do |namespace|
@@ -1,11 +1,6 @@
1
- require 'kaminari/models/active_record_extension'
2
-
3
1
  module ActiveAdmin
4
-
5
- # manually initialize kaminari for this model
6
- ::ActiveRecord::Base.send :include, Kaminari::ActiveRecordExtension
7
-
8
2
  class Comment < ActiveRecord::Base
3
+
9
4
  belongs_to :resource, :polymorphic => true
10
5
  belongs_to :author, :polymorphic => true
11
6
 
@@ -66,12 +66,10 @@ module ActiveAdmin
66
66
  form_for search, options do |f|
67
67
  filters.group_by{ |o| o[:attribute] }.each do |attribute, array|
68
68
  opts = array.last # grab last-defined `filter` call from DSL
69
- should = opts.delete(:if) || proc{ true }
70
- shouldnt = opts.delete(:unless) || proc{ false }
69
+ next if opts.key?(:if) && !call_method_or_proc_on(self, opts[:if])
70
+ next if opts.key?(:unless) && call_method_or_proc_on(self, opts[:unless])
71
71
 
72
- if call_method_or_proc_on(self, should) && !call_method_or_proc_on(self, shouldnt)
73
- f.filter attribute, opts
74
- end
72
+ f.filter attribute, opts.except(:if, :unless)
75
73
  end
76
74
 
77
75
  buttons = content_tag :div, :class => "buttons" do
@@ -13,8 +13,7 @@ module ActiveAdmin
13
13
  #
14
14
  # @return [Array] Filters that apply for this resource
15
15
  def filters
16
- return [] unless filters_enabled?
17
- filter_lookup
16
+ filters_enabled? ? filter_lookup : []
18
17
  end
19
18
 
20
19
  # Setter to enable / disable filters on this resource.
@@ -4,14 +4,19 @@ module ActiveAdmin
4
4
  class ResourceCollection
5
5
  include Enumerable
6
6
  extend Forwardable
7
- def_delegators :@resources, :empty?, :has_key?, :keys, :values, :[]=
7
+ def_delegators :@collection, :empty?, :has_key?, :keys, :values, :size
8
8
 
9
9
  def initialize
10
- @resources = {}
10
+ @collection = {}
11
11
  end
12
12
 
13
13
  def add(resource)
14
- @resources[resource.resource_name] ||= resource
14
+ if match = @collection[resource.resource_name]
15
+ raise_if_mismatched! match, resource
16
+ match
17
+ else
18
+ @collection[resource.resource_name] = resource
19
+ end
15
20
  end
16
21
 
17
22
  # Changes `each` to pass in the value, instead of both the key and value.
@@ -19,23 +24,46 @@ module ActiveAdmin
19
24
  values.each &block
20
25
  end
21
26
 
22
- # Finds a resource based on the resource name, the resource class, or the base class.
23
- def [](klass)
24
- if match = @resources[klass]
25
- match
26
- elsif match = real_resources.detect{ |r| [r.resource_name.to_s, r.resource_class.to_s].include? klass.to_s }
27
- match
28
- elsif klass.respond_to? :base_class
29
- real_resources.detect{ |r| r.resource_class.to_s == klass.base_class.to_s }
30
- end
27
+ def [](obj)
28
+ @collection[obj] || find_resource(obj)
31
29
  end
32
30
 
33
31
  private
34
32
 
35
- # REFACTOR: ResourceCollection currently stores Resource and Page objects. That doesn't
36
- # make sense, because by definition a ResourceCollection is a collection of resources.
37
- def real_resources
38
- select{ |r| r.respond_to? :resource_class }
33
+ # Finds a resource based on the resource name, resource class, or base class.
34
+ def find_resource(obj)
35
+ resources.detect do |r|
36
+ r.resource_name.to_s == obj.to_s || r.resource_class.to_s == obj.to_s
37
+ end ||
38
+ if obj.respond_to? :base_class
39
+ resources.detect{ |r| r.resource_class.to_s == obj.base_class.to_s }
40
+ end
41
+ end
42
+
43
+ def resources
44
+ select{ |r| r.class <= Resource } # can otherwise be a Page
45
+ end
46
+
47
+ def raise_if_mismatched!(existing, given)
48
+ if existing.class != given.class
49
+ raise IncorrectClass.new existing, given
50
+ elsif given.class <= Resource && existing.resource_class != given.resource_class
51
+ raise ConfigMismatch.new existing, given
52
+ end
53
+ end
54
+
55
+ class IncorrectClass < StandardError
56
+ def initialize(existing, given)
57
+ super "You're trying to register #{given.resource_name} which is a #{given.class}, " +
58
+ "but #{existing.resource_name}, a #{existing.class} has already claimed that name."
59
+ end
60
+ end
61
+
62
+ class ConfigMismatch < StandardError
63
+ def initialize(existing, given)
64
+ super "You're trying to register #{given.resource_class} as #{given.resource_name}, " +
65
+ "but the existing #{existing.class} config was built for #{existing.resource_class}!"
66
+ end
39
67
  end
40
68
 
41
69
  end
@@ -267,18 +267,23 @@ module ActiveAdmin
267
267
  end
268
268
 
269
269
  def apply_pagination(chain)
270
- page_method = Kaminari.config.page_method_name
271
- page_param = params[Kaminari.config.param_name]
270
+ page_method_name = Kaminari.config.page_method_name
271
+ page = params[Kaminari.config.param_name]
272
272
 
273
- chain.send(page_method, page_param).per(per_page)
273
+ chain.send(page_method_name, page).per(per_page)
274
274
  end
275
275
 
276
276
  def per_page
277
+ return max_csv_records if request.format == 'text/csv'
277
278
  return max_per_page if active_admin_config.paginate == false
278
279
 
279
280
  @per_page || active_admin_config.per_page
280
281
  end
281
282
 
283
+ def max_csv_records
284
+ 10_000
285
+ end
286
+
282
287
  def max_per_page
283
288
  10_000
284
289
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveAdmin
2
- VERSION = '0.6.2'
2
+ VERSION = '0.6.3'
3
3
  end
@@ -12,8 +12,9 @@ module ActiveAdmin
12
12
  # 2. try using the model name translation
13
13
  # 3. default to calling `titlecase` on the URL fragment
14
14
  if part =~ /\A(\d+|[a-f0-9]{24})\z/ && parts[index-1]
15
- config = active_admin_config.belongs_to_config.try(:target) || active_admin_config
16
- name = display_name config.find_resource(part)
15
+ parent = active_admin_config.belongs_to_config.try :target
16
+ config = parent && parent.resource_name.route_key == parts[index-1] ? parent : active_admin_config
17
+ name = display_name config.find_resource part
17
18
  end
18
19
  name ||= I18n.t "activerecord.models.#{part.singularize}", :count => 1.1, :default => part.titlecase
19
20
 
@@ -123,7 +123,7 @@ module ActiveAdmin
123
123
 
124
124
  def render_blank_slate
125
125
  blank_slate_content = I18n.t("active_admin.blank_slate.content", :resource_name => active_admin_config.plural_resource_label)
126
- if controller.action_methods.include?('new')
126
+ if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
127
127
  blank_slate_content += " " + link_to(I18n.t("active_admin.blank_slate.link"), new_resource_path)
128
128
  end
129
129
  insert_tag(view_factory.blank_slate, blank_slate_content)
@@ -107,8 +107,3 @@ namespace :parallel do
107
107
  end
108
108
  }
109
109
 
110
- # If using Devise after 3.1, this is required for the tests to pass:
111
- require 'devise/version'
112
- if Devise::VERSION.to_f >= 3.1
113
- inject_into_file 'config/initializers/devise.rb', "\n config.allow_insecure_token_lookup = true", after: 'Devise.setup do |config|'
114
- end
@@ -308,34 +308,32 @@ describe ActiveAdmin::Filters::ViewHelper do
308
308
  end
309
309
 
310
310
  describe "conditional display" do
311
-
312
- context "with :if block" do
313
- let(:body) do
314
- filter :body, :if => proc{true}
315
- filter :author, :if => proc{false}
316
- end
317
-
318
- it "should be displayed if true" do
319
- body.should have_tag("input", :attributes => { :name => "q[body_contains]"})
320
- end
321
-
322
- it "should NOT be displayed if false" do
323
- body.should_not have_tag("input", :attributes => { :name => "q[author_id_eq]"})
324
- end
325
- end
326
-
327
- context "with :unless block" do
328
- let(:body) do
329
- filter :created_at, :unless => proc{false}
330
- filter :updated_at, :unless => proc{true}
331
- end
332
-
333
- it "should be displayed if false" do
334
- body.should have_tag("input", :attributes => { :name => "q[created_at_gte]"})
335
- end
336
-
337
- it "should NOT be displayed if true" do
338
- body.should_not have_tag("input", :attributes => { :name => "q[updated_at_gte]"})
311
+ [:if, :unless].each do |verb|
312
+ should = verb == :if ? "should" : "shouldn't"
313
+ if_true = verb == :if ? :should : :should_not
314
+ if_false = verb == :if ? :should_not : :should
315
+ context "with #{verb.inspect} proc" do
316
+ it "#{should} be displayed if true" do
317
+ body = filter :body, verb => proc{ true }
318
+ body.send if_true, have_tag("input", attributes: {name: "q[body_contains]"})
319
+ end
320
+ it "#{should} be displayed if false" do
321
+ body = filter :body, verb => proc{ false }
322
+ body.send if_false, have_tag("input", attributes: {name: "q[body_contains]"})
323
+ end
324
+ it "should still be hidden on the second render" do
325
+ filters = [attribute: :body, verb => proc{ verb == :unless }]
326
+ 2.times do
327
+ body = render_filter scope, filters
328
+ body.should_not have_tag "input", attributes: {name: "q[body_contains]"}
329
+ end
330
+ end
331
+ it "should successfully keep rendering other filters after one is hidden" do
332
+ filters = [{attribute: :body, verb => proc{ verb == :unless }}, {attribute: :author}]
333
+ body = render_filter scope, filters
334
+ body.should_not have_tag "input", attributes: {name: "q[body_contains]"}
335
+ body.should have_tag "select", attributes: {name: "q[author_id_eq]"}
336
+ end
339
337
  end
340
338
  end
341
339
  end
@@ -1,13 +1,19 @@
1
1
  require 'spec_helper'
2
2
  require 'active_admin/resource_collection'
3
3
 
4
- include ActiveAdmin
5
-
6
4
  describe ActiveAdmin::ResourceCollection do
7
5
  let(:application) { ActiveAdmin::Application.new }
8
- let(:namespace) { ActiveAdmin::Namespace.new(application, :admin) }
9
-
10
- let(:collection){ ResourceCollection.new }
6
+ let(:namespace) { ActiveAdmin::Namespace.new application, :admin }
7
+ let(:collection) { ActiveAdmin::ResourceCollection.new }
8
+
9
+ it { should respond_to :[] }
10
+ it { should respond_to :add }
11
+ it { should respond_to :each }
12
+ it { should respond_to :has_key? }
13
+ it { should respond_to :keys }
14
+ it { should respond_to :values }
15
+ it { should respond_to :size }
16
+ it { should respond_to :to_a }
11
17
 
12
18
  it "should have no resources when new" do
13
19
  collection.should be_empty
@@ -25,7 +31,7 @@ describe ActiveAdmin::ResourceCollection do
25
31
  collection.keys.should == [resource.resource_name]
26
32
  end
27
33
 
28
- describe "adding a new resource" do
34
+ describe "#add" do
29
35
  let(:resource){ mock :resource_name => "MyResource" }
30
36
 
31
37
  it "should return the resource" do
@@ -50,11 +56,42 @@ describe ActiveAdmin::ResourceCollection do
50
56
  collection.add(resource); collection.add(resource)
51
57
  collection.values.should == [resource]
52
58
  end
59
+
60
+ it "shouldn't allow a resource name mismatch to occur" do
61
+ expect {
62
+ ActiveAdmin.register Category
63
+ ActiveAdmin.register Post, as: "Category"
64
+ }.to raise_error ActiveAdmin::ResourceCollection::ConfigMismatch
65
+ end
66
+
67
+ it "shouldn't allow a Page/Resource mismatch to occur" do
68
+ expect {
69
+ ActiveAdmin.register User
70
+ ActiveAdmin.register_page 'User'
71
+ }.to raise_error ActiveAdmin::ResourceCollection::IncorrectClass
72
+ end
73
+
74
+ describe "should store both renamed and non-renamed resources" do
75
+ let(:resource) { ActiveAdmin::Resource.new namespace, Category }
76
+ let(:renamed) { ActiveAdmin::Resource.new namespace, Category, as: "Subcategory" }
77
+
78
+ it "when the renamed version is added first" do
79
+ collection.add renamed
80
+ collection.add resource
81
+ collection.values.should include(resource, renamed)
82
+ end
83
+
84
+ it "when the renamed version is added last" do
85
+ collection.add resource
86
+ collection.add renamed
87
+ collection.values.should include(resource, renamed)
88
+ end
89
+ end
53
90
  end
54
91
 
55
92
  describe "#[]" do
56
- let(:resource) { Resource.new(namespace, resource_class) }
57
- let(:inherited_resource) { Resource.new(namespace, inherited_resource_class) }
93
+ let(:resource) { ActiveAdmin::Resource.new namespace, resource_class }
94
+ let(:inherited_resource) { ActiveAdmin::Resource.new namespace, inherited_resource_class }
58
95
 
59
96
  let(:resource_class) { User }
60
97
  let(:inherited_resource_class) { Publisher }
@@ -102,7 +139,7 @@ describe ActiveAdmin::ResourceCollection do
102
139
  end
103
140
 
104
141
  context "with a renamed resource" do
105
- let(:renamed_resource) { Resource.new(namespace, resource_class, :as => name) }
142
+ let(:renamed_resource) { ActiveAdmin::Resource.new namespace, resource_class, as: name }
106
143
  let(:name) { "Administrators" }
107
144
 
108
145
  before do
@@ -123,31 +160,6 @@ describe ActiveAdmin::ResourceCollection do
123
160
  end
124
161
  end
125
162
 
126
- describe ".add" do
127
- let(:resource) { Resource.new(namespace, Category) }
128
- let(:resource_renamed) { Resource.new(namespace, Category, as: "Subcategory") }
129
-
130
- context "when renamed resource is added first" do
131
- before do
132
- collection.add(resource_renamed)
133
- collection.add(resource)
134
- end
135
-
136
- it "contains both resources" do
137
- collection.values.should include(resource, resource_renamed)
138
- end
139
- end
140
-
141
- context "when resource is added first" do
142
- before do
143
- collection.add(resource)
144
- collection.add(resource_renamed)
145
- end
146
-
147
- it "contains both resources" do
148
- collection.values.should include(resource, resource_renamed)
149
- end
150
- end
151
- end
163
+ pending "specs for subclasses of Page and Resource"
152
164
 
153
165
  end
@@ -11,14 +11,16 @@ describe "Breadcrumbs" do
11
11
  # Mock link to and return a hash
12
12
  def link_to(name, url); {:name => name, :path => url}; end
13
13
 
14
- let(:post) { mock(:display_name => 'Hello World') }
15
-
16
- let(:post_config) { stub(find_resource: post) }
14
+ let(:user) { double display_name: 'Jane Doe' }
15
+ let(:user_config) { double find_resource: user,
16
+ resource_name: double(route_key: 'users') }
17
+ let(:post) { double display_name: 'Hello World' }
18
+ let(:post_config) { double find_resource: post,
19
+ belongs_to_config: double(target: user_config),
20
+ resource_name: double(route_key: 'posts') }
17
21
 
18
22
  let :active_admin_config do
19
- active_admin_config = stub
20
- active_admin_config.stub_chain(:belongs_to_config, :target).and_return post_config
21
- active_admin_config
23
+ post_config
22
24
  end
23
25
 
24
26
  let(:trail) { breadcrumb_links(path) }
@@ -31,8 +33,8 @@ describe "Breadcrumbs" do
31
33
  end
32
34
  end
33
35
 
34
- context "when path '/admin/posts'" do
35
- let(:path) { "/admin/posts" }
36
+ context "when path '/admin/users'" do
37
+ let(:path) { "/admin/users" }
36
38
 
37
39
  it "should have one item" do
38
40
  trail.size.should == 1
@@ -43,8 +45,8 @@ describe "Breadcrumbs" do
43
45
  end
44
46
  end
45
47
 
46
- context "when path '/admin/posts/1'" do
47
- let(:path) { "/admin/posts/1" }
48
+ context "when path '/admin/users/1'" do
49
+ let(:path) { "/admin/users/1" }
48
50
 
49
51
  it "should have 2 items" do
50
52
  trail.size.should == 2
@@ -53,14 +55,14 @@ describe "Breadcrumbs" do
53
55
  trail[0][:name].should == "Admin"
54
56
  trail[0][:path].should == "/admin"
55
57
  end
56
- it "should have a link to /admin/posts" do
57
- trail[1][:name].should == "Posts"
58
- trail[1][:path].should == "/admin/posts"
58
+ it "should have a link to /admin/users" do
59
+ trail[1][:name].should == "Users"
60
+ trail[1][:path].should == "/admin/users"
59
61
  end
60
62
  end
61
63
 
62
- context "when path '/admin/posts/1/comments'" do
63
- let(:path) { "/admin/posts/1/comments" }
64
+ context "when path '/admin/users/1/posts'" do
65
+ let(:path) { "/admin/users/1/posts" }
64
66
 
65
67
  it "should have 3 items" do
66
68
  trail.size.should == 3
@@ -69,29 +71,29 @@ describe "Breadcrumbs" do
69
71
  trail[0][:name].should == "Admin"
70
72
  trail[0][:path].should == "/admin"
71
73
  end
72
- it "should have a link to /admin/posts" do
73
- trail[1][:name].should == "Posts"
74
- trail[1][:path].should == "/admin/posts"
74
+ it "should have a link to /admin/users" do
75
+ trail[1][:name].should == "Users"
76
+ trail[1][:path].should == "/admin/users"
75
77
  end
76
78
 
77
- context "when Post.find(1) doesn't exist" do
78
- before { post_config.stub(find_resource: nil) }
79
- it "should have a link to /admin/posts/1" do
79
+ context "when User.find(1) doesn't exist" do
80
+ before { user_config.stub(find_resource: nil) }
81
+ it "should have a link to /admin/users/1" do
80
82
  trail[2][:name].should == "1"
81
- trail[2][:path].should == "/admin/posts/1"
83
+ trail[2][:path].should == "/admin/users/1"
82
84
  end
83
85
  end
84
86
 
85
- context "when Post.find(1) does exist" do
86
- it "should have a link to /admin/posts/1 using display name" do
87
- trail[2][:name].should == "Hello World"
88
- trail[2][:path].should == "/admin/posts/1"
87
+ context "when User.find(1) does exist" do
88
+ it "should have a link to /admin/users/1 using display name" do
89
+ trail[2][:name].should == "Jane Doe"
90
+ trail[2][:path].should == "/admin/users/1"
89
91
  end
90
92
  end
91
93
  end
92
94
 
93
- context "when path '/admin/posts/4e24d6249ccf967313000000/comments'" do
94
- let(:path) { "/admin/posts/4e24d6249ccf967313000000/comments" }
95
+ context "when path '/admin/users/4e24d6249ccf967313000000/posts'" do
96
+ let(:path) { "/admin/users/4e24d6249ccf967313000000/posts" }
95
97
 
96
98
  it "should have 3 items" do
97
99
  trail.size.should == 3
@@ -100,32 +102,32 @@ describe "Breadcrumbs" do
100
102
  trail[0][:name].should == "Admin"
101
103
  trail[0][:path].should == "/admin"
102
104
  end
103
- it "should have a link to /admin/posts" do
104
- trail[1][:name].should == "Posts"
105
- trail[1][:path].should == "/admin/posts"
105
+ it "should have a link to /admin/users" do
106
+ trail[1][:name].should == "Users"
107
+ trail[1][:path].should == "/admin/users"
106
108
  end
107
109
 
108
- context "when Post.find(4e24d6249ccf967313000000) doesn't exist" do
109
- before { post_config.stub(find_resource: nil) }
110
- it "should have a link to /admin/posts/4e24d6249ccf967313000000" do
110
+ context "when User.find(4e24d6249ccf967313000000) doesn't exist" do
111
+ before { user_config.stub(find_resource: nil) }
112
+ it "should have a link to /admin/users/4e24d6249ccf967313000000" do
111
113
  trail[2][:name].should == "4e24d6249ccf967313000000"
112
- trail[2][:path].should == "/admin/posts/4e24d6249ccf967313000000"
114
+ trail[2][:path].should == "/admin/users/4e24d6249ccf967313000000"
113
115
  end
114
116
  end
115
117
 
116
- context "when Post.find(4e24d6249ccf967313000000) does exist" do
118
+ context "when User.find(4e24d6249ccf967313000000) does exist" do
117
119
  before do
118
- post_config.stub(:find_resource => mock(:display_name => 'Hello :)'))
120
+ user_config.stub find_resource: double(display_name: 'Hello :)')
119
121
  end
120
- it "should have a link to /admin/posts/4e24d6249ccf967313000000 using display name" do
122
+ it "should have a link to /admin/users/4e24d6249ccf967313000000 using display name" do
121
123
  trail[2][:name].should == "Hello :)"
122
- trail[2][:path].should == "/admin/posts/4e24d6249ccf967313000000"
124
+ trail[2][:path].should == "/admin/users/4e24d6249ccf967313000000"
123
125
  end
124
126
  end
125
127
  end
126
128
 
127
- context "when path '/admin/posts/1/coments/1'" do
128
- let(:path) { "/admin/posts/1/comments/1" }
129
+ context "when path '/admin/users/1/coments/1'" do
130
+ let(:path) { "/admin/users/1/posts/1" }
129
131
 
130
132
  it "should have 4 items" do
131
133
  trail.size.should == 4
@@ -134,17 +136,45 @@ describe "Breadcrumbs" do
134
136
  trail[0][:name].should == "Admin"
135
137
  trail[0][:path].should == "/admin"
136
138
  end
137
- it "should have a link to /admin/posts" do
138
- trail[1][:name].should == "Posts"
139
- trail[1][:path].should == "/admin/posts"
139
+ it "should have a link to /admin/users" do
140
+ trail[1][:name].should == "Users"
141
+ trail[1][:path].should == "/admin/users"
142
+ end
143
+ it "should have a link to /admin/users/1" do
144
+ trail[2][:name].should == "Jane Doe"
145
+ trail[2][:path].should == "/admin/users/1"
146
+ end
147
+ it "should have a link to /admin/users/1/posts" do
148
+ trail[3][:name].should == "Posts"
149
+ trail[3][:path].should == "/admin/users/1/posts"
150
+ end
151
+ end
152
+
153
+ context "when path '/admin/users/1/coments/1/edit'" do
154
+ let(:path) { "/admin/users/1/posts/1/edit" }
155
+
156
+ it "should have 5 items" do
157
+ trail.size.should == 5
158
+ end
159
+ it "should have a link to /admin" do
160
+ trail[0][:name].should == "Admin"
161
+ trail[0][:path].should == "/admin"
162
+ end
163
+ it "should have a link to /admin/users" do
164
+ trail[1][:name].should == "Users"
165
+ trail[1][:path].should == "/admin/users"
166
+ end
167
+ it "should have a link to /admin/users/1" do
168
+ trail[2][:name].should == "Jane Doe"
169
+ trail[2][:path].should == "/admin/users/1"
140
170
  end
141
- it "should have a link to /admin/posts/1" do
142
- trail[2][:name].should == "Hello World"
143
- trail[2][:path].should == "/admin/posts/1"
171
+ it "should have a link to /admin/users/1/posts" do
172
+ trail[3][:name].should == "Posts"
173
+ trail[3][:path].should == "/admin/users/1/posts"
144
174
  end
145
- it "should have a link to /admin/posts/1/comments" do
146
- trail[3][:name].should == "Comments"
147
- trail[3][:path].should == "/admin/posts/1/comments"
175
+ it "should have a link to /admin/users/1/posts/1" do
176
+ trail[4][:name].should == "Hello World"
177
+ trail[4][:path].should == "/admin/users/1/posts/1"
148
178
  end
149
179
  end
150
180
 
metadata CHANGED
@@ -1,177 +1,249 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Bell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-21 00:00:00.000000000 Z
11
+ date: 2014-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: arbre
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bourbon
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.0.0
34
- - - <
34
+ - - "<"
35
35
  - !ruby/object:Gem::Version
36
36
  version: '4'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - '>='
41
+ - - ">="
42
42
  - !ruby/object:Gem::Version
43
43
  version: 1.0.0
44
- - - <
44
+ - - "<"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '4'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: devise
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - '>='
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: 1.5.4
54
- - - <
54
+ - - "<"
55
55
  - !ruby/object:Gem::Version
56
56
  version: '4'
57
+ - - "!="
58
+ - !ruby/object:Gem::Version
59
+ version: 2.0.0
60
+ - - "!="
61
+ - !ruby/object:Gem::Version
62
+ version: 2.0.1
63
+ - - "!="
64
+ - !ruby/object:Gem::Version
65
+ version: 2.0.2
66
+ - - "!="
67
+ - !ruby/object:Gem::Version
68
+ version: 2.0.3
69
+ - - "!="
70
+ - !ruby/object:Gem::Version
71
+ version: 2.0.4
72
+ - - "!="
73
+ - !ruby/object:Gem::Version
74
+ version: 2.1.0
75
+ - - "!="
76
+ - !ruby/object:Gem::Version
77
+ version: 2.1.1
78
+ - - "!="
79
+ - !ruby/object:Gem::Version
80
+ version: 2.1.2
81
+ - - "!="
82
+ - !ruby/object:Gem::Version
83
+ version: 2.2.0
84
+ - - "!="
85
+ - !ruby/object:Gem::Version
86
+ version: 2.2.1
87
+ - - "!="
88
+ - !ruby/object:Gem::Version
89
+ version: 2.2.2
57
90
  type: :runtime
58
91
  prerelease: false
59
92
  version_requirements: !ruby/object:Gem::Requirement
60
93
  requirements:
61
- - - '>='
94
+ - - ">="
62
95
  - !ruby/object:Gem::Version
63
96
  version: 1.5.4
64
- - - <
97
+ - - "<"
65
98
  - !ruby/object:Gem::Version
66
99
  version: '4'
100
+ - - "!="
101
+ - !ruby/object:Gem::Version
102
+ version: 2.0.0
103
+ - - "!="
104
+ - !ruby/object:Gem::Version
105
+ version: 2.0.1
106
+ - - "!="
107
+ - !ruby/object:Gem::Version
108
+ version: 2.0.2
109
+ - - "!="
110
+ - !ruby/object:Gem::Version
111
+ version: 2.0.3
112
+ - - "!="
113
+ - !ruby/object:Gem::Version
114
+ version: 2.0.4
115
+ - - "!="
116
+ - !ruby/object:Gem::Version
117
+ version: 2.1.0
118
+ - - "!="
119
+ - !ruby/object:Gem::Version
120
+ version: 2.1.1
121
+ - - "!="
122
+ - !ruby/object:Gem::Version
123
+ version: 2.1.2
124
+ - - "!="
125
+ - !ruby/object:Gem::Version
126
+ version: 2.2.0
127
+ - - "!="
128
+ - !ruby/object:Gem::Version
129
+ version: 2.2.1
130
+ - - "!="
131
+ - !ruby/object:Gem::Version
132
+ version: 2.2.2
67
133
  - !ruby/object:Gem::Dependency
68
134
  name: formtastic
69
135
  requirement: !ruby/object:Gem::Requirement
70
136
  requirements:
71
- - - ~>
137
+ - - "~>"
72
138
  - !ruby/object:Gem::Version
73
139
  version: '2.0'
74
140
  type: :runtime
75
141
  prerelease: false
76
142
  version_requirements: !ruby/object:Gem::Requirement
77
143
  requirements:
78
- - - ~>
144
+ - - "~>"
79
145
  - !ruby/object:Gem::Version
80
146
  version: '2.0'
81
147
  - !ruby/object:Gem::Dependency
82
148
  name: inherited_resources
83
149
  requirement: !ruby/object:Gem::Requirement
84
150
  requirements:
85
- - - ~>
151
+ - - "~>"
86
152
  - !ruby/object:Gem::Version
87
153
  version: '1.3'
88
154
  type: :runtime
89
155
  prerelease: false
90
156
  version_requirements: !ruby/object:Gem::Requirement
91
157
  requirements:
92
- - - ~>
158
+ - - "~>"
93
159
  - !ruby/object:Gem::Version
94
160
  version: '1.3'
95
161
  - !ruby/object:Gem::Dependency
96
162
  name: jquery-rails
97
163
  requirement: !ruby/object:Gem::Requirement
98
164
  requirements:
99
- - - '>='
165
+ - - ">="
100
166
  - !ruby/object:Gem::Version
101
167
  version: 1.0.0
102
- - - <
168
+ - - "<"
103
169
  - !ruby/object:Gem::Version
104
170
  version: '3'
105
171
  type: :runtime
106
172
  prerelease: false
107
173
  version_requirements: !ruby/object:Gem::Requirement
108
174
  requirements:
109
- - - '>='
175
+ - - ">="
110
176
  - !ruby/object:Gem::Version
111
177
  version: 1.0.0
112
- - - <
178
+ - - "<"
113
179
  - !ruby/object:Gem::Version
114
180
  version: '3'
115
181
  - !ruby/object:Gem::Dependency
116
182
  name: kaminari
117
183
  requirement: !ruby/object:Gem::Requirement
118
184
  requirements:
119
- - - ~>
185
+ - - "~>"
120
186
  - !ruby/object:Gem::Version
121
187
  version: '0.13'
188
+ - - "!="
189
+ - !ruby/object:Gem::Version
190
+ version: 0.15.0
122
191
  type: :runtime
123
192
  prerelease: false
124
193
  version_requirements: !ruby/object:Gem::Requirement
125
194
  requirements:
126
- - - ~>
195
+ - - "~>"
127
196
  - !ruby/object:Gem::Version
128
197
  version: '0.13'
198
+ - - "!="
199
+ - !ruby/object:Gem::Version
200
+ version: 0.15.0
129
201
  - !ruby/object:Gem::Dependency
130
202
  name: meta_search
131
203
  requirement: !ruby/object:Gem::Requirement
132
204
  requirements:
133
- - - ~>
205
+ - - "~>"
134
206
  - !ruby/object:Gem::Version
135
207
  version: '1.0'
136
208
  type: :runtime
137
209
  prerelease: false
138
210
  version_requirements: !ruby/object:Gem::Requirement
139
211
  requirements:
140
- - - ~>
212
+ - - "~>"
141
213
  - !ruby/object:Gem::Version
142
214
  version: '1.0'
143
215
  - !ruby/object:Gem::Dependency
144
216
  name: rails
145
217
  requirement: !ruby/object:Gem::Requirement
146
218
  requirements:
147
- - - '>='
219
+ - - ">="
148
220
  - !ruby/object:Gem::Version
149
221
  version: 3.0.0
150
- - - <
222
+ - - "<"
151
223
  - !ruby/object:Gem::Version
152
224
  version: '4'
153
225
  type: :runtime
154
226
  prerelease: false
155
227
  version_requirements: !ruby/object:Gem::Requirement
156
228
  requirements:
157
- - - '>='
229
+ - - ">="
158
230
  - !ruby/object:Gem::Version
159
231
  version: 3.0.0
160
- - - <
232
+ - - "<"
161
233
  - !ruby/object:Gem::Version
162
234
  version: '4'
163
235
  - !ruby/object:Gem::Dependency
164
236
  name: sass
165
237
  requirement: !ruby/object:Gem::Requirement
166
238
  requirements:
167
- - - ~>
239
+ - - "~>"
168
240
  - !ruby/object:Gem::Version
169
241
  version: '3.1'
170
242
  type: :runtime
171
243
  prerelease: false
172
244
  version_requirements: !ruby/object:Gem::Requirement
173
245
  requirements:
174
- - - ~>
246
+ - - "~>"
175
247
  - !ruby/object:Gem::Version
176
248
  version: '3.1'
177
249
  description: The administration framework for Ruby on Rails.
@@ -181,10 +253,10 @@ executables: []
181
253
  extensions: []
182
254
  extra_rdoc_files: []
183
255
  files:
184
- - .document
185
- - .gitignore
186
- - .travis.yml
187
- - .yardopts
256
+ - ".document"
257
+ - ".gitignore"
258
+ - ".travis.yml"
259
+ - ".yardopts"
188
260
  - CHANGELOG.md
189
261
  - CONTRIBUTING.md
190
262
  - Gemfile
@@ -278,6 +350,7 @@ files:
278
350
  - config/locales/da.yml
279
351
  - config/locales/de-CH.yml
280
352
  - config/locales/de.yml
353
+ - config/locales/el.yml
281
354
  - config/locales/en-GB.yml
282
355
  - config/locales/en.yml
283
356
  - config/locales/es.yml
@@ -686,17 +759,17 @@ require_paths:
686
759
  - lib
687
760
  required_ruby_version: !ruby/object:Gem::Requirement
688
761
  requirements:
689
- - - '>='
762
+ - - ">="
690
763
  - !ruby/object:Gem::Version
691
764
  version: '0'
692
765
  required_rubygems_version: !ruby/object:Gem::Requirement
693
766
  requirements:
694
- - - '>='
767
+ - - ">="
695
768
  - !ruby/object:Gem::Version
696
769
  version: '0'
697
770
  requirements: []
698
771
  rubyforge_project:
699
- rubygems_version: 2.0.6
772
+ rubygems_version: 2.2.1
700
773
  signing_key:
701
774
  specification_version: 4
702
775
  summary: The administration framework for Ruby on Rails.