puffer 0.0.11 → 0.0.12
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/helpers/puffer_helper.rb +8 -0
- data/app/views/layouts/puffer.html.erb +5 -11
- data/lib/generators/puffer/install/install_generator.rb +2 -2
- data/lib/generators/puffer/install/templates/puffer.rb +12 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/{application.js → puffer.js} +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/{rails-src.js → rails.js} +0 -0
- data/lib/puffer.rb +14 -0
- data/lib/puffer/controller/mutate.rb +8 -2
- data/lib/puffer/extensions/mapper.rb +2 -2
- data/lib/puffer/inputs.rb +1 -1
- data/lib/puffer/path_set.rb +14 -7
- data/lib/puffer/resource.rb +1 -1
- data/puffer.gemspec +8 -44
- data/spec/dummy/config/initializers/puffer.rb +12 -0
- data/spec/dummy/public/puffer/javascripts/{application.js → puffer.js} +0 -0
- data/spec/dummy/public/puffer/javascripts/{rails-src.js → rails.js} +0 -0
- metadata +10 -46
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-autocompleter-src.js +0 -621
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-autocompleter.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-calendar-src.js +0 -1461
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-calendar.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit-src.js +0 -369
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit.js +0 -13
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox-src.js +0 -905
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox.js +0 -24
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-sortable-src.js +0 -428
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-sortable.js +0 -17
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-sortable.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-src.js +0 -5892
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-tabs-src.js +0 -1145
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-tabs.js +0 -29
- data/lib/generators/puffer/install/templates/puffer/javascripts/right-tabs.js.gz +0 -0
- data/lib/generators/puffer/install/templates/puffer/javascripts/right.js.gz +0 -0
- data/spec/dummy/config/puffer.rb +0 -0
- data/spec/dummy/public/puffer/javascripts/right-autocompleter-src.js +0 -621
- data/spec/dummy/public/puffer/javascripts/right-autocompleter.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-calendar-src.js +0 -1461
- data/spec/dummy/public/puffer/javascripts/right-calendar.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-in-edit-src.js +0 -369
- data/spec/dummy/public/puffer/javascripts/right-in-edit.js +0 -13
- data/spec/dummy/public/puffer/javascripts/right-in-edit.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-lightbox-src.js +0 -905
- data/spec/dummy/public/puffer/javascripts/right-lightbox.js +0 -24
- data/spec/dummy/public/puffer/javascripts/right-lightbox.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-sortable-src.js +0 -428
- data/spec/dummy/public/puffer/javascripts/right-sortable.js +0 -17
- data/spec/dummy/public/puffer/javascripts/right-sortable.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-src.js +0 -5892
- data/spec/dummy/public/puffer/javascripts/right-tabs-src.js +0 -1145
- data/spec/dummy/public/puffer/javascripts/right-tabs.js +0 -29
- data/spec/dummy/public/puffer/javascripts/right-tabs.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right.js.gz +0 -0
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.12
|
@@ -1,5 +1,13 @@
|
|
1
1
|
module PufferHelper
|
2
2
|
|
3
|
+
def puffer_stylesheets
|
4
|
+
stylesheet_link_tag *Puffer.stylesheets.map {|path| "/puffer/stylesheets/#{path}"}.uniq.compact
|
5
|
+
end
|
6
|
+
|
7
|
+
def puffer_javascripts
|
8
|
+
javascript_include_tag *Puffer.javascripts.map {|path| "/puffer/javascripts/#{path}"}.uniq.compact
|
9
|
+
end
|
10
|
+
|
3
11
|
def render_head field
|
4
12
|
field.label
|
5
13
|
end
|
@@ -4,22 +4,16 @@
|
|
4
4
|
<title><%= [@title, 'Puffer'].compact.join(' - ') %></title>
|
5
5
|
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
|
6
6
|
<%= csrf_meta_tag %>
|
7
|
-
<%=
|
8
|
-
<%=
|
9
|
-
<%=
|
10
|
-
|
11
|
-
<%= javascript_include_tag '/puffer/javascripts/right-src' %>
|
12
|
-
<%= javascript_include_tag '/puffer/javascripts/right-calendar-src' %>
|
13
|
-
<%= javascript_include_tag '/puffer/javascripts/right-autocompleter-src' %>
|
14
|
-
<%= javascript_include_tag '/puffer/javascripts/rails-src' %>
|
15
|
-
<%= javascript_include_tag '/puffer/javascripts/application' %>
|
16
|
-
<%= yield :javascript %>
|
7
|
+
<%= puffer_stylesheets %>
|
8
|
+
<%= yield :stylesheets %>
|
9
|
+
<%= puffer_javascripts %>
|
10
|
+
<%= yield :javascripts %>
|
17
11
|
</head>
|
18
12
|
<body>
|
19
13
|
<div class="body">
|
20
14
|
<div class="header">
|
21
15
|
<div class="logo">
|
22
|
-
<%= link_to
|
16
|
+
<%= link_to Puffer.logo, admin_root_path %>
|
23
17
|
</div>
|
24
18
|
<ul class="navigation">
|
25
19
|
<% puffer_navigation do |title, path, current| %>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
class Puffer::InstallGenerator < Rails::Generators::Base
|
2
2
|
source_root File.expand_path('../templates', __FILE__)
|
3
3
|
|
4
|
-
def
|
4
|
+
def generate_assets
|
5
5
|
directory 'puffer', 'public/puffer'
|
6
6
|
end
|
7
7
|
|
8
8
|
def generate_config
|
9
|
-
copy_file 'puffer.rb', 'config/puffer.rb'
|
9
|
+
copy_file 'puffer.rb', 'config/initializers/puffer.rb'
|
10
10
|
end
|
11
11
|
|
12
12
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Use this to configure puffer
|
2
|
+
Puffer.setup do |config|
|
3
|
+
|
4
|
+
# Add additional javascript and stylesheets files to puffer.html.erb layouts
|
5
|
+
# All additional paths should be relative to rails_app/public/puffer/(javascripts|stylesheets)
|
6
|
+
# config.stylesheets += %w(path/to/my/stylesheet)
|
7
|
+
# config.javascripts += %w(path/to/my/javascript)
|
8
|
+
|
9
|
+
# Puffer logo text. At the top-left of the layout. Default - `Puffer`
|
10
|
+
# config.logo = 'My cool application'
|
11
|
+
|
12
|
+
end
|
data/lib/generators/puffer/install/templates/puffer/javascripts/{application.js → puffer.js}
RENAMED
File without changes
|
File without changes
|
data/lib/puffer.rb
CHANGED
@@ -1,4 +1,18 @@
|
|
1
1
|
module Puffer
|
2
|
+
|
3
|
+
mattr_accessor :stylesheets
|
4
|
+
self.stylesheets = %w(reset puffer)
|
5
|
+
|
6
|
+
mattr_accessor :javascripts
|
7
|
+
self.javascripts = %w(right right-calendar right-autocompleter rails puffer)
|
8
|
+
|
9
|
+
mattr_accessor :logo
|
10
|
+
self.logo = 'Puffer'
|
11
|
+
|
12
|
+
def self.setup
|
13
|
+
yield self
|
14
|
+
end
|
15
|
+
|
2
16
|
end
|
3
17
|
|
4
18
|
require 'puffer/engine'
|
@@ -7,10 +7,10 @@ module Puffer
|
|
7
7
|
extend ClassMethods
|
8
8
|
|
9
9
|
layout 'puffer'
|
10
|
-
helper
|
10
|
+
helper :puffer
|
11
11
|
helper_method :puffer?
|
12
12
|
|
13
|
-
|
13
|
+
view_paths_fallbacks :puffer
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -18,6 +18,12 @@ module Puffer
|
|
18
18
|
|
19
19
|
module ClassMethods
|
20
20
|
|
21
|
+
def view_paths_fallbacks *args
|
22
|
+
temp = Puffer::PathSet.new view_paths
|
23
|
+
temp._fallbacks = args.flatten
|
24
|
+
self.view_paths = temp
|
25
|
+
end
|
26
|
+
|
21
27
|
def puffer?; true; end
|
22
28
|
|
23
29
|
end
|
@@ -36,7 +36,7 @@ module Puffer
|
|
36
36
|
end
|
37
37
|
|
38
38
|
resource = ActionDispatch::Routing::Mapper::Resources::SingletonResource.new(resources.pop, options)
|
39
|
-
controller = "#{[@scope[:module], resource.controller].compact.join("/")}_controller".
|
39
|
+
controller = "#{[@scope[:module], resource.controller].compact.join("/")}_controller".camelize.constantize rescue nil
|
40
40
|
|
41
41
|
return if controller.nil? || (controller && !controller.puffer?)
|
42
42
|
|
@@ -95,7 +95,7 @@ module Puffer
|
|
95
95
|
end
|
96
96
|
|
97
97
|
resource = ActionDispatch::Routing::Mapper::Resources::Resource.new(resources.pop, options)
|
98
|
-
controller = "#{[@scope[:module], resource.controller].compact.join("/")}_controller".
|
98
|
+
controller = "#{[@scope[:module], resource.controller].compact.join("/")}_controller".camelize.constantize rescue nil
|
99
99
|
|
100
100
|
return if controller.nil? || (controller && !controller.puffer?)
|
101
101
|
|
data/lib/puffer/inputs.rb
CHANGED
@@ -14,7 +14,7 @@ module Puffer
|
|
14
14
|
map_type :date, :time, :datetime, :timestamp, :to => Puffer::Inputs::DateTime
|
15
15
|
|
16
16
|
def self.map_field field
|
17
|
-
mappings[field.type] || ("Puffer::Inputs::#{field.type.to_s.
|
17
|
+
mappings[field.type] || ("Puffer::Inputs::#{field.type.to_s.camelize}".constantize rescue Puffer::Inputs::Base)
|
18
18
|
end
|
19
19
|
|
20
20
|
end
|
data/lib/puffer/path_set.rb
CHANGED
@@ -1,16 +1,23 @@
|
|
1
1
|
module Puffer
|
2
2
|
class PathSet < ::ActionView::PathSet
|
3
3
|
|
4
|
+
class_attribute :_fallbacks
|
5
|
+
self._fallbacks = []
|
6
|
+
|
4
7
|
def find(path, prefix = nil, partial = false, details = {}, key = nil)
|
8
|
+
prefixes = [prefix].concat _fallbacks
|
9
|
+
paths = prefixes.map {|prefix| "#{prefix}/#{path}"}.join(', ')
|
10
|
+
|
5
11
|
begin
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
rescue ::ActionView::MissingTemplate => ee
|
11
|
-
raise e
|
12
|
+
template = begin
|
13
|
+
super(path, prefixes.shift.to_s, partial, details, key)
|
14
|
+
rescue ::ActionView::MissingTemplate => e
|
15
|
+
nil
|
12
16
|
end
|
13
|
-
end
|
17
|
+
end until prefixes.empty? || template
|
18
|
+
|
19
|
+
raise ::ActionView::MissingTemplate.new(self, paths, details, partial) unless template
|
20
|
+
template
|
14
21
|
end
|
15
22
|
|
16
23
|
end
|
data/lib/puffer/resource.rb
CHANGED
@@ -15,7 +15,7 @@ module Puffer
|
|
15
15
|
|
16
16
|
def initialize params, request = nil
|
17
17
|
@action = params.delete :action
|
18
|
-
@controller = "#{params[:controller]}_controller".
|
18
|
+
@controller = "#{params[:controller]}_controller".camelize.constantize
|
19
19
|
@controller_name = controller.controller_name
|
20
20
|
controller_segments = params.delete(:controller).split('/')
|
21
21
|
@prefix = controller_segments.first
|
data/puffer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{puffer}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.12"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["pyromaniac"]
|
12
|
-
s.date = %q{2011-02-
|
12
|
+
s.date = %q{2011-02-05}
|
13
13
|
s.description = %q{In Soviet Russia puffer admins you}
|
14
14
|
s.email = %q{kinwizard@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -47,29 +47,11 @@ Gem::Specification.new do |s|
|
|
47
47
|
"lib/generators/puffer/install/USAGE",
|
48
48
|
"lib/generators/puffer/install/install_generator.rb",
|
49
49
|
"lib/generators/puffer/install/templates/puffer.rb",
|
50
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/
|
51
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/rails
|
52
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-autocompleter-src.js",
|
50
|
+
"lib/generators/puffer/install/templates/puffer/javascripts/puffer.js",
|
51
|
+
"lib/generators/puffer/install/templates/puffer/javascripts/rails.js",
|
53
52
|
"lib/generators/puffer/install/templates/puffer/javascripts/right-autocompleter.js",
|
54
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-autocompleter.js.gz",
|
55
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-calendar-src.js",
|
56
53
|
"lib/generators/puffer/install/templates/puffer/javascripts/right-calendar.js",
|
57
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-calendar.js.gz",
|
58
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit-src.js",
|
59
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit.js",
|
60
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit.js.gz",
|
61
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox-src.js",
|
62
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox.js",
|
63
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox.js.gz",
|
64
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-sortable-src.js",
|
65
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-sortable.js",
|
66
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-sortable.js.gz",
|
67
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-src.js",
|
68
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-tabs-src.js",
|
69
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-tabs.js",
|
70
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right-tabs.js.gz",
|
71
54
|
"lib/generators/puffer/install/templates/puffer/javascripts/right.js",
|
72
|
-
"lib/generators/puffer/install/templates/puffer/javascripts/right.js.gz",
|
73
55
|
"lib/generators/puffer/install/templates/puffer/stylesheets/puffer.css",
|
74
56
|
"lib/generators/puffer/install/templates/puffer/stylesheets/reset.css",
|
75
57
|
"lib/puffer.rb",
|
@@ -132,10 +114,10 @@ Gem::Specification.new do |s|
|
|
132
114
|
"spec/dummy/config/initializers/backtrace_silencers.rb",
|
133
115
|
"spec/dummy/config/initializers/inflections.rb",
|
134
116
|
"spec/dummy/config/initializers/mime_types.rb",
|
117
|
+
"spec/dummy/config/initializers/puffer.rb",
|
135
118
|
"spec/dummy/config/initializers/secret_token.rb",
|
136
119
|
"spec/dummy/config/initializers/session_store.rb",
|
137
120
|
"spec/dummy/config/locales/en.yml",
|
138
|
-
"spec/dummy/config/puffer.rb",
|
139
121
|
"spec/dummy/config/routes.rb",
|
140
122
|
"spec/dummy/db/migrate/20100930132559_create_admin_users.rb",
|
141
123
|
"spec/dummy/db/migrate/20100930132656_create_admin_posts.rb",
|
@@ -156,29 +138,11 @@ Gem::Specification.new do |s|
|
|
156
138
|
"spec/dummy/public/javascripts/effects.js",
|
157
139
|
"spec/dummy/public/javascripts/prototype.js",
|
158
140
|
"spec/dummy/public/javascripts/rails.js",
|
159
|
-
"spec/dummy/public/puffer/javascripts/
|
160
|
-
"spec/dummy/public/puffer/javascripts/rails
|
161
|
-
"spec/dummy/public/puffer/javascripts/right-autocompleter-src.js",
|
141
|
+
"spec/dummy/public/puffer/javascripts/puffer.js",
|
142
|
+
"spec/dummy/public/puffer/javascripts/rails.js",
|
162
143
|
"spec/dummy/public/puffer/javascripts/right-autocompleter.js",
|
163
|
-
"spec/dummy/public/puffer/javascripts/right-autocompleter.js.gz",
|
164
|
-
"spec/dummy/public/puffer/javascripts/right-calendar-src.js",
|
165
144
|
"spec/dummy/public/puffer/javascripts/right-calendar.js",
|
166
|
-
"spec/dummy/public/puffer/javascripts/right-calendar.js.gz",
|
167
|
-
"spec/dummy/public/puffer/javascripts/right-in-edit-src.js",
|
168
|
-
"spec/dummy/public/puffer/javascripts/right-in-edit.js",
|
169
|
-
"spec/dummy/public/puffer/javascripts/right-in-edit.js.gz",
|
170
|
-
"spec/dummy/public/puffer/javascripts/right-lightbox-src.js",
|
171
|
-
"spec/dummy/public/puffer/javascripts/right-lightbox.js",
|
172
|
-
"spec/dummy/public/puffer/javascripts/right-lightbox.js.gz",
|
173
|
-
"spec/dummy/public/puffer/javascripts/right-sortable-src.js",
|
174
|
-
"spec/dummy/public/puffer/javascripts/right-sortable.js",
|
175
|
-
"spec/dummy/public/puffer/javascripts/right-sortable.js.gz",
|
176
|
-
"spec/dummy/public/puffer/javascripts/right-src.js",
|
177
|
-
"spec/dummy/public/puffer/javascripts/right-tabs-src.js",
|
178
|
-
"spec/dummy/public/puffer/javascripts/right-tabs.js",
|
179
|
-
"spec/dummy/public/puffer/javascripts/right-tabs.js.gz",
|
180
145
|
"spec/dummy/public/puffer/javascripts/right.js",
|
181
|
-
"spec/dummy/public/puffer/javascripts/right.js.gz",
|
182
146
|
"spec/dummy/public/puffer/stylesheets/puffer.css",
|
183
147
|
"spec/dummy/public/puffer/stylesheets/reset.css",
|
184
148
|
"spec/dummy/public/stylesheets/.gitkeep",
|
@@ -227,9 +191,9 @@ Gem::Specification.new do |s|
|
|
227
191
|
"spec/dummy/config/initializers/backtrace_silencers.rb",
|
228
192
|
"spec/dummy/config/initializers/inflections.rb",
|
229
193
|
"spec/dummy/config/initializers/mime_types.rb",
|
194
|
+
"spec/dummy/config/initializers/puffer.rb",
|
230
195
|
"spec/dummy/config/initializers/secret_token.rb",
|
231
196
|
"spec/dummy/config/initializers/session_store.rb",
|
232
|
-
"spec/dummy/config/puffer.rb",
|
233
197
|
"spec/dummy/config/routes.rb",
|
234
198
|
"spec/dummy/db/migrate/20100930132559_create_admin_users.rb",
|
235
199
|
"spec/dummy/db/migrate/20100930132656_create_admin_posts.rb",
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Use this to configure puffer
|
2
|
+
Puffer.setup do |config|
|
3
|
+
|
4
|
+
# Add additional javascript and stylesheets files to puffer.html.erb layouts
|
5
|
+
# All additional paths should be relative to rails_app/public/puffer/(javascripts|stylesheets)
|
6
|
+
# config.stylesheets += %w(path/to/my/stylesheet)
|
7
|
+
# config.javascripts += %w(path/to/my/javascript)
|
8
|
+
|
9
|
+
# Puffer logo text. At the top-left of the layout. Default - `Puffer`
|
10
|
+
# config.logo = 'My cool application'
|
11
|
+
|
12
|
+
end
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puffer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 12
|
10
|
+
version: 0.0.12
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- pyromaniac
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-02-
|
18
|
+
date: 2011-02-05 00:00:00 +03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -221,29 +221,11 @@ files:
|
|
221
221
|
- lib/generators/puffer/install/USAGE
|
222
222
|
- lib/generators/puffer/install/install_generator.rb
|
223
223
|
- lib/generators/puffer/install/templates/puffer.rb
|
224
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/
|
225
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/rails
|
226
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-autocompleter-src.js
|
224
|
+
- lib/generators/puffer/install/templates/puffer/javascripts/puffer.js
|
225
|
+
- lib/generators/puffer/install/templates/puffer/javascripts/rails.js
|
227
226
|
- lib/generators/puffer/install/templates/puffer/javascripts/right-autocompleter.js
|
228
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-autocompleter.js.gz
|
229
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-calendar-src.js
|
230
227
|
- lib/generators/puffer/install/templates/puffer/javascripts/right-calendar.js
|
231
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-calendar.js.gz
|
232
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit-src.js
|
233
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit.js
|
234
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-in-edit.js.gz
|
235
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox-src.js
|
236
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox.js
|
237
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-lightbox.js.gz
|
238
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-sortable-src.js
|
239
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-sortable.js
|
240
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-sortable.js.gz
|
241
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-src.js
|
242
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-tabs-src.js
|
243
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-tabs.js
|
244
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right-tabs.js.gz
|
245
228
|
- lib/generators/puffer/install/templates/puffer/javascripts/right.js
|
246
|
-
- lib/generators/puffer/install/templates/puffer/javascripts/right.js.gz
|
247
229
|
- lib/generators/puffer/install/templates/puffer/stylesheets/puffer.css
|
248
230
|
- lib/generators/puffer/install/templates/puffer/stylesheets/reset.css
|
249
231
|
- lib/puffer.rb
|
@@ -306,10 +288,10 @@ files:
|
|
306
288
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
307
289
|
- spec/dummy/config/initializers/inflections.rb
|
308
290
|
- spec/dummy/config/initializers/mime_types.rb
|
291
|
+
- spec/dummy/config/initializers/puffer.rb
|
309
292
|
- spec/dummy/config/initializers/secret_token.rb
|
310
293
|
- spec/dummy/config/initializers/session_store.rb
|
311
294
|
- spec/dummy/config/locales/en.yml
|
312
|
-
- spec/dummy/config/puffer.rb
|
313
295
|
- spec/dummy/config/routes.rb
|
314
296
|
- spec/dummy/db/migrate/20100930132559_create_admin_users.rb
|
315
297
|
- spec/dummy/db/migrate/20100930132656_create_admin_posts.rb
|
@@ -330,29 +312,11 @@ files:
|
|
330
312
|
- spec/dummy/public/javascripts/effects.js
|
331
313
|
- spec/dummy/public/javascripts/prototype.js
|
332
314
|
- spec/dummy/public/javascripts/rails.js
|
333
|
-
- spec/dummy/public/puffer/javascripts/
|
334
|
-
- spec/dummy/public/puffer/javascripts/rails
|
335
|
-
- spec/dummy/public/puffer/javascripts/right-autocompleter-src.js
|
315
|
+
- spec/dummy/public/puffer/javascripts/puffer.js
|
316
|
+
- spec/dummy/public/puffer/javascripts/rails.js
|
336
317
|
- spec/dummy/public/puffer/javascripts/right-autocompleter.js
|
337
|
-
- spec/dummy/public/puffer/javascripts/right-autocompleter.js.gz
|
338
|
-
- spec/dummy/public/puffer/javascripts/right-calendar-src.js
|
339
318
|
- spec/dummy/public/puffer/javascripts/right-calendar.js
|
340
|
-
- spec/dummy/public/puffer/javascripts/right-calendar.js.gz
|
341
|
-
- spec/dummy/public/puffer/javascripts/right-in-edit-src.js
|
342
|
-
- spec/dummy/public/puffer/javascripts/right-in-edit.js
|
343
|
-
- spec/dummy/public/puffer/javascripts/right-in-edit.js.gz
|
344
|
-
- spec/dummy/public/puffer/javascripts/right-lightbox-src.js
|
345
|
-
- spec/dummy/public/puffer/javascripts/right-lightbox.js
|
346
|
-
- spec/dummy/public/puffer/javascripts/right-lightbox.js.gz
|
347
|
-
- spec/dummy/public/puffer/javascripts/right-sortable-src.js
|
348
|
-
- spec/dummy/public/puffer/javascripts/right-sortable.js
|
349
|
-
- spec/dummy/public/puffer/javascripts/right-sortable.js.gz
|
350
|
-
- spec/dummy/public/puffer/javascripts/right-src.js
|
351
|
-
- spec/dummy/public/puffer/javascripts/right-tabs-src.js
|
352
|
-
- spec/dummy/public/puffer/javascripts/right-tabs.js
|
353
|
-
- spec/dummy/public/puffer/javascripts/right-tabs.js.gz
|
354
319
|
- spec/dummy/public/puffer/javascripts/right.js
|
355
|
-
- spec/dummy/public/puffer/javascripts/right.js.gz
|
356
320
|
- spec/dummy/public/puffer/stylesheets/puffer.css
|
357
321
|
- spec/dummy/public/puffer/stylesheets/reset.css
|
358
322
|
- spec/dummy/public/stylesheets/.gitkeep
|
@@ -430,9 +394,9 @@ test_files:
|
|
430
394
|
- spec/dummy/config/initializers/backtrace_silencers.rb
|
431
395
|
- spec/dummy/config/initializers/inflections.rb
|
432
396
|
- spec/dummy/config/initializers/mime_types.rb
|
397
|
+
- spec/dummy/config/initializers/puffer.rb
|
433
398
|
- spec/dummy/config/initializers/secret_token.rb
|
434
399
|
- spec/dummy/config/initializers/session_store.rb
|
435
|
-
- spec/dummy/config/puffer.rb
|
436
400
|
- spec/dummy/config/routes.rb
|
437
401
|
- spec/dummy/db/migrate/20100930132559_create_admin_users.rb
|
438
402
|
- spec/dummy/db/migrate/20100930132656_create_admin_posts.rb
|
@@ -1,621 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* RightJS-UI: Autocompleter
|
3
|
-
* http://rightjs.org/ui/autocompleter
|
4
|
-
*
|
5
|
-
* Copyright (C) 2010 Nikolay Nemshilov
|
6
|
-
*/
|
7
|
-
var Autocompleter = RightJS.Autocompleter = (function(document, RightJS) {
|
8
|
-
/**
|
9
|
-
* This module defines the basic widgets constructor
|
10
|
-
* it creates an abstract proxy with the common functionality
|
11
|
-
* which then we reuse and override in the actual widgets
|
12
|
-
*
|
13
|
-
* Copyright (C) 2010-2011 Nikolay Nemshilov
|
14
|
-
*/
|
15
|
-
|
16
|
-
/**
|
17
|
-
* Autocompleter initializer
|
18
|
-
*
|
19
|
-
* Copyright (C) 2010 Nikolay Nemshilov
|
20
|
-
*/
|
21
|
-
var R = RightJS,
|
22
|
-
$ = RightJS.$,
|
23
|
-
$w = RightJS.$w,
|
24
|
-
$E = RightJS.$E,
|
25
|
-
Xhr = RightJS.Xhr,
|
26
|
-
RegExp = RightJS.RegExp,
|
27
|
-
isArray = RightJS.isArray;
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
/**
|
37
|
-
* The widget units constructor
|
38
|
-
*
|
39
|
-
* @param String tag-name or Object methods
|
40
|
-
* @param Object methods
|
41
|
-
* @return Widget wrapper
|
42
|
-
*/
|
43
|
-
function Widget(tag_name, methods) {
|
44
|
-
if (!methods) {
|
45
|
-
methods = tag_name;
|
46
|
-
tag_name = 'DIV';
|
47
|
-
}
|
48
|
-
|
49
|
-
/**
|
50
|
-
* An Abstract Widget Unit
|
51
|
-
*
|
52
|
-
* Copyright (C) 2010 Nikolay Nemshilov
|
53
|
-
*/
|
54
|
-
var AbstractWidget = new RightJS.Class(RightJS.Element.Wrappers[tag_name] || RightJS.Element, {
|
55
|
-
/**
|
56
|
-
* The common constructor
|
57
|
-
*
|
58
|
-
* @param Object options
|
59
|
-
* @param String optional tag name
|
60
|
-
* @return void
|
61
|
-
*/
|
62
|
-
initialize: function(key, options) {
|
63
|
-
this.key = key;
|
64
|
-
var args = [{'class': 'rui-' + key}];
|
65
|
-
|
66
|
-
// those two have different constructors
|
67
|
-
if (!(this instanceof RightJS.Input || this instanceof RightJS.Form)) {
|
68
|
-
args.unshift(tag_name);
|
69
|
-
}
|
70
|
-
this.$super.apply(this, args);
|
71
|
-
|
72
|
-
if (RightJS.isString(options)) {
|
73
|
-
options = RightJS.$(options);
|
74
|
-
}
|
75
|
-
|
76
|
-
// if the options is another element then
|
77
|
-
// try to dynamically rewrap it with our widget
|
78
|
-
if (options instanceof RightJS.Element) {
|
79
|
-
this._ = options._;
|
80
|
-
if ('$listeners' in options) {
|
81
|
-
options.$listeners = options.$listeners;
|
82
|
-
}
|
83
|
-
options = {};
|
84
|
-
}
|
85
|
-
this.setOptions(options, this);
|
86
|
-
|
87
|
-
return (RightJS.Wrapper.Cache[RightJS.$uid(this._)] = this);
|
88
|
-
},
|
89
|
-
|
90
|
-
// protected
|
91
|
-
|
92
|
-
/**
|
93
|
-
* Catches the options
|
94
|
-
*
|
95
|
-
* @param Object user-options
|
96
|
-
* @param Element element with contextual options
|
97
|
-
* @return void
|
98
|
-
*/
|
99
|
-
setOptions: function(options, element) {
|
100
|
-
element = element || this;
|
101
|
-
RightJS.Options.setOptions.call(this,
|
102
|
-
RightJS.Object.merge(options, eval("("+(
|
103
|
-
element.get('data-'+ this.key) || '{}'
|
104
|
-
)+")"))
|
105
|
-
);
|
106
|
-
return this;
|
107
|
-
}
|
108
|
-
});
|
109
|
-
|
110
|
-
/**
|
111
|
-
* Creating the actual widget class
|
112
|
-
*
|
113
|
-
*/
|
114
|
-
var Klass = new RightJS.Class(AbstractWidget, methods);
|
115
|
-
|
116
|
-
// creating the widget related shortcuts
|
117
|
-
RightJS.Observer.createShortcuts(Klass.prototype, Klass.EVENTS || []);
|
118
|
-
|
119
|
-
return Klass;
|
120
|
-
}
|
121
|
-
|
122
|
-
|
123
|
-
/**
|
124
|
-
* A shared module to create textual spinners
|
125
|
-
*
|
126
|
-
* Copyright (C) 2010-2011 Nikolay Nemshilov
|
127
|
-
*/
|
128
|
-
var Spinner = new RightJS.Class(RightJS.Element, {
|
129
|
-
/**
|
130
|
-
* Constructor
|
131
|
-
*
|
132
|
-
* @param Number optional spinner size (4 by default)
|
133
|
-
* @return void
|
134
|
-
*/
|
135
|
-
initialize: function(size) {
|
136
|
-
this.$super('div', {'class': 'rui-spinner'});
|
137
|
-
this.dots = [];
|
138
|
-
|
139
|
-
for (var i=0; i < (size || 4); i++) {
|
140
|
-
this.dots.push(new RightJS.Element('div'));
|
141
|
-
}
|
142
|
-
|
143
|
-
this.dots[0].addClass('glowing');
|
144
|
-
this.insert(this.dots);
|
145
|
-
RightJS(this.shift).bind(this).periodical(300);
|
146
|
-
},
|
147
|
-
|
148
|
-
/**
|
149
|
-
* Shifts the spinner elements
|
150
|
-
*
|
151
|
-
* @return void
|
152
|
-
*/
|
153
|
-
shift: function() {
|
154
|
-
if (this.visible()) {
|
155
|
-
var dot = this.dots.pop();
|
156
|
-
this.dots.unshift(dot);
|
157
|
-
this.insert(dot, 'top');
|
158
|
-
}
|
159
|
-
}
|
160
|
-
});
|
161
|
-
|
162
|
-
|
163
|
-
/**
|
164
|
-
* A shared module that toggles a widget visibility status
|
165
|
-
* in a uniformed way according to the options settings
|
166
|
-
*
|
167
|
-
* Copyright (C) 2010-2011 Nikolay Nemshilov
|
168
|
-
*/
|
169
|
-
var Toggler = {
|
170
|
-
/**
|
171
|
-
* Shows the element
|
172
|
-
*
|
173
|
-
* @param String fx-name
|
174
|
-
* @param Object fx-options
|
175
|
-
* @return Element this
|
176
|
-
*/
|
177
|
-
show: function(fx_name, fx_options) {
|
178
|
-
this.constructor.current = this;
|
179
|
-
return Toggler_toggle(this, 'show', fx_name, fx_options);
|
180
|
-
},
|
181
|
-
|
182
|
-
/**
|
183
|
-
* Hides the element
|
184
|
-
*
|
185
|
-
* @param String fx-name
|
186
|
-
* @param Object fx-options
|
187
|
-
* @return Element this
|
188
|
-
*/
|
189
|
-
hide: function(fx_name, fx_options) {
|
190
|
-
this.constructor.current = null;
|
191
|
-
return Toggler_toggle(this, 'show', fx_name, fx_options);
|
192
|
-
},
|
193
|
-
|
194
|
-
/**
|
195
|
-
* Toggles the widget at the given element
|
196
|
-
*
|
197
|
-
* @param Element the related element
|
198
|
-
* @param String position right/bottom (bottom is the default)
|
199
|
-
* @param Boolean marker if the element should be resized to the element size
|
200
|
-
* @return Widget this
|
201
|
-
*/
|
202
|
-
showAt: function(element, where, resize) {
|
203
|
-
this.hide(null).shownAt = element = RightJS.$(element);
|
204
|
-
|
205
|
-
// moves this element at the given one
|
206
|
-
Toggler_re_position.call(this, element, where, resize);
|
207
|
-
|
208
|
-
return this.show();
|
209
|
-
},
|
210
|
-
|
211
|
-
/**
|
212
|
-
* Toggles the widget at the given element
|
213
|
-
*
|
214
|
-
* @param Element the related element
|
215
|
-
* @param String position top/left/right/bottom (bottom is the default)
|
216
|
-
* @param Boolean marker if the element should be resized to the element size
|
217
|
-
* @return Widget this
|
218
|
-
*/
|
219
|
-
toggleAt: function(element, where, resize) {
|
220
|
-
return this.hidden() ? this.showAt(element, where, resize) : this.hide();
|
221
|
-
}
|
222
|
-
};
|
223
|
-
|
224
|
-
|
225
|
-
/**
|
226
|
-
* toggles the element's state according to the current settings
|
227
|
-
*
|
228
|
-
* @param event String 'show' or 'hide' the event name
|
229
|
-
* @param String an optional fx-name
|
230
|
-
* @param Object an optional fx-options hash
|
231
|
-
* @return void
|
232
|
-
*/
|
233
|
-
function Toggler_toggle(element, event, fx_name, fx_options) {
|
234
|
-
if (RightJS.Fx) {
|
235
|
-
if (fx_name === undefined) {
|
236
|
-
fx_name = element.options.fxName;
|
237
|
-
|
238
|
-
if (fx_options === undefined) {
|
239
|
-
fx_options = {
|
240
|
-
duration: element.options.fxDuration,
|
241
|
-
onFinish: RightJS(element.fire).bind(element, event)
|
242
|
-
};
|
243
|
-
|
244
|
-
// hide on double time
|
245
|
-
if (event === 'hide') {
|
246
|
-
fx_options.duration = (RightJS.Fx.Durations[fx_options.duration] ||
|
247
|
-
fx_options.duration) / 2;
|
248
|
-
}
|
249
|
-
}
|
250
|
-
}
|
251
|
-
}
|
252
|
-
|
253
|
-
// manually trigger the event if no fx were specified
|
254
|
-
if (!RightJS.Fx || !fx_name) { element.fire(event); }
|
255
|
-
|
256
|
-
return element.$super(fx_name, fx_options);
|
257
|
-
}
|
258
|
-
|
259
|
-
/**
|
260
|
-
* Relatively positions the current element
|
261
|
-
* against the specified one
|
262
|
-
*
|
263
|
-
* NOTE: this function is called in a context
|
264
|
-
* of another element
|
265
|
-
*
|
266
|
-
* @param Element the target element
|
267
|
-
* @param String position 'right' or 'bottom'
|
268
|
-
* @param Boolean if `true` then the element size will be adjusted
|
269
|
-
* @return void
|
270
|
-
*/
|
271
|
-
function Toggler_re_position(element, where, resize) {
|
272
|
-
var anchor = this.reAnchor || (this.reAnchor =
|
273
|
-
new RightJS.Element('div', {'class': 'rui-re-anchor'}))
|
274
|
-
.insert(this),
|
275
|
-
|
276
|
-
pos = anchor.insertTo(element, 'after').position(),
|
277
|
-
dims = element.dimensions(), target = this,
|
278
|
-
|
279
|
-
border_top = parseInt(element.getStyle('borderTopWidth')),
|
280
|
-
border_left = parseInt(element.getStyle('borderLeftWidth')),
|
281
|
-
border_right = parseInt(element.getStyle('borderRightWidth')),
|
282
|
-
border_bottom = parseInt(element.getStyle('borderBottomWidth')),
|
283
|
-
|
284
|
-
top = dims.top - pos.y + border_top,
|
285
|
-
left = dims.left - pos.x + border_left,
|
286
|
-
width = dims.width - border_left - border_right,
|
287
|
-
height = dims.height - border_top - border_bottom;
|
288
|
-
|
289
|
-
// making the element to appear so we could read it's sizes
|
290
|
-
target.setStyle('visibility:hidden').show(null);
|
291
|
-
|
292
|
-
if (where === 'right') {
|
293
|
-
left += width - target.size().x;
|
294
|
-
} else { // bottom
|
295
|
-
top += height;
|
296
|
-
}
|
297
|
-
|
298
|
-
target.moveTo(left, top);
|
299
|
-
|
300
|
-
if (resize) {
|
301
|
-
if (where === 'left' || where === 'right') {
|
302
|
-
target.setHeight(height);
|
303
|
-
} else {
|
304
|
-
target.setWidth(width);
|
305
|
-
}
|
306
|
-
}
|
307
|
-
|
308
|
-
// rolling the invisibility back
|
309
|
-
target.setStyle('visibility:visible').hide(null);
|
310
|
-
}
|
311
|
-
|
312
|
-
/**
|
313
|
-
* The RightJS UI Autocompleter unit base class
|
314
|
-
*
|
315
|
-
* Copyright (C) 2009-2011 Nikolay Nemshilov
|
316
|
-
*/
|
317
|
-
var Autocompleter = new Widget('UL', {
|
318
|
-
include: Toggler,
|
319
|
-
|
320
|
-
extend: {
|
321
|
-
version: '2.2.0',
|
322
|
-
|
323
|
-
EVENTS: $w('show hide update load select done'),
|
324
|
-
|
325
|
-
Options: {
|
326
|
-
url: document.location.href,
|
327
|
-
param: 'search',
|
328
|
-
method: 'get',
|
329
|
-
|
330
|
-
minLength: 1, // the minimal length when it starts work
|
331
|
-
threshold: 200, // the typing pause threshold
|
332
|
-
|
333
|
-
cache: true, // use the results cache
|
334
|
-
local: null, // an optional local search results list
|
335
|
-
|
336
|
-
fxName: 'slide', // list appearance fx name
|
337
|
-
fxDuration: 'short', // list appearance fx duration
|
338
|
-
|
339
|
-
spinner: 'native', // spinner element reference
|
340
|
-
|
341
|
-
cssRule: 'input[data-autocompleter]' // the auto-initialization css-rule
|
342
|
-
}
|
343
|
-
},
|
344
|
-
|
345
|
-
/**
|
346
|
-
* basic constructor
|
347
|
-
*
|
348
|
-
* @param mixed the input element reference, a string id or the element instance
|
349
|
-
* @param Object options
|
350
|
-
*/
|
351
|
-
initialize: function(input, options) {
|
352
|
-
this.input = $(input); // KEEP IT before the super call
|
353
|
-
|
354
|
-
this
|
355
|
-
.$super('autocompleter', options)
|
356
|
-
.addClass('rui-dd-menu')
|
357
|
-
.onMousedown(this.clicked);
|
358
|
-
|
359
|
-
this.input.autocompleter = this;
|
360
|
-
},
|
361
|
-
|
362
|
-
/**
|
363
|
-
* Destructor
|
364
|
-
*
|
365
|
-
* @return Autocompleter this
|
366
|
-
*/
|
367
|
-
destroy: function() {
|
368
|
-
delete(this.input.autocompleter);
|
369
|
-
return this;
|
370
|
-
},
|
371
|
-
|
372
|
-
/**
|
373
|
-
* picks the next item on the list
|
374
|
-
*
|
375
|
-
* @return Autocompleter this
|
376
|
-
*/
|
377
|
-
prev: function() {
|
378
|
-
return this.pick('prev');
|
379
|
-
},
|
380
|
-
|
381
|
-
/**
|
382
|
-
* picks the next item on the list
|
383
|
-
*
|
384
|
-
* @return Autocompleter this
|
385
|
-
*/
|
386
|
-
next: function() {
|
387
|
-
return this.pick('next');
|
388
|
-
},
|
389
|
-
|
390
|
-
/**
|
391
|
-
* triggers the done event, sets up the value and closes the list
|
392
|
-
*
|
393
|
-
* @return Autocompleter this
|
394
|
-
*/
|
395
|
-
done: function(current) {
|
396
|
-
current = current || this.first('li.current');
|
397
|
-
|
398
|
-
if (current) {
|
399
|
-
current.radioClass('current');
|
400
|
-
this.input.setValue(R(current.html()).stripTags());
|
401
|
-
this.fire('done');
|
402
|
-
}
|
403
|
-
|
404
|
-
return this.hide();
|
405
|
-
},
|
406
|
-
|
407
|
-
// protected
|
408
|
-
|
409
|
-
// preprocessing the urls a bit
|
410
|
-
setOptions: function(options) {
|
411
|
-
this.$super(options, this.input);
|
412
|
-
|
413
|
-
options = this.options;
|
414
|
-
|
415
|
-
// building the correct url template with a placeholder
|
416
|
-
if (!R(options.url).includes('%{search}')) {
|
417
|
-
options.url += (R(options.url).includes('?') ? '&' : '?') + options.param + '=%{search}';
|
418
|
-
}
|
419
|
-
},
|
420
|
-
|
421
|
-
// works with the 'prev' and 'next' methods
|
422
|
-
pick: function(which_one) {
|
423
|
-
var items = this.children(),
|
424
|
-
current = items.first('hasClass', 'current'),
|
425
|
-
index = items.indexOf(current);
|
426
|
-
|
427
|
-
if (which_one == 'prev') {
|
428
|
-
current = index < 1 ? items.last() : items[index < 0 ? 0 : (index-1)];
|
429
|
-
} else if (which_one == 'next') {
|
430
|
-
current = index < 0 || index == (items.length - 1) ?
|
431
|
-
items.first() : items[index + 1];
|
432
|
-
}
|
433
|
-
|
434
|
-
return this.fire('select', {item: current.radioClass('current')});
|
435
|
-
},
|
436
|
-
|
437
|
-
// handles mouse clicks on the list element
|
438
|
-
clicked: function(event) {
|
439
|
-
this.done(event.stop().find('li'));
|
440
|
-
},
|
441
|
-
|
442
|
-
// handles the key-press events
|
443
|
-
keypressed: function(event) {
|
444
|
-
if (this.input.value().length >= this.options.minLength) {
|
445
|
-
if (this.timeout) {
|
446
|
-
this.timeout.cancel();
|
447
|
-
}
|
448
|
-
this.timeout = R(this.trigger).bind(this).delay(this.options.threshold);
|
449
|
-
} else {
|
450
|
-
return this.hide();
|
451
|
-
}
|
452
|
-
},
|
453
|
-
|
454
|
-
// triggers the actual action
|
455
|
-
trigger: function() {
|
456
|
-
this.timeout = null;
|
457
|
-
|
458
|
-
this.cache = this.cache || {};
|
459
|
-
var search = this.input.value(), options = this.options;
|
460
|
-
|
461
|
-
if (search.length < options.minLength) { return this.hide(); }
|
462
|
-
|
463
|
-
if (this.cache[search]) {
|
464
|
-
this.suggest(this.cache[search], search);
|
465
|
-
} else if (isArray(options.local)) {
|
466
|
-
this.suggest(this.findLocal(search), search);
|
467
|
-
} else {
|
468
|
-
this.request = Xhr.load(options.url.replace('%{search}', encodeURIComponent(search)), {
|
469
|
-
method: options.method,
|
470
|
-
spinner: this.getSpinner(),
|
471
|
-
onComplete: R(function(response) {
|
472
|
-
this.fire('load').suggest(response.text, search);
|
473
|
-
}).bind(this)
|
474
|
-
});
|
475
|
-
}
|
476
|
-
},
|
477
|
-
|
478
|
-
// updates the suggestions list
|
479
|
-
suggest: function(result_text, search) {
|
480
|
-
// saving the result in cache
|
481
|
-
if (this.options.cache) {
|
482
|
-
this.cache[search] = result_text;
|
483
|
-
}
|
484
|
-
|
485
|
-
if (!R(result_text).blank()) {
|
486
|
-
this.update(result_text.replace(/<ul[^>]*>|<\/ul>/im, ''));
|
487
|
-
this.fire('update');
|
488
|
-
if (!this._connected || this.hidden()) {
|
489
|
-
this.showAt(this.input, 'bottom', 'resize');
|
490
|
-
this._connected = true;
|
491
|
-
}
|
492
|
-
} else {
|
493
|
-
this.hide();
|
494
|
-
}
|
495
|
-
|
496
|
-
return this;
|
497
|
-
},
|
498
|
-
|
499
|
-
// performs the locals search
|
500
|
-
findLocal: function(search) {
|
501
|
-
var regexp = new RegExp("("+RegExp.escape(search)+")", 'ig');
|
502
|
-
|
503
|
-
return R(this.options.local).map(function(option) {
|
504
|
-
if (option.match(regexp)) {
|
505
|
-
return '<li>'+ option.replace(regexp, '<strong>$1</strong>') +'</li>';
|
506
|
-
}
|
507
|
-
}).compact().join('');
|
508
|
-
},
|
509
|
-
|
510
|
-
// builds a native textual spinner if necessary
|
511
|
-
getSpinner: function() {
|
512
|
-
var options = this.options, spinner = options.spinner;
|
513
|
-
|
514
|
-
if (spinner == 'native') {
|
515
|
-
spinner = options.spinner = new Spinner(3).insertTo(this);
|
516
|
-
spinner.addClass('rui-autocompleter-spinner');
|
517
|
-
}
|
518
|
-
|
519
|
-
// positioning the native spinner
|
520
|
-
if (spinner instanceof Spinner) {
|
521
|
-
Toggler_re_position.call(spinner, this.input, 'right', 'resize');
|
522
|
-
}
|
523
|
-
|
524
|
-
return spinner;
|
525
|
-
}
|
526
|
-
});
|
527
|
-
|
528
|
-
|
529
|
-
/**
|
530
|
-
* The document events hooking
|
531
|
-
*
|
532
|
-
* Copyright (C) 2009-2010 Nikolay Nemshilov
|
533
|
-
*/
|
534
|
-
$(document).on({
|
535
|
-
/**
|
536
|
-
* Initializes autocompleters on-focus
|
537
|
-
*
|
538
|
-
* @param Event focus
|
539
|
-
* @return void
|
540
|
-
*/
|
541
|
-
focus: function(event) {
|
542
|
-
var target = event.target;
|
543
|
-
|
544
|
-
if (target && (target instanceof RightJS.Element) && (target.autocompleter || target.match(Autocompleter.Options.cssRule))) {
|
545
|
-
if (!target.autocompleter) {
|
546
|
-
new Autocompleter(target);
|
547
|
-
}
|
548
|
-
}
|
549
|
-
},
|
550
|
-
|
551
|
-
/**
|
552
|
-
* Hides autocompleters on-blur
|
553
|
-
*
|
554
|
-
* @param Event blur
|
555
|
-
* @return void
|
556
|
-
*/
|
557
|
-
blur: function(event) {
|
558
|
-
var autocompleter = event.target ? event.target.autocompleter : null;
|
559
|
-
|
560
|
-
if (autocompleter && autocompleter.visible()) {
|
561
|
-
autocompleter.hide();
|
562
|
-
}
|
563
|
-
},
|
564
|
-
|
565
|
-
/**
|
566
|
-
* Catching the basic keyboard events
|
567
|
-
* to navigate through the autocompletion list
|
568
|
-
*
|
569
|
-
* @param Event keydown
|
570
|
-
* @return void
|
571
|
-
*/
|
572
|
-
keydown: function(event) {
|
573
|
-
var autocompleter = event.target ? event.target.autocompleter : null;
|
574
|
-
|
575
|
-
if (autocompleter && autocompleter.visible()) {
|
576
|
-
var method_name = ({
|
577
|
-
27: 'hide', // Esc
|
578
|
-
38: 'prev', // Up
|
579
|
-
40: 'next', // Down
|
580
|
-
13: 'done' // Enter
|
581
|
-
})[event.keyCode];
|
582
|
-
|
583
|
-
if (method_name) {
|
584
|
-
event.stop();
|
585
|
-
autocompleter[method_name]();
|
586
|
-
}
|
587
|
-
}
|
588
|
-
},
|
589
|
-
|
590
|
-
/**
|
591
|
-
* Catches the input fields keyup events
|
592
|
-
* and tries to make the autocompleter to show some suggestions
|
593
|
-
*
|
594
|
-
* @param Event keyup
|
595
|
-
* @return void
|
596
|
-
*/
|
597
|
-
keyup: function(event) {
|
598
|
-
var autocompleter = event.target ? event.target.autocompleter : null;
|
599
|
-
|
600
|
-
if (autocompleter && !R([9, 27, 37, 38, 39, 40, 13]).include(event.keyCode)) {
|
601
|
-
autocompleter.keypressed(event);
|
602
|
-
}
|
603
|
-
}
|
604
|
-
});
|
605
|
-
(function() {
|
606
|
-
var style = document.createElement('style'),
|
607
|
-
rules = document.createTextNode(" *.rui-dd-menu, *.rui-dd-menu li{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none} *.rui-dd-menu{display:none;position:absolute;z-index:9999;background:white;border:1px solid #BBB;border-radius:.2em;-moz-border-radius:.2em;-webkit-border-radius:.2em;box-shadow:#DDD .2em .2em .4em;-moz-box-shadow:#DDD .2em .2em .4em;-webkit-box-shadow:#DDD .2em .2em .4em} *.rui-dd-menu li{padding:.2em .4em;border-top:none;border-bottom:none;cursor:pointer} *.rui-dd-menu li.current{background:#DDD} *.rui-dd-menu li:hover{background:#EEE}dl.rui-dd-menu dt{padding:.3em .5em;cursor:default;font-weight:bold;font-style:italic;color:#444;background:#EEE}dl.rui-dd-menu dd li{padding-left:1.5em}div.rui-spinner,div.rui-spinner div{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none;display:inline-block; *display:inline; *zoom:1;border-radius:.12em;-moz-border-radius:.12em;-webkit-border-radius:.12em}div.rui-spinner{text-align:center;white-space:nowrap;background:#EEE;border:1px solid #DDD;height:1.2em;padding:0 .2em}div.rui-spinner div{width:.4em;height:70%;background:#BBB;margin-left:1px}div.rui-spinner div:first-child{margin-left:0}div.rui-spinner div.glowing{background:#777}div.rui-re-anchor{margin:0;padding:0;background:none;border:none;float:none;display:inline;position:absolute;z-index:9999}.rui-autocompleter{border-top-color:#DDD !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;-moz-border-radius-topleft:0 !important;-moz-border-radius-topright:0 !important;-webkit-border-top-left-radius:0 !important;-webkit-border-top-right-radius:0 !important}.rui-autocompleter-spinner{border:none !important;background:none !important;position:absolute;z-index:9999}.rui-autocompleter-spinner div{margin-top:.2em !important; *margin-top:0.1em !important}");
|
608
|
-
|
609
|
-
style.type = 'text/css';
|
610
|
-
|
611
|
-
if(style.styleSheet) {
|
612
|
-
style.styleSheet.cssText = rules.nodeValue;
|
613
|
-
} else {
|
614
|
-
style.appendChild(rules);
|
615
|
-
}
|
616
|
-
|
617
|
-
document.getElementsByTagName('head')[0].appendChild(style);
|
618
|
-
})();
|
619
|
-
|
620
|
-
return Autocompleter;
|
621
|
-
})(document, RightJS);
|