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 +4 -4
- data/activeadmin.gemspec +7 -2
- data/config/locales/el.yml +101 -0
- data/config/locales/es_MX.yml +5 -0
- data/config/locales/fr.yml +18 -4
- data/config/locales/ja.yml +9 -1
- data/features/belongs_to.feature +3 -0
- data/features/step_definitions/user_steps.rb +7 -5
- data/features/support/env.rb +2 -0
- data/features/support/paths.rb +1 -1
- data/features/users/resetting_password.feature +4 -4
- data/lib/active_admin/comments.rb +5 -1
- data/lib/active_admin/comments/comment.rb +1 -6
- data/lib/active_admin/filters/forms.rb +3 -5
- data/lib/active_admin/filters/resource_extension.rb +1 -2
- data/lib/active_admin/resource_collection.rb +44 -16
- data/lib/active_admin/resource_controller/data_access.rb +8 -3
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +3 -2
- data/lib/active_admin/views/pages/index.rb +1 -1
- data/spec/support/rails_template.rb +0 -5
- data/spec/unit/filters/filter_form_builder_spec.rb +26 -28
- data/spec/unit/resource_collection_spec.rb +47 -35
- data/spec/unit/view_helpers/breadcrumbs_spec.rb +80 -50
- metadata +110 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee588c2ccd71afa65ece9453d9cda98630bb23d5
|
4
|
+
data.tar.gz: 1b37441291f755166156baee1f9617f589a24d04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ec65879c01b007fe2b554bbaf18b24292a2830f3a6e7d382371fa9ddf950531f8364c9f8d3631488550134d55db7aa67745c77a31d8d5a6eac4cb9711897737
|
7
|
+
data.tar.gz: 8945d9f334cc26bf9e1459a144336cf2f3a9312fd7eb00efc8adbf52bdd874455260e3fa6e0fc4b541db97ec155a89bf1ae2a9061e256eee1ccd8649d6e92c36
|
data/activeadmin.gemspec
CHANGED
@@ -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} - %{to}</b> από <b>%{total}</b> συνολικά"
|
46
|
+
multiple_without_total: "Εμφανίζονται %{model} <b>%{from} - %{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"
|
data/config/locales/es_MX.yml
CHANGED
@@ -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: "..."
|
data/config/locales/fr.yml
CHANGED
@@ -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: "
|
85
|
+
title: "Connection"
|
78
86
|
remember_me: "Se souvenir de moi"
|
79
|
-
submit: "
|
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"
|
data/config/locales/ja.yml
CHANGED
@@ -44,7 +44,7 @@ ja:
|
|
44
44
|
one_page: "<b>全 %{n}</b> 件の %{model} を表示しています"
|
45
45
|
multiple: "全 <b>%{total}</b> 件中 <b>%{from} - %{to}</b> 件の %{model} を表示しています"
|
46
46
|
multiple_without_total: "<b>%{from} - %{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: "次回から自動的にログイン"
|
data/features/belongs_to.feature
CHANGED
@@ -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 /^
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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
|
data/features/support/env.rb
CHANGED
data/features/support/paths.rb
CHANGED
@@ -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
|
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
|
-
|
22
|
-
When I go to the admin password reset form with
|
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
|
-
|
30
|
-
When I go to the admin password reset form with
|
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
|
-
|
70
|
-
|
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
|
-
|
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
|
-
|
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 :@
|
7
|
+
def_delegators :@collection, :empty?, :has_key?, :keys, :values, :size
|
8
8
|
|
9
9
|
def initialize
|
10
|
-
@
|
10
|
+
@collection = {}
|
11
11
|
end
|
12
12
|
|
13
13
|
def add(resource)
|
14
|
-
@
|
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
|
-
|
23
|
-
|
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
|
-
#
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
271
|
-
|
270
|
+
page_method_name = Kaminari.config.page_method_name
|
271
|
+
page = params[Kaminari.config.param_name]
|
272
272
|
|
273
|
-
chain.send(
|
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
|
data/lib/active_admin/version.rb
CHANGED
@@ -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
|
-
|
16
|
-
|
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
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
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
|
9
|
-
|
10
|
-
|
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 "
|
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
|
57
|
-
let(:inherited_resource) { Resource.new
|
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
|
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
|
-
|
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(:
|
15
|
-
|
16
|
-
|
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
|
-
|
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/
|
35
|
-
let(:path) { "/admin/
|
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/
|
47
|
-
let(:path) { "/admin/
|
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/
|
57
|
-
trail[1][:name].should == "
|
58
|
-
trail[1][:path].should == "/admin/
|
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/
|
63
|
-
let(:path) { "/admin/
|
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/
|
73
|
-
trail[1][:name].should == "
|
74
|
-
trail[1][:path].should == "/admin/
|
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
|
78
|
-
before {
|
79
|
-
it "should have a link to /admin/
|
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/
|
83
|
+
trail[2][:path].should == "/admin/users/1"
|
82
84
|
end
|
83
85
|
end
|
84
86
|
|
85
|
-
context "when
|
86
|
-
it "should have a link to /admin/
|
87
|
-
trail[2][:name].should == "
|
88
|
-
trail[2][:path].should == "/admin/
|
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/
|
94
|
-
let(:path) { "/admin/
|
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/
|
104
|
-
trail[1][:name].should == "
|
105
|
-
trail[1][:path].should == "/admin/
|
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
|
109
|
-
before {
|
110
|
-
it "should have a link to /admin/
|
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/
|
114
|
+
trail[2][:path].should == "/admin/users/4e24d6249ccf967313000000"
|
113
115
|
end
|
114
116
|
end
|
115
117
|
|
116
|
-
context "when
|
118
|
+
context "when User.find(4e24d6249ccf967313000000) does exist" do
|
117
119
|
before do
|
118
|
-
|
120
|
+
user_config.stub find_resource: double(display_name: 'Hello :)')
|
119
121
|
end
|
120
|
-
it "should have a link to /admin/
|
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/
|
124
|
+
trail[2][:path].should == "/admin/users/4e24d6249ccf967313000000"
|
123
125
|
end
|
124
126
|
end
|
125
127
|
end
|
126
128
|
|
127
|
-
context "when path '/admin/
|
128
|
-
let(:path) { "/admin/
|
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/
|
138
|
-
trail[1][:name].should == "
|
139
|
-
trail[1][:path].should == "/admin/
|
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/
|
142
|
-
trail[
|
143
|
-
trail[
|
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
|
146
|
-
trail[
|
147
|
-
trail[
|
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.
|
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:
|
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.
|
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.
|