simple_admin 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/helpers/simple_admin/admin_helper.rb +1 -0
- data/app/helpers/simple_admin/form_helper.rb +25 -0
- data/app/views/simple_admin/admin/_form.html.erb +1 -3
- data/app/views/simple_admin/admin/edit.html.erb +8 -6
- data/app/views/simple_admin/admin/index.html.erb +2 -0
- data/app/views/simple_admin/admin/new.html.erb +8 -6
- data/app/views/simple_admin/admin/show.html.erb +21 -19
- data/lib/simple_admin/attributes.rb +44 -1
- data/lib/simple_admin/version.rb +1 -1
- data/spec/simple_admin/attributes_spec.rb +52 -0
- metadata +6 -5
@@ -0,0 +1,25 @@
|
|
1
|
+
module SimpleAdmin
|
2
|
+
module FormHelper
|
3
|
+
def form_fields(form, attributes)
|
4
|
+
attributes.map do |col|
|
5
|
+
case col.kind
|
6
|
+
when :attribute
|
7
|
+
form.input col.attribute, (col.options || {}).dup
|
8
|
+
when :content
|
9
|
+
instance_exec(@resource, &col.data)
|
10
|
+
when :fieldset
|
11
|
+
content_tag :fieldset, col.options do
|
12
|
+
content_tag :legend do
|
13
|
+
col.options[:legend]
|
14
|
+
end unless col.options[:legend].blank
|
15
|
+
form_fields(form, col.attributes)
|
16
|
+
end
|
17
|
+
else
|
18
|
+
content_tag :div, col.options do
|
19
|
+
form_fields(form, col.attributes)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end.join.html_safe
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -2,9 +2,7 @@
|
|
2
2
|
:url => resource_path(@resource), :html => {:class => "simple_form formtastic #{@interface.member}"}) do |form| %>
|
3
3
|
<fieldset class="inputs">
|
4
4
|
<ol>
|
5
|
-
|
6
|
-
<%= form.input col.attribute, col.options.dup %>
|
7
|
-
<% end %>
|
5
|
+
<%= form_fields(form, @interface.attributes_for(:form)) %>
|
8
6
|
</ol>
|
9
7
|
</fieldset>
|
10
8
|
<fieldset class="buttons">
|
@@ -1,7 +1,9 @@
|
|
1
|
-
|
2
|
-
<%
|
3
|
-
<%
|
1
|
+
<div class="simple_admin_edit">
|
2
|
+
<% content_for :content do %>
|
3
|
+
<% render :partial => 'form' %>
|
4
|
+
<% end %>
|
4
5
|
|
5
|
-
<% content_for :sidebar do %>
|
6
|
-
|
7
|
-
<% end %>
|
6
|
+
<% content_for :sidebar do %>
|
7
|
+
<%= sidebars %>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
@@ -1,7 +1,9 @@
|
|
1
|
-
|
2
|
-
<%
|
3
|
-
<%
|
1
|
+
<div class="simple_admin_new">
|
2
|
+
<% content_for :content do %>
|
3
|
+
<% render :partial => 'form' %>
|
4
|
+
<% end %>
|
4
5
|
|
5
|
-
<% content_for :sidebar do %>
|
6
|
-
|
7
|
-
<% end %>
|
6
|
+
<% content_for :sidebar do %>
|
7
|
+
<%= sidebars %>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
@@ -1,22 +1,24 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
<
|
4
|
-
|
5
|
-
<div class="
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
<
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
1
|
+
<div class="simple_admin_show">
|
2
|
+
<% content_for :content do %>
|
3
|
+
<div class="panel">
|
4
|
+
<h3><%= @interface.member.titleize %> Details</h3>
|
5
|
+
<div class="panel_contents">
|
6
|
+
<div class="<%= @interface.member %> attributes_table"
|
7
|
+
id="<%= ['attributes_table', @interface.member, @resource.to_param].join("_") %>">
|
8
|
+
<table border="0" cellspacing="0" cellpadding="0">
|
9
|
+
<% @interface.attributes_for(:show).each do |attr| %>
|
10
|
+
<tr>
|
11
|
+
<th><%= attr.title %></th>
|
12
|
+
<td><%= data_for(attr) %></td>
|
13
|
+
</tr>
|
14
|
+
<% end %>
|
15
|
+
</table>
|
16
|
+
</div>
|
15
17
|
</div>
|
16
18
|
</div>
|
17
|
-
|
18
|
-
<% end %>
|
19
|
+
<% end %>
|
19
20
|
|
20
|
-
<% content_for :sidebar do %>
|
21
|
-
|
22
|
-
<% end %>
|
21
|
+
<% content_for :sidebar do %>
|
22
|
+
<%= sidebars %>
|
23
|
+
<% end %>
|
24
|
+
</div>
|
@@ -32,12 +32,13 @@ module SimpleAdmin
|
|
32
32
|
# :sortable +true+ or +false+ (defaults to +true+)
|
33
33
|
# :sort_key a column name used when sorting this column (defaults to the column for this attribute)
|
34
34
|
#
|
35
|
-
|
35
|
+
def attribute(name, options={}, &block)
|
36
36
|
attr = @attributes.find {|attr| attr.attribute == name.to_sym }
|
37
37
|
unless attr
|
38
38
|
attr = OpenStruct.new
|
39
39
|
@attributes << attr
|
40
40
|
end
|
41
|
+
attr.kind = :attribute
|
41
42
|
attr.attribute = name.to_sym
|
42
43
|
attr.options = options
|
43
44
|
attr.data = block
|
@@ -47,6 +48,48 @@ module SimpleAdmin
|
|
47
48
|
attr
|
48
49
|
end
|
49
50
|
|
51
|
+
# Include rendered content inline.
|
52
|
+
#
|
53
|
+
# This is only used when displaying a form.
|
54
|
+
#
|
55
|
+
def content(options={}, &block)
|
56
|
+
cont = OpenStruct.new
|
57
|
+
@attributes << cont
|
58
|
+
cont.kind = :content
|
59
|
+
cont.options = options
|
60
|
+
cont.data = block
|
61
|
+
cont
|
62
|
+
end
|
63
|
+
|
64
|
+
# Create a section which may or may not contain sub-sections.
|
65
|
+
#
|
66
|
+
# Note: this works better if you first clear the attributes. For example:
|
67
|
+
#
|
68
|
+
# attributes do
|
69
|
+
# clear
|
70
|
+
# section :kind => :fieldset, :legend => "Primary Address" do
|
71
|
+
# attribute :address
|
72
|
+
# section :class => 'csz' do
|
73
|
+
# attribute :city
|
74
|
+
# attribute :state
|
75
|
+
# attribute :zip
|
76
|
+
# end
|
77
|
+
# end
|
78
|
+
# end
|
79
|
+
def section(options={}, &block)
|
80
|
+
sect = OpenStruct.new
|
81
|
+
@attributes << sect
|
82
|
+
sect.kind = options.delete(:kind) || :section
|
83
|
+
sect.options = options
|
84
|
+
sect.attributes = []
|
85
|
+
save_attributes = @attributes
|
86
|
+
@attributes = sect.attributes
|
87
|
+
instance_eval(&block) if block_given?
|
88
|
+
@attributes = save_attributes
|
89
|
+
sect
|
90
|
+
end
|
91
|
+
|
92
|
+
|
50
93
|
# Define the default attributes for this section
|
51
94
|
#
|
52
95
|
# If the current section is a form it will only use content columns and will
|
data/lib/simple_admin/version.rb
CHANGED
@@ -102,5 +102,57 @@ describe SimpleAdmin::Attributes do
|
|
102
102
|
@attributes.attributes.map(&:title).should == ["Your Name Here"]
|
103
103
|
end
|
104
104
|
end
|
105
|
+
|
106
|
+
describe "section" do
|
107
|
+
it "creates a section" do
|
108
|
+
@attributes.clear
|
109
|
+
@attributes.section :class => 'bang'
|
110
|
+
@attributes.attributes.map {|att|
|
111
|
+
att.attributes.should == []
|
112
|
+
att.kind.should == :section
|
113
|
+
att.options.should == {:class => 'bang'}
|
114
|
+
}
|
115
|
+
end
|
116
|
+
|
117
|
+
it "contains attributes" do
|
118
|
+
@attributes.clear
|
119
|
+
@attributes.section :class => 'bang' do
|
120
|
+
attribute :name, :title => "Your Name Here"
|
121
|
+
end
|
122
|
+
@attributes.attributes.map {|att|
|
123
|
+
att.attributes.map(&:title).should == ["Your Name Here"]
|
124
|
+
}
|
125
|
+
end
|
126
|
+
|
127
|
+
it "contains sections" do
|
128
|
+
@attributes.clear
|
129
|
+
@attributes.section :class => 'bang' do
|
130
|
+
section :class => 'bleep' do
|
131
|
+
attribute :name, :title => "Your Name Here"
|
132
|
+
end
|
133
|
+
end
|
134
|
+
@attributes.attributes.map {|att|
|
135
|
+
att.attributes.map {|sec|
|
136
|
+
sec.attributes.map(&:title).should == ["Your Name Here"]
|
137
|
+
}
|
138
|
+
}
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "content" do
|
144
|
+
it "creates content" do
|
145
|
+
SimpleAdmin::Attributes.expects(:fail).never
|
146
|
+
@attributes.clear
|
147
|
+
@attributes.content(:class => 'bang') do
|
148
|
+
SimpleAdmin::Attributes.fail
|
149
|
+
end
|
150
|
+
@attributes.attributes.map {|att|
|
151
|
+
att.data.should_not be_nil
|
152
|
+
att.kind.should == :content
|
153
|
+
att.options.should == {:class => 'bang'}
|
154
|
+
}
|
155
|
+
end
|
156
|
+
end
|
105
157
|
end
|
106
158
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 5
|
9
|
+
- 0
|
10
|
+
version: 0.5.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jeff Rafter
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-08-
|
18
|
+
date: 2011-08-13 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -200,6 +200,7 @@ files:
|
|
200
200
|
- app/helpers/simple_admin/assets_helper.rb
|
201
201
|
- app/helpers/simple_admin/display_helper.rb
|
202
202
|
- app/helpers/simple_admin/filter_helper.rb
|
203
|
+
- app/helpers/simple_admin/form_helper.rb
|
203
204
|
- app/helpers/simple_admin/header_helper.rb
|
204
205
|
- app/helpers/simple_admin/path_helper.rb
|
205
206
|
- app/helpers/simple_admin/sidebar_helper.rb
|