typus 3.1.7 → 3.1.8
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +15 -0
- data/Gemfile +10 -10
- data/README.md +1 -1
- data/app/controllers/admin/account_controller.rb +1 -3
- data/app/controllers/admin/base_controller.rb +2 -5
- data/app/controllers/admin/resources_controller.rb +6 -4
- data/app/controllers/admin/session_controller.rb +1 -2
- data/lib/typus.rb +4 -2
- data/lib/typus/controller/format.rb +18 -37
- data/lib/typus/controller/trash.rb +3 -1
- data/lib/typus/version.rb +1 -1
- data/typus.gemspec +1 -1
- data/vendor/assets/chosen/chosen.css +86 -64
- data/vendor/assets/chosen/chosen.jquery.js +41 -27
- data/vendor/assets/chosen/typus/chosen-sprite.png +0 -0
- metadata +14 -14
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,21 @@ CHANGELOG
|
|
4
4
|
3.1.8 (unreleased)
|
5
5
|
------------------
|
6
6
|
|
7
|
+
* [CHANGED] CSV generation is now performed in memory so we play nice
|
8
|
+
with Heroku.
|
9
|
+
|
10
|
+
* [CHANGED] We now can export XML, CSV and JSON without restriction. If
|
11
|
+
fields are not defined for a format, defaults will be used.
|
12
|
+
|
13
|
+
* [CHANGED] Updated Kaminari to `0.13.0` so we are now Rails `3.2.0`
|
14
|
+
compatible.
|
15
|
+
|
16
|
+
* [CHANGED] We now also load configuration files from "lib/<plugin>/config"
|
17
|
+
as this is marked as deprecated in Rails 3.2.0.
|
18
|
+
|
19
|
+
* [CHANGED] Updated Gems for the dummy application. This fixes deprecation
|
20
|
+
warnings and keeps the plugin up to date.
|
21
|
+
|
7
22
|
Changes: <https://github.com/fesplugas/typus/compare/v3.1.7...master>
|
8
23
|
|
9
24
|
|
data/Gemfile
CHANGED
@@ -8,8 +8,8 @@ gemspec
|
|
8
8
|
# Gems used only for assets and not required
|
9
9
|
# in production environments by default.
|
10
10
|
group :assets do
|
11
|
-
gem 'sass-rails', '~> 3.
|
12
|
-
gem 'coffee-rails', '~> 3.
|
11
|
+
gem 'sass-rails', '~> 3.2.3'
|
12
|
+
gem 'coffee-rails', '~> 3.2.1'
|
13
13
|
gem 'uglifier', '>= 1.0.3'
|
14
14
|
end
|
15
15
|
|
@@ -31,29 +31,29 @@ end
|
|
31
31
|
# And this stuff needed for the demo application.
|
32
32
|
gem "acts_as_list"
|
33
33
|
gem "acts_as_tree"
|
34
|
-
gem "factory_girl_rails", "~> 1.
|
34
|
+
gem "factory_girl_rails", "~> 1.6.0"
|
35
35
|
gem "rails-permalink", "~> 1.0.0"
|
36
|
-
gem "rails-trash", "~>
|
36
|
+
gem "rails-trash", "~> 2.0.0"
|
37
37
|
|
38
38
|
# For some reason I also need to define the `jquery-rails` gem here.
|
39
39
|
gem "jquery-rails"
|
40
40
|
|
41
41
|
# Rich Text Editor
|
42
|
-
gem "ckeditor-rails", "0.0.
|
42
|
+
gem "ckeditor-rails", "~> 0.0.3"
|
43
43
|
|
44
44
|
# Alternative authentication
|
45
|
-
gem "devise", "~>
|
45
|
+
gem "devise", "~> 2.0.0"
|
46
46
|
|
47
47
|
# Asset Management with Dragonfly
|
48
|
-
gem "dragonfly", "~> 0.9.
|
48
|
+
gem "dragonfly", "~> 0.9.10"
|
49
49
|
gem "rack-cache", :require => "rack/cache"
|
50
50
|
|
51
51
|
# Asset Management with Paperclip
|
52
|
-
gem "paperclip", "~> 2.
|
52
|
+
gem "paperclip", "~> 2.5.2"
|
53
53
|
|
54
54
|
# MongoDB
|
55
|
-
gem "mongoid", "~> 2.3
|
56
|
-
gem "bson_ext", "~> 1.5.
|
55
|
+
gem "mongoid", "~> 2.4.3"
|
56
|
+
gem "bson_ext", "~> 1.5.2"
|
57
57
|
|
58
58
|
group :test do
|
59
59
|
gem "shoulda-context", "~> 1.0.0"
|
data/README.md
CHANGED
@@ -23,7 +23,7 @@ You can try a demo [here][typus_demo].
|
|
23
23
|
- Internationalized interface ([See available translations][typus_locales])
|
24
24
|
- Customizable and extensible templates.
|
25
25
|
- Integrated [paperclip][paperclip] and [dragonfly][dragonfly] attachments viewer.
|
26
|
-
- Works with `Rails 3.1.X`.
|
26
|
+
- Works with `Rails 3.1.X` and `Rails 3.2.X`.
|
27
27
|
|
28
28
|
## Installing
|
29
29
|
|
@@ -2,9 +2,7 @@ class Admin::AccountController < Admin::BaseController
|
|
2
2
|
|
3
3
|
layout 'admin/session'
|
4
4
|
|
5
|
-
skip_before_filter :reload_config_and_roles
|
6
|
-
skip_before_filter :authenticate
|
7
|
-
skip_before_filter :set_locale
|
5
|
+
skip_before_filter :reload_config_and_roles, :authenticate, :set_locale
|
8
6
|
|
9
7
|
before_filter :sign_in?, :except => [:forgot_password, :send_password, :show]
|
10
8
|
before_filter :new?, :only => [:forgot_password, :send_password]
|
@@ -2,12 +2,9 @@ class Admin::BaseController < ActionController::Base
|
|
2
2
|
|
3
3
|
include Typus::Authentication::const_get(Typus.authentication.to_s.classify)
|
4
4
|
|
5
|
-
before_filter :reload_config_and_roles
|
6
|
-
before_filter :authenticate
|
7
|
-
before_filter :set_locale
|
5
|
+
before_filter :reload_config_and_roles, :authenticate, :set_locale
|
8
6
|
|
9
|
-
helper_method :admin_user
|
10
|
-
helper_method :current_role
|
7
|
+
helper_method :admin_user, :current_role
|
11
8
|
|
12
9
|
protected
|
13
10
|
|
@@ -27,7 +27,9 @@ class Admin::ResourcesController < Admin::BaseController
|
|
27
27
|
generate_html
|
28
28
|
end
|
29
29
|
|
30
|
-
|
30
|
+
format.csv { generate_csv }
|
31
|
+
format.json { export(:json) }
|
32
|
+
format.xml { export(:xml) }
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
@@ -198,12 +200,12 @@ class Admin::ResourcesController < Admin::BaseController
|
|
198
200
|
def redirect_on_success
|
199
201
|
path = params.dup.cleanup
|
200
202
|
|
201
|
-
options = if params[:
|
202
|
-
{ :action => nil, :id => nil }
|
203
|
-
elsif params[:_addanother]
|
203
|
+
options = if params[:_addanother]
|
204
204
|
{ :action => 'new', :id => nil }
|
205
205
|
elsif params[:_continue]
|
206
206
|
{ :action => 'edit', :id => @item.id }
|
207
|
+
else
|
208
|
+
{ :action => nil, :id => nil }
|
207
209
|
end
|
208
210
|
|
209
211
|
message = params[:action].eql?('create') ? "%{model} successfully created." : "%{model} successfully updated."
|
data/lib/typus.rb
CHANGED
@@ -229,13 +229,15 @@ module Typus
|
|
229
229
|
def model_configuration_files
|
230
230
|
app = Typus.root.join("**", "*.yml")
|
231
231
|
plugins = Rails.root.join("vendor", "plugins", "*", "config", "typus", "**", "*.yml")
|
232
|
-
|
232
|
+
lib = Rails.root.join("lib", "*", "config", "typus", "**", "*.yml")
|
233
|
+
Dir[app, plugins, lib].reject { |f| f.match(/_roles.yml/) }.sort
|
233
234
|
end
|
234
235
|
|
235
236
|
def role_configuration_files
|
236
237
|
app = Typus.root.join("**", "*_roles.yml")
|
237
238
|
plugins = Rails.root.join("vendor", "plugins", "*", "config", "typus", "**", "*_roles.yml")
|
238
|
-
|
239
|
+
lib = Rails.root.join("lib", "*", "config", "typus", "**", "*_roles.yml")
|
240
|
+
Dir[app, plugins, lib].sort
|
239
241
|
end
|
240
242
|
|
241
243
|
def reload!
|
@@ -19,44 +19,29 @@ module Typus
|
|
19
19
|
# to be able to process large amounts of data.
|
20
20
|
#++
|
21
21
|
def generate_csv
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
options
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
when :belongs_to
|
39
|
-
record.send(key).try(:to_label)
|
40
|
-
else
|
41
|
-
record.send(key)
|
42
|
-
end
|
22
|
+
fields = @resource.typus_fields_for(:csv)
|
23
|
+
options = { :conditions => @conditions, :batch_size => 1000 }
|
24
|
+
|
25
|
+
data = ::CSV.generate do |csv|
|
26
|
+
csv << fields.keys.map { |k| @resource.human_attribute_name(k) }
|
27
|
+
@resource.find_in_batches(options) do |records|
|
28
|
+
records.each do |record|
|
29
|
+
csv << fields.map do |key, value|
|
30
|
+
case value
|
31
|
+
when :transversal
|
32
|
+
a, b = key.split(".")
|
33
|
+
record.send(a).send(b)
|
34
|
+
when :belongs_to
|
35
|
+
record.send(key).try(:to_label)
|
36
|
+
else
|
37
|
+
record.send(key)
|
43
38
|
end
|
44
|
-
|
39
|
+
end
|
45
40
|
end
|
46
41
|
end
|
47
|
-
|
48
|
-
send_file filename
|
49
|
-
else
|
50
|
-
not_allowed
|
51
42
|
end
|
52
|
-
end
|
53
43
|
|
54
|
-
|
55
|
-
export(:json)
|
56
|
-
end
|
57
|
-
|
58
|
-
def generate_xml
|
59
|
-
can_export?(:xml) ? export(:xml) : not_allowed
|
44
|
+
send_data data, :filename => "export-#{@resource.to_resource}-#{Time.zone.now.to_s(:number)}.csv"
|
60
45
|
end
|
61
46
|
|
62
47
|
def export(format)
|
@@ -69,10 +54,6 @@ module Typus
|
|
69
54
|
render format => @items.send("to_#{format}", :methods => methods, :except => except)
|
70
55
|
end
|
71
56
|
|
72
|
-
def can_export?(format)
|
73
|
-
@resource.typus_options_for(:export).extract_settings.include?(format.to_s)
|
74
|
-
end
|
75
|
-
|
76
57
|
end
|
77
58
|
end
|
78
59
|
end
|
data/lib/typus/version.rb
CHANGED
data/typus.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
|
29
29
|
s.add_dependency "bcrypt-ruby", "~> 3.0.0"
|
30
30
|
s.add_dependency "jquery-rails"
|
31
|
-
s.add_dependency "kaminari", "~> 0.
|
31
|
+
s.add_dependency "kaminari", "~> 0.13.0"
|
32
32
|
s.add_dependency "rails", ">= 3.1.3"
|
33
33
|
|
34
34
|
# Development dependencies are defined in the `Gemfile`.
|
@@ -23,29 +23,32 @@
|
|
23
23
|
|
24
24
|
/* @group Single Chosen */
|
25
25
|
.chzn-container-single .chzn-single {
|
26
|
-
background-color: #
|
27
|
-
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.5,
|
28
|
-
background-image: -webkit-linear-gradient(center bottom, #
|
29
|
-
background-image: -moz-linear-gradient(center bottom, #
|
30
|
-
background-image: -o-linear-gradient(top, #eeeeee
|
31
|
-
background-image: -ms-linear-gradient(top, #eeeeee
|
26
|
+
background-color: #ffffff;
|
27
|
+
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f4f4f4), color-stop(0.48, #eeeeee), color-stop(0.5, #f6f6f6), color-stop(0.8, #ffffff));
|
28
|
+
background-image: -webkit-linear-gradient(center bottom, #f4f4f4 0%, #eeeeee 48%, #f6f6f6 50%, #ffffff 80%);
|
29
|
+
background-image: -moz-linear-gradient(center bottom, #f4f4f4 0%, #eeeeee 48%, #f6f6f6 50%, #ffffff 80%);
|
30
|
+
background-image: -o-linear-gradient(top, #f4f4f4 0%, #eeeeee 48%, #f6f6f6 50%, #ffffff 80%);
|
31
|
+
background-image: -ms-linear-gradient(top, #f4f4f4 0%, #eeeeee 48%, #f6f6f6 50%, #ffffff 80%);
|
32
32
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff',GradientType=0 );
|
33
|
-
background-image: linear-gradient(top, #eeeeee
|
34
|
-
-webkit-border-radius:
|
35
|
-
-moz-border-radius :
|
36
|
-
border-radius :
|
33
|
+
background-image: linear-gradient(top, #f4f4f4 0%, #eeeeee 48%, #f6f6f6 50%, #ffffff 80%);
|
34
|
+
-webkit-border-radius: 5px;
|
35
|
+
-moz-border-radius : 5px;
|
36
|
+
border-radius : 5px;
|
37
37
|
-moz-background-clip : padding;
|
38
38
|
-webkit-background-clip: padding-box;
|
39
39
|
background-clip : padding-box;
|
40
|
-
border: 1px solid #
|
40
|
+
border: 1px solid #aaaaaa;
|
41
|
+
-webkit-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
|
42
|
+
-moz-box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
|
43
|
+
box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
|
41
44
|
display: block;
|
42
45
|
overflow: hidden;
|
43
46
|
white-space: nowrap;
|
44
47
|
position: relative;
|
45
|
-
height:
|
46
|
-
line-height:
|
48
|
+
height: 23px;
|
49
|
+
line-height: 23px;
|
47
50
|
padding: 0 0 0 8px;
|
48
|
-
color: #
|
51
|
+
color: #444444;
|
49
52
|
text-decoration: none;
|
50
53
|
}
|
51
54
|
.chzn-container-single .chzn-single span {
|
@@ -61,7 +64,7 @@
|
|
61
64
|
display: block;
|
62
65
|
position: absolute;
|
63
66
|
right: 26px;
|
64
|
-
top:
|
67
|
+
top: 6px;
|
65
68
|
width: 12px;
|
66
69
|
height: 13px;
|
67
70
|
font-size: 1px;
|
@@ -71,21 +74,6 @@
|
|
71
74
|
background-position: right -11px;
|
72
75
|
}
|
73
76
|
.chzn-container-single .chzn-single div {
|
74
|
-
-webkit-border-radius: 0 4px 4px 0;
|
75
|
-
-moz-border-radius : 0 4px 4px 0;
|
76
|
-
border-radius : 0 4px 4px 0;
|
77
|
-
-moz-background-clip : padding;
|
78
|
-
-webkit-background-clip: padding-box;
|
79
|
-
background-clip : padding-box;
|
80
|
-
background: #ccc;
|
81
|
-
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
|
82
|
-
background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
|
83
|
-
background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
|
84
|
-
background-image: -o-linear-gradient(bottom, #ccc 0%, #eee 60%);
|
85
|
-
background-image: -ms-linear-gradient(top, #cccccc 0%,#eeeeee 60%);
|
86
|
-
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cccccc', endColorstr='#eeeeee',GradientType=0 );
|
87
|
-
background-image: linear-gradient(top, #cccccc 0%,#eeeeee 60%);
|
88
|
-
border-left: 1px solid #aaa;
|
89
77
|
position: absolute;
|
90
78
|
right: 0;
|
91
79
|
top: 0;
|
@@ -94,7 +82,7 @@
|
|
94
82
|
width: 18px;
|
95
83
|
}
|
96
84
|
.chzn-container-single .chzn-single div b {
|
97
|
-
background: url('chosen-sprite.png') no-repeat 0
|
85
|
+
background: url('chosen-sprite.png') no-repeat 0 0;
|
98
86
|
display: block;
|
99
87
|
width: 100%;
|
100
88
|
height: 100%;
|
@@ -104,6 +92,7 @@
|
|
104
92
|
position: relative;
|
105
93
|
margin: 0;
|
106
94
|
white-space: nowrap;
|
95
|
+
z-index: 1010;
|
107
96
|
}
|
108
97
|
.chzn-container-single .chzn-search input {
|
109
98
|
background: #fff url('chosen-sprite.png') no-repeat 100% -22px;
|
@@ -112,7 +101,6 @@
|
|
112
101
|
background: url('chosen-sprite.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);
|
113
102
|
background: url('chosen-sprite.png') no-repeat 100% -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);
|
114
103
|
background: url('chosen-sprite.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%,#eeeeee 99%);
|
115
|
-
background: url('chosen-sprite.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%,#eeeeee 99%);
|
116
104
|
background: url('chosen-sprite.png') no-repeat 100% -22px, linear-gradient(top, #ffffff 85%,#eeeeee 99%);
|
117
105
|
margin: 1px 0;
|
118
106
|
padding: 4px 20px 4px 5px;
|
@@ -143,9 +131,9 @@
|
|
143
131
|
background-image: -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%);
|
144
132
|
background-image: -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);
|
145
133
|
background-image: -o-linear-gradient(bottom, white 85%, #eeeeee 99%);
|
146
|
-
background-image: -ms-linear-gradient(top, #ffffff 85
|
134
|
+
background-image: -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%);
|
147
135
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee',GradientType=0 );
|
148
|
-
background-image: linear-gradient(top, #ffffff 85
|
136
|
+
background-image: linear-gradient(top, #ffffff 85%, #eeeeee 99%);
|
149
137
|
border: 1px solid #aaa;
|
150
138
|
margin: 0;
|
151
139
|
padding: 0;
|
@@ -168,6 +156,9 @@
|
|
168
156
|
color: #666;
|
169
157
|
background: transparent !important;
|
170
158
|
border: 0 !important;
|
159
|
+
font-family: sans-serif;
|
160
|
+
font-size: 100%;
|
161
|
+
height: 15px;
|
171
162
|
padding: 5px;
|
172
163
|
margin: 1px 0;
|
173
164
|
outline: 0;
|
@@ -187,17 +178,20 @@
|
|
187
178
|
-webkit-background-clip: padding-box;
|
188
179
|
background-clip : padding-box;
|
189
180
|
background-color: #e4e4e4;
|
190
|
-
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #
|
191
|
-
background-image: -webkit-linear-gradient(center bottom, #
|
192
|
-
background-image: -moz-linear-gradient(center bottom, #
|
193
|
-
background-image: -o-linear-gradient(
|
194
|
-
background-image: -ms-linear-gradient(top, #
|
195
|
-
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#
|
196
|
-
background-image: linear-gradient(top, #
|
181
|
+
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.48, #e8e8e8), color-stop(0.5, #f0f0f0), color-stop(0.8, #f4f4f4));
|
182
|
+
background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, #e8e8e8 48%, #f0f0f0 50%, #f4f4f4 80%);
|
183
|
+
background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, #e8e8e8 48%, #f0f0f0 50%, #f4f4f4 80%);
|
184
|
+
background-image: -o-linear-gradient(top, #eeeeee 0%, #e8e8e8 48%, #f0f0f0 50%, #f4f4f4 80%);
|
185
|
+
background-image: -ms-linear-gradient(top, #eeeeee 0%, #e8e8e8 48%, #f0f0f0 50%, #f4f4f4 80%);
|
186
|
+
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#f4f4f4',GradientType=0 );
|
187
|
+
background-image: linear-gradient(top, #eeeeee 0%, #e8e8e8 48%, #f0f0f0 50%, #f4f4f4 80%);
|
188
|
+
-webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
|
189
|
+
-moz-box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
|
190
|
+
box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
|
197
191
|
color: #333;
|
198
|
-
border: 1px solid #
|
192
|
+
border: 1px solid #aaaaaa;
|
199
193
|
line-height: 13px;
|
200
|
-
padding: 3px
|
194
|
+
padding: 3px 20px 3px 5px;
|
201
195
|
margin: 3px 0 3px 5px;
|
202
196
|
position: relative;
|
203
197
|
}
|
@@ -228,7 +222,7 @@
|
|
228
222
|
/* @group Results */
|
229
223
|
.chzn-container .chzn-results {
|
230
224
|
margin: 0 4px 4px 0;
|
231
|
-
max-height:
|
225
|
+
max-height: 240px;
|
232
226
|
padding: 0 0 0 4px;
|
233
227
|
position: relative;
|
234
228
|
overflow-x: hidden;
|
@@ -240,8 +234,8 @@
|
|
240
234
|
}
|
241
235
|
.chzn-container .chzn-results li {
|
242
236
|
display: none;
|
243
|
-
line-height:
|
244
|
-
padding:
|
237
|
+
line-height: 15px;
|
238
|
+
padding: 5px 6px;
|
245
239
|
margin: 0;
|
246
240
|
list-style: none;
|
247
241
|
}
|
@@ -250,7 +244,14 @@
|
|
250
244
|
display: list-item;
|
251
245
|
}
|
252
246
|
.chzn-container .chzn-results .highlighted {
|
253
|
-
background: #3875d7;
|
247
|
+
background-color: #3875d7;
|
248
|
+
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.1, #2a62bc), color-stop(0.8, #3875d7));
|
249
|
+
background-image: -webkit-linear-gradient(center bottom, #2a62bc 10%, #3875d7 80%);
|
250
|
+
background-image: -moz-linear-gradient(center bottom, #2a62bc 10%, #3875d7 80%);
|
251
|
+
background-image: -o-linear-gradient(bottom, #2a62bc 10%, #3875d7 80%);
|
252
|
+
background-image: -ms-linear-gradient(top, #2a62bc 10%, #3875d7 80%);
|
253
|
+
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2a62bc', endColorstr='#3875d7',GradientType=0 );
|
254
|
+
background-image: linear-gradient(top, #2a62bc 10%, #3875d7 80%);
|
254
255
|
color: #fff;
|
255
256
|
}
|
256
257
|
.chzn-container .chzn-results li em {
|
@@ -270,11 +271,34 @@
|
|
270
271
|
font-weight: bold;
|
271
272
|
}
|
272
273
|
.chzn-container .chzn-results .group-option {
|
273
|
-
padding-left:
|
274
|
+
padding-left: 15px;
|
274
275
|
}
|
275
276
|
.chzn-container-multi .chzn-drop .result-selected {
|
276
277
|
display: none;
|
277
278
|
}
|
279
|
+
.chzn-container .chzn-results-scroll {
|
280
|
+
background: white;
|
281
|
+
margin: 0px 4px;
|
282
|
+
position: absolute;
|
283
|
+
text-align: center;
|
284
|
+
width: 321px; /* This should by dynamic with js */
|
285
|
+
z-index: 1;
|
286
|
+
}
|
287
|
+
.chzn-container .chzn-results-scroll span {
|
288
|
+
display: inline-block;
|
289
|
+
height: 17px;
|
290
|
+
text-indent: -5000px;
|
291
|
+
width: 9px;
|
292
|
+
}
|
293
|
+
.chzn-container .chzn-results-scroll-down {
|
294
|
+
bottom: 0;
|
295
|
+
}
|
296
|
+
.chzn-container .chzn-results-scroll-down span {
|
297
|
+
background: url('chosen-sprite.png') no-repeat -4px -3px;
|
298
|
+
}
|
299
|
+
.chzn-container .chzn-results-scroll-up span {
|
300
|
+
background: url('chosen-sprite.png') no-repeat -22px -3px;
|
301
|
+
}
|
278
302
|
/* @end */
|
279
303
|
|
280
304
|
/* @group Active */
|
@@ -292,13 +316,13 @@
|
|
292
316
|
-o-box-shadow : 0 1px 0 #fff inset;
|
293
317
|
box-shadow : 0 1px 0 #fff inset;
|
294
318
|
background-color: #eee;
|
295
|
-
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, white), color-stop(0.
|
296
|
-
background-image: -webkit-linear-gradient(center bottom, white
|
297
|
-
background-image: -moz-linear-gradient(center bottom, white
|
298
|
-
background-image: -o-linear-gradient(bottom, white
|
299
|
-
background-image: -ms-linear-gradient(top, #ffffff
|
319
|
+
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.2, white), color-stop(0.8, #eeeeee));
|
320
|
+
background-image: -webkit-linear-gradient(center bottom, white 20%, #eeeeee 80%);
|
321
|
+
background-image: -moz-linear-gradient(center bottom, white 20%, #eeeeee 80%);
|
322
|
+
background-image: -o-linear-gradient(bottom, white 20%, #eeeeee 80%);
|
323
|
+
background-image: -ms-linear-gradient(top, #ffffff 20%,#eeeeee 80%);
|
300
324
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee',GradientType=0 );
|
301
|
-
background-image: linear-gradient(top, #ffffff
|
325
|
+
background-image: linear-gradient(top, #ffffff 20%,#eeeeee 80%);
|
302
326
|
-webkit-border-bottom-left-radius : 0;
|
303
327
|
-webkit-border-bottom-right-radius: 0;
|
304
328
|
-moz-border-radius-bottomleft : 0;
|
@@ -341,16 +365,15 @@
|
|
341
365
|
.chzn-rtl { direction:rtl;text-align: right; }
|
342
366
|
.chzn-rtl .chzn-single { padding-left: 0; padding-right: 8px; }
|
343
367
|
.chzn-rtl .chzn-single span { margin-left: 26px; margin-right: 0; }
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
border-radius : 4px 0 0 4px;
|
368
|
+
|
369
|
+
.chzn-rtl .chzn-single div { left: 3px; right: auto; }
|
370
|
+
.chzn-rtl .chzn-single abbr {
|
371
|
+
left: 26px;
|
372
|
+
right: auto;
|
350
373
|
}
|
351
374
|
.chzn-rtl .chzn-choices li { float: right; }
|
352
|
-
.chzn-rtl .chzn-choices .search-choice { padding: 3px
|
353
|
-
.chzn-rtl .chzn-choices .search-choice .search-choice-close { left:
|
375
|
+
.chzn-rtl .chzn-choices .search-choice { padding: 3px 5px 3px 19px; margin: 3px 5px 3px 0; }
|
376
|
+
.chzn-rtl .chzn-choices .search-choice .search-choice-close { left: 4px; right: auto; background-position: right top;}
|
354
377
|
.chzn-rtl.chzn-container-single .chzn-results { margin-left: 4px; margin-right: 0; padding-left: 0; padding-right: 4px; }
|
355
378
|
.chzn-rtl .chzn-results .group-option { padding-left: 0; padding-right: 20px; }
|
356
379
|
.chzn-rtl.chzn-container-active .chzn-single-with-drop div { border-right: none; }
|
@@ -361,8 +384,7 @@
|
|
361
384
|
background: url('chosen-sprite.png') no-repeat -38px -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%);
|
362
385
|
background: url('chosen-sprite.png') no-repeat -38px -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%);
|
363
386
|
background: url('chosen-sprite.png') no-repeat -38px -22px, -ms-linear-gradient(top, #ffffff 85%,#eeeeee 99%);
|
364
|
-
background: url('chosen-sprite.png') no-repeat -38px -22px, -ms-linear-gradient(top, #ffffff 85%,#eeeeee 99%);
|
365
387
|
background: url('chosen-sprite.png') no-repeat -38px -22px, linear-gradient(top, #ffffff 85%,#eeeeee 99%);
|
366
388
|
padding: 4px 5px 4px 20px;
|
367
389
|
}
|
368
|
-
/* @end */
|
390
|
+
/* @end */
|
@@ -1,7 +1,7 @@
|
|
1
1
|
// Chosen, a Select Box Enhancer for jQuery and Protoype
|
2
2
|
// by Patrick Filler for Harvest, http://getharvest.com
|
3
3
|
//
|
4
|
-
// Version 0.9.
|
4
|
+
// Version 0.9.6
|
5
5
|
// Full source at https://github.com/harvesthq/chosen
|
6
6
|
// Copyright (c) 2011 Harvest http://getharvest.com
|
7
7
|
|
@@ -113,7 +113,7 @@
|
|
113
113
|
this.results_showing = false;
|
114
114
|
this.result_highlighted = null;
|
115
115
|
this.result_single_selected = null;
|
116
|
-
this.allow_single_deselect = (this.options.allow_single_deselect != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
|
116
|
+
this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
|
117
117
|
this.disable_search_threshold = this.options.disable_search_threshold || 0;
|
118
118
|
this.choices = 0;
|
119
119
|
return this.results_none_found = this.options.no_results_text || "No results match";
|
@@ -199,9 +199,9 @@
|
|
199
199
|
break;
|
200
200
|
case 27:
|
201
201
|
if (this.results_showing) {
|
202
|
-
|
202
|
+
this.results_hide();
|
203
203
|
}
|
204
|
-
|
204
|
+
return true;
|
205
205
|
case 9:
|
206
206
|
case 38:
|
207
207
|
case 40:
|
@@ -247,7 +247,7 @@
|
|
247
247
|
$ = jQuery;
|
248
248
|
$.fn.extend({
|
249
249
|
chosen: function(options) {
|
250
|
-
if ($.browser
|
250
|
+
if ($.browser.msie && ($.browser.version === "6.0" || $.browser.version === "7.0")) {
|
251
251
|
return this;
|
252
252
|
}
|
253
253
|
return $(this).each(function(input_field) {
|
@@ -288,9 +288,6 @@
|
|
288
288
|
this.form_field_jq.hide().after(container_div);
|
289
289
|
this.container = $('#' + this.container_id);
|
290
290
|
this.container.addClass("chzn-container-" + (this.is_multiple ? "multi" : "single"));
|
291
|
-
if (!this.is_multiple && this.form_field.options.length <= this.disable_search_threshold) {
|
292
|
-
this.container.addClass("chzn-container-single-nosearch");
|
293
|
-
}
|
294
291
|
this.dropdown = this.container.find('div.chzn-drop').first();
|
295
292
|
dd_top = this.container.height();
|
296
293
|
dd_width = this.f_width - get_side_border_padding(this.dropdown);
|
@@ -314,7 +311,10 @@
|
|
314
311
|
});
|
315
312
|
}
|
316
313
|
this.results_build();
|
317
|
-
|
314
|
+
this.set_tab_index();
|
315
|
+
return this.form_field_jq.trigger("liszt:ready", {
|
316
|
+
chosen: this
|
317
|
+
});
|
318
318
|
};
|
319
319
|
Chosen.prototype.register_observers = function() {
|
320
320
|
this.container.mousedown(__bind(function(evt) {
|
@@ -357,20 +357,24 @@
|
|
357
357
|
return this.search_field.focus(__bind(function(evt) {
|
358
358
|
return this.input_focus(evt);
|
359
359
|
}, this));
|
360
|
+
} else {
|
361
|
+
return this.container.click(__bind(function(evt) {
|
362
|
+
return evt.preventDefault();
|
363
|
+
}, this));
|
360
364
|
}
|
361
365
|
};
|
362
366
|
Chosen.prototype.search_field_disabled = function() {
|
363
|
-
this.is_disabled = this.form_field_jq.
|
367
|
+
this.is_disabled = this.form_field_jq[0].disabled;
|
364
368
|
if (this.is_disabled) {
|
365
369
|
this.container.addClass('chzn-disabled');
|
366
|
-
this.search_field.
|
370
|
+
this.search_field[0].disabled = true;
|
367
371
|
if (!this.is_multiple) {
|
368
372
|
this.selected_item.unbind("focus", this.activate_action);
|
369
373
|
}
|
370
374
|
return this.close_field();
|
371
375
|
} else {
|
372
376
|
this.container.removeClass('chzn-disabled');
|
373
|
-
this.search_field.
|
377
|
+
this.search_field[0].disabled = false;
|
374
378
|
if (!this.is_multiple) {
|
375
379
|
return this.selected_item.bind("focus", this.activate_action);
|
376
380
|
}
|
@@ -390,7 +394,7 @@
|
|
390
394
|
}
|
391
395
|
$(document).click(this.click_test_action);
|
392
396
|
this.results_show();
|
393
|
-
} else if (!this.is_multiple && evt && ($(evt.target) === this.selected_item || $(evt.target).parents("a.chzn-single").length)) {
|
397
|
+
} else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chzn-single").length)) {
|
394
398
|
evt.preventDefault();
|
395
399
|
this.results_toggle();
|
396
400
|
}
|
@@ -442,8 +446,7 @@
|
|
442
446
|
}
|
443
447
|
};
|
444
448
|
Chosen.prototype.results_build = function() {
|
445
|
-
var content, data,
|
446
|
-
startTime = new Date();
|
449
|
+
var content, data, _i, _len, _ref;
|
447
450
|
this.parsing = true;
|
448
451
|
this.results_data = root.SelectParser.select_to_array(this.form_field);
|
449
452
|
if (this.is_multiple && this.choices > 0) {
|
@@ -451,6 +454,11 @@
|
|
451
454
|
this.choices = 0;
|
452
455
|
} else if (!this.is_multiple) {
|
453
456
|
this.selected_item.find("span").text(this.default_text);
|
457
|
+
if (this.form_field.options.length <= this.disable_search_threshold) {
|
458
|
+
this.container.addClass("chzn-container-single-nosearch");
|
459
|
+
} else {
|
460
|
+
this.container.removeClass("chzn-container-single-nosearch");
|
461
|
+
}
|
454
462
|
}
|
455
463
|
content = '';
|
456
464
|
_ref = this.results_data;
|
@@ -465,7 +473,7 @@
|
|
465
473
|
} else if (data.selected && !this.is_multiple) {
|
466
474
|
this.selected_item.find("span").text(data.text);
|
467
475
|
if (this.allow_single_deselect) {
|
468
|
-
this.
|
476
|
+
this.single_deselect_control_build();
|
469
477
|
}
|
470
478
|
}
|
471
479
|
}
|
@@ -644,7 +652,7 @@
|
|
644
652
|
} else {
|
645
653
|
this.selected_item.find("span").first().text(item.text);
|
646
654
|
if (this.allow_single_deselect) {
|
647
|
-
this.
|
655
|
+
this.single_deselect_control_build();
|
648
656
|
}
|
649
657
|
}
|
650
658
|
if (!(evt.metaKey && this.is_multiple)) {
|
@@ -673,9 +681,13 @@
|
|
673
681
|
this.form_field_jq.trigger("change");
|
674
682
|
return this.search_field_scale();
|
675
683
|
};
|
684
|
+
Chosen.prototype.single_deselect_control_build = function() {
|
685
|
+
if (this.allow_single_deselect && this.selected_item.find("abbr").length < 1) {
|
686
|
+
return this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>");
|
687
|
+
}
|
688
|
+
};
|
676
689
|
Chosen.prototype.winnow_results = function() {
|
677
|
-
var found, option, part, parts, regex, result_id, results, searchText,
|
678
|
-
startTime = new Date();
|
690
|
+
var found, option, part, parts, regex, result, result_id, results, searchText, startpos, text, zregex, _i, _j, _len, _len2, _ref;
|
679
691
|
this.no_results_clear();
|
680
692
|
results = 0;
|
681
693
|
searchText = this.search_field.val() === this.default_text ? "" : $('<div/>').text($.trim(this.search_field.val())).html();
|
@@ -686,10 +698,11 @@
|
|
686
698
|
option = _ref[_i];
|
687
699
|
if (!option.disabled && !option.empty) {
|
688
700
|
if (option.group) {
|
689
|
-
$('#' + option.dom_id).
|
701
|
+
$('#' + option.dom_id).css('display', 'none');
|
690
702
|
} else if (!(this.is_multiple && option.selected)) {
|
691
703
|
found = false;
|
692
704
|
result_id = option.dom_id;
|
705
|
+
result = $("#" + result_id);
|
693
706
|
if (regex.test(option.html)) {
|
694
707
|
found = true;
|
695
708
|
results += 1;
|
@@ -713,18 +726,16 @@
|
|
713
726
|
} else {
|
714
727
|
text = option.html;
|
715
728
|
}
|
716
|
-
|
717
|
-
|
718
|
-
}
|
719
|
-
this.result_activate($("#" + result_id));
|
729
|
+
result.html(text);
|
730
|
+
this.result_activate(result);
|
720
731
|
if (option.group_array_index != null) {
|
721
|
-
$("#" + this.results_data[option.group_array_index].dom_id).
|
732
|
+
$("#" + this.results_data[option.group_array_index].dom_id).css('display', 'list-item');
|
722
733
|
}
|
723
734
|
} else {
|
724
735
|
if (this.result_highlight && result_id === this.result_highlight.attr('id')) {
|
725
736
|
this.result_clear_highlight();
|
726
737
|
}
|
727
|
-
this.result_deactivate(
|
738
|
+
this.result_deactivate(result);
|
728
739
|
}
|
729
740
|
}
|
730
741
|
}
|
@@ -743,7 +754,7 @@
|
|
743
754
|
for (_i = 0, _len = lis.length; _i < _len; _i++) {
|
744
755
|
li = lis[_i];
|
745
756
|
li = $(li);
|
746
|
-
_results.push(li.hasClass("group-result") ? li.
|
757
|
+
_results.push(li.hasClass("group-result") ? li.css('display', 'auto') : !this.is_multiple || !li.hasClass("result-selected") ? this.result_activate(li) : void 0);
|
747
758
|
}
|
748
759
|
return _results;
|
749
760
|
};
|
@@ -826,6 +837,9 @@
|
|
826
837
|
this.backstroke_length = this.search_field.val().length;
|
827
838
|
break;
|
828
839
|
case 9:
|
840
|
+
if (this.results_showing && !this.is_multiple) {
|
841
|
+
this.result_select(evt);
|
842
|
+
}
|
829
843
|
this.mouse_on_container = false;
|
830
844
|
break;
|
831
845
|
case 13:
|
Binary file
|
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: 3.1.
|
4
|
+
version: 3.1.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-02-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bcrypt-ruby
|
16
|
-
requirement: &
|
16
|
+
requirement: &70159863686960 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70159863686960
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: jquery-rails
|
27
|
-
requirement: &
|
27
|
+
requirement: &70159863684320 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,21 +32,21 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70159863684320
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: kaminari
|
38
|
-
requirement: &
|
38
|
+
requirement: &70159863683580 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.
|
43
|
+
version: 0.13.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70159863683580
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rails
|
49
|
-
requirement: &
|
49
|
+
requirement: &70159863682840 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 3.1.3
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70159863682840
|
58
58
|
description: Ruby on Rails Admin Panel (Engine) to allow trusted users edit structured
|
59
59
|
content.
|
60
60
|
email:
|
@@ -333,7 +333,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
333
333
|
version: '0'
|
334
334
|
segments:
|
335
335
|
- 0
|
336
|
-
hash:
|
336
|
+
hash: -1439892809651849873
|
337
337
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
338
338
|
none: false
|
339
339
|
requirements:
|
@@ -342,10 +342,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
342
342
|
version: '0'
|
343
343
|
segments:
|
344
344
|
- 0
|
345
|
-
hash:
|
345
|
+
hash: -1439892809651849873
|
346
346
|
requirements: []
|
347
347
|
rubyforge_project: typus
|
348
|
-
rubygems_version: 1.8.
|
348
|
+
rubygems_version: 1.8.11
|
349
349
|
signing_key:
|
350
350
|
specification_version: 3
|
351
351
|
summary: Effortless backend interface for Ruby on Rails applications. (Admin scaffold
|