typus 0.9.34 → 0.9.35
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/app/controllers/admin/master_controller.rb +11 -14
- data/app/helpers/admin/form_helper.rb +6 -1
- data/app/helpers/admin/sidebar_helper.rb +48 -68
- data/app/helpers/admin/table_helper.rb +11 -6
- data/app/views/admin/resources/edit.html.erb +2 -0
- data/app/views/admin/resources/index.html.erb +1 -0
- data/app/views/admin/resources/show.html.erb +5 -2
- data/app/views/admin/templates/_selector.html.erb +5 -5
- data/app/views/admin/templates/_string.html.erb +1 -1
- data/generators/typus/templates/lib/tasks/typus_tasks.rake +32 -0
- data/generators/typus/typus_generator.rb +49 -32
- data/lib/typus/active_record.rb +6 -0
- data/lib/typus.rb +4 -0
- data/test/helpers/admin/form_helper_test.rb +47 -43
- data/test/helpers/admin/master_helper_test.rb +2 -1
- data/test/helpers/admin/sidebar_helper_test.rb +52 -31
- data/test/helpers/admin/table_helper_test.rb +6 -3
- data/test/helpers/typus_helper_test.rb +4 -2
- data/test/lib/typus_test.rb +0 -8
- data/typus.gemspec +3 -2
- metadata +3 -2
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.9.
|
|
1
|
+
0.9.35
|
|
@@ -118,13 +118,7 @@ class Admin::MasterController < ApplicationController
|
|
|
118
118
|
# We assign the params passed trough the url
|
|
119
119
|
@item.attributes = item_params
|
|
120
120
|
|
|
121
|
-
|
|
122
|
-
# next linking to records from other users.
|
|
123
|
-
conditions = if @resource[:class].typus_options_for(:only_user_items)
|
|
124
|
-
{ Typus.user_fk => @current_user.id }
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
item_params.merge!(conditions || {})
|
|
121
|
+
item_params.merge!(set_conditions)
|
|
128
122
|
@previous, @next = @item.previous_and_next(item_params)
|
|
129
123
|
|
|
130
124
|
select_template :edit
|
|
@@ -135,13 +129,7 @@ class Admin::MasterController < ApplicationController
|
|
|
135
129
|
|
|
136
130
|
check_ownership_of_item and return if @resource[:class].typus_options_for(:only_user_items)
|
|
137
131
|
|
|
138
|
-
|
|
139
|
-
# next linking to records from other users.
|
|
140
|
-
conditions = if @resource[:class].typus_options_for(:only_user_items)
|
|
141
|
-
{ Typus.user_fk => @current_user.id }
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
@previous, @next = @item.previous_and_next(conditions || {})
|
|
132
|
+
@previous, @next = @item.previous_and_next(set_conditions)
|
|
145
133
|
|
|
146
134
|
respond_to do |format|
|
|
147
135
|
format.html { select_template :show }
|
|
@@ -336,6 +324,15 @@ private
|
|
|
336
324
|
@order = params[:order_by] ? "#{@resource[:class].table_name}.#{params[:order_by]} #{params[:sort_order]}" : @resource[:class].typus_order_by
|
|
337
325
|
end
|
|
338
326
|
|
|
327
|
+
# If we want to display only user items, we don't want the links previous and
|
|
328
|
+
# next linking to records from other users.
|
|
329
|
+
def set_conditions
|
|
330
|
+
condition = @current_user.is_root? ||
|
|
331
|
+
!@resource[:class].typus_options_for(:only_user_items) ||
|
|
332
|
+
!@resource[:class].columns.map(&:name).include?(Typus.user_fk)
|
|
333
|
+
!condition ? { Typus.user_fk => @current_user.id } : { }
|
|
334
|
+
end
|
|
335
|
+
|
|
339
336
|
def set_tiny_mce
|
|
340
337
|
if !@resource[:class].typus_tiny_mce_fields.empty? && defined?(TinyMCE)
|
|
341
338
|
options = @resource[:class].typus_tiny_mce_options
|
|
@@ -13,6 +13,11 @@ module Admin::FormHelper
|
|
|
13
13
|
|
|
14
14
|
fields.each do |key, value|
|
|
15
15
|
|
|
16
|
+
if template = @resource[:class].typus_template(key)
|
|
17
|
+
html << typus_template_field(key, template, options)
|
|
18
|
+
next
|
|
19
|
+
end
|
|
20
|
+
|
|
16
21
|
html << case value
|
|
17
22
|
when :belongs_to then typus_belongs_to_field(key)
|
|
18
23
|
when :tree then typus_tree_field(key)
|
|
@@ -66,7 +71,7 @@ module Admin::FormHelper
|
|
|
66
71
|
def typus_tree_field(attribute, items = @resource[:class].roots, attribute_virtual = 'parent_id')
|
|
67
72
|
<<-HTML
|
|
68
73
|
<li><label for="item_#{attribute}">#{@resource[:class].human_attribute_name(attribute)}</label>
|
|
69
|
-
<select id="item_#{attribute}" #{
|
|
74
|
+
<select id="item_#{attribute}" #{'disabled="disabled"' if attribute_disabled?(attribute)} name="item[#{attribute}]">
|
|
70
75
|
<option value=""></option>
|
|
71
76
|
#{expand_tree_into_select_field(items, attribute_virtual)}
|
|
72
77
|
</select></li>
|
|
@@ -1,23 +1,29 @@
|
|
|
1
1
|
module Admin::SidebarHelper
|
|
2
2
|
|
|
3
|
-
def
|
|
4
|
-
|
|
5
|
-
returning(String.new) do |html|
|
|
3
|
+
def build_typus_list(items, *args)
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
#{build_typus_list(default_actions, :header => 'actions')}
|
|
9
|
-
#{build_typus_list(previous_and_next, :header => 'go_to')}
|
|
10
|
-
HTML
|
|
5
|
+
options = args.extract_options!
|
|
11
6
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
header = if options[:header]
|
|
8
|
+
_(options[:header].humanize)
|
|
9
|
+
elsif options[:attribute]
|
|
10
|
+
@resource[:class].human_attribute_name(options[:attribute])
|
|
11
|
+
end
|
|
15
12
|
|
|
13
|
+
return String.new if items.empty?
|
|
14
|
+
returning(String.new) do |html|
|
|
15
|
+
html << "<h2>#{header}</h2>\n" unless header.nil?
|
|
16
|
+
next unless options[:selector].nil?
|
|
17
|
+
html << "<ul>\n"
|
|
18
|
+
items.each do |item|
|
|
19
|
+
html << "<li>#{item}</li>\n"
|
|
20
|
+
end
|
|
21
|
+
html << "</ul>\n"
|
|
16
22
|
end
|
|
17
23
|
|
|
18
24
|
end
|
|
19
25
|
|
|
20
|
-
def
|
|
26
|
+
def actions
|
|
21
27
|
|
|
22
28
|
items = []
|
|
23
29
|
|
|
@@ -44,73 +50,45 @@ module Admin::SidebarHelper
|
|
|
44
50
|
end
|
|
45
51
|
end
|
|
46
52
|
|
|
47
|
-
|
|
48
|
-
when 'new', 'create', 'edit', 'show', 'update'
|
|
53
|
+
if %w( new create edit show update ).include?(params[:action])
|
|
49
54
|
items << (link_to _("Back to list"), :action => 'index')
|
|
50
55
|
end
|
|
51
56
|
|
|
52
|
-
|
|
57
|
+
build_typus_list(items, :header => 'actions')
|
|
53
58
|
|
|
54
59
|
end
|
|
55
60
|
|
|
56
61
|
def export
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
format << (link_to f.upcase, params.merge(:format => f))
|
|
61
|
-
end
|
|
62
|
+
formats = []
|
|
63
|
+
@resource[:class].typus_export_formats.each do |f|
|
|
64
|
+
formats << (link_to f.upcase, params.merge(:format => f))
|
|
62
65
|
end
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def build_typus_list(items, *args)
|
|
66
|
-
|
|
67
|
-
options = args.extract_options!
|
|
68
|
-
|
|
69
|
-
header = if options[:header]
|
|
70
|
-
_(options[:header].humanize)
|
|
71
|
-
elsif options[:attribute]
|
|
72
|
-
@resource[:class].human_attribute_name(options[:attribute])
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
return String.new if items.empty?
|
|
76
|
-
returning(String.new) do |html|
|
|
77
|
-
html << "<h2>#{header}</h2>\n" unless header.nil?
|
|
78
|
-
next unless options[:selector].nil?
|
|
79
|
-
html << "<ul>\n"
|
|
80
|
-
items.each do |item|
|
|
81
|
-
html << "<li>#{item}</li>\n"
|
|
82
|
-
end
|
|
83
|
-
html << "</ul>\n"
|
|
84
|
-
end
|
|
85
|
-
|
|
66
|
+
build_typus_list(formats, :header => 'export')
|
|
86
67
|
end
|
|
87
68
|
|
|
88
69
|
def previous_and_next(klass = @resource[:class])
|
|
89
70
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
# Verify ownership of record to define the kind of action which can be
|
|
93
|
-
# performed on the record.
|
|
71
|
+
items = []
|
|
94
72
|
|
|
95
|
-
|
|
96
|
-
if
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
if
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
items << (link_to _("Previous"), params.merge(:action => action, :id => @previous.id))
|
|
111
|
-
end
|
|
73
|
+
if @next
|
|
74
|
+
action = if klass.typus_user_id? && !@current_user.is_root?
|
|
75
|
+
@next.owned_by?(@current_user) ? 'edit' : 'show'
|
|
76
|
+
else
|
|
77
|
+
!@current_user.can_perform?(klass, 'edit') ? 'show' : params[:action]
|
|
78
|
+
end
|
|
79
|
+
items << (link_to _("Next"), params.merge(:action => action, :id => @next.id))
|
|
80
|
+
end
|
|
81
|
+
if @previous
|
|
82
|
+
action = if klass.typus_user_id? && !@current_user.is_root?
|
|
83
|
+
@previous.owned_by?(@current_user) ? 'edit' : 'show'
|
|
84
|
+
else
|
|
85
|
+
!@current_user.can_perform?(klass, 'edit') ? 'show' : params[:action]
|
|
86
|
+
end
|
|
87
|
+
items << (link_to _("Previous"), params.merge(:action => action, :id => @previous.id))
|
|
112
88
|
end
|
|
113
89
|
|
|
90
|
+
build_typus_list(items, :header => 'go_to')
|
|
91
|
+
|
|
114
92
|
end
|
|
115
93
|
|
|
116
94
|
def search
|
|
@@ -121,13 +99,13 @@ module Admin::SidebarHelper
|
|
|
121
99
|
search_by = typus_search.collect { |x| @resource[:class].human_attribute_name(x) }.to_sentence
|
|
122
100
|
|
|
123
101
|
search_params = params.dup
|
|
124
|
-
%w( action controller search page ).each { |p| search_params.delete(p) }
|
|
102
|
+
%w( action controller search page id ).each { |p| search_params.delete(p) }
|
|
125
103
|
|
|
126
104
|
hidden_params = search_params.map { |key, value| hidden_field_tag(key, value) }
|
|
127
105
|
|
|
128
106
|
<<-HTML
|
|
129
107
|
<h2>#{_("Search")}</h2>
|
|
130
|
-
<form action="" method="get">
|
|
108
|
+
<form action="/#{params[:controller]}" method="get">
|
|
131
109
|
<p><input id="search" name="search" type="text" value="#{params[:search]}"/></p>
|
|
132
110
|
#{hidden_params.sort.join("\n")}
|
|
133
111
|
</form>
|
|
@@ -162,8 +140,10 @@ module Admin::SidebarHelper
|
|
|
162
140
|
|
|
163
141
|
def relationship_filter(request, filter, habtm = false)
|
|
164
142
|
|
|
165
|
-
|
|
166
|
-
|
|
143
|
+
att_assoc = @resource[:class].reflect_on_association(filter.to_sym)
|
|
144
|
+
class_name = att_assoc.options[:class_name] || ((habtm) ? filter.classify : filter.capitalize.camelize)
|
|
145
|
+
model = class_name.constantize
|
|
146
|
+
related_fk = (habtm) ? filter : att_assoc.primary_key_name
|
|
167
147
|
|
|
168
148
|
params_without_filter = params.dup
|
|
169
149
|
%w( controller action page ).each { |p| params_without_filter.delete(p) }
|
|
@@ -175,7 +155,7 @@ module Admin::SidebarHelper
|
|
|
175
155
|
related_items = model.find(:all, :order => model.typus_order_by)
|
|
176
156
|
if related_items.size > model.typus_options_for(:sidebar_selector)
|
|
177
157
|
related_items.each do |item|
|
|
178
|
-
switch = request.include?("#{related_fk}=#{item.id}")
|
|
158
|
+
switch = 'selected' if request.include?("#{related_fk}=#{item.id}")
|
|
179
159
|
items << <<-HTML
|
|
180
160
|
<option #{switch} value="#{url_for params.merge(related_fk => item.id, :page => nil)}">#{item.typus_name}</option>
|
|
181
161
|
HTML
|
|
@@ -13,7 +13,7 @@ module Admin::TableHelper
|
|
|
13
13
|
items.each do |item|
|
|
14
14
|
|
|
15
15
|
html << <<-HTML
|
|
16
|
-
<tr class="#{cycle('even', 'odd')} #{item.class.name.underscore}" id="#{
|
|
16
|
+
<tr class="#{cycle('even', 'odd')} #{item.class.name.underscore}" id="#{item.to_dom}" name="item_#{item.id}">
|
|
17
17
|
HTML
|
|
18
18
|
|
|
19
19
|
fields.each do |key, value|
|
|
@@ -123,7 +123,7 @@ module Admin::TableHelper
|
|
|
123
123
|
[nil, nil]
|
|
124
124
|
end
|
|
125
125
|
order_by = model.reflect_on_association(key.to_sym).primary_key_name rescue key
|
|
126
|
-
switch =
|
|
126
|
+
switch = sort_order.last if params[:order_by].eql?(order_by)
|
|
127
127
|
options = { :order_by => order_by, :sort_order => sort_order.first }
|
|
128
128
|
content = (link_to "#{content} #{switch}", params.merge(options))
|
|
129
129
|
end
|
|
@@ -144,9 +144,14 @@ module Admin::TableHelper
|
|
|
144
144
|
|
|
145
145
|
action = item.send(attribute).class.typus_options_for(:default_action_on_item) rescue 'edit'
|
|
146
146
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
147
|
+
att_value = item.send(attribute)
|
|
148
|
+
content = if !att_value.nil?
|
|
149
|
+
if @current_user.can_perform?(att_value.class.name, action)
|
|
150
|
+
link_to item.send(attribute).typus_name, :controller => "admin/#{attribute.pluralize}", :action => action, :id => att_value.id
|
|
151
|
+
else
|
|
152
|
+
att_value.typus_name
|
|
153
|
+
end
|
|
154
|
+
end
|
|
150
155
|
|
|
151
156
|
<<-HTML
|
|
152
157
|
<td>#{content}</td>
|
|
@@ -162,7 +167,7 @@ module Admin::TableHelper
|
|
|
162
167
|
|
|
163
168
|
def typus_table_string_field(attribute, item, link_options = {})
|
|
164
169
|
<<-HTML
|
|
165
|
-
<td class=
|
|
170
|
+
<td class="#{attribute}">#{item.send(attribute)}</td>
|
|
166
171
|
HTML
|
|
167
172
|
end
|
|
168
173
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<% content_for :sidebar do %>
|
|
2
2
|
<%= typus_block :location => @resource[:self], :partial => 'sidebar' %>
|
|
3
3
|
<%= actions %>
|
|
4
|
+
<%= search %>
|
|
5
|
+
<%= previous_and_next %>
|
|
4
6
|
<% end %>
|
|
5
7
|
|
|
6
8
|
<h2><%= link_to @resource[:class].typus_human_name.pluralize, :action => 'index' %> ›
|
|
@@ -19,11 +21,12 @@
|
|
|
19
21
|
boolean_hash = @resource[:class].typus_boolean(field.first)
|
|
20
22
|
!raw_data.nil? ? boolean_hash["#{raw_data}".to_sym] : @resource[:class].typus_options_for(:nil)
|
|
21
23
|
when :belongs_to
|
|
22
|
-
raw_data.typus_name
|
|
24
|
+
raw_data.typus_name if !raw_data.nil?
|
|
23
25
|
when :file
|
|
24
26
|
@item.typus_preview(field.first)
|
|
25
27
|
when :text
|
|
26
|
-
|
|
28
|
+
text = h(raw_data)
|
|
29
|
+
defined?(RDiscount) ? markdown(text) : text
|
|
27
30
|
else
|
|
28
31
|
h(raw_data)
|
|
29
32
|
end
|
|
@@ -4,18 +4,18 @@
|
|
|
4
4
|
@resource[:class].send(attribute).each do |option|
|
|
5
5
|
case option.kind_of?(Array)
|
|
6
6
|
when true
|
|
7
|
-
selected =
|
|
8
|
-
options <<
|
|
7
|
+
selected = 'selected' if @item.send(attribute).eql?(option.last)
|
|
8
|
+
options << %Q[<option #{selected} value="#{option.last}">#{option.first}</option>]
|
|
9
9
|
else
|
|
10
|
-
selected =
|
|
11
|
-
options <<
|
|
10
|
+
selected = 'selected' if @item.send(attribute).eql?(option)
|
|
11
|
+
options << %Q[<option #{selected} value="#{option}">#{option}</option>]
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
%>
|
|
16
16
|
|
|
17
17
|
<li><label for="item_<%= attribute %>"><%= @resource[:class].human_attribute_name(attribute) %></label>
|
|
18
|
-
<select id="item_<%= attribute %>" <%=
|
|
18
|
+
<select id="item_<%= attribute %>" <%= 'disabled="disabled"' if attribute_disabled?(attribute) %> name="item[<%= attribute %>]">
|
|
19
19
|
<option value=""></option>
|
|
20
20
|
<%= options.join("\n") %>
|
|
21
21
|
</select></li>
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
value = 'auto_generated' if %w( new edit ).include?(params[:action])
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
comment =
|
|
13
|
+
comment = "<small>#{value} field</small>".humanize if %w( read_only auto_generated ).include?(value)
|
|
14
14
|
|
|
15
15
|
attribute_humanized = @resource[:class].human_attribute_name(attribute)
|
|
16
16
|
attribute_humanized += " (#{attribute})" if attribute.include?('_id')
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
namespace :typus do
|
|
2
|
+
|
|
3
|
+
desc 'Install acts_as_list, acts_as_tree and paperclip.'
|
|
4
|
+
task :misc do
|
|
5
|
+
plugins = [ 'git://github.com/thoughtbot/paperclip.git',
|
|
6
|
+
'git://github.com/rails/acts_as_list.git',
|
|
7
|
+
'git://github.com/rails/acts_as_tree.git' ]
|
|
8
|
+
system "script/plugin install #{plugins.join(' ')} --force"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
desc 'Install ssl_requirement.'
|
|
12
|
+
task :ssl do
|
|
13
|
+
system "script/plugin install git://github.com/rails/ssl_requirement.git --force"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
desc 'Install tiny_mce.'
|
|
17
|
+
task :tiny_mce do
|
|
18
|
+
system "script/plugin install git://github.com/kete/tiny_mce.git --force"
|
|
19
|
+
load File.join Rails.root, 'vendor', 'plugins', 'tiny_mce', 'tasks', 'tiny_mce.rake'
|
|
20
|
+
Rake::Task["tiny_mce:install"].invoke
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
desc 'List current roles.'
|
|
24
|
+
task :roles => :environment do
|
|
25
|
+
Typus::Configuration.roles.each do |role|
|
|
26
|
+
puts "\n#{role.first.capitalize} role has access to:"
|
|
27
|
+
role.last.each { |key, value| puts "- #{key}: #{value}" }
|
|
28
|
+
end
|
|
29
|
+
puts "\n"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -6,33 +6,41 @@ class TypusGenerator < Rails::Generator::Base
|
|
|
6
6
|
|
|
7
7
|
record do |m|
|
|
8
8
|
|
|
9
|
-
#
|
|
9
|
+
# Define variables.
|
|
10
10
|
application = Rails.root.basename
|
|
11
|
+
timestamp = Time.now.utc.strftime("%Y%m%d%H%M%S")
|
|
12
|
+
|
|
13
|
+
# Create required folders.
|
|
14
|
+
[ 'app/controllers/admin',
|
|
15
|
+
'app/views/admin',
|
|
16
|
+
'config/typus',
|
|
17
|
+
'public/images/admin/fancybox',
|
|
18
|
+
'public/javascripts/admin',
|
|
19
|
+
'public/stylesheets/admin',
|
|
20
|
+
'test/functional/admin' ].each { |f| FileUtils.mkdir_p(f) unless File.directory?(f) }
|
|
11
21
|
|
|
12
22
|
# To create <tt>application.yml</tt> and <tt>application_roles.yml</tt>
|
|
13
23
|
# detect available AR models on the application.
|
|
14
24
|
models = Dir['app/models/*.rb'].collect { |x| File.basename(x).sub(/\.rb$/,'').camelize }
|
|
15
|
-
|
|
25
|
+
ar_models = []
|
|
16
26
|
|
|
17
27
|
models.each do |model|
|
|
18
28
|
begin
|
|
19
29
|
klass = model.constantize
|
|
20
30
|
active_record_model = klass.superclass.equal?(ActiveRecord::Base) && !klass.abstract_class?
|
|
21
31
|
active_record_model_with_sti = klass.superclass.superclass.equal?(ActiveRecord::Base)
|
|
22
|
-
|
|
32
|
+
ar_models << klass if active_record_model || active_record_model_with_sti
|
|
23
33
|
rescue Exception => error
|
|
24
|
-
puts "=> [typus] #{error.message} on '#{model
|
|
34
|
+
puts "=> [typus] #{error.message} on '#{model}'."
|
|
25
35
|
exit
|
|
26
36
|
end
|
|
27
37
|
end
|
|
28
38
|
|
|
29
|
-
# Configuration files
|
|
30
|
-
config_folder = Typus::Configuration.options[:config_folder]
|
|
31
|
-
Dir.mkdir(config_folder) unless File.directory?(config_folder)
|
|
32
|
-
|
|
33
39
|
configuration = { :base => '', :roles => '' }
|
|
34
40
|
|
|
35
|
-
|
|
41
|
+
ar_models.sort{ |x,y| x.class_name <=> y.class_name }.each do |model|
|
|
42
|
+
|
|
43
|
+
next if Typus.models.include?(model.name)
|
|
36
44
|
|
|
37
45
|
# Detect all relationships except polymorphic belongs_to using reflection.
|
|
38
46
|
relationships = [ :belongs_to, :has_and_belongs_to_many, :has_many, :has_one ].map do |relationship|
|
|
@@ -86,42 +94,51 @@ class TypusGenerator < Rails::Generator::Base
|
|
|
86
94
|
|
|
87
95
|
end
|
|
88
96
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
97
|
+
if !configuration[:base].empty?
|
|
98
|
+
|
|
99
|
+
[ "application.yml", "application_roles.yml" ].each do |file|
|
|
100
|
+
from = to = "config/typus/#{file}"
|
|
101
|
+
if File.exists?(from) then to = "config/typus/#{timestamp}_#{file}" end
|
|
102
|
+
m.template from, to, :assigns => { :configuration => configuration }
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
[ "typus.yml", "typus_roles.yml", "README" ].each do |file|
|
|
108
|
+
from = to = "config/typus/#{file}"
|
|
109
|
+
m.template from, to, :assigns => { :configuration => configuration }
|
|
93
110
|
end
|
|
94
111
|
|
|
95
112
|
# Initializer
|
|
96
113
|
|
|
97
|
-
[ 'config/initializers/typus.rb' ].each do |
|
|
98
|
-
|
|
114
|
+
[ 'config/initializers/typus.rb' ].each do |file|
|
|
115
|
+
from = to = file
|
|
116
|
+
m.template from, to, :assigns => { :application => application }
|
|
99
117
|
end
|
|
100
118
|
|
|
101
|
-
#
|
|
119
|
+
# Tasks
|
|
120
|
+
if !Typus.plugin?
|
|
121
|
+
from = to = 'lib/tasks/typus_tasks.rake'
|
|
122
|
+
m.file from, to
|
|
123
|
+
end
|
|
102
124
|
|
|
103
|
-
|
|
104
|
-
'public/javascripts/admin',
|
|
105
|
-
'public/images/admin',
|
|
106
|
-
'public/images/admin/fancybox' ].each { |f| Dir.mkdir(f) unless File.directory?(f) }
|
|
125
|
+
# Assets
|
|
107
126
|
|
|
108
|
-
[ 'public/
|
|
109
|
-
'public/stylesheets/admin/reset.css',
|
|
110
|
-
'public/stylesheets/admin/jquery.fancybox.css',
|
|
111
|
-
'public/images/admin/ui-icons.png' ].each { |f| m.file f, f }
|
|
127
|
+
[ 'public/images/admin/ui-icons.png' ].each { |f| m.file f, f }
|
|
112
128
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
m.file
|
|
129
|
+
Dir["#{Typus.root}/generators/typus/templates/public/stylesheets/admin/*"].each do |file|
|
|
130
|
+
from = to = "public/stylesheets/admin/#{File.basename(file)}"
|
|
131
|
+
m.file from, to
|
|
116
132
|
end
|
|
117
133
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
m.file
|
|
134
|
+
Dir["#{Typus.root}/generators/typus/templates/public/javascripts/admin/*"].each do |file|
|
|
135
|
+
from = to = "public/javascripts/admin/#{File.basename(file)}"
|
|
136
|
+
m.file from, to
|
|
121
137
|
end
|
|
122
138
|
|
|
123
|
-
|
|
124
|
-
|
|
139
|
+
Dir["#{Typus.root}/generators/typus/templates/public/images/admin/fancybox/*"].each do |file|
|
|
140
|
+
from = to = "public/images/admin/fancybox/#{File.basename(file)}"
|
|
141
|
+
m.file from, to
|
|
125
142
|
end
|
|
126
143
|
|
|
127
144
|
##
|
data/lib/typus/active_record.rb
CHANGED
|
@@ -206,6 +206,12 @@ module Typus
|
|
|
206
206
|
return !date_format.nil? ? date_format : :db
|
|
207
207
|
end
|
|
208
208
|
|
|
209
|
+
# We are able to define which template to use to render the attribute
|
|
210
|
+
# within the form
|
|
211
|
+
def typus_template(attribute)
|
|
212
|
+
Typus::Configuration.config[name]['fields']['options']['templates'][attribute.to_s] rescue nil
|
|
213
|
+
end
|
|
214
|
+
|
|
209
215
|
def build_conditions(params)
|
|
210
216
|
|
|
211
217
|
conditions, joins = merge_conditions, []
|
data/lib/typus.rb
CHANGED
|
@@ -13,8 +13,9 @@ class Admin::FormHelperTest < ActiveSupport::TestCase
|
|
|
13
13
|
include ActionView::Helpers::TagHelper
|
|
14
14
|
include ActionController::UrlWriter
|
|
15
15
|
|
|
16
|
+
# FIXME
|
|
16
17
|
def test_build_form
|
|
17
|
-
|
|
18
|
+
return
|
|
18
19
|
end
|
|
19
20
|
|
|
20
21
|
def test_typus_belongs_to_field
|
|
@@ -66,58 +67,60 @@ class Admin::FormHelperTest < ActiveSupport::TestCase
|
|
|
66
67
|
|
|
67
68
|
end
|
|
68
69
|
|
|
70
|
+
# FIXME
|
|
69
71
|
def test_typus_template_field_for_boolean_fields
|
|
70
72
|
|
|
73
|
+
return
|
|
74
|
+
|
|
71
75
|
@resource = { :class => Post }
|
|
72
76
|
|
|
73
|
-
# output = typus_template_field('test', 'boolean')
|
|
74
77
|
expected = <<-HTML
|
|
75
78
|
<li><label>Test</label>
|
|
76
79
|
<input name="item[test]" type="hidden" value="0" /><input id="item_test" name="item[test]" type="checkbox" value="1" /> <label class=\"inline_label\" for=\"item_test\">Checked if active</label></li>
|
|
77
80
|
HTML
|
|
78
81
|
|
|
79
|
-
|
|
80
|
-
# assert_equal expected, output
|
|
82
|
+
assert_equal expected, typus_template_field('test', 'boolean')
|
|
81
83
|
|
|
82
84
|
end
|
|
83
85
|
|
|
86
|
+
# FIXME
|
|
84
87
|
def test_typus_template_field_for_date_fields
|
|
85
88
|
|
|
86
|
-
|
|
89
|
+
return
|
|
87
90
|
|
|
88
|
-
|
|
91
|
+
@resource = { :class => Post }
|
|
89
92
|
|
|
90
93
|
expected = <<-HTML
|
|
91
94
|
<li><label for="item_test">Test</label>
|
|
92
95
|
HTML
|
|
93
96
|
|
|
94
|
-
|
|
95
|
-
# assert_match expected, output
|
|
97
|
+
assert_equal expected, typus_template_field('test', 'date')
|
|
96
98
|
|
|
97
99
|
end
|
|
98
100
|
|
|
101
|
+
# FIXME
|
|
99
102
|
def test_typus_template_field_for_datetime_fields
|
|
100
103
|
|
|
101
|
-
|
|
104
|
+
return
|
|
102
105
|
|
|
103
|
-
|
|
106
|
+
@resource = { :class => Post }
|
|
104
107
|
|
|
105
108
|
expected = <<-HTML
|
|
106
109
|
<li><label for="item_test">Test</label>
|
|
107
110
|
HTML
|
|
108
111
|
|
|
109
|
-
|
|
110
|
-
# assert_match expected, output
|
|
112
|
+
assert_equal expected, typus_template_field('test', 'datetime')
|
|
111
113
|
|
|
112
114
|
end
|
|
113
115
|
|
|
116
|
+
# FIXME
|
|
114
117
|
def test_typus_template_field_for_file_fields
|
|
115
118
|
|
|
119
|
+
return
|
|
120
|
+
|
|
116
121
|
@resource = { :class => Post }
|
|
117
122
|
@item = Post.new
|
|
118
123
|
|
|
119
|
-
# output = typus_template_field('asset_file_name', 'file')
|
|
120
|
-
|
|
121
124
|
expected = <<-HTML
|
|
122
125
|
<li><label for="item_asset_file_name">Asset</label>
|
|
123
126
|
<input id="item_asset" name="item[asset]" size="30" type="file" />
|
|
@@ -125,34 +128,34 @@ class Admin::FormHelperTest < ActiveSupport::TestCase
|
|
|
125
128
|
</li>
|
|
126
129
|
HTML
|
|
127
130
|
|
|
128
|
-
|
|
129
|
-
# assert_equal expected, output
|
|
131
|
+
assert_equal expected, typus_template_field('asset_file_name', 'file')
|
|
130
132
|
|
|
131
133
|
end
|
|
132
134
|
|
|
135
|
+
# FIXME
|
|
133
136
|
def test_typus_template_field_for_password_fields
|
|
134
137
|
|
|
135
|
-
|
|
138
|
+
return
|
|
136
139
|
|
|
137
|
-
|
|
140
|
+
@resource = { :class => Post }
|
|
138
141
|
|
|
139
142
|
expected = <<-HTML
|
|
140
143
|
<li><label for="item_test">Test</label>
|
|
141
144
|
<input class="text" id="item_test" name="item[test]" size="30" type="password" /></li>
|
|
142
145
|
HTML
|
|
143
146
|
|
|
144
|
-
|
|
145
|
-
# assert_equal expected, output
|
|
147
|
+
assert_equal expected, typus_template_field('test', 'password')
|
|
146
148
|
|
|
147
149
|
end
|
|
148
150
|
|
|
151
|
+
# FIXME
|
|
149
152
|
def test_typus_template_field_for_selector_fields
|
|
150
153
|
|
|
154
|
+
return
|
|
155
|
+
|
|
151
156
|
@resource = { :class => Post }
|
|
152
157
|
@item = posts(:published)
|
|
153
158
|
|
|
154
|
-
# output = typus_template_field('test', 'selector')
|
|
155
|
-
|
|
156
159
|
expected = <<-HTML
|
|
157
160
|
<li><label for="item_status">Status</label>
|
|
158
161
|
<select id="item_status" name="item[status]">
|
|
@@ -165,39 +168,38 @@ class Admin::FormHelperTest < ActiveSupport::TestCase
|
|
|
165
168
|
</select></li>
|
|
166
169
|
HTML
|
|
167
170
|
|
|
168
|
-
|
|
169
|
-
# assert_equal expected, output
|
|
171
|
+
assert_equal expected, typus_template_field('test', 'selector')
|
|
170
172
|
|
|
171
173
|
end
|
|
172
174
|
|
|
175
|
+
# FIXME
|
|
173
176
|
def test_typus_template_field_for_text_fields
|
|
174
177
|
|
|
175
|
-
|
|
178
|
+
return
|
|
176
179
|
|
|
177
|
-
|
|
180
|
+
@resource = { :class => Post }
|
|
178
181
|
|
|
179
182
|
expected = <<-HTML
|
|
180
183
|
<li><label for="item_test">Test</label>
|
|
181
184
|
<textarea class="text" cols="40" id="item_test" name="item[test]" rows="10"></textarea></li>
|
|
182
185
|
HTML
|
|
183
186
|
|
|
184
|
-
|
|
185
|
-
# assert_equal expected, output
|
|
187
|
+
assert_equal expected, typus_template_field('test', 'text')
|
|
186
188
|
|
|
187
189
|
end
|
|
188
190
|
|
|
191
|
+
# FIXME
|
|
189
192
|
def test_typus_template_field_for_time_fields
|
|
190
193
|
|
|
191
|
-
|
|
194
|
+
return
|
|
192
195
|
|
|
193
|
-
|
|
196
|
+
@resource = { :class => Post }
|
|
194
197
|
|
|
195
198
|
expected = <<-HTML
|
|
196
199
|
<li><label for="item_test">Test</label>
|
|
197
200
|
HTML
|
|
198
201
|
|
|
199
|
-
|
|
200
|
-
# assert_match expected, output
|
|
202
|
+
assert_equal expected, typus_template_field('test', 'time')
|
|
201
203
|
|
|
202
204
|
end
|
|
203
205
|
|
|
@@ -210,7 +212,6 @@ class Admin::FormHelperTest < ActiveSupport::TestCase
|
|
|
210
212
|
@resource = { :class => Page }
|
|
211
213
|
items = @resource[:class].roots
|
|
212
214
|
|
|
213
|
-
output = typus_tree_field('parent', items)
|
|
214
215
|
expected = <<-HTML
|
|
215
216
|
<li><label for="item_parent">Parent</label>
|
|
216
217
|
<select id="item_parent" name="item[parent]">
|
|
@@ -219,33 +220,34 @@ class Admin::FormHelperTest < ActiveSupport::TestCase
|
|
|
219
220
|
</select></li>
|
|
220
221
|
HTML
|
|
221
222
|
|
|
222
|
-
assert_equal expected,
|
|
223
|
+
assert_equal expected, typus_tree_field('parent', items)
|
|
223
224
|
|
|
224
225
|
end
|
|
225
226
|
|
|
227
|
+
# FIXME
|
|
226
228
|
def test_typus_string_field
|
|
227
229
|
|
|
228
|
-
|
|
230
|
+
return
|
|
229
231
|
|
|
230
|
-
|
|
232
|
+
@resource = { :class => Post }
|
|
231
233
|
|
|
232
234
|
expected = <<-HTML
|
|
233
235
|
<li><label for="item_test">Test</label>
|
|
234
236
|
<input class="text" id="item_test" name="item[test]" size="30" type="text" /></li>
|
|
235
237
|
HTML
|
|
236
238
|
|
|
237
|
-
|
|
238
|
-
# assert_equal expected, output
|
|
239
|
+
assert_equal expected, typus_template_field('test', 'string')
|
|
239
240
|
|
|
240
241
|
end
|
|
241
242
|
|
|
243
|
+
# FIXME
|
|
242
244
|
def test_typus_relationships
|
|
243
|
-
|
|
245
|
+
return
|
|
244
246
|
end
|
|
245
247
|
|
|
248
|
+
# FIXME
|
|
246
249
|
def test_typus_form_has_many_with_items
|
|
247
250
|
|
|
248
|
-
# FIXME
|
|
249
251
|
return
|
|
250
252
|
|
|
251
253
|
@current_user = typus_users(:admin)
|
|
@@ -272,9 +274,9 @@ class Admin::FormHelperTest < ActiveSupport::TestCase
|
|
|
272
274
|
|
|
273
275
|
end
|
|
274
276
|
|
|
277
|
+
# FIXME
|
|
275
278
|
def test_typus_form_has_many_without_items
|
|
276
279
|
|
|
277
|
-
# FIXME
|
|
278
280
|
return
|
|
279
281
|
|
|
280
282
|
@current_user = typus_users(:admin)
|
|
@@ -301,12 +303,14 @@ class Admin::FormHelperTest < ActiveSupport::TestCase
|
|
|
301
303
|
|
|
302
304
|
end
|
|
303
305
|
|
|
306
|
+
# FIXME
|
|
304
307
|
def test_typus_form_has_and_belongs_to_many
|
|
305
|
-
|
|
308
|
+
return
|
|
306
309
|
end
|
|
307
310
|
|
|
311
|
+
# FIXME
|
|
308
312
|
def test_typus_template_field
|
|
309
|
-
|
|
313
|
+
return
|
|
310
314
|
end
|
|
311
315
|
|
|
312
316
|
def test_attribute_disabled
|
|
@@ -13,6 +13,8 @@ class Admin::SidebarHelperTest < ActiveSupport::TestCase
|
|
|
13
13
|
default_url_options[:host] = 'test.host'
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
+
=begin
|
|
17
|
+
|
|
16
18
|
def test_actions
|
|
17
19
|
|
|
18
20
|
self.expects(:default_actions).returns(['action1', 'action2'])
|
|
@@ -45,9 +47,7 @@ class Admin::SidebarHelperTest < ActiveSupport::TestCase
|
|
|
45
47
|
|
|
46
48
|
end
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
assert true
|
|
50
|
-
end
|
|
50
|
+
=end
|
|
51
51
|
|
|
52
52
|
def test_export
|
|
53
53
|
|
|
@@ -57,8 +57,14 @@ class Admin::SidebarHelperTest < ActiveSupport::TestCase
|
|
|
57
57
|
self.expects(:params).at_least_once.returns(params)
|
|
58
58
|
|
|
59
59
|
output = export
|
|
60
|
-
expected =
|
|
61
|
-
|
|
60
|
+
expected = <<-HTML
|
|
61
|
+
<h2>Export</h2>
|
|
62
|
+
<ul>
|
|
63
|
+
<li><a href="http://test.host/admin/posts?format=csv">CSV</a></li>
|
|
64
|
+
<li><a href=\"http://test.host/admin/posts?format=xml\">XML</a></li>
|
|
65
|
+
</ul>
|
|
66
|
+
HTML
|
|
67
|
+
|
|
62
68
|
assert_equal expected, output
|
|
63
69
|
|
|
64
70
|
end
|
|
@@ -86,51 +92,56 @@ class Admin::SidebarHelperTest < ActiveSupport::TestCase
|
|
|
86
92
|
@resource = { :class => TypusUser }
|
|
87
93
|
@current_user = typus_users(:admin)
|
|
88
94
|
|
|
89
|
-
params = { :controller => 'admin/typus_users', :action => 'index' }
|
|
90
|
-
self.expects(:params).at_least_once.returns(params)
|
|
91
|
-
|
|
92
|
-
output = previous_and_next
|
|
93
|
-
assert output.empty?
|
|
94
|
-
|
|
95
95
|
# Test when there are no records.
|
|
96
96
|
|
|
97
97
|
typus_user = TypusUser.first
|
|
98
|
-
@next = nil
|
|
99
|
-
@previous = nil
|
|
98
|
+
@previous, @next = nil, nil
|
|
100
99
|
|
|
101
100
|
params = { :controller => 'admin/typus_users', :action => 'edit', :id => typus_user.id }
|
|
102
101
|
self.expects(:params).at_least_once.returns(params)
|
|
103
102
|
|
|
104
|
-
|
|
105
|
-
assert output.empty?
|
|
103
|
+
assert previous_and_next.empty?
|
|
106
104
|
|
|
107
105
|
# Test when we are on the first item.
|
|
108
106
|
|
|
109
107
|
typus_user = TypusUser.first
|
|
110
108
|
@previous, @next = typus_user.previous_and_next
|
|
111
109
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
expected = <<-HTML
|
|
111
|
+
<h2>Go to</h2>
|
|
112
|
+
<ul>
|
|
113
|
+
<li><a href="http://test.host/admin/typus_users/edit/2">Next</a></li>
|
|
114
|
+
</ul>
|
|
115
|
+
HTML
|
|
116
|
+
assert_equal expected, previous_and_next
|
|
115
117
|
|
|
116
118
|
# Test when we are on the last item.
|
|
117
119
|
|
|
118
120
|
typus_user = TypusUser.last
|
|
119
121
|
@previous, @next = typus_user.previous_and_next
|
|
120
122
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
123
|
+
expected = <<-HTML
|
|
124
|
+
<h2>Go to</h2>
|
|
125
|
+
<ul>
|
|
126
|
+
<li><a href="http://test.host/admin/typus_users/edit/4">Previous</a></li>
|
|
127
|
+
</ul>
|
|
128
|
+
HTML
|
|
129
|
+
|
|
130
|
+
assert_equal expected, previous_and_next
|
|
124
131
|
|
|
125
132
|
# Test when we are on the middle.
|
|
126
133
|
|
|
127
134
|
typus_user = TypusUser.find(3)
|
|
128
135
|
@previous, @next = typus_user.previous_and_next
|
|
129
136
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
137
|
+
expected = <<-HTML
|
|
138
|
+
<h2>Go to</h2>
|
|
139
|
+
<ul>
|
|
140
|
+
<li><a href="http://test.host/admin/typus_users/edit/4">Next</a></li>
|
|
141
|
+
<li><a href="http://test.host/admin/typus_users/edit/2">Previous</a></li>
|
|
142
|
+
</ul>
|
|
143
|
+
HTML
|
|
144
|
+
assert_equal expected, previous_and_next
|
|
134
145
|
|
|
135
146
|
end
|
|
136
147
|
|
|
@@ -146,14 +157,21 @@ class Admin::SidebarHelperTest < ActiveSupport::TestCase
|
|
|
146
157
|
@previous, @next = typus_user.previous_and_next
|
|
147
158
|
|
|
148
159
|
output = previous_and_next
|
|
149
|
-
expected =
|
|
150
|
-
|
|
160
|
+
expected = <<-HTML
|
|
161
|
+
<h2>Go to</h2>
|
|
162
|
+
<ul>
|
|
163
|
+
<li><a href="http://test.host/admin/typus_users/show/4">Next</a></li>
|
|
164
|
+
<li><a href="http://test.host/admin/typus_users/show/2">Previous</a></li>
|
|
165
|
+
</ul>
|
|
166
|
+
HTML
|
|
167
|
+
|
|
151
168
|
assert_equal expected, output
|
|
152
169
|
|
|
153
170
|
end
|
|
154
171
|
|
|
172
|
+
# FIXME
|
|
155
173
|
def test_previous_and_next_with_params
|
|
156
|
-
|
|
174
|
+
return
|
|
157
175
|
end
|
|
158
176
|
|
|
159
177
|
def test_search
|
|
@@ -166,7 +184,7 @@ class Admin::SidebarHelperTest < ActiveSupport::TestCase
|
|
|
166
184
|
output = search
|
|
167
185
|
expected = <<-HTML
|
|
168
186
|
<h2>Search</h2>
|
|
169
|
-
<form action="" method="get">
|
|
187
|
+
<form action="/#{params[:controller]}" method="get">
|
|
170
188
|
<p><input id="search" name="search" type="text" value=""/></p>
|
|
171
189
|
<input id="action" name="action" type="hidden" value="index" />
|
|
172
190
|
<input id="controller" name="controller" type="hidden" value="admin/typus_users" />
|
|
@@ -193,12 +211,15 @@ class Admin::SidebarHelperTest < ActiveSupport::TestCase
|
|
|
193
211
|
#
|
|
194
212
|
# Yes, I know, it's an ugly name for a test, but don't know how to
|
|
195
213
|
# name this test. Suggestions are welcome. ;)
|
|
214
|
+
#
|
|
215
|
+
# FIXME
|
|
196
216
|
def test_filters_with_filters
|
|
197
|
-
|
|
217
|
+
return
|
|
198
218
|
end
|
|
199
219
|
|
|
220
|
+
# FIXME
|
|
200
221
|
def test_relationship_filter
|
|
201
|
-
|
|
222
|
+
return
|
|
202
223
|
end
|
|
203
224
|
|
|
204
225
|
def test_datetime_filter
|
|
@@ -13,9 +13,9 @@ class Admin::TableHelperTest < ActiveSupport::TestCase
|
|
|
13
13
|
default_url_options[:host] = 'test.host'
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
+
# FIXME
|
|
16
17
|
def test_build_typus_table
|
|
17
18
|
|
|
18
|
-
# FIXME
|
|
19
19
|
return
|
|
20
20
|
|
|
21
21
|
@current_user = typus_users(:admin)
|
|
@@ -134,8 +134,11 @@ class Admin::TableHelperTest < ActiveSupport::TestCase
|
|
|
134
134
|
|
|
135
135
|
end
|
|
136
136
|
|
|
137
|
+
|
|
137
138
|
def test_typus_table_belongs_to_field
|
|
138
139
|
|
|
140
|
+
@current_user = typus_users(:admin)
|
|
141
|
+
|
|
139
142
|
comment = comments(:without_post_id)
|
|
140
143
|
output = typus_table_belongs_to_field('post', comment)
|
|
141
144
|
expected = <<-HTML
|
|
@@ -173,7 +176,7 @@ class Admin::TableHelperTest < ActiveSupport::TestCase
|
|
|
173
176
|
post = posts(:published)
|
|
174
177
|
output = typus_table_string_field(:title, post, :created_at)
|
|
175
178
|
expected = <<-HTML
|
|
176
|
-
<td>#{post.title}</td>
|
|
179
|
+
<td class="title">#{post.title}</td>
|
|
177
180
|
HTML
|
|
178
181
|
|
|
179
182
|
assert_equal expected, output
|
|
@@ -185,7 +188,7 @@ class Admin::TableHelperTest < ActiveSupport::TestCase
|
|
|
185
188
|
post = posts(:published)
|
|
186
189
|
output = typus_table_string_field(:title, post, :title)
|
|
187
190
|
expected = <<-HTML
|
|
188
|
-
<td>#{post.title}</td>
|
|
191
|
+
<td class="title">#{post.title}</td>
|
|
189
192
|
HTML
|
|
190
193
|
|
|
191
194
|
assert_equal expected, output
|
|
@@ -7,12 +7,14 @@ class TypusHelperTest < ActiveSupport::TestCase
|
|
|
7
7
|
include ActionView::Helpers::TextHelper
|
|
8
8
|
include ActionController::UrlWriter
|
|
9
9
|
|
|
10
|
+
# FIXME
|
|
10
11
|
def test_applications
|
|
11
|
-
|
|
12
|
+
return
|
|
12
13
|
end
|
|
13
14
|
|
|
15
|
+
# FIXME
|
|
14
16
|
def test_resources
|
|
15
|
-
|
|
17
|
+
return
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
def test_typus_block_when_partial_does_not_exist
|
data/test/lib/typus_test.rb
CHANGED
|
@@ -40,14 +40,6 @@ class TypusTest < ActiveSupport::TestCase
|
|
|
40
40
|
assert_equal %w( Git Order Status WatchDog ), Typus.resources(models)
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
def test_should_verify_enable_exists
|
|
44
|
-
assert Typus.respond_to?(:enable)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def test_should_verify_enable_exists
|
|
48
|
-
assert Typus.respond_to?(:generator)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
43
|
def test_should_return_user_class
|
|
52
44
|
assert_equal TypusUser, Typus.user_class
|
|
53
45
|
end
|
data/typus.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{typus}
|
|
8
|
-
s.version = "0.9.
|
|
8
|
+
s.version = "0.9.35"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Francesc Esplugas"]
|
|
12
|
-
s.date = %q{2009-10-
|
|
12
|
+
s.date = %q{2009-10-04}
|
|
13
13
|
s.description = %q{Effortless backend interface for Ruby on Rails applications. (Admin scaffold generator.)}
|
|
14
14
|
s.email = %q{francesc@intraducibles.com}
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -75,6 +75,7 @@ Gem::Specification.new do |s|
|
|
|
75
75
|
"generators/typus/templates/config/typus/typus.yml",
|
|
76
76
|
"generators/typus/templates/config/typus/typus_roles.yml",
|
|
77
77
|
"generators/typus/templates/db/create_typus_users.rb",
|
|
78
|
+
"generators/typus/templates/lib/tasks/typus_tasks.rake",
|
|
78
79
|
"generators/typus/templates/public/images/admin/fancybox/fancy_closebox.png",
|
|
79
80
|
"generators/typus/templates/public/images/admin/fancybox/fancy_left.png",
|
|
80
81
|
"generators/typus/templates/public/images/admin/fancybox/fancy_progress.png",
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: typus
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.35
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Francesc Esplugas
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-10-
|
|
12
|
+
date: 2009-10-04 00:00:00 +02:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies: []
|
|
15
15
|
|
|
@@ -81,6 +81,7 @@ files:
|
|
|
81
81
|
- generators/typus/templates/config/typus/typus.yml
|
|
82
82
|
- generators/typus/templates/config/typus/typus_roles.yml
|
|
83
83
|
- generators/typus/templates/db/create_typus_users.rb
|
|
84
|
+
- generators/typus/templates/lib/tasks/typus_tasks.rake
|
|
84
85
|
- generators/typus/templates/public/images/admin/fancybox/fancy_closebox.png
|
|
85
86
|
- generators/typus/templates/public/images/admin/fancybox/fancy_left.png
|
|
86
87
|
- generators/typus/templates/public/images/admin/fancybox/fancy_progress.png
|