g_already_grid 1.0.6 → 1.0.7
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/History.txt +9 -2
- data/README.rdoc +7 -1
- data/VERSION +1 -1
- data/g_already_grid.gemspec +2 -2
- data/lib/g_already_grid.rb +1 -1
- data/lib/g_already_grid/templates/guilded.already_grid.html.erb +6 -1
- data/lib/g_already_grid/view_helpers.rb +55 -44
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,9 +1,16 @@
|
|
1
|
-
1.0.
|
1
|
+
== 1.0.7 2009-10-27
|
2
|
+
|
3
|
+
* Added a use_polymorphic_path option to the grid view helper to enable the polymorphic path helper to determine the path of
|
4
|
+
each object in the collection to use as the link for each grid record. Used when the AR object is STI'ed and one would like
|
5
|
+
to generate show links that are correctly pathed to the specific type (not the base class).
|
6
|
+
|
7
|
+
|
8
|
+
== 1.0.5 2009-10-27
|
2
9
|
|
3
10
|
* Added :clickable option to avoid creating link to show from table rows.
|
4
11
|
|
5
12
|
|
6
|
-
1.0.4 2009-03-26
|
13
|
+
== 1.0.4 2009-03-26
|
7
14
|
|
8
15
|
* Refactored to utilize the REST path helper resolution available in Guilded 0.1.9
|
9
16
|
* Added multi level scoped by option
|
data/README.rdoc
CHANGED
@@ -56,6 +56,11 @@ Add namespace option for namespacing:
|
|
56
56
|
<%= g_already_grid @items, :id => "items-grid", :cols => [:name, :is_active], :sort => [:name],
|
57
57
|
:namespace => :admin %>
|
58
58
|
|
59
|
+
Add use polymorphic path option for STI'ed models:
|
60
|
+
|
61
|
+
<%= g_already_grid @items, :id => "items-grid", :cols => [:name, :is_active], :sort => [:name],
|
62
|
+
:namespace => :admin, :use_polymorphic_path => true %>
|
63
|
+
|
59
64
|
|
60
65
|
== OPTIONS:
|
61
66
|
|
@@ -68,6 +73,7 @@ actions:: Action links to include in the action column of grid. A boolean or Ar
|
|
68
73
|
paginate:: A boolean indicating whether to output pagination controls. Defaults to true. Utilizes will_paginate plugin features.
|
69
74
|
polymorphic_type:: The type of this polymorphic record. Should be a string representing the class name.
|
70
75
|
polymorphic_as:: The as used for the polymorphic type. Can be a symbol or string.
|
76
|
+
use_polymorphic_path:: When true, uses hte polymorphic path helper to determine the AR objects path from it's type (STI), otherwise, does not. Defaults to false.
|
71
77
|
namespace:: A string or symbol that is the namespace this collection is under.
|
72
78
|
scoped_by:: The active record object that the objects in the ar_col is scoped by.
|
73
79
|
shallow:: True if this collection is nested shallow, otherwise, false.
|
@@ -78,7 +84,7 @@ adaptable_url:: True in order to make the index url automagically adapt to :get
|
|
78
84
|
== REQUIREMENTS:
|
79
85
|
|
80
86
|
* Rails >= 2.2.0
|
81
|
-
* Guilded >= 0.
|
87
|
+
* Guilded >= 1.0.0 (http://github.com/midas/guilded/tree/master)
|
82
88
|
* will_paginate
|
83
89
|
|
84
90
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.7
|
data/g_already_grid.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{g_already_grid}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["C. Jason Harrelson (midas)"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-01-28}
|
13
13
|
s.description = %q{A Guilded Rails component that generates a rich grid control from an ActiveRecord.}
|
14
14
|
s.email = %q{jason@lookforwardenterprises.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/g_already_grid.rb
CHANGED
@@ -47,7 +47,12 @@
|
|
47
47
|
<td>
|
48
48
|
<% cell_args = path_helpers[:show_rest_args] + record_array %>
|
49
49
|
<% if options[:actions].empty? && options[:clickable] == true %>
|
50
|
-
|
50
|
+
<% if options[:use_polymorphic_path] == true
|
51
|
+
cell_args.insert( 0, options[:namespace] ) -%>
|
52
|
+
<%= link_to record_val, @controller.polymorphic_path( cell_args ) %>
|
53
|
+
<% else -%>
|
54
|
+
<%= link_to( record_val, @controller.send( path_helpers[:show_rest_helper], *cell_args ) ) %>
|
55
|
+
<% end -%>
|
51
56
|
<% else %>
|
52
57
|
<%= link_to( record_val, "javascript:void(0)" ) %>
|
53
58
|
<% end %>
|
@@ -1,57 +1,68 @@
|
|
1
1
|
module GAlreadyGrid
|
2
2
|
module ViewHelpers
|
3
|
-
|
3
|
+
|
4
4
|
# GUIlded element. This is a grid that is utilizing the already grid jQuery plugin. It is
|
5
5
|
# a progressively enhanced table.
|
6
|
-
#
|
6
|
+
#
|
7
7
|
# *parameters*
|
8
|
-
# ar_col
|
9
|
-
# options
|
10
|
-
#
|
8
|
+
# +ar_col+ (required) An ActiveRecord collection.
|
9
|
+
# +options+ As follows.
|
10
|
+
#
|
11
11
|
# *options*
|
12
|
-
# id
|
13
|
-
# cols
|
12
|
+
# +id+ (required) The id of the element. Must be unique on the page.
|
13
|
+
# +cols+ (required) An array of column names to include in the table. Each position of
|
14
14
|
# the array can be a symbol, string, or hash with 1 entry. The hash entry is the
|
15
15
|
# database field name as a key and the name to use in the gird as the value. Each
|
16
16
|
# key and value in the hash can be a symbol or string.
|
17
|
-
# skin
|
18
|
-
# exclude_css
|
17
|
+
# +skin+ The name of the skin to use for this Guilded element. Defaults to default => which is default.css.
|
18
|
+
# +exclude_css+ A boolean indicating if Guilded should create a stylesheet inlcude tag for
|
19
19
|
# this element. Defaults to false.
|
20
|
-
# empty_msg
|
21
|
-
# actions
|
22
|
-
# boolean, if true, add show, edit and delete actions. When boolean, if false, hide actions column.
|
20
|
+
# +empty_msg+ a message to display when the ar_col is empty or nil. Defaults to 'No matching records'.
|
21
|
+
# +actions+ Action links to include in the action column of grid. A boolean or Array of symbols. When
|
22
|
+
# boolean, if true, add show, edit and delete actions. When boolean, if false, hide actions column.
|
23
23
|
# When Array of symbols, add only actions present in array.
|
24
|
-
# paginate
|
24
|
+
# +paginate+ A boolean indicating whether to output pagination controls. Defaults to
|
25
25
|
# true. Utilizes will_paginate plugin features.
|
26
|
-
# polymorphic_type
|
27
|
-
# polymorphic_as
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
26
|
+
# +polymorphic_type+ The type of this polymorphic record. Should be a string representing the class name.
|
27
|
+
# +polymorphic_as+ The as used for the polymorphic type. Can be a symbol or string.
|
28
|
+
# +use_polymorphic_path+ When true, uses hte polymorphic path helper to determine the AR objects path from it's type (STI),
|
29
|
+
# otherwise, does not. Defaults to false.
|
30
|
+
# +namespace+ A string or symbol that is the namespace this collection is under.
|
31
|
+
# +scoped_by+ The active record object that the objects in the ar_col is scoped by.
|
32
|
+
# +shallow+ True if this collection is nested shallow, otherwise, false.
|
33
|
+
# +clickable+ Set to false in order to avoid rows linking to show action. Defaults to true.
|
34
|
+
# +adaptable_url+ True in order to make the index url automagically adapt to :get collection routes, otherwise false.
|
33
35
|
#
|
34
36
|
def g_already_grid( ar_col, *args )
|
35
37
|
options = args.extract_options!
|
36
38
|
raise ArgumentError, "'cols' option required" unless options.include?( :cols )
|
37
39
|
raise ArgumentError, "'cols' option must be an array of columns" unless options[:cols].is_a? Array
|
38
|
-
|
40
|
+
|
39
41
|
Guilded::Guilder.instance.add( :already_grid, options, [ 'jquery/jquery-already_grid-0.1.min.js' ] )
|
40
42
|
|
41
43
|
return "<span class=\"list-empty-msg\">#{options[:empty_msg] || 'No matching records'}</span>" if ar_col.nil? || ar_col.empty?
|
42
|
-
|
44
|
+
|
43
45
|
options[:grid_class] ||= 'already-grid'
|
44
46
|
options[:checkbox_class] ||= "chk"
|
45
47
|
options[:check_all_class] ||= "checkAll"
|
46
48
|
options[:date_format] ||= :default
|
47
49
|
options[:del_confirmation] ||= 'Are you sure you would like to delete this record?'
|
48
50
|
options[:clickable] = true if options[:clickable].nil?
|
49
|
-
|
51
|
+
|
50
52
|
options[:cols], options[:col_titles] = Guilded::Rails::Helpers.resolve_field_methods_and_titles( options[:cols], ar_col[0] )
|
51
53
|
path_helpers = Guilded::Rails::Helpers.resolve_rest_path_helpers( ar_col, options )
|
54
|
+
|
55
|
+
if options[:use_sti_base_index] == true
|
56
|
+
specific_name = ar_col.first.class.name.tableize
|
57
|
+
unless ar_col.first.class.superclass.is_a?( ActiveRecord::Base )
|
58
|
+
base_class = ar_col.first.class.superclass
|
59
|
+
base_name = base_class.name.tableize
|
60
|
+
path_helpers[:index_rest_helper] = path_helpers[:index_rest_helper].gsub( /#{specific_name}/, base_name ) unless base_name.nil?
|
61
|
+
end
|
62
|
+
end
|
52
63
|
|
53
64
|
scoped_by = options.delete( :scoped_by )
|
54
|
-
|
65
|
+
|
55
66
|
# Resolve sorting
|
56
67
|
if options[:sort]
|
57
68
|
if options[:sort].is_a?( Array )
|
@@ -63,7 +74,7 @@ module GAlreadyGrid
|
|
63
74
|
end
|
64
75
|
end
|
65
76
|
sort_by = Array.new unless sort_by
|
66
|
-
|
77
|
+
|
67
78
|
if options[:actions].is_a?( TrueClass )
|
68
79
|
options[:actions] = [ :show, :edit, :delete ]
|
69
80
|
elsif options[:actions].nil?
|
@@ -85,13 +96,13 @@ module GAlreadyGrid
|
|
85
96
|
end
|
86
97
|
|
87
98
|
options[:checkboxes] = true if options[:checkboxes].nil?
|
88
|
-
|
99
|
+
|
89
100
|
total_columns = options[:cols].size
|
90
101
|
total_columns = total_columns + 1 if options[:checkboxes]
|
91
102
|
total_columns = total_columns + 1 unless options[:actions].empty?
|
92
103
|
options[:total_columns] = total_columns
|
93
|
-
|
94
|
-
vars = {
|
104
|
+
|
105
|
+
vars = {
|
95
106
|
:options => options, :ar_col => ar_col, :do_paginate => do_paginate, :sort_by => sort_by, :path_helpers => path_helpers
|
96
107
|
}
|
97
108
|
|
@@ -100,19 +111,19 @@ module GAlreadyGrid
|
|
100
111
|
full_path = "#{path}/templates/guilded.already_grid.html.erb"
|
101
112
|
self.render( :file => full_path, :use_full_path => false, :locals => vars )
|
102
113
|
end
|
103
|
-
|
114
|
+
|
104
115
|
private
|
105
|
-
|
106
|
-
# Creates a link to sort this column of a table. Utilizes the link_to helper,
|
107
|
-
# but resolves sort by, direction and adds correct CSS classes for UI elements to
|
116
|
+
|
117
|
+
# Creates a link to sort this column of a table. Utilizes the link_to helper,
|
118
|
+
# but resolves sort by, direction and adds correct CSS classes for UI elements to
|
108
119
|
# be displayed.
|
109
|
-
#
|
120
|
+
#
|
110
121
|
# *parameters*
|
111
|
-
# name
|
112
|
-
# method
|
113
|
-
# path
|
114
|
-
# already_grid_options
|
115
|
-
# options
|
122
|
+
# +name+ The text to use for the link
|
123
|
+
# +method+ The actual name of this column's field.
|
124
|
+
# +path+ (Symbol) The name of the path method to call from routing.
|
125
|
+
# +already_grid_options+ The options hash from the already grid view helper.
|
126
|
+
# +options+ see link_to helper.
|
116
127
|
#
|
117
128
|
def sortable_header( name, method, path, scoping_args, already_grid_options, options={} )
|
118
129
|
is_sorted_link = ( method.to_s == params[:order].to_s )
|
@@ -132,21 +143,21 @@ module GAlreadyGrid
|
|
132
143
|
sort_options.merge!( :filter => params[:filter] ) if params[:filter]
|
133
144
|
unsorted_options = { :order => method, :direction => 'ASC' } # always sort ascending on first sort
|
134
145
|
unsorted_options.merge!( :filter => params[:filter] ) if params[:filter]
|
135
|
-
|
146
|
+
|
136
147
|
path = path.to_sym unless path.is_a?( Symbol )
|
137
148
|
path_args = [] + scoping_args
|
138
|
-
|
149
|
+
|
139
150
|
if is_sorted_link
|
140
151
|
# Handle the currently sorted by link
|
141
152
|
path_args << sort_options
|
142
153
|
path = @controller.send( path, *path_args )
|
143
154
|
else
|
144
|
-
# Handle the the other currently unsorted by links (we will always sort in
|
155
|
+
# Handle the the other currently unsorted by links (we will always sort in
|
145
156
|
# an ASC direction the first time)
|
146
157
|
path_args << unsorted_options
|
147
158
|
path = @controller.send( path, *path_args )
|
148
159
|
end
|
149
|
-
|
160
|
+
|
150
161
|
# Try to adapt to get collection rest methods
|
151
162
|
if already_grid_options[:adaptable_url]
|
152
163
|
path_parts = path.split( '?' )
|
@@ -156,13 +167,13 @@ module GAlreadyGrid
|
|
156
167
|
path = "#{request.path_info}?#{path_parts[1]}" # path.gsub( /#path_parts[0]/, request.request_uri )
|
157
168
|
end
|
158
169
|
end
|
159
|
-
|
170
|
+
|
160
171
|
# Load the params to an args array to send to the link_to helper
|
161
172
|
args = []
|
162
173
|
args << name << path << options
|
163
174
|
|
164
175
|
link_to( *args )
|
165
176
|
end
|
166
|
-
|
177
|
+
|
167
178
|
end
|
168
179
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: g_already_grid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- C. Jason Harrelson (midas)
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-28 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|