right-rails 1.0.3 → 1.0.5
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/CHANGELOG +8 -2
- data/Rakefile +28 -28
- data/lib/right_rails/java_script_generator.rb +59 -51
- data/public/images/{colorpicker.png → rightjs-ui/colorpicker.png} +0 -0
- data/public/images/{resizable.png → rightjs-ui/resizable.png} +0 -0
- data/public/javascripts/right-olds-src.js +47 -46
- data/public/javascripts/right-safe-src.js +103 -102
- data/public/javascripts/right-safe.js +1 -1
- data/public/javascripts/right-src.js +611 -541
- data/public/javascripts/right.js +86 -85
- data/public/javascripts/right/autocompleter-src.js +81 -77
- data/public/javascripts/right/autocompleter.js +1 -1
- data/public/javascripts/right/calendar-src.js +209 -197
- data/public/javascripts/right/calendar.js +6 -6
- data/public/javascripts/right/colorpicker-src.js +127 -117
- data/public/javascripts/right/colorpicker.js +6 -6
- data/public/javascripts/right/dnd-src.js +63 -63
- data/public/javascripts/right/dnd.js +2 -2
- data/public/javascripts/right/in-edit-src.js +53 -48
- data/public/javascripts/right/in-edit.js +2 -2
- data/public/javascripts/right/lightbox-src.js +107 -99
- data/public/javascripts/right/lightbox.js +2 -2
- data/public/javascripts/right/rater-src.js +48 -46
- data/public/javascripts/right/rater.js +3 -3
- data/public/javascripts/right/resizable-src.js +53 -61
- data/public/javascripts/right/resizable.js +4 -4
- data/public/javascripts/right/selectable-src.js +97 -95
- data/public/javascripts/right/selectable.js +2 -2
- data/public/javascripts/right/slider-src.js +47 -45
- data/public/javascripts/right/slider.js +8 -8
- data/public/javascripts/right/sortable-src.js +54 -52
- data/public/javascripts/right/tabs-src.js +181 -171
- data/public/javascripts/right/tooltip-src.js +39 -37
- data/public/javascripts/right/uploader-src.js +21 -19
- data/spec/lib/right_rails/java_script_generator_spec.rb +61 -56
- metadata +9 -7
data/CHANGELOG
CHANGED
@@ -1,10 +1,16 @@
|
|
1
|
+
2010-09-20 Nikolay Nemshilov
|
2
|
+
o Version 1.0.4
|
3
|
+
* RightJS 2.0.0 release updates
|
4
|
+
* page.document now returns '$(document)'
|
5
|
+
* page.window now returns '$(window)'
|
6
|
+
|
1
7
|
2010-09-06 Nikolay Nemshilov
|
2
8
|
o Version 1.0.0
|
3
9
|
* RightJS v2.0.0-rc2
|
4
10
|
* All new RightJS UI 2.0 widgets
|
5
11
|
* RightRails configuration interface
|
6
12
|
* Full Rails 3 support
|
7
|
-
|
13
|
+
|
8
14
|
|
9
15
|
2010-01-16 Nikolay V. Nemshilov aka St.
|
10
16
|
o Version 0.4.4
|
@@ -13,7 +19,7 @@
|
|
13
19
|
* Updated JSON and Events
|
14
20
|
* New in-place edit plugin
|
15
21
|
* Dutch i18n module
|
16
|
-
|
22
|
+
|
17
23
|
|
18
24
|
2009-12-26 Nikolay V. Nemshilov aka St.
|
19
25
|
o Version 0.4.3
|
data/Rakefile
CHANGED
@@ -48,15 +48,15 @@ end
|
|
48
48
|
#
|
49
49
|
namespace :rjs do
|
50
50
|
CURRENT_DIR = File.dirname(__FILE__)
|
51
|
-
|
51
|
+
|
52
52
|
OUTPUT_DIR = CURRENT_DIR + '/public'
|
53
53
|
OUTPUT_JSS_DIR = OUTPUT_DIR + "/javascripts"
|
54
|
-
OUTPUT_IMG_DIR = OUTPUT_DIR + "/images"
|
55
|
-
|
54
|
+
OUTPUT_IMG_DIR = OUTPUT_DIR + "/images/rightjs-ui"
|
55
|
+
|
56
56
|
RIGHTJS_CORE_DIR = CURRENT_DIR + '/../RightJS'
|
57
57
|
RIGHTJS_PLUGINS_DIR = CURRENT_DIR + '/../RightJSPlugins'
|
58
58
|
RIGHTJS_UI_DIR = CURRENT_DIR + '/../RightJSUI'
|
59
|
-
|
59
|
+
|
60
60
|
desc 'Builds all the RightJS files and tosses them into the directories'
|
61
61
|
task :build do
|
62
62
|
Rake::Task['rjs:nuke'].invoke
|
@@ -67,26 +67,26 @@ namespace :rjs do
|
|
67
67
|
Rake::Task['rjs:i18n'].invoke
|
68
68
|
Rake::Task['rjs:toss'].invoke
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
desc 'Nukes the RightJS sources directory'
|
72
72
|
task :nuke do
|
73
73
|
require 'fileutils'
|
74
|
-
|
74
|
+
|
75
75
|
puts "\e[31m<<<<<<<<<<<<< TERMAL CLEANING >>>>>>>>>>>>>>>>>\e[0m"
|
76
|
-
|
76
|
+
|
77
77
|
FileUtils.rm_rf OUTPUT_DIR if File.exists? OUTPUT_DIR
|
78
78
|
FileUtils.mkdir_p OUTPUT_DIR
|
79
79
|
FileUtils.mkdir_p OUTPUT_IMG_DIR
|
80
80
|
FileUtils.mkdir_p OUTPUT_JSS_DIR
|
81
81
|
FileUtils.mkdir_p OUTPUT_JSS_DIR + "/right"
|
82
|
-
|
82
|
+
|
83
83
|
puts "\e[32mDONE \e[0m"
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
desc 'Builds RightJS core and copies them in place'
|
87
87
|
task :'build:core' do
|
88
88
|
puts "\e[31m<<<<<<<<<<<< BUILDING THE CORE >>>>>>>>>>>>>>>>\e[0m"
|
89
|
-
|
89
|
+
|
90
90
|
system(%Q{
|
91
91
|
cd #{RIGHTJS_CORE_DIR};
|
92
92
|
rake build OPTIONS=no-olds;
|
@@ -94,49 +94,49 @@ namespace :rjs do
|
|
94
94
|
rake build OPTIONS=safe;
|
95
95
|
cp build/right-safe*.js #{OUTPUT_JSS_DIR};
|
96
96
|
})
|
97
|
-
|
97
|
+
|
98
98
|
puts "\e[32mDONE \e[0m"
|
99
99
|
end
|
100
|
-
|
100
|
+
|
101
101
|
desc 'Builds RightJS plugins and copies them in place'
|
102
102
|
task :'build:plugins' do
|
103
103
|
puts "\e[31m<<<<<<<<<<<<< BUILDING PLUGINS >>>>>>>>>>>>>>>>>\e[0m"
|
104
|
-
|
104
|
+
|
105
105
|
system(%Q{
|
106
106
|
cd #{RIGHTJS_PLUGINS_DIR};
|
107
107
|
rake build;
|
108
108
|
cp build/*.js #{OUTPUT_JSS_DIR}/right;
|
109
109
|
})
|
110
|
-
|
110
|
+
|
111
111
|
puts "\e[32mDONE \e[0m"
|
112
112
|
end
|
113
|
-
|
113
|
+
|
114
114
|
desc 'Builds RightJS UI modules and copies them in place'
|
115
115
|
task :'build:ui' do
|
116
116
|
puts "\e[31m<<<<<<<<<<< BUILDING UI MODULES >>>>>>>>>>>>>>>\e[0m"
|
117
|
-
|
117
|
+
|
118
118
|
system(%Q{
|
119
119
|
cd #{RIGHTJS_UI_DIR};
|
120
120
|
rake build;
|
121
121
|
cp build/*.js #{OUTPUT_JSS_DIR}/right;
|
122
122
|
})
|
123
|
-
|
123
|
+
|
124
124
|
system(%Q{
|
125
125
|
cd #{RIGHTJS_UI_DIR};
|
126
126
|
cp img/* #{OUTPUT_IMG_DIR};
|
127
127
|
})
|
128
|
-
|
128
|
+
|
129
129
|
puts "\e[32mDONE \e[0m"
|
130
130
|
end
|
131
|
-
|
131
|
+
|
132
132
|
desc 'Patches the RightJS UI modules for the Rails directories structure'
|
133
133
|
task :'patch' do
|
134
134
|
puts "\e[31m<<<<<<< PATCHING UI MODULES FOR RAILS >>>>>>>>>\e[0m"
|
135
|
-
|
135
|
+
|
136
136
|
FileList["#{OUTPUT_JSS_DIR}/right/*.js"].each do |filename|
|
137
137
|
old_content = File.read(filename)
|
138
138
|
new_content = old_content.gsub('url(../../img/', "url(/images/rightjs-ui/")
|
139
|
-
|
139
|
+
|
140
140
|
if old_content != new_content
|
141
141
|
puts "Patching: #{File.basename(filename)}"
|
142
142
|
File.open(filename, "w") do |f|
|
@@ -144,29 +144,29 @@ namespace :rjs do
|
|
144
144
|
end
|
145
145
|
end
|
146
146
|
end
|
147
|
-
|
147
|
+
|
148
148
|
puts "\e[32mDONE \e[0m"
|
149
149
|
end
|
150
|
-
|
150
|
+
|
151
151
|
desc 'Copies the RightJS UI i18n modules in place'
|
152
152
|
task :i18n do
|
153
153
|
puts "\e[31m<<<<<<<<<<< COPYING I18N MODULES >>>>>>>>>>>>>>\e[0m"
|
154
|
-
|
154
|
+
|
155
155
|
system(%Q{
|
156
156
|
cp -r #{RIGHTJS_UI_DIR}/i18n #{OUTPUT_JSS_DIR}/right;
|
157
157
|
})
|
158
|
-
|
158
|
+
|
159
159
|
puts "\e[32mDONE \e[0m"
|
160
160
|
end
|
161
|
-
|
161
|
+
|
162
162
|
desc 'Prepares the files as they will be placed in Rails'
|
163
163
|
task :toss do
|
164
164
|
puts "\e[31m<<<<<<<<< PREPARING FILES FOR RAILS >>>>>>>>>>>\e[0m"
|
165
|
-
|
165
|
+
|
166
166
|
FileList["#{OUTPUT_JSS_DIR}/right/right-*.js"].each do |filename|
|
167
167
|
system "mv #{filename.gsub('/right/right-', '/right/{right-,}')}"
|
168
168
|
end
|
169
|
-
|
169
|
+
|
170
170
|
puts "\e[32mDONE \e[0m"
|
171
171
|
end
|
172
172
|
end
|
@@ -2,14 +2,14 @@
|
|
2
2
|
# The right-rails scripts generator
|
3
3
|
#
|
4
4
|
class RightRails::JavaScriptGenerator
|
5
|
-
|
5
|
+
|
6
6
|
def initialize(template, thread=nil)
|
7
7
|
@util = Util.new(template, thread)
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
# the top-level constants that the generator should respond to transparently
|
11
|
-
JS_CONSTANTS = [:
|
12
|
-
|
11
|
+
JS_CONSTANTS = [:top, :RR]
|
12
|
+
|
13
13
|
# method calls catchup
|
14
14
|
def method_missing(name, *args)
|
15
15
|
cmd = if JS_CONSTANTS.include?(name)
|
@@ -19,15 +19,15 @@ class RightRails::JavaScriptGenerator
|
|
19
19
|
else
|
20
20
|
"#{name}(#{@util.to_js_args(args)})"
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
@util.record(cmd)
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
# returns the result script
|
27
27
|
def to_s
|
28
28
|
@util.build_script
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
#
|
32
32
|
# This module contains the predefined methods collection
|
33
33
|
#
|
@@ -58,15 +58,23 @@ class RightRails::JavaScriptGenerator
|
|
58
58
|
@util.record("var #{name}=#{@util.to_js_type(value)}")
|
59
59
|
end
|
60
60
|
|
61
|
+
def document
|
62
|
+
@util.record('$(document)')
|
63
|
+
end
|
64
|
+
|
65
|
+
def window
|
66
|
+
@util.record('$(window)')
|
67
|
+
end
|
68
|
+
|
61
69
|
# generates the redirection script
|
62
70
|
def redirect_to(location)
|
63
|
-
self.document[:location].href = (location.is_a?(String) ? location : @util.template.url_for(location))
|
71
|
+
self.get(:document)[:location].href = (location.is_a?(String) ? location : @util.template.url_for(location))
|
64
72
|
self
|
65
73
|
end
|
66
74
|
|
67
75
|
# generates the page reload script
|
68
76
|
def reload
|
69
|
-
self.document[:location].reload
|
77
|
+
self.get(:document)[:location].reload
|
70
78
|
self
|
71
79
|
end
|
72
80
|
|
@@ -74,7 +82,7 @@ class RightRails::JavaScriptGenerator
|
|
74
82
|
def insert(record, position=nil)
|
75
83
|
self.RR.insert(*[record.class.table_name, @util.render(record), position].compact)
|
76
84
|
end
|
77
|
-
|
85
|
+
|
78
86
|
# generates a script that inserts the record partial, then updates the form and the flashes block
|
79
87
|
def insert_and_care(record, position=nil)
|
80
88
|
insert(record, position)
|
@@ -108,93 +116,93 @@ class RightRails::JavaScriptGenerator
|
|
108
116
|
def replace_form_for(record)
|
109
117
|
self.RR.replace_form(@util.form_id_for(record), @util.render('form'))
|
110
118
|
end
|
111
|
-
|
119
|
+
|
112
120
|
# updates the flashes block
|
113
121
|
def update_flash(content=nil)
|
114
122
|
self.RR.update_flash(content || @util.template.flashes)
|
115
123
|
@util.template.flash.clear
|
116
124
|
end
|
117
125
|
end
|
118
|
-
|
126
|
+
|
119
127
|
include Methods
|
120
|
-
|
128
|
+
|
121
129
|
protected
|
122
130
|
|
123
131
|
#
|
124
132
|
# Keeps the javascript method calls sequence and then represents iteslf like a string of javascript
|
125
133
|
#
|
126
134
|
class MethodCall
|
127
|
-
|
135
|
+
|
128
136
|
def initialize(this, util, parent)
|
129
137
|
@this = this
|
130
138
|
@util = util
|
131
139
|
@parent = parent
|
132
140
|
end
|
133
|
-
|
141
|
+
|
134
142
|
# catches the properties request
|
135
143
|
def [](name)
|
136
144
|
@child = @util.make_call(".#{name}", self)
|
137
145
|
end
|
138
|
-
|
146
|
+
|
139
147
|
# attribute assignment hook
|
140
148
|
def []=(name, value)
|
141
149
|
send "#{name}=", value
|
142
150
|
end
|
143
|
-
|
151
|
+
|
144
152
|
OPERATIONS = %w{+ - * / % <<}
|
145
|
-
|
153
|
+
|
146
154
|
# catches all the method calls
|
147
155
|
def method_missing(name, *args, &block)
|
148
156
|
name = name.to_s
|
149
157
|
args << block if block_given?
|
150
|
-
|
151
|
-
|
158
|
+
|
159
|
+
|
152
160
|
cmd = if name[name.size-1, name.size] == '='
|
153
161
|
# assignments
|
154
162
|
".#{name[0,name.size-1]}=#{@util.to_js_type(args.first)}"
|
155
|
-
|
163
|
+
|
156
164
|
# operation calls
|
157
165
|
elsif OPERATIONS.include?(name)
|
158
166
|
name = "+=" if name == '<<'
|
159
167
|
"#{name}#{@util.to_js_type(args.first)}"
|
160
|
-
|
168
|
+
|
161
169
|
# usual method calls
|
162
170
|
else
|
163
171
|
".#{name}(#{@util.to_js_args(args)})"
|
164
172
|
end
|
165
|
-
|
173
|
+
|
166
174
|
@child = @util.make_call(cmd, self)
|
167
175
|
end
|
168
|
-
|
176
|
+
|
169
177
|
# exports the whole thing into a javascript string
|
170
178
|
def to_s
|
171
179
|
nodes = []
|
172
180
|
node = self
|
173
|
-
|
181
|
+
|
174
182
|
while node
|
175
183
|
nodes << node
|
176
184
|
node = node.instance_variable_get(@parent.nil? ? "@child" : "@parent")
|
177
185
|
end
|
178
|
-
|
186
|
+
|
179
187
|
# reversing the calls list if building from the right end
|
180
188
|
nodes.reverse! unless @parent.nil?
|
181
|
-
|
189
|
+
|
182
190
|
nodes.collect{|n| n.instance_variable_get("@this").to_s }.join('')
|
183
191
|
end
|
184
192
|
end
|
185
|
-
|
193
|
+
|
186
194
|
#
|
187
195
|
# We use this class to cleanup the main namespace of the JavaScriptGenerator instances
|
188
196
|
# So that the mesod_missing didn't interferate with the util methods
|
189
197
|
#
|
190
198
|
class Util
|
191
199
|
attr_reader :template
|
192
|
-
|
200
|
+
|
193
201
|
def initialize(template, thread=nil)
|
194
202
|
@template = template
|
195
203
|
@thread = thread || []
|
196
204
|
end
|
197
|
-
|
205
|
+
|
198
206
|
# returns a conventional dom id for the record
|
199
207
|
def dom_id(record)
|
200
208
|
if [String, Symbol].include?(record.class)
|
@@ -203,7 +211,7 @@ protected
|
|
203
211
|
@template.dom_id(record)
|
204
212
|
end
|
205
213
|
end
|
206
|
-
|
214
|
+
|
207
215
|
# generates the form-id for the given record
|
208
216
|
def form_id_for(record)
|
209
217
|
record.new_record? ? "new_#{record.class.table_name.singularize}" : "edit_#{dom_id(record)}"
|
@@ -213,29 +221,29 @@ protected
|
|
213
221
|
def render(what)
|
214
222
|
@template.render(what)
|
215
223
|
end
|
216
|
-
|
224
|
+
|
217
225
|
# builds a new method call object
|
218
226
|
def make_call(string, parent=nil)
|
219
227
|
MethodCall.new(string, self, parent)
|
220
228
|
end
|
221
|
-
|
229
|
+
|
222
230
|
# Records a new call
|
223
231
|
def record(command)
|
224
232
|
@thread << (line = make_call(command))
|
225
233
|
line
|
226
234
|
end
|
227
|
-
|
235
|
+
|
228
236
|
# writes a pline script code into the thread
|
229
237
|
def write(script)
|
230
238
|
@thread << script
|
231
239
|
end
|
232
|
-
|
240
|
+
|
233
241
|
# builds the end script
|
234
242
|
def build_script
|
235
243
|
list = @thread.collect do |line|
|
236
244
|
line.is_a?(String) ? line : (line.to_s + ';')
|
237
245
|
end
|
238
|
-
|
246
|
+
|
239
247
|
list.join('')
|
240
248
|
end
|
241
249
|
|
@@ -244,10 +252,10 @@ protected
|
|
244
252
|
list = args.collect do |value|
|
245
253
|
to_js_type(value)
|
246
254
|
end
|
247
|
-
|
255
|
+
|
248
256
|
list.join(',')
|
249
257
|
end
|
250
|
-
|
258
|
+
|
251
259
|
# converts any ruby type into an javascript type
|
252
260
|
def to_js_type(value)
|
253
261
|
case value.class.name.to_sym
|
@@ -256,7 +264,7 @@ protected
|
|
256
264
|
when :Array then "[#{to_js_args(value)}]"
|
257
265
|
when :Proc then proc_to_function(&value)
|
258
266
|
else
|
259
|
-
|
267
|
+
|
260
268
|
# the other method-calls processing
|
261
269
|
if value.is_a?(MethodCall)
|
262
270
|
# removing the call out of the calls thread
|
@@ -267,13 +275,13 @@ protected
|
|
267
275
|
parent = parent.instance_variable_get('@parent')
|
268
276
|
end
|
269
277
|
@thread.reject!{ |item| item == top }
|
270
|
-
|
278
|
+
|
271
279
|
value.to_s
|
272
|
-
|
280
|
+
|
273
281
|
# converting all sorts of strings
|
274
282
|
elsif value.is_a?(String)
|
275
283
|
"\"#{@template.escape_javascript(value)}\""
|
276
|
-
|
284
|
+
|
277
285
|
# simple hashes processing
|
278
286
|
elsif value.is_a?(Hash)
|
279
287
|
pairs = []
|
@@ -281,18 +289,18 @@ protected
|
|
281
289
|
pairs << "#{to_js_type(key)}:#{to_js_type(value)}"
|
282
290
|
end
|
283
291
|
"{#{pairs.sort.join(',')}}"
|
284
|
-
|
292
|
+
|
285
293
|
# JSON exportable values processing
|
286
294
|
elsif value.respond_to?(:to_json)
|
287
295
|
to_js_type(value.to_json)
|
288
|
-
|
296
|
+
|
289
297
|
# throwing an ansupported class name
|
290
298
|
else
|
291
299
|
throw "RightRails::JavaScriptGenerator doesn't support instances of #{value.class.name} yet"
|
292
300
|
end
|
293
301
|
end
|
294
302
|
end
|
295
|
-
|
303
|
+
|
296
304
|
# converts a proc into a javascript function
|
297
305
|
def proc_to_function(&block)
|
298
306
|
thread = []
|
@@ -300,24 +308,24 @@ protected
|
|
300
308
|
names = []
|
301
309
|
name = 'a'
|
302
310
|
page = RightRails::JavaScriptGenerator.new(@template, thread)
|
303
|
-
|
311
|
+
|
304
312
|
block.arity.times do |i|
|
305
313
|
args << page.get(name)
|
306
314
|
names << name
|
307
315
|
name = name.succ
|
308
316
|
end
|
309
|
-
|
317
|
+
|
310
318
|
# swapping the current thread with the block's one
|
311
319
|
old_thread = @thread
|
312
320
|
@thread = thread
|
313
|
-
|
321
|
+
|
314
322
|
yield(*args)
|
315
|
-
|
323
|
+
|
316
324
|
# swapping the current therad back
|
317
325
|
@thread = old_thread
|
318
|
-
|
326
|
+
|
319
327
|
"function(#{names.join(',')}){#{page.to_s}}"
|
320
328
|
end
|
321
329
|
end
|
322
|
-
|
330
|
+
|
323
331
|
end
|