lolita 3.1.3 → 3.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +13 -1
- data/VERSION +1 -1
- data/app/views/components/lolita/configuration/column/_display.html.erb +4 -0
- data/app/views/components/lolita/configuration/column/_header.html.erb +7 -0
- data/app/views/components/lolita/configuration/column/_sort.html.erb +4 -0
- data/app/views/components/lolita/configuration/columns/_body.html.erb +5 -0
- data/app/views/components/lolita/configuration/columns/_display.html.erb +2 -0
- data/app/views/components/lolita/configuration/{list/_checkbox_cell.html.erb → columns/_first.html.erb} +0 -0
- data/app/views/components/lolita/configuration/{list/_checkbox_header.html.erb → columns/_first_column_header.html.erb} +0 -0
- data/app/views/components/lolita/configuration/columns/_header.html.erb +9 -0
- data/app/views/components/lolita/configuration/{list/_tool_cell.html.erb → columns/_last.html.erb} +0 -0
- data/app/views/components/lolita/configuration/{list/_tool_header.html.erb → columns/_last_column_header.html.erb} +0 -0
- data/app/views/components/lolita/configuration/columns/_row.html.erb +7 -0
- data/app/views/components/lolita/configuration/list/_display.html.erb +5 -6
- data/app/views/components/lolita/configuration/list/_paginator.html.erb +5 -3
- data/app/views/components/lolita/navigation/_tree.html.erb +4 -3
- data/lib/generators/lolita/assets_generator.rb +7 -0
- data/lib/generators/lolita/install_generator.rb +1 -1
- data/lib/lolita.rb +7 -0
- data/lib/lolita/base_configuration.rb +1 -0
- data/lib/lolita/configuration/column.rb +27 -48
- data/lib/lolita/configuration/columns.rb +1 -0
- data/lib/lolita/configuration/filter.rb +23 -1
- data/lib/lolita/configuration/page.rb +10 -0
- data/lib/lolita/controllers/component_helpers.rb +14 -6
- data/lib/lolita/controllers/url_helpers.rb +35 -2
- data/lib/lolita/mapping.rb +7 -3
- data/lib/lolita/navigation/branch.rb +5 -1
- data/lib/lolita/navigation/tree.rb +5 -1
- data/lib/lolita/observed_array.rb +2 -2
- data/lib/lolita/rails/routes.rb +10 -8
- data/lib/lolita/support/formatter/base.rb +64 -0
- data/lib/lolita/support/formatter/rails.rb +57 -0
- data/lolita.gemspec +21 -13
- data/public/stylesheets/lolita/style.css +15 -0
- data/spec/configuration/column_spec.rb +13 -1
- data/spec/configuration/filter_spec.rb +1 -0
- data/spec/controllers/component_helpers_spec.rb +6 -0
- data/spec/controllers/lolita_rest_spec.rb +1 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/formatter/base_spec.rb +42 -0
- metadata +20 -12
- data/app/views/components/lolita/configuration/list/_body.html.erb +0 -5
- data/app/views/components/lolita/configuration/list/_body_cell.html.erb +0 -3
- data/app/views/components/lolita/configuration/list/_header.html.erb +0 -9
- data/app/views/components/lolita/configuration/list/_header_cell.html.erb +0 -5
- data/app/views/components/lolita/configuration/list/_row.html.erb +0 -7
data/History.rdoc
CHANGED
@@ -1,4 +1,16 @@
|
|
1
|
-
=== Version 3.1.
|
1
|
+
=== Version 3.1.4 / 2011-04-19
|
2
|
+
* Enhancements
|
3
|
+
* #render_component improved, to support any class with build method as first argument (Arturs Meister)
|
4
|
+
* list components refactore; columns and column components created (Arturs Meisters)
|
5
|
+
* documentation for Filters (Gatis Tomsons)
|
6
|
+
* sorting configuration for columns (Arturs Meisters)
|
7
|
+
* lolita:assets generator invoke :assets for all added modules
|
8
|
+
|
9
|
+
* Bug fixes
|
10
|
+
* paginator updated, to use WillPaginate only when it is accessable (Arturs Meisters)
|
11
|
+
* resource cheching for tree (Arturs Meisters)
|
12
|
+
|
13
|
+
=== Version 3.1.3 / 2011-04-15
|
2
14
|
* Enhancements
|
3
15
|
* Lolita::Navigation::Tree and Lolita::Navigation::Branch added (Arturs Meisters)
|
4
16
|
* Main navigation tree generate from resources (Arturs Meisters)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.1.
|
1
|
+
3.1.4
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<% param_options=params.reject{|k,v| [:controller,:action].include?(k)} %>
|
2
|
+
<% options=param_options.merge(column.sort_options(params)) %>
|
3
|
+
<% direction_indicator=column.currently_sorting?(params) && options[:sd].to_s=="desc" ? raw('⇑') : raw('⇓') %>
|
4
|
+
<%= link_to raw("#{column.title} #{direction_indicator}"), lolita_resources_path(options) %>
|
File without changes
|
File without changes
|
data/app/views/components/lolita/configuration/{list/_tool_cell.html.erb → columns/_last.html.erb}
RENAMED
File without changes
|
File without changes
|
@@ -1,12 +1,11 @@
|
|
1
1
|
<div class="box">
|
2
|
-
<%= render_component
|
3
|
-
<%= render_component
|
4
|
-
<%= render_component
|
2
|
+
<%= render_component list, :title %>
|
3
|
+
<%= render_component list, :new_resource%>
|
4
|
+
<%= render_component list, :filter %>
|
5
5
|
<div class="list">
|
6
6
|
<table>
|
7
|
-
<%= render_component
|
8
|
-
<%= render_component :"lolita/configuration/list", :body, :page=>page,:columns=>list.columns %>
|
7
|
+
<%= render_component list.columns,:page=>page %>
|
9
8
|
</table>
|
10
9
|
</div>
|
11
|
-
<%= render_component
|
10
|
+
<%= render_component list,:paginator,:page=>page %>
|
12
11
|
</div>
|
@@ -1,4 +1,5 @@
|
|
1
|
-
<ul>
|
1
|
+
<ul <%=tree.parent ? "class='subtree'" : ""%> >
|
2
|
+
<% last_branch=tree.branches.last %>
|
2
3
|
<%tree.branches.each do |branch|
|
3
4
|
if branch.object.is_a?(Lolita::Mapping)
|
4
5
|
branch.options[:url]||=lolita_resources_path(branch.object)
|
@@ -6,7 +7,7 @@
|
|
6
7
|
else
|
7
8
|
|
8
9
|
branch.options[:url]=if branch.options[:url].respond_to?(:call)
|
9
|
-
|
10
|
+
branch.options[:url].call(self,branch)
|
10
11
|
else
|
11
12
|
branch.options[:url]
|
12
13
|
end
|
@@ -14,7 +15,7 @@
|
|
14
15
|
end
|
15
16
|
|
16
17
|
%>
|
17
|
-
<li <%=active ? "
|
18
|
+
<li class="<%=active ? "active" : ""%> <%=branch.children.branches.any? ? "with-subtree" : ""%> <%=branch==last_branch ? "last-in-subtree" : ""%>">
|
18
19
|
<%= link_to branch.title, branch.options[:url] %>
|
19
20
|
<% if branch.children.branches.any? %>
|
20
21
|
<%= render_component(:"lolita/navigation",:tree,:tree=>branch.children) %>
|
data/lib/lolita.rb
CHANGED
@@ -124,6 +124,13 @@ module Lolita
|
|
124
124
|
autoload :Branch, "lolita/navigation/branch"
|
125
125
|
end
|
126
126
|
|
127
|
+
module Support
|
128
|
+
module Formatter
|
129
|
+
autoload :Base, 'lolita/support/formatter/base'
|
130
|
+
autoload :Rails, 'lolita/support/formatter/rails'
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
127
134
|
@@scopes={}
|
128
135
|
|
129
136
|
def self.scope name=nil
|
@@ -134,6 +134,7 @@ module Lolita
|
|
134
134
|
# end
|
135
135
|
# end
|
136
136
|
def add_module module_container, options={}
|
137
|
+
raise ArgumentError, "Can't add module without module container!" unless module_container
|
137
138
|
options.assert_valid_keys(:controller,:route,:model,:path,:name,:nested)
|
138
139
|
name=options[:name]||module_container.to_s.to_sym
|
139
140
|
self.modules<<module_container
|
@@ -2,8 +2,10 @@ module Lolita
|
|
2
2
|
module Configuration
|
3
3
|
class Column
|
4
4
|
|
5
|
+
include Lolita::Builder
|
6
|
+
|
5
7
|
MAX_TEXT_SIZE=20
|
6
|
-
lolita_accessor :name,:title,:type,:options,:
|
8
|
+
lolita_accessor :name,:title,:type,:options,:sortable
|
7
9
|
|
8
10
|
def initialize(*args,&block)
|
9
11
|
self.set_attributes(*args)
|
@@ -11,49 +13,32 @@ module Lolita
|
|
11
13
|
validate
|
12
14
|
set_default_values
|
13
15
|
end
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
# name "UID"
|
18
|
-
# format do(values)
|
19
|
-
# values.first+values.last
|
20
|
-
# end
|
21
|
-
# end
|
22
|
-
# <%= column.with_format([@post.id,@post.user_id])%>
|
23
|
-
def with_format(value) #TODO test
|
24
|
-
if @format.respond_to?(:call)
|
25
|
-
@format.call(value)
|
26
|
-
elsif @format && (value.is_a?(Time) || value.is_a?(Date))
|
27
|
-
format_for_datetime(value)
|
28
|
-
else
|
29
|
-
format_from_type(value)
|
30
|
-
end
|
16
|
+
|
17
|
+
def sortable?
|
18
|
+
@sortable
|
31
19
|
end
|
32
20
|
|
33
|
-
def
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
if defined?(I18n)
|
41
|
-
I18n.localize(value, :format => :long)
|
42
|
-
else
|
43
|
-
value.to_s
|
44
|
-
end
|
45
|
-
elsif value.is_a?(Time)
|
46
|
-
if defined?(I18n)
|
47
|
-
I18n.localize(value, :format => :long)
|
48
|
-
else
|
49
|
-
value.to_s
|
50
|
-
end
|
51
|
-
else
|
52
|
-
value.to_s
|
53
|
-
end
|
21
|
+
def currently_sorting?(params)
|
22
|
+
@sortable && params[:sc].to_s==self.name.to_s
|
23
|
+
end
|
24
|
+
|
25
|
+
def sort_options(params)
|
26
|
+
direction=if params[:sc].to_s==self.name.to_s
|
27
|
+
params[:sd].to_s=="asc" ? "desc" : "asc"
|
54
28
|
else
|
55
|
-
""
|
29
|
+
"desc"
|
30
|
+
end
|
31
|
+
{:sc=>self.name,:sd=>direction}
|
32
|
+
end
|
33
|
+
|
34
|
+
# Define format, for details see Lolita::Support::Formatter::Base and Lolita::Support::Formater::Rails
|
35
|
+
def formatter(value=nil,&block)
|
36
|
+
if block_given?
|
37
|
+
@formatter=Lolita::Support::Formatter::Base.new(value,&block)
|
38
|
+
elsif value || !@formatter
|
39
|
+
@formatter=Lolita::Support::Formatter::Rails.new(value)
|
56
40
|
end
|
41
|
+
@formatter
|
57
42
|
end
|
58
43
|
|
59
44
|
def set_attributes(*args)
|
@@ -73,16 +58,10 @@ module Lolita
|
|
73
58
|
private
|
74
59
|
|
75
60
|
def set_default_values
|
61
|
+
@sortable||=true
|
62
|
+
@sort_direction||=:desc
|
76
63
|
@title||=@name.to_s.humanize
|
77
64
|
end
|
78
|
-
|
79
|
-
def format_for_datetime value
|
80
|
-
if defined?(I18n)
|
81
|
-
I18n.localize(value, :format => @format)
|
82
|
-
else
|
83
|
-
value.to_s
|
84
|
-
end
|
85
|
-
end
|
86
65
|
|
87
66
|
def validate
|
88
67
|
raise ArgumentError.new("Column must have name.") unless self.name
|
@@ -1,6 +1,29 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
module Lolita
|
3
3
|
module Configuration
|
4
|
+
# Lolita::Configuration::Filter is for filtering data in list view.
|
5
|
+
# By now it supports these field types:
|
6
|
+
# - Array
|
7
|
+
# - Boolean
|
8
|
+
#
|
9
|
+
# To use it, call "filter" method in list block, filter method accepts field names
|
10
|
+
# as arguments. You can pass block and configure each field. Field configuration is just like in tab configuration.
|
11
|
+
#
|
12
|
+
# === Examples
|
13
|
+
#
|
14
|
+
# # this will build country select field and is_deleted checkbox
|
15
|
+
# list do
|
16
|
+
# filter :country, :is_deleted
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# # For example you have text field "status" with values opened,closed,rejected
|
20
|
+
# list do
|
21
|
+
# filter do
|
22
|
+
# field :status, :array, :options_for_select => %w(open closed rejected)
|
23
|
+
# field :is_deleted, :title => "Deleted"
|
24
|
+
# end
|
25
|
+
# end
|
26
|
+
#
|
4
27
|
class Filter
|
5
28
|
include Lolita::Builder
|
6
29
|
attr_reader :dbi
|
@@ -61,7 +84,6 @@ module Lolita
|
|
61
84
|
end
|
62
85
|
|
63
86
|
def field_name field
|
64
|
-
#'f_'+('a'..'z').to_a[self.fields.index(field)]
|
65
87
|
"f_#{field.name}"
|
66
88
|
end
|
67
89
|
|
@@ -109,7 +109,17 @@ module Lolita
|
|
109
109
|
self.send(meth,options.delete(meth))
|
110
110
|
end
|
111
111
|
}
|
112
|
+
parse_params
|
112
113
|
end
|
114
|
+
|
115
|
+
def parse_params
|
116
|
+
if @params
|
117
|
+
if @params.has_key?(:sc)
|
118
|
+
self.send((@params[:sd] || :asc).to_sym,@params[:sc])
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
113
123
|
end
|
114
124
|
end
|
115
125
|
end
|
@@ -26,19 +26,27 @@ module Lolita
|
|
26
26
|
# render_component "lolita/list", :display
|
27
27
|
# render_component "lolita/list/display"
|
28
28
|
def render_component *args
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
format=@opts.delete(:format)
|
33
|
-
|
29
|
+
name,state,options=get_render_options(*args)
|
30
|
+
format=options.delete(:format)
|
31
|
+
|
34
32
|
raise "Can't render component without name!" unless name
|
35
33
|
will_use_component name
|
36
34
|
component_name=File.join(name.to_s,state ? state.to_s : nil)
|
37
35
|
partial_name=File.join("/components",component_name)
|
38
|
-
output=output_component(partial_name,component_name,:format=>format,:locals
|
36
|
+
output=output_component(partial_name,component_name,:format=>format,:locals=>options)
|
39
37
|
self.respond_to?(:raw) ? raw(output) : output
|
40
38
|
end
|
41
39
|
|
40
|
+
def get_render_options *args
|
41
|
+
options=args.extract_options!
|
42
|
+
if args.first.respond_to?(:build)
|
43
|
+
name,state,options=args[0].build("",args[1],options)
|
44
|
+
else
|
45
|
+
name,state=args
|
46
|
+
end
|
47
|
+
return name,state,options
|
48
|
+
end
|
49
|
+
|
42
50
|
def output_component(partial_name,name,options={})
|
43
51
|
output=""
|
44
52
|
if options[:format]
|
@@ -1,5 +1,21 @@
|
|
1
1
|
module Lolita
|
2
2
|
module Controllers
|
3
|
+
# This module is included in all controllers and views. UrlHelper provide methods to generate lolita
|
4
|
+
# resource paths. As all resources goes to one controller (by default), than it is very difficult to
|
5
|
+
# generate url with <em>:controller</em> and <em>:action</em>.
|
6
|
+
# There are four methods for path:
|
7
|
+
# * lolita_resources_path - goes to index action
|
8
|
+
# * lolita_resource_path - goes to create, destroy or show, it depends what kind of method is used
|
9
|
+
# * new_lolita_resource_path - goes to new action
|
10
|
+
# * edit_lolita_resource_path - goes to edit action
|
11
|
+
# All of those methods accept <em>mapping</em> as a first argument and optional <em>options</em> that
|
12
|
+
# will be passed to path gererator. It is possible to pass only options, than current mapping will be used.
|
13
|
+
# ====Example
|
14
|
+
# # lets say, that current mapping is for posts
|
15
|
+
# edit_lolita_resource_path(:id=>4) #=> /lolita/posts/4/edit
|
16
|
+
# edit_lolita_resource_path(comment_mapping,:id=>1,:parent_id=>2) #=> /lolita/comments/1/edit?parent_id=2
|
17
|
+
# For custom actions there are method #lolita_resource_name that make it easier to generate custom method.
|
18
|
+
# All other methods use that for real resource path method generation.
|
3
19
|
module UrlHelpers
|
4
20
|
|
5
21
|
def self.included(model_klass)
|
@@ -40,32 +56,49 @@ module Lolita
|
|
40
56
|
|
41
57
|
protected
|
42
58
|
|
59
|
+
# Path for index.
|
43
60
|
def lolita_resources_path(*args)
|
44
61
|
options=args.extract_options!
|
45
62
|
mapping=args[0]
|
46
63
|
send(lolita_resource_name(:mapping=>mapping,:plural=>true),options)
|
47
64
|
end
|
48
65
|
|
49
|
-
|
66
|
+
# Path for show, create and destroy
|
67
|
+
def lolita_resource_path(*args)
|
50
68
|
options=args.extract_options!
|
51
69
|
mapping=args[0]
|
52
70
|
send(lolita_resource_name(:mapping=>mapping),options)
|
53
71
|
end
|
54
72
|
|
73
|
+
# Path for new.
|
55
74
|
def new_lolita_resource_path(*args)
|
56
75
|
options=args.extract_options!
|
57
76
|
mapping=args[0]
|
58
77
|
send(lolita_resource_name(:mapping=>mapping,:action=>:new),options)
|
59
78
|
end
|
60
79
|
|
80
|
+
# Path for edit.
|
61
81
|
def edit_lolita_resource_path(*args)
|
62
82
|
options=args.extract_options!
|
63
83
|
options[:id]||=resource.id if resource
|
64
|
-
raise "Can edit resource without id." unless options[:id]
|
84
|
+
#raise "Can edit resource without id." unless options[:id]
|
65
85
|
mapping=args[0]
|
66
86
|
send(lolita_resource_name(:mapping=>mapping,:action=>:edit),options)
|
67
87
|
end
|
68
88
|
|
89
|
+
# It return symbol, that represents named route method for path, like <i>lolita_posts_path</i> and so on.
|
90
|
+
# It accepts those options:
|
91
|
+
# * <tt>:mapping</tt> - Lolita::Mapping object, that is used to detect name of named route.
|
92
|
+
# by default it uses Lolita::InternalHelpers#lolita_mapping.
|
93
|
+
# * <tt>:plural</tt> - What kind of named route should use, plural or singular.
|
94
|
+
# * <tt>:action</tt> - Action is used to put before named route like <i>:edit</i>.
|
95
|
+
# ====Example
|
96
|
+
# # current mapping is for posts
|
97
|
+
# lolita_resource_name(:action=>:edit) #=> :edit_lolita_post_path
|
98
|
+
# lolita_resource_name(:plural=>true,:action=>:list) #=> :list_lolita_posts_path
|
99
|
+
# # for different mapping
|
100
|
+
# lolita_resource_name(:mapping=>comments_mapping) #=> :lolita_comment_path
|
101
|
+
# This methods is very useful to create your own paths in views.
|
69
102
|
def lolita_resource_name(options={}) #TODO test if path is right
|
70
103
|
options.assert_valid_keys(:mapping,:plural,:action)
|
71
104
|
mapping=(options[:mapping]||lolita_mapping)
|
data/lib/lolita/mapping.rb
CHANGED
@@ -11,14 +11,18 @@ module Lolita
|
|
11
11
|
# # add paths like this to routes
|
12
12
|
# # admin_posts GET /admin/posts {:controller=>"lolita/rest", :action=>:index}
|
13
13
|
# # edit_admin_posts GET /admin/post/1/edit {:controller=>"lolita/rest",:action=>:edit}
|
14
|
-
# * <tt>:module</tt> - change module for path, it changes
|
15
|
-
#
|
14
|
+
# * <tt>:module</tt> - change module for path, it changes <i>:controller</i> that is used for lolita, like,
|
15
|
+
# <code>:module=>"admin"</code>, change controller to "admin/posts". If this is used without :path then no named routes will be generated
|
16
|
+
# Instances of this class is used all over the Lolita, this class itself represent what name does resource has,
|
17
|
+
# what controller to use, what model is related with it and so on. This is used to generate urls and paths.
|
18
|
+
# Also eahc request containers information with mapping related to it.
|
16
19
|
class Mapping
|
17
20
|
attr_reader :class_name,:path,:singular,:plural,:path_prefix,:module,:controllers,:as
|
18
21
|
alias :name :singular
|
19
22
|
|
20
|
-
|
23
|
+
|
21
24
|
def initialize(name,options={})
|
25
|
+
# TODO how it is when lolita plugin extend default path and there is module is this not break the logic?
|
22
26
|
@as=options[:as]
|
23
27
|
@plural=(options[:as] ? options[:as] : name).to_sym
|
24
28
|
@singular=(options[:singular] || @plural.to_s.singularize).to_sym
|
@@ -19,7 +19,11 @@ module Lolita
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def children
|
22
|
-
@children
|
22
|
+
unless @children
|
23
|
+
tree=Lolita::Navigation::Tree.new("#{name}_children_tree")
|
24
|
+
tree.set_parent(self)
|
25
|
+
@children=tree
|
26
|
+
end
|
23
27
|
@children
|
24
28
|
end
|
25
29
|
|
@@ -18,7 +18,7 @@ module Lolita
|
|
18
18
|
|
19
19
|
add_hooks :before_branch_added, :after_branch_added
|
20
20
|
|
21
|
-
attr_reader :name,:root,:default_position,:branches
|
21
|
+
attr_reader :name,:root,:default_position,:branches,:parent
|
22
22
|
|
23
23
|
def initialize(name)
|
24
24
|
@name=name
|
@@ -77,6 +77,10 @@ module Lolita
|
|
77
77
|
raise ArgumentError, "Branch #{given_branch.inspect} not exists in #{self.inspect}"
|
78
78
|
end
|
79
79
|
|
80
|
+
def set_parent(new_parent)
|
81
|
+
@parent=new_parent
|
82
|
+
end
|
83
|
+
|
80
84
|
private
|
81
85
|
|
82
86
|
def adding_branch *branch
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
module Lolita
|
2
|
+
# This module overwrite Array methods that change Array to change element that is added to Array.
|
2
3
|
# Class that include this module must have collection_variable method that return collection
|
3
4
|
# variable that hold all records.
|
4
5
|
# Also build_element method must have with element and &block as arguments
|
@@ -29,7 +30,6 @@
|
|
29
30
|
# ...
|
30
31
|
# end
|
31
32
|
# end
|
32
|
-
module Lolita
|
33
33
|
module ObservedArray
|
34
34
|
|
35
35
|
def method_missing(method,*args,&block)
|
data/lib/lolita/rails/routes.rb
CHANGED
@@ -33,7 +33,7 @@ module ActionDispatch::Routing
|
|
33
33
|
# lolita_for :galleries
|
34
34
|
# # lolita_for try to call :lolita_gallery in Mapper class
|
35
35
|
def lolita_for *resources
|
36
|
-
|
36
|
+
|
37
37
|
return if migrating?
|
38
38
|
options = resources.extract_options!
|
39
39
|
|
@@ -56,22 +56,19 @@ module ActionDispatch::Routing
|
|
56
56
|
mapping=Lolita.add_mapping(resource,options)
|
57
57
|
Lolita.resources[mapping.name]=mapping
|
58
58
|
target_class=mapping.to
|
59
|
-
|
59
|
+
#TODO refactor all these variables
|
60
60
|
all_resource_classes<<target_class
|
61
61
|
|
62
62
|
lolita_scope mapping.name do
|
63
63
|
yield if block_given?
|
64
64
|
|
65
65
|
with_lolita_exclusive_scope mapping.fullpath,mapping.path do
|
66
|
+
|
66
67
|
# if not defined lolita default configuration in model, than can't use :rest
|
67
68
|
if !target_class.respond_to?(:lolita) && !Lolita::routes[mapping.name]
|
68
|
-
|
69
|
-
target_class.send(:include, Lolita::Configuration)
|
70
|
-
#raise Lolita::NotFound, "Lolita not found in #{target_class}. Include Lolita::Configuration"
|
69
|
+
raise Lolita::NotFound, "Lolita not found in #{target_class}. Include Lolita::Configuration"
|
71
70
|
elsif target_class.respond_to?(:lolita) && target_class.instance_variable_get(:@lolita).nil?
|
72
|
-
|
73
|
-
target_class.lolita
|
74
|
-
#raise Lolita::NotInitialized, "Call lolita method in #{target_class}."
|
71
|
+
raise Lolita::NotInitialized, "Call lolita method in #{target_class}."
|
75
72
|
else
|
76
73
|
route=Lolita.routes[mapping.name] || Lolita.default_route
|
77
74
|
end
|
@@ -86,6 +83,11 @@ module ActionDispatch::Routing
|
|
86
83
|
end
|
87
84
|
|
88
85
|
end
|
86
|
+
|
87
|
+
tree=Lolita::Navigation::Tree[:"left_side_navigation"]
|
88
|
+
unless tree.branches.detect{|b| b.object.is_a?(Lolita::Mapping) && b.object.to==mapping.to}
|
89
|
+
tree.append(mapping,:title=>mapping.name.to_s.humanize)
|
90
|
+
end
|
89
91
|
}
|
90
92
|
Lolita.common_routes(all_resource_classes).each do |route_name|
|
91
93
|
send(:"lolita_#{route_name}_route")
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Lolita
|
2
|
+
module Support
|
3
|
+
# Containes different kind of formaters.
|
4
|
+
module Formatter
|
5
|
+
# Change output format of different input types.
|
6
|
+
# To define, pass block, or String.
|
7
|
+
# ====Exmaple
|
8
|
+
# Lolita::Support::Formatter.new do |value|
|
9
|
+
# value.to_i**2
|
10
|
+
# end
|
11
|
+
# # or as String
|
12
|
+
# Lolita::Support::Formatter.new("%Y-%m")
|
13
|
+
# To format any value with defined formater call #with
|
14
|
+
# ====Example
|
15
|
+
# # Previous examples may be called like this
|
16
|
+
# formatter.with(1)
|
17
|
+
# formatter.with(Date.today)
|
18
|
+
class Base
|
19
|
+
def initialize(format=nil,&block)
|
20
|
+
@format=format
|
21
|
+
@block=block if block_given?
|
22
|
+
end
|
23
|
+
|
24
|
+
def format
|
25
|
+
@format
|
26
|
+
end
|
27
|
+
|
28
|
+
def block
|
29
|
+
@block
|
30
|
+
end
|
31
|
+
|
32
|
+
def with(value,*optional_values)
|
33
|
+
if @block
|
34
|
+
@block.call(value,*optional_values)
|
35
|
+
elsif @format
|
36
|
+
use_format_for(value,*optional_values)
|
37
|
+
else
|
38
|
+
use_default_format(value,*optional_values)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def use_default_format(value,*optional_values)
|
45
|
+
value
|
46
|
+
end
|
47
|
+
|
48
|
+
def use_format_for(value, *optional_values)
|
49
|
+
if value.respond_to?(:format)
|
50
|
+
call_block(value,*optional_values)
|
51
|
+
else
|
52
|
+
value.to_s.unpack(@format)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def call_block(value,*optional_values)
|
57
|
+
value.send(:format,value,*optional_values)
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Lolita
|
2
|
+
module Support
|
3
|
+
module Formatter
|
4
|
+
|
5
|
+
# Formater for work with rails, it localize Date and Time.
|
6
|
+
# Also
|
7
|
+
class Rails < Lolita::Support::Formatter::Base
|
8
|
+
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def use_format_for(value,*optional_values)
|
13
|
+
if @format && (value.is_a?(Time) || value.is_a?(Date))
|
14
|
+
localize_time_with_format(value,*optional_values)
|
15
|
+
else
|
16
|
+
use_default_format(value,*optional_values)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def localize_time_with_format(value,*optional_values)
|
21
|
+
if defined?(I18n)
|
22
|
+
I18n.localize(value, :format => @format)
|
23
|
+
else
|
24
|
+
use_default_format(value,*optional_values)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def use_default_format(value,*optional_values)
|
29
|
+
if value
|
30
|
+
if value.is_a?(String)
|
31
|
+
value
|
32
|
+
elsif value.is_a?(Numeric)
|
33
|
+
value
|
34
|
+
elsif value.is_a?(Date)
|
35
|
+
if defined?(I18n)
|
36
|
+
I18n.localize(value, :format => :long)
|
37
|
+
else
|
38
|
+
value.strftime("%Y/%m%/%d")
|
39
|
+
end
|
40
|
+
elsif value.is_a?(Time)
|
41
|
+
if defined?(I18n)
|
42
|
+
I18n.localize(value, :format => :long)
|
43
|
+
else
|
44
|
+
value.strftime("%Y/%m/%d %H:%M:%S")
|
45
|
+
end
|
46
|
+
else
|
47
|
+
value.to_s
|
48
|
+
end
|
49
|
+
else
|
50
|
+
""
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lolita.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{lolita}
|
8
|
-
s.version = "3.1.
|
8
|
+
s.version = "3.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["ITHouse (Latvia) and Arturs Meisters"]
|
12
|
-
s.date = %q{2011-04-
|
12
|
+
s.date = %q{2011-04-19}
|
13
13
|
s.description = %q{Great Rails CMS, that turns your business logic into good-looking, fully functional workspace. }
|
14
14
|
s.email = %q{support@ithouse.lv}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -30,6 +30,17 @@ Gem::Specification.new do |s|
|
|
30
30
|
"app/controllers/lolita/rest_controller.rb",
|
31
31
|
"app/helpers/components/lolita/configuration/list_component.rb",
|
32
32
|
"app/helpers/lolita_helper.rb",
|
33
|
+
"app/views/components/lolita/configuration/column/_display.html.erb",
|
34
|
+
"app/views/components/lolita/configuration/column/_header.html.erb",
|
35
|
+
"app/views/components/lolita/configuration/column/_sort.html.erb",
|
36
|
+
"app/views/components/lolita/configuration/columns/_body.html.erb",
|
37
|
+
"app/views/components/lolita/configuration/columns/_display.html.erb",
|
38
|
+
"app/views/components/lolita/configuration/columns/_first.html.erb",
|
39
|
+
"app/views/components/lolita/configuration/columns/_first_column_header.html.erb",
|
40
|
+
"app/views/components/lolita/configuration/columns/_header.html.erb",
|
41
|
+
"app/views/components/lolita/configuration/columns/_last.html.erb",
|
42
|
+
"app/views/components/lolita/configuration/columns/_last_column_header.html.erb",
|
43
|
+
"app/views/components/lolita/configuration/columns/_row.html.erb",
|
33
44
|
"app/views/components/lolita/configuration/field/_display.html.erb",
|
34
45
|
"app/views/components/lolita/configuration/field/_label.html.erb",
|
35
46
|
"app/views/components/lolita/configuration/field/_object.html.erb",
|
@@ -52,20 +63,11 @@ Gem::Specification.new do |s|
|
|
52
63
|
"app/views/components/lolita/configuration/field/string/text/_display.html.erb",
|
53
64
|
"app/views/components/lolita/configuration/field/time/_display.html.erb",
|
54
65
|
"app/views/components/lolita/configuration/field_set/_display.html.erb",
|
55
|
-
"app/views/components/lolita/configuration/list/_body.html.erb",
|
56
|
-
"app/views/components/lolita/configuration/list/_body_cell.html.erb",
|
57
|
-
"app/views/components/lolita/configuration/list/_checkbox_cell.html.erb",
|
58
|
-
"app/views/components/lolita/configuration/list/_checkbox_header.html.erb",
|
59
66
|
"app/views/components/lolita/configuration/list/_display.html.erb",
|
60
67
|
"app/views/components/lolita/configuration/list/_filter.html.erb",
|
61
|
-
"app/views/components/lolita/configuration/list/_header.html.erb",
|
62
|
-
"app/views/components/lolita/configuration/list/_header_cell.html.erb",
|
63
68
|
"app/views/components/lolita/configuration/list/_new_resource.html.erb",
|
64
69
|
"app/views/components/lolita/configuration/list/_paginator.html.erb",
|
65
|
-
"app/views/components/lolita/configuration/list/_row.html.erb",
|
66
70
|
"app/views/components/lolita/configuration/list/_title.html.erb",
|
67
|
-
"app/views/components/lolita/configuration/list/_tool_cell.html.erb",
|
68
|
-
"app/views/components/lolita/configuration/list/_tool_header.html.erb",
|
69
71
|
"app/views/components/lolita/configuration/tab/_display.html.erb",
|
70
72
|
"app/views/components/lolita/configuration/tab/_fields.html.erb",
|
71
73
|
"app/views/components/lolita/configuration/tab/content/_display.html.erb",
|
@@ -140,6 +142,8 @@ Gem::Specification.new do |s|
|
|
140
142
|
"lib/lolita/rails/all.rb",
|
141
143
|
"lib/lolita/rails/routes.rb",
|
142
144
|
"lib/lolita/ruby_ext/accessors.rb",
|
145
|
+
"lib/lolita/support/formatter/base.rb",
|
146
|
+
"lib/lolita/support/formatter/rails.rb",
|
143
147
|
"lib/lolita/test/matchers.rb",
|
144
148
|
"lolita.gemspec",
|
145
149
|
"public/images/lolita/plus.png",
|
@@ -212,6 +216,7 @@ Gem::Specification.new do |s|
|
|
212
216
|
"spec/configuration/page_spec.rb",
|
213
217
|
"spec/configuration/tab_spec.rb",
|
214
218
|
"spec/configuration/tabs_spec.rb",
|
219
|
+
"spec/controllers/component_helpers_spec.rb",
|
215
220
|
"spec/controllers/internal_helpers_spec.rb",
|
216
221
|
"spec/controllers/lolita_rest_nested_resources_spec.rb",
|
217
222
|
"spec/controllers/lolita_rest_spec.rb",
|
@@ -308,7 +313,8 @@ Gem::Specification.new do |s|
|
|
308
313
|
"spec/spec_helper.rb",
|
309
314
|
"spec/support/factories/category.rb",
|
310
315
|
"spec/support/factories/post.rb",
|
311
|
-
"spec/support/factories/tag.rb"
|
316
|
+
"spec/support/factories/tag.rb",
|
317
|
+
"spec/support/formatter/base_spec.rb"
|
312
318
|
]
|
313
319
|
s.homepage = %q{http://github.com/ithouse/lolita}
|
314
320
|
s.licenses = ["MIT"]
|
@@ -328,6 +334,7 @@ Gem::Specification.new do |s|
|
|
328
334
|
"spec/configuration/page_spec.rb",
|
329
335
|
"spec/configuration/tab_spec.rb",
|
330
336
|
"spec/configuration/tabs_spec.rb",
|
337
|
+
"spec/controllers/component_helpers_spec.rb",
|
331
338
|
"spec/controllers/internal_helpers_spec.rb",
|
332
339
|
"spec/controllers/lolita_rest_nested_resources_spec.rb",
|
333
340
|
"spec/controllers/lolita_rest_spec.rb",
|
@@ -365,7 +372,8 @@ Gem::Specification.new do |s|
|
|
365
372
|
"spec/spec_helper.rb",
|
366
373
|
"spec/support/factories/category.rb",
|
367
374
|
"spec/support/factories/post.rb",
|
368
|
-
"spec/support/factories/tag.rb"
|
375
|
+
"spec/support/factories/tag.rb",
|
376
|
+
"spec/support/formatter/base_spec.rb"
|
369
377
|
]
|
370
378
|
|
371
379
|
if s.respond_to? :specification_version then
|
@@ -99,6 +99,7 @@ header nav .username {margin-right: 15px;}
|
|
99
99
|
/* navigation styles on left */
|
100
100
|
#main nav {position: absolute; left: 0; min-width: 150px; margin-top: 5px;} /* width just for now */
|
101
101
|
#main nav ul {margin-bottom: 50px;}
|
102
|
+
#main nav ul.subtree{margin-bottom: 0px;}
|
102
103
|
#main nav ul li a {display: block; padding: 10px 15px; color: #737373;}
|
103
104
|
#main nav ul li.active a {
|
104
105
|
background: #d9d9d9;
|
@@ -110,6 +111,19 @@ header nav .username {margin-right: 15px;}
|
|
110
111
|
-webkit-border-radius: 5px 0 0 5px;
|
111
112
|
border-radius: 5px 0 0 5px;
|
112
113
|
}
|
114
|
+
#main nav ul li.with-subtree a{
|
115
|
+
border-radius: 5px 0 0 0;
|
116
|
+
}
|
117
|
+
#main nav ul li.active ul.subtree a{
|
118
|
+
background: #fff;
|
119
|
+
background: -moz-linear-gradient(left, #fff, #fff);
|
120
|
+
background: -webkit-linear-gradient(left, #fff, #fff);
|
121
|
+
border: 1px solid #f9f9f9;
|
122
|
+
border-radius: 0 0 0 0;
|
123
|
+
}
|
124
|
+
#main nav ul li.active ul.subtree li.last-in-subtree a{
|
125
|
+
border-radius: 0 0 0 5px;
|
126
|
+
}
|
113
127
|
/* --------------------------------------------- */
|
114
128
|
|
115
129
|
/* main content part */
|
@@ -178,6 +192,7 @@ a.create {
|
|
178
192
|
.list table td input {vertical-align: middle;}
|
179
193
|
.list table thead {background: #d5d5d5;}
|
180
194
|
.list table thead th {text-align: left;}
|
195
|
+
.list table thead th {font-weight:normal;}
|
181
196
|
.list table thead th a {color: #a5a5a5;}
|
182
197
|
.list table thead th.active a {color: #6c6c6c;} /* Style for active header */
|
183
198
|
.list table tbody tr {border-bottom: 1px solid #e3e3e3;}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
2
|
|
3
3
|
describe Lolita::Configuration::Column do
|
4
|
-
|
4
|
+
let(:column){Lolita::Configuration::Column.new(:col1)}
|
5
5
|
|
6
6
|
it "should create new column with Hash attributes" do
|
7
7
|
column=Lolita::Configuration::Column.new(:name=>"col1",:title=>"Col1",:type=>String)
|
@@ -41,5 +41,17 @@ describe Lolita::Configuration::Column do
|
|
41
41
|
end
|
42
42
|
}.should raise_error(ArgumentError, "Column must have name.")
|
43
43
|
end
|
44
|
+
|
45
|
+
it "should allow to add formatter" do
|
46
|
+
column.formatter do|value|
|
47
|
+
"value #{value}"
|
48
|
+
end
|
49
|
+
column.formatter.with("1").should == "value 1"
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should make default formater not defined" do
|
53
|
+
column.formatter.with(1).should == 1
|
54
|
+
end
|
55
|
+
|
44
56
|
end
|
45
57
|
|
data/spec/spec_helper.rb
CHANGED
@@ -30,7 +30,7 @@ require 'rspec/rails'
|
|
30
30
|
require 'ffaker'
|
31
31
|
require 'factory_girl'
|
32
32
|
|
33
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
33
|
+
Dir["#{File.dirname(__FILE__)}/support/factories/**/*.rb"].each {|f| require f}
|
34
34
|
RSpec.configure do |config|
|
35
35
|
# config.mock_with :mocha
|
36
36
|
# config.mock_with :flexmock
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../simple_spec_helper')
|
2
|
+
|
3
|
+
describe Lolita::Support::Formatter::Base do
|
4
|
+
let(:klass){Lolita::Support::Formatter::Base}
|
5
|
+
|
6
|
+
context "create new" do
|
7
|
+
|
8
|
+
it "should accept value as format" do
|
9
|
+
formatter=klass.new("%Y-%m")
|
10
|
+
formatter.format.should == "%Y-%m"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should accept block" do
|
14
|
+
formatter=klass.new do |value|
|
15
|
+
value**2
|
16
|
+
end
|
17
|
+
formatter.block.should_not be_nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "calling formatter" do
|
22
|
+
it "should call block" do
|
23
|
+
formatter=klass.new do |value|
|
24
|
+
value.to_i+1
|
25
|
+
end
|
26
|
+
formatter.with(2).should == 3
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should try to call #format method on given value" do
|
30
|
+
formatter=klass.new("M")
|
31
|
+
object=mock(Object)
|
32
|
+
object.stub!(:format).and_return(1)
|
33
|
+
object.stub!(:respond_to?).with(:format).and_return(true)
|
34
|
+
formatter.with(object).should == 1
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should convert received value to string and call #unpack" do
|
38
|
+
formatter=klass.new('C')
|
39
|
+
formatter.with("\100").should == [64]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: lolita
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 3.1.
|
5
|
+
version: 3.1.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- ITHouse (Latvia) and Arturs Meisters
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-19 00:00:00 +03:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -190,6 +190,17 @@ files:
|
|
190
190
|
- app/controllers/lolita/rest_controller.rb
|
191
191
|
- app/helpers/components/lolita/configuration/list_component.rb
|
192
192
|
- app/helpers/lolita_helper.rb
|
193
|
+
- app/views/components/lolita/configuration/column/_display.html.erb
|
194
|
+
- app/views/components/lolita/configuration/column/_header.html.erb
|
195
|
+
- app/views/components/lolita/configuration/column/_sort.html.erb
|
196
|
+
- app/views/components/lolita/configuration/columns/_body.html.erb
|
197
|
+
- app/views/components/lolita/configuration/columns/_display.html.erb
|
198
|
+
- app/views/components/lolita/configuration/columns/_first.html.erb
|
199
|
+
- app/views/components/lolita/configuration/columns/_first_column_header.html.erb
|
200
|
+
- app/views/components/lolita/configuration/columns/_header.html.erb
|
201
|
+
- app/views/components/lolita/configuration/columns/_last.html.erb
|
202
|
+
- app/views/components/lolita/configuration/columns/_last_column_header.html.erb
|
203
|
+
- app/views/components/lolita/configuration/columns/_row.html.erb
|
193
204
|
- app/views/components/lolita/configuration/field/_display.html.erb
|
194
205
|
- app/views/components/lolita/configuration/field/_label.html.erb
|
195
206
|
- app/views/components/lolita/configuration/field/_object.html.erb
|
@@ -212,20 +223,11 @@ files:
|
|
212
223
|
- app/views/components/lolita/configuration/field/string/text/_display.html.erb
|
213
224
|
- app/views/components/lolita/configuration/field/time/_display.html.erb
|
214
225
|
- app/views/components/lolita/configuration/field_set/_display.html.erb
|
215
|
-
- app/views/components/lolita/configuration/list/_body.html.erb
|
216
|
-
- app/views/components/lolita/configuration/list/_body_cell.html.erb
|
217
|
-
- app/views/components/lolita/configuration/list/_checkbox_cell.html.erb
|
218
|
-
- app/views/components/lolita/configuration/list/_checkbox_header.html.erb
|
219
226
|
- app/views/components/lolita/configuration/list/_display.html.erb
|
220
227
|
- app/views/components/lolita/configuration/list/_filter.html.erb
|
221
|
-
- app/views/components/lolita/configuration/list/_header.html.erb
|
222
|
-
- app/views/components/lolita/configuration/list/_header_cell.html.erb
|
223
228
|
- app/views/components/lolita/configuration/list/_new_resource.html.erb
|
224
229
|
- app/views/components/lolita/configuration/list/_paginator.html.erb
|
225
|
-
- app/views/components/lolita/configuration/list/_row.html.erb
|
226
230
|
- app/views/components/lolita/configuration/list/_title.html.erb
|
227
|
-
- app/views/components/lolita/configuration/list/_tool_cell.html.erb
|
228
|
-
- app/views/components/lolita/configuration/list/_tool_header.html.erb
|
229
231
|
- app/views/components/lolita/configuration/tab/_display.html.erb
|
230
232
|
- app/views/components/lolita/configuration/tab/_fields.html.erb
|
231
233
|
- app/views/components/lolita/configuration/tab/content/_display.html.erb
|
@@ -300,6 +302,8 @@ files:
|
|
300
302
|
- lib/lolita/rails/all.rb
|
301
303
|
- lib/lolita/rails/routes.rb
|
302
304
|
- lib/lolita/ruby_ext/accessors.rb
|
305
|
+
- lib/lolita/support/formatter/base.rb
|
306
|
+
- lib/lolita/support/formatter/rails.rb
|
303
307
|
- lib/lolita/test/matchers.rb
|
304
308
|
- lolita.gemspec
|
305
309
|
- public/images/lolita/plus.png
|
@@ -372,6 +376,7 @@ files:
|
|
372
376
|
- spec/configuration/page_spec.rb
|
373
377
|
- spec/configuration/tab_spec.rb
|
374
378
|
- spec/configuration/tabs_spec.rb
|
379
|
+
- spec/controllers/component_helpers_spec.rb
|
375
380
|
- spec/controllers/internal_helpers_spec.rb
|
376
381
|
- spec/controllers/lolita_rest_nested_resources_spec.rb
|
377
382
|
- spec/controllers/lolita_rest_spec.rb
|
@@ -469,6 +474,7 @@ files:
|
|
469
474
|
- spec/support/factories/category.rb
|
470
475
|
- spec/support/factories/post.rb
|
471
476
|
- spec/support/factories/tag.rb
|
477
|
+
- spec/support/formatter/base_spec.rb
|
472
478
|
has_rdoc: true
|
473
479
|
homepage: http://github.com/ithouse/lolita
|
474
480
|
licenses:
|
@@ -483,7 +489,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
483
489
|
requirements:
|
484
490
|
- - ">="
|
485
491
|
- !ruby/object:Gem::Version
|
486
|
-
hash:
|
492
|
+
hash: 193616659
|
487
493
|
segments:
|
488
494
|
- 0
|
489
495
|
version: "0"
|
@@ -513,6 +519,7 @@ test_files:
|
|
513
519
|
- spec/configuration/page_spec.rb
|
514
520
|
- spec/configuration/tab_spec.rb
|
515
521
|
- spec/configuration/tabs_spec.rb
|
522
|
+
- spec/controllers/component_helpers_spec.rb
|
516
523
|
- spec/controllers/internal_helpers_spec.rb
|
517
524
|
- spec/controllers/lolita_rest_nested_resources_spec.rb
|
518
525
|
- spec/controllers/lolita_rest_spec.rb
|
@@ -551,3 +558,4 @@ test_files:
|
|
551
558
|
- spec/support/factories/category.rb
|
552
559
|
- spec/support/factories/post.rb
|
553
560
|
- spec/support/factories/tag.rb
|
561
|
+
- spec/support/formatter/base_spec.rb
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<thead>
|
2
|
-
<tr>
|
3
|
-
<%= render_component :"lolita/configuration/list",:checkbox_header %>
|
4
|
-
<% columns.each do |column| %>
|
5
|
-
<%= render_component :"lolita/configuration/list", :header_cell, :column=>column %>
|
6
|
-
<% end %>
|
7
|
-
<%= render_component :"lolita/configuration/list",:tool_header %>
|
8
|
-
</tr>
|
9
|
-
</thead>
|
@@ -1,7 +0,0 @@
|
|
1
|
-
<tr class="<%= @class_name %>">
|
2
|
-
<%= render_component :"lolita/configuration/list", :checkbox_cell, :record=>record %>
|
3
|
-
<% columns.each do |column| %>
|
4
|
-
<%= render_component :"lolita/configuration/list",:body_cell, :value=>column.with_format(record.send(column.name.to_sym)) %>
|
5
|
-
<% end %>
|
6
|
-
<%= render_component :"lolita/configuration/list", :tool_cell,:record=>record %>
|
7
|
-
</tr>
|