padrino-admin 0.4.5 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/padrino-admin/ext_js/controller.rb +37 -59
- data/padrino-admin.gemspec +2 -3
- data/test/test_controller.rb +61 -10
- data/test/test_mongo_mapper.rb +3 -1
- metadata +2 -3
- data/lib/padrino-admin/support.rb +0 -12
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.6
|
@@ -49,78 +49,56 @@ module Padrino
|
|
49
49
|
# end
|
50
50
|
#
|
51
51
|
module Controller
|
52
|
-
def self.column_store_for(model,
|
53
|
-
ColumnStore.new(model,
|
52
|
+
def self.column_store_for(model, config)
|
53
|
+
ColumnStore.new(model, config)
|
54
54
|
end
|
55
55
|
|
56
56
|
class ColumnStore #:nodoc:
|
57
57
|
attr_reader :data
|
58
58
|
|
59
|
-
def initialize(model,
|
59
|
+
def initialize(model, config) #:nodoc
|
60
60
|
@model = model
|
61
|
-
@data = []
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
61
|
+
@data = config["columns"].map do |column|
|
62
|
+
|
63
|
+
# Reformat our config
|
64
|
+
column["header"] ||= column["method"].to_s
|
65
|
+
column["dataIndex"] ||= column["method"]
|
66
|
+
column["sortable"] ||= column["sortable"].nil? ? true : column["sortable"]
|
67
|
+
column["header"] = @model.human_attribute_name(column["header"]) # try to translate with I18n the column name
|
68
|
+
|
69
|
+
# Try to reformat the dataIndex
|
70
|
+
data_indexes = Array(column["dataIndex"]).collect do |data_index|
|
71
|
+
if data_index =~ /\./ # if we have some like categories.names we use this
|
72
|
+
cols = data_index.split(".")
|
73
|
+
column["name"] ||= cols[0] + "[" + cols[1..-1].join("][") + "]" # accounts.name will be => accounts[name]
|
74
|
+
else
|
75
|
+
column["name"] ||= "#{@model.table_name.singularize}[#{data_index}]"
|
76
|
+
data_index = "#{@model.table_name}.#{data_index}"
|
77
|
+
end
|
78
|
+
data_index
|
79
|
+
end
|
78
80
|
|
79
|
-
|
80
|
-
|
81
|
-
options[:sortable] = options[:sortable].nil? ? true : options[:sortable]
|
81
|
+
# Now we join our data indexes
|
82
|
+
column["dataIndex"] = data_indexes.compact.uniq.join(",")
|
82
83
|
|
83
|
-
|
84
|
-
|
84
|
+
# Reformat mapping like a div id
|
85
|
+
column["mapping"] ||= column["name"].sub(/\[/,"_").sub(/\]$/, "").sub(/\]\[/,"_")
|
85
86
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
87
|
+
# Now is necessary for our columns an ID
|
88
|
+
# TODO: check duplicates here
|
89
|
+
column["id"] = column["mapping"]
|
90
|
+
|
90
91
|
|
91
|
-
|
92
|
-
|
93
|
-
when String then data_index
|
94
|
-
when Symbol
|
95
|
-
if data_index.missing_methods.size == 1
|
96
|
-
options[:name] ||= "#{@model.table_name.singularize}[#{data_index}]"
|
97
|
-
data_index = "#{@model.table_name}.#{data_index}"
|
98
|
-
else
|
99
|
-
columns = data_index.missing_methods
|
100
|
-
options[:name] ||= columns.at(0) + "[" + columns[1..-1].collect(&:to_s).join("][") + "]"
|
101
|
-
data_index = columns[0..-2].collect { |c| c.to_s.pluralize }.join(".") + "." + columns.at(-1).to_s
|
102
|
-
end
|
103
|
-
end
|
104
|
-
data_index
|
92
|
+
# Finally we can return our column
|
93
|
+
column
|
105
94
|
end
|
106
|
-
|
107
|
-
options[:dataIndex] = data_indexes.compact.uniq.join(",")
|
108
|
-
|
109
|
-
# Reformat mapping like a div id
|
110
|
-
options[:mapping] ||= options[:name].sub(/\[/,"_").sub(/\]$/, "").sub(/\]\[/,"_")
|
111
|
-
|
112
|
-
# Now is necessary for our columns an ID
|
113
|
-
# TODO: check duplicates here
|
114
|
-
options[:id] = options[:mapping]
|
115
|
-
|
116
|
-
@data << options
|
117
95
|
end
|
118
96
|
|
119
97
|
# Return an array config for build an Ext.grid.ColumnModel() config
|
120
98
|
def column_fields
|
121
99
|
@data.map do |data|
|
122
|
-
data.delete(
|
123
|
-
data.delete(
|
100
|
+
data.delete("method")
|
101
|
+
data.delete("mapping")
|
124
102
|
data
|
125
103
|
end
|
126
104
|
end
|
@@ -128,8 +106,8 @@ module Padrino
|
|
128
106
|
# Return an array config for build an Ext.data.GroupingStore()
|
129
107
|
def store_fields
|
130
108
|
@data.map do |data|
|
131
|
-
hash = { :name => data[
|
132
|
-
hash.merge!(:type => data[
|
109
|
+
hash = { :name => data["dataIndex"], :mapping => data["mapping"] }
|
110
|
+
hash.merge!(:type => data["renderer"]) if data["renderer"] && [:date, :datetime, :time_to_date].include?(data["renderer"])
|
133
111
|
hash
|
134
112
|
end
|
135
113
|
end
|
@@ -138,7 +116,7 @@ module Padrino
|
|
138
116
|
def store_data_from(collection)
|
139
117
|
collection.map do |c|
|
140
118
|
@data.dup.inject({ "id" => c.id }) do |options, data|
|
141
|
-
options[data[
|
119
|
+
options[data["mapping"]] = (c.instance_eval(data["method"]) rescue I18n.t("padrino.admin.labels.not_found"))
|
142
120
|
options
|
143
121
|
end
|
144
122
|
end
|
data/padrino-admin.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{padrino-admin}
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Padrino Team", "Nathan Esquenazi", "Davide D'Agostino", "Arthur Chiu"]
|
12
|
-
s.date = %q{2010-01-
|
12
|
+
s.date = %q{2010-01-07}
|
13
13
|
s.description = %q{Admin View for Padrino applications}
|
14
14
|
s.email = %q{nesquena@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -33,7 +33,6 @@ Gem::Specification.new do |s|
|
|
33
33
|
"lib/padrino-admin/ext_js/controller.rb",
|
34
34
|
"lib/padrino-admin/generators/backend.rb",
|
35
35
|
"lib/padrino-admin/locale/en.yml",
|
36
|
-
"lib/padrino-admin/support.rb",
|
37
36
|
"lib/padrino-admin/utils/crypt.rb",
|
38
37
|
"padrino-admin.gemspec",
|
39
38
|
"test/fixtures/active_record.rb",
|
data/test/test_controller.rb
CHANGED
@@ -4,25 +4,76 @@ class TestController < Test::Unit::TestCase
|
|
4
4
|
|
5
5
|
def setup
|
6
6
|
load_fixture 'data_mapper'
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
7
|
+
config = Padrino::ExtJs::Config.load <<-YAML
|
8
|
+
columns:
|
9
|
+
- method: name.upcase
|
10
|
+
header: Name Upcase
|
11
|
+
dataIndex: name
|
12
|
+
- method: surname
|
13
|
+
- method: category.name
|
14
|
+
- method: email
|
15
|
+
header: E-mail
|
16
|
+
sortable: false
|
17
|
+
- method: role
|
18
|
+
YAML
|
19
|
+
@column_store = Padrino::ExtJs::Controller.column_store_for(Account, config)
|
14
20
|
end
|
15
21
|
|
16
22
|
should 'have correct column fileds' do
|
17
|
-
|
23
|
+
result = [
|
24
|
+
{"name"=>"account[name]",
|
25
|
+
"sortable"=>true,
|
26
|
+
"header"=>"Name upcase",
|
27
|
+
"id"=>"account_name",
|
28
|
+
"dataIndex"=>"accounts.name"},
|
29
|
+
{"name"=>"account[surname]",
|
30
|
+
"sortable"=>true,
|
31
|
+
"header"=>"Surname",
|
32
|
+
"id"=>"account_surname",
|
33
|
+
"dataIndex"=>"accounts.surname"},
|
34
|
+
{"name"=>"category[name]",
|
35
|
+
"sortable"=>true,
|
36
|
+
"header"=>"Category.name",
|
37
|
+
"id"=>"category_name",
|
38
|
+
"dataIndex"=>"category.name"},
|
39
|
+
{"name"=>"account[email]",
|
40
|
+
"sortable"=>false,
|
41
|
+
"header"=>"E-mail",
|
42
|
+
"id"=>"account_email",
|
43
|
+
"dataIndex"=>"accounts.email"},
|
44
|
+
{"name"=>"account[role]",
|
45
|
+
"sortable"=>true,
|
46
|
+
"header"=>"Role",
|
47
|
+
"id"=>"account_role",
|
48
|
+
"dataIndex"=>"accounts.role"}]
|
49
|
+
assert_equal result, @column_store.column_fields
|
18
50
|
end
|
19
51
|
|
20
52
|
should 'have correct store fields' do
|
21
|
-
|
53
|
+
result = [
|
54
|
+
{:mapping=>"account_name", :name=>"accounts.name"},
|
55
|
+
{:mapping=>"account_surname", :name=>"accounts.surname"},
|
56
|
+
{:mapping=>"category_name", :name=>"category.name"},
|
57
|
+
{:mapping=>"account_email", :name=>"accounts.email"},
|
58
|
+
{:mapping=>"account_role", :name=>"accounts.role"}]
|
59
|
+
assert_equal result, @column_store.store_fields
|
22
60
|
end
|
23
61
|
|
24
62
|
should 'store data' do
|
25
|
-
|
63
|
+
result = {:results=>[
|
64
|
+
{"account_surname"=>"Not found",
|
65
|
+
"account_email"=>"d.dagostino@lipsiasoft.com",
|
66
|
+
"category_name"=>"Not found",
|
67
|
+
"id"=>1,
|
68
|
+
"account_role"=>"Admin",
|
69
|
+
"account_name"=>"DADDYE"},
|
70
|
+
{"account_surname"=>"Not found",
|
71
|
+
"account_email"=>"editor@lipsiasoft.com",
|
72
|
+
"category_name"=>"Not found",
|
73
|
+
"id"=>2,
|
74
|
+
"account_role"=>"Editor",
|
75
|
+
"account_name"=>"DEXTER"}], :count=>2}
|
76
|
+
assert_equal result, @column_store.store_data(:fields => "name,role", :query => "d", :sort => :name, :dir => :asc, :limit => 2, :offset => 0)
|
26
77
|
end
|
27
78
|
|
28
79
|
end
|
data/test/test_mongo_mapper.rb
CHANGED
@@ -20,8 +20,10 @@ class TestMongoMapper < Test::Unit::TestCase
|
|
20
20
|
|
21
21
|
should 'correctly authenticate an account' do
|
22
22
|
account = Account.create(:email => "auth@lipsia.org", :role => "some", :password => "some", :password_confirmation => "some")
|
23
|
+
assert account.valid?
|
24
|
+
assert ! account.id.nil?
|
23
25
|
assert_equal "some", account.password_clean
|
24
|
-
account_r = Account.
|
26
|
+
account_r = Account.first(:conditions => { :email => "auth@lipsia.org" })
|
25
27
|
assert_equal account_r, account
|
26
28
|
end
|
27
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: padrino-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Padrino Team
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2010-01-
|
15
|
+
date: 2010-01-07 00:00:00 +01:00
|
16
16
|
default_executable:
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -121,7 +121,6 @@ files:
|
|
121
121
|
- lib/padrino-admin/ext_js/controller.rb
|
122
122
|
- lib/padrino-admin/generators/backend.rb
|
123
123
|
- lib/padrino-admin/locale/en.yml
|
124
|
-
- lib/padrino-admin/support.rb
|
125
124
|
- lib/padrino-admin/utils/crypt.rb
|
126
125
|
- padrino-admin.gemspec
|
127
126
|
- test/fixtures/active_record.rb
|
@@ -1,12 +0,0 @@
|
|
1
|
-
class Symbol
|
2
|
-
|
3
|
-
def method_missing(method, *args)
|
4
|
-
super and return if method.to_s =~ /table_name/
|
5
|
-
(self.to_s + ".#{method}(#{args.collect(&:inspect).join(",")})").to_sym
|
6
|
-
end
|
7
|
-
|
8
|
-
def missing_methods
|
9
|
-
self.to_s.gsub(/(\(.*\))/,"").split(".")
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|